Bluenet  5.7.0
Bluenet, firmware for nRF52 smart home devices
Loading...
Searching...
No Matches
cs_Types.h
Go to the documentation of this file.
1
7#pragma once
8
19
20#include <cstdint>
21#include <type_traits>
22
23#include "cfg/cs_Config.h"
27
28// #include <presence/cs_PresenceHandler.h>
29
31 State_Base = 0x000,
32 InternalBase = 0x100,
33
34 // we keep internal events categorized so that the test suite
35 // can easily send those while keeping flexibility in ordering this file.
48};
49
59template <typename T>
60constexpr auto to_underlying_type(T e) noexcept -> std::enable_if_t<std::is_enum<T>::value, std::underlying_type_t<T>> {
61 return static_cast<std::underlying_type_t<T>>(e);
62}
63
79enum class CS_TYPE : uint16_t {
81 State_Base, // Record keys should be in the range 0x0001 - 0xBFFF. The value 0x0000 is reserved by the
82 // system. The values from 0xC000 to 0xFFFF are reserved for use by the Peer Manager module and
83 // can only be used in applications that do not include Peer Manager.
84 // CONFIG_DEVICE_TYPE = 1,
85 // CONFIG_ROOM = 2,
86 // CONFIG_FLOOR = 3,
87 // CONFIG_NEARBY_TIMEOUT = 4,
93 // CONFIG_WIFI_SETTINGS = 10,
94 CONFIG_TX_POWER = 11,
95 CONFIG_ADV_INTERVAL = 12, // Advertising interval in units of 0.625ms.
96 // CONFIG_PASSKEY = 13,
97 // CONFIG_MIN_ENV_TEMP = 14,
98 // CONFIG_MAX_ENV_TEMP = 15,
99 CONFIG_SCAN_DURATION = 16, // Deprecate
100 // CONFIG_SCAN_SEND_DELAY = 17,
101 CONFIG_SCAN_BREAK_DURATION = 18, // Deprecate
104 // CONFIG_SCAN_FILTER = 21,
105 // CONFIG_SCAN_FILTER_SEND_FRACTION = 22,
106 CONFIG_CURRENT_LIMIT = 23, // Not implemented yet, but something we want in the future.
111 // CONFIG_CONT_POWER_SAMPLER_ENABLED = 28,
112 // CONFIG_TRACKER_ENABLED = 29,
113 // CONFIG_ADC_BURST_SAMPLE_RATE = 30,
114 // CONFIG_POWER_SAMPLE_BURST_INTERVAL = 31,
115 // CONFIG_POWER_SAMPLE_CONT_INTERVAL = 32,
116 CONFIG_SPHERE_ID = 33,
118 CONFIG_KEY_ADMIN = 35,
120 CONFIG_KEY_BASIC = 37,
121 // CONFIG_DEFAULT_ON = 38,
122 CONFIG_SCAN_INTERVAL_625US = 39, // Scan interval in 625 µs units.
123 CONFIG_SCAN_WINDOW_625US = 40, // Scan window in 625 µs units.
131 // CONFIG_POWER_ZERO_AVG_WINDOW = 48,
132 // CONFIG_MESH_ACCESS_ADDRESS = 49,
141 // CONFIG_MESH_CHANNEL = 58,
143 CONFIG_NAME = 60,
155
157 STATE_SWITCH_STATE = 129,
158 STATE_ACCUMULATED_ENERGY = 130, // Energy used in μJ.
159 STATE_POWER_USAGE = 131, // Power usage in mW.
160 // STATE_TRACKED_DEVICES,
161 // STATE_SCHEDULE = 133,
163 STATE_TEMPERATURE = 135,
165 // STATE_LEARNED_SWITCHES,
166 STATE_ERRORS = 139,
167 // STATE_ERROR_OVER_CURRENT,
168 // STATE_ERROR_OVER_CURRENT_DIMMER,
169 // STATE_ERROR_CHIP_TEMP,
170 // STATE_ERROR_DIMMER_TEMP,
171 // STATE_IGNORE_BITMASK,
172 // STATE_IGNORE_ALL,
173 // STATE_IGNORE_LOCATION,
174 // STATE_ERROR_DIMMER_ON_FAILURE,
175 // STATE_ERROR_DIMMER_OFF_FAILURE,
176 STATE_SUN_TIME = 149,
182 STATE_MICROAPP = 155,
184 STATE_HUB_MODE = 157,
185 STATE_UART_KEY = 158,
186
193
196
199
200 /*
201 * Internal commands and events.
202 * Start at Internal_Base.
203 */
204
205 // InternalBaseBluetooth
207 InternalBaseBluetooth, // Sent when a background advertisement has been validated and parsed.
208 EVT_DEVICE_SCANNED, // Device was scanned.
209 EVT_ADV_BACKGROUND, // Background advertisement has been received.
210 EVT_ADV_BACKGROUND_PARSED_V1, // Sent when a v1 background advertisement has been received.
211 EVT_ADVERTISEMENT_UPDATED, // Advertisement was updated. TODO: advertisement data as payload?
212 EVT_SCAN_STARTED, // Scanner started scanning.
213 EVT_SCAN_STOPPED, // Scanner stopped scanning.
214 EVT_BLE_CONNECT, // Device connected.
215 EVT_BLE_DISCONNECT, // Device disconnected. Payload is connection handle.
216 CMD_ENABLE_ADVERTISEMENT, // Enable/disable advertising.
217
218 // Switch (aggregator)
219 CMD_SWITCH_OFF = InternalBaseSwitch, // Turn switch off.
220 CMD_SWITCH_ON, // Turn switch on.
221 CMD_SWITCH_TOGGLE, // Toggle switch.
222 CMD_SWITCH, // Set switch.
223 CMD_SET_RELAY, // Set the relay state.
224 CMD_SET_DIMMER, // Set the dimmer state.
225 CMD_MULTI_SWITCH, // Handle a multi switch.
226 CMD_LOCK_SWITCH, // Set switch lock.
227 CMD_DIMMING_ALLOWED, // Set allow dimming.
228
229 // Power
231 InternalBasePower, // Dimmer being powered is changed. Payload: true when powered, and ready to be used.
232 EVT_BROWNOUT_IMPENDING, // Brownout is impending (low chip supply voltage).
233
234 // Errors
235 EVT_CURRENT_USAGE_ABOVE_THRESHOLD = InternalBaseErrors, // Current usage goes over the threshold.
236 EVT_CURRENT_USAGE_ABOVE_THRESHOLD_DIMMER, // Current usage goes over the dimmer threshold, while dimmer is on.
237 EVT_DIMMER_ON_FAILURE_DETECTED, // Dimmer leaks current, while it's supposed to be off.
238 EVT_DIMMER_OFF_FAILURE_DETECTED, // Dimmer blocks current, while it's supposed to be on.
239 EVT_CHIP_TEMP_ABOVE_THRESHOLD, // Chip temperature is above threshold.
240 EVT_CHIP_TEMP_OK, // Chip temperature is ok again.
241 EVT_DIMMER_TEMP_ABOVE_THRESHOLD, // Dimmer temperature is above threshold.
242 EVT_DIMMER_TEMP_OK, // Dimmer temperature is ok again.
243 EVT_DIMMER_FORCED_OFF, // Dimmer was forced off.
244 EVT_SWITCH_FORCED_OFF, // Switch (relay and dimmer) was forced off.
245 EVT_RELAY_FORCED_ON, // Relay was forced on.
246
247 // Storage
248 EVT_STORAGE_INITIALIZED = InternalBaseStorage, // Storage is initialized, storage is only usable after this event!
249 EVT_STORAGE_WRITE_DONE, // An item has been written to storage.
250 EVT_STORAGE_REMOVE_DONE, // An item has been invalidated at storage.
251 EVT_STORAGE_REMOVE_ALL_TYPES_WITH_ID_DONE, // All state values with a certain ID have been invalidated at storage.
252 EVT_STORAGE_GC_DONE, // Garbage collection is done, invalidated data is actually removed at this point.
253 EVT_STORAGE_FACTORY_RESET_DONE, // Factory reset of storage is done. /!\ Only to be used by State.
254 EVT_STORAGE_PAGES_ERASED, // All storage pages are completely erased.
255 CMD_FACTORY_RESET, // Perform a factory reset: clear all data.
256 EVT_STATE_FACTORY_RESET_DONE, // Factory reset of state is done.
257 EVT_MESH_FACTORY_RESET_DONE, // Factory reset of mesh storage is done.
258 CMD_STORAGE_GARBAGE_COLLECT, // Start garbage collection of FDS.
259
260 // Logging
261 CMD_ENABLE_LOG_POWER = InternalBaseLogging, // Enable/disable power calculations logging.
262 CMD_ENABLE_LOG_CURRENT, // Enable/disable current samples logging.
263 CMD_ENABLE_LOG_VOLTAGE, // Enable/disable voltage samples logging.
264 CMD_ENABLE_LOG_FILTERED_CURRENT, // Enable/disable filtered current samples logging.
265
266 // ADC config
267 CMD_TOGGLE_ADC_VOLTAGE_VDD_REFERENCE_PIN = InternalBaseADC, // Toggle ADC voltage pin. TODO: pin as payload?
268 CMD_ENABLE_ADC_DIFFERENTIAL_CURRENT, // Toggle differential mode on current pin.
269 CMD_ENABLE_ADC_DIFFERENTIAL_VOLTAGE, // Toggle differential mode on voltage pin.
270 CMD_INC_VOLTAGE_RANGE, // Increase voltage range.
271 CMD_DEC_VOLTAGE_RANGE, // Decrease voltage range.
272 CMD_INC_CURRENT_RANGE, // Increase current range.
273 CMD_DEC_CURRENT_RANGE, // Decrease current range.
274 EVT_ADC_RESTARTED, // ADC has been restarted. Sent before the first buffer is to be processed.
275
276 // Mesh
277 CMD_SEND_MESH_MSG = InternalBaseMesh, // Send a mesh message.
278 CMD_SEND_MESH_MSG_SET_TIME, // Send a set time mesh message.
279 CMD_SEND_MESH_MSG_NOOP, // Send a noop mesh message.
280 CMD_SEND_MESH_MSG_MULTI_SWITCH, // Send a switch mesh message.
281 CMD_SEND_MESH_MSG_PROFILE_LOCATION, // Send a profile location mesh message.
282 CMD_SEND_MESH_MSG_SET_BEHAVIOUR_SETTINGS, // Send a set behaviour settings mesh message.
286 CMD_SEND_MESH_CONTROL_COMMAND, // Send a control command via the mesh. All permission checks must have been done
287 // already!
288 CMD_ENABLE_MESH, // Enable/disable mesh.
289 EVT_MESH_TRACKED_DEVICE_REGISTER, // Mesh received a tracked device to register.
290 EVT_MESH_TRACKED_DEVICE_TOKEN, // Mesh received a tracked device token.
291 EVT_MESH_TRACKED_DEVICE_LIST_SIZE, // Mesh received a tracked device list size.
292 EVT_MESH_SYNC_REQUEST_OUTGOING, // Before an outgoing sync request is broadcasted, this event is fired internally
293 // so that other event handlers can tag on.
294 EVT_MESH_SYNC_REQUEST_INCOMING, // When a sync request is received, this event is fired internally so that each
295 // event handler can individually respond to it.
296 EVT_MESH_SYNC_FAILED, // When syncing is considered to have failed, no more retries.
297 EVT_MESH_EXT_STATE_0, // Mesh received part 0 of the state of a Crownstone.
298 EVT_MESH_EXT_STATE_1, // Mesh received part 1 of the state of a Crownstone.
299 EVT_MESH_PAGES_ERASED, // All mesh storage pages are completely erased.
300 CMD_SEND_MESH_MSG_TRACKED_DEVICE_HEARTBEAT, // Send a tracked device heartbeat mesh message.
301 EVT_MESH_TRACKED_DEVICE_HEARTBEAT, // Mesh received a tracked device heartbeat.
302 EVT_MESH_RSSI_PING, // TODO: remove this type, it's not used.
303 EVT_MESH_RSSI_DATA, // TODO: remove this type, it's not used.
304 EVT_MESH_TIME_SYNC, // A time sync message was received
305 EVT_RECV_MESH_MSG, // A mesh message was received.
306
307 // Behaviour
308 CMD_ADD_BEHAVIOUR = InternalBaseBehaviour, // Add a behaviour.
309 CMD_REPLACE_BEHAVIOUR, // Replace a behaviour.
310 CMD_REMOVE_BEHAVIOUR, // Remove a behaviour.
311 CMD_GET_BEHAVIOUR, // Get a behaviour.
312 CMD_GET_BEHAVIOUR_INDICES, // Get a list of indices of active behaviours.
313 CMD_GET_BEHAVIOUR_DEBUG, // Get info to debug behaviour. Multiple classes will handle this command to fill pieces
314 // of info.
315 CMD_CLEAR_ALL_BEHAVIOUR, // Clear all behaviours in the store, including persisted flash entries.
316 EVT_BEHAVIOURSTORE_MUTATION, // Sent by BehaviourStore, after a change to the stored behaviours.
317 EVT_BEHAVIOUR_OVERRIDDEN, // Informs whether behaviour is overridden by user (in override state).
318
319 // Localisation of devices
320 CMD_REGISTER_TRACKED_DEVICE = InternalBaseLocalisation, // Register a tracked device.
321 CMD_UPDATE_TRACKED_DEVICE, // Update data of a tracked device.
322 EVT_RECEIVED_PROFILE_LOCATION, // Received the location of a profile via mesh or command, or emulated by
323 // cs_TrackedDevices.
324 EVT_PRESENCE_MUTATION, // Presence changed.
325 EVT_STATE_EXTERNAL_STONE, // The state of another stone has been received.
326 CMD_TRACKED_DEVICE_HEARTBEAT, // Set location of a tracked device, with a TTL. This command can be sent instead of
327 // advertisements.
328 EVT_PRESENCE_CHANGE, // The presence has changed. When the first user enters, multiple events will be sent.
329 CMD_GET_PRESENCE, // Get the current presence.
330
331 CMD_UPLOAD_FILTER, // Update data chunk for a filter. See PROTOCOL.md CTRL_CMD_FILTER_UPLOAD
332 CMD_REMOVE_FILTER, // Remove a filter by id. See PROTOCOL.md CTRL_CMD_FILTER_REMOVE
333 CMD_COMMIT_FILTER_CHANGES, // Confirm all recent changes to filters. See PROTOCOL.md
334 // CTRL_CMD_FILTER_COMMIT
335 CMD_GET_FILTER_SUMMARIES, // Obtain status summary for each filter in RAM. See PROTOCOL.md
336 // CTRL_CMD_FILTER_GET_SUMMARIES
337 EVT_FILTERS_UPDATED, // Sent when the asset filter master version was updated (after a commit command was
338 // accepted).
339 EVT_FILTER_MODIFICATION, // Sent when filter modification has started (payload is true) or stopped (payload is
340 // false).
341
342 EVT_ASSET_ACCEPTED, // Sent by AssetFiltering when an incoming scan is accepted by a filter.
343
344 // System
345 CMD_RESET_DELAYED = InternalBaseSystem, // Reboot scheduled with a (short) delay.
346 EVT_GOING_TO_DFU, // The system will reboot to DFU mode soon.
347
348 CMD_SET_TIME, // Set the time.
349 CMD_SET_IBEACON_CONFIG_ID, // Set which ibeacon config id to use for advertising.
350 EVT_TIME_SET, // Time is set or changed. WARNING: this event is only sent on set time command. Payload: previous
351 // posix time
352 EVT_TICK, // Sent about every TICK_INTERVAL_MS ms.
353
354 CMD_CONTROL_CMD, // Handle a control command.
355 EVT_SESSION_DATA_SET, // Session data and setup key are generated. Data pointer has to point to memory that stays
356 // valid!
357
358 CMD_GET_ADC_RESTARTS, // Get number of ADC restarts.
359 CMD_GET_SWITCH_HISTORY, // Get the switch command history.
360 CMD_GET_POWER_SAMPLES, // Get power samples of interesting events.
361 CMD_GET_SCHEDULER_MIN_FREE, // Get minimum queue space left of app scheduler observed so far.
362 CMD_GET_RESET_REASON, // Get last reset reason. Contents of POWER->RESETREAS as it was on boot.
363 CMD_GET_GPREGRET, // Get the Nth general purpose retention register as it was on boot.
364 CMD_GET_ADC_CHANNEL_SWAPS, // Get number of detected ADC channel swaps.
365 CMD_GET_RAM_STATS, // Get RAM statistics.
366
367 CMD_MICROAPP_GET_INFO, // Microapp control command.
368 CMD_MICROAPP_UPLOAD, // Microapp control command. The data pointer is assume to remain valid until write is
369 // completed!
370 CMD_MICROAPP_VALIDATE, // Microapp control command.
371 CMD_MICROAPP_REMOVE, // Microapp control command.
372 CMD_MICROAPP_ENABLE, // Microapp control command.
373 CMD_MICROAPP_DISABLE, // Microapp control command.
374 CMD_MICROAPP_MESSAGE, // Microapp control command.
375 CMD_MICROAPP_ADVERTISE, // A microapp wants to advertise something.
376 EVT_MICROAPP_FACTORY_RESET_DONE, // All microapps have been erased.
377
378 CMD_BLE_CENTRAL_CONNECT, // Connect to a device. See BleCentral::connect().
379 CMD_BLE_CENTRAL_DISCONNECT, // Disconnect from device. See BleCentral::disconnect().
380 CMD_BLE_CENTRAL_DISCOVER, // Discover services. See BleCentral::discoverServices().
381 CMD_BLE_CENTRAL_READ, // Read a characteristic. See BleCentral::read().
382 CMD_BLE_CENTRAL_WRITE, // Write a characteristic. See BleCentral::write().
383
384 EVT_BLE_CENTRAL_CONNECT_CLEARANCE_REQUEST, // Request for an outgoing connection, handlers should set the return
385 // code. Will always followed by EVT_BLE_CENTRAL_CONNECT_RESULT.
386 EVT_BLE_CENTRAL_CONNECT_CLEARANCE_REPLY, // If the return code of the request was WAIT_FOR_SUCCESS, this event is
387 // what will be waited for.
388 EVT_BLE_CENTRAL_CONNECT_RESULT, // Result of a connection attempt.
389 EVT_BLE_CENTRAL_DISCONNECTED, // Outgoing connection was terminated. By request, or due to some error.
390 EVT_BLE_CENTRAL_DISCOVERY, // A single service or characteristic is discovered.
391 EVT_BLE_CENTRAL_DISCOVERY_RESULT, // Result of service discovery.
392 EVT_BLE_CENTRAL_READ_RESULT, // Result of a read.
393 EVT_BLE_CENTRAL_WRITE_RESULT, // Result of a write.
394 EVT_BLE_CENTRAL_NOTIFICATION, // A notification has been received.
395
396 CMD_CS_CENTRAL_CONNECT, // Connect to a device. See CrownstoneCentral::connect().
397 CMD_CS_CENTRAL_DISCONNECT, // Disconnect from device. See CrownstoneCentral::disconnect().
398 CMD_CS_CENTRAL_WRITE, // Write a control command. See CrownstoneCentral::write().
399 CMD_CS_CENTRAL_GET_WRITE_BUF, // Request the write buffer. See CrownstoneCentral::requestWriteBuffer(). The
400 // result.buf will be set to the write buffer.
401
405
406 CMD_MESH_TOPO_GET_MAC, // Get the MAC address of a given stone ID.
407 EVT_MESH_TOPO_MAC_RESULT, // The resulting MAC address.
408 CMD_MESH_TOPO_RESET, // Reset the stored mesh topology.
409 CMD_MESH_TOPO_GET_RSSI, // Get the RSSI to a stoneId. The RSSI is set in the result.
410
411 EVT_TWI_INIT, // TWI initialisation.
412 EVT_TWI_WRITE, // TWI write.
413 EVT_TWI_READ, // TWI read (request).
414 EVT_TWI_UPDATE, // TWI update from TWI module to listeners (not implemented yet).
415
416 EVT_GPIO_INIT, // GPIO, init pin (eventually event handler)
417 EVT_GPIO_WRITE, // GPIO, write value
418 EVT_GPIO_READ, // GPIO, read value (directly)
419 EVT_GPIO_UPDATE, // GPIO, update other modules with read values
420
421 CMD_RESOLVE_ASYNC_CONTROL_COMMAND, // When a control command returned WAIT_FOR_SUCCESS, this event finalizes that
422 // control command.
423 CMD_SEND_ASYNC_RESULT_TO_BLE, // Sends the async result to the user via BLE.
424
425 CMD_TEST_SET_TIME = InternalBaseTests, // Set time for testing.
426
427 EVT_GENERIC_TEST = 0xFFFF, // Can be used by the python test python lib for ad hoc tests during development.
428};
429
430CS_TYPE toCsType(uint16_t type);
431
432/*---------------------------------------------------------------------------------------------------------------------
433 *
434 * Custom structs
435 *
436 *-------------------------------------------------------------------------------------------------------------------*/
437
438// TODO: these definitions (also the structs) should be moved to somewhere else.
439
440enum class OperationMode {
442 OPERATION_MODE_DFU = 0x01,
446};
447
451};
452
453struct __attribute__((packed)) reset_delayed_t {
454 uint8_t resetCode; // ResetCode
455 uint16_t delayMs;
456};
457
458typedef uint16_t cs_file_id_t;
459
460static const cs_file_id_t FILE_DO_NOT_USE = 0x0000;
461static const cs_file_id_t FILE_KEEP_FOREVER = 0x0001;
462static const cs_file_id_t FILE_CONFIGURATION = 0x0003;
463
464struct __attribute__((packed)) cs_type_and_id_t {
467};
468
469/*---------------------------------------------------------------------------------------------------------------------
470 *
471 * Types
472 *
473 *-------------------------------------------------------------------------------------------------------------------*/
474
475#ifndef TYPIFY
476#define TYPIFY(NAME) NAME##_TYPE
477
481#define CS_TYPE_CAST(EVT_NAME, PTR) reinterpret_cast<TYPIFY(EVT_NAME)*>(PTR)
482#endif
483typedef uint16_t TYPIFY(CONFIG_ADV_INTERVAL);
484typedef uint16_t TYPIFY(CONFIG_BOOT_DELAY);
485typedef uint8_t TYPIFY(CONFIG_SPHERE_ID);
486typedef uint8_t TYPIFY(CONFIG_CROWNSTONE_ID);
487typedef float TYPIFY(CONFIG_CURRENT_MULTIPLIER);
488typedef int32_t TYPIFY(CONFIG_CURRENT_ADC_ZERO);
491typedef uint16_t TYPIFY(CONFIG_IBEACON_MAJOR);
492typedef uint16_t TYPIFY(CONFIG_IBEACON_MINOR);
494typedef int8_t TYPIFY(CONFIG_IBEACON_TXPOWER);
495typedef int8_t TYPIFY(CONFIG_LOW_TX_POWER);
496typedef int8_t TYPIFY(CONFIG_MAX_CHIP_TEMP);
498typedef int32_t TYPIFY(CONFIG_POWER_ZERO);
499typedef uint32_t TYPIFY(CONFIG_PWM_PERIOD);
503typedef uint16_t TYPIFY(CONFIG_RELAY_HIGH_DURATION);
505typedef uint16_t TYPIFY(CONFIG_SCAN_BREAK_DURATION);
506typedef uint16_t TYPIFY(CONFIG_SCAN_DURATION);
507typedef uint16_t TYPIFY(CONFIG_SCAN_INTERVAL_625US);
508typedef uint16_t TYPIFY(CONFIG_SCAN_WINDOW_625US);
518typedef int8_t TYPIFY(CONFIG_TX_POWER);
519typedef uint8_t TYPIFY(CONFIG_UART_ENABLED); // TODO: serial_enable_t
520typedef float TYPIFY(CONFIG_VOLTAGE_MULTIPLIER);
521typedef int32_t TYPIFY(CONFIG_VOLTAGE_ADC_ZERO);
522
523typedef int64_t TYPIFY(STATE_ACCUMULATED_ENERGY);
525typedef uint8_t TYPIFY(STATE_FACTORY_RESET);
526typedef uint8_t TYPIFY(STATE_OPERATION_MODE);
527typedef int32_t TYPIFY(STATE_POWER_USAGE);
528typedef uint16_t TYPIFY(STATE_RESET_COUNTER);
530typedef int8_t TYPIFY(STATE_TEMPERATURE);
532typedef void TYPIFY(STATE_BEHAVIOUR_RULE);
533typedef void TYPIFY(STATE_TWILIGHT_RULE);
536typedef uint32_t TYPIFY(STATE_BEHAVIOUR_MASTER_HASH);
543typedef uint8_t TYPIFY(STATE_SOFT_ON_SPEED);
544typedef uint8_t TYPIFY(STATE_DEFAULT_DIM_VALUE);
545typedef uint8_t TYPIFY(STATE_HUB_MODE);
547
548typedef void TYPIFY(EVT_ADC_RESTARTED);
559typedef uint16_t TYPIFY(EVT_BLE_DISCONNECT);
576typedef void TYPIFY(EVT_BROWNOUT_IMPENDING);
578typedef void TYPIFY(EVT_CHIP_TEMP_OK);
582typedef void TYPIFY(CMD_DEC_CURRENT_RANGE);
583typedef void TYPIFY(CMD_DEC_VOLTAGE_RANGE);
595typedef void TYPIFY(CMD_INC_VOLTAGE_RANGE);
596typedef void TYPIFY(CMD_INC_CURRENT_RANGE);
606typedef void TYPIFY(CMD_SWITCH_OFF);
607typedef void TYPIFY(CMD_SWITCH_ON);
608typedef void TYPIFY(CMD_SWITCH_TOGGLE);
615typedef uint32_t TYPIFY(CMD_SET_TIME);
616typedef void TYPIFY(CMD_FACTORY_RESET);
618typedef void TYPIFY(EVT_DIMMER_FORCED_OFF);
621typedef void TYPIFY(EVT_DIMMER_TEMP_OK);
622typedef void TYPIFY(EVT_RELAY_FORCED_ON);
624typedef void TYPIFY(EVT_SCAN_STARTED);
625typedef void TYPIFY(EVT_SCAN_STOPPED);
629typedef void TYPIFY(EVT_STORAGE_INITIALIZED);
633typedef void TYPIFY(EVT_STORAGE_GC_DONE);
635typedef void TYPIFY(EVT_STORAGE_PAGES_ERASED);
638typedef void TYPIFY(EVT_SWITCH_FORCED_OFF);
639typedef bool TYPIFY(CMD_LOCK_SWITCH);
640typedef uint32_t TYPIFY(EVT_TICK);
641typedef uint32_t TYPIFY(EVT_TIME_SET);
643
644// Behaviour
646typedef std::array<uint8_t, sizeof(uint8_t) + WireFormat::size<SwitchBehaviour>()> TYPIFY(CMD_REPLACE_BEHAVIOUR);
647typedef uint8_t TYPIFY(CMD_REMOVE_BEHAVIOUR); // index
648typedef uint8_t TYPIFY(CMD_GET_BEHAVIOUR); // index
650typedef void TYPIFY(CMD_GET_BEHAVIOUR_DEBUG);
653
654// Localisation
658typedef uint8_t /* PresenceHandler::MutationType */ TYPIFY(EVT_PRESENCE_MUTATION);
659typedef presence_change_t TYPIFY(EVT_PRESENCE_CHANGE);
660typedef void TYPIFY(CMD_GET_PRESENCE);
662
666typedef void TYPIFY(CMD_GET_FILTER_SUMMARIES);
667typedef void TYPIFY(EVT_FILTERS_UPDATED);
668typedef bool TYPIFY(EVT_FILTER_MODIFICATION);
670
671typedef bool TYPIFY(CMD_SET_RELAY);
672typedef uint8_t TYPIFY(CMD_SET_DIMMER); // interpret as intensity value, not combined with relay state.
673typedef void TYPIFY(EVT_GOING_TO_DFU);
674
675// Mesh
678typedef void TYPIFY(EVT_MESH_SYNC_FAILED);
679typedef void TYPIFY(EVT_MESH_PAGES_ERASED);
682typedef uint32_t TYPIFY(CMD_SEND_MESH_MSG_SET_TIME);
684typedef void TYPIFY(CMD_SEND_MESH_MSG_NOOP);
685typedef void TYPIFY(CMD_GET_ADC_RESTARTS);
686typedef void TYPIFY(CMD_GET_SWITCH_HISTORY);
689typedef void TYPIFY(CMD_GET_RESET_REASON);
690typedef uint8_t TYPIFY(CMD_GET_GPREGRET);
692typedef void TYPIFY(CMD_GET_RAM_STATS);
693typedef void TYPIFY(CMD_MICROAPP_GET_INFO);
702typedef uint32_t TYPIFY(CMD_TEST_SET_TIME);
709typedef void TYPIFY(CMD_MESH_TOPO_RESET);
711
712// TWI / I2C module
716typedef uint8_t TYPIFY(EVT_TWI_UPDATE);
717
722
725
732
736bool hasMultipleIds(CS_TYPE const& type);
737
742
747
Definition: cs_TrackableEvent.h:12
Describes a recent change event of the behaviour store.
Definition: cs_BehaviourMutation.h:14
Definition: cs_MeshMsgEvent.h:71
std::array< uint8_t, WireFormat::size< Behaviour >()+WireFormat::size< PresenceCondition >()> SerializedDataType
Definition: cs_SwitchBehaviour.h:31
EncryptionAccessLevel
Packets (structs) that are used over the air, over uart, or stored in flash.
Definition: cs_Packets.h:36
uint32_t cs_mesh_seq_number_t
Definition: cs_Packets.h:419
uint16_t size16_t
Definition: cs_Typedefs.h:25
uint8_t cs_state_id_t
Definition: cs_Typedefs.h:28
uint8_t stone_id_t
Definition: cs_Typedefs.h:23
uint16_t cs_ret_code_t
Definition: cs_Typedefs.h:21
uint8_t BOOL
Boolean with fixed size.
Definition: cs_Typedefs.h:27
EncryptionAccessLevel getUserAccessLevelGet(CS_TYPE const &type)
Gives the required access level to get a state type.
ResetCode
Definition: cs_Types.h:448
@ CS_RESET_CODE_SOFT_RESET
Definition: cs_Types.h:449
@ CS_RESET_CODE_GO_TO_DFU_MODE
Definition: cs_Types.h:450
OperationMode
Definition: cs_Types.h:440
@ OPERATION_MODE_FACTORY_RESET
@ OPERATION_MODE_UNINITIALIZED
bool hasMultipleIds(CS_TYPE const &type)
Check if type can have multiple IDs.
size16_t TypeSize(CS_TYPE const &type)
The size of a particular default value.
static const cs_file_id_t FILE_DO_NOT_USE
Definition: cs_Types.h:460
#define TYPIFY(NAME)
Definition: cs_Types.h:476
bool removeOnFactoryReset(CS_TYPE const &type, cs_state_id_t id)
Check if type should be removed on factory reset.
static const cs_file_id_t FILE_CONFIGURATION
Definition: cs_Types.h:462
EncryptionAccessLevel getUserAccessLevelSet(CS_TYPE const &type)
Gives the required access level to set a state type.
constexpr auto to_underlying_type(T e) noexcept -> std::enable_if_t< std::is_enum< T >::value, std::underlying_type_t< T > >
Cast to underlying type.
Definition: cs_Types.h:60
CS_TYPE
Types:
Definition: cs_Types.h:79
@ CONFIG_KEY_LOCALIZATION
@ EVT_DIMMER_OFF_FAILURE_DETECTED
@ EVT_FILTER_MODIFICATION
@ STATE_ASSET_FILTER_128
@ EVT_MESH_TOPO_MAC_RESULT
@ CMD_MESH_TOPO_GET_MAC
@ EVT_STORAGE_PAGES_ERASED
@ STATE_TWILIGHT_RULE
@ EVT_RECV_MESH_MSG
@ CMD_GET_ADC_RESTARTS
@ CMD_MESH_TOPO_RESET
@ CONFIG_DIMMING_ALLOWED
@ CMD_MICROAPP_ADVERTISE
@ STATE_ACCUMULATED_ENERGY
@ STATE_POWER_USAGE
@ CMD_DEC_VOLTAGE_RANGE
@ CMD_MICROAPP_GET_INFO
@ EVT_GPIO_READ
@ EVT_BLE_CENTRAL_CONNECT_CLEARANCE_REQUEST
@ STATE_SWITCHCRAFT_DOUBLE_TAP_ENABLED
@ CMD_MULTI_SWITCH
@ EVT_MESH_TRACKED_DEVICE_TOKEN
@ STATE_ASSET_FILTERS_VERSION
@ EVT_GPIO_INIT
@ CMD_DEC_CURRENT_RANGE
@ EVT_TWI_READ
@ EVT_BLE_CONNECT
@ STATE_ERRORS
@ EVT_DIMMER_POWERED
@ CMD_GET_PRESENCE
@ CONFIG_PWM_TEMP_VOLTAGE_THRESHOLD_UP
@ CONFIG_START_DIMMER_ON_ZERO_CROSSING
@ CONFIG_BOOT_DELAY
@ EVT_CURRENT_USAGE_ABOVE_THRESHOLD_DIMMER
@ CMD_MESH_TOPO_GET_RSSI
@ EVT_STORAGE_REMOVE_DONE
@ CMD_GET_RESET_REASON
@ CONFIG_SOFT_FUSE_CURRENT_THRESHOLD_DIMMER
@ EVT_MESH_TRACKED_DEVICE_REGISTER
@ EVT_DIMMER_FORCED_OFF
@ CMD_SET_TIME
@ CMD_GET_POWER_SAMPLES
@ CMD_ENABLE_ADVERTISEMENT
@ EVT_RELAY_FORCED_ON
@ EVT_MESH_SYNC_REQUEST_OUTGOING
@ STATE_MESH_IV_INDEX
@ CONFIG_MESH_DEVICE_KEY
@ EVT_MESH_PAGES_ERASED
@ EVT_MESH_SYNC_REQUEST_INCOMING
@ EVT_MESH_RSSI_DATA
@ CMD_REMOVE_BEHAVIOUR
@ CMD_SEND_MESH_MSG_PROFILE_LOCATION
@ CONFIG_CURRENT_ADC_ZERO
@ EVT_CHIP_TEMP_OK
@ CMD_SEND_MESH_MSG
@ EVT_DIMMER_TEMP_OK
@ EVT_DIMMER_TEMP_ABOVE_THRESHOLD
@ CONFIG_VOLTAGE_ADC_ZERO
@ CMD_TRACKED_DEVICE_HEARTBEAT
@ CONFIG_SCAN_INTERVAL_625US
@ EVT_STORAGE_REMOVE_ALL_TYPES_WITH_ID_DONE
@ CMD_UPDATE_TRACKED_DEVICE
@ EVT_BEHAVIOUR_OVERRIDDEN
@ STATE_EXTENDED_BEHAVIOUR_RULE
@ CONFIG_IBEACON_MINOR
@ EVT_GOING_TO_DFU
@ CONFIG_TAP_TO_TOGGLE_RSSI_THRESHOLD_OFFSET
@ EVT_ASSET_ACCEPTED
@ EVT_MESH_EXT_STATE_1
@ CMD_RESET_DELAYED
@ EVT_PRESENCE_CHANGE
@ CMD_COMMIT_FILTER_CHANGES
@ CMD_SET_RELAY
@ EVT_STORAGE_INITIALIZED
@ CONFIG_TAP_TO_TOGGLE_ENABLED
@ STATE_HUB_MODE
@ CONFIG_MESH_ENABLED
@ STATE_BEHAVIOUR_RULE
@ CMD_SEND_MESH_MSG_TRACKED_DEVICE_HEARTBEAT
@ EVT_CS_CENTRAL_READ_RESULT
@ EVT_MESH_TIME_SYNC
@ CONFIG_SCANNER_ENABLED
@ EVT_MESH_RSSI_PING
@ CONFIG_KEY_SERVICE_DATA
@ CMD_REGISTER_TRACKED_DEVICE
@ CONFIG_CROWNSTONE_ID
@ STATE_MESH_SEQ_NUMBER_V5
@ CMD_TOGGLE_ADC_VOLTAGE_VDD_REFERENCE_PIN
@ EVT_ADV_BACKGROUND
@ EVT_DEVICE_SCANNED
@ CONFIG_SWITCHCRAFT_ENABLED
@ CMD_SEND_MESH_MSG_TRACKED_DEVICE_LIST_SIZE
@ CMD_GET_BEHAVIOUR_DEBUG
@ CMD_BLE_CENTRAL_DISCONNECT
@ STATE_ASSET_FILTER_32
@ CMD_SWITCH_OFF
@ EVT_ADV_BACKGROUND_PARSED
@ CMD_BLE_CENTRAL_DISCOVER
@ CONFIG_SCAN_WINDOW_625US
@ EVT_DIMMER_ON_FAILURE_DETECTED
@ CMD_UPLOAD_FILTER
@ CMD_SEND_MESH_MSG_MULTI_SWITCH
@ EVT_CS_CENTRAL_WRITE_RESULT
@ CONFIG_VOLTAGE_MULTIPLIER
@ CONFIG_SPHERE_ID
@ CMD_GET_FILTER_SUMMARIES
@ EVT_PRESENCE_MUTATION
@ CONFIG_IBEACON_ENABLED
@ CONFIG_IBEACON_TXPOWER
@ CMD_SWITCH_TOGGLE
@ CMD_STORAGE_GARBAGE_COLLECT
@ CONFIG_CURRENT_MULTIPLIER
@ CMD_ADD_BEHAVIOUR
@ EVT_STATE_EXTERNAL_STONE
@ STATE_RESET_COUNTER
@ CONFIG_SWITCH_LOCKED
@ EVT_MICROAPP_FACTORY_RESET_DONE
@ CONFIG_PWM_PERIOD
@ CMD_REPLACE_BEHAVIOUR
@ CMD_TEST_SET_TIME
@ EVT_MESH_EXT_STATE_0
@ EVT_BLE_CENTRAL_NOTIFICATION
@ CMD_SEND_MESH_MSG_TRACKED_DEVICE_TOKEN
@ EVT_BLE_CENTRAL_READ_RESULT
@ EVT_SCAN_STOPPED
@ STATE_FACTORY_RESET
@ CMD_BLE_CENTRAL_READ
@ CONFIG_KEY_ADMIN
@ CMD_GET_RAM_STATS
@ EVT_GENERIC_TEST
@ EVT_STATE_FACTORY_RESET_DONE
@ CMD_CS_CENTRAL_GET_WRITE_BUF
@ EVT_STORAGE_GC_DONE
@ STATE_SWITCH_STATE
@ CMD_GET_SWITCH_HISTORY
@ CONFIG_SCAN_DURATION
@ EVT_BLE_CENTRAL_DISCOVERY
@ CMD_BLE_CENTRAL_CONNECT
@ CMD_ENABLE_LOG_FILTERED_CURRENT
@ CMD_INC_VOLTAGE_RANGE
@ EVT_ADVERTISEMENT_UPDATED
@ EVT_MESH_FACTORY_RESET_DONE
@ CONFIG_PWM_TEMP_VOLTAGE_THRESHOLD_DOWN
@ CONFIG_MESH_APP_KEY
@ EVT_ADV_BACKGROUND_PARSED_V1
@ CMD_MICROAPP_UPLOAD
@ EVT_TWI_UPDATE
@ EVT_ADC_RESTARTED
@ EVT_STORAGE_FACTORY_RESET_DONE
@ EVT_SCAN_STARTED
@ EVT_BEHAVIOURSTORE_MUTATION
@ CONFIG_TX_POWER
@ EVT_TWI_WRITE
@ CONFIG_DO_NOT_USE
@ EVT_BLE_CENTRAL_DISCONNECTED
@ EVT_BLE_CENTRAL_WRITE_RESULT
@ CMD_SEND_MESH_MSG_TRACKED_DEVICE_REGISTER
@ CMD_MICROAPP_DISABLE
@ STATE_SUN_TIME
@ CMD_MICROAPP_MESSAGE
@ CMD_CLEAR_ALL_BEHAVIOUR
@ CMD_REMOVE_FILTER
@ STATE_SOFT_ON_SPEED
@ CMD_ENABLE_LOG_VOLTAGE
@ CMD_SEND_ASYNC_RESULT_TO_BLE
@ STATE_IBEACON_CONFIG_ID
@ CMD_SEND_MESH_MSG_SET_BEHAVIOUR_SETTINGS
@ EVT_STORAGE_WRITE_DONE
@ CONFIG_UART_ENABLED
@ EVT_CHIP_TEMP_ABOVE_THRESHOLD
@ CMD_SWITCH_ON
@ STATE_MICROAPP
@ EVT_GPIO_UPDATE
@ CONFIG_SCAN_BREAK_DURATION
@ STATE_ASSET_FILTER_256
@ CMD_CONTROL_CMD
@ CONFIG_CURRENT_LIMIT
@ CONFIG_IBEACON_UUID
@ CMD_INC_CURRENT_RANGE
@ CMD_GET_BEHAVIOUR
@ CMD_SEND_MESH_MSG_SET_TIME
@ CONFIG_IBEACON_MAJOR
@ EVT_GPIO_WRITE
@ CMD_CS_CENTRAL_CONNECT
@ CMD_SET_IBEACON_CONFIG_ID
@ CMD_SET_DIMMER
@ CMD_MICROAPP_ENABLE
@ STATE_BEHAVIOUR_MASTER_HASH
@ CMD_BLE_CENTRAL_WRITE
@ EVT_RECEIVED_PROFILE_LOCATION
@ CMD_DIMMING_ALLOWED
@ EVT_SESSION_DATA_SET
@ CONFIG_LOW_TX_POWER
@ EVT_MESH_TRACKED_DEVICE_HEARTBEAT
@ STATE_BEHAVIOUR_SETTINGS
@ CONFIG_ADV_INTERVAL
@ CMD_SEND_MESH_CONTROL_COMMAND
@ CONFIG_POWER_ZERO
@ CMD_ENABLE_ADC_DIFFERENTIAL_VOLTAGE
@ EVT_BLE_CENTRAL_CONNECT_RESULT
@ CONFIG_SWITCHCRAFT_THRESHOLD
@ CONFIG_MESH_NET_KEY
@ STATE_OPERATION_MODE
@ STATE_ASSET_FILTER_512
@ EVT_BLE_CENTRAL_DISCOVERY_RESULT
@ EVT_BROWNOUT_IMPENDING
@ EVT_TWI_INIT
@ CONFIG_ENCRYPTION_ENABLED
@ EVT_BLE_DISCONNECT
@ STATE_MESH_SEQ_NUMBER
@ CMD_MICROAPP_REMOVE
@ CMD_GET_SCHEDULER_MIN_FREE
@ EVT_MESH_TRACKED_DEVICE_LIST_SIZE
@ CONFIG_KEY_MEMBER
@ CONFIG_RELAY_HIGH_DURATION
@ CMD_LOCK_SWITCH
@ CMD_GET_GPREGRET
@ CONFIG_SOFT_FUSE_CURRENT_THRESHOLD
@ CMD_RESOLVE_ASYNC_CONTROL_COMMAND
@ CMD_CS_CENTRAL_WRITE
@ STATE_TEMPERATURE
@ EVT_CURRENT_USAGE_ABOVE_THRESHOLD
@ CMD_SEND_MESH_MSG_NOOP
@ CMD_ENABLE_LOG_CURRENT
@ STATE_DEFAULT_DIM_VALUE
@ CMD_ENABLE_MESH
@ EVT_TIME_SET
@ EVT_MESH_SYNC_FAILED
@ CONFIG_MAX_CHIP_TEMP
@ CONFIG_KEY_BASIC
@ STATE_UART_KEY
@ EVT_CS_CENTRAL_CONNECT_RESULT
@ EVT_SWITCH_FORCED_OFF
@ CMD_GET_ADC_CHANNEL_SWAPS
@ CMD_MICROAPP_VALIDATE
@ CMD_GET_BEHAVIOUR_INDICES
@ STATE_MESH_IV_INDEX_V5
@ EVT_BLE_CENTRAL_CONNECT_CLEARANCE_REPLY
@ CMD_CS_CENTRAL_DISCONNECT
@ EVT_FILTERS_UPDATED
@ CMD_ENABLE_LOG_POWER
@ STATE_ASSET_FILTER_64
@ CMD_FACTORY_RESET
@ CMD_ENABLE_ADC_DIFFERENTIAL_CURRENT
CS_TYPE toCsType(uint16_t type)
static const cs_file_id_t FILE_KEEP_FOREVER
Definition: cs_Types.h:461
uint16_t cs_file_id_t
Definition: cs_Types.h:458
TypeBases
Author: Crownstone Team Copyright: Crownstone (https://crownstone.rocks) Date: Apr 23,...
Definition: cs_Types.h:30
@ InternalBaseTests
Definition: cs_Types.h:47
@ InternalBaseLocalisation
Definition: cs_Types.h:45
@ InternalBaseStorage
Definition: cs_Types.h:40
@ InternalBaseSwitch
Definition: cs_Types.h:37
@ InternalBaseBluetooth
Definition: cs_Types.h:36
@ State_Base
Definition: cs_Types.h:31
@ InternalBaseMesh
Definition: cs_Types.h:43
@ InternalBaseLogging
Definition: cs_Types.h:41
@ InternalBasePower
Definition: cs_Types.h:38
@ InternalBaseBehaviour
Definition: cs_Types.h:44
@ InternalBaseSystem
Definition: cs_Types.h:46
@ InternalBaseErrors
Definition: cs_Types.h:39
@ InternalBaseADC
Definition: cs_Types.h:42
@ InternalBase
Definition: cs_Types.h:32
Parsed background advertisement.
Definition: cs_PacketsInternal.h:241
Definition: cs_PacketsInternal.h:249
Unparsed background advertisement.
Definition: cs_PacketsInternal.h:229
Definition: cs_AssetFilterPackets.h:34
Definition: cs_AssetFilterPackets.h:29
Definition: cs_AssetFilterPackets.h:20
Definition: cs_AssetFilterPackets.h:102
Definition: cs_BleCentralPackets.h:17
Definition: cs_BleCentralPackets.h:22
Describes a service or characteristic that has been discovered.
Definition: cs_BleCentralPackets.h:41
Definition: cs_BleCentralPackets.h:76
Definition: cs_BleCentralPackets.h:70
Definition: cs_BleCentralPackets.h:27
Definition: cs_BleCentralPackets.h:65
Definition: cs_BleCentralPackets.h:31
Definition: cs_PacketsInternal.h:214
Definition: cs_PacketsInternal.h:140
Definition: cs_PacketsInternal.h:71
Definition: cs_CrownstoneCentralPackets.h:17
Result of writing a control command.
Definition: cs_CrownstoneCentralPackets.h:38
Definition: cs_CrownstoneCentralPackets.h:23
Definition: cs_PacketsInternal.h:414
Definition: cs_PacketsInternal.h:428
Definition: cs_PacketsInternal.h:434
Definition: cs_PacketsInternal.h:422
Same as mesh_opt_iv_index_persist_data_legacy_t.
Definition: cs_Packets.h:413
Same as mesh_opt_iv_index_persist_data_t.
Definition: cs_Packets.h:430
Definition: cs_MeshModelPackets.h:155
Definition: cs_MeshModelPackets.h:161
Definition: cs_MeshModelPackets.h:140
Definition: cs_MeshModelPackets.h:149
Definition: cs_MeshModelPackets.h:114
Definition: cs_MeshModelPackets.h:165
Struct to communicate a mesh message.
Definition: cs_PacketsInternal.h:194
Same as mesh_opt_seqnum_persist_data_t.
Definition: cs_Packets.h:440
Definition: cs_Packets.h:477
Definition: cs_PacketsInternal.h:394
Definition: cs_PacketsInternal.h:407
Definition: cs_PacketsInternal.h:400
Definition: cs_Types.h:464
cs_state_id_t id
Definition: cs_Types.h:466
CS_TYPE type
Definition: cs_Types.h:465
Definition: cs_Typedefs.h:45
Packet to change ibeacon config ID.
Definition: cs_Packets.h:314
A single multi switch command.
Definition: cs_PacketsInternal.h:124
A single multi switch packet, with target id.
Definition: cs_PacketsInternal.h:131
Definition: cs_PacketsInternal.h:271
Definition: cs_PacketsInternal.h:278
Mesh control command packet.
Definition: cs_PacketsInternal.h:151
Definition: cs_Packets.h:400
Definition: cs_Packets.h:405
Definition: cs_PacketsInternal.h:389
Definition: cs_PacketsInternal.h:372
Definition: cs_MicroappPackets.h:67
Definition: cs_PacketsInternal.h:384
State of tests of a microapp, also stored in flash.
Definition: cs_MicroappPackets.h:108
Definition: cs_PacketsInternal.h:379
Definition: cs_PacketsInternal.h:264
Definition: cs_Types.h:453
uint8_t resetCode
Definition: cs_Types.h:454
uint16_t delayMs
Definition: cs_Types.h:455
Scanned device.
Definition: cs_PacketsInternal.h:107
Definition: cs_Packets.h:71
Definition: cs_Packets.h:320
Struct to communicate received state of other stones.
Definition: cs_PacketsInternal.h:210
Definition: cs_Packets.h:300
event sent over the internal event bus upon reception of new mesh time stamp msg.
Definition: cs_TimeSyncMessage.h:26
Behaviour settings.
Definition: cs_Packets.h:207
State errors: collection of errors that influence the switch behaviour.
Definition: cs_Packets.h:192
Switch state: combination of relay and dimmer state.
Definition: cs_Packets.h:219