29 #include <wx/msw/winundef.h>
32 #include <wx/wxprec.h>
38 #include "model/comm_util.h"
39 #include "model/comm_drv_n2k_net.h"
40 #include "model/comm_drv_n2k_serial.h"
42 #include "model/comm_drv_n0183_net.h"
43 #include "model/comm_drv_signalk_net.h"
44 #include "model/comm_drv_n0183_android_int.h"
45 #include "model/comm_drv_n0183_android_bt.h"
46 #include "model/comm_navmsg_bus.h"
47 #include "model/comm_drv_registry.h"
49 #if defined(__linux__) && !defined(__ANDROID__) && !defined(__WXOSX__)
50 #include "model/comm_drv_n2k_socketcan.h"
53 std::shared_ptr<AbstractCommDriver> MakeCommDriver(
56 wxString::Format(_T(
"MakeCommDriver: %s"), params->GetDSPort().c_str()));
58 auto& msgbus = NavMsgBus::GetInstance();
59 auto& registry = CommDriverRegistry::GetInstance();
60 switch (params->Type) {
62 switch (params->Protocol) {
63 case PROTO_NMEA2000: {
64 auto driver = std::make_shared<CommDriverN2KSerial>(params, msgbus);
65 registry.Activate(driver);
70 auto driver = std::make_shared<CommDriverN0183Serial>(params, msgbus);
71 registry.Activate(driver);
78 switch (params->NetProtocol) {
80 auto driver = std::make_shared<CommDriverSignalKNet>(params, msgbus);
81 registry.Activate(driver);
86 switch (params->Protocol) {
87 case PROTO_NMEA0183: {
89 std::make_shared<CommDriverN0183Net>(params, msgbus);
90 registry.Activate(driver);
96 std::make_shared<CommDriverN2KNet>(params, msgbus);
97 registry.Activate(driver);
109 #if defined(__linux__) && !defined(__ANDROID__) && !defined(__WXOSX__)
112 auto driver = CommDriverN2KSocketCAN::Create(params, msgbus);
113 registry.Activate(driver);
121 auto driver = std::make_shared<CommDriverN0183AndroidInt>(params, msgbus);
122 registry.Activate(driver);
128 auto driver = std::make_shared<CommDriverN0183AndroidBT>(params, msgbus);
129 registry.Activate(driver);
142 void initIXNetSystem() {
143 CommDriverSignalKNet::initIXNetSystem();
146 void uninitIXNetSystem() {
147 CommDriverSignalKNet::uninitIXNetSystem();