(At least for the IPv4 transport) Should the 'invoke_id' checks within the 'BacnetAsyncResult' event handler methods also check that the ('routed-source') address is correct - in addition to checking for the correct (/matching) Invoke-ID? E.g. For this:
Should the line be something similar to this (pseudo-code):
// If both the Invoke-ID Check and the routed-source matchif(invoke_id==m_wait_invoke_id&&adr.Equals(m_adr))
(There might be a different/earlier if not better place for what I'm saying - it's more the abstract question that is important, not the specifics/specific example.)
Whereby the controller is it's own discrete (BACnet) device, in addition to also providing router/gateway functionality/access to other (differing transport) devices.
(Without instantly searching for it, I'm not sure what/if the BACnet Standard has noted for this situation? I'm presuming in most if not all cases, a router/gateway shouldn't respond - I imagine that for flexibility that there could possibly be valid/allowed exceptions.)
If a (parent/mediating) router/gateway device happens to respond on behalf of the child, then should YABE project itself against the confusion by ignoring the response (& 'resend'/retry?) (- as well as also outputting a trace 'Log' message to advertise the situation to the end-user)?
(Just a random/spur of the moment thought I've had just now.)
Last edit: Dennis V McEnaney 2024-08-07
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
(At least for the IPv4 transport) Should the 'invoke_id' checks within the 'BacnetAsyncResult' event handler methods also check that the ('routed-source') address is correct - in addition to checking for the correct (/matching) Invoke-ID? E.g. For this:
Should the line be something similar to this (pseudo-code):
(There might be a different/earlier if not better place for what I'm saying - it's more the abstract question that is important, not the specifics/specific example.)
Whereby the controller is it's own discrete (BACnet) device, in addition to also providing router/gateway functionality/access to other (differing transport) devices.
(Without instantly searching for it, I'm not sure what/if the BACnet Standard has noted for this situation? I'm presuming in most if not all cases, a router/gateway shouldn't respond - I imagine that for flexibility that there could possibly be valid/allowed exceptions.)
If a (parent/mediating) router/gateway device happens to respond on behalf of the child, then should YABE project itself against the confusion by ignoring the response (& 'resend'/retry?) (- as well as also outputting a trace 'Log' message to advertise the situation to the end-user)?
(Just a random/spur of the moment thought I've had just now.)
Last edit: Dennis V McEnaney 2024-08-07
As far as I can see this is already in the code in BacnetClient.cs. Maybe are you looking at an older version of the code?
https://sourceforge.net/p/yetanotherbacnetexplorer/code/HEAD/tree/trunk/Yabe/BACnetClient.cs#l2771