29#include <wx/msw/winundef.h>
38#include "model/comm_util.h"
39#include "model/comm_drv_n2k_net.h"
40#include "model/comm_drv_n2k_serial.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"
49#if defined(__linux__) && !defined(__ANDROID__) && !defined(__WXOSX__)
50#include "model/comm_drv_n2k_socketcan.h"
54 wxLogMessage(
"MakeCommDriver: %s", params->GetDSPort().c_str());
56 auto& msgbus = NavMsgBus::GetInstance();
57 auto& registry = CommDriverRegistry::GetInstance();
58 switch (params->Type) {
60 switch (params->Protocol) {
61 case PROTO_NMEA2000: {
62 auto driver = std::make_unique<CommDriverN2KSerial>(params, msgbus);
63 registry.Activate(std::move(driver));
67 auto driver = std::make_unique<CommDriverN0183Serial>(params, msgbus);
68 registry.Activate(std::move(driver));
74 switch (params->NetProtocol) {
76 auto driver = std::make_unique<CommDriverSignalKNet>(params, msgbus);
77 registry.Activate(std::move(driver));
81 switch (params->Protocol) {
82 case PROTO_NMEA0183: {
84 std::make_unique<CommDriverN0183Net>(params, msgbus);
85 registry.Activate(std::move(driver));
88 case PROTO_NMEA2000: {
89 auto driver = std::make_unique<CommDriverN2KNet>(params, msgbus);
90 registry.Activate(std::move(driver));
101#if defined(__linux__) && !defined(__ANDROID__) && !defined(__WXOSX__)
103 auto driver = CommDriverN2KSocketCAN::Create(params, msgbus);
104 registry.Activate(std::move(driver));
111 auto driver = std::make_unique<CommDriverN0183AndroidInt>(params, msgbus);
112 registry.Activate(std::move(driver));
117 auto driver = std::make_unique<CommDriverN0183AndroidBT>(params, msgbus);
118 registry.Activate(std::move(driver));
128void initIXNetSystem() { CommDriverSignalKNet::initIXNetSystem(); };
130void uninitIXNetSystem() { CommDriverSignalKNet::uninitIXNetSystem(); };
Driver registration container, a singleton.
Raw messages layer, supports sending and recieving navmsg messages.