#include "protocol.h" void protocol_decode(uint8_t encode_message[], size_t len_encode_message, struct message* decode_message){ int count_number = 0; for(int i = 0; i < len_encode_message; i++){ if (encode_message[i] == FLAG_NUMBER){ if (count_number < 3){ union convert_float sample; for (int z = 0; z < sizeof sample.buf; z++){ i++; sample.buf[z] = encode_message[i]; } decode_message->numbers[count_number++] = sample.fVal; decode_message->len_numbers++; } } if (encode_message[i] == FLAG_WORD){ i++; decode_message->len_str = encode_message[i]; for (int z = 0; z < encode_message[i]; z++){ i++; decode_message->str[z] = encode_message[i]; } } } decode_message->len_numbers = count_number; } void protocol_encode(struct message message, uint8_t encode_message[], size_t* len_encode_message){ size_t count = 0; if (message.len_numbers > 0){ for (int i = 0; i < message.len_numbers; i++){ encode_message[count++] = FLAG_NUMBER; union convert_float sample; sample.fVal = message.numbers[i]; for (int z = 0; z < sizeof sample.buf; z++){ encode_message[count++] = sample.buf[z]; } } } if (message.len_str > 0){ encode_message[count++] = FLAG_WORD; encode_message[count++] = message.len_str; for (int i = 0; i < message.len_str; i++){ encode_message[count++] = message.str[i]; } } *len_encode_message = count; }