diff options
| author | Jan Sucan <sucanjan@fit.cvut.cz> | 2019-06-04 14:34:27 +0200 |
|---|---|---|
| committer | Jan Sucan <sucanjan@fit.cvut.cz> | 2019-06-04 14:34:27 +0200 |
| commit | dc8703206e3f0f69605c56d0e1127f7e17f3476a (patch) | |
| tree | 166823a741dc420c10d54250cb53d1e3a6b74faf /testing/yup-comm/protocol/frame.h | |
Initial commit
Diffstat (limited to 'testing/yup-comm/protocol/frame.h')
| -rw-r--r-- | testing/yup-comm/protocol/frame.h | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/testing/yup-comm/protocol/frame.h b/testing/yup-comm/protocol/frame.h new file mode 100644 index 0000000..d101968 --- /dev/null +++ b/testing/yup-comm/protocol/frame.h @@ -0,0 +1,56 @@ +/* Author: Jan Sucan */ + +#ifndef FRAME_H_ +#define FRAME_H_ + +#include "return_codes.h" + +#include <stdlib.h> +#include <stdint.h> +#include <stdbool.h> + +#define FRAME_MAX_BYTES 254 + +#define FRAME_MAX_DATA_BYTES 240 + +typedef struct { + uint8_t raw[FRAME_MAX_BYTES]; +} frame_t; + +void frame_init (frame_t * const frame, uint8_t protocol_version); +yup_retcode_t frame_receive(frame_t * const frame, uint8_t protocol_version); +void frame_send (frame_t * const frame); + +// Protocol version +uint8_t frame_get_protocol_version(const frame_t * const frame); +void frame_set_protocol_version(frame_t * const frame, uint8_t v); +// Flags +void frame_set_flag_ack(frame_t * const frame); +bool frame_is_flag_ack_set(const frame_t * const frame); +void frame_set_flag_rej(frame_t * const frame); +bool frame_is_flag_rej_set(const frame_t * const frame); +void frame_set_flag_lor(frame_t * const frame); +bool frame_is_flag_lor_set(const frame_t * const frame); +// Data length +uint8_t frame_get_data_length(const frame_t * const frame); +void frame_set_data_length(frame_t * const frame, uint8_t v); +// Relation ID +uint16_t frame_get_relation_id(const frame_t * const frame); +void frame_set_relation_id(frame_t * const frame, uint16_t v); +// Seq number +uint16_t frame_get_seq_number(const frame_t * const frame); +void frame_set_seq_number(frame_t * const frame, uint16_t v); +// Header checksum +uint32_t frame_get_header_checksum(const frame_t * const frame); +void frame_set_header_checksum(frame_t * const frame); +// Data +void frame_get_data(const frame_t * const frame, uint8_t * const data, uint8_t * const data_length); +void frame_set_data(frame_t * const frame, const uint8_t * const data, uint8_t num); +// Data checksum +uint32_t frame_get_data_checksum(const frame_t * const frame); +void frame_set_data_checksum(frame_t * const frame); + +// Ostatne +uint8_t frame_get_length(const frame_t * const frame); + +#endif /* FRAME_H_ */ |
