Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Insteon: Add Function to Filter Out Duplicate Received Messages #195

Merged
merged 7 commits into from
May 21, 2013

Commits on May 1, 2013

  1. Insteon: Add Function to Filter Out Duplicate Received Messages

    This creates a log of recently received messages with a timestamp.  Subsequent messages are check to see if they match.  If a match is found and if they message was received within the time permitted by the number of remaining hops plus a little wiggle room, the message is dropped.
    
    Fixes issue hollie#169
    krkeegan committed May 1, 2013
    Configuration menu
    Copy the full SHA
    951a507 View commit details
    Browse the repository at this point in the history

Commits on May 8, 2013

  1. Insteon: Extend Temporal Search Window for Duplicate Messages

    Apparently the prior settings were not catching duplicative device commands.  Unfortunately extending the window results in numerous false positives for direct ACK messages.  In order to prevent errors, only alllink related commands are examined for duplicative messages.
    krkeegan committed May 8, 2013
    Configuration menu
    Copy the full SHA
    6c95036 View commit details
    Browse the repository at this point in the history

Commits on May 9, 2013

  1. Insteon: Expand Duplicate Window for Messages Requiring an ACK

    Move function which prevented sequential set commands in less than 1 second to BaseObject
    
    Expand the logic of the duplicate message checker.  Attempt to take into account whether the message received requires an ACK.  If an ACK is required, attempt to catch duplicate messages which result from the failure of the device to receive the ACK.
    krkeegan committed May 9, 2013
    Configuration menu
    Copy the full SHA
    ef4956d View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    e8b8b0e View commit details
    Browse the repository at this point in the history
  3. Insteon: More Adjustments to is_duplicate_received

    The message window is now calculated based on some basis in reality.  The message window is the amount of time during which no proper message should be received.
    
    This depends on whether the message needs to be ACKed or not.
    
    If a message needs to be ACKed, then no message should be received from the device until:
    - All hops left expire
    - Max hops + 1 elapses for an ACK to be received
    - Max hops - less hops left for a new request to be sent
    
    If no ACK is required then no message should be received from the device until:
    -All hops left expire
    -Max hops for a PLM message to be received by the device
    (since MH is more sensitive to false positives in these types of messages, and since when duplicates occur here they normally occur very fast, we are more conservative for these types of messages)
    krkeegan committed May 9, 2013
    Configuration menu
    Copy the full SHA
    fb0d7d6 View commit details
    Browse the repository at this point in the history
  4. Insteon: Add Time to Allow for ACK to Finish Transmitting

    MH already pauses to all hops_left time to expire.
    
    This adds a pause for messages that require ACKs to be sent to devices.  MH doesn't send the ACKs, they are automatically sent by the PLM.  However, anecdotal evidence suggests that the PLM doesn't abide by collision avoidance, ie it seems to permit a message to be sent immediately after an ACK without concern for allowing the ACK hops to complete.
    krkeegan committed May 9, 2013
    Configuration menu
    Copy the full SHA
    40d15cd View commit details
    Browse the repository at this point in the history

Commits on May 17, 2013

  1. Insteon: Catch Multiple Calls to Set_Receive in the Same Pass

    Resolves one of the three loopholes discovered by @peloy which permitted duplicate messages received in the same pass to be processed.
    
    Hopefully the final fix for hollie#169
    krkeegan committed May 17, 2013
    Configuration menu
    Copy the full SHA
    ea7b71e View commit details
    Browse the repository at this point in the history