Bluenet  5.7.0
Bluenet, firmware for nRF52 smart home devices
Loading...
Searching...
No Matches
cs_Packets.h
Go to the documentation of this file.
1/*
2 * Author: Crownstone Team
3 * Copyright: Crownstone (https://crownstone.rocks)
4 * Date: Mar 12, 2019
5 * License: LGPLv3+, Apache License 2.0, and/or MIT (triple-licensed)
6 */
7#pragma once
8
9#include <cfg/cs_Config.h>
18
19#include <cstdint>
20
21#define LEGACY_MULTI_SWITCH_HEADER_SIZE (1 + 1)
22#define LEGACY_MULTI_SWITCH_MAX_ITEM_COUNT 18
23
24#define VALIDATION_KEY_LENGTH 4
25#define SESSION_NONCE_LENGTH 5
26#define PACKET_NONCE_LENGTH 3
27
37 ADMIN = 0,
38 MEMBER = 1,
39 BASIC = 2,
40 SETUP = 100,
42 LOCALIZATION = 102, // Used for RC5 encryption.
43 NOT_SET = 201,
45 NO_ONE = 255
46};
47
51struct __attribute__((__packed__)) encryption_nonce_t {
52 uint8_t packetNonce[PACKET_NONCE_LENGTH];
53 uint8_t sessionNonce[SESSION_NONCE_LENGTH];
54};
55
59struct __attribute__((__packed__)) encryption_header_t {
60 uint8_t packetNonce[PACKET_NONCE_LENGTH];
61 uint8_t accessLevel;
62};
63
67struct __attribute__((__packed__)) encryption_header_encrypted_t {
68 uint8_t validationKey[VALIDATION_KEY_LENGTH];
69};
70
71struct __attribute__((packed)) session_data_t {
72 uint8_t protocol;
73 uint8_t sessionNonce[SESSION_NONCE_LENGTH];
74 uint8_t validationKey[VALIDATION_KEY_LENGTH];
75};
76
81};
82
86struct __attribute__((__packed__)) control_packet_header_t {
90};
91
95template <cs_buffer_size_t N>
96struct __attribute__((__packed__)) control_packet_t {
98 uint8_t payload[N];
99};
100
104struct __attribute__((__packed__)) result_packet_header_t {
105 uint8_t protocolVersion = CS_CONNECTION_PROTOCOL_VERSION;
108 cs_buffer_size_t payloadSize = 0;
111 : commandType(commandType), returnCode(returnCode), payloadSize(0) {}
113 : commandType(commandType), returnCode(returnCode), payloadSize(payloadSize) {}
114};
115
119template <cs_buffer_size_t N>
120struct __attribute__((__packed__)) result_packet_t {
122 uint8_t payload[N];
123};
124
125struct __attribute__((__packed__)) setup_data_t {
127 uint8_t sphereId;
128 uint8_t adminKey[ENCRYPTION_KEY_LENGTH];
129 uint8_t memberKey[ENCRYPTION_KEY_LENGTH];
130 uint8_t basicKey[ENCRYPTION_KEY_LENGTH];
131 uint8_t serviceDataKey[ENCRYPTION_KEY_LENGTH];
132 uint8_t localizationKey[ENCRYPTION_KEY_LENGTH];
133 uint8_t meshDeviceKey[ENCRYPTION_KEY_LENGTH];
134 uint8_t meshAppKey[ENCRYPTION_KEY_LENGTH];
135 uint8_t meshNetKey[ENCRYPTION_KEY_LENGTH];
137 uint16_t ibeaconMajor;
138 uint16_t ibeaconMinor;
139};
140
141enum class PersistenceModeGet { CURRENT = 0, STORED = 1, FIRMWARE_DEFAULT = 2, UNKNOWN = 255 };
142
143enum class PersistenceModeSet { TEMPORARY = 0, STORED = 1, UNKNOWN = 255 };
144
148struct __attribute__((__packed__)) state_packet_header_t {
149 uint16_t stateType;
150 uint16_t stateId;
151 uint8_t persistenceMode; // PersistenceModeSet or PersistenceModeGet
152 uint8_t reserved = 0;
153};
154
167union __attribute__((__packed__)) mesh_control_command_packet_flags_t {
168 struct __attribute__((packed)) {
169 bool broadcast : 1;
170 bool acked : 1;
171 bool useKnownIds : 1;
172 bool doNotRelay : 1;
173 } flags;
174 uint8_t asInt = 1; // Broadcast to all by default.
175};
176
180struct __attribute__((__packed__)) mesh_control_command_packet_header_t {
181 uint8_t type;
183 uint8_t timeoutOrTransmissions; // 0 for default.
184 uint8_t idCount; // 0 for broadcast.
185 // List of ids.
186 // Control packet.
187};
188
192union __attribute__((__packed__)) state_errors_t {
193 struct __attribute__((packed)) {
194 bool overCurrent : 1;
196 bool chipTemp : 1;
197 bool dimmerTemp : 1;
198 bool dimmerOn : 1;
199 bool dimmerOff : 1;
200 } errors;
201 uint32_t asInt;
202};
203
207union __attribute__((packed)) behaviour_settings_t {
208 struct __attribute__((packed)) {
209 bool enabled : 1;
210 } flags;
211 uint32_t asInt;
212};
213
219union __attribute__((__packed__)) switch_state_t {
220 struct __attribute__((packed)) {
221 uint8_t dimmer : 7;
222 uint8_t relay : 1;
223 } state;
224 uint8_t asInt;
225};
226
230constexpr uint8_t CS_SWITCH_CMD_VAL_OFF = 0;
231constexpr uint8_t CS_SWITCH_CMD_VAL_FULLY_ON = 100;
232constexpr uint8_t CS_SWITCH_CMD_VAL_NONE = 128;
233constexpr uint8_t CS_SWITCH_CMD_VAL_DEBUG_RESET_ALL = 129;
234constexpr uint8_t CS_SWITCH_CMD_VAL_DEBUG_RESET_AGG = 130;
237
239constexpr uint8_t CS_SWITCH_CMD_VAL_TOGGLE = 253;
240
242constexpr uint8_t CS_SWITCH_CMD_VAL_BEHAVIOUR = 254;
243
245constexpr uint8_t CS_SWITCH_CMD_VAL_SMART_ON = 255;
246
253struct __attribute__((packed)) multi_switch_item_t {
255 uint8_t switchCmd;
256};
257
261struct __attribute__((packed)) multi_switch_t {
262 uint8_t count;
264};
265
266struct __attribute__((__packed__)) cs_legacy_multi_switch_item_t {
268 uint8_t switchCmd;
269 uint16_t timeout;
270 uint8_t intent;
271};
272
273struct __attribute__((__packed__)) cs_legacy_multi_switch_t {
274 uint8_t type; // Always 0 (type list).
275 uint8_t count;
277};
278
279struct __attribute__((__packed__)) switch_message_payload_t {
280 uint8_t switchState;
281};
282
283struct __attribute__((__packed__)) opcode_message_payload_t {
284 uint8_t opCode;
285};
286
287struct __attribute__((__packed__)) enable_message_payload_t {
289};
290
291struct __attribute__((__packed__)) enable_scanner_message_payload_t {
292 bool enable;
293 uint16_t delay;
294};
295
296struct __attribute__((__packed__)) factory_reset_message_payload_t {
297 uint32_t resetCode;
298};
299
300struct __attribute__((packed)) sun_time_t {
301 uint32_t sunrise = 8 * 60 * 60; // Time in seconds after midnight that the sun rises.
302 uint32_t sunset = 19 * 60 * 60; // Time in seconds after midnight that the sun sets.
303};
304
314struct __attribute__((__packed__)) ibeacon_config_id_packet_t {
315 uint32_t timestamp = 0;
316 uint16_t interval = 0;
317};
318
319// See ibeacon_config_id_packet_t
320struct __attribute__((__packed__)) set_ibeacon_config_id_packet_t {
321 uint8_t ibeaconConfigId = 0;
323};
324
325struct __attribute__((__packed__)) led_message_payload_t {
326 uint8_t led;
327 bool enable;
328};
329
330struct __attribute__((__packed__)) hub_data_header_t {
331 uint8_t encrypt; // See UartProtocol::Encrypt
332 uint8_t reserved; // Reserved for future use (access level?). Must be 0 for now.
333};
334
335struct __attribute__((packed)) behaviour_debug_t {
336 uint32_t time; // 0 if unknown.
337 uint32_t sunrise; // 0 if unknown
338 uint32_t sunset; // 0 if unknown
339 uint8_t overrideState; // From switch aggregator, 255 when not set.
340 uint8_t behaviourState; // From switch aggregator, 255 when not set.
341 uint8_t aggregatedState; // From switch aggregator, 255 when not set.
342 uint8_t dimmerPowered; // 1 when powered.
343 uint8_t behaviourEnabled; // 1 when enabled.
344 uint64_t storedBehaviours; // Bitmask of behaviour indices that are stored.
345 uint64_t activeBehaviours; // Bitmask of behaviour indices that are active.
346 uint64_t extensionActive; // Bitmask of behaviours with active end condition.
347 uint64_t activeTimeoutPeriod; // Bitmask of behaviours that are in (presence) timeout period.
348 uint64_t presence[8]; // Bitmask of presence per profile.
349};
350
351struct __attribute__((packed)) register_tracked_device_packet_t {
352 uint16_t deviceId;
353 uint8_t locationId = 0;
354 uint8_t profileId;
355 int8_t rssiOffset = 0;
356 union __attribute__((packed)) {
357 struct __attribute__((packed)) {
358 bool reserved : 1;
360 bool tapToToggle : 1;
361 } flags;
362 uint8_t asInt;
363 } flags;
364 // uint8_t flags;
365 uint8_t deviceToken[TRACKED_DEVICE_TOKEN_SIZE];
366 uint16_t timeToLiveMinutes = 0;
367};
368
370
371struct __attribute__((packed)) tracked_device_heartbeat_packet_t {
372 uint16_t deviceId;
373 uint8_t locationId = 0;
374 uint8_t deviceToken[TRACKED_DEVICE_TOKEN_SIZE]; // Should match the token that's registered.
375 uint8_t timeToLiveMinutes = 0; // When set, heartbeats will be simulated until timeout.
376};
377
378enum class PresenceChange : uint8_t {
379 FIRST_SPHERE_ENTER = 0, // Profile ID and location ID are not set.
380 LAST_SPHERE_EXIT = 1, // Profile ID and location ID are not set.
381 PROFILE_SPHERE_ENTER = 2, // Only profile ID is set.
382 PROFILE_SPHERE_EXIT = 3, // Only profile ID is set.
383 PROFILE_LOCATION_ENTER = 4, // Profile ID and location ID are set.
384 PROFILE_LOCATION_EXIT = 5, // Profile ID and location ID are set.
385};
386
387struct __attribute((packed)) presence_change_t {
388 uint8_t type;
389 uint8_t profileId;
390 uint8_t locationId;
391};
392
393#define MAX_NUMBER_OF_PRESENCE_PROFILES 8
394
395struct __attribute((packed)) presence_t {
396 // Bitmask of presence per profile.
397 uint64_t presence[MAX_NUMBER_OF_PRESENCE_PROFILES];
398};
399
400struct __attribute__((__packed__)) mesh_state_part_0_t {
403};
404
405struct __attribute__((__packed__)) mesh_state_part_1_t {
408};
409
414 // Same as net_flash_data_iv_index_t
415 uint32_t iv_index;
417};
418
419typedef uint32_t cs_mesh_seq_number_t;
420
422typedef enum {
426
430struct __attribute__((packed)) cs_mesh_iv_index_v5_t {
431 uint32_t iv_index;
435};
436
440struct __attribute__((packed)) cs_mesh_seq_number_v5_t {
441 uint32_t next_block;
443};
444
445struct __attribute__((packed)) cs_adc_restarts_t {
446 uint32_t count = 0; // Number of ADC restarts since boot.
447 uint32_t lastTimestamp = 0; // Timestamp of last ADC restart.
448};
449
450struct __attribute__((packed)) cs_adc_channel_swaps_t {
451 uint32_t count = 0; // Number of detected ADC channel swaps since boot.
452 uint32_t lastTimestamp = 0; // Timestamp of last detected ADC channel swap.
453};
454
462};
463
464struct __attribute__((packed)) cs_power_samples_header_t {
465 uint8_t type; // PowerSamplesType.
466 uint8_t index = 0; // Some types have multiple lists of samples.
467 uint16_t count = 0; // Number of samples.
468 uint32_t unixTimestamp; // Unix timestamp of time the samples have been set.
469 uint16_t delayUs; // Delay of the measurement.
470 uint16_t sampleIntervalUs; // Time between samples.
471 uint16_t reserved = 0;
472 int16_t offset; // Calculated offset (mean) of the samples.
473 float multiplier; // Multiply the sample value with this value to get a value in ampere, or volt.
474 // Followed by: int16_t samples[count]
475};
476
477struct __attribute__((packed)) cs_power_samples_request_t {
478 uint8_t type; // PowerSamplesType.
479 uint8_t index = 0; // Some types have multiple lists of samples.
480};
481
482struct __attribute__((packed)) cs_switch_history_header_t {
483 uint8_t count; // Number of items.
484};
485
486struct __attribute__((packed)) cs_switch_history_item_t {
487 uint32_t timestamp; // Timestamp of the switch command.
488 uint8_t value; // Switch command value.
489 switch_state_t state; // Switch state after executing the command.
490 cmd_source_t source; // Source of the command.
491
493 uint32_t timestamp, uint8_t switchValue, switch_state_t switchState, const cmd_source_t& source)
494 : timestamp(timestamp), value(switchValue), state(switchState), source(source) {}
495};
496
497struct __attribute__((packed)) cs_gpregret_result_t {
498 uint8_t index; // Which GPREGRET
499 uint32_t value; // The value of this GPREGRET
500};
501
502struct __attribute__((packed)) cs_ram_stats_t {
503 uint32_t minStackEnd = 0xFFFFFFFF;
504 uint32_t maxHeapEnd = 0;
505 uint32_t minFree = 0;
506 uint32_t numSbrkFails = 0;
507};
508
509struct __attribute__((packed)) cs_bootloader_info_t {
510 // Version of this struct.
511 uint8_t protocol;
512 uint16_t dfuVersion;
516 // A prerelease value. This is 255 for normal releases.
519};
520
522
527struct __attribute__((packed)) asset_report_uart_mac_t {
529 uint8_t stoneId;
530 // No filter bitmask, as that doesn't fit in the mesh message.
531 int8_t rssi;
532 uint8_t channel;
533};
534
535struct __attribute__((packed)) asset_report_uart_id_t {
537 uint8_t stoneId;
539 int8_t rssi;
540 uint8_t channel;
541};
542
543// ========================= functions =========================
544
549 return (size == sizeof(multi_switch_item_t) && item->id != 0);
550}
551
556 return (size >= 1 + packet->count * sizeof(multi_switch_item_t));
557}
558
560 return (size == sizeof(cs_legacy_multi_switch_item_t) && item->id != 0);
561}
562
565 return false;
566 }
567 if (packet->type != 0) {
568 return false;
569 }
571 return false;
572 }
573 if (size < LEGACY_MULTI_SWITCH_HEADER_SIZE + packet->count * sizeof(cs_legacy_multi_switch_item_t)) {
574 return false;
575 }
576 return true;
577}
@ CTRL_CMD_UNKNOWN
Definition: cs_CommandTypes.h:88
#define CS_CONNECTION_PROTOCOL_VERSION
Definition: cs_Config.h:23
#define ENCRYPTION_KEY_LENGTH
Definition: cs_Config.h:162
@ ERR_UNSPECIFIED
Definition: cs_ErrorCodes.h:57
EncryptionAccessLevel
Packets (structs) that are used over the air, over uart, or stored in flash.
Definition: cs_Packets.h:36
@ BASIC
Definition: cs_Packets.h:39
@ MEMBER
Definition: cs_Packets.h:38
@ ADMIN
Definition: cs_Packets.h:37
@ SERVICE_DATA
Definition: cs_Packets.h:41
@ NOT_SET
Definition: cs_Packets.h:43
@ LOCALIZATION
Definition: cs_Packets.h:42
@ NO_ONE
Definition: cs_Packets.h:45
@ SETUP
Definition: cs_Packets.h:40
@ ENCRYPTION_DISABLED
Definition: cs_Packets.h:44
constexpr uint8_t CS_SWITCH_CMD_VAL_BEHAVIOUR
Switch to the value according to behaviour rules.
Definition: cs_Packets.h:242
#define VALIDATION_KEY_LENGTH
Definition: cs_Packets.h:24
bool cs_multi_switch_item_is_valid(multi_switch_item_t *item, size16_t size)
Returns true when a multi switch item is valid.
Definition: cs_Packets.h:548
constexpr uint8_t CS_SWITCH_CMD_VAL_DEBUG_RESET_AGG
Definition: cs_Packets.h:234
bool cs_multi_switch_packet_is_valid(multi_switch_t *packet, size16_t size)
Returns true when a multi switch packet is valid.
Definition: cs_Packets.h:555
uint32_t cs_mesh_seq_number_t
Definition: cs_Packets.h:419
#define LEGACY_MULTI_SWITCH_HEADER_SIZE
Definition: cs_Packets.h:21
PowerSamplesType
Definition: cs_Packets.h:455
@ POWER_SAMPLES_TYPE_SWITCH
Definition: cs_Packets.h:461
@ POWER_SAMPLES_TYPE_NOW_UNFILTERED
Definition: cs_Packets.h:459
@ POWER_SAMPLES_TYPE_NOW_FILTERED
Definition: cs_Packets.h:458
@ POWER_SAMPLES_TYPE_SOFTFUSE
Definition: cs_Packets.h:460
@ POWER_SAMPLES_TYPE_SWITCHCRAFT_NON_TRIGGERED
Definition: cs_Packets.h:457
@ POWER_SAMPLES_TYPE_SWITCHCRAFT
Definition: cs_Packets.h:456
PersistenceModeSet
Definition: cs_Packets.h:143
constexpr uint8_t CS_SWITCH_CMD_VAL_DEBUG_RESET_AGG_OVERRIDE
Definition: cs_Packets.h:236
PresenceChange
Definition: cs_Packets.h:378
bool cs_legacy_multi_switch_item_is_valid(cs_legacy_multi_switch_item_t *item, size16_t size)
Definition: cs_Packets.h:559
struct __attribute((packed)) presence_change_t
Definition: cs_Packets.h:387
#define LEGACY_MULTI_SWITCH_MAX_ITEM_COUNT
Definition: cs_Packets.h:22
#define PACKET_NONCE_LENGTH
Definition: cs_Packets.h:26
constexpr uint8_t CS_SWITCH_CMD_VAL_TOGGLE
Switch OFF when currently on, switch to SMART_ON when currently off.
Definition: cs_Packets.h:239
#define MAX_NUMBER_OF_PRESENCE_PROFILES
Definition: cs_Packets.h:393
const uint8_t CS_CHARACTERISTIC_NOTIFICATION_PART_LAST
Definition: cs_Packets.h:521
bool cs_legacy_multi_switch_is_valid(const cs_legacy_multi_switch_t *packet, size16_t size)
Definition: cs_Packets.h:563
constexpr uint8_t CS_SWITCH_CMD_VAL_NONE
Definition: cs_Packets.h:232
register_tracked_device_packet_t update_tracked_device_packet_t
Definition: cs_Packets.h:369
cs_mesh_iv_update_v5_t
Same as net_state_iv_update_t.
Definition: cs_Packets.h:422
@ CS_MESH_NET_STATE_IV_UPDATE_NORMAL
Definition: cs_Packets.h:423
@ CS_MESH_NET_STATE_IV_UPDATE_IN_PROGRESS
Definition: cs_Packets.h:424
constexpr uint8_t CS_SWITCH_CMD_VAL_SMART_ON
Switch on, the value will be determined by behaviour rules.
Definition: cs_Packets.h:245
constexpr uint8_t CS_SWITCH_CMD_VAL_DEBUG_RESET_ALL
Definition: cs_Packets.h:233
constexpr uint8_t CS_SWITCH_CMD_VAL_DEBUG_RESET_OVERRIDE
Definition: cs_Packets.h:235
#define SESSION_NONCE_LENGTH
Definition: cs_Packets.h:25
PersistenceModeGet
Definition: cs_Packets.h:141
BackgroundAdvFlagBitPos
Definition: cs_Packets.h:77
@ BG_ADV_FLAG_TAP_TO_TOGGLE_ENABLED
Definition: cs_Packets.h:80
@ BG_ADV_FLAG_IGNORE_FOR_PRESENCE
Definition: cs_Packets.h:79
@ BG_ADV_FLAG_RESERVED
Definition: cs_Packets.h:78
constexpr uint8_t CS_SWITCH_CMD_VAL_OFF
Switch command values.
Definition: cs_Packets.h:230
constexpr uint8_t CS_SWITCH_CMD_VAL_FULLY_ON
Definition: cs_Packets.h:231
uint16_t size16_t
Definition: cs_Typedefs.h:25
uint16_t cs_buffer_size_t
Definition: cs_Typedefs.h:20
uint16_t cs_control_cmd_t
Definition: cs_Typedefs.h:22
uint8_t stone_id_t
Definition: cs_Typedefs.h:23
#define TRACKED_DEVICE_TOKEN_SIZE
Definition: cs_Typedefs.h:38
uint16_t cs_ret_code_t
Definition: cs_Typedefs.h:21
uint8_t BOOL
Boolean with fixed size.
Definition: cs_Typedefs.h:27
Definition: cs_AssetFilterPackets.h:93
Definition: cs_Packets.h:535
int8_t rssi
Definition: cs_Packets.h:539
asset_id_t assetId
Definition: cs_Packets.h:536
uint8_t channel
Definition: cs_Packets.h:540
uint8_t stoneId
Definition: cs_Packets.h:537
uint8_t filterBitmask
Definition: cs_Packets.h:538
A packet that represents RSSI data about an asset received by a particular Crownstone.
Definition: cs_Packets.h:527
uint8_t stoneId
Definition: cs_Packets.h:529
uint8_t channel
Definition: cs_Packets.h:532
mac_address_t address
Definition: cs_Packets.h:528
int8_t rssi
Definition: cs_Packets.h:531
Definition: cs_Packets.h:335
uint32_t sunset
Definition: cs_Packets.h:338
uint8_t behaviourState
Definition: cs_Packets.h:340
uint64_t extensionActive
Definition: cs_Packets.h:346
uint64_t activeTimeoutPeriod
Definition: cs_Packets.h:347
uint8_t behaviourEnabled
Definition: cs_Packets.h:343
uint64_t activeBehaviours
Definition: cs_Packets.h:345
uint8_t overrideState
Definition: cs_Packets.h:339
uint32_t sunrise
Definition: cs_Packets.h:337
uint32_t time
Definition: cs_Packets.h:336
uint8_t aggregatedState
Definition: cs_Packets.h:341
uint8_t dimmerPowered
Definition: cs_Packets.h:342
uint64_t storedBehaviours
Definition: cs_Packets.h:344
Struct that tells where a command originated from.
Definition: cs_CmdSource.h:34
Header of a control packet.
Definition: cs_Packets.h:86
cs_buffer_size_t payloadSize
Definition: cs_Packets.h:89
uint8_t protocolVersion
Definition: cs_Packets.h:87
cs_control_cmd_t commandType
Definition: cs_Packets.h:88
Control packet.
Definition: cs_Packets.h:96
control_packet_header_t header
Definition: cs_Packets.h:97
Definition: cs_Packets.h:450
Definition: cs_Packets.h:445
Definition: cs_Packets.h:509
uint8_t bootloaderMajor
Definition: cs_Packets.h:513
uint8_t bootloaderMinor
Definition: cs_Packets.h:514
uint8_t bootloaderPrerelease
Definition: cs_Packets.h:517
uint8_t bootloaderBuildType
Definition: cs_Packets.h:518
uint8_t bootloaderPatch
Definition: cs_Packets.h:515
uint8_t protocol
Definition: cs_Packets.h:511
uint16_t dfuVersion
Definition: cs_Packets.h:512
Definition: cs_Packets.h:497
uint32_t value
Definition: cs_Packets.h:499
uint8_t index
Definition: cs_Packets.h:498
Definition: cs_Packets.h:266
stone_id_t id
Definition: cs_Packets.h:267
uint16_t timeout
Definition: cs_Packets.h:269
uint8_t intent
Definition: cs_Packets.h:270
uint8_t switchCmd
Definition: cs_Packets.h:268
Definition: cs_Packets.h:273
uint8_t count
Definition: cs_Packets.h:275
uint8_t type
Definition: cs_Packets.h:274
Same as mesh_opt_iv_index_persist_data_legacy_t.
Definition: cs_Packets.h:413
uint32_t iv_index
Definition: cs_Packets.h:415
uint8_t iv_update_in_progress
Definition: cs_Packets.h:416
Same as mesh_opt_iv_index_persist_data_t.
Definition: cs_Packets.h:430
uint16_t iv_update_timeout_counter
Definition: cs_Packets.h:433
cs_mesh_iv_update_v5_t iv_update_in_progress
Definition: cs_Packets.h:432
uint8_t synchro_index
Definition: cs_Packets.h:434
uint32_t iv_index
Definition: cs_Packets.h:431
Definition: cs_MeshModelPackets.h:119
Definition: cs_MeshModelPackets.h:127
Same as mesh_opt_seqnum_persist_data_t.
Definition: cs_Packets.h:440
uint8_t synchro_index
Definition: cs_Packets.h:442
uint32_t next_block
Definition: cs_Packets.h:441
Definition: cs_Packets.h:464
uint32_t unixTimestamp
Definition: cs_Packets.h:468
uint8_t type
Definition: cs_Packets.h:465
uint16_t delayUs
Definition: cs_Packets.h:469
uint16_t sampleIntervalUs
Definition: cs_Packets.h:470
float multiplier
Definition: cs_Packets.h:473
int16_t offset
Definition: cs_Packets.h:472
Definition: cs_Packets.h:477
uint8_t type
Definition: cs_Packets.h:478
Definition: cs_Packets.h:502
Definition: cs_Packets.h:482
uint8_t count
Definition: cs_Packets.h:483
Definition: cs_Packets.h:486
cs_switch_history_item_t(uint32_t timestamp, uint8_t switchValue, switch_state_t switchState, const cmd_source_t &source)
Definition: cs_Packets.h:492
uint8_t value
Definition: cs_Packets.h:488
uint32_t timestamp
Definition: cs_Packets.h:487
cmd_source_t source
Definition: cs_Packets.h:490
switch_state_t state
Definition: cs_Packets.h:489
Definition: cs_Typedefs.h:45
Definition: cs_Packets.h:287
BOOL enable
Definition: cs_Packets.h:288
Definition: cs_Packets.h:291
uint16_t delay
Definition: cs_Packets.h:293
bool enable
Definition: cs_Packets.h:292
Encryption header that's encrypted.
Definition: cs_Packets.h:67
Encryption header that's not encrypted.
Definition: cs_Packets.h:59
uint8_t accessLevel
Definition: cs_Packets.h:61
Nonce used for encryption.
Definition: cs_Packets.h:51
Definition: cs_Packets.h:296
uint32_t resetCode
Definition: cs_Packets.h:297
Definition: cs_Packets.h:330
uint8_t reserved
Definition: cs_Packets.h:332
uint8_t encrypt
Definition: cs_Packets.h:331
Packet to change ibeacon config ID.
Definition: cs_Packets.h:314
Definition: cs_Packets.h:325
bool enable
Definition: cs_Packets.h:327
uint8_t led
Definition: cs_Packets.h:326
MAC address struct, with some useful functions.
Definition: cs_MeshModelPackets.h:223
Mesh control command header packet.
Definition: cs_Packets.h:180
uint8_t timeoutOrTransmissions
Definition: cs_Packets.h:183
mesh_control_command_packet_flags_t flags
Definition: cs_Packets.h:182
uint8_t type
Definition: cs_Packets.h:181
uint8_t idCount
Definition: cs_Packets.h:184
Definition: cs_Packets.h:400
stone_id_t stoneId
Definition: cs_Packets.h:401
cs_mesh_model_msg_state_0_t meshState
Definition: cs_Packets.h:402
Definition: cs_Packets.h:405
cs_mesh_model_msg_state_1_t meshState
Definition: cs_Packets.h:407
stone_id_t stoneId
Definition: cs_Packets.h:406
A single multi switch item.
Definition: cs_Packets.h:253
uint8_t switchCmd
Definition: cs_Packets.h:255
stone_id_t id
Definition: cs_Packets.h:254
Multi switch packet.
Definition: cs_Packets.h:261
uint8_t count
Definition: cs_Packets.h:262
Definition: cs_Packets.h:283
uint8_t opCode
Definition: cs_Packets.h:284
Definition: cs_Packets.h:351
uint16_t deviceId
Definition: cs_Packets.h:352
bool ignoreForBehaviour
Definition: cs_Packets.h:359
uint8_t asInt
Definition: cs_Packets.h:362
bool reserved
Definition: cs_Packets.h:358
uint8_t profileId
Definition: cs_Packets.h:354
bool tapToToggle
Definition: cs_Packets.h:360
Header of a result packet.
Definition: cs_Packets.h:104
result_packet_header_t(cs_control_cmd_t commandType, cs_ret_code_t returnCode, cs_buffer_size_t payloadSize)
Definition: cs_Packets.h:112
result_packet_header_t()
Definition: cs_Packets.h:109
result_packet_header_t(cs_control_cmd_t commandType, cs_ret_code_t returnCode)
Definition: cs_Packets.h:110
Result packet.
Definition: cs_Packets.h:120
result_packet_header_t header
Definition: cs_Packets.h:121
Definition: cs_Packets.h:71
uint8_t protocol
Definition: cs_Packets.h:72
Definition: cs_Packets.h:320
ibeacon_config_id_packet_t config
Definition: cs_Packets.h:322
Definition: cs_Packets.h:125
uint8_t sphereId
Definition: cs_Packets.h:127
stone_id_t stoneId
Definition: cs_Packets.h:126
cs_uuid128_t ibeaconUuid
Definition: cs_Packets.h:136
uint16_t ibeaconMinor
Definition: cs_Packets.h:138
uint16_t ibeaconMajor
Definition: cs_Packets.h:137
State get/set header packet.
Definition: cs_Packets.h:148
uint16_t stateId
Definition: cs_Packets.h:150
uint16_t stateType
Definition: cs_Packets.h:149
uint8_t persistenceMode
Definition: cs_Packets.h:151
Definition: cs_Packets.h:300
Definition: cs_Packets.h:279
uint8_t switchState
Definition: cs_Packets.h:280
Definition: cs_Packets.h:371
uint16_t deviceId
Definition: cs_Packets.h:372
Behaviour settings.
Definition: cs_Packets.h:207
bool enabled
Definition: cs_Packets.h:209
uint32_t asInt
Definition: cs_Packets.h:211
Flags to determine how to send the mesh message.
Definition: cs_Packets.h:167
bool acked
Definition: cs_Packets.h:170
bool doNotRelay
Definition: cs_Packets.h:172
bool useKnownIds
Definition: cs_Packets.h:171
bool broadcast
Definition: cs_Packets.h:169
State errors: collection of errors that influence the switch behaviour.
Definition: cs_Packets.h:192
bool dimmerOn
Definition: cs_Packets.h:198
bool overCurrent
Definition: cs_Packets.h:194
uint32_t asInt
Definition: cs_Packets.h:201
bool dimmerOff
Definition: cs_Packets.h:199
bool overCurrentDimmer
Definition: cs_Packets.h:195
bool dimmerTemp
Definition: cs_Packets.h:197
bool chipTemp
Definition: cs_Packets.h:196
Switch state: combination of relay and dimmer state.
Definition: cs_Packets.h:219
uint8_t asInt
Definition: cs_Packets.h:224
uint8_t dimmer
Definition: cs_Packets.h:221
uint8_t relay
Definition: cs_Packets.h:222