com_manager.h
Go to the documentation of this file.
1 /*
2 MIT LICENSE
3 
4 Copyright (c) 2014-2021 Inertial Sense, Inc. - http://inertialsense.com
5 
6 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files(the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions :
7 
8 The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
9 
10 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
11 */
12 
13 #ifndef COM_MANAGER_H
14 #define COM_MANAGER_H
15 
16 #ifdef __cplusplus
17 extern "C" {
18 #endif
19 
20 #include <stdint.h>
21 #include "ISComm.h"
22 #include "linked_list.h"
23 
24 // allow packet continuation or not. If enabled, an extra 1K buffer is allocated globally for each pHandle instance.
25 #define ENABLE_PACKET_CONTINUATION 0
26 
30 // typedef enum
31 // {
32 // /** No pass through */
33 // COM_MANAGER_PASS_THROUGH_NONE = 0,
34 //
35 // /** UBLOX pass through */
36 // COM_MANAGER_PASS_THROUGH_UBLOX = UBLOX_START_BYTE1,
37 //
38 // /** RTCM3 pass through */
39 // COM_MANAGER_PASS_THROUGH_RTCM3 = RTCM3_START_BYTE
40 // } com_manager_pass_through_t;
41 
42 /* Contains data that determines what messages are being broadcast */
43 typedef struct
44 {
46 
47  /* Broadcast specific data header (i.e. data id, size and offset) */
49 
50  /* Broadcast period counter */
51  int32_t counter;
52 
53  /* Millisecond broadcast period intervals. -1 = send once. 0 = disabled/unused/don't send. */
54  int32_t period;
55 
56  /* Port to broadcast on. */
57  int32_t pHandle;
59 
60 /* Contains data to implement ensured packet delivery */
61 typedef struct
62 {
63  /* Packet struct */
65 
66  /* Packet contents/body */
67  uint8_t pktBody[PKT_BUF_SIZE];
68 
69  /* Count down counter between retries. < 0 means disabled. -2 means no more enabled beyond this. */
70  int counter;
71 
72  /* Port packet was sent on */
73  int pHandle;
75 
77 typedef struct
78 {
80  uint32_t readCounter;
81 
83  uint32_t rxPktCount;
84 
86  uint32_t rxError;
87 
90 
95  uint8_t flags;
96 
98 
100 typedef struct
101 {
103  uint32_t broadcastMsgSize; // MAX_NUM_BCAST_MSGS * sizeof(broadcast_msg_t)
104 
106  uint32_t ensuredPacketsSize; // cmInstance->maxEnsuredPackets * sizeof(ensured_pkt_t)
107 
109 
112 #define MAX_NUM_BCAST_MSGS 4
113 
114 // Convenience macros for creating Com Manager buffers
115 #define COM_MANAGER_BUF_SIZE_BCAST_MSG(max_num_bcast_msgs) ((max_num_bcast_msgs)*sizeof(broadcast_msg_t))
116 #define COM_MANAGER_BUF_SIZE_ENSURED_PKTS(max_num_ensured_pkts) ((max_num_ensured_pkts)*sizeof(ensured_pkt_t))
117 
118 // com manager instance / handle is a void*
119 typedef void* CMHANDLE;
120 
121 // com manager callback prototypes
122 // readFnc read data from the serial port represented by pHandle - return number of bytes read
123 typedef int(*pfnComManagerRead)(CMHANDLE cmHandle, int pHandle, uint8_t *buffer, int numberOfBytes);
124 
125 // sendFnc send data to the serial port represented by pHandle - return number of bytes written
126 typedef int(*pfnComManagerSend)(CMHANDLE cmHandle, int pHandle, unsigned char* buffer, int numberOfBytes);
127 
128 // txFreeFnc optional, return the number of free bytes in the send buffer for the serial port represented by pHandle
129 typedef int(*pfnComManagerSendBufferAvailableBytes)(CMHANDLE cmHandle, int pHandle);
130 
131 // pstRxFnc optional, called after data is sent to the serial port represented by pHandle
132 typedef void(*pfnComManagerPostRead)(CMHANDLE cmHandle, int pHandle, p_data_t* dataRead);
133 
134 // pstAckFnc optional, called after an ACK is received by the serial port represented by pHandle
135 typedef void(*pfnComManagerPostAck)(CMHANDLE cmHandle, int pHandle, p_ack_t* ack, unsigned char packetIdentifier);
136 
137 // disableBcastFnc optional, mostly for internal use, this can be left as 0 or NULL
138 typedef void(*pfnComManagerDisableBroadcasts)(CMHANDLE cmHandle, int pHandle);
139 
140 // Called right before data is to be sent. Data is not sent if this callback returns 0.
141 typedef int(*pfnComManagerPreSend)(CMHANDLE cmHandle, int pHandle);
142 
143 // ASCII message handler function, return 1 if message handled
144 // typedef int(*pfnComManagerAsciiMessageHandler)(CMHANDLE cmHandle, int pHandle, unsigned char* messageId, unsigned char* line, int lineLength);
145 
146 // Generic message handler function, return 1 if message handled
147 typedef int(*pfnComManagerGenMsgHandler)(CMHANDLE cmHandle, int pHandle, const unsigned char* msg, int msgSize);
148 
149 // pass through handler
150 // typedef int(*pfnComManagerPassThrough)(CMHANDLE cmHandle, com_manager_pass_through_t passThroughType, int pHandle, const unsigned char* data, int dataLength);
151 
152 // broadcast message handler
153 typedef int(*pfnComManagerAsapMsg)(CMHANDLE cmHandle, int pHandle, p_data_get_t* req);
154 
155 /* Contains callback information for a before and after send for a data structure */
156 typedef struct
157 {
158  /* Pointer and size of entire data struct (not sub portion that is communicated) */
160 
161  /* Callback function pointer, used to prepare data before send */
163 
164  /* Callback function pointer, used to prepare data after received */
166 
167  /* Packet type to use */
168  uint8_t pktFlags;
170 
171 typedef struct
172 {
173  // Comm instances
175 
176  // Comm instance data buffer
177  uint8_t comm_buffer[PKT_BUF_SIZE];
178 
179  // Current status
181 
182 #if ENABLE_PACKET_CONTINUATION
183 
184  // Continuation data for packets
185  p_data_t con;
186 
187 #endif
188 
190 
191 typedef struct
192 {
193  // reads n bytes into buffer from the source (usually a serial port)
195 
196  // write data to the destination (usually a serial port)
198 
199  // bytes free in Tx buffer (used to check if packet, keeps us from overflowing the Tx buffer)
201 
202  // Callback function pointer, used to respond to data input
204 
205  // Callback function pointer, used to respond to ack
207 
208  // Callback function pointer, used when disabling all broadcast messages
210 
211  // Pointer to local data and data specific callback functions
213 
214  // Array of port
216 
217  // ensured packets
219 
220  broadcast_msg_t* broadcastMessages; // MAX_NUM_BCAST_MSGS slots
221 
223 
224  // Number of communication ports
225  int32_t numHandles;
226 
227  // max number of packets to ensured delivery at one time. Adjust based on available memory.
229 
230  // processing interval
232 
233  // Ensure retry count
235 
236  // user defined pointer
237  void* userPointer;
238 
239  // Broadcast message handler. Called whenever we get a message broadcast request or message disable command.
241 
242  // Message handler - ASCII
244 
245  // Message handler - Ublox
247 
248  // Message handler - RTCM3
250 
251 } com_manager_t;
252 
253 
254 // get the global instance of the com manager - this is only needed if you are working with multiple com managers and need to compare instances
255 CMHANDLE comManagerGetGlobal(void);
256 
279 int comManagerInit
280 (
281  int numHandles,
282  int maxEnsuredPackets,
283  int stepPeriodMilliseconds,
284  int retryCount,
285  pfnComManagerRead readFnc,
286  pfnComManagerSend sendFnc,
288  pfnComManagerPostRead pstRxFnc,
289  pfnComManagerPostAck pstAckFnc,
290  pfnComManagerDisableBroadcasts disableBcastFnc,
291  com_manager_init_t *buffers,
292  com_manager_port_t *cmPorts
293 );
294 
295 // Initialize an instance to a com manager that can be passed to instance functions and can later be freed with freeComManagerInstance
296 // this function may be called multiple times. Return 0 on success, -1 on failure.
298 (
299  CMHANDLE cmHandle,
300  int numHandles,
301  int maxEnsuredPackets,
302  int stepPeriodMilliseconds,
303  int retryCount,
304  pfnComManagerRead readFnc,
305  pfnComManagerSend sendFnc,
307  pfnComManagerPostRead pstRxFnc,
308  pfnComManagerPostAck pstAckFnc,
309  pfnComManagerDisableBroadcasts disableBcastFnc,
310  com_manager_init_t *buffers,
311  com_manager_port_t *cmPorts
312 );
313 
317 void comManagerStep(void);
318 void comManagerStepInstance(CMHANDLE cmInstance_);
319 void comManagerStepRxInstance(CMHANDLE cmInstance);
320 void comManagerStepTxInstance(CMHANDLE cmInstance);
321 
341 void comManagerGetData(int pHandle, uint32_t dataId, int offset, int size, int periodMultiple);
342 void comManagerGetDataInstance(CMHANDLE cmInstance, int pHandle, uint32_t dataId, int offset, int size, int periodMultiple);
343 
364 void comManagerGetDataRmc(int pHandle, uint64_t rmcBits, uint32_t rmcOptions);
365 void comManagerGetDataRmcInstance(CMHANDLE cmInstance, int pHandle, uint64_t rmcBits, uint32_t rmcOptions);
366 
379 int comManagerDisableData(int pHandle, uint32_t dataId);
380 int comManagerDisableDataInstance(CMHANDLE cmInstance, int pHandle, uint32_t dataId);
381 
404 int comManagerSend(int pHandle, uint8_t pktInfo, bufPtr_t* bodyHdr, bufPtr_t* txData, uint8_t pktFlags);
405 int comManagerSendInstance(CMHANDLE cmInstance, int pHandle, uint8_t pktInfo, bufPtr_t* bodyHdr, bufPtr_t* txData, uint8_t pktFlags);
406 
422 int comManagerSendData(int pHandle, uint32_t dataId, void* dataPtr, int dataSize, int dataOffset);
423 int comManagerSendDataInstance(CMHANDLE cmInstance, int pHandle, uint32_t dataId, void* dataPtr, int dataSize, int dataOffset);
424 
434 int comManagerSendEnsured(int pHandle, uint8_t pktInfo, unsigned char *data, unsigned int dataSize);
435 int comManagerSendEnsuredInstance(CMHANDLE cmInstance, int pHandle, uint8_t pktInfo, unsigned char *data, unsigned int dataSize);
436 
437 // INTERNAL FUNCTIONS...
449 int comManagerSendDataNoAck(int pHandle, uint32_t dataId, void* dataPtr, int dataSize, int dataOffset);
450 int comManagerSendDataNoAckInstance(CMHANDLE cmInstance, int pHandle, uint32_t dataId, void* dataPtr, int dataSize, int dataOffset);
451 
468 int comManagerSendRawData(int pHandle, uint32_t dataId, void* dataPtr, int dataSize, int dataOffset);
469 int comManagerSendRawDataInstance(CMHANDLE cmInstance, int pHandle, uint32_t dataId, void* dataPtr, int dataSize, int dataOffset);
470 
475 void comManagerDisableBroadcasts(int pHandle);
476 void comManagerDisableBroadcastsInstance(CMHANDLE cmInstance, int pHandle);
477 
484 com_manager_status_t* comManagerGetStatusInstance(CMHANDLE cmInstance, int pHandle);
485 
492 bufTxRxPtr_t* comManagerGetRegisteredDataInfoInstance(CMHANDLE cmInstance, uint32_t dataId);
493 
499 int comManagerGetDataRequest(int pHandle, p_data_get_t* req);
500 int comManagerGetDataRequestInstance(CMHANDLE cmInstance, int pHandle, p_data_get_t* req);
501 
519 void comManagerRegister(uint32_t dataId, pfnComManagerPreSend txFnc, pfnComManagerPostRead pstRxFnc, const void* txDataPtr, void* rxDataPtr, int dataSize, uint8_t pktFlags);
520 void comManagerRegisterInstance(CMHANDLE cmInstance, uint32_t dataId, pfnComManagerPreSend txFnc, pfnComManagerPostRead pstRxFnc, const void* txDataPtr, void* rxDataPtr, int dataSize, uint8_t pktFlags);
521 
531  pfnComManagerAsapMsg rmcHandler,
532  pfnComManagerGenMsgHandler asciiHandler,
533  pfnComManagerGenMsgHandler ubloxHandler,
534  pfnComManagerGenMsgHandler rtcm3Handler);
535 void comManagerSetCallbacksInstance(CMHANDLE cmInstance,
536  pfnComManagerAsapMsg rmcHandler,
537  pfnComManagerGenMsgHandler asciiHandler,
538  pfnComManagerGenMsgHandler ubloxHandler,
539  pfnComManagerGenMsgHandler rtcm3Handler);
540 
544 void comManagerAssignUserPointer(CMHANDLE cmInstance, void* userPointer);
545 
549 void* comManagerGetUserPointer(CMHANDLE cmInstance);
550 
556 int comManagerValidateBaudRate(unsigned int baudRate);
557 
558 #ifdef __cplusplus
559 }
560 #endif
561 
562 #endif // COM_MANAGER_H
packet_t pkt
Definition: com_manager.h:64
ensured_pkt_t * ensuredPackets
Definition: com_manager.h:218
int(* pfnComManagerSendBufferAvailableBytes)(CMHANDLE cmHandle, int pHandle)
Definition: com_manager.h:129
pfnComManagerGenMsgHandler cmMsgHandlerUblox
Definition: com_manager.h:246
pfnComManagerAsapMsg cmMsgHandlerRmc
Definition: com_manager.h:240
broadcast_msg_t * broadcastMessages
Definition: com_manager.h:220
void comManagerDisableBroadcastsInstance(CMHANDLE cmInstance, int pHandle)
Definition: com_manager.c:1062
int32_t counter
Definition: com_manager.h:51
int comManagerSendEnsuredInstance(CMHANDLE cmInstance, int pHandle, uint8_t pktInfo, unsigned char *data, unsigned int dataSize)
Definition: com_manager.c:670
ensured_pkt_t * ensuredPackets
Definition: com_manager.h:105
void(* pfnComManagerPostRead)(CMHANDLE cmHandle, int pHandle, p_data_t *dataRead)
Definition: com_manager.h:132
pfnComManagerPostRead pstRxFnc
Definition: com_manager.h:203
com_manager_status_t * comManagerGetStatusInstance(CMHANDLE cmInstance, int pHandle)
Definition: com_manager.c:492
pfnComManagerSendBufferAvailableBytes txFreeCallback
Definition: com_manager.h:200
pfnComManagerPostRead pstRxFnc
Definition: com_manager.h:165
void comManagerGetDataRmc(int pHandle, uint64_t rmcBits, uint32_t rmcOptions)
Definition: com_manager.c:539
uint32_t communicationErrorCount
Definition: com_manager.h:89
int(* pfnComManagerAsapMsg)(CMHANDLE cmHandle, int pHandle, p_data_get_t *req)
Definition: com_manager.h:153
broadcast_msg_t * broadcastMsg
Definition: com_manager.h:102
com_manager_status_t * comManagerGetStatus(int pHandle)
Definition: com_manager.c:487
int comManagerValidateBaudRate(unsigned int baudRate)
Definition: com_manager.c:1587
int comManagerSend(int pHandle, uint8_t pktInfo, bufPtr_t *bodyHdr, bufPtr_t *txData, uint8_t pktFlags)
Definition: com_manager.c:639
int32_t pHandle
Definition: com_manager.h:57
#define PKT_BUF_SIZE
Definition: ISComm.h:98
#define DID_COUNT
Definition: data_sets.h:138
int comManagerSendDataNoAck(int pHandle, uint32_t dataId, void *dataPtr, int dataSize, int dataOffset)
Definition: com_manager.c:577
void comManagerStepTxInstance(CMHANDLE cmInstance)
Definition: com_manager.c:397
int comManagerGetDataRequestInstance(CMHANDLE cmInstance, int pHandle, p_data_get_t *req)
Definition: com_manager.c:900
void(* pfnComManagerDisableBroadcasts)(CMHANDLE cmHandle, int pHandle)
Definition: com_manager.h:138
pfnComManagerRead readCallback
Definition: com_manager.h:194
void comManagerStepRxInstance(CMHANDLE cmInstance)
Definition: com_manager.c:300
void comManagerGetDataRmcInstance(CMHANDLE cmInstance, int pHandle, uint64_t rmcBits, uint32_t rmcOptions)
Definition: com_manager.c:544
p_data_hdr_t dataHdr
Definition: com_manager.h:48
void comManagerSetCallbacks(pfnComManagerAsapMsg rmcHandler, pfnComManagerGenMsgHandler asciiHandler, pfnComManagerGenMsgHandler ubloxHandler, pfnComManagerGenMsgHandler rtcm3Handler)
Definition: com_manager.c:453
void comManagerDisableBroadcasts(int pHandle)
Definition: com_manager.c:1057
pfnComManagerPreSend preTxFnc
Definition: com_manager.h:162
com_manager_port_t * ports
Definition: com_manager.h:215
int comManagerInitInstance(CMHANDLE cmHandle, int numHandles, int maxEnsuredPackets, int stepPeriodMilliseconds, int retryCount, pfnComManagerRead readFnc, pfnComManagerSend sendFnc, pfnComManagerSendBufferAvailableBytes txFreeFnc, pfnComManagerPostRead pstRxFnc, pfnComManagerPostAck pstAckFnc, pfnComManagerDisableBroadcasts disableBcastFnc, com_manager_init_t *buffers, com_manager_port_t *cmPorts)
Definition: com_manager.c:111
int32_t maxEnsuredPackets
Definition: com_manager.h:228
int comManagerSendInstance(CMHANDLE cmInstance, int pHandle, uint8_t pktInfo, bufPtr_t *bodyHdr, bufPtr_t *txData, uint8_t pktFlags)
Definition: com_manager.c:644
void comManagerSetCallbacksInstance(CMHANDLE cmInstance, pfnComManagerAsapMsg rmcHandler, pfnComManagerGenMsgHandler asciiHandler, pfnComManagerGenMsgHandler ubloxHandler, pfnComManagerGenMsgHandler rtcm3Handler)
Definition: com_manager.c:462
void comManagerRegisterInstance(CMHANDLE cmInstance, uint32_t dataId, pfnComManagerPreSend txFnc, pfnComManagerPostRead pstRxFnc, const void *txDataPtr, void *rxDataPtr, int dataSize, uint8_t pktFlags)
Definition: com_manager.c:252
bufTxRxPtr_t * comManagerGetRegisteredDataInfo(uint32_t dataId)
Definition: com_manager.c:878
int(* pfnComManagerGenMsgHandler)(CMHANDLE cmHandle, int pHandle, const unsigned char *msg, int msgSize)
Definition: com_manager.h:147
int comManagerSendEnsured(int pHandle, uint8_t pktInfo, unsigned char *data, unsigned int dataSize)
Definition: com_manager.c:665
void * CMHANDLE
Definition: com_manager.h:119
uint32_t broadcastMsgSize
Definition: com_manager.h:103
void * comManagerGetUserPointer(CMHANDLE cmInstance)
Definition: com_manager.c:482
is_comm_instance_t comm
Definition: com_manager.h:174
pfnComManagerSend sendPacketCallback
Definition: com_manager.h:197
void comManagerGetDataInstance(CMHANDLE cmInstance, int pHandle, uint32_t dataId, int offset, int size, int periodMultiple)
Definition: com_manager.c:521
int(* pfnComManagerSend)(CMHANDLE cmHandle, int pHandle, unsigned char *buffer, int numberOfBytes)
Definition: com_manager.h:126
int comManagerDisableData(int pHandle, uint32_t dataId)
Definition: com_manager.c:625
int(* pfnComManagerPreSend)(CMHANDLE cmHandle, int pHandle)
Definition: com_manager.h:141
int comManagerSendRawData(int pHandle, uint32_t dataId, void *dataPtr, int dataSize, int dataOffset)
Definition: com_manager.c:601
USBInterfaceDescriptor data
pkt_info_t pkt
Definition: com_manager.h:45
int comManagerSendData(int pHandle, uint32_t dataId, void *dataPtr, int dataSize, int dataOffset)
Definition: com_manager.c:553
int(* pfnComManagerRead)(CMHANDLE cmHandle, int pHandle, uint8_t *buffer, int numberOfBytes)
Definition: com_manager.h:123
int32_t ensureRetryCount
Definition: com_manager.h:234
com_manager_status_t status
Definition: com_manager.h:180
int32_t lastEnsuredPacketIndex
Definition: com_manager.h:222
int comManagerInit(int numHandles, int maxEnsuredPackets, int stepPeriodMilliseconds, int retryCount, pfnComManagerRead readFnc, pfnComManagerSend sendFnc, pfnComManagerSendBufferAvailableBytes txFreeFnc, pfnComManagerPostRead pstRxFnc, pfnComManagerPostAck pstAckFnc, pfnComManagerDisableBroadcasts disableBcastFnc, com_manager_init_t *buffers, com_manager_port_t *cmPorts)
Definition: com_manager.c:79
pfnComManagerGenMsgHandler cmMsgHandlerAscii
Definition: com_manager.h:243
pfnComManagerGenMsgHandler cmMsgHandlerRtcm3
Definition: com_manager.h:249
int comManagerSendRawDataInstance(CMHANDLE cmInstance, int pHandle, uint32_t dataId, void *dataPtr, int dataSize, int dataOffset)
Definition: com_manager.c:606
CMHANDLE comManagerGetGlobal(void)
Definition: com_manager.c:76
bufTxRxPtr_t * comManagerGetRegisteredDataInfoInstance(CMHANDLE cmInstance, uint32_t dataId)
Definition: com_manager.c:883
int comManagerDisableDataInstance(CMHANDLE cmInstance, int pHandle, uint32_t dataId)
Definition: com_manager.c:630
int32_t period
Definition: com_manager.h:54
pfnComManagerPostAck pstAckFnc
Definition: com_manager.h:206
int comManagerSendDataNoAckInstance(CMHANDLE cmInstance, int pHandle, uint32_t dataId, void *dataPtr, int dataSize, int dataOffset)
Definition: com_manager.c:582
void comManagerStepInstance(CMHANDLE cmInstance_)
Definition: com_manager.c:287
void comManagerRegister(uint32_t dataId, pfnComManagerPreSend txFnc, pfnComManagerPostRead pstRxFnc, const void *txDataPtr, void *rxDataPtr, int dataSize, uint8_t pktFlags)
Definition: com_manager.c:247
int32_t stepPeriodMilliseconds
Definition: com_manager.h:231
int32_t numHandles
Definition: com_manager.h:225
int comManagerSendDataInstance(CMHANDLE cmInstance, int pHandle, uint32_t dataId, void *dataPtr, int dataSize, int dataOffset)
Definition: com_manager.c:558
bufTxRxPtr_t dataSet
Definition: com_manager.h:159
pfnComManagerDisableBroadcasts disableBcastFnc
Definition: com_manager.h:209
int comManagerGetDataRequest(int pHandle, p_data_get_t *req)
Definition: com_manager.c:895
void comManagerAssignUserPointer(CMHANDLE cmInstance, void *userPointer)
Definition: com_manager.c:477
void comManagerStep(void)
Definition: com_manager.c:281
void * userPointer
Definition: com_manager.h:237
uint32_t ensuredPacketsSize
Definition: com_manager.h:106
void(* pfnComManagerPostAck)(CMHANDLE cmHandle, int pHandle, p_ack_t *ack, unsigned char packetIdentifier)
Definition: com_manager.h:135
void comManagerGetData(int pHandle, uint32_t dataId, int offset, int size, int periodMultiple)
Request data This function requests the specified data w/ offset and length for partial reads...
Definition: com_manager.c:516


inertial_sense_ros
Author(s):
autogenerated on Sun Feb 28 2021 03:17:57