Add readme with example LwIP address initialization.

This commit is contained in:
Steve Karg
2022-08-30 13:56:40 -05:00
parent 0cff12214b
commit bd40c51e19
+46
View File
@@ -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;
}
}
}