| 32 | #include "openhd_util_time.h" |
| 33 | |
| 34 | GroundTelemetry::GroundTelemetry() : MavlinkSystem(OHD_SYS_ID_GROUND) { |
| 35 | m_console = openhd::log::create_or_get("ground_tele"); |
| 36 | assert(m_console); |
| 37 | m_gnd_settings = |
| 38 | std::make_unique<openhd::telemetry::ground::SettingsHolder>(); |
| 39 | m_endpoint_tracker = std::make_unique<SerialEndpointManager>(); |
| 40 | m_gcs_endpoint = std::make_unique<UDPEndpoint>( |
| 41 | "GroundStationUDP", OHD_GROUND_CLIENT_UDP_PORT_OUT, |
| 42 | OHD_GROUND_CLIENT_UDP_PORT_IN, |
| 43 | // We send data to localhost::14550 and any other external device IPs |
| 44 | "127.0.0.1", |
| 45 | // and we accept udp data from anybody on 14551 |
| 46 | "0.0.0.0"); |
| 47 | m_gcs_endpoint->registerCallback( |
| 48 | [this](std::vector<MavlinkMessage> messages) { |
| 49 | on_messages_ground_station_clients(messages); |
| 50 | }); |
| 51 | m_tcp_server = std::make_unique<TCPEndpoint>( |
| 52 | openhd::TCPServer::Config{TCPEndpoint::DEFAULT_PORT}); // 1445 |
| 53 | // m_tcp_server= nullptr; |
| 54 | if (m_tcp_server) { |
| 55 | m_tcp_server->registerCallback( |
| 56 | [this](std::vector<MavlinkMessage> messages) { |
| 57 | on_messages_ground_station_clients(messages); |
| 58 | }); |
| 59 | } |
| 60 | m_ohd_main_component = std::make_shared<OHDMainComponent>(_sys_id, false); |
| 61 | m_components.push_back(m_ohd_main_component); |
| 62 | #ifdef OPENHD_TELEMETRY_SDL_FOR_JOYSTICK_FOUND |
| 63 | if (m_gnd_settings->get_settings().enable_rc_over_joystick) { |
| 64 | enable_joystick(); |
| 65 | } else { |
| 66 | m_console->info("Joystick disabled"); |
| 67 | } |
| 68 | #else |
| 69 | m_console->info("No Joystick support"); |
| 70 | #endif |
| 71 | // |
| 72 | // NOTE: We don't call set ready yet, since we have to wait until other |
| 73 | // modules have provided all their parameters. |
| 74 | m_generic_mavlink_param_provider = std::make_shared<XMavlinkParamProvider>( |
| 75 | _sys_id, MAV_COMP_ID_ONBOARD_COMPUTER); |
| 76 | m_generic_mavlink_param_provider->add_params(get_all_settings()); |
| 77 | m_components.push_back(m_generic_mavlink_param_provider); |
| 78 | setup_uart(); |
| 79 | openhd::ExternalDeviceManager::instance().register_listener( |
| 80 | [this](openhd::ExternalDevice external_device, bool connected) { |
| 81 | if (!external_device.discovered_by_mavlink_tcp_server) { |
| 82 | if (connected) { |
| 83 | add_external_ground_station_ip(external_device); |
| 84 | } else { |
| 85 | remove_external_ground_station_ip(external_device); |
| 86 | } |
| 87 | } |
| 88 | }); |
| 89 | m_console->debug("Created GroundTelemetry"); |
| 90 | } |
| 91 |
nothing calls this directly
no test coverage detected