test_message_def C++ Documentation

Helper Functions

static constexpr size_t kNumMsgTypes = 6
static constexpr size_t kHeaderPackedSize = 6
MsgType InspectHeader(const uint8_t *buffer)

Determine message type from header in buffer.

using AnyMessage = std::variant<std::monostate, Bitfield2BytesTest, Bitfield4BytesTest, Enum1BytesTest, Enum2BytesTest, PrimitiveTest, ArrayTest>
std::pair<AnyMessage, Status> UnpackMessage(const uint8_t *buffer, size_t len)

Unpack buffer into new message based on header and return it in the form of the AnyMessage variant.

class MessageDispatcher

Dispatch class that can manage the unpacking of messages. Users can register callbacks for specific messages and when found the dispatcher will call them with with a const reference to the newly unpacked message.

Status Unpack(const uint8_t *data, size_t len) const

Attempt to unpack a message from data and call the associated callbacks.

template<typename T>
void AddCallback(std::function<void(const T&)> func)

Register callback function for message type T.

Enums

enum class MsgType

Message types.

enumerator kBitfield2BytesTest = 0
enumerator kBitfield4BytesTest = 1
enumerator kEnum1BytesTest = 2
enumerator kEnum2BytesTest = 3
enumerator kPrimitiveTest = 4
enumerator kArrayTest = 5

This is a message description.

enumerator kUnknown = 6

Unknown message type.

enum class Status

Stuff Sack status code.

enumerator kSuccess = 0

Success.

enumerator kInvalidUid = 1

Invalid message UID.

enumerator kInvalidLen = 2

Invalid message length.

enum class Enum1Bytes
enumerator kValue0 = 0
enumerator kValue1 = 1
enumerator kValue2 = 2
enumerator kValue3 = 3
enumerator kValue4 = 4
enumerator kValue5 = 5
enumerator kValue6 = 6
enumerator kValue7 = 7
enumerator kValue8 = 8
enumerator kValue9 = 9
enumerator kValue10 = 10
enumerator kValue11 = 11
enumerator kValue12 = 12
enumerator kValue13 = 13
enumerator kValue14 = 14
enumerator kValue15 = 15
enumerator kValue16 = 16
enumerator kValue17 = 17
enumerator kValue18 = 18
enumerator kValue19 = 19
enumerator kValue20 = 20
enumerator kValue21 = 21
enumerator kValue22 = 22
enumerator kValue23 = 23
enumerator kValue24 = 24
enumerator kValue25 = 25
enumerator kValue26 = 26
enumerator kValue27 = 27
enumerator kValue28 = 28
enumerator kValue29 = 29
enumerator kValue30 = 30
enumerator kValue31 = 31
enumerator kValue32 = 32
enumerator kValue33 = 33
enumerator kValue34 = 34
enumerator kValue35 = 35
enumerator kValue36 = 36
enumerator kValue37 = 37
enumerator kValue38 = 38
enumerator kValue39 = 39
enumerator kValue40 = 40
enumerator kValue41 = 41
enumerator kValue42 = 42
enumerator kValue43 = 43
enumerator kValue44 = 44
enumerator kValue45 = 45
enumerator kValue46 = 46
enumerator kValue47 = 47
enumerator kValue48 = 48
enumerator kValue49 = 49
enumerator kValue50 = 50
enumerator kValue51 = 51
enumerator kValue52 = 52
enumerator kValue53 = 53
enumerator kValue54 = 54
enumerator kValue55 = 55
enumerator kValue56 = 56
enumerator kValue57 = 57
enumerator kValue58 = 58
enumerator kValue59 = 59
enumerator kValue60 = 60
enumerator kValue61 = 61
enumerator kValue62 = 62
enumerator kValue63 = 63
enumerator kValue64 = 64
enumerator kValue65 = 65
enumerator kValue66 = 66
enumerator kValue67 = 67
enumerator kValue68 = 68
enumerator kValue69 = 69
enumerator kValue70 = 70
enumerator kValue71 = 71
enumerator kValue72 = 72
enumerator kValue73 = 73
enumerator kValue74 = 74
enumerator kValue75 = 75
enumerator kValue76 = 76
enumerator kValue77 = 77
enumerator kValue78 = 78
enumerator kValue79 = 79
enumerator kValue80 = 80
enumerator kValue81 = 81
enumerator kValue82 = 82
enumerator kValue83 = 83
enumerator kValue84 = 84
enumerator kValue85 = 85
enumerator kValue86 = 86
enumerator kValue87 = 87
enumerator kValue88 = 88
enumerator kValue89 = 89
enumerator kValue90 = 90
enumerator kValue91 = 91
enumerator kValue92 = 92
enumerator kValue93 = 93
enumerator kValue94 = 94
enumerator kValue95 = 95
enumerator kValue96 = 96
enumerator kValue97 = 97
enumerator kValue98 = 98
enumerator kValue99 = 99
enumerator kValue100 = 100
enumerator kValue101 = 101
enumerator kValue102 = 102
enumerator kValue103 = 103
enumerator kValue104 = 104
enumerator kValue105 = 105
enumerator kValue106 = 106
enumerator kValue107 = 107
enumerator kValue108 = 108
enumerator kValue109 = 109
enumerator kValue110 = 110
enumerator kValue111 = 111
enumerator kValue112 = 112
enumerator kValue113 = 113
enumerator kValue114 = 114
enumerator kValue115 = 115
enumerator kValue116 = 116
enumerator kValue117 = 117
enumerator kValue118 = 118
enumerator kValue119 = 119
enumerator kValue120 = 120
enumerator kValue121 = 121
enumerator kValue122 = 122
enumerator kValue123 = 123
enumerator kValue124 = 124
enumerator kValue125 = 125
enumerator kValue126 = 126
enum class Enum2Bytes

This is an enum description.

enumerator kValue0 = 0

This is a enum value description

enumerator kValue1 = 1
enumerator kValue2 = 2
enumerator kValue3 = 3
enumerator kValue4 = 4
enumerator kValue5 = 5
enumerator kValue6 = 6
enumerator kValue7 = 7
enumerator kValue8 = 8
enumerator kValue9 = 9
enumerator kValue10 = 10
enumerator kValue11 = 11
enumerator kValue12 = 12
enumerator kValue13 = 13
enumerator kValue14 = 14
enumerator kValue15 = 15
enumerator kValue16 = 16
enumerator kValue17 = 17
enumerator kValue18 = 18
enumerator kValue19 = 19
enumerator kValue20 = 20
enumerator kValue21 = 21
enumerator kValue22 = 22
enumerator kValue23 = 23
enumerator kValue24 = 24
enumerator kValue25 = 25
enumerator kValue26 = 26
enumerator kValue27 = 27
enumerator kValue28 = 28
enumerator kValue29 = 29
enumerator kValue30 = 30
enumerator kValue31 = 31
enumerator kValue32 = 32
enumerator kValue33 = 33
enumerator kValue34 = 34
enumerator kValue35 = 35
enumerator kValue36 = 36
enumerator kValue37 = 37
enumerator kValue38 = 38
enumerator kValue39 = 39
enumerator kValue40 = 40
enumerator kValue41 = 41
enumerator kValue42 = 42
enumerator kValue43 = 43
enumerator kValue44 = 44
enumerator kValue45 = 45
enumerator kValue46 = 46
enumerator kValue47 = 47
enumerator kValue48 = 48
enumerator kValue49 = 49
enumerator kValue50 = 50
enumerator kValue51 = 51
enumerator kValue52 = 52
enumerator kValue53 = 53
enumerator kValue54 = 54
enumerator kValue55 = 55
enumerator kValue56 = 56
enumerator kValue57 = 57
enumerator kValue58 = 58
enumerator kValue59 = 59
enumerator kValue60 = 60
enumerator kValue61 = 61
enumerator kValue62 = 62
enumerator kValue63 = 63
enumerator kValue64 = 64
enumerator kValue65 = 65
enumerator kValue66 = 66
enumerator kValue67 = 67
enumerator kValue68 = 68
enumerator kValue69 = 69
enumerator kValue70 = 70
enumerator kValue71 = 71
enumerator kValue72 = 72
enumerator kValue73 = 73
enumerator kValue74 = 74
enumerator kValue75 = 75
enumerator kValue76 = 76
enumerator kValue77 = 77
enumerator kValue78 = 78
enumerator kValue79 = 79
enumerator kValue80 = 80
enumerator kValue81 = 81
enumerator kValue82 = 82
enumerator kValue83 = 83
enumerator kValue84 = 84
enumerator kValue85 = 85
enumerator kValue86 = 86
enumerator kValue87 = 87
enumerator kValue88 = 88
enumerator kValue89 = 89
enumerator kValue90 = 90
enumerator kValue91 = 91
enumerator kValue92 = 92
enumerator kValue93 = 93
enumerator kValue94 = 94
enumerator kValue95 = 95
enumerator kValue96 = 96
enumerator kValue97 = 97
enumerator kValue98 = 98
enumerator kValue99 = 99
enumerator kValue100 = 100
enumerator kValue101 = 101
enumerator kValue102 = 102
enumerator kValue103 = 103
enumerator kValue104 = 104
enumerator kValue105 = 105
enumerator kValue106 = 106
enumerator kValue107 = 107
enumerator kValue108 = 108
enumerator kValue109 = 109
enumerator kValue110 = 110
enumerator kValue111 = 111
enumerator kValue112 = 112
enumerator kValue113 = 113
enumerator kValue114 = 114
enumerator kValue115 = 115
enumerator kValue116 = 116
enumerator kValue117 = 117
enumerator kValue118 = 118
enumerator kValue119 = 119
enumerator kValue120 = 120
enumerator kValue121 = 121
enumerator kValue122 = 122
enumerator kValue123 = 123
enumerator kValue124 = 124
enumerator kValue125 = 125
enumerator kValue126 = 126
enumerator kValue127 = 127

Bitfields

Bitfield2Bytes

struct Bitfield2Bytes
uint16_t field0 : 3
uint16_t field1 : 5
uint16_t field2 : 8

Bitfield4Bytes

struct Bitfield4Bytes

This is a bitfield description.

uint32_t field0 : 3

This is a bitfield field description.

uint32_t field1 : 5
uint32_t field2 : 9

Structures

SsHeader

struct SsHeader

Message header.

uint32_t uid

Message unique id.

uint16_t len

Message length.

ArrayElem

struct ArrayElem

This is a struct description.

bool field0

This is a struct field description.

uint16_t field1

Messages

struct Bitfield2BytesTest
SsHeader ss_header

Message header.

Bitfield2Bytes bitfield
static constexpr MsgType kType = MsgType::kBitfield2BytesTest
static constexpr uint32_t kUid = 0x2f19a3ea
static constexpr size_t kPackedSize = 8
static std::pair<Bitfield2BytesTest, Status> UnpackNew(const uint8_t *buffer)

Unpack buffer into new message and return it.

void Pack(uint8_t *buffer)

Pack message into buffer.

std::unique_ptr<std::array<uint8_t, kPackedSize>> Pack()

Pack message into newly allocated buffer and return it.

Status Unpack(const uint8_t *buffer)

Unpack buffer into message.

struct Bitfield4BytesTest
SsHeader ss_header

Message header.

Bitfield4Bytes bitfield
static constexpr MsgType kType = MsgType::kBitfield4BytesTest
static constexpr uint32_t kUid = 0xb21760cd
static constexpr size_t kPackedSize = 10
static std::pair<Bitfield4BytesTest, Status> UnpackNew(const uint8_t *buffer)

Unpack buffer into new message and return it.

void Pack(uint8_t *buffer)

Pack message into buffer.

std::unique_ptr<std::array<uint8_t, kPackedSize>> Pack()

Pack message into newly allocated buffer and return it.

Status Unpack(const uint8_t *buffer)

Unpack buffer into message.

struct Enum1BytesTest
SsHeader ss_header

Message header.

Enum1Bytes enumeration
static constexpr MsgType kType = MsgType::kEnum1BytesTest
static constexpr uint32_t kUid = 0x96363fc4
static constexpr size_t kPackedSize = 7
static std::pair<Enum1BytesTest, Status> UnpackNew(const uint8_t *buffer)

Unpack buffer into new message and return it.

void Pack(uint8_t *buffer)

Pack message into buffer.

std::unique_ptr<std::array<uint8_t, kPackedSize>> Pack()

Pack message into newly allocated buffer and return it.

Status Unpack(const uint8_t *buffer)

Unpack buffer into message.

struct Enum2BytesTest
SsHeader ss_header

Message header.

Enum2Bytes enumeration
static constexpr MsgType kType = MsgType::kEnum2BytesTest
static constexpr uint32_t kUid = 0xbb8ea1d0
static constexpr size_t kPackedSize = 8
static std::pair<Enum2BytesTest, Status> UnpackNew(const uint8_t *buffer)

Unpack buffer into new message and return it.

void Pack(uint8_t *buffer)

Pack message into buffer.

std::unique_ptr<std::array<uint8_t, kPackedSize>> Pack()

Pack message into newly allocated buffer and return it.

Status Unpack(const uint8_t *buffer)

Unpack buffer into message.

struct PrimitiveTest
SsHeader ss_header

Message header.

uint8_t uint8
uint16_t uint16
uint32_t uint32
uint64_t uint64
int8_t int8
int16_t int16
int32_t int32
int64_t int64
bool boolean
float float_type
double double_type
static constexpr MsgType kType = MsgType::kPrimitiveTest
static constexpr uint32_t kUid = 0x2a5a960b
static constexpr size_t kPackedSize = 49
static std::pair<PrimitiveTest, Status> UnpackNew(const uint8_t *buffer)

Unpack buffer into new message and return it.

void Pack(uint8_t *buffer)

Pack message into buffer.

std::unique_ptr<std::array<uint8_t, kPackedSize>> Pack()

Pack message into newly allocated buffer and return it.

Status Unpack(const uint8_t *buffer)

Unpack buffer into message.

struct ArrayTest

This is a message description.

SsHeader ss_header

Message header.

ArrayElem array_1d[3]

This is a message field description.

ArrayElem array_2d[2][3]
ArrayElem array_3d[1][2][3]
static constexpr MsgType kType = MsgType::kArrayTest
static constexpr uint32_t kUid = 0x5f90abc7
static constexpr size_t kPackedSize = 51
static std::pair<ArrayTest, Status> UnpackNew(const uint8_t *buffer)

Unpack buffer into new message and return it.

void Pack(uint8_t *buffer)

Pack message into buffer.

std::unique_ptr<std::array<uint8_t, kPackedSize>> Pack()

Pack message into newly allocated buffer and return it.

Status Unpack(const uint8_t *buffer)

Unpack buffer into message.