Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement (de)serialization for Feature::ArDrone3 #20

Open
31 tasks
elpiel opened this issue Oct 17, 2020 · 0 comments
Open
31 tasks

Implement (de)serialization for Feature::ArDrone3 #20

elpiel opened this issue Oct 17, 2020 · 0 comments
Labels
good first issue Good for newcomers help wanted Extra attention is needed tracking

Comments

@elpiel
Copy link
Member

elpiel commented Oct 17, 2020

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:

#[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>,
},
}

For each ArDrone3 feature there must be implementations of:

  • impl TryFromCtx
  • impl TryIntoCtx

TODOs:

  • ArDrone3::Piloting
  • ArDrone3::Camera
  • ArDrone3::PilotingSettings
  • ArDrone3::MediaRecordEvent
  • ArDrone3::PilotingState
  • ArDrone3::Animations
  • ArDrone3::PilotingSettingsState
  • ArDrone3::MediaRecord
  • ArDrone3::MediaRecordState
  • ArDrone3::NetworkSettings
  • ArDrone3::NetworkSettingsState
  • ArDrone3::SpeedSettings
  • ArDrone3::SpeedSettingsState
  • ArDrone3::Network
  • ArDrone3::NetworkState
  • ArDrone3::SettingsState
  • ArDrone3::PictureSettings
  • ArDrone3::PictureSettingsState
  • ArDrone3::MediaStreaming
  • ArDrone3::MediaStreamingState
  • ArDrone3::GPSSettings
  • ArDrone3::GPSSettingsState
  • ArDrone3::CameraState
  • ArDrone3::AntiFlickering
  • ArDrone3::AntiFlickeringState
  • ArDrone3::GPSState Implement (de)serialization for Ardrone3::GPSState #13
  • ArDrone3::ProState
  • ArDrone3::AccessoryState
  • ArDrone3::PilotingEvent
  • ArDrone3::Sound
  • ArDrone3::SoundState

Resources

@elpiel elpiel added help wanted Extra attention is needed good first issue Good for newcomers tracking labels Oct 17, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
good first issue Good for newcomers help wanted Extra attention is needed tracking
Projects
None yet
Development

No branches or pull requests

1 participant