Bluenet  5.7.0
Bluenet, firmware for nRF52 smart home devices
Loading...
Searching...
No Matches
cs_UartOpcodes.h
Go to the documentation of this file.
1
8#pragma once
9
20 UART_OPCODE_RX_GET_MAC = 4, // Get MAC address of this Crownstone
22 UART_OPCODE_RX_HUB_DATA_REPLY = 11, // Payload starts with uart_msg_hub_data_reply_header_t.
23
25 UART_OPCODE_RX_ENABLE_ADVERTISEMENT = 50000, // Enable advertising (payload: bool enable)
26 UART_OPCODE_RX_ENABLE_MESH = 50001, // Enable mesh (payload: bool enable)
27 UART_OPCODE_RX_GET_ID = 50002, // Get ID of this Crownstone
28
29 // UART_OPCODE_RX_ADC_CONFIG_GET = 50100, // Get the adc config
30 // UART_OPCODE_RX_ADC_CONFIG_SET = 50101, // Set an adc channel config (payload:
31 // uart_msg_adc_channel_config_t) UART_OPCODE_RX_ADC_CONFIG_SET_RANGE = 50102, // Set range of given
32 // channel (payload: channel, range)
33 UART_OPCODE_RX_ADC_CONFIG_INC_RANGE_CURRENT = 50103, // Increase the range on the current channel
34 UART_OPCODE_RX_ADC_CONFIG_DEC_RANGE_CURRENT = 50104, // Decrease the range on the current channel
35 UART_OPCODE_RX_ADC_CONFIG_INC_RANGE_VOLTAGE = 50105, // Increase the range on the voltage channel
36 UART_OPCODE_RX_ADC_CONFIG_DEC_RANGE_VOLTAGE = 50106, // Decrease the range on the voltage channel
38 50108, // Enable differential mode on current channel (payload: bool enable)
40 50109, // Enable differential mode on voltage channel (payload: bool enable)
41 UART_OPCODE_RX_ADC_CONFIG_VOLTAGE_PIN = 50110, // Change the pin used on voltage channel (payload: enum of pins)
42
43 UART_OPCODE_RX_POWER_LOG_CURRENT = 50200, // Enable writing current samples (payload: bool enable)
44 UART_OPCODE_RX_POWER_LOG_VOLTAGE = 50201, // Enable writing voltage samples (payload: bool enable)
46 50202, // Enable writing filtered current samples (payload: bool enable)
47 // UART_OPCODE_RX_POWER_LOG_FILTERED_VOLTAGE = 50203, // Enable writing filtered voltage samples (payload:
48 // bool enable)
49 UART_OPCODE_RX_POWER_LOG_POWER = 50204, // Enable writing calculated power (payload: bool enable)
50
51 UART_OPCODE_RX_INJECT_EVENT = 60000, // Dispatch any event. Payload: CS_TYPE + event data structure.
52};
53
64 UART_OPCODE_TX_MAC = 4, // MAC address (payload: mac address (6B))
65 UART_OPCODE_TX_CONTROL_RESULT = 10, // The result of the control command, payload: result_packet_header_t + data.
67
70 9900, // Replied on error, the command probably has a wrong format, or is too large.
71 UART_OPCODE_TX_ERR_REPLY_STATUS = 9901, // Replied on error, the command probably should have been encrypted.
72 UART_OPCODE_TX_ERR_REPLY_SESSION_NONCE_MISSING = 9902, // Replied when RX session nonce is missing.
73 UART_OPCODE_TX_ERR_REPLY_DECRYPTION_FAILED = 9903, // Replied when decryption failed due to missing or wrong key.
74
76 UART_OPCODE_TX_BLE_MSG = 10000, // Sent by command (CMD_UART_MSG), payload: buffer.
77 UART_OPCODE_TX_SESSION_NONCE_MISSING = 10001, // Sent when TX session nonce is missing.
78 UART_OPCODE_TX_SERVICE_DATA = 10002, // Sent when the service data is updated (payload: service_data_t)
79 // UART_OPCODE_TX_DECRYPTION_FAILED = 10003, // Sent when decryption failed due to missing or wrong
80 // key.
81 UART_OPCODE_TX_PRESENCE_CHANGE = 10004, // Sent when the presence has changed, payload: presence_change_t. When the
82 // first user enters, multiple msgs will be sent.
83 UART_OPCODE_TX_FACTORY_RESET = 10005, // Sent when a factory reset is going to be performed.
84 UART_OPCODE_TX_BOOTED = 10006, // Sent when this crownstone just booted.
85 UART_OPCODE_TX_HUB_DATA = 10007, // Sent by command (CTRL_CMD_HUB_DATA), payload: buffer.
86 UART_OPCODE_TX_MICROAPP_DATA = 10008, // Sent by microapp, payload: TODO
87
88 UART_OPCODE_TX_MESH_STATE = 10102, // Received state of external stone, payload: service_data_encrypted_t
90 10103, // Received part of state of external stone, payload: cs_mesh_model_msg_state_0_t
92 10104, // Received part of state of external stone, payload: cs_mesh_model_msg_state_1_t
94 10105, // Received the result of a mesh command, payload: uart_msg_mesh_result_packet_header_t + data.
95 UART_OPCODE_TX_MESH_ACK_ALL_RESULT = 10106, // Whether all stone IDs were acked, payload: result_packet_header_t.
96 UART_OPCODE_TX_RSSI_DATA_MESSAGE = 10107, // When MeshTopologyResearch receives an rssi_data_message, it is sent to
97 // host. Payload: RssiDataMessage.
99 10108, // Payload: cs_asset_info_mac_t. Info about an asset a Crownstone on the mesh has forwarded.
100
101 UART_OPCODE_TX_NEIGHBOUR_RSSI = 10111, // Payload: mesh_topology_neighbour_rssi_t
103 10112, // Payload: cs_asset_info_id_t. Info about an asset a Crownstone on the mesh has forwarded.
104
105 UART_OPCODE_TX_LOG = 10200, // Debug logs, payload is in the form: [uart_msg_log_header_t,
106 // [uart_msg_log_arg_header_t, data], [uart_msg_log_arg_header_t, data], ...]
107 UART_OPCODE_TX_LOG_ARRAY = 10201, // Debug logs, payload is in the form: [uart_msg_log_header_t,
108 // [uart_msg_log_arg_header_t, data], [uart_msg_log_arg_header_t, data], ...]
109
111 UART_OPCODE_TX_EVT = 40000, // Send internal events, this protocol may change
112
113 // UART_OPCODE_TX_MESH_STATE_TIME = 40102, // Received time of other crownstone, payload:
114 // cs_mesh_model_msg_time_t
115 UART_OPCODE_TX_MESH_CMD_TIME = 40103, // Received cmd to set time, payload: cs_mesh_model_msg_time_t
117 40110, // Received the location of a profile, payload: cs_mesh_model_msg_profile_location_t.
119 40111, // Received cmd to set behaviour settings, payload: behaviour_settings_t
121 40112, // Received cmd to register a tracked device, payload: cs_mesh_model_msg_device_register_t
123 40113, // Received cmd to set the token of a tracked device, payload: cs_mesh_model_msg_device_token_t
124 UART_OPCODE_TX_MESH_SYNC_REQUEST = 40114, // Received a sync request, payload: cs_mesh_model_msg_sync_request_t
126 40120, // Received heartbeat cmd of a tracked device, payload: cs_mesh_model_msg_device_heartbeat_t
127
129 UART_OPCODE_TX_ADVERTISEMENT_ENABLED = 50000, // Whether advertising is enabled (payload: bool)
130 UART_OPCODE_TX_MESH_ENABLED = 50001, // Whether mesh is enabled (payload: bool)
131 UART_OPCODE_TX_OWN_ID = 50002, // Own id (payload: crownstone_id_t)
132
133 UART_OPCODE_TX_ADC_CONFIG = 50100, // Current adc config (payload: adc_config_t)
135
141
142 UART_OPCODE_TX_TEXT = 60000, // Payload is ascii text.
144};
145
146namespace UartProtocol {
147
152 ENCRYPT_NEVER = 0, // Never encrypt the message.
153 ENCRYPT_IF_ENABLED = 1, // Encrypt the message when encryption is enabled
154 ENCRYPT_OR_FAIL = 2, // Encrypt the message or return an error
155 ENCRYPT_ACCORDING_TO_TYPE = 3, // Encrypt depending on data type (UartOpcodeTx).
156};
157
163constexpr bool mustBeEncryptedRx(UartOpcodeRx opCode) {
164 switch (opCode) {
165 case UartOpcodeRx::UART_OPCODE_RX_HELLO:
166 case UartOpcodeRx::UART_OPCODE_RX_SESSION_NONCE:
167 case UartOpcodeRx::UART_OPCODE_RX_HEARTBEAT: // optional
168 case UartOpcodeRx::UART_OPCODE_RX_STATUS: // optional
169 case UartOpcodeRx::UART_OPCODE_RX_GET_MAC:
170 case UartOpcodeRx::UART_OPCODE_RX_HUB_DATA_REPLY: // optional
171 return false;
172 default:
173 if (opCode >= 50000) {
174 return false;
175 }
176 return true;
177 }
178}
179
185constexpr bool mustBeEncryptedTx(UartOpcodeTx opCode) {
186 switch (opCode) {
187 case UartOpcodeTx::UART_OPCODE_TX_HELLO:
188 case UartOpcodeTx::UART_OPCODE_TX_SESSION_NONCE:
189 case UartOpcodeTx::UART_OPCODE_TX_STATUS:
190 case UartOpcodeTx::UART_OPCODE_TX_MAC:
191 case UartOpcodeTx::UART_OPCODE_TX_ERR_REPLY_PARSING_FAILED:
192 case UartOpcodeTx::UART_OPCODE_TX_ERR_REPLY_STATUS:
193 case UartOpcodeTx::UART_OPCODE_TX_ERR_REPLY_SESSION_NONCE_MISSING:
194 case UartOpcodeTx::UART_OPCODE_TX_ERR_REPLY_DECRYPTION_FAILED:
195 case UartOpcodeTx::UART_OPCODE_TX_SESSION_NONCE_MISSING:
196 case UartOpcodeTx::UART_OPCODE_TX_BOOTED: return false;
197 default:
198 if (opCode >= 50000) {
199 return false;
200 }
201 return true;
202 }
203}
204
205} // namespace UartProtocol
UartOpcodeTx
Send messages over the UART to someone listening.
Definition: cs_UartOpcodes.h:59
@ UART_OPCODE_TX_ADC_CONFIG
Definition: cs_UartOpcodes.h:133
@ UART_OPCODE_TX_POWER_LOG_FILTERED_VOLTAGE
Definition: cs_UartOpcodes.h:139
@ UART_OPCODE_TX_LOG_ARRAY
Definition: cs_UartOpcodes.h:107
@ UART_OPCODE_TX_FACTORY_RESET
Definition: cs_UartOpcodes.h:83
@ UART_OPCODE_TX_MESH_TRACKED_DEVICE_REGISTER
Definition: cs_UartOpcodes.h:120
@ UART_OPCODE_TX_BOOTED
Definition: cs_UartOpcodes.h:84
@ UART_OPCODE_TX_ADVERTISEMENT_ENABLED
Definition: cs_UartOpcodes.h:129
@ UART_OPCODE_TX_NEIGHBOUR_RSSI
Definition: cs_UartOpcodes.h:101
@ UART_OPCODE_TX_HEARTBEAT
Definition: cs_UartOpcodes.h:62
@ UART_OPCODE_TX_PRESENCE_CHANGE
Definition: cs_UartOpcodes.h:81
@ UART_OPCODE_TX_POWER_LOG_POWER
Definition: cs_UartOpcodes.h:140
@ UART_OPCODE_TX_ERR_REPLY_PARSING_FAILED
Definition: cs_UartOpcodes.h:69
@ UART_OPCODE_TX_SERVICE_DATA
Definition: cs_UartOpcodes.h:78
@ UART_OPCODE_TX_SESSION_NONCE_MISSING
Definition: cs_UartOpcodes.h:77
@ UART_OPCODE_TX_MESH_SET_BEHAVIOUR_SETTINGS
Definition: cs_UartOpcodes.h:118
@ UART_OPCODE_TX_SESSION_NONCE
Definition: cs_UartOpcodes.h:61
@ UART_OPCODE_TX_BLE_MSG
Definition: cs_UartOpcodes.h:76
@ UART_OPCODE_TX_MESH_STATE_PART_0
Definition: cs_UartOpcodes.h:89
@ UART_OPCODE_TX_OWN_ID
Definition: cs_UartOpcodes.h:131
@ UART_OPCODE_TX_POWER_LOG_CURRENT
Definition: cs_UartOpcodes.h:136
@ UART_OPCODE_TX_ASSET_INFO_MAC
Definition: cs_UartOpcodes.h:98
@ UART_OPCODE_TX_ERR_REPLY_SESSION_NONCE_MISSING
Definition: cs_UartOpcodes.h:72
@ UART_OPCODE_TX_MESH_ACK_ALL_RESULT
Definition: cs_UartOpcodes.h:95
@ UART_OPCODE_TX_ADC_RESTART
Definition: cs_UartOpcodes.h:134
@ UART_OPCODE_TX_POWER_LOG_VOLTAGE
Definition: cs_UartOpcodes.h:137
@ UART_OPCODE_TX_MESH_CMD_TIME
Definition: cs_UartOpcodes.h:115
@ UART_OPCODE_TX_ASSET_INFO_ID
Definition: cs_UartOpcodes.h:102
@ UART_OPCODE_TX_ERR_REPLY_STATUS
Definition: cs_UartOpcodes.h:71
@ UART_OPCODE_TX_MICROAPP_DATA
Definition: cs_UartOpcodes.h:86
@ UART_OPCODE_TX_MESH_TRACKED_DEVICE_HEARTBEAT
Definition: cs_UartOpcodes.h:125
@ UART_OPCODE_TX_HUB_DATA_REPLY_ACK
Definition: cs_UartOpcodes.h:66
@ UART_OPCODE_TX_CONTROL_RESULT
Definition: cs_UartOpcodes.h:65
@ UART_OPCODE_TX_FIRMWARESTATE
Definition: cs_UartOpcodes.h:143
@ UART_OPCODE_TX_ERR_REPLY_DECRYPTION_FAILED
Definition: cs_UartOpcodes.h:73
@ UART_OPCODE_TX_POWER_LOG_FILTERED_CURRENT
Definition: cs_UartOpcodes.h:138
@ UART_OPCODE_TX_MESH_ENABLED
Definition: cs_UartOpcodes.h:130
@ UART_OPCODE_TX_MESH_STATE
Definition: cs_UartOpcodes.h:88
@ UART_OPCODE_TX_MESH_PROFILE_LOCATION
Definition: cs_UartOpcodes.h:116
@ UART_OPCODE_TX_EVT
Definition: cs_UartOpcodes.h:111
@ UART_OPCODE_TX_LOG
Definition: cs_UartOpcodes.h:105
@ UART_OPCODE_TX_RSSI_DATA_MESSAGE
Definition: cs_UartOpcodes.h:96
@ UART_OPCODE_TX_HUB_DATA
Definition: cs_UartOpcodes.h:85
@ UART_OPCODE_TX_MESH_SYNC_REQUEST
Definition: cs_UartOpcodes.h:124
@ UART_OPCODE_TX_MESH_TRACKED_DEVICE_TOKEN
Definition: cs_UartOpcodes.h:122
@ UART_OPCODE_TX_MESH_RESULT
Definition: cs_UartOpcodes.h:93
@ UART_OPCODE_TX_MESH_STATE_PART_1
Definition: cs_UartOpcodes.h:91
@ UART_OPCODE_TX_STATUS
Definition: cs_UartOpcodes.h:63
@ UART_OPCODE_TX_TEXT
Definition: cs_UartOpcodes.h:142
@ UART_OPCODE_TX_HELLO
Definition: cs_UartOpcodes.h:60
@ UART_OPCODE_TX_MAC
Definition: cs_UartOpcodes.h:64
UartOpcodeRx
Author: Crownstone Team Copyright: Crownstone (https://crownstone.rocks) Date: Jun 18,...
Definition: cs_UartOpcodes.h:15
@ UART_OPCODE_RX_ENABLE_MESH
Definition: cs_UartOpcodes.h:26
@ UART_OPCODE_RX_POWER_LOG_FILTERED_CURRENT
Definition: cs_UartOpcodes.h:45
@ UART_OPCODE_RX_ENABLE_ADVERTISEMENT
Definition: cs_UartOpcodes.h:25
@ UART_OPCODE_RX_POWER_LOG_VOLTAGE
Definition: cs_UartOpcodes.h:44
@ UART_OPCODE_RX_SESSION_NONCE
Definition: cs_UartOpcodes.h:17
@ UART_OPCODE_RX_ADC_CONFIG_INC_RANGE_CURRENT
Definition: cs_UartOpcodes.h:33
@ UART_OPCODE_RX_GET_ID
Definition: cs_UartOpcodes.h:27
@ UART_OPCODE_RX_POWER_LOG_POWER
Definition: cs_UartOpcodes.h:49
@ UART_OPCODE_RX_ADC_CONFIG_INC_RANGE_VOLTAGE
Definition: cs_UartOpcodes.h:35
@ UART_OPCODE_RX_ADC_CONFIG_DEC_RANGE_VOLTAGE
Definition: cs_UartOpcodes.h:36
@ UART_OPCODE_RX_ADC_CONFIG_DIFFERENTIAL_CURRENT
Definition: cs_UartOpcodes.h:37
@ UART_OPCODE_RX_ADC_CONFIG_VOLTAGE_PIN
Definition: cs_UartOpcodes.h:41
@ UART_OPCODE_RX_HUB_DATA_REPLY
Definition: cs_UartOpcodes.h:22
@ UART_OPCODE_RX_STATUS
Definition: cs_UartOpcodes.h:19
@ UART_OPCODE_RX_ADC_CONFIG_DEC_RANGE_CURRENT
Definition: cs_UartOpcodes.h:34
@ UART_OPCODE_RX_HELLO
Definition: cs_UartOpcodes.h:16
@ UART_OPCODE_RX_GET_MAC
Definition: cs_UartOpcodes.h:20
@ UART_OPCODE_RX_HEARTBEAT
Definition: cs_UartOpcodes.h:18
@ UART_OPCODE_RX_POWER_LOG_CURRENT
Definition: cs_UartOpcodes.h:43
@ UART_OPCODE_RX_CONTROL
Definition: cs_UartOpcodes.h:21
@ UART_OPCODE_RX_INJECT_EVENT
Definition: cs_UartOpcodes.h:51
@ UART_OPCODE_RX_ADC_CONFIG_DIFFERENTIAL_VOLTAGE
Definition: cs_UartOpcodes.h:39
Definition: cs_UartOpcodes.h:146
Encrypt
Option whether a UART message should be encrypted.
Definition: cs_UartOpcodes.h:151
@ ENCRYPT_IF_ENABLED
Definition: cs_UartOpcodes.h:153
@ ENCRYPT_OR_FAIL
Definition: cs_UartOpcodes.h:154
@ ENCRYPT_NEVER
Definition: cs_UartOpcodes.h:152
@ ENCRYPT_ACCORDING_TO_TYPE
Definition: cs_UartOpcodes.h:155
constexpr bool mustBeEncryptedTx(UartOpcodeTx opCode)
Whether a written UART message must be encrypted when "encryption required" is true (when a UART key ...
Definition: cs_UartOpcodes.h:185
constexpr bool mustBeEncryptedRx(UartOpcodeRx opCode)
Whether a received UART message must be encrypted when "encryption required" is true (when a UART key...
Definition: cs_UartOpcodes.h:163