project atmel

This commit is contained in:
Qukich
2024-02-22 17:16:03 +03:00
parent 2870d4685e
commit 2ad07a39c5
86 changed files with 7699 additions and 2313 deletions
+56
View File
@@ -0,0 +1,56 @@
#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){
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){
int count_word = 0;
i++;
union convert_char sample;
for (int z = 0; z < encode_message[i]; z++){
i++;
sample.buf[z] = encode_message[i];
}
decode_message->str = sample.cVal;
decode_message->len_str = count_word;
}
}
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;
union convert_char sample;
sample.cVal = message.str;
for (int i = 0; i < message.len_str; i++){
encode_message[count++] = sample.buf[i];
}
}
*len_encode_message = count;
}
+32
View File
@@ -0,0 +1,32 @@
#ifndef PROTOCOL_H
#define PROTOCOL_H
#include <stdint.h>
#include <string.h>
#include <stdlib.h>
#include "stdio.h"
#define FLAG_NUMBER 0
#define FLAG_WORD 1
struct message{
float numbers[3];
size_t len_numbers;
char* str;
size_t len_str;
};
union convert_float{
float fVal;
uint8_t buf[4];
};
union convert_char{
char* cVal;
uint8_t buf[64];
};
void protocol_decode(uint8_t encode_message[], size_t len_encode_message, struct message* decode_message);
void protocol_encode(struct message message, uint8_t encode_message[], size_t* len_encode_message);
#endif //PROTOCOL_H