Skip to content

Commit 1a928a0

Browse files
committed
Refactoring
1 parent ad233e3 commit 1a928a0

File tree

2 files changed

+34
-42
lines changed

2 files changed

+34
-42
lines changed

src/ArduinoIoTCloudTCP.cpp

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -318,11 +318,14 @@ void ArduinoIoTCloudTCP::decode(){
318318

319319
void ArduinoIoTCloudTCP::encode(){
320320
ThingGetIdCmdUp * command = new ThingGetIdCmdUp();
321+
String s = "thing_id";
322+
strcpy(command->fields.params.thing_id, s.c_str());
321323

324+
Message * message = (Message*) command;
325+
message->id = CommandID(66304);
322326
int bytes_encoded = 0;
323-
uint8_t data[MQTT_TRANSMIT_BUFFER_SIZE];
324-
DEBUG_INFO("Encoding");
325-
if (MessageEncoder::encode((Message*) command, data, sizeof(data), bytes_encoded) == CborNoError)
327+
uint8_t data[1024];
328+
if (MessageEncoder::encode(message, data, sizeof(data), bytes_encoded) == CborNoError)
326329
if (bytes_encoded > 0)
327330
{
328331
DEBUG_INFO("Data are %s", data);

src/cbor/MessageEncoder.cpp

Lines changed: 28 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,9 @@ CborError MessageEncoder::encode(Message * message, uint8_t * data, size_t const
4343
CborEncoder encoder;
4444
CborEncoder arrayEncoder;
4545

46-
cbor_encoder_init(&encoder, data, size, 0);
4746

47+
cbor_encoder_init(&encoder, data, size, 0);
48+
DEBUG_INFO("Encoder init with size %d", size);
4849
while (current_state != EncoderState::Complete) {
4950

5051
switch (current_state) {
@@ -71,6 +72,7 @@ CborError MessageEncoder::encode(Message * message, uint8_t * data, size_t const
7172

7273
MessageEncoder::EncoderState MessageEncoder::handle_EncodeTag(CborEncoder * encoder, Message * message, uint8_t * data)
7374
{
75+
DEBUG_INFO("Encode tag");
7476
CborTag commandTag = (uint64_t) message->id;
7577
if (cbor_encode_tag(encoder, commandTag) != CborNoError)
7678
return EncoderState::Error;
@@ -80,6 +82,7 @@ MessageEncoder::EncoderState MessageEncoder::handle_EncodeTag(CborEncoder * enco
8082

8183
MessageEncoder::EncoderState MessageEncoder::handle_EncodeArray(CborEncoder * encoder, CborEncoder * array_encoder)
8284
{
85+
DEBUG_INFO("Start array");
8386
if (cbor_encoder_create_array(encoder, array_encoder, CborIndefiniteLength) != CborNoError)
8487
return EncoderState::Error;
8588

@@ -88,11 +91,14 @@ MessageEncoder::EncoderState MessageEncoder::handle_EncodeArray(CborEncoder * en
8891

8992
MessageEncoder::EncoderState MessageEncoder::handle_EncodeParam(CborEncoder * encoder, CborEncoder * array_encoder, Message * message, uint8_t * data, size_t const size)
9093
{
94+
DEBUG_INFO("Encode param");
9195
CborError error = CborNoError;
9296
// Switch case on the message id
97+
DEBUG_INFO("message id is %d", message->id);
9398
switch (message->id)
9499
{
95100
case CommandID::ThingGetIdCmdUpId:
101+
DEBUG_INFO("Encode thing id up");
96102
error = MessageEncoder::encodeThingGetIdCmdUp(array_encoder, message);
97103
break;
98104
case CommandID::ThingGetLastValueCmdUpId:
@@ -106,68 +112,51 @@ MessageEncoder::EncoderState MessageEncoder::handle_EncodeParam(CborEncoder * en
106112
default:
107113
return EncoderState::MessageNotSupported;
108114
}
109-
110-
if (error != CborNoError)
115+
DEBUG_INFO("Check error");
116+
if (error != CborNoError) {
117+
DEBUG_INFO("error is %d", error);
111118
return EncoderState::Error;
112-
119+
}
120+
113121
return EncoderState::CloseArray;
114122
}
115123

116124
MessageEncoder::EncoderState MessageEncoder::handle_CloseArray(CborEncoder * encoder, CborEncoder * array_encoder)
117125
{
118-
CborError error = cbor_encoder_close_container(encoder, array_encoder);
119-
if (cbor_encoder_close_container(encoder, array_encoder))
126+
DEBUG_INFO("Close array");
127+
if (cbor_encoder_close_container(encoder, array_encoder) != CborNoError) {
128+
DEBUG_INFO("Error closing array");
120129
return EncoderState::Error;
121-
130+
}
131+
132+
DEBUG_INFO("After close array");
122133
return EncoderState::Complete;
123134
}
124135

125136
// Message specific encoders
126137
CborError MessageEncoder::encodeThingGetIdCmdUp(CborEncoder * array_encoder, Message * message)
127138
{
128139
ThingGetIdCmdUp * thingGetIdCmdUp = (ThingGetIdCmdUp *) message;
129-
// Encode the thing id
130-
CborError error = CborNoError;
131-
error = cbor_encode_text_string(array_encoder, thingGetIdCmdUp->fields.params.thing_id, THING_ID_SIZE);
132-
133-
return error;
140+
DEBUG_INFO("Encoding thing id: %s", thingGetIdCmdUp->fields.params.thing_id);
141+
CHECK_CBOR(cbor_encode_text_string(array_encoder, thingGetIdCmdUp->fields.params.thing_id, THING_ID_SIZE));
142+
return CborNoError;
134143
}
135144

136145
CborError MessageEncoder::encodeDeviceBeginCmdUp(CborEncoder * array_encoder, Message * message)
137146
{
138147
DeviceBeginCmdUp * deviceBeginCmdUp = (DeviceBeginCmdUp *) message;
139-
// Encode the sha
140-
CborError error = CborNoError;
141-
error = cbor_encode_byte_string(array_encoder, deviceBeginCmdUp->fields.params.sha, SHA256_SIZE);
142-
143-
return error;
148+
CHECK_CBOR(cbor_encode_byte_string(array_encoder, deviceBeginCmdUp->fields.params.sha, SHA256_SIZE));
149+
return CborNoError;
144150
}
145151

146152
CborError MessageEncoder::encodeOtaProgressCmdUp(CborEncoder * array_encoder, Message * message)
147153
{
148154
OtaProgressCmdUp * ota = (OtaProgressCmdUp *)message;
149-
// Encode the url
150-
CborError error = CborNoError;
151-
error = cbor_encode_text_string(array_encoder, ota->fields.params.id, ID_SIZE);
152-
if (error != CborNoError)
153-
return error;
154-
155-
// Encode the state
156-
error = cbor_encode_text_string(array_encoder, ota->fields.params.state, STATE_SIZE);
157-
if (error != CborNoError)
158-
return error;
159-
160-
// Encode the time
161-
error = cbor_encode_uint(array_encoder, ota->fields.params.time);
162-
if (error != CborNoError)
163-
return error;
164-
165-
// Encode the count
166-
error = cbor_encode_uint(array_encoder, ota->fields.params.count);
167-
if (error != CborNoError)
168-
return error;
169-
170-
return error;
155+
CHECK_CBOR(cbor_encode_text_string(array_encoder, ota->fields.params.id, ID_SIZE));
156+
CHECK_CBOR(cbor_encode_text_string(array_encoder, ota->fields.params.state, STATE_SIZE));
157+
CHECK_CBOR(cbor_encode_uint(array_encoder, ota->fields.params.time));
158+
CHECK_CBOR(cbor_encode_uint(array_encoder, ota->fields.params.count));
159+
return CborNoError;
171160
}
172161

173162

0 commit comments

Comments
 (0)