39 lines
1.3 KiB
C
39 lines
1.3 KiB
C
#include "protocol.h"
|
|
|
|
void protocol_decode(uint8_t encode_message[], size_t len_encode_message, char decode_message[], size_t* len_decode_message){
|
|
int count = 0;
|
|
for(int i = 0; i < len_encode_message; i++){
|
|
switch (encode_message[i]) {
|
|
case FLAG_NUMBER:
|
|
i++;
|
|
decode_message[count++] = encode_message[i]; // max 127
|
|
i++;
|
|
break;
|
|
case FLAG_WORD:
|
|
i++;
|
|
for (int z = 0; z < encode_message[i]; z++){
|
|
i++;
|
|
decode_message[count++] = encode_message[i];
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
*len_decode_message = count;
|
|
}
|
|
|
|
void protocol_encode_number(char number, uint8_t encode_message[], size_t* len_encode_message){
|
|
int count = 0;
|
|
encode_message[count++] = FLAG_NUMBER;
|
|
encode_message[count++] = number;
|
|
*len_encode_message = count;
|
|
}
|
|
|
|
void protocol_encode_word(char decode_word[], size_t len_encode_word, uint8_t encode_message[], size_t* len_encode_message){
|
|
int count = 0;
|
|
encode_message[count++] = FLAG_WORD;
|
|
encode_message[count++] = len_encode_word;
|
|
for (int i = 0; i < len_encode_word; i++){
|
|
encode_message[count++] = decode_word[i];
|
|
}
|
|
*len_encode_message = count;
|
|
} |