C++ Pixels Library For Windows
Enable communications with Pixels dice using Bluetooth Low Energy.
Loading...
Searching...
No Matches
Messages.h
Go to the documentation of this file.
1
6#pragma once
7
8#include <cstdint>
9#include "PixelTypes.h"
10
11namespace Systemic::Pixels::Messages
12{
18 enum class MessageType : uint8_t
19 {
20 None = 0,
21 WhoAreYou,
22 IAmADie,
24 Telemetry,
25 BulkSetup,
26 BulkSetupAck,
27 BulkData,
28 BulkDataAck,
29 TransferAnimSet,
30 TransferAnimSetAck,
31 TransferAnimSetFinished,
32 TransferSettings,
33 TransferSettingsAck,
34 TransferSettingsFinished,
35 TransferTestAnimSet,
36 TransferTestAnimSetAck,
37 TransferTestAnimSetFinished,
38 DebugLog,
39 PlayAnim,
40 PlayAnimEvent,
41 StopAnim,
42 RemoteAction,
43 RequestRollState,
44 RequestAnimSet,
45 RequestSettings,
46 RequestTelemetry,
47 ProgramDefaultAnimSet,
48 ProgramDefaultAnimSetFinished,
49 Blink,
50 BlinkAck,
51 RequestDefaultAnimSetColor,
52 DefaultAnimSetColor,
53 RequestBatteryLevel,
56 Rssi,
57 Calibrate,
58 CalibrateFace,
59 NotifyUser,
60 NotifyUserAck,
61 TestHardware,
62 TestLedLoopback,
63 LedLoopback,
64 SetTopLevelState,
65 ProgramDefaultParameters,
66 ProgramDefaultParametersFinished,
67 SetDesignAndColor,
68 SetDesignAndColorAck,
69 SetCurrentBehavior,
70 SetCurrentBehaviorAck,
71 SetName,
72 SetNameAck,
73 Sleep,
74 ExitValidation,
75 TransferInstantAnimSet,
76 TransferInstantAnimSetAck,
77 TransferInstantAnimSetFinished,
78 PlayInstantAnim,
79 StopAllAnims,
80 RequestTemperature,
81 Temperature,
82 EnableCharging,
83 DisableCharging,
84 Discharge,
85 BlinkId,
86 BlinkIdAck,
87 };
88
89#pragma pack(push, 1)
90
91 /*
92 * Base type for all Pixel messages.
93 * May also represent any message with no data.
94 */
96 {
99
101 PixelMessage(MessageType msgType) : type(msgType) {}
102 };
103
105 struct IAmADie
106 : public PixelMessage
107 {
109 uint8_t ledCount{};
110
113
114 private:
115 uint8_t _padding{};
116 public:
117
119 uint32_t dataSetHash{};
120
122 uint32_t pixelId{};
123
125 uint16_t availableFlash{};
126
128 uint32_t buildTimestamp{};
129
130 // Roll state
131
134
137
138 // Battery level
139
142
145
148 };
149
152 : public PixelMessage
153 {
156
158 uint8_t faceIndex{};
159
162 };
163
165 struct Blink
166 : public PixelMessage
167 {
169 uint8_t count{};
170
172 uint16_t duration{};
173
175 uint32_t color{};
176
178 uint32_t faceMask{};
179
181 uint8_t fade{};
182
184 uint8_t loop{};
185
188 };
189
192 : public PixelMessage
193 {
195 uint8_t levelPercent{};
196
199
202 };
203
205 enum class TelemetryRequestMode : uint8_t
206 {
208 Off,
209
211 Once,
212
214 Automatic,
215 };
216
219 : public PixelMessage
220 {
223
225 uint16_t minInterval{};
226
229 };
230
232 struct Rssi
233 : public PixelMessage
234 {
236 int8_t value{};
237
240 };
241
242#pragma pack(pop)
243
249 inline const char* getMessageName(MessageType type)
250 {
251 switch (type)
252 {
253 case MessageType::None:
254 return "None";
255 case MessageType::WhoAreYou:
256 return "WhoAreYou";
257 case MessageType::IAmADie:
258 return "IAmADie";
259 case MessageType::RollState:
260 return "RollState";
261 case MessageType::Telemetry:
262 return "Telemetry";
263 case MessageType::BulkSetup:
264 return "BulkSetup";
265 case MessageType::BulkSetupAck:
266 return "BulkSetupAck";
267 case MessageType::BulkData:
268 return "BulkData";
269 case MessageType::BulkDataAck:
270 return "BulkDataAck";
271 case MessageType::TransferAnimSet:
272 return "TransferAnimSet";
273 case MessageType::TransferAnimSetAck:
274 return "TransferAnimSetAck";
275 case MessageType::TransferAnimSetFinished:
276 return "TransferAnimSetFinished";
277 case MessageType::TransferSettings:
278 return "TransferSettings";
279 case MessageType::TransferSettingsAck:
280 return "TransferSettingsAck";
281 case MessageType::TransferSettingsFinished:
282 return "TransferSettingsFinished";
283 case MessageType::TransferTestAnimSet:
284 return "TransferTestAnimSet";
285 case MessageType::TransferTestAnimSetAck:
286 return "TransferTestAnimSetAck";
287 case MessageType::TransferTestAnimSetFinished:
288 return "TransferTestAnimSetFinished";
289 case MessageType::DebugLog:
290 return "DebugLog";
291 case MessageType::PlayAnim:
292 return "PlayAnim";
293 case MessageType::PlayAnimEvent:
294 return "PlayAnimEvent";
295 case MessageType::StopAnim:
296 return "StopAnim";
297 case MessageType::RemoteAction:
298 return "RemoteAction";
299 case MessageType::RequestRollState:
300 return "RequestRollState";
301 case MessageType::RequestAnimSet:
302 return "RequestAnimSet";
303 case MessageType::RequestSettings:
304 return "RequestSettings";
305 case MessageType::RequestTelemetry:
306 return "RequestTelemetry";
307 case MessageType::ProgramDefaultAnimSet:
308 return "ProgramDefaultAnimSet";
309 case MessageType::ProgramDefaultAnimSetFinished:
310 return "ProgramDefaultAnimSetFinished";
311 case MessageType::Blink:
312 return "Blink";
313 case MessageType::BlinkAck:
314 return "BlinkAck";
315 case MessageType::RequestDefaultAnimSetColor:
316 return "RequestDefaultAnimSetColor";
317 case MessageType::DefaultAnimSetColor:
318 return "DefaultAnimSetColor";
319 case MessageType::RequestBatteryLevel:
320 return "RequestBatteryLevel";
321 case MessageType::BatteryLevel:
322 return "BatteryLevel";
323 case MessageType::RequestRssi:
324 return "RequestRssi";
325 case MessageType::Rssi:
326 return "Rssi";
327 case MessageType::Calibrate:
328 return "Calibrate";
329 case MessageType::CalibrateFace:
330 return "CalibrateFace";
331 case MessageType::NotifyUser:
332 return "NotifyUser";
333 case MessageType::NotifyUserAck:
334 return "NotifyUserAck";
335 case MessageType::TestHardware:
336 return "TestHardware";
337 case MessageType::TestLedLoopback:
338 return "TestLedLoopback";
339 case MessageType::LedLoopback:
340 return "LedLoopback";
341 case MessageType::SetTopLevelState:
342 return "SetTopLevelState";
343 case MessageType::ProgramDefaultParameters:
344 return "ProgramDefaultParameters";
345 case MessageType::ProgramDefaultParametersFinished:
346 return "ProgramDefaultParametersFinished";
347 case MessageType::SetDesignAndColor:
348 return "SetDesignAndColor";
349 case MessageType::SetDesignAndColorAck:
350 return "SetDesignAndColorAck";
351 case MessageType::SetCurrentBehavior:
352 return "SetCurrentBehavior";
353 case MessageType::SetCurrentBehaviorAck:
354 return "SetCurrentBehaviorAck";
355 case MessageType::SetName:
356 return "SetName";
357 case MessageType::SetNameAck:
358 return "SetNameAck";
359 case MessageType::Sleep:
360 return "Sleep";
361 case MessageType::ExitValidation:
362 return "ExitValidation";
363 case MessageType::TransferInstantAnimSet:
364 return "TransferInstantAnimSet";
365 case MessageType::TransferInstantAnimSetAck:
366 return "TransferInstantAnimSetAck";
367 case MessageType::TransferInstantAnimSetFinished:
368 return "TransferInstantAnimSetFinished";
369 case MessageType::PlayInstantAnim:
370 return "PlayInstantAnim";
371 case MessageType::StopAllAnims:
372 return "StopAllAnims";
373 case MessageType::RequestTemperature:
374 return "RequestTemperature";
375 case MessageType::Temperature:
376 return "Temperature";
377 case MessageType::EnableCharging:
378 return "EnableCharging";
379 case MessageType::DisableCharging:
380 return "DisableCharging";
381 case MessageType::Discharge:
382 return "Discharge";
383 case MessageType::BlinkId:
384 return "BlinkId";
385 case MessageType::BlinkIdAck:
386 return "BlinkIdAck";
387 }
388 return "";
389 }
390};
MessageType
Lists all the Pixel dice message types. The value is used for the first byte of data in a Pixel messa...
Definition: Messages.h:19
const char * getMessageName(MessageType type)
Returns the name of a Pixel message.
Definition: Messages.h:249
TelemetryRequestMode
Available modes for telemetry requests.
Definition: Messages.h:206
@ Automatic
Request Pixel to automatically send telemetry updates.
@ Off
Request Pixel to stop automatically sending telemetry updates.
@ Once
Request Pixel to immediately send a single telemetry update.
Common types used across the Systemic::Pixel namespace.
PixelRollState
Pixel roll states.
Definition: PixelTypes.h:45
PixelDesignAndColor
Available combinations of Pixel designs and colors.
Definition: PixelTypes.h:27
PixelBatteryState
The different possible battery charging states.
Definition: PixelTypes.h:64
Message send by a Pixel to notify of its battery level and state.
Definition: Messages.h:193
PixelBatteryState state
The charging state of the battery.
Definition: Messages.h:198
uint8_t levelPercent
The battery charge level in percent.
Definition: Messages.h:195
BatteryLevel()
Initializes a new instance of BatteryLevel.
Definition: Messages.h:201
Message send by a Pixel after receiving a "WhoAmI" message.
Definition: Messages.h:107
IAmADie()
Initializes a new instance of IAmADie.
Definition: Messages.h:147
PixelBatteryState batteryState
The charging state of the battery.
Definition: Messages.h:144
PixelDesignAndColor designAndColor
Die look.
Definition: Messages.h:112
uint8_t currentFaceIndex
Face index (if applicable), starts at 0.
Definition: Messages.h:136
PixelRollState rollState
Current roll state.
Definition: Messages.h:133
uint32_t buildTimestamp
UNIX timestamp in seconds for the date of the firmware.
Definition: Messages.h:128
uint32_t pixelId
The Pixel id.
Definition: Messages.h:122
uint8_t ledCount
Number of LEDs.
Definition: Messages.h:109
uint8_t batteryLevelPercent
The battery charge level in percent.
Definition: Messages.h:141
uint16_t availableFlash
Amount of available flash.
Definition: Messages.h:125
uint32_t dataSetHash
Hash of the uploaded profile.
Definition: Messages.h:119
const MessageType type
Message type.
Definition: Messages.h:98
PixelMessage(MessageType msgType)
Initializes a new instance of PixelMessage with the given type.
Definition: Messages.h:101
Message send to a Pixel to configure RSSI reporting.
Definition: Messages.h:220
RequestRssi()
Initializes a new instance of RequestRssi.
Definition: Messages.h:228
TelemetryRequestMode requestMode
Telemetry mode used for sending the RSSI update(s).
Definition: Messages.h:222
uint16_t minInterval
Minimum interval in milliseconds between two updates (0 for no cap on rate).
Definition: Messages.h:225
Message send by a Pixel to notify of its rolling state.
Definition: Messages.h:153
RollState()
Initializes a new instance of RollState.
Definition: Messages.h:161
uint8_t faceIndex
Index of the face facing up (if applicable).
Definition: Messages.h:158
PixelRollState state
Current roll state.
Definition: Messages.h:155
Message send by a Pixel to notify of its measured RSSI.
Definition: Messages.h:234
int8_t value
The RSSI value, in dBm.
Definition: Messages.h:236
Rssi()
Initializes a new instance of Rssi.
Definition: Messages.h:239