29#ifndef ZWAVE_NODE_ID_DEFINITIONS_H
30#define ZWAVE_NODE_ID_DEFINITIONS_H
35#define ZW_LR_MAX_NODE_ID 4000
38#define ZW_LR_MIN_NODE_ID 256
41#define ZW_MIN_NODE_ID 1
43#define ZW_MAX_NODES 232
46#define ZWAVE_BROADCAST_NODE_ID 255
49#define ZWAVE_LR_BROADCAST_NODE_ID 0xFFF
53#define ZWAVE_MAX_FRAME_SIZE 158
56#define ZWAVE_MAX_MAC_PAYLOAD_SIZE 46
61#define ZWAVE_MAX_NIF_SIZE (ZWAVE_MAX_FRAME_SIZE - 2)
64#define ZW_LR_MAX_NODEMASK_LENGTH ((ZW_LR_MAX_NODE_ID / 8) + 1)
65#define ZW_MAX_NODEMASK_LENGTH (ZW_MAX_NODES / 8)
66#define ZW_LR_ONLY_MAX_NODEMASK_LENGTH \
67 ((ZW_LR_MAX_NODE_ID - ZW_LR_MIN_NODE_ID) / 8)
69#define ZW_LR_NODEMASK_OFFSET ((ZW_LR_MIN_NODE_ID) / 8)
70#define NODEMASK_GET_LR(nodemask) ((nodemask) + ZW_LR_NODEMASK_OFFSET)
73#define ZWAVE_MAXIMUM_ENDPOINT_ID 127
76#define IS_BROADCAST_NODE_ID(node_id) \
77 ((node_id == ZWAVE_BROADCAST_NODE_ID) \
78 || (node_id == ZWAVE_LR_BROADCAST_NODE_ID))
90#define IS_ZWAVE_NODE_ID(node_id) \
91 (((node_id) > 0) && ((node_id) <= ZW_MAX_NODES))
94#define IS_ZWAVE_EXTENDED_NODE_ID(node_id) \
95 (((node_id) >= ZW_LR_MIN_NODE_ID) && ((node_id) <= ZW_LR_MAX_NODE_ID))
98#define IS_ZWAVE_NODE_ID_VALID(node_id) \
99 ((IS_ZWAVE_NODE_ID(node_id)) || (IS_ZWAVE_EXTENDED_NODE_ID(node_id)))
102#define ZW_IS_NODE_IN_MASK(node_id, nodemask) \
103 (!IS_ZWAVE_NODE_ID_VALID(node_id) \
105 : (IS_ZWAVE_NODE_ID(node_id) \
106 ? ((nodemask[(node_id - 1) >> 3] >> ((node_id - 1) & 7)) & 0x1) \
107 : ((nodemask[(node_id) >> 3] >> ((node_id)&7)) & 0x1)))
109#define ZW_ADD_NODE_TO_MASK(node_id, nodemask) \
110 (!IS_ZWAVE_NODE_ID_VALID(node_id) \
112 : (IS_ZWAVE_NODE_ID(node_id) \
113 ? ((nodemask[(node_id - 1) / 8]) |= (1 << ((node_id - 1) % 8))) \
114 : ((nodemask[(node_id) / 8]) |= (1 << ((node_id) % 8)))))
116#define ZW_REMOVE_NODE_FROM_MASK(node_id, nodemask) \
117 (!IS_ZWAVE_NODE_ID_VALID(node_id) \
119 : (IS_ZWAVE_NODE_ID(node_id) \
120 ? ((nodemask[(node_id - 1) / 8]) \
121 &= (0xFF - (1 << ((node_id - 1) % 8)))) \
122 : ((nodemask[(node_id) / 8]) &= (0xFF - (1 << ((node_id) % 8))))))
136#define ZWAVE_NODE_INFO_LISTENING_PROTOCOL_LISTENING_MASK 0x80
137#define ZWAVE_NODE_INFO_LISTENING_PROTOCOL_ROUTING_MASK 0x40
138#define ZWAVE_NODE_INFO_LISTENING_PROTOCOL_MAX_SPEED_MASK 0x38
139#define ZWAVE_NODE_INFO_LISTENING_PROTOCOL_PROTOCOL_VERSION_MASK 0x07
142#define ZWAVE_NODE_INFO_OPTIONAL_PROTOCOL_OPTIONAL_FUNCTIONALITY_MASK 0x80
143#define ZWAVE_NODE_INFO_OPTIONAL_PROTOCOL_SENSOR_1000MS_MASK 0x40
144#define ZWAVE_NODE_INFO_OPTIONAL_PROTOCOL_SENSOR_250MS_MASK 0x20
145#define ZWAVE_NODE_INFO_OPTIONAL_PROTOCOL_BEAM_CAPABILITY_MASK 0x10
146#define ZWAVE_NODE_INFO_OPTIONAL_PROTOCOL_END_NODE_MASK 0x08
147#define ZWAVE_NODE_INFO_OPTIONAL_PROTOCOL_SPECIFIC_DEVICE_MASK 0x04
148#define ZWAVE_NODE_INFO_OPTIONAL_PROTOCOL_CONTROLLER_MASK 0x02
149#define ZWAVE_NODE_INFO_OPTIONAL_PROTOCOL_SECURITY_MASK 0x01
uint8_t zwave_endpoint_id_t
Z-Wave Endpoint ID type.
Definition: zwave_node_id_definitions.h:125
uint32_t zwave_home_id_t
Z-Wave HomeID type.
Definition: zwave_node_id_definitions.h:87
#define ZW_LR_MAX_NODEMASK_LENGTH
Length of nodemask to hold max number of nodes in a Z-Wave system.
Definition: zwave_node_id_definitions.h:64
uint8_t zwave_nodemask_t[ZW_LR_MAX_NODEMASK_LENGTH]
Node mask.
Definition: zwave_node_id_definitions.h:81
uint16_t zwave_node_id_t
Z-Wave NodeID type.
Definition: zwave_node_id_definitions.h:84
Node type structure, used in Node Information Frames.
Definition: zwave_node_id_definitions.h:128
uint8_t specific
Specific Device Type.
Definition: zwave_node_id_definitions.h:132
uint8_t basic
Basic Device Type, is it a Controller, Controller_Static, End_Node or a End_Node_Routing Device Type.
Definition: zwave_node_id_definitions.h:130