Skip to main content

euroscope_sys/ffi/
selectors.rs

1//! Owned-handle selectors, cross-navigation, and misc `CPlugIn` scalars.
2//!
3//! The `*_select_*` / `*_correlated_*` functions return a heap-owned handle
4//! copy (or null); free it with the matching `es_*_free`.
5
6use std::ffi::{c_char, c_int};
7
8use crate::{EsHandle, PluginPtr};
9
10unsafe extern "C" {
11    // CFlightPlan
12    pub fn es_flightplan_free(fp: EsHandle);
13    pub fn es_plugin_flightplan_select_first(plugin: PluginPtr) -> EsHandle;
14    pub fn es_plugin_flightplan_select_next(plugin: PluginPtr, current: EsHandle) -> EsHandle;
15    pub fn es_plugin_flightplan_select_asel(plugin: PluginPtr) -> EsHandle;
16    pub fn es_plugin_flightplan_select(plugin: PluginPtr, callsign: *const c_char) -> EsHandle;
17    pub fn es_flightplan_correlated_radar_target(fp: EsHandle) -> EsHandle;
18
19    // CRadarTarget
20    pub fn es_radartarget_free(rt: EsHandle);
21    pub fn es_plugin_radartarget_select_first(plugin: PluginPtr) -> EsHandle;
22    pub fn es_plugin_radartarget_select_next(plugin: PluginPtr, current: EsHandle) -> EsHandle;
23    pub fn es_plugin_radartarget_select_asel(plugin: PluginPtr) -> EsHandle;
24    pub fn es_plugin_radartarget_select(plugin: PluginPtr, callsign: *const c_char) -> EsHandle;
25    pub fn es_radartarget_correlated_flight_plan(rt: EsHandle) -> EsHandle;
26    /// Owned latest position snapshot (free with `es_rtposdata_free`).
27    pub fn es_radartarget_current_position(rt: EsHandle) -> EsHandle;
28    /// Owned previous snapshot before `current` (free with `es_rtposdata_free`).
29    pub fn es_radartarget_previous_position(rt: EsHandle, current: EsHandle) -> EsHandle;
30    /// Owned FP-track position snapshot (free with `es_rtposdata_free`).
31    pub fn es_flightplan_track_position(fp: EsHandle) -> EsHandle;
32
33    // CController
34    pub fn es_controller_free(c: EsHandle);
35    pub fn es_plugin_controller_select_first(plugin: PluginPtr) -> EsHandle;
36    pub fn es_plugin_controller_select_next(plugin: PluginPtr, current: EsHandle) -> EsHandle;
37    pub fn es_plugin_controller_select(plugin: PluginPtr, callsign: *const c_char) -> EsHandle;
38    pub fn es_plugin_controller_select_by_position_id(
39        plugin: PluginPtr,
40        position_id: *const c_char,
41    ) -> EsHandle;
42    pub fn es_plugin_controller_myself(plugin: PluginPtr) -> EsHandle;
43
44    // Misc
45    pub fn es_plugin_transition_altitude(plugin: PluginPtr) -> c_int;
46    pub fn es_plugin_set_asel_flightplan(plugin: PluginPtr, fp: EsHandle);
47    pub fn es_plugin_set_asel_radartarget(plugin: PluginPtr, rt: EsHandle);
48    pub fn es_plugin_get_data_from_settings(plugin: PluginPtr, key: *const c_char)
49    -> *const c_char;
50    pub fn es_plugin_save_data_to_settings(
51        plugin: PluginPtr,
52        key: *const c_char,
53        description: *const c_char,
54        value: *const c_char,
55    );
56
57    // CFlightPlanList
58    pub fn es_fplist_free(list: EsHandle);
59    pub fn es_plugin_register_fp_list(plugin: PluginPtr, name: *const c_char) -> EsHandle;
60
61    // CSectorElement (filtered by element type)
62    pub fn es_sectorelement_free(el: EsHandle);
63    pub fn es_plugin_sectorelement_select_first(plugin: PluginPtr, element_type: c_int)
64    -> EsHandle;
65    pub fn es_plugin_sectorelement_select_next(
66        plugin: PluginPtr,
67        current: EsHandle,
68        element_type: c_int,
69    ) -> EsHandle;
70
71    // CGrountToAirChannel
72    pub fn es_gtachannel_free(ch: EsHandle);
73    pub fn es_plugin_gtachannel_select_first(plugin: PluginPtr) -> EsHandle;
74    pub fn es_plugin_gtachannel_select_next(plugin: PluginPtr, current: EsHandle) -> EsHandle;
75}