Added routing support for virtual network so that source addresses are transmitted when required and the correct object ID is used.

This commit is contained in:
petermcs
2010-11-17 23:16:24 +00:00
parent a1eaffccff
commit 3bb228edf2
26 changed files with 210 additions and 9 deletions
+18
View File
@@ -63,12 +63,21 @@ void handler_who_is(
Send_I_Am(&Handler_Transmit_Buffer[0]);
else if (len != -1) {
/* is my device id within the limits? */
#if BAC_ROUTING
if (((Routed_Device_Object_Instance_Number() >= (uint32_t) low_limit) &&
(Routed_Device_Object_Instance_Number() <= (uint32_t) high_limit))
||
/* BACnet wildcard is the max instance number - everyone responds */
((BACNET_MAX_INSTANCE >= (uint32_t) low_limit) &&
(BACNET_MAX_INSTANCE <= (uint32_t) high_limit)))
#else
if (((Device_Object_Instance_Number() >= (uint32_t) low_limit) &&
(Device_Object_Instance_Number() <= (uint32_t) high_limit))
||
/* BACnet wildcard is the max instance number - everyone responds */
((BACNET_MAX_INSTANCE >= (uint32_t) low_limit) &&
(BACNET_MAX_INSTANCE <= (uint32_t) high_limit)))
#endif
Send_I_Am(&Handler_Transmit_Buffer[0]);
}
@@ -98,12 +107,21 @@ void handler_who_is_unicast(
Send_I_Am_Unicast(&Handler_Transmit_Buffer[0], src);
else if (len != -1) {
/* is my device id within the limits? */
#if BAC_ROUTING
if (((Routed_Device_Object_Instance_Number() >= (uint32_t) low_limit) &&
(Routed_Device_Object_Instance_Number() <= (uint32_t) high_limit))
||
/* BACnet wildcard is the max instance number - everyone responds */
((BACNET_MAX_INSTANCE >= (uint32_t) low_limit) &&
(BACNET_MAX_INSTANCE <= (uint32_t) high_limit)))
#else
if (((Device_Object_Instance_Number() >= (uint32_t) low_limit) &&
(Device_Object_Instance_Number() <= (uint32_t) high_limit))
||
/* BACnet wildcard is the max instance number - everyone responds */
((BACNET_MAX_INSTANCE >= (uint32_t) low_limit) &&
(BACNET_MAX_INSTANCE <= (uint32_t) high_limit)))
#endif
Send_I_Am_Unicast(&Handler_Transmit_Buffer[0], src);
}