MIP SDK  0.0.1
MicroStrain Communications Library for embedded systems
mip_packet.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "mip_types.h"
4 
5 #ifdef __cplusplus
6 namespace mip{
7 namespace C {
8 extern "C" {
9 #endif
10 
11 
15 
30 
31 
32 typedef uint_least16_t packet_length;
33 
43 typedef struct mip_packet
44 {
45  uint8_t* _buffer;
46  uint_least16_t _buffer_length;
48 
49 
59 
60 void mip_packet_create(mip_packet* packet, uint8_t* buffer, size_t buffer_size, uint8_t descriptor_set);
61 
62 bool mip_packet_add_field(mip_packet* packet, uint8_t field_descriptor, const uint8_t* payload, uint8_t payload_length);
63 remaining_count mip_packet_alloc_field(mip_packet* packet, uint8_t field_descriptor, uint8_t payload_length, uint8_t** payload_ptr_out);
64 remaining_count mip_packet_realloc_last_field(mip_packet* packet, uint8_t* payload_ptr, uint8_t new_payload_length);
66 
68 
69 void mip_packet_reset(mip_packet* packet, uint8_t descriptor_set);
70 
84 
85 void mip_packet_from_buffer(mip_packet* packet, uint8_t* buffer, size_t length);
86 
87 uint8_t mip_packet_descriptor_set(const mip_packet* packet);
89 uint8_t mip_packet_payload_length(const mip_packet* packet);
90 uint8_t* mip_packet_buffer(mip_packet* packet);
91 const uint8_t* mip_packet_pointer(const mip_packet* packet);
92 const uint8_t* mip_packet_payload(const mip_packet* packet);
93 uint16_t mip_packet_checksum_value(const mip_packet* packet);
94 uint16_t mip_packet_compute_checksum(const mip_packet* packet);
95 
96 
97 bool mip_packet_is_sane(const mip_packet* packet);
98 bool mip_packet_is_valid(const mip_packet* packet);
99 bool mip_packet_is_empty(const mip_packet* packet);
100 
103 
104 bool mip_packet_is_data(const mip_packet* packet);
105 
110 
111 #ifdef __cplusplus
112 } // namespace mip
113 } // namespace C
114 } // extern "C"
115 #endif
bool mip_packet_is_empty(const mip_packet *packet)
bool mip_packet_is_valid(const mip_packet *packet)
uint8_t * mip_packet_buffer(mip_packet *packet)
void mip_packet_from_buffer(mip_packet *packet, uint8_t *buffer, size_t length)
uint8_t mip_packet_payload_length(const mip_packet *packet)
const uint8_t * mip_packet_pointer(const mip_packet *packet)
remaining_count mip_packet_remaining_space(const mip_packet *packet)
bool mip_packet_is_data(const mip_packet *packet)
uint8_t mip_packet_descriptor_set(const mip_packet *packet)
uint16_t mip_packet_checksum_value(const mip_packet *packet)
uint16_t mip_packet_compute_checksum(const mip_packet *packet)
packet_length mip_packet_total_length(const mip_packet *packet)
packet_length mip_packet_buffer_size(const mip_packet *packet)
const uint8_t * mip_packet_payload(const mip_packet *packet)
bool mip_packet_is_sane(const mip_packet *packet)
void mip_packet_reset(mip_packet *packet, uint8_t descriptor_set)
remaining_count mip_packet_alloc_field(mip_packet *packet, uint8_t field_descriptor, uint8_t payload_length, uint8_t **payload_ptr_out)
remaining_count mip_packet_cancel_last_field(mip_packet *packet, uint8_t *payload_ptr)
remaining_count mip_packet_realloc_last_field(mip_packet *packet, uint8_t *payload_ptr, uint8_t new_payload_length)
void mip_packet_create(mip_packet *packet, uint8_t *buffer, size_t buffer_size, uint8_t descriptor_set)
bool mip_packet_add_field(mip_packet *packet, uint8_t field_descriptor, const uint8_t *payload, uint8_t payload_length)
void mip_packet_finalize(mip_packet *packet)
uint_least16_t packet_length
Type used for the length of a MIP packet.
Definition: mip_packet.h:32
struct mip::C::mip_packet mip_packet
Structure representing a MIP Packet.
int_least16_t remaining_count
Definition: mip_types.h:16
A collection of C++ classes and functions covering the full mip api.
Definition: commands_3dm.c:11
Structure representing a MIP Packet.
Definition: mip_packet.h:44