diff --git a/README.md b/README.md index 85aa0a9..696b2ab 100644 --- a/README.md +++ b/README.md @@ -61,6 +61,25 @@ of the following ways: `west init -m https://github.com/bacnet-stack/bacnet-stack-zephyr --mr default $my_workspace` + - Note that as Zephyr OS versions change, their API often changes. + This library will use the following methods to accommodate the changes: + 1. Use defines from for API changes: + ``` + #if ZEPHYR_VERSION_CODE >= ZEPHYR_VERSION(4,2,0) + typedef uint64_t mgmt_event_t; + #else + typedef uint32_t mgmt_event_t; + #endif + ``` + 2. In CMakeLists.txt via trying to load specific versions of the Zephyr + package or checking using: + ``` + if ("${KERNEL_VERSION_STRING}" VERSION_GREATER_EQUAL "4.2.0") + # Do stuff... + endif() + ``` + 3. In Kconfig by using 2 above and trying to load specific versions + of the Zephyr plugin and updating CONF_FILE accordingly. ## Hello BACnet Stack diff --git a/zephyr/subsys/bacnet_datalink/bip-init.c b/zephyr/subsys/bacnet_datalink/bip-init.c index 0631057..c1695a0 100644 --- a/zephyr/subsys/bacnet_datalink/bip-init.c +++ b/zephyr/subsys/bacnet_datalink/bip-init.c @@ -13,6 +13,7 @@ #include #include #include +#include /* BACnet Stack defines - first */ #include "bacnet/bacdef.h" /* BACnet Stack API */ @@ -403,6 +404,12 @@ int bip_send_pdu( return bvlc_send_pdu(dest, npdu_data, pdu, pdu_len); } +#if ZEPHYR_VERSION_CODE >= ZEPHYR_VERSION(4, 2, 0) +typedef uint64_t mgmt_event_t; +#else +typedef uint32_t mgmt_event_t; +#endif + struct wait_data { struct k_sem sem; struct net_mgmt_event_callback cb; @@ -410,7 +417,7 @@ struct wait_data { static void event_cb_handler( struct net_mgmt_event_callback *cb, - uint32_t mgmt_event, + mgmt_event_t mgmt_event, struct net_if *iface) { struct wait_data *wait = CONTAINER_OF(cb, struct wait_data, cb); @@ -420,7 +427,7 @@ static void event_cb_handler( } } -static void wait_for_net_event(struct net_if *iface, uint32_t event) +static void wait_for_net_event(struct net_if *iface, mgmt_event_t event) { struct wait_data wait;