Fix the docs.rs build and improve the documentation
This commit is contained in:
@@ -4,7 +4,7 @@ version = "0.1.0"
|
||||
edition = "2021"
|
||||
license = "MIT"
|
||||
authors = ["Mihai Dinculescu <mihai.dinculescu@outlook.com>"]
|
||||
description = "SimConnect SDK"
|
||||
description = "SimConnect SDK. An opinionated SimConnect Client that encapsulates the C API fully and optimizes for developer experience."
|
||||
keywords = ["simconnect", "MSFS-2020", "simulation", "aerospace"]
|
||||
categories = ["aerospace", "simulation", "aerospace::simulation", "games"]
|
||||
readme = "README.md"
|
||||
@@ -24,9 +24,7 @@ tracing = "0.1"
|
||||
thiserror = "1.0"
|
||||
simconnect-sdk-derive = { version = "=0.1.0", path = "../simconnect-sdk-derive", optional = true }
|
||||
|
||||
# docs.rs-specific configuration
|
||||
[package.metadata.docs.rs]
|
||||
# document all features
|
||||
all-features = true
|
||||
# defines the configuration attribute `docsrs`
|
||||
rustdoc-args = ["--cfg", "docsrs"]
|
||||
targets = ["x86_64-pc-windows-msvc"]
|
||||
|
@@ -1,21 +0,0 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2022 Mihai Dinculescu
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
@@ -1,203 +0,0 @@
|
||||
# SimConnect SDK in Rust
|
||||
|
||||
[![Crates][crates_badge]][crates]
|
||||
[![Documentation][documentation_badge]][documentation]
|
||||
[![CI][ci_badge]][ci]
|
||||
[![license][license_badge]][license]
|
||||
[![Crates.io][crates_downloads_badge]][crates]\
|
||||
An opinionated SimConnect SDK that encapsulates the C API fully and optimizes for developer experience.
|
||||
|
||||
## Usage
|
||||
|
||||
```toml
|
||||
[dependencies]
|
||||
simconnect-sdk = { version = "0.1", features = ["derive"] }
|
||||
```
|
||||
|
||||
```rust
|
||||
use simconnect_sdk::{Notification, SimConnect, SimConnectObject};
|
||||
|
||||
/// A data structure that will be used to receive data from SimConnect.
|
||||
/// See the documentation of `SimConnectObject` for more information on the arguments of the `simconnect` attribute.
|
||||
#[derive(Debug, Clone, SimConnectObject)]
|
||||
#[simconnect(period = "second")]
|
||||
#[allow(dead_code)]
|
||||
struct AirplaneData {
|
||||
#[simconnect(name = "TITLE")]
|
||||
title: String,
|
||||
#[simconnect(name = "CATEGORY")]
|
||||
category: String,
|
||||
#[simconnect(name = "PLANE LATITUDE", unit = "degrees")]
|
||||
lat: f64,
|
||||
#[simconnect(name = "PLANE LONGITUDE", unit = "degrees")]
|
||||
lon: f64,
|
||||
#[simconnect(name = "PLANE ALTITUDE", unit = "feet")]
|
||||
alt: f64,
|
||||
#[simconnect(name = "SIM ON GROUND")]
|
||||
sim_on_ground: bool,
|
||||
}
|
||||
|
||||
fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
let client = SimConnect::new("Receiving data example");
|
||||
|
||||
match client {
|
||||
Ok(mut client) => {
|
||||
let mut notifications_received = 0;
|
||||
|
||||
loop {
|
||||
let notification = client.get_next_dispatch()?;
|
||||
|
||||
match notification {
|
||||
Some(Notification::Open) => {
|
||||
println!("Connection opened.");
|
||||
|
||||
// After the connection is successfully open, we register the struct
|
||||
client.register_object::<AirplaneData>()?;
|
||||
}
|
||||
Some(Notification::Object(data)) => {
|
||||
if let Ok(airplane_data) = AirplaneData::try_from(&data) {
|
||||
println!("{airplane_data:?}");
|
||||
|
||||
notifications_received += 1;
|
||||
|
||||
// After we have received 10 notifications, we unregister the struct
|
||||
if notifications_received > 10 {
|
||||
client.unregister_object::<AirplaneData>()?;
|
||||
println!("Subscription stopped.");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
_ => (),
|
||||
}
|
||||
|
||||
// sleep for about a frame to reduce CPU usage
|
||||
std::thread::sleep(std::time::Duration::from_millis(16));
|
||||
}
|
||||
}
|
||||
Err(e) => {
|
||||
println!("Error: {e:?}")
|
||||
}
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
```
|
||||
|
||||
See [more examples][examples].
|
||||
|
||||
## Contributing
|
||||
|
||||
Contributions are welcome and encouraged! See [/CONTRIBUTING.md][contributing].
|
||||
|
||||
## Feature table
|
||||
|
||||
### General
|
||||
|
||||
| Feature | Status | Comment |
|
||||
| --------------------------------------- | ------- | ----------- |
|
||||
| DispatchProc | | |
|
||||
| SimConnect_Open | ✓ | |
|
||||
| SimConnect_Close | ✓ | |
|
||||
| SimConnect_CallDispatch | | |
|
||||
| SimConnect_GetNextDispatch | ✓ | |
|
||||
| SimConnect_RequestSystemState | | |
|
||||
| SimConnect_MapClientEventToSimEvent | - | Coming soon |
|
||||
| SimConnect_SubscribeToSystemEvent | | |
|
||||
| SimConnect_SetSystemEventState | | |
|
||||
| SimConnect_UnsubscribeFromSystemEvent | | |
|
||||
| SimConnect_SetNotificationGroupPriority | - | Coming soon |
|
||||
|
||||
### Events And Data
|
||||
|
||||
| Feature | Status | Comment |
|
||||
| -------------------------------------------- | ------- | ----------------------------------- |
|
||||
| SimConnect_RequestDataOnSimObject | ✓ | Only for SIMCONNECT_OBJECT_ID_USER |
|
||||
| SimConnect_RequestDataOnSimObjectType | - | Coming soon |
|
||||
| SimConnect_AddClientEventToNotificationGroup | - | Coming soon |
|
||||
| SimConnect_RemoveClientEvent | | |
|
||||
| SimConnect_TransmitClientEvent | | |
|
||||
| SimConnect_TransmitClientEvent_EX1 | | |
|
||||
| SimConnect_MapClientDataNameToID | | |
|
||||
| SimConnect_RequestClientData | | |
|
||||
| SimConnect_CreateClientData | | |
|
||||
| SimConnect_AddToClientDataDefinition | | |
|
||||
| SimConnect_AddToDataDefinition | ✓ | Supports `f64`, `bool` and `String` |
|
||||
| SimConnect_SetClientData | | |
|
||||
| SimConnect_SetDataOnSimObject | | |
|
||||
| SimConnect_ClearClientDataDefinition | | |
|
||||
| SimConnect_ClearDataDefinition | ✓ | |
|
||||
| SimConnect_MapInputEventToClientEvent | | |
|
||||
| SimConnect_RequestNotificationGroup | | |
|
||||
| SimConnect_ClearInputGroup | | |
|
||||
| SimConnect_ClearNotificationGroup | | |
|
||||
| SimConnect_RequestReservedKey | | |
|
||||
| SimConnect_SetInputGroupPriority | | |
|
||||
| SimConnect_SetInputGroupState | | |
|
||||
| SimConnect_RemoveInputEvent | | |
|
||||
|
||||
### AI Objects
|
||||
|
||||
| Feature | Status | Comment |
|
||||
| ------------------------------------- | ------ | ------- |
|
||||
| SimConnect_AICreateEnrouteATCAircraft | | |
|
||||
| SimConnect_AICreateNonATCAircraft | | |
|
||||
| SimConnect_AICreateParkedATCAircraft | | |
|
||||
| SimConnect_AICreateSimulatedObject | | |
|
||||
| SimConnect_AIReleaseControl | | |
|
||||
| SimConnect_AIRemoveObject | | |
|
||||
| SimConnect_AISetAircraftFlightPlan | | |
|
||||
|
||||
### Flights
|
||||
|
||||
| Feature | Status | Comment |
|
||||
| ------------------------- | ------ | ------- |
|
||||
| SimConnect_FlightLoad | | |
|
||||
| SimConnect_FlightSave | | |
|
||||
| SimConnect_FlightPlanLoad | | |
|
||||
|
||||
### Debug
|
||||
|
||||
| Feature | Status | Comment |
|
||||
| ------------------------------- | ------ | ------- |
|
||||
| SimConnect_GetLastSentPacketID | | |
|
||||
| SimConnect_RequestResponseTimes | | |
|
||||
| SimConnect_InsertString | | |
|
||||
| SimConnect_RetrieveString | | |
|
||||
|
||||
### Facilities
|
||||
|
||||
| Feature | Status | Comment |
|
||||
| -------------------------------------- | ------- | ------- |
|
||||
| SimConnect_AddToFacilityDefinition | | |
|
||||
| SimConnect_RequestFacilitesList | ✓ | |
|
||||
| SimConnect_RequestFacilitiesList_EX1 | | |
|
||||
| SimConnect_RequestFacilityData | | |
|
||||
| SimConnect_SubscribeToFacilities | ✓ | |
|
||||
| SimConnect_SubscribeToFacilities_EX1 | | |
|
||||
| SimConnect_UnsubscribeToFacilities | ✓ | |
|
||||
| SimConnect_UnsubscribeToFacilities_EX1 | | |
|
||||
|
||||
### Missions
|
||||
|
||||
| Feature | Status | Comment |
|
||||
| -------------------------------------- | ------ | ------- |
|
||||
| SimConnect_CompleteCustomMissionAction | | |
|
||||
| SimConnect_ExecuteMissionAction | | |
|
||||
|
||||
## Credits
|
||||
|
||||
Inspired by [Sequal32/simconnect-rust][inspired_by].
|
||||
|
||||
[crates_badge]: https://img.shields.io/crates/v/simconnect-sdk.svg
|
||||
[crates]: https://crates.io/crates/simconnect-sdk
|
||||
[documentation_badge]: https://docs.rs/simconnect-sdk/badge.svg
|
||||
[documentation]: https://docs.rs/simconnect-sdk
|
||||
[ci_badge]: https://github.com/mihai-dinculescu/simconnect-sdk/workflows/CI/badge.svg?branch=main
|
||||
[ci]: https://github.com/mihai-dinculescu/simconnect-sdk/actions
|
||||
[license_badge]: https://img.shields.io/crates/l/simconnect-sdk.svg
|
||||
[license]: https://github.com/mihai-dinculescu/simconnect-sdk/blob/main/LICENSE
|
||||
[crates_downloads_badge]: https://img.shields.io/crates/d/simconnect-sdk?label=downloads
|
||||
[examples]: https://github.com/mihai-dinculescu/simconnect-sdk/tree/main/examples
|
||||
[contributing]: https://github.com/mihai-dinculescu/simconnect-sdk/blob/main/CONTRIBUTING.md
|
||||
[inspired_by]: https://github.com/Sequal32/simconnect-rust
|
Reference in New Issue
Block a user