110 lines
3.0 KiB
C
110 lines
3.0 KiB
C
//#include "Lсd_print/lcd.h"
|
||
#include "hdlc/client.h"
|
||
#include "UART/uart.h"
|
||
#include "stdbool.h"
|
||
//#include "stdio.h"
|
||
#include "Lсd_print/lcd.h"
|
||
//#include "protocol.h"
|
||
|
||
int main() {
|
||
struct Client hdlc;
|
||
bool flag_connection = false;
|
||
|
||
Lcd_inciliation();
|
||
UART_init();
|
||
init_hdlc_client(&hdlc, 200);
|
||
|
||
// while(true){
|
||
// if (!flag_connection){
|
||
// }
|
||
// }
|
||
|
||
hdlc_connect(&hdlc);
|
||
uint8_t buffer[10];
|
||
|
||
hdlc_get_raw_frame(&hdlc, buffer, sizeof buffer);
|
||
|
||
UART_send(buffer, sizeof buffer);
|
||
|
||
while(!flag_connection){
|
||
uint8_t* buffer_recive[10];
|
||
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){
|
||
flag_connection = true;
|
||
}
|
||
}
|
||
|
||
struct message mess;
|
||
mess.numbers[0] = 1.23;
|
||
mess.numbers[1] = 22.1;
|
||
mess.numbers[2] = 100;
|
||
mess.len_numbers = 3;
|
||
mess.str = "word war in new world io ex";
|
||
mess.len_str = sizeof mess.str;
|
||
|
||
uint8_t data[64];
|
||
size_t len_data;
|
||
protocol_encode(mess, data, &len_data);
|
||
|
||
hdlc_send_data(&hdlc, data, len_data);
|
||
uint8_t buffer_data[72];
|
||
hdlc_get_raw_frame(&hdlc, buffer_data, sizeof buffer_data);
|
||
|
||
UART_send(buffer_data, sizeof buffer_data);
|
||
|
||
bool flag_recive = false;
|
||
uint8_t data_recive[64];
|
||
size_t len_data_recive;
|
||
while (!flag_recive){
|
||
uint8_t* buffer_recive_data[72];
|
||
UART_receive(buffer_recive_data, sizeof buffer_recive_data);
|
||
|
||
int err = hdlc_timeout_handler(&hdlc, 1);
|
||
if (err == ERR_FRAME_TIME_OUT){
|
||
hdlc_get_raw_frame(&hdlc, buffer_data, sizeof buffer_data);
|
||
UART_send(buffer_data, sizeof buffer_data);
|
||
continue;
|
||
}
|
||
|
||
err = hdlc_decode_recived_raw_data(&hdlc, buffer_recive_data, sizeof buffer_recive_data, data_recive, &len_data_recive);
|
||
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){
|
||
flag_recive = true;
|
||
}
|
||
}
|
||
|
||
struct message resp;
|
||
protocol_decode(data_recive, len_data_recive, &resp);
|
||
|
||
printLcd(&resp);
|
||
|
||
return 0;
|
||
} |