示例#1
0
        public NodeEvent GetEvent(ZWaveNode node, byte[] message)
        {
            NodeEvent nodeEvent = null;
            byte      cmdType   = message[1];

            switch (cmdType)
            {
            case (byte)Command.WakeUpIntervalReport:
                if (message.Length > 4)
                {
                    uint interval = ((uint)message[2]) << 16;
                    interval |= (((uint)message[3]) << 8);
                    interval |= (uint)message[4];
                    nodeEvent = new NodeEvent(node, EventParameter.WakeUpInterval, interval, 0);
                }
                break;

            case (byte)Command.WakeUpNotification:
                // Resend queued messages while node was asleep
                var wakeUpResendQueue = GetResendQueueData(node);
                for (int m = 0; m < wakeUpResendQueue.Count; m++)
                {
                    node.SendMessage(wakeUpResendQueue[m]);
                }
                wakeUpResendQueue.Clear();
                nodeEvent = new NodeEvent(node, EventParameter.WakeUpNotify, 1, 0);
                break;
            }
            return(nodeEvent);
        }
示例#2
0
 public static ZWaveEvent GetEvent(ZWaveNode node, byte[] message)
 {
     ZWaveEvent nodeEvent = null;
     byte cmdType = message[8];
     switch (cmdType)
     {
     case (byte)Command.WakeUpIntervalReport:
         if (message.Length > 11)
         {
             uint interval = ((uint)message[9]) << 16;
             interval |= (((uint)message[10]) << 8);
             interval |= (uint)message[11];
             nodeEvent = new ZWaveEvent(node, EventParameter.WakeUpInterval, interval, 0);
         }
         break;
     case (byte)Command.WakeUpNotification:
             // Resend queued messages while node was asleep
         var wakeUpResendQueue = GetResendQueueData(node);
         for (int m = 0; m < wakeUpResendQueue.Count; m++)
         {
             node.SendMessage(wakeUpResendQueue[m]);
         }
         wakeUpResendQueue.Clear();
         nodeEvent = new ZWaveEvent(node, EventParameter.WakeUpNotify, 1, 0);
         break;
     }
     return nodeEvent;
 }
示例#3
0
 public static void Get(ZWaveNode node)
 {
     byte[] message = new byte[] {
         (byte)MessageHeader.SOF, /* Start Of Frame */
         0x09 /*packet len */,
         (byte)MessageType.Request,
         (byte)Function.SendData,
         node.Id,
         0x02,
         (byte)CommandClass.ManufacturerSpecific,
         (byte)Command.ManufacturerSpecificGet,
         0x05 /* report ?!? */,
         0x01 | 0x04,
         0x00
     };
     node.SendMessage(message);
 }
示例#4
0
 public static void Get(ZWaveNode node)
 {
     byte[] message = new byte[] {
         (byte)MessageHeader.SOF,   /* Start Of Frame */
         0x09 /*packet len */,
         (byte)MessageType.Request, /* Type of message */
         0x13 /* func send data */,
         node.NodeId,
         0x02,
         (byte)CommandClass.ManufacturerSpecific,
         (byte)Command.ManufacturerSpecificGet,
         0x05 /* report ?!? */,
         0x01 | 0x04,
         0x00
     };
     node.SendMessage(message);
 }
示例#5
0
        public static void WakeUpNode(ZWaveNode node)
        {
            // If node was marked as sleeping, reset the flag
            var wakeUpStatus = node.GetData("WakeUpStatus");

            if (wakeUpStatus != null && wakeUpStatus.Value != null && ((WakeUpStatus)wakeUpStatus.Value).IsSleeping)
            {
                ((WakeUpStatus)wakeUpStatus.Value).IsSleeping = false;
                var wakeEvent = new NodeEvent(node, EventParameter.WakeUpSleepingStatus, 0 /* 1 = sleeping, 0 = awake */, 0);
                node.OnNodeUpdated(wakeEvent);
                // Resend queued messages while node was asleep
                var wakeUpResendQueue = GetResendQueueData(node);
                for (int m = 0; m < wakeUpResendQueue.Count; m++)
                {
                    Utility.logger.Trace("Sending message {0} {1}", m, BitConverter.ToString(wakeUpResendQueue[m]));
                    node.SendMessage(wakeUpResendQueue[m]);
                }
                wakeUpResendQueue.Clear();
            }
        }
示例#6
0
 public static void WakeUpNode(ZWaveNode node)
 {
     // If node was marked as sleeping, reset the flag
     var wakeUpStatus = node.GetData("WakeUpStatus");
     if (wakeUpStatus != null && wakeUpStatus.Value != null && ((WakeUpStatus)wakeUpStatus.Value).IsSleeping)
     {
         ((WakeUpStatus)wakeUpStatus.Value).IsSleeping = false;
         var wakeEvent = new NodeEvent(node, EventParameter.WakeUpSleepingStatus, 0 /* 1 = sleeping, 0 = awake */, 0);
         node.OnNodeUpdated(wakeEvent);
         // Resend queued messages while node was asleep
         var wakeUpResendQueue = GetResendQueueData(node);
         for (int m = 0; m < wakeUpResendQueue.Count; m++)
         {
             Utility.logger.Trace("Sending message {0} {1}", m, BitConverter.ToString(wakeUpResendQueue[m]));
             node.SendMessage(wakeUpResendQueue[m]);
         }
         wakeUpResendQueue.Clear();
     }
 }
示例#7
0
 public NodeEvent GetEvent(ZWaveNode node, byte[] message)
 {
     NodeEvent nodeEvent = null;
     byte cmdType = message[1];
     switch (cmdType)
     {
     case (byte)Command.WakeUpIntervalReport:
         if (message.Length > 4)
         {
             uint interval = ((uint)message[2]) << 16;
             interval |= (((uint)message[3]) << 8);
             interval |= (uint)message[4];
             nodeEvent = new NodeEvent(node, EventParameter.WakeUpInterval, interval, 0);
         }
         break;
     case (byte)Command.WakeUpNotification:
         // If node was marked as sleeping, reset the flag
         var wakeUpStatus = node.GetData("WakeUpStatus");
         if (wakeUpStatus != null && wakeUpStatus.Value != null && ((WakeUpStatus)wakeUpStatus.Value).IsSleeping)
         {
             ((WakeUpStatus)wakeUpStatus.Value).IsSleeping = false;
             var wakeEvent = new NodeEvent(node, EventParameter.WakeUpSleepingStatus, 0 /* 1 = sleeping, 0 = awake */, 0);
             node.OnNodeUpdated(wakeEvent);
         }
         // Resend queued messages while node was asleep
         var wakeUpResendQueue = GetResendQueueData(node);
         for (int m = 0; m < wakeUpResendQueue.Count; m++)
         {
             Utility.logger.Trace("Sending message {0} {1}", m, BitConverter.ToString(wakeUpResendQueue[m]));
             node.SendMessage(wakeUpResendQueue[m]);
         }
         wakeUpResendQueue.Clear();
         nodeEvent = new NodeEvent(node, EventParameter.WakeUpNotify, 1, 0);
         break;
     }
     return nodeEvent;
 }