Command defintions for AQ32 serial-based protocol, which is a very simple command-based protocol
var COMMANDS = module.exports = {
SoftwareVersion: {
commands: {
getter: '!'
},
parser: newLine,
mapping: [
'config.vehicle.version'
]
},
BoardConfiguration: {
commands: {
getter: '#'
},
parser: newLine,
lines: 16,
mapping: [
undefined,
['config.vehicle.version', colon, parseFloat],
['config.vehicle.type', colon],
['config.vehicle.flight_config', colon],
['config.vehicle.receiver_channels', colon, parseInt],
['config.vehicle.motor_count', colon, parseInt],
['config.vehicle.sensors.gyro', det],
['config.vehicle.sensors.accelerometer', det],
['config.vehicle.sensors.barometer', det],
['config.vehicle.sensors.magnetometer', det],
['config.vehicle.enabled_features.heading_hold', ena],
['config.vehicle.enabled_features.altitude_hold', ena],
['config.vehicle.enabled_features.battery_monitor', ena],
['config.vehicle.enabled_features.camera_stabilization', ena],
['config.vehicle.enabled_features.range_detection', ena],
['config.vehicle.enabled_features.gps', ena]
]
},
RatePID: {
commands: {
getter: 'a',
setter: 'A'
},
parser: comma,
lines: 1,
mapping: [
['config.pid.rate.roll', vector],
['config.pid.rate.pitch', vector],
'config.pid.rate.rotation_speed'
]
},
AttitudePID: {
commands: {
getter: 'b',
setter: 'B'
},
parser: comma,
lines: 1,
mapping: [
['config.pid.attitude.roll_accel', vector],
['config.pid.attitude.pitch_accel', vector],
['config.pid.attitude.roll_gyro', vector],
['config.pid.attitude.pitch_gyro', vector],
'config.pid.attitude.windup_guard'
]
},
YawHeadingHoldPID: {
commands: {
getter: 'c',
setter: 'C'
},
parser: comma,
lines: 1,
mapping: [
['config.pid.heading_hold.yaw', vector],
['config.pid.heading_hold.pid', vector],
'config.pid.heading_hold.config'
]
},
AltitudeHoldPID: {
commands: {
getter: 'd',
setter: 'D'
},
parser: comma,
lines: 1,
mapping: [
['config.pid.altitude_hold.pid', vector],
'config.pid.altitude_hold.windup_guard',
'config.pid.altitude_hold.throttle_bump',
'config.pid.altitude_hold.throttle_panic',
'config.pid.altitude_hold.min_throttle_adjust',
'config.pid.altitude_hold.max_throttle_adjust',
'config.pid.altitude_hold.smooth_factor',
['config.pid.altitude_hold.z_dampening', vector]
]
},
MiscConfig: {
commands: {
getter: 'e',
setter: 'E'
},
parser: newLine,
lines: 1,
lineSplit: [',', parseFloatDec, parseInt],
mapping: [
['config.vehicle.voltage_reference', 'config.vehicle.min_armed_throttle']
]
},
TransmitterSmoothing: {
commands: {
getter: 'f',
setter: 'F'
},
parser: comma,
lines: 1,
mapping: [
'config.transmitter.smoothing.factor',
'config.transmitter.smoothing.roll',
'config.transmitter.smoothing.pitch',
'config.transmitter.smoothing.yaw',
'config.transmitter.smoothing.throttle',
'config.transmitter.smoothing.mode',
'config.transmitter.smoothing.aux1',
'config.transmitter.smoothing.aux2',
'config.transmitter.smoothing.aux3',
'config.transmitter.smoothing.aux4',
'config.transmitter.smoothing.aux5'
]
},
TransmitterCalibration: {
commands: {
getter: 'g',
setter: 'G'
},
parser: comma,
mapping: []
},
TransmitterOffset: {
commands: {
getter: 'h',
setter: 'H'
},
parser: comma,
mapping: []
},
InitEEPROM: {
commands: {
method: 'I'
},
parser: comma
},
CalibrateGyro: {
commands: {
method: 'J'
}
},
AccelCalibration: {
commands: {
getter: 'k',
setter: 'K'
},
parser: comma,
mapping: []
},
GenerateAccelBias: {
commands: {
method: 'L'
}
},
MagnetometerCalibration: {
commands: {
getter: 'm',
setter: 'M'
},
parser: comma,
mapping: []
},
BatteryMonitor: {
commands: {
getter: 'n',
setter: 'N'
},
parser: comma,
mapping: [
'config.battery_monitor.alarm_voltage',
'config.battery_monitor.throttle_target'
]
},
WayPoint: {
commands: {
getter: 'o',
setter: 'O'
},
parser: comma,
mapping: []
},
CameraStabilization: {
commands: {
getter: 'p',
setter: 'P'
},
parser: comma,
mapping: [
'config.camera.stabilization.mode',
['config.camera.stabilization.center', vector],
['config.camera.stabilization.scale_angle', vector],
['config.camera.stabilization.servo.min', vector],
['config.camera.stabilization.servo.max', vector]
]
},
VehicleStateVariables: {
commands: {
getter: 'q'
},
parser: comma,
mapping: []
},
RangeFinder: {
commands: {
getter: 'u',
setter: 'U'
},
parser: comma,
mapping: [
'config.sensors.range_finder.max',
'config.sensors.range_finder.min'
]
},
GPSPID: {
commands: {
getter: 'v',
setter: 'V'
},
lines: 1,
parser: comma,
mapping: [
['config.pid.gps_hold.roll', vector],
['config.pid.gps_hold.pitch', vector],
['config.pid.gps_hold.yaw', vector]
]
},
WriteEEPROM: {
commands: {
method: 'W'
}
},
StopAllMessages: {
commands: {
method: 'X'
}
},
Sensor: {
stream: 'readable',
commands: {
stream: 'i'
},
parser: comma,
mapping: [
'state.vehicle.roll',
'state.vehicle.pitch',
'state.vehicle.yaw',
'state.vehicle.throttle',
'state.vehicle.mode',
'state.vehicle.aux1',
'state.vehicle.aux2',
'state.vehicle.aux3',
'state.vehicle.aux4'
]
},
Magnetometer: {
stream: 'readable',
commands: {
stream: 'y'
},
parser: comma,
mapping: [
'state.mag.x',
'state.mag.y',
'state.mag.z'
]
},
GPSStatus: {
stream: 'readable',
commands: {
stream: 'y'
},
parser: comma,
mapping: [
'state.gps.state',
'state.gps.lat',
'state.gps.lon',
'state.gps.height',
'state.gps.course',
'state.gps.speed',
'state.gps.accuracy',
'state.gps.sats',
'state.gps.fixtime',
'state.gps.sentences',
'state.gps.idlecount'
]
},
Altitude: {
stream: 'readable',
commands: {
stream: 'z'
},
parser: comma,
mapping: [
'state.altitude0',
'state.altitude1',
]
},
VoltageCurrent: {
stream: 'readable',
commands: {
stream: 'y'
},
parser: comma,
mapping: [
'state.battery.voltage',
'state.battery.current',
'state.battery.used_capacity'
]
},
RSSI: {
stream: 'readable',
commands: {
stream: '%'
},
parser: comma,
mapping: [
'state.rssi'
]
},
CalibrateESCHigh: {
commands: {
method: '1'
}
},
CalibrateESCLow: {
commands: {
method: '2'
}
},
ESCCalibrationOn: {
commands: {
method: '3'
}
},
ESCCalibrationOff: {
commands: {
method: '4'
}
},
Motors: {
commands: {
getter: '6',
setter: '5'
},
parser: comma,
mapping: [
'state.motor'
]
}
};