|
#[derive(Debug, Clone, Eq, PartialEq)] |
|
/// u8 |
|
pub enum ArDrone3 { |
|
/// ARCOMMANDS_ID_ARDRONE3_CLASS_PILOTING = 0 |
|
Piloting(Piloting), |
|
/// ARCOMMANDS_ID_ARDRONE3_CLASS_CAMERA = 1 |
|
Camera, |
|
/// ARCOMMANDS_ID_ARDRONE3_CLASS_PILOTINGSETTINGS = 2 |
|
PilotingSettings, |
|
/// ARCOMMANDS_ID_ARDRONE3_CLASS_MEDIARECORDEVENT = 3 |
|
MediaRecordEvent, |
|
/// ARCOMMANDS_ID_ARDRONE3_CLASS_PILOTINGSTATE = 4 |
|
PilotingState(PilotingState), |
|
/// ARCOMMANDS_ID_ARDRONE3_CLASS_ANIMATIONS = 5 |
|
Animations, |
|
/// ARCOMMANDS_ID_ARDRONE3_CLASS_PILOTINGSETTINGSSTATE = 6 |
|
PilotingSettingsState, |
|
/// ARCOMMANDS_ID_ARDRONE3_CLASS_MEDIARECORD = 7 |
|
MediaRecord, |
|
/// ARCOMMANDS_ID_ARDRONE3_CLASS_MEDIARECORDSTATE = 8 |
|
MediaRecordState, |
|
/// ARCOMMANDS_ID_ARDRONE3_CLASS_NETWORKSETTINGS = 9 |
|
NetworkSettings, |
|
/// ARCOMMANDS_ID_ARDRONE3_CLASS_NETWORKSETTINGSSTATE = 10 |
|
NetworkSettingsState, |
|
/// ARCOMMANDS_ID_ARDRONE3_CLASS_SPEEDSETTINGS = 11 |
|
SpeedSettings, |
|
/// ARCOMMANDS_ID_ARDRONE3_CLASS_SPEEDSETTINGSSTATE = 12 |
|
SpeedSettingsState, |
|
/// ARCOMMANDS_ID_ARDRONE3_CLASS_NETWORK = 13 |
|
Network, |
|
/// ARCOMMANDS_ID_ARDRONE3_CLASS_NETWORKSTATE = 14 |
|
NetworkState, |
|
/// ARCOMMANDS_ID_ARDRONE3_CLASS_SETTINGSSTATE = 16 |
|
SettingsState, |
|
/// ARCOMMANDS_ID_ARDRONE3_CLASS_PICTURESETTINGS = 19 |
|
PictureSettings, |
|
/// ARCOMMANDS_ID_ARDRONE3_CLASS_PICTURESETTINGSSTATE = 20 |
|
PictureSettingsState, |
|
/// ARCOMMANDS_ID_ARDRONE3_CLASS_MEDIASTREAMING = 21 |
|
MediaStreaming(MediaStreaming), |
|
/// ARCOMMANDS_ID_ARDRONE3_CLASS_MEDIASTREAMINGSTATE = 22 |
|
/// |
|
/// TODO: More info on this command |
|
/// On how to start the video stream, look at: |
|
/// arsdk-native/packages/libARController/Sources/ARCONTROLLER_Stream.c:219 |
|
/// |
|
/// Possible values: |
|
/// - ARCOMMANDS_ARDRONE3_MEDIASTREAMINGSTATE_VIDEOENABLECHANGED_ENABLED_ENABLED |
|
/// Starts stream |
|
/// - ARCOMMANDS_ARDRONE3_MEDIASTREAMINGSTATE_VIDEOENABLECHANGED_ENABLED_DISABLED |
|
/// |
|
/// ```c |
|
/// /** |
|
/// * @brief Current video streaming status. |
|
/// */ |
|
/// typedef enum |
|
/// { |
|
/// ARCOMMANDS_ARDRONE3_MEDIASTREAMINGSTATE_VIDEOENABLECHANGED_ENABLED_ENABLED = 0, ///< Video streaming is enabled. |
|
/// ARCOMMANDS_ARDRONE3_MEDIASTREAMINGSTATE_VIDEOENABLECHANGED_ENABLED_DISABLED = 1, ///< Video streaming is disabled. |
|
/// ARCOMMANDS_ARDRONE3_MEDIASTREAMINGSTATE_VIDEOENABLECHANGED_ENABLED_ERROR = 2, ///< Video streaming failed to start. |
|
/// ARCOMMANDS_ARDRONE3_MEDIASTREAMINGSTATE_VIDEOENABLECHANGED_ENABLED_MAX |
|
/// } eARCOMMANDS_ARDRONE3_MEDIASTREAMINGSTATE_VIDEOENABLECHANGED_ENABLED; |
|
/// ``` |
|
MediaStreamingState, |
|
/// ARCOMMANDS_ID_ARDRONE3_CLASS_GPSSETTINGS = 23 |
|
GPSSettings, |
|
/// ARCOMMANDS_ID_ARDRONE3_CLASS_GPSSETTINGSSTATE = 24 |
|
GPSSettingsState, |
|
/// Frame { frame_type: Data, buffer_id: DCNavdata, sequence_id: 69, |
|
/// feature: Some(Unknown { feature: 1, data: [25, 0, 0, 243, 0] }) } |
|
/// ARCOMMANDS_ID_ARDRONE3_CLASS_CAMERASTATE = 25 |
|
/// 1. u16: |
|
/// - ARCOMMANDS_ID_ARDRONE3_CAMERASTATE_CMD_ORIENTATION = 0, |
|
/// * _tilt: u8 |
|
/// * _pan: u8 |
|
/// - ARCOMMANDS_ID_ARDRONE3_CAMERASTATE_CMD_DEFAULTCAMERAORIENTATION = 1, |
|
/// - ARCOMMANDS_ID_ARDRONE3_CAMERASTATE_CMD_ORIENTATIONV2 = 2, |
|
/// * _tilt: float?! |
|
/// * _pan: float?! |
|
/// See also `ARCOMMANDS_ReadWrite_AddFloatToBuffer`: |
|
/// > // Add a float to the buffer |
|
/// > // Returns -1 if the buffer is not big enough |
|
/// > // Returns the new offset in the buffer on success |
|
/// > int32_t ARCOMMANDS_ReadWrite_AddFloatToBuffer (uint8_t *buffer, float newVal, int32_t oldOffset, int32_t buffCap) |
|
/// > { |
|
/// > union { |
|
/// > float f; |
|
/// > uint32_t u32; |
|
/// > } val = { .f = newVal }; |
|
/// > return ARCOMMANDS_ReadWrite_AddU32ToBuffer (buffer, val.u32, oldOffset, buffCap); |
|
/// > } |
|
/// - ARCOMMANDS_ID_ARDRONE3_CAMERASTATE_CMD_DEFAULTCAMERAORIENTATIONV2 = 3, |
|
/// - ARCOMMANDS_ID_ARDRONE3_CAMERASTATE_CMD_VELOCITYRANGE = 4, |
|
/// |
|
/// 2. _tilt - u8 |
|
/// 3. _pan - u8 |
|
CameraState, |
|
/// ARCOMMANDS_ID_ARDRONE3_CLASS_ANTIFLICKERING = 29 |
|
AntiFlickering, |
|
/// ARCOMMANDS_ID_ARDRONE3_CLASS_ANTIFLICKERINGSTATE = 30 |
|
AntiFlickeringState, |
|
/// ARCOMMANDS_ID_ARDRONE3_CLASS_GPSSTATE = 31 |
|
/// TODO: use the GPSState struct |
|
GPSState, |
|
/// ARCOMMANDS_ID_ARDRONE3_CLASS_PROSTATE = 32 |
|
ProState, |
|
/// ARCOMMANDS_ID_ARDRONE3_CLASS_ACCESSORYSTATE = 33 |
|
AccessoryState, |
|
/// ARCOMMANDS_ID_ARDRONE3_CLASS_PILOTINGEVENT = 34 |
|
PilotingEvent, |
|
/// ARCOMMANDS_ID_ARDRONE3_CLASS_SOUND = 35 |
|
Sound, |
|
/// ARCOMMANDS_ID_ARDRONE3_CLASS_SOUNDSTATE = 36 |
|
SoundState, |
|
Unknown { |
|
ardrone3: u8, |
|
data: Vec<u8>, |
|
}, |
|
} |
Implement Feature::ArDrone3
Most of these ArDrone3 features still need implementing. They all have references to the C SDK that need to be tracked down in order to know what they contain and how to (de)serialize them.
Some features already have more information taken from the official C SDK, PyParrot Python SDK or even received Frames during testing that are Unknown and need implementing.
ArDrone3 can be found here:
arsdk-rs/arsdk-rs/src/ardrone3.rs
Lines 9 to 128 in 040590f
For each ArDrone3 feature there must be implementations of:
impl TryFromCtximpl TryIntoCtxTODOs:
Resources
must be built in order to have the reference Features to be able to track them down.