Arquivos
NodeCopterHack/node_modules/ar-drone/journal/2012-11-07.md
T
2013-08-10 13:15:52 +01:00

3.3 KiB

I am stuck again, I am unsure about the sensor data. Should I make it look like this?

{
  state: undefined,
  batteryLevel: undefined,
  flyState: undefined,
  emergency: undefined,
  altitudeMeters: undefined,
  frontBackDegrees: undefined,
  leftRightDegrees: undefined,
  clockSpinDegrees: undefined,
  frontBackSpeed: undefined,
  leftRightSpeed: undefined,
  upDownSpeed: undefined,
  .flying: undefined,
  videoEnabled: undefined,
  visionEnabled: undefined,
  controlAlgorithm: undefined,
  altitudeControlAlgorithm: undefined,
  startButtonState: undefined,
  controlCommandAck: undefined,
  cameraReady: undefined,
  travellingEnabled: undefined,
  usbReady: undefined,
  navdataDemo: undefined,
  navdataBootstrap: undefined,
  motorProblem: undefined,
  communicationLost: undefined,
  softwareFault: undefined,
  lowBattery: undefined,
  userEmergencyLanding: undefined,
  timerElapsed: undefined,
  magnometerNeedsCalibration: undefined,
  anglesOutOfRange: undefined,
  tooMuchWind: undefined,
  ultrasonicSensorDeaf: undefined,
  cutoutDetected: undefined,
  picVersionNumberOk: undefined,
  atCodecThreadOn: undefined,
  navdataThreadOn: undefined,
  videoThreadOn: undefined,
  acquisitionThreadOn: undefined,
  controlWatchdogDelay: undefined,
  adcWatchdogDelay: undefined,
  comWatchdogProblem: undefined,
  emergencyLanding: undefined,
}

Or like this:

{
  batteryLevel: undefined,
  controlStatus: undefined,
  flyStatus: undefined,
  altitudeMeters: undefined,
  gyros:{
    frontBack: undefined,
    leftRight: undefined,
    clockWise: undefined,
  },
  speed: {
    frontBack: undefined,
    leftRight: undefined,
    upDown: undefined,
  }
  status: {
    flying: undefined,
    videoEnabled: undefined,
    visionEnabled: undefined,
    controlAlgorithm: undefined,
    altitudeControlAlgorithm: undefined,
    startButtonState: undefined,
    controlCommandAck: undefined,
    cameraReady: undefined,
    travellingEnabled: undefined,
    usbReady: undefined,
    navdataDemo: undefined,
    navdataBootstrap: undefined,
    motorProblem: undefined,
    communicationLost: undefined,
    softwareFault: undefined,
    lowBattery: undefined,
    userEmergencyLanding: undefined,
    timerElapsed: undefined,
    magnometerNeedsCalibration: undefined,
    anglesOutOfRange: undefined,
    tooMuchWind: undefined,
    ultrasonicSensorDeaf: undefined,
    cutoutDetected: undefined,
    picVersionNumberOk: undefined,
    atCodecThreadOn: undefined,
    navdataThreadOn: undefined,
    videoThreadOn: undefined,
    acquisitionThreadOn: undefined,
    controlWatchdogDelay: undefined,
    adcWatchdogDelay: undefined,
    comWatchdogProblem: undefined,
    emergencyLanding: undefined,
  },
}

So this continue to be hard. I am wondering:

  • should I rename 'sensors' to 'navdata' ?
  • should my option sparsers "augment" the data object, or produce their own results

The latter questions seems more interesting, so let's contrast the approaches.

a) Augment data

Pro:

  • No need to "merge" / easier to achieve the combined data structure I want

Con:

  • Worse to test
  • Bad design

b) Return data

Pro:

  • Clean design
  • Easy to test

Con:

  • Needs to merge the data structure
  • Final data structure is not documented in one place
  • Missing options will cause missing elements in final data structure