72 lines
1.8 KiB
C++
72 lines
1.8 KiB
C++
#include "lcd.h"
|
|
#include "client.h"
|
|
#include "uart.h"
|
|
#include "stdbool.h"
|
|
#include "stdio.h"
|
|
|
|
struct Client hdlc;
|
|
bool flag_connection = false;
|
|
|
|
void setup() {
|
|
Lsd_inciliation();
|
|
UART_init();
|
|
init_hdlc_client(&hdlc, 200);
|
|
}
|
|
|
|
void loop() {
|
|
if (!flag_connection){
|
|
hdlc_connect(&hdlc);
|
|
uint8_t buffer;
|
|
hdlc_get_raw_frame(&hdlc, &buffer, sizeof(buffer));
|
|
|
|
UART_send(&buffer, sizeof(buffer));
|
|
|
|
bool flag_recive = true;
|
|
while(flag_recive){
|
|
uint8_t buffer;
|
|
UART_receive(&buffer, sizeof(buffer));
|
|
|
|
int err = hdlc_timeout_handler(&hdlc, 1);
|
|
if (err != 0){
|
|
return err;
|
|
}
|
|
|
|
int ret = hdlc_decode_recived_raw_data(&hdlc, &fake_buffer, sizeof(fake_buffer), 0, 0);
|
|
|
|
if (ret == -6){
|
|
uint8_t buffer;
|
|
hdlc_get_raw_frame(&hdlc, &hdlc->frame_rej, &buffer, sizeof(buffer));
|
|
UART_send(&buffer, sizeof(buffer));
|
|
}
|
|
|
|
if (ret == 0 && client->state == READY_STATE){
|
|
flag_connection = true;
|
|
}
|
|
}
|
|
} else {
|
|
bool flag_recive = true;
|
|
while(flag_recive){
|
|
uint8_t buffer;
|
|
UART_receive(&buffer, sizeof(buffer));
|
|
|
|
int err = hdlc_timeout_handler(&hdlc, 1);
|
|
if (err != 0){
|
|
return err;
|
|
}
|
|
|
|
uint8_t recived_data;
|
|
size_t len_recived_data;
|
|
|
|
int ret = hdlc_decode_recived_raw_data(&hdlc, &fake_buffer, sizeof(fake_buffer), &recived_data, &len_recived_data);
|
|
|
|
if (ret == -6){
|
|
uint8_t buffer;
|
|
hdlc_get_raw_frame(&hdlc, &hdlc->frame_rej, &buffer, sizeof(buffer));
|
|
UART_send(&buffer, sizeof(buffer));
|
|
}
|
|
|
|
printLsd(recived_data);
|
|
}
|
|
}
|
|
|
|
} |