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);
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
} |