MIP SDK  0.0.1
MicroStrain Communications Library for embedded systems
mip_cmdqueue.h
Go to the documentation of this file.
1 
2 #pragma once
3 
4 #include <stdint.h>
5 
6 #include "mip_types.h"
7 #include "mip_result.h"
8 #include "mip_packet.h"
9 
10 #ifdef __cplusplus
11 namespace mip {
12 namespace C {
13 extern "C" {
14 #endif
15 
19 
26 
27 
32 
40 
41 typedef struct mip_pending_cmd
42 {
43  struct mip_pending_cmd* _next;
44  uint8_t* _response_buffer;
45  union {
46  timeout_type _extra_timeout;
47  timestamp_type _timeout_time;
48  timestamp_type _reply_time;
49  };
50  uint8_t _descriptor_set;
51  uint8_t _field_descriptor;
52  uint8_t _response_descriptor;
53  union {
54  uint8_t _response_buffer_size;
55  uint8_t _response_length;
56  };
57  volatile enum mip_cmd_result _status;
59 
60 void mip_pending_cmd_init(mip_pending_cmd* cmd, uint8_t descriptor_set, uint8_t field_descriptor);
61 void mip_pending_cmd_init_with_timeout(mip_pending_cmd* cmd, uint8_t descriptor_set, uint8_t field_descriptor, timeout_type additional_time);
62 void mip_pending_cmd_init_with_response(mip_pending_cmd* cmd, uint8_t descriptor_set, uint8_t field_descriptor, uint8_t response_descriptor, uint8_t* response_buffer, uint8_t response_buffer_size);
63 void mip_pending_cmd_init_full(mip_pending_cmd* cmd, uint8_t descriptor_set, uint8_t field_descriptor, uint8_t response_descriptor, uint8_t* response_buffer, uint8_t response_size, timeout_type additional_time);
64 
66 
67 const uint8_t* mip_pending_cmd_response(const mip_pending_cmd* cmd);
69 
71 
81 
91 
92 typedef struct mip_cmd_queue
93 {
97 
98 void mip_cmd_queue_init(mip_cmd_queue* queue, timeout_type base_reply_timeout);
101 
103 
105 
108 
110 
111 
116 
117 #ifdef __cplusplus
118 } // namespace C
119 } // namespace mip
120 } // extern "C"
121 #endif
struct mip::C::mip_cmd_queue mip_cmd_queue
Holds a list of pending commands.
timeout_type mip_cmd_queue_base_reply_timeout(const mip_cmd_queue *queue)
void mip_cmd_queue_dequeue(mip_cmd_queue *queue, mip_pending_cmd *cmd)
void mip_cmd_queue_init(mip_cmd_queue *queue, timeout_type base_reply_timeout)
void mip_cmd_queue_update(mip_cmd_queue *queue, timestamp_type timestamp)
void mip_cmd_queue_process_packet(mip_cmd_queue *queue, const mip_packet *packet, timestamp_type timestamp)
void mip_cmd_queue_clear(mip_cmd_queue *queue)
void mip_cmd_queue_enqueue(mip_cmd_queue *queue, mip_pending_cmd *cmd)
void mip_cmd_queue_set_base_reply_timeout(mip_cmd_queue *queue, timeout_type timeout)
const uint8_t * mip_pending_cmd_response(const mip_pending_cmd *cmd)
enum mip_cmd_result mip_pending_cmd_status(const mip_pending_cmd *cmd)
void mip_pending_cmd_init(mip_pending_cmd *cmd, uint8_t descriptor_set, uint8_t field_descriptor)
void mip_pending_cmd_init_with_response(mip_pending_cmd *cmd, uint8_t descriptor_set, uint8_t field_descriptor, uint8_t response_descriptor, uint8_t *response_buffer, uint8_t response_buffer_size)
uint8_t mip_pending_cmd_response_length(const mip_pending_cmd *cmd)
void mip_pending_cmd_init_with_timeout(mip_pending_cmd *cmd, uint8_t descriptor_set, uint8_t field_descriptor, timeout_type additional_time)
void mip_pending_cmd_init_full(mip_pending_cmd *cmd, uint8_t descriptor_set, uint8_t field_descriptor, uint8_t response_descriptor, uint8_t *response_buffer, uint8_t response_size, timeout_type additional_time)
bool mip_pending_cmd_check_timeout(const mip_pending_cmd *cmd, timestamp_type now)
struct mip::C::mip_pending_cmd mip_pending_cmd
Represents a command awaiting a reply from the device.
mip_cmd_result
Represents the status of a MIP command.
Definition: mip_result.h:24
timestamp_type timeout_type
Definition: mip_types.h:35
uint64_t timestamp_type
Type used for packet timestamps and timeouts.
Definition: mip_types.h:32
A collection of C++ classes and functions covering the full mip api.
Definition: commands_3dm.c:11
Holds a list of pending commands.
Definition: mip_cmdqueue.h:93
timeout_type _base_timeout
Definition: mip_cmdqueue.h:95
mip_pending_cmd * _first_pending_cmd
Definition: mip_cmdqueue.h:94
Structure representing a MIP Packet.
Definition: mip_packet.h:44
Represents a command awaiting a reply from the device.
Definition: mip_cmdqueue.h:42