simconnect 0.1.2

Rust bindings for SimConnect
use std::{env, path::PathBuf};

fn main() {
    println!("cargo:rustc-link-search=libsrc/lib");
    println!("cargo:rustc-link-lib=static=SimConnect");

    let bindings = bindgen::Builder::default()
        .header("libsrc/include/SimConnect.hpp")
        .parse_callbacks(Box::new(bindgen::CargoCallbacks))
        .whitelist_var("SIMCONNECT_UNUSED")
        .whitelist_var("SIMCONNECT_OBJECT_ID_USER")
        .whitelist_var("SIMCONNECT_CAMERA_IGNORE_FIELD")
        .whitelist_var("SIMCONNECT_CLIENTDATA_MAX_SIZE")
        .whitelist_var("SIMCONNECT_GROUP_PRIORITY_HIGHEST")
        .whitelist_var("SIMCONNECT_GROUP_PRIORITY_HIGHEST_MASKABLE")
        .whitelist_var("SIMCONNECT_GROUP_PRIORITY_STANDARD")
        .whitelist_var("SIMCONNECT_GROUP_PRIORITY_DEFAULT")
        .whitelist_var("SIMCONNECT_GROUP_PRIORITY_LOWEST")
        .whitelist_type("SIMCONNECT_CLIENTDATATYPE_INT")
        .whitelist_type("SIMCONNECT_CLIENTDATATYPE_FLOAT")
        .whitelist_type("SIMCONNECT_CLIENTDATAOFFSET_AUTO")
        .whitelist_type("SIMCONNECT_RECV_ID")
        .whitelist_type("SIMCONNECT_DATATYPE")
        .whitelist_type("SIMCONNECT_EXCEPTION")
        .whitelist_type("SIMCONNECT_SIMOBJECT_TYPE")
        .whitelist_type("SIMCONNECT_STATE")
        .whitelist_type("SIMCONNECT_PERIOD")
        .whitelist_type("SIMCONNECT_MISSION_END")
        .whitelist_type("SIMCONNECT_CLIENT_DATA_PERIOD")
        .whitelist_type("SIMCONNECT_TEXT_TYPE")
        .whitelist_type("SIMCONNECT_TEXT_RESULT")
        .whitelist_type("SIMCONNECT_WEATHER_MODE")
        .whitelist_type("SIMCONNECT_FACILITY_LIST_TYPE")

        .whitelist_type("SIMCONNECT_RECV")
        .whitelist_type("SIMCONNECT_RECV_EXCEPTION")
        .whitelist_type("SIMCONNECT_RECV_OPEN")
        .whitelist_type("SIMCONNECT_RECV_QUIT")
        .whitelist_type("SIMCONNECT_RECV_EVENT")
        .whitelist_type("SIMCONNECT_RECV_EVENT_FILENAME")
        .whitelist_type("SIMCONNECT_RECV_EVENT_OBJECT_ADDREMOVE")
        .whitelist_type("SIMCONNECT_RECV_EVENT_FRAME")
        .whitelist_type("SIMCONNECT_RECV_EVENT_MULTIPLAYER_SERVER_STARTED")
        .whitelist_type("SIMCONNECT_RECV_EVENT_MULTIPLAYER_CLIENT_STARTED")
        .whitelist_type("SIMCONNECT_RECV_EVENT_MULTIPLAYER_SESSION_ENDED")
        .whitelist_type("SIMCONNECT_RECV_EVENT_RACE_END")
        .whitelist_type("SIMCONNECT_RECV_EVENT_RACE_LAP")
        .whitelist_type("SIMCONNECT_RECV_SIMOBJECT_DATA")
        .whitelist_type("SIMCONNECT_RECV_SIMOBJECT_DATA_BYTYPE")
        .whitelist_type("SIMCONNECT_RECV_CLIENT_DATA")
        .whitelist_type("SIMCONNECT_RECV_WEATHER_OBSERVATION")
        .whitelist_type("SIMCONNECT_RECV_CLOUD_STATE")
        .whitelist_type("SIMCONNECT_RECV_ASSIGNED_OBJECT_ID")
        .whitelist_type("SIMCONNECT_RECV_RESERVED_KEY")
        .whitelist_type("SIMCONNECT_RECV_SYSTEM_STATE")
        .whitelist_type("SIMCONNECT_RECV_CUSTOM_ACTION")
        .whitelist_type("SIMCONNECT_RECV_EVENT_WEATHER_MODE")
        .whitelist_type("SIMCONNECT_RECV_FACILITIES_LIST")
        .whitelist_type("SIMCONNECT_DATA_FACILITY_AIRPORT")
        .whitelist_type("SIMCONNECT_RECV_AIRPORT_LIST")
        .whitelist_type("SIMCONNECT_DATA_FACILITY_WAYPOINT")
        .whitelist_type("SIMCONNECT_RECV_WAYPOINT_LIST")
        .whitelist_type("SIMCONNECT_DATA_FACILITY_NDB")
        .whitelist_type("SIMCONNECT_RECV_NDB_LIST")
        .whitelist_type("SIMCONNECT_DATA_FACILITY_VOR")
        .whitelist_type("SIMCONNECT_RECV_VOR_LIST")
        .whitelist_type("SIMCONNECT_RECV_PICK")

        
        .whitelist_function("SimConnect_MapClientEventToSimEvent")
        .whitelist_function("SimConnect_TransmitClientEvent")
        .whitelist_function("SimConnect_SetSystemEventState")
        .whitelist_function("SimConnect_AddClientEventToNotificationGroup")
        .whitelist_function("SimConnect_RemoveClientEvent")
        .whitelist_function("SimConnect_SetNotificationGroupPriority")
        .whitelist_function("SimConnect_ClearNotificationGroup")
        .whitelist_function("SimConnect_RequestNotificationGroup")
        .whitelist_function("SimConnect_AddToDataDefinition")
        .whitelist_function("SimConnect_ClearDataDefinition")
        .whitelist_function("SimConnect_RequestDataOnSimObject")
        .whitelist_function("SimConnect_RequestDataOnSimObjectType")
        .whitelist_function("SimConnect_SetDataOnSimObject")
        .whitelist_function("SimConnect_MapInputEventToClientEvent")
        .whitelist_function("SimConnect_SetInputGroupPriority")
        .whitelist_function("SimConnect_RemoveInputEvent")
        .whitelist_function("SimConnect_ClearInputGroup")
        .whitelist_function("SimConnect_SetInputGroupState")
        .whitelist_function("SimConnect_RequestReservedKey")
        .whitelist_function("SimConnect_SubscribeToSystemEvent")
        .whitelist_function("SimConnect_UnsubscribeFromSystemEvent")
        .whitelist_function("SimConnect_WeatherRequestInterpolatedObservation")
        .whitelist_function("SimConnect_WeatherRequestObservationAtStation")
        .whitelist_function("SimConnect_WeatherRequestObservationAtNearestStation")
        .whitelist_function("SimConnect_WeatherCreateStation")
        .whitelist_function("SimConnect_WeatherRemoveStation")
        .whitelist_function("SimConnect_WeatherSetObservation")
        .whitelist_function("SimConnect_WeatherSetModeServer")
        .whitelist_function("SimConnect_WeatherSetModeTheme")
        .whitelist_function("SimConnect_WeatherSetModeGlobal")
        .whitelist_function("SimConnect_WeatherSetModeCustom")
        .whitelist_function("SimConnect_WeatherSetDynamicUpdateRate")
        .whitelist_function("SimConnect_WeatherRequestCloudState")
        .whitelist_function("SimConnect_WeatherCreateThermal")
        .whitelist_function("SimConnect_WeatherRemoveThermal")
        .whitelist_function("SimConnect_AICreateParkedATCAircraft")
        .whitelist_function("SimConnect_AICreateEnrouteATCAircraft")
        .whitelist_function("SimConnect_AICreateNonATCAircraft")
        .whitelist_function("SimConnect_AICreateSimulatedObject")
        .whitelist_function("SimConnect_AIReleaseControl")
        .whitelist_function("SimConnect_AIRemoveObject")
        .whitelist_function("SimConnect_AISetAircraftFlightPlan")
        .whitelist_function("SimConnect_ExecuteMissionAction")
        .whitelist_function("SimConnect_CompleteCustomMissionAction")
        .whitelist_function("SimConnect_Close")
        .whitelist_function("SimConnect_RetrieveString")
        .whitelist_function("SimConnect_GetLastSentPacketID")
        .whitelist_function("SimConnect_Open")
        .whitelist_function("SimConnect_CallDispatch")
        .whitelist_function("SimConnect_GetNextDispatch")
        .whitelist_function("SimConnect_RequestResponseTimes")
        .whitelist_function("SimConnect_InsertString")
        .whitelist_function("SimConnect_CameraSetRelative6DOF")
        .whitelist_function("SimConnect_MenuAddItem")
        .whitelist_function("SimConnect_MenuDeleteItem")
        .whitelist_function("SimConnect_MenuAddSubItem")
        .whitelist_function("SimConnect_MenuDeleteSubItem")
        .whitelist_function("SimConnect_RequestSystemState")
        .whitelist_function("SimConnect_SetSystemState")
        .whitelist_function("SimConnect_MapClientDataNameToID")
        .whitelist_function("SimConnect_CreateClientData")
        .whitelist_function("SimConnect_AddToClientDataDefinition")
        .whitelist_function("SimConnect_ClearClientDataDefinition")
        .whitelist_function("SimConnect_RequestClientData")
        .whitelist_function("SimConnect_SetClientData")
        .whitelist_function("SimConnect_FlightLoad")
        .whitelist_function("SimConnect_FlightSave")
        .whitelist_function("SimConnect_FlightPlanLoad")
        .whitelist_function("SimConnect_Text")
        .whitelist_function("SimConnect_SubscribeToFacilities")
        .whitelist_function("SimConnect_UnsubscribeToFacilities")
        .whitelist_function("SimConnect_RequestFacilitiesList")
        
        .whitelist_type("SIMCONNECT_DATA_RACE_RESULT")
        .whitelist_type("SIMCONNECT_DATA_INITPOSITION")
        .whitelist_type("SIMCONNECT_DATA_MARKERSTATE")
        .whitelist_type("SIMCONNECT_DATA_WAYPOINT")
        .whitelist_type("SIMCONNECT_DATA_LATLONALT")
        .whitelist_type("SIMCONNECT_DATA_XYZ")


        .generate()
        .expect("Unable to generate bindings");

    let out_path = PathBuf::from(env::var("OUT_DIR").unwrap());
    bindings
        .write_to_file(out_path.join("bindings.rs"))
        .expect("Couldn't write bindings!");
}