39void UpdateDatastreams() {
41 std::vector<std::string> enabled_conns;
43 for (
auto* cp : TheConnectionParams()) {
47 enabled_conns.push_back(cp->GetStrippedDSPort());
58 if (std::find(enabled_conns.begin(), enabled_conns.end(),
59 cp->GetStrippedDSPort()) != enabled_conns.end()) {
64 StopAndRemoveCommDriver(cp->GetStrippedDSPort(), cp->GetCommProtocol());
67 StopAndRemoveCommDriver(cp->GetLastDSPort(), cp->GetLastCommProtocol());
71 if (cp->Type == INTERNAL_BT) wxSleep(1);
74 if (!cp->bEnabled)
continue;
79 enabled_conns.push_back(cp->GetStrippedDSPort());
83bool StopAndRemoveCommDriver(std::string ident, NavAddr::Bus _bus) {
84 auto& registry = CommDriverRegistry::GetInstance();
85 const std::vector<DriverPtr>& drivers = registry.GetDrivers();
86 DriverPtr& target_driver =
FindDriver(drivers, ident, _bus);
88 if (!target_driver)
return false;
93 registry.Deactivate(target_driver);
107 int idxFirst = msg.Find(
'\\');
109 if (wxNOT_FOUND == idxFirst)
return msg;
111 if (idxFirst < (
int)msg.Length() - 1) {
112 int idxSecond = msg.Mid(idxFirst + 1).Find(
'\\') + 1;
113 if (wxNOT_FOUND != idxSecond) {
114 if (idxSecond < (
int)msg.Length() - 1) {
116 return msg.Mid(idxSecond + 1);
void MakeCommDriver(const ConnectionParams *params)
Create and register a driver for given connection.
Communication drivers factory and support.
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.
wxString ProcessNMEA4Tags(const wxString &msg)
Strip NMEA V4 tag blocks from NMEA0183 message.