Display_Avr_3/protocol/protocol.c
2024-02-16 12:09:50 +03:00

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;
}