#include "client.h" #include "protocol.h" #include "uart.h" #include "MyLCD.h" struct Client hdlc; struct DisplayData wait; struct DisplayData recive_data; bool wait_for_connect = false; void setup() { init_lcd(); init_hdlc_client(&hdlc, 500); char str[] = "wait for connect... "; strncpy(wait.topLine, str, sizeof(str)); wait.value1 = 1.0f; wait.value2 = 20.0f; wait.value3 = 300.0f; char str_data[] = "wait for data... "; strncpy(recive_data.topLine, str_data, sizeof(str_data)); recive_data.value1 = 4.0f; recive_data.value2 = 50.0f; recive_data.value3 = 600.0f; UART_init(); } void loop() { if (!wait_for_connect){ print_lcd(&wait); hdlc_connect(&hdlc); uint8_t buffer[6]; wait.value2 = 21.0f; hdlc_get_raw_frame(&hdlc, buffer, sizeof buffer); UART_send(buffer, sizeof buffer); bool recive_connect = false; while(!recive_connect){ print_lcd(&wait); uint8_t buffer_recive[6]; UART_receive(buffer_recive, sizeof buffer_recive); int err = hdlc_timeout_handler(&hdlc, 1); if (err == ERR_FRAME_TIME_OUT){ hdlc_get_raw_frame(&hdlc, buffer, sizeof buffer); UART_send(buffer, sizeof buffer); continue; } err = hdlc_decode_recived_raw_data(&hdlc, buffer_recive, sizeof buffer_recive, 0, 0); if (err < 0){ if (err == ERR_INVALID_SEQ_NUMBER_FRAME){ uint8_t buffer_rej[10]; hdlc_get_raw_frame(&hdlc, buffer_rej, sizeof buffer_rej); UART_send(buffer_rej, sizeof buffer_rej); return err; } return err; } if (hdlc.state == READY_STATE){ wait_for_connect = true; recive_connect = true; } } } else { print_lcd(&recive_data); uint8_t buffer_receive[74]; UART_receive(buffer_receive, sizeof buffer_receive); if (buffer_receive[0] != 126){ recive_data.value2 = 51.0f; uint8_t data_receive[64]; size_t len_data_receive; int err = hdlc_decode_recived_raw_data(&hdlc, buffer_receive, sizeof buffer_receive, data_receive, &len_data_receive); if (err < 0){ if (err == ERR_INVALID_SEQ_NUMBER_FRAME){ uint8_t buffer_rej[10]; hdlc_get_raw_frame(&hdlc, buffer_rej, sizeof buffer_rej); UART_send(buffer_rej, sizeof buffer_rej); return err; } //return err; } if (hdlc.state == SEND){ recive_data.value2 = 51.0f; struct message resp; protocol_decode(data_receive, len_data_receive, &resp); recive_data.value1 = resp.numbers[0]; recive_data.value1 = resp.numbers[0]; recive_data.value2 = resp.numbers[1]; recive_data.value3 = resp.numbers[2]; strcpy(recive_data.topLine, resp.str); } } } }