xdacommunicatorfactory.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 "xdacommunicatorfactory.h"
66 #include "mtbfilecommunicator.h"
67 #include "serialportcommunicator.h"
68 #include "usbcommunicator.h"
69 
70 namespace CommunicatorType
71 {
76 }
77 
84 {
85 }
86 
89 {
90  /* Everything is expected to be an mtb file for now.
91  It is very wel possible that we're going to have to check for
92  other weird stuff as well, such as COM1 or /dev/ttyUSB0,
93  which would state a case for just a string-based approach.
94  */
96 }
97 
100 {
101  for (auto it = constructors().begin(); it != constructors().end(); ++it)
102  if (it->second.second && it->second.second(portInfo))
103  return it->first;
104 
106 }
107 
108 namespace
109 {
113 bool isUsb(const XsPortInfo& portInfo)
114 {
115  return portInfo.isUsb();
116 }
117 
121 bool isSerialPort(const XsPortInfo& portInfo)
122 {
123  return !portInfo.isUsb() && !portInfo.isNetwork() && !portInfo.isBluetooth();
124 }
125 }
126 
129 {
133 }
CommunicatorType
Definition: communicatorfactory.h:141
XdaCommunicatorFactory::portInfoToCommunicatorId
virtual CommunicatorTypeId portInfoToCommunicatorId(const XsPortInfo &portInfo) const
Match a XsPortInfo to a communicator.
Definition: xdacommunicatorfactory.cpp:99
usbcommunicator.h
XdaCommunicatorFactory::filenameToCommunicatorId
virtual CommunicatorTypeId filenameToCommunicatorId(const XsString &filename) const
Match a filename to a communicator.
Definition: xdacommunicatorfactory.cpp:88
CommunicatorType::UNKNOWN
static const CommunicatorFactory::CommunicatorTypeId UNKNOWN
Definition: xdacommunicatorfactory.cpp:72
XdaCommunicatorFactory::registerCommunicatorTypes
void registerCommunicatorTypes() override
Register the communicator types.
Definition: xdacommunicatorfactory.cpp:128
CommunicatorType::SERIALPORT
static const CommunicatorFactory::CommunicatorTypeId SERIALPORT
Definition: xdacommunicatorfactory.cpp:75
CommunicatorType::MTBFILE
static const CommunicatorFactory::CommunicatorTypeId MTBFILE
Definition: xdacommunicatorfactory.cpp:73
MtbFileCommunicator::construct
static Communicator * construct()
Constructs new MtbFileCommunicator.
Definition: mtbfilecommunicator.cpp:91
CommunicatorFactory::CommunicatorTypeId
unsigned int CommunicatorTypeId
The typedef of the communicator type ID.
Definition: communicatorfactory.h:98
XsPortInfo
Contains a descriptor for opening a communication port to an Xsens device.
Definition: xsportinfo.h:128
XdaCommunicatorFactory::XdaCommunicatorFactory
XdaCommunicatorFactory()
Construct this factory.
Definition: xdacommunicatorfactory.cpp:83
CommunicatorFactory::constructors
ConstructorsMap const & constructors() const
Definition: communicatorfactory.h:131
SerialPortCommunicator::construct
static Communicator * construct()
Constructs new SerialPortCommunicator.
Definition: serialportcommunicator.cpp:74
UsbCommunicator::construct
static Communicator * construct()
Construct and returns new USB communicator.
Definition: usbcommunicator.cpp:75
mtbfilecommunicator.h
xdacommunicatorfactory.h
serialportcommunicator.h
CommunicatorType::USB
static const CommunicatorFactory::CommunicatorTypeId USB
Definition: xdacommunicatorfactory.cpp:74
XsString
A 0-terminated managed string of characters.
CommunicatorFactory::registerType
bool registerType(CommunicatorTypeId typeId, CommunicatorConstructFunc constructFunc, PortInfoMatchFunc matchFunc)
Register a communicator type with the factory.
Definition: communicatorfactory.cpp:81


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