35#include "model/comm_util.h"
36#include "model/comm_drv_factory.h"
38#include "model/conn_params.h"
40void UpdateDatastreams() {
42 std::vector<std::string> enabled_conns;
44 for (
auto* cp : TheConnectionParams()) {
48 enabled_conns.push_back(cp->GetStrippedDSPort());
59 if (std::find(enabled_conns.begin(), enabled_conns.end(),
60 cp->GetStrippedDSPort()) != enabled_conns.end()) {
65 StopAndRemoveCommDriver(cp->GetStrippedDSPort(), cp->GetCommProtocol());
68 StopAndRemoveCommDriver(cp->GetLastDSPort(), cp->GetLastCommProtocol());
72 if (cp->Type == INTERNAL_BT) wxSleep(1);
75 if (!cp->bEnabled)
continue;
80 enabled_conns.push_back(cp->GetStrippedDSPort());
84bool StopAndRemoveCommDriver(std::string ident, NavAddr::Bus _bus) {
85 auto& registry = CommDriverRegistry::GetInstance();
86 const std::vector<DriverPtr>& drivers = registry.GetDrivers();
87 DriverPtr& target_driver =
FindDriver(drivers, ident, _bus);
89 if (!target_driver)
return false;
94 registry.Deactivate(target_driver);
107wxString ProcessNMEA4Tags(
const wxString& msg) {
108 int idxFirst = msg.Find(
'\\');
110 if (wxNOT_FOUND == idxFirst)
return msg;
112 if (idxFirst < (
int)msg.Length() - 1) {
113 int idxSecond = msg.Mid(idxFirst + 1).Find(
'\\') + 1;
114 if (wxNOT_FOUND != idxSecond) {
115 if (idxSecond < (
int)msg.Length() - 1) {
117 return msg.Mid(idxSecond + 1);
DriverPtr & FindDriver(const std::vector< DriverPtr > &drivers, const std::string &iface, const NavAddr::Bus _bus)
Search list of drivers for a driver with given interface string.
Driver registration container, a singleton.