## Port of BACnet/IP to LwIP 2.x

This LwIP BACnet/IP port uses a Makefile designed to be used from
the continuous integration pipeline. The container is configured with 
Ubuntu Linux and uses APT to install liblwip-dev library and header files.
This build method ensures that the code is valid for the particular LwIP 
library that is released with Ubuntu.

## Integration Hints

Developer must set the IP address, netmask, and UDP port into the BACnet/IP module.

Integration used a main loop bare metal design, shown here as an example.

    int main(void)
    {
        static bool valid_ip_address = false;
        static bool bacnet_ip_initialized = false;

        bacnet_init();
        LwIP_Init();
        /* Infinite loop */
        for (;;) {
            /* Periodic tasks */
            LwIP_Periodic_Handler();
            /* Run when there is a valid IP address */
            if (netif.ip_addr.addr != 0) {
                if (!valid_ip_address) {
                    valid_ip_address = true;
                    bip_set_addr(netif.ip_addr.addr);
                    bip_set_broadcast_addr(
                        (netif.ip_addr.addr & netif.netmask.addr) |
                        (~netif.netmask.addr));
                } else {
                    if (bacnet_ip_initialized) {
                        bacnet_task();
                    } else {
                        bip_init(NULL);
                        bacnet_ip_initialized = true;
                    }
                }
            } else {
                valid_ip_address = false;
            }
        }
    }
