Menu

Ignore responses from (parent) router/gateway devices when targeting a (child) routed-to device?

2024-08-07
2024-08-08
  • Dennis V McEnaney

    (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:

            private void m_comm_OnComplexAck(BacnetClient sender, BacnetAddress adr, BacnetPduTypes type, BacnetConfirmedServices service, byte invoke_id, byte[] buffer, int offset, int length)
            {
                if (invoke_id == m_wait_invoke_id)
    

    Should the line be something similar to this (pseudo-code):

                // If both the Invoke-ID Check and the routed-source match
                if (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

Log in to post a comment.