callbackmanagerxda.cpp
Go to the documentation of this file.
1 
2 // Copyright (c) 2003-2021 Xsens Technologies B.V. or subsidiaries worldwide.
3 // All rights reserved.
4 //
5 // Redistribution and use in source and binary forms, with or without modification,
6 // are permitted provided that the following conditions are met:
7 //
8 // 1. Redistributions of source code must retain the above copyright notice,
9 // this list of conditions, and the following disclaimer.
10 //
11 // 2. Redistributions in binary form must reproduce the above copyright notice,
12 // this list of conditions, and the following disclaimer in the documentation
13 // and/or other materials provided with the distribution.
14 //
15 // 3. Neither the names of the copyright holders nor the names of their contributors
16 // may be used to endorse or promote products derived from this software without
17 // specific prior written permission.
18 //
19 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
20 // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
21 // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
22 // THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23 // SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
24 // OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25 // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY OR
26 // TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
27 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.THE LAWS OF THE NETHERLANDS
28 // SHALL BE EXCLUSIVELY APPLICABLE AND ANY DISPUTES SHALL BE FINALLY SETTLED UNDER THE RULES
29 // OF ARBITRATION OF THE INTERNATIONAL CHAMBER OF COMMERCE IN THE HAGUE BY ONE OR MORE
30 // ARBITRATORS APPOINTED IN ACCORDANCE WITH SAID RULES.
31 //
32 
33 
34 // Copyright (c) 2003-2021 Xsens Technologies B.V. or subsidiaries worldwide.
35 // All rights reserved.
36 //
37 // Redistribution and use in source and binary forms, with or without modification,
38 // are permitted provided that the following conditions are met:
39 //
40 // 1. Redistributions of source code must retain the above copyright notice,
41 // this list of conditions, and the following disclaimer.
42 //
43 // 2. Redistributions in binary form must reproduce the above copyright notice,
44 // this list of conditions, and the following disclaimer in the documentation
45 // and/or other materials provided with the distribution.
46 //
47 // 3. Neither the names of the copyright holders nor the names of their contributors
48 // may be used to endorse or promote products derived from this software without
49 // specific prior written permission.
50 //
51 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
52 // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
53 // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
54 // THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
55 // SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
56 // OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
57 // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY OR
58 // TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
59 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.THE LAWS OF THE NETHERLANDS
60 // SHALL BE EXCLUSIVELY APPLICABLE AND ANY DISPUTES SHALL BE FINALLY SETTLED UNDER THE RULES
61 // OF ARBITRATION OF THE INTERNATIONAL CHAMBER OF COMMERCE IN THE HAGUE BY ONE OR MORE
62 // ARBITRATORS APPOINTED IN ACCORDANCE WITH SAID RULES.
63 //
64 
65 #include "callbackmanagerxda.h"
66 #include <xscommon/xsens_mutex.h>
67 
68 using namespace xsens;
69 
73 {
76 };
77 
81 {
84 };
85 
104 {
105  m_callbackMutex = new MutexReadWrite;
106  m_handlerList = NULL;
107  m_managerList = NULL;
108 }
109 
113 {
114  try
115  {
116  clearChainedManagers();
117  clearCallbackHandlers(false);
118  delete m_callbackMutex;
119  }
120  catch (...)
121  {
122  }
123 }
124 
130 {
131  LockReadWrite locky(m_callbackMutex, LS_Write);
132  CallbackHandlerXdaItem* currentHdlr = m_handlerList;
133  while (currentHdlr)
134  {
135  CallbackHandlerXdaItem* next = currentHdlr->m_next;
136  delete currentHdlr;
137  currentHdlr = next;
138  }
139  m_handlerList = NULL;
140 
141  if (chain)
142  {
143  CallbackManagerItem* currentMgr = m_managerList;
144  while (currentMgr)
145  {
146  currentMgr->m_manager->clearCallbackHandlers(true);
147  currentMgr = currentMgr->m_next;
148  }
149  }
150 }
151 
159 {
160  if (!cb)
161  return;
162 
163  LockReadWrite locky(m_callbackMutex, LS_Write);
164 
165  if (chain)
166  {
167  CallbackManagerItem* current = m_managerList;
168  while (current)
169  {
170  current->m_manager->addCallbackHandler(cb, true);
171  current = current->m_next;
172  }
173  }
174 
175  if (!m_handlerList)
176  {
178  current->m_handler = cb;
179  current->m_next = NULL;
180  m_handlerList = current;
181  return;
182  }
183 
185  CallbackHandlerXdaItem* current = m_handlerList;
186  while (current)
187  {
188  if (current->m_handler == cb)
189  return;
190  last = current;
191  current = current->m_next;
192  }
193 
194  current = new CallbackHandlerXdaItem;
195  current->m_handler = cb;
196  current->m_next = NULL;
197  last->m_next = current;
198 }
199 
208 {
209  if (!cb)
210  return;
211 
212  LockReadWrite locky(m_callbackMutex, LS_Write);
213 
214  if (chain)
215  {
216  CallbackManagerItem* current = m_managerList;
217  while (current)
218  {
219  current->m_manager->removeCallbackHandler(cb, true);
220  current = current->m_next;
221  }
222  }
223 
224  CallbackHandlerXdaItem* last = NULL;
225  CallbackHandlerXdaItem* current = m_handlerList;
226  while (current)
227  {
228  if (current->m_handler == cb)
229  {
230  if (last)
231  last->m_next = current->m_next;
232  else
233  m_handlerList = current->m_next;
234 
235  delete current;
236  return;
237  }
238  last = current;
239  current = current->m_next;
240  }
241 }
242 
246 {
247  LockReadWrite locky(m_callbackMutex, LS_Write);
248  CallbackManagerItem* current = m_managerList;
249  while (current)
250  {
251  CallbackManagerItem* next = current->m_next;
252  delete current;
253  current = next;
254  }
255  m_managerList = NULL;
256 }
257 
263 {
264  if (!cm || cm == this)
265  return;
266 
267  LockReadWrite locky(m_callbackMutex, LS_Write);
268 
269  if (!m_managerList)
270  {
272  current->m_manager = cm;
273  current->m_next = NULL;
274  m_managerList = current;
275  return;
276  }
277 
278  CallbackManagerItem* last;
279  CallbackManagerItem* current = m_managerList;
280  while (current)
281  {
282  if (current->m_manager == cm)
283  return;
284  last = current;
285  current = current->m_next;
286  }
287 
288  current = new CallbackManagerItem;
289  current->m_manager = cm;
290  current->m_next = NULL;
291  last->m_next = current;
292 }
293 
299 {
300  if (!cm)
301  return;
302 
303  LockReadWrite locky(m_callbackMutex, LS_Write);
304 
305  CallbackManagerItem* last = NULL;
306  CallbackManagerItem* current = m_managerList;
307  while (current)
308  {
309  if (current->m_manager == cm)
310  {
311  if (last)
312  last->m_next = current->m_next;
313  else
314  m_managerList = current->m_next;
315 
316  delete current;
317  return;
318  }
319  last = current;
320  current = current->m_next;
321  }
322 }
323 
329 {
330  cm->copyCallbackHandlersFrom(this, chain);
331 }
332 
338 {
339  LockReadWrite locky(m_callbackMutex, LS_Write);
341  CallbackHandlerXdaItem* current = cm->m_handlerList;
342  while (current)
343  {
344  addCallbackHandler(current->m_handler, chain);
345  current = current->m_next;
346  }
347 }
348 
351 {
352  LockReadWrite locky(m_callbackMutex, LS_Read);
353  CallbackHandlerXdaItem* current = m_handlerList;
354  while (current)
355  {
356  if (current->m_handler->m_onDeviceStateChanged)
357  current->m_handler->m_onDeviceStateChanged(current->m_handler, dev, newState, oldState);
358  current = current->m_next;
359  }
360 }
361 
364 {
365  LockReadWrite locky(m_callbackMutex, LS_Read);
366  CallbackHandlerXdaItem* current = m_handlerList;
367  while (current)
368  {
369  if (current->m_handler->m_onLiveDataAvailable)
370  current->m_handler->m_onLiveDataAvailable(current->m_handler, dev, packet);
371  current = current->m_next;
372  }
373 }
374 
377 {
378  LockReadWrite locky(m_callbackMutex, LS_Read);
379  CallbackHandlerXdaItem* current = m_handlerList;
380  while (current)
381  {
382  if (current->m_handler->m_onAllLiveDataAvailable)
383  current->m_handler->m_onAllLiveDataAvailable(current->m_handler, devs, packets);
384  current = current->m_next;
385  }
386 }
387 
389 void CallbackManagerXda::onMissedPackets(XsDevice* dev, int count, int first, int last)
390 {
391  LockReadWrite locky(m_callbackMutex, LS_Read);
392  CallbackHandlerXdaItem* current = m_handlerList;
393  while (current)
394  {
395  if (current->m_handler->m_onMissedPackets)
396  current->m_handler->m_onMissedPackets(current->m_handler, dev, count, first, last);
397  current = current->m_next;
398  }
399 }
400 
403 {
404  LockReadWrite locky(m_callbackMutex, LS_Read);
405  CallbackHandlerXdaItem* current = m_handlerList;
406  while (current)
407  {
408  if (current->m_handler->m_onDataUnavailable)
409  current->m_handler->m_onDataUnavailable(current->m_handler, dev, packetId);
410  current = current->m_next;
411  }
412 }
413 
416 {
417  LockReadWrite locky(m_callbackMutex, LS_Read);
418  CallbackHandlerXdaItem* current = m_handlerList;
419  while (current)
420  {
421  if (current->m_handler->m_onWakeupReceived)
422  current->m_handler->m_onWakeupReceived(current->m_handler, dev);
423  current = current->m_next;
424  }
425 }
426 
428 void CallbackManagerXda::onProgressUpdated(XsDevice* dev, int curr, int total, const XsString* identifier)
429 {
430  LockReadWrite locky(m_callbackMutex, LS_Read);
431  CallbackHandlerXdaItem* current = m_handlerList;
432  while (current)
433  {
434  if (current->m_handler->m_onProgressUpdated)
435  current->m_handler->m_onProgressUpdated(current->m_handler, dev, curr, total, identifier);
436  current = current->m_next;
437  }
438 }
439 
442 {
443  LockReadWrite locky(m_callbackMutex, LS_Read);
444  CallbackHandlerXdaItem* current = m_handlerList;
445  bool rv = true;
446  while (current)
447  {
448  if (current->m_handler->m_onWriteMessageToLogFile)
449  rv = current->m_handler->m_onWriteMessageToLogFile(current->m_handler, dev, message) && rv;
450  current = current->m_next;
451  }
452  return rv ? 1 : 0;
453 }
454 
457 {
458  LockReadWrite locky(m_callbackMutex, LS_Read);
459  CallbackHandlerXdaItem* current = m_handlerList;
460  while (current)
461  {
462  if (current->m_handler->m_onBufferedDataAvailable)
463  current->m_handler->m_onBufferedDataAvailable(current->m_handler, dev, data);
464  current = current->m_next;
465  }
466 }
467 
470 {
471  LockReadWrite locky(m_callbackMutex, LS_Read);
472  CallbackHandlerXdaItem* current = m_handlerList;
473  while (current)
474  {
476  current->m_handler->m_onAllBufferedDataAvailable(current->m_handler, devs, packets);
477  current = current->m_next;
478  }
479 }
480 
483 {
484  LockReadWrite locky(m_callbackMutex, LS_Read);
485  CallbackHandlerXdaItem* current = m_handlerList;
486  while (current)
487  {
488  if (current->m_handler->m_onConnectivityChanged)
489  current->m_handler->m_onConnectivityChanged(current->m_handler, dev, newState);
490  current = current->m_next;
491  }
492 }
493 
496 {
497  LockReadWrite locky(m_callbackMutex, LS_Read);
498  CallbackHandlerXdaItem* current = m_handlerList;
499  while (current)
500  {
501  if (current->m_handler->m_onInfoResponse)
502  current->m_handler->m_onInfoResponse(current->m_handler, dev, request);
503  current = current->m_next;
504  }
505 }
506 
509 {
510  LockReadWrite locky(m_callbackMutex, LS_Read);
511  CallbackHandlerXdaItem* current = m_handlerList;
512  while (current)
513  {
514  if (current->m_handler->m_onError)
515  current->m_handler->m_onError(current->m_handler, dev, error);
516  current = current->m_next;
517  }
518 }
519 
522 {
523  LockReadWrite locky(m_callbackMutex, LS_Read);
524  CallbackHandlerXdaItem* current = m_handlerList;
525  while (current)
526  {
527  if (current->m_handler->m_onNonDataMessage)
528  current->m_handler->m_onNonDataMessage(current->m_handler, dev, message);
529  current = current->m_next;
530  }
531 }
532 
535 {
536  LockReadWrite locky(m_callbackMutex, LS_Read);
537  CallbackHandlerXdaItem* current = m_handlerList;
538  while (current)
539  {
540  if (current->m_handler->m_onMessageDetected)
541  current->m_handler->m_onMessageDetected(current->m_handler, dev, type, rawMessage);
542  current = current->m_next;
543  }
544 }
545 
548 {
549  LockReadWrite locky(m_callbackMutex, LS_Read);
550  CallbackHandlerXdaItem* current = m_handlerList;
551  while (current)
552  {
554  current->m_handler->m_onMessageReceivedFromDevice(current->m_handler, dev, message);
555  current = current->m_next;
556  }
557 }
558 
561 {
562  LockReadWrite locky(m_callbackMutex, LS_Read);
563  CallbackHandlerXdaItem* current = m_handlerList;
564  while (current)
565  {
566  if (current->m_handler->m_onMessageSentToDevice)
567  current->m_handler->m_onMessageSentToDevice(current->m_handler, dev, message);
568  current = current->m_next;
569  }
570 }
571 
574 {
575  LockReadWrite locky(m_callbackMutex, LS_Read);
576  CallbackHandlerXdaItem* current = m_handlerList;
577  while (current)
578  {
579  if (current->m_handler->m_onDataAvailable)
580  current->m_handler->m_onDataAvailable(current->m_handler, dev, packet);
581  current = current->m_next;
582  }
583 }
584 
587 {
588  LockReadWrite locky(m_callbackMutex, LS_Read);
589  CallbackHandlerXdaItem* current = m_handlerList;
590  while (current)
591  {
592  if (current->m_handler->m_onAllDataAvailable)
593  current->m_handler->m_onAllDataAvailable(current->m_handler, devs, packets);
594  current = current->m_next;
595  }
596 }
597 
600 {
601  LockReadWrite locky(m_callbackMutex, LS_Read);
602  CallbackHandlerXdaItem* current = m_handlerList;
603  while (current)
604  {
605  if (current->m_handler->m_onRecordedDataAvailable)
606  current->m_handler->m_onRecordedDataAvailable(current->m_handler, dev, packet);
607  current = current->m_next;
608  }
609 }
610 
613 {
614  LockReadWrite locky(m_callbackMutex, LS_Read);
615  CallbackHandlerXdaItem* current = m_handlerList;
616  while (current)
617  {
619  current->m_handler->m_onAllRecordedDataAvailable(current->m_handler, devs, packets);
620  current = current->m_next;
621  }
622 }
623 
625 {
626  LockReadWrite locky(m_callbackMutex, LS_Read);
627  CallbackHandlerXdaItem* current = m_handlerList;
628  while (current)
629  {
630  if (current->m_handler->m_onTransmissionRequest)
631  current->m_handler->m_onTransmissionRequest(current->m_handler, channelId, data);
632  current = current->m_next;
633  }
634 }
635 
638 {
639  LockReadWrite locky(m_callbackMutex, LS_Read);
640  CallbackHandlerXdaItem* current = m_handlerList;
641  while (current)
642  {
643  if (current->m_handler->m_onRestoreCommunication)
644  current->m_handler->m_onRestoreCommunication(current->m_handler, portName, result);
645  current = current->m_next;
646  }
647 }
XsCallbackPlainC::m_onProgressUpdated
void(* m_onProgressUpdated)(struct XsCallbackPlainC *thisPtr, struct XsDevice *dev, int current, int total, const struct XsString *identifier)
Called when a long-duration operation has made some progress or has completed. Examples include loadL...
Definition: xscallbackplainc.h:140
CallbackManagerXda::addChainedManager
void addChainedManager(CallbackManagerXda *cm)
Add a chained manager to the list.
Definition: callbackmanagerxda.cpp:262
CallbackManagerXda::~CallbackManagerXda
~CallbackManagerXda()
Destructor, clears the callback list.
Definition: callbackmanagerxda.cpp:112
CallbackManagerXda::copyCallbackHandlersTo
void copyCallbackHandlersTo(CallbackManagerXda *cm, bool chain=true)
Copy all handlers from this manager into cm.
Definition: callbackmanagerxda.cpp:328
CallbackManagerXda::onInfoResponse
void onInfoResponse(XsDevice *dev, XsInfoRequest request) override
The XsCallback::onInfoResponse() callback forwarding function.
Definition: callbackmanagerxda.cpp:495
xsens::MutexReadWrite
A readers-writer mutex class.
Definition: xsens_mutex.h:248
XsDataPacketPtrArray
A list of XsDataPacketPtr values.
CallbackManagerXda::onAllRecordedDataAvailable
void onAllRecordedDataAvailable(XsDevicePtrArray *devs, const XsDataPacketPtrArray *packets) override
The XsCallback::onAllRecordedDataAvailable() callback forwarding function.
Definition: callbackmanagerxda.cpp:612
xsens::LS_Write
@ LS_Write
Definition: xsens_mutex.h:127
XsCallbackPlainC::m_onError
void(* m_onError)(struct XsCallbackPlainC *thisPtr, struct XsDevice *dev, XsResultValue error)
Called when an error has occurred while handling incoming data.
Definition: xscallbackplainc.h:178
CallbackManagerXda::removeChainedManager
void removeChainedManager(CallbackManagerXda *cm)
Remove achained manager from the list.
Definition: callbackmanagerxda.cpp:298
CallbackManagerXda::onWriteMessageToLogFile
int onWriteMessageToLogFile(XsDevice *dev, const XsMessage *message) override
The XsCallback::onWriteMessageToLogFile() callback forwarding function.
Definition: callbackmanagerxda.cpp:441
CallbackManagerXda::onBufferedDataAvailable
void onBufferedDataAvailable(XsDevice *dev, const XsDataPacket *data) override
The XsCallback::onBufferedDataAvailable() callback forwarding function.
Definition: callbackmanagerxda.cpp:456
XsByteArray
A list of uint8_t values.
XsCallbackPlainC
Structure that contains callback functions for the Xsens Device API.
Definition: xscallbackplainc.h:99
XsCallbackPlainC::m_onDataUnavailable
void(* m_onDataUnavailable)(struct XsCallbackPlainC *thisPtr, struct XsDevice *dev, int64_t packetId)
Called when XDA detects that data is forever unavailable.
Definition: xscallbackplainc.h:230
CallbackManagerXda::onRecordedDataAvailable
void onRecordedDataAvailable(XsDevice *dev, const XsDataPacket *data) override
The XsCallback::onRecordedDataAvailable() callback forwarding function.
Definition: callbackmanagerxda.cpp:599
CallbackManagerItem::m_manager
CallbackManagerXda * m_manager
The callback managger.
Definition: callbackmanagerxda.cpp:82
XsCallbackPlainC::m_onLiveDataAvailable
void(* m_onLiveDataAvailable)(struct XsCallbackPlainC *thisPtr, struct XsDevice *dev, const struct XsDataPacket *packet)
Called when new data has been received from a device or read from a file. When processing on PC is en...
Definition: xscallbackplainc.h:119
XsCallbackPlainC::m_onMessageSentToDevice
void(* m_onMessageSentToDevice)(struct XsCallbackPlainC *thisPtr, struct XsDevice *dev, struct XsMessage const *message)
Called just after a message is sent to the device.
Definition: xscallbackplainc.h:204
CallbackHandlerXdaItem::m_next
CallbackHandlerXdaItem * m_next
The next item in the list or NULL if this is the last item.
Definition: callbackmanagerxda.cpp:75
CallbackManagerXda::m_handlerList
CallbackHandlerXdaItem * m_handlerList
The first item in the linked list of callback handlers.
Definition: callbackmanagerxda.h:121
CallbackHandlerXdaItem::m_handler
XsCallbackPlainC * m_handler
The callback handler.
Definition: callbackmanagerxda.cpp:74
XsDataPacket
Contains an interpreted data message. The class provides easy access to the contained data through it...
Definition: xsdatapacket.h:301
CallbackManagerXda::onAllDataAvailable
void onAllDataAvailable(XsDevicePtrArray *devs, const XsDataPacketPtrArray *packets) override
The XsCallback::onAllDataAvailable() callback forwarding function.
Definition: callbackmanagerxda.cpp:586
xsens::LockReadWrite
A readers-writer lock class.
Definition: xsens_mutex.h:1090
CallbackManagerXda::CallbackManagerXda
CallbackManagerXda()
Constructor, initializes the callback list.
Definition: callbackmanagerxda.cpp:103
XsCallbackPlainC::m_onWakeupReceived
void(* m_onWakeupReceived)(struct XsCallbackPlainC *thisPtr, struct XsDevice *dev)
Called when a wakeup message has been received from a device. This indicates that the device has just...
Definition: xscallbackplainc.h:132
XsCallbackPlainC::m_onMessageDetected
void(* m_onMessageDetected)(struct XsCallbackPlainC *thisPtr, struct XsDevice *dev, XsProtocolType type, struct XsByteArray const *rawMessage)
Called just after a message is detected in raw data from the device.
Definition: xscallbackplainc.h:192
XsCallbackPlainC::m_onAllDataAvailable
void(* m_onAllDataAvailable)(struct XsCallbackPlainC *thisPtr, struct XsDevicePtrArray *devs, const struct XsDataPacketPtrArray *packets)
Called when new data has been received for devices connected to the same main device....
Definition: xscallbackplainc.h:246
CallbackManagerXda::removeCallbackHandler
void removeCallbackHandler(XsCallbackPlainC *cb, bool chain=true)
Remove a handler from the list.
Definition: callbackmanagerxda.cpp:207
data
data
xsens_mutex.h
XsCallbackPlainC::m_onDataAvailable
void(* m_onDataAvailable)(struct XsCallbackPlainC *thisPtr, struct XsDevice *dev, const struct XsDataPacket *packet)
Called when new data has been received from a device or read from a file. When processing on PC is en...
Definition: xscallbackplainc.h:238
CallbackManagerXda::onLiveDataAvailable
void onLiveDataAvailable(XsDevice *dev, const XsDataPacket *packet) override
The XsCallback::onLiveDataAvailable() callback forwarding function.
Definition: callbackmanagerxda.cpp:363
XsCallbackPlainC::m_onWriteMessageToLogFile
int(* m_onWriteMessageToLogFile)(struct XsCallbackPlainC *thisPtr, struct XsDevice *dev, const struct XsMessage *message)
Called when XDA has a message that could be written to a log file.
Definition: xscallbackplainc.h:148
XsResultValue
XsResultValue
Xsens result values.
Definition: xsresultvalue.h:82
CallbackManagerXda::onDataUnavailable
void onDataUnavailable(XsDevice *dev, int64_t packetId) override
The XsCallback::onDataUnavailable() callback forwarding function.
Definition: callbackmanagerxda.cpp:402
XsCallbackPlainC::m_onMissedPackets
void(* m_onMissedPackets)(struct XsCallbackPlainC *thisPtr, struct XsDevice *dev, int count, int first, int last)
Called when XDA detects that packets have been missed.
Definition: xscallbackplainc.h:127
CallbackManagerXda::clearChainedManagers
void clearChainedManagers()
Clear the chained manager list.
Definition: callbackmanagerxda.cpp:245
CallbackManagerXda::copyCallbackHandlersFrom
void copyCallbackHandlersFrom(CallbackManagerXda *cm, bool chain=true)
Copy all handlers from cm into this manager.
Definition: callbackmanagerxda.cpp:337
CallbackManagerXda::onWakeupReceived
void onWakeupReceived(XsDevice *dev) override
The XsCallback::onWakeupReceived() callback forwarding function.
Definition: callbackmanagerxda.cpp:415
XsCallbackPlainC::m_onDeviceStateChanged
void(* m_onDeviceStateChanged)(struct XsCallbackPlainC *thisPtr, struct XsDevice *dev, XsDeviceState newState, XsDeviceState oldState)
Called when a device's state has changed (ie config mode, measurement mode, recording mode)
Definition: xscallbackplainc.h:110
XsCallbackPlainC::m_onBufferedDataAvailable
void(* m_onBufferedDataAvailable)(struct XsCallbackPlainC *thisPtr, struct XsDevice *dev, const struct XsDataPacket *packet)
Called when XDA has a data packet that could be written to a log file.
Definition: xscallbackplainc.h:157
CallbackManagerXda::onAllLiveDataAvailable
void onAllLiveDataAvailable(XsDevicePtrArray *devs, const XsDataPacketPtrArray *packets) override
The XsCallback::onAllLiveDataAvailable() callback forwarding function.
Definition: callbackmanagerxda.cpp:376
CallbackManagerXda::onNonDataMessage
void onNonDataMessage(XsDevice *dev, XsMessage const *message) override
The Xscallback::onNonDataMessage() callback forwarding function.
Definition: callbackmanagerxda.cpp:521
CallbackManagerXda::onMessageSentToDevice
void onMessageSentToDevice(XsDevice *dev, XsMessage const *message) override
The Xscallback::onMessageSentToDevice() callback forwarding function.
Definition: callbackmanagerxda.cpp:560
CallbackManagerXda::onConnectivityChanged
void onConnectivityChanged(XsDevice *dev, XsConnectivityState newState) override
The XsCallback::onConnectivityChanged() callback forwarding function.
Definition: callbackmanagerxda.cpp:482
XsCallbackPlainC::m_onRestoreCommunication
void(* m_onRestoreCommunication)(struct XsCallbackPlainC *thisPtr, const struct XsString *portName, XsResultValue result)
Called when restore communication is completed, stopped or an error occurred.
Definition: xscallbackplainc.h:274
XsCallbackPlainC::m_onConnectivityChanged
void(* m_onConnectivityChanged)(struct XsCallbackPlainC *thisPtr, struct XsDevice *dev, XsConnectivityState newState)
Called when XDA has detected a change in the connectivity state of a device.
Definition: xscallbackplainc.h:163
CallbackManagerXda::onMessageReceivedFromDevice
void onMessageReceivedFromDevice(XsDevice *dev, XsMessage const *message) override
The Xscallback::onMessageReceivedFromDevice() callback forwarding function.
Definition: callbackmanagerxda.cpp:547
CallbackManagerXda::m_callbackMutex
xsens::MutexReadWrite * m_callbackMutex
Administration mutex.
Definition: callbackmanagerxda.h:120
xsens::LS_Read
@ LS_Read
Definition: xsens_mutex.h:127
CallbackManagerXda::onDeviceStateChanged
void onDeviceStateChanged(XsDevice *dev, XsDeviceState newState, XsDeviceState oldState) override
The XsCallback::onDeviceStateChanged() callback forwarding function.
Definition: callbackmanagerxda.cpp:350
CallbackManagerXda::onRestoreCommunication
void onRestoreCommunication(const XsString *portName, XsResultValue result) override
The Xscallback::onRestoreCommunication callback forwarding function.
Definition: callbackmanagerxda.cpp:637
XsInfoRequest
XsInfoRequest
Information request identifiers.
Definition: xsinforequest.h:77
XsCallbackPlainC::m_onMessageReceivedFromDevice
void(* m_onMessageReceivedFromDevice)(struct XsCallbackPlainC *thisPtr, struct XsDevice *dev, struct XsMessage const *message)
Called just after a valid message (after parsing) is received from the device.
Definition: xscallbackplainc.h:198
XsMessage
Structure for storing a single message.
Definition: xsmessage.h:202
XsCallbackPlainC::m_onAllLiveDataAvailable
void(* m_onAllLiveDataAvailable)(struct XsCallbackPlainC *thisPtr, struct XsDevicePtrArray *devs, const struct XsDataPacketPtrArray *packets)
Called when new data has been received for devices connected to the same main device....
Definition: xscallbackplainc.h:213
XsDevicePtrArray
A list of XsDevicePtr values.
XsCallbackPlainC::m_onRecordedDataAvailable
void(* m_onRecordedDataAvailable)(struct XsCallbackPlainC *thisPtr, struct XsDevice *dev, const struct XsDataPacket *packet)
Called when new data has been received from a device in a recording state or read from a file....
Definition: xscallbackplainc.h:254
XsCallbackPlainC::m_onAllRecordedDataAvailable
void(* m_onAllRecordedDataAvailable)(struct XsCallbackPlainC *thisPtr, struct XsDevicePtrArray *devs, const struct XsDataPacketPtrArray *packets)
Called when new data has been received for devices connected to the same main device in a recording s...
Definition: xscallbackplainc.h:262
XsCallbackPlainC::m_onNonDataMessage
void(* m_onNonDataMessage)(struct XsCallbackPlainC *thisPtr, struct XsDevice *dev, struct XsMessage const *message)
Called when a non data, non reply message has been received.
Definition: xscallbackplainc.h:184
CallbackManagerXda::onTransmissionRequest
void onTransmissionRequest(int channelId, const XsByteArray *data) override
Definition: callbackmanagerxda.cpp:624
CallbackManagerXda::onMissedPackets
void onMissedPackets(XsDevice *dev, int count, int first, int last) override
The XsCallback::onMissedPackets() callback forwarding function.
Definition: callbackmanagerxda.cpp:389
XsConnectivityState
XsConnectivityState
XsDevice connectivity state identifiers.
Definition: xsconnectivitystate.h:78
CallbackManagerXda::onDataAvailable
void onDataAvailable(XsDevice *dev, const XsDataPacket *data) override
The XsCallback::onDataAvailable() callback forwarding function.
Definition: callbackmanagerxda.cpp:573
CallbackManagerXda::onAllBufferedDataAvailable
void onAllBufferedDataAvailable(XsDevicePtrArray *devs, const XsDataPacketPtrArray *packets) override
The XsCallback::onAllBufferedDataAvailable() callback forwarding function.
Definition: callbackmanagerxda.cpp:469
CallbackManagerXda::onMessageDetected
void onMessageDetected(XsDevice *dev, XsProtocolType type, XsByteArray const *rawMessage) override
The Xscallback::onMessageReceivedFromDevice() callback forwarding function.
Definition: callbackmanagerxda.cpp:534
CallbackManagerXda::onProgressUpdated
void onProgressUpdated(XsDevice *dev, int current, int total, const XsString *identifier) override
The XsCallback::onProgressUpdated() callback forwarding function.
Definition: callbackmanagerxda.cpp:428
XsProtocolType
XsProtocolType
Protocol types (XsDevice::enableProtocol())
Definition: xsprotocoltype.h:72
callbackmanagerxda.h
XsDeviceState
XsDeviceState
XsDevice state identifiers.
Definition: xsdevicestate.h:77
XsCallbackPlainC::m_onAllBufferedDataAvailable
void(* m_onAllBufferedDataAvailable)(struct XsCallbackPlainC *thisPtr, struct XsDevicePtrArray *devs, const struct XsDataPacketPtrArray *packets)
Called when new data has been received for devices connected to the same main device....
Definition: xscallbackplainc.h:222
CallbackManagerXda::onError
void onError(XsDevice *dev, XsResultValue error) override
The Xscallback::onError() callback forwarding function.
Definition: callbackmanagerxda.cpp:508
CallbackHandlerXdaItem
Linked list item that contains a registered XsCallback handler for CallbackManagerXda.
Definition: callbackmanagerxda.cpp:72
CallbackManagerXda
Class that delegates callbacks to registered XsCallbackHandlerItems.
Definition: callbackmanagerxda.h:78
XsCallbackPlainC::m_onInfoResponse
void(* m_onInfoResponse)(struct XsCallbackPlainC *thisPtr, struct XsDevice *dev, XsInfoRequest request)
Called when an information request has resulted in a response.
Definition: xscallbackplainc.h:172
XsString
A 0-terminated managed string of characters.
XsDevice
Definition: xsdevice_def.h:164
xsens
Definition: threading.cpp:78
CallbackManagerItem::m_next
CallbackManagerItem * m_next
The next item in the list or NULL if this is the last item.
Definition: callbackmanagerxda.cpp:83
CallbackManagerXda::clearCallbackHandlers
void clearCallbackHandlers(bool chain=true)
Clear the callback list.
Definition: callbackmanagerxda.cpp:129
CallbackManagerItem
Linked list item that contains a chained CallbackManagerXda.
Definition: callbackmanagerxda.cpp:80
CallbackManagerXda::addCallbackHandler
void addCallbackHandler(XsCallbackPlainC *cb, bool chain=true)
Add a handler to the list.
Definition: callbackmanagerxda.cpp:158
XsCallbackPlainC::m_onTransmissionRequest
void(* m_onTransmissionRequest)(struct XsCallbackPlainC *thisPtr, int channelId, const struct XsByteArray *data)
Called when XDA needs to send raw data to a device connected using a custom communication channel.
Definition: xscallbackplainc.h:268


xsens_mti_driver
Author(s):
autogenerated on Sun Sep 3 2023 02:43:19