add protocol, test in main

This commit is contained in:
Qukich 2024-02-16 12:09:50 +03:00
parent 664e9e6640
commit 6bd1021c4e
3 changed files with 90 additions and 0 deletions

37
protocol/main.c Normal file
View File

@ -0,0 +1,37 @@
#include "protocol.h"
#include "stdio.h"
int main(){
printf("Test number\n");
char number = 112;
uint8_t buffer_number[] = {};
size_t len_buffer_number;
protocol_encode_number(number, buffer_number, &len_buffer_number);
for (int i = 0; i < len_buffer_number; i++){
printf("buffer %d: %d\n", i, buffer_number[i]);
}
printf("---------------------------------------\n");
char encode_message_number[] = {};
size_t len_message_number;
protocol_decode(buffer_number, len_buffer_number, encode_message_number, &len_message_number);
printf("number: %d\n", encode_message_number[0]);
printf("\nTest word\n");
char* word = "word";
uint8_t buffer[] = {};
size_t len_buffer;
protocol_encode_word(word, strlen(word), buffer, &len_buffer);
for (int i = 0; i < len_buffer; i++){
printf("buffer %d: %d\n", i, buffer[i]);
}
printf("---------------------------------------\n");
char encode_message[] = {};
size_t len_message;
protocol_decode(buffer, len_buffer, encode_message, &len_message);
printf("message: %s\n", encode_message);
return 0;
}

39
protocol/protocol.c Normal file
View File

@ -0,0 +1,39 @@
#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;
}

14
protocol/protocol.h Normal file
View File

@ -0,0 +1,14 @@
#ifndef PROTOCOL_H
#define PROTOCOL_H
#include <stdint.h>
#include <string.h>
#define FLAG_NUMBER 0
#define FLAG_WORD 1
void protocol_decode(uint8_t encode_message[], size_t len_encode_message, char decode_message[], size_t* len_decode_message);
void protocol_encode_number(char number, uint8_t encode_message[], size_t* len_encode_message);
void protocol_encode_word(char decode_word[], size_t len_encode_word, uint8_t encode_message[], size_t* len_encode_message);
#endif //PROTOCOL_H