smartrent / grizzly

Elixir Z-Wave Library

Home Page:https://hex.pm/packages/grizzly

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Un-decodable 0x09 network_management_installation_maintenance command

jfcloutier opened this issue · comments

I just saw this

19:44:57.314 [error] GenServer #PID<0.2950.0> terminating
** (FunctionClauseError) no function clause matching in Grizzly.ZWave.Decoder.from_binary/1
    (grizzly 0.15.6) lib/grizzly/zwave/decoder.ex:1: Grizzly.ZWave.Decoder.from_binary(<<103, 9, 8, 0>>)
    (grizzly 0.15.6) lib/grizzly/zwave/commands/zip_packet.ex:80: Grizzly.ZWave.Commands.ZIPPacket.decode_params/1
    (grizzly 0.15.6) lib/grizzly/zwave/decoder.ex:1: 

What's interesting is that I cannot find a documented command 0x09 for CC 0x67 (:network_management_installation_maintenance)

Here's some more information about that binary:

  1. The 9 means S2 resynchronization event
  2. The 8 is the node number for this message.
  3. The 0 is the reason. It's SOS_EVENT_REASON_UNANSWERED. There's only one reason defined currently.

Here's some text about it:

/** 
 * SOS_EVENT_REASON_UNANSWERED means that a Nonce Report with Singlecast-out-of-Sync                                                                                                                                                                    
 * (SOS) = 1 has been received at an unexpected time and no response was sent.
 *  
 * A Nonce Report SOS is considered expected and no SOS_EVENT_REASON_UNANSWERED will be emitted in these case:
 *    1) libs2 is in Verify Delivery state and receives a Nonce Report SOS from the
 *       node being delivered to and will re-transmit the encrypted message
 *    2) libs2 has already re-transmitted and receives a second SOS from the node being transmitted to
 *       during Verify Delivery timeout. A \ref S2_send_done_event() with
 *       status=TRANSMIT_COMPLETE_NO_ACK will be emitted instead.
 *  
 */ 
typedef enum {
  SOS_EVENT_REASON_UNANSWERED,            ///< A Nonce Report with SOS=1 was received at an unexpected time and no response was sent. Application may use this information to abort Supervision Report timeout if the remote nodeid matches.
}   
sos_event_reason_t;