#ifndef CLIENT_H #define CLIENT_H #include #include #include "hdlc.h" #define ERR_INVALID_DATA_SIZE -1 #define ERR_ALL_BUFFERS_FILL -2 #define ERR_INVALID_PARAMS -3 #define ERR_INVALID_STATE -4 #define ERR_FRAME_TIME_OUT -5 #define ERR_INVALID_SEQ_NUMBER_FRAME -6 #define ERR_TIMEOUT_ANSWER -7 enum HDLCState { UNINITIALIZED_STATE = 0, // состояние до инцилизации IDLE_STATE, // Состояние ожидания начала READY_STATE, // Состояние принятия CONNECTING, // состояние соединения DISCONNECTING, // состояния отключения RECIVING, // состояние приема и отправки SEND, //данные отправлены }; struct Client{ enum HDLCState state; int connecting_frame_timeout; //-1 uint8_t current_index_frame; hdlc_state_t current_state_hdlc; hdlc_control_t frameS; hdlc_control_t frameI; uint8_t* data_i_frame; size_t len_data_i_frame; // hdlc_control_t frame3; // hdlc_control_t frame4; hdlc_control_t frame_rej; }; //название функций void init_hdlc_client(struct Client* client, int connecting_frame_timeout); void hdlc_connect(struct Client* client); int hdlc_send_data(struct Client* client, uint8_t data[], size_t data_len); int hdlc_get_raw_frame(struct Client *client, uint8_t* buffer, size_t lenBuffer); //принимает буффер с уарта int hdlc_decode_recived_raw_data(struct Client* client, uint8_t* buffer, size_t len_buffer, uint8_t* recived_data, size_t* len_recived_data); int hdlc_timeout_handler(struct Client* client, int delta_time); #endif //CLIENT_H