int main(int argc, char **argv) { Args args(argc, argv, "PORT BAUD"); const DeviceConfig config = ParsePortArgs(args); args.ExpectEnd(); InitialiseIOThread(); Port *port = OpenPort(config, nullptr, *(DataHandler *)nullptr); if (port == NULL) { fprintf(stderr, "Failed to open COM port\n"); return EXIT_FAILURE; } ConsoleOperationEnvironment env; if (!port->WaitConnected(env)) { delete port; DeinitialiseIOThread(); fprintf(stderr, "Failed to connect the port\n"); return EXIT_FAILURE; } FlarmDevice flarm(*port); RunUI(flarm, env); delete port; DeinitialiseIOThread(); return EXIT_SUCCESS; }
bool DeviceDescriptor::Declare(const struct Declaration &declaration, const Waypoint *home, OperationEnvironment &env) { if (port == NULL) return false; SetBusy(true); StaticString<60> text; text.Format(_T("%s: %s."), _("Sending declaration"), driver->display_name); env.SetText(text); port->StopRxThread(); bool result = device != NULL && device->Declare(declaration, home, env); if (device_blackboard->IsFLARM(index) && !IsDriver(_T("FLARM"))) { text.Format(_T("%s: FLARM."), _("Sending declaration")); env.SetText(text); FlarmDevice flarm(*port); result = flarm.Declare(declaration, home, env) || result; } port->StartRxThread(); SetBusy(false); return result; }