MIP_SDK  v3.0.0-343-g605b467
MicroStrain Communications Library for embedded systems
mip_parser.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "mip_packet.h"
4 #include "mip_offsets.h"
5 
6 #include "mip_types.h"
7 
8 #ifdef __cplusplus
9 namespace mip {
10 namespace C {
11 extern "C" {
12 #endif
13 
20 
21 
37 
38 
48 typedef bool (*mip_packet_callback)(void* user, const mip_packet_view* packet, mip_timestamp timestamp);
49 
50 
58 typedef struct mip_parser
59 {
60  mip_timestamp _start_time;
61  mip_timeout _timeout;
62 
63  mip_packet_callback _callback;
64  void* _callback_object;
65 
66 #ifdef MIP_ENABLE_DIAGNOSTICS
67  uint32_t _diag_bytes_read;
68  uint32_t _diag_bytes_skipped;
69  uint32_t _diag_packet_bytes;
70  uint32_t _diag_valid_packets;
71  uint32_t _diag_invalid_packets;
72  uint32_t _diag_timeouts;
73 #endif // MIP_ENABLE_DIAGNOSTICS
74 
75  uint16_t _buffered_length;
76  uint8_t _buffer[MIP_PACKET_LENGTH_MAX];
77 
78 } mip_parser;
79 
80 
81 
82 #define MIP_PARSER_DEFAULT_TIMEOUT_MS 100
83 
84 
85 void mip_parser_init(mip_parser* parser, mip_packet_callback callback, void* callback_object, mip_timeout timeout);
86 size_t mip_parser_parse(mip_parser* parser, const uint8_t* input_buffer, size_t input_length, mip_timestamp timestamp);
87 void mip_parser_flush(mip_parser* parser);
88 
89 void mip_parser_reset(mip_parser* parser);
90 
91 uint_least16_t mip_parser_get_write_ptr(mip_parser* parser, uint8_t** ptr_out);
92 
93 //
94 // Accessors
95 //
96 
98 void mip_parser_set_timeout(mip_parser* parser, mip_timeout timeout);
99 
100 void mip_parser_set_callback(mip_parser* parser, mip_packet_callback callback, void* callback_object);
102 void* mip_parser_callback_object(const mip_parser* parser);
103 
105 
106 
107 //
108 // Diagnostics
109 //
110 
111 #ifdef MIP_ENABLE_DIAGNOSTICS
112 
113 uint32_t mip_parser_diagnostic_bytes_read(const mip_parser* parser);
114 uint32_t mip_parser_diagnostic_bytes_skipped(const mip_parser* parser);
115 uint32_t mip_parser_diagnostic_packet_bytes(const mip_parser* parser);
116 
117 uint32_t mip_parser_diagnostic_valid_packets(const mip_parser* parser);
118 uint32_t mip_parser_diagnostic_invalid_packets(const mip_parser* parser);
119 uint32_t mip_parser_diagnostic_timeouts(const mip_parser* parser);
120 
121 #endif // MIP_ENABLE_DIAGNOSTICS
122 
123 
124 //
125 // Misc
126 //
127 
128 mip_timeout mip_timeout_from_baudrate(uint32_t baudrate);
129 
133 
134 #ifdef __cplusplus
135 } // extern "C"
136 } // namespace C
137 } // namespace mip
138 #endif
mip_packet.h
mip::C::MIP_PACKET_LENGTH_MAX
@ MIP_PACKET_LENGTH_MAX
Definition: mip_offsets.h:28
mip::C::mip_parser_parse
size_t mip_parser_parse(mip_parser *parser, const uint8_t *input_buffer, size_t input_length, mip_timestamp timestamp)
Parse packets from a buffer.
Definition: mip_parser.c:187
mip
A collection of C++ classes and functions covering the full mip api.
Definition: commands_3dm.c:11
mip::C::mip_parser_set_callback
void mip_parser_set_callback(mip_parser *parser, mip_packet_callback callback, void *callback_object)
mip_parser_set_callback
Definition: mip_parser.c:464
mip::C::mip_parser_timeout
mip_timeout mip_parser_timeout(const mip_parser *parser)
Returns the packet timeout of the parser.
Definition: mip_parser.c:440
mip_types.h
mip::C::mip_parser_callback_object
void * mip_parser_callback_object(const mip_parser *parser)
mip_parser_callback
Definition: mip_parser.c:490
mip::C::mip_parser_set_timeout
void mip_parser_set_timeout(mip_parser *parser, mip_timeout timeout)
Changes the timeout of the MIP parser.
Definition: mip_parser.c:452
mip::C::mip_parser_current_timestamp
mip_timestamp mip_parser_current_timestamp(const mip_parser *parser)
Gets the timestamp of the last parsed packet.
Definition: mip_parser.c:513
mip::C::mip_packet_view
Structure representing a MIP Packet.
Definition: mip_packet.h:50
mip::C::mip_timeout
microstrain::C::microstrain_embedded_timestamp mip_timeout
Definition: mip_types.h:16
mip::C::mip_packet_callback
bool(* mip_packet_callback)(void *user, const mip_packet_view *packet, mip_timestamp timestamp)
Callback function which receives parsed MIP packets.
Definition: mip_parser.h:48
mip::C::mip_parser_flush
void mip_parser_flush(mip_parser *parser)
Processes all previously buffered data.
Definition: mip_parser.c:394
mip::C::mip_parser
MIP Parser state.
Definition: mip_parser.h:58
mip::C::mip_parser_callback
mip_packet_callback mip_parser_callback(const mip_parser *parser)
mip_parser_callback
Definition: mip_parser.c:477
mip::C::mip_parser_init
void mip_parser_init(mip_parser *parser, mip_packet_callback callback, void *callback_object, mip_timeout timeout)
Initializes the MIP parser.
Definition: mip_parser.c:32
mip::C::mip_parser_get_write_ptr
uint_least16_t mip_parser_get_write_ptr(mip_parser *parser, uint8_t **ptr_out)
Gets a pointer into which a small amount of data may be written for parsing.
Definition: mip_parser.c:427
mip::C::mip_parser_reset
void mip_parser_reset(mip_parser *parser)
Resets the MIP parser.
Definition: mip_parser.c:51
mip::C::mip_timeout_from_baudrate
mip_timeout mip_timeout_from_baudrate(uint32_t baudrate)
Computes an appropriate packet timeout for a given serial baud rate.
Definition: mip_parser.c:604
mip::C::mip_timestamp
microstrain::C::microstrain_embedded_timestamp mip_timestamp
Definition: mip_types.h:15
mip::C::mip_parser
struct mip::C::mip_parser mip_parser
MIP Parser state.
mip_offsets.h