21#define LEGACY_MULTI_SWITCH_HEADER_SIZE (1 + 1)
22#define LEGACY_MULTI_SWITCH_MAX_ITEM_COUNT 18
24#define VALIDATION_KEY_LENGTH 4
25#define SESSION_NONCE_LENGTH 5
26#define PACKET_NONCE_LENGTH 3
95template <cs_buffer_
size_t N>
111 : commandType(commandType), returnCode(returnCode), payloadSize(0) {}
113 : commandType(commandType), returnCode(returnCode), payloadSize(payloadSize) {}
119template <cs_buffer_
size_t N>
152 uint8_t reserved = 0;
168 struct __attribute__((packed)) {
193 struct __attribute__((packed)) {
208 struct __attribute__((packed)) {
220 struct __attribute__((packed)) {
301 uint32_t sunrise = 8 * 60 * 60;
302 uint32_t sunset = 19 * 60 * 60;
315 uint32_t timestamp = 0;
316 uint16_t interval = 0;
321 uint8_t ibeaconConfigId = 0;
348 uint64_t presence[8];
353 uint8_t locationId = 0;
355 int8_t rssiOffset = 0;
356 union __attribute__((packed)) {
357 struct __attribute__((packed)) {
366 uint16_t timeToLiveMinutes = 0;
373 uint8_t locationId = 0;
375 uint8_t timeToLiveMinutes = 0;
393#define MAX_NUMBER_OF_PRESENCE_PROFILES 8
447 uint32_t lastTimestamp = 0;
452 uint32_t lastTimestamp = 0;
471 uint16_t reserved = 0;
494 : timestamp(timestamp), value(switchValue), state(switchState), source(source) {}
503 uint32_t minStackEnd = 0xFFFFFFFF;
504 uint32_t maxHeapEnd = 0;
505 uint32_t minFree = 0;
506 uint32_t numSbrkFails = 0;
567 if (packet->
type != 0) {
@ 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
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:477
uint8_t type
Definition: cs_Packets.h:478
Definition: cs_Packets.h:502
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
Nonce used for encryption.
Definition: cs_Packets.h:51
Definition: cs_Packets.h:296
uint32_t resetCode
Definition: cs_Packets.h:297
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
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
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