#ifndef HDLC_FRAME_H #define HDLC_FRAME_H #include typedef struct { uint8_t address; uint8_t control; uint8_t* data; size_t data_length; } HDLCFrame; void initialize_frame(HDLCFrame* frame, uint8_t address, uint8_t control, uint8_t* data, size_t data_length); uint16_t calculate_fcs(HDLCFrame* frame); void create_frame(HDLCFrame* frame, uint8_t** frame_data, size_t* frame_length); HDLCFrame* create_u_frame(uint8_t address, uint8_t control, uint8_t* data, size_t data_length); HDLCFrame* create_s_frame(uint8_t address, uint8_t control, uint8_t* data, size_t data_length, uint8_t receive_sequence_number, uint8_t send_sequence_number); HDLCFrame* create_i_frame(uint8_t address, uint8_t control, uint8_t* data, size_t data_length, uint8_t sequence_number); #endif