ABCDEFGHIJKLMNOPQRST
1
Phone to Server (using SFS ExtensionRequest protocol)
2
RequestMessageVariable Type in AS3 (types used in SFSObject, C++)Permissible ValuesUnitsHow to DisplayNotesNamed Range LInks
3
Commands
4
Robot LoginrobotmemberloginNot yet implemented.Control_Panel_to_Phone
5
Coordinates
6
Phone_to_Control_Panel
7
Control Panel (Pilot) to Phone (using SFS PrivateMessageRequest protocol)Telemetry
8
RequestMessageVariable Type in AS3 (types used in SFSObject, C++)Permissible ValuesUnitsHow to DisplayNotes
9
10
MovemvMoveProps*L and R Motor Speed Requested indicatorsRobot will map requested 0 to 255 speeds to safe range between dcMin and dcTop
11
Motor Current Limitmcluint (byte, uint8_t) s1 to 128Horizontal Slider near Motor Controlsstep value "N" resulting in "I" mA limit according to formula
I = 23950 / ( 100 * N / 128 ) ^ 0.977
which is displayed to user
12
Steering TrimsttNumber (float) t-1.0 (left) to 1.0 (right)Horizontal Slider near Motor ControlsSign used to determine direction. In the case of skid steering, this means which motor's duty cycle request is to be scaled down. The effect (and the data tip user feedback) is interpreted on a simple y=x^2 parabolic exponential scale, from 100% of Left Trim at far left to Zero in the center to 100% Right Trim at far right. Thus the adjustment near the center is finer than at the extremes, e.g., input of ±0.1 → output of 0.01, ±0.2→0.04, ±0.5→0.25, etc.
13
14
Camera MovecmCameraMove*
15
Camera Move Homech
16
Camera Move Resetcr
17
Camera View ClickcvkShortXY*Command ID = 0x1BSee notes in Phone to MCU section
18
19
Camera ConfigcameraconfigCameraConfig*Test this configuration and report
20
Camera Config Adjust for MotioncameraconfigadjustBoolean (boolean) bToggles whether Robot is to switch to Motion configuration when moving
21
Camera Config DefaultcameraconfigdefCameraConfig*Store this configuration as default
22
Camera Config for MotioncameraconfigmotionCameraConfig*Store this configuration for use in motion
23
Camera FPS Poll Intervalcamerafpspollmsecint (short) m = msecs
24
Camera Stream Restartcamerarestart
25
26
Custom CommandcuArduinoCommand*User-configurable on Phone (notes in Phone to MCU section)
27
28
Flashlight On/OffflBoolean (boolean) b
29
Time StamppingPing*
30
31
EMS Acknowledgeemsack
32
Sleepsleep
33
Wakeupwake
34
Exitexit
35
36
Waypoint Navigation Offwp0
37
Waypoint Navigation Onwp1
38
WaypointwpWaypointCoordinates*[byte array index] descripton
[0] = 0x14 (WAYPOINT_COORD)
...
See Waypoint Coordinates class below for configuration details
39
Waypoint DeletewpdArduinoCommand*[byte array index] descripton
[0] = 0x1A (WAYPOINT_DELETE)
[1] = (unsigned byte) Admin ID
40
Waypoint MovewpmWaypointCoordinates*[byte array index] descripton
[0] = 0x19 (WAYPOINT_MOVE)
...
See Waypoint Coordinates class below for configuration details
41
Waypoints Clear Allwpca
42
Waypoints List AppendwplaSerialized vector of WaypointCoordinates* objectsVector (typed array) of WaypointCoordinates objects.
Due to potentially large size if user creates numerous waypoints, this is AMF3-serialized to a zlib-compressed byte array before wrapping in SFSObject.
43
Waypoints List ReplacewplrSerialized vector of WaypointCoordinates* objectsVector (typed array) of WaypointCoordinates objects.
Due to potentially large size if user creates numerous waypoints, this is AMF3-serialized to a zlib-compressed byte array before wrapping in SFSObject.
44
45
46
47
Control Panel (Copilot) to Server (using SFS ExtensionRequest protocol)
48
49
Pilot Control RequestcontrolrequestNot yet implemented.
Adds user to request queue
Not yet implemented
50
51
Control Panel (Pilot) to Server (using SFS ExtensionRequest protcol)
52
53
Pilot Control SurrendercontrolsurrenderNot yet implemented.
Transfers control to next user in the request queue, if any
Not yet implemented
54
55
56
57
58
Commands
Phone to MCU (using byte array protocol)
All in this section are wrapped in a command packet:
[0] = 0xA5 (COMMAND_PACKET_ID)
[1] = Packet Payload Length N (count of Command ID byte
and any argument bytes, but not LPC byte)
[2] = Command ID ([0] byte of payload)
[...] = Argument bytes of payload, if any
[N + 2] = LPC (longitudinal parity check)
59
Move0x01Speed: 0 to 255
Run Modes:
• FORWARD = 0x01
• BACKWARD = 0x02
• BRAKE = 0x03
• RELEASE = 0x04
[byte array index] descripton
[0] = 0x01 (MOVE)
[1] = (unsigned byte) Left Run Mode
[2] = (unsigned byte) Left Speed
[3] = (unsigned byte) Right Run Mode
[4] = (unsigned byte) Right Speed
60
Camera Move0x02
Pan and Tilt are in range 0° to 180° for most servos, but we provide 2 bytes for each to allow for those with range of 0° to 360°°[byte array index] descripton
[0] = 0x02 (CAMERA_MOVE)
[1 to 2] = (unsigned short) Pan (degrees)
[3 to 4] = (unsigned short) Tilt (degrees)
61
Camera Move Home0x04[byte array index] descripton
[0] = 0x04 (CAMERA_HOME)
62
Camera Move Reset0x05[byte array index] descripton
[0] = 0x05 (CAMERA_RESET)
63
Read EEPROM0x06[byte array index] descripton
[0] = 0x06 (EEPROM_READ)
[1 to 2] = (unsigned short) Address
[3] = (unsigned byte) Number of Data Bytes to Read
64
Write EEPROM0x07[byte array index] descripton
[0] = 0x07 (EEPROM_WRITE)
[1 to 2] = (unsigned short) Address
[3] = (unsigned byte) Number of Data Bytes (N) to Write
[4 to 3+N] = Data Bytes
65
Safe Rover0x08[byte array index] descripton
[0] = 0x08 SAFE_ROVER)
66
Sleep0x0A[byte array index] descripton
[0] = 0x0A (SLEEP)
67
Wakeup0x0B[byte array index] descripton
[0] = 0x0B (WAKEUP)
68
Head Light Off0x0C[byte array index] descripton
[0] = 0x0C (LIGHT_OFF)
69
Head Light On0x0D[byte array index] descripton
[0] = 0x0D (LIGHT_ON)
70
Ping Interval0x10unsigned long>= 500 ?ms[byte array index] descripton
[0] = 0x10 (PING_INTERVAL)
[1 to 4] = (unsigned long) Ping Interval
Maximum milliseconds expected to ellapse between Pings.
71
Comm Setup0x10byte0x00 = Watchdog Off
0x4E = 1 sec interrupt and system reset mode
0x4F = 2 sec
0x68 = 4 sec
0x69 = 8 sec
0x46 = 1 sec interrupt mode
0x47 = 2 sec
0x60 = 4 sec
0x61 = 8 sec
[byte array index] descripton
[0] = 0x10 (COMM_SETUP)
[1] = (unsigned byte) Mode ID
Replaced PING_INTERVAL as of 2016-07-28
72
Ping0x11[byte array index] descripton
[0] = 0x11 (PING)

73
Heading0x120 to 359°[byte array index] descripton
[0] = 0x12 (HEADING)
[1 to 2] = (unsigned short) Heading
74
Current Coordinates0x13[byte array index] descripton
[0] = 0x13 (CURRENT_COORD)
[1 to 8 or 1 to 16]
See Waypoint Coordinates class below for configuration details
75
Waypoint Coordinates0x14[byte array index] descripton
[0] = 0x14 (WAYPOINT_COORD)
[1 to 8 or 1 to 16]
See Waypoint Coordinates class below for configuration details
[9 or 17] = (unsigned byte) Admin ID
76
Waypoints Off0x16[byte array index] descripton
[0] = 0x16 (WAYPOINTS_OFF)
77
Waypoints On0x17[byte array index] descripton
[0] = 0x17 (WAYPOINTS_ON)
78
Waypoints Clear All0x18[byte array index] descripton
[0] = 0x18 (WAYPOINTS_CLEAR)
79
Waypoint Move0x19[byte array index] descripton
[0] = 0x19 (WAYPOINT_MOVE)
[1 to 8 or 1 to 16]
See Waypoint Coordinates class below for configuration details
[9 or 17] = (unsigned byte) Admin ID
80
Waypoint Delete0x1A[byte array index] descripton
[0] = 0x1A (WAYPOINT_DELETE)
[1] = (unsigned byte) Admin ID
81
Camera View Click0x1Bx and y are in pixels from upper left corner of pre-transform video stream[byte array index] descripton
[0] = 0x1B (CAMERA_VIEW_CLICK)
[1 to 2] = (unsigned short) x (pixels from left)
[3 to 4] = (unsigned short) y (pixels from top)
82
Servo Move0x1CServo Index 0 = Servo A
Servo Index 1 = Servo B
[byte array index] descripton
[0] = 0x1C (SERVO_MOVE)
[1] = (unsigned byte) Servo Index
[2 to 3] (unsigned short) Servo Position
Reserved, but currently not implemented.
83
Current Limit0x1Duint (byte, uint8_t)Motor Current Limit Step N where 1 <= N <= 128[byte array index] descripton
[0] = 0x1D (CURRENT_LIMIT)
[1] = (unsigned byte) Current Limit Step
84
Custom Command0x40 to 0x5FAs configured[byte array index] descripton
[0] = command ID in range of 0x40 to 0x5F (64 to 95)
[1 to ?] = Data as dictated by data type user configured
85
86
87
88
Telemetry
MCU to Phone (using byte array protocol)
All in this section are wrapped in a telemetry packet:
[0] = 0xCA (TELEMETRY_PACKET_ID)
[1] = Packet Payload Length N (count of Telemetry ID byte
and any data bytes, but not LPC byte)
[2] = Telemetry ID ([0] byte of payload)
[...] = Data bytes of payload, if any
[N+2] = LPC (longitudinal parity check)
89
Motor 1 Current0x01 (MOTOR1_CURRENT_ID)[byte array index] descripton
[0] = 0x01 (MOTOR1_CURRENT_ID)
[1 to 2] = (unsigned short) Value
90
Motor 2 Current0x02 (MOTOR2_CURRENT_ID)[byte array index] descripton
[0] = 0x02 (MOTOR2_CURRENT_ID)
[1 to 2] = (unsigned short) Value
91
Body Temperature0x03 (TEMP_SENSOR_ID)[byte array index] descripton
[0] = 0x03 (TEMP_SENSOR_ID)
[1 to 2] = (short) Value
92
Ultrasonic Ranger Left0x04 (RANGE_LEFT_ID)
93
Ultrasonic Ranger Right0x05 (RANGE_RIGHT_ID)
94
Robot Battery0x06 (BATTERY_ID)
95
Motor Battery0x07 (DIRTY_BATTERY_ID)
96
Pan0x08 (PAN_POSITION_ID)
97
Tilt0x09 (TILT_POSITION_ID)
98
EEPROM Read Result0x0A (EEPROM_RESPONSE_ID)[byte array index] descripton
[0] = 0x0A (EEPROM_RESPONSE)
[1 to 2] = (word) Address
[3] = (unsigned byte) Number of Data Bytes (N) to Follow
[4 to 3+N] = Data Bytes
99
Emergency0x0B (EMERGENCY_ID)Emergency Codes:
0x01 Watchdog Timeout (data byte always 0x00)
[byte array index] descripton
[0] = 0x0B (EMERGENCY_ID)
[1] = (unsigned byte) Emergency Code
[2] = (unsigned byte) Ancillary data where needed or 0x00

100
Command Dump0x0D (COMMAND_DUMP_ID)Echoes Command Received (in debug mode only)