Add readme with example LwIP address initialization.
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user