diff --git a/ports/lwip/README.md b/ports/lwip/README.md new file mode 100644 index 00000000..55cc54ef --- /dev/null +++ b/ports/lwip/README.md @@ -0,0 +1,46 @@ +## 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; + } + } + }