UAV
— UAV-related messages
UAVs are subtypes of objects and thus exist in the same namespace as all other objects in the server. The messages listed in this section are specific to UAVs and do not apply to other object types.
UAV-CALIB
- Calibrate a component of one or more UAVs
A client sends this request to the server to ask one or more UAVs to calibrate one of its components accelerometer, pressure sensor, ESCs and so on).
The message specifies the name of the component to calibrate and an additional
parameter object. The interpretation of the parameter object depends on the
component itself. Right now the protocol supports baro
, compass
, esc
,
gyro
and rc
, although not all UAV types may implement all of these
calibration types. As the component names are merely strings, the protocol can
easily be extended in the future with additional component types. UAVs that do
not know or do not support calibrating a specific component will return failures
for the unsupported components.
Request fields
Name | Required? | Type | Description |
---|---|---|---|
|
yes |
list of strings |
The list of UAV IDs to target with this message |
|
yes |
string |
The name of the UAV component to calibrate |
|
no |
object |
Additional parameters of the calibration |
Response fields
The response is a multi-object async response; each UAV is mapped to a boolean denoting whether the calibration was performed successfully on the UAV. The semantics of a successful response may vary from component to component; for instance, the calibration of a compass is a long process that requires a human operator to rotate the drone, so in this case the response may indicate success if the calibration has started. However, a pressure sensor is easily calibrated to a specific altitude without human intervention, so in this case the result indicates whether the calibration was successful.
Example request
{
"type": "UAV-CALIB",
"ids": ["1", "17", "31", "spam"],
"component": "baro",
"parameters": {}
}
Example response
{
"type": "UAV-CALIB",
"result": {
"1": true
},
"error": {
"31": "Component not supported.",
"spam": "No such UAV."
},
"receipt": {
"17": "0badcafedeadbeef"
}
}
UAV-FLY
— Fly to a specific GPS coordinate
A client sends this request to the server to ask a UAV to fly to a specific GPS coordinate and altitude. Note that it is possible to target multiple UAVs with the same command, in which case they will be asked to fly to the same coordinate. It is the responsibility of the software running on the UAVs to avoid collisions in such cases, so make sure that the UAVs can handle this.
The server responds with two lists: the first list contains the IDs of the UAVs where the command was accepted (which does not mean that the UAVs have reached the destination, only that the UAVs have started processing the command and act accordingly), and the second list contains the IDs where such an attempt was not started. (Possible reasons for failure could be: invalid UAV ID, UAV does not support flying to a specific waypoint, waypoint is outside the designated flying zone and so on). The server MAY decide to include more detailed information about failed attempts in the response.
The target is specified as a GPSCoordinate object. This object MUST contain a latitude and a longitude, but MAY omit both altitudes; in this case, the UAV SHOULD attempt flying to the target at the same altitude where it currently is.
Clients interested in whether the UAVs have reached their positions
should keep an eye on UAV-INF
messages.
Request fields
Name | Required? | Type | Description |
---|---|---|---|
|
yes |
list of strings |
The list of UAV IDs to target with this message |
|
yes |
The GPS coordinate to fly to |
Response fields
The response is a multi-object async response; each UAV is mapped to a boolean denoting whether the operation was sent successfully to the UAV. If the UAV supports acknowledgments for this operation, the result will indicate whether the UAV has acknowledged the operation. If the UAV does not support acknowledgments for this type of operation, the result will indicate whether the request has been sent to the UAV.
Example request
{
"type": "UAV-FLY",
"ids": ["1", "17", "31", "spam"],
"target": [519976597, -7406863, 93765, null]
}
Example response
{
"type": "UAV-FLY",
"result": {
"1": true
},
"error": {
"31": "UAV does not support flying to waypoints.",
"spam": "No such UAV."
},
"receipt": {
"17": "0badcafedeadbeef"
}
}
UAV-HALT
— Initiate immediate shutdown
A client sends this request to the server to initiate an immediate shutdown of an UAV in case of an emergency. Note that the UAV will not attempt to land - typically it will stop the rotors even in mid-air. Use this message only in emergencies.
The server responds with two lists: the first list contains the IDs of the UAVs where a shutdown attempt was started (in the sense that the UAV has been notified that they should shut down now), and the second list contains the IDs where such an attempt was not started. (Possible reasons for failure could be: invalid UAV ID, UAV does not support forced shutdown and so on). The server MAY decide to include more detailed information about failed attempts in the response.
Clients interested in whether the shutdown attempts have succeeded
should keep an eye on UAV-INF
messages.
Request fields
Name | Required? | Type | Description |
---|---|---|---|
|
yes |
list of strings |
The list of UAV IDs to target with this message |
|
no |
Object describing any additional preferences about how the messages should be delivered |
Response fields
The response is a multi-object async response; each UAV is mapped to a boolean denoting whether the operation was sent successfully to the UAV. If the UAV supports acknowledgments for this operation, the result will indicate whether the UAV has acknowledged the operation. If the UAV does not support acknowledgments for this type of operation, the result will indicate whether the request has been sent to the UAV.
Example request
{
"type": "UAV-HALT",
"ids": ["1", "17", "31", "spam"]
}
Example response
{
"type": "UAV-HALT",
"result": {
"1": true
},
"error": {
"31": "UAV does not support forced shutdown.",
"spam": "No such UAV."
},
"receipt": {
"17": "0badcafedeadbeef"
}
}
UAV-HOVER
- Request position hold immediately
A client sends this request to the server to request one or more UAVs to stop and hover in place in the air as soon as possible. Not applicable to fixed-wing UAVs that are not capable of hovering in place.
The server responds with two lists: the first list contains the IDs of the UAVs where the command to hover in place was sent, and the second list contains the IDs where such a command was not delivered successfully. (Possible reasons for failure could be: invalid UAV ID, UAV is a fixed-wing aircraft and so on). The server MAY decide to include more detailed information about failed attempts in the response.
Request fields
Name | Required? | Type | Description |
---|---|---|---|
|
yes |
list of strings |
The list of UAV IDs to target with this message |
|
no |
Object describing any additional preferences about how the messages should be delivered |
Response fields
The response is a multi-object async response; each UAV is mapped to a boolean denoting whether the operation was sent successfully to the UAV. If the UAV supports acknowledgments for this operation, the result will indicate whether the UAV has acknowledged the operation. If the UAV does not support acknowledgments for this type of operation, the result will indicate whether the request has been sent to the UAV.
Example request
{
"type": "UAV-HOVER",
"ids": ["1", "17", "31", "spam"]
}
Example response
{
"type": "UAV-HOVER",
"result": {
"1": true
},
"error": {
"31": "UAV is a fixed-wing aircraft.",
"spam": "No such UAV."
},
"receipt": {
"17": "0badcafedeadbeef"
}
}
UAV-INF
— Basic status information of one or more UAVs
A client sends this request to the server to obtain basic status information about one or more UAVs currently known to the server.
This message may also be broadcast as a notification by the server on its own volition to all connected Flockwave clients to notify them about a status change of one of the UAVs.
Request fields
Name | Required? | Type | Description |
---|---|---|---|
|
yes |
list of strings |
The list of UAV IDs that the client is interested in |
Response and notification fields
Name | Required? | Type | Description |
---|---|---|---|
|
no |
object of |
Object mapping UAV IDs to the corresponding status information. |
|
no |
object |
Object mapping UAV IDs to reasons why the corresponding status information could not have been retrieved. |
All the UAV IDs that were specified in the request MUST appear either
in the status
list or in the error
list. When this message is sent
as a notification, only the status
field SHOULD be present.
Example request
{
"type": "UAV-INF",
"ids": ["1", "spam"]
}
Example response
{
"type": "UAV-INF",
"status": {
"1": {
"id": "1",
"mode": "pos",
"position": [519976597, -7406863, 93765],
"positionXYZ": [0, 0, 0],
"gps": [3, 17],
"heading": 900,
"attitude": [0, 0, 900],
"velocity": [2000, 2000, -1000],
"velocityXYZ": [2000, 2000, 1000],
"timestamp": 1449562661000,
"debug": "0BADCAFE",
"errors": [17, 41],
"light": 2016,
"battery": [124],
"rssi": [80]
}
},
"error": {
"spam": "No such UAV."
}
}
UAV-LAND
— Initiate unsupervised landing
A client send this request to the server to initiate unsupervised landing on one or more UAVs. The server responds with two lists: the first list contains the IDs of the UAVs where an unsupervised landing attempt was started (in the sense that the UAV has been notified that they should land now), and the second list contains the IDs where such an attempt was not started. (Possible reasons for failure could be: invalid UAV ID, UAV does not support unsupervised landing and so on). The server MAY decide to include more detailed information about failed attempts in the response.
Clients interested in whether the landing attempts have succeeded should
keep an eye on UAV-INF
messages.
Request fields
Name | Required? | Type | Description |
---|---|---|---|
|
yes |
list of strings |
The list of UAV IDs to target with this message |
|
no |
Object describing any additional preferences about how the messages should be delivered |
Response fields
The response is a multi-object async response; each UAV is mapped to a boolean denoting whether the operation was sent successfully to the UAV. If the UAV supports acknowledgments for this operation, the result will indicate whether the UAV has acknowledged the operation. If the UAV does not support acknowledgments for this type of operation, the result will indicate whether the request has been sent to the UAV.
Example request
{
"type": "UAV-LAND",
"ids": ["1", "17", "31", "spam"]
}
Example response
{
"type": "UAV-LAND",
"result": {
"1": true
},
"error": {
"31": "UAV is a beacon.",
"spam": "No such UAV."
},
"receipt": {
"17": "0badcafedeadbeef"
}
}
UAV-LIST
— List of all the UAVs known by the server
A client sends this request to the server to request the list of all UAVs currently known by the server. The semantics of ``knowing'' a UAV is left up to the server implementation and configuration; typically, the server will return an UAV ID in the response if it has received a status message from the given UAV recently, typically in the last few minutes.
This message is equivalent to sending an OBJ-LIST
message with its
filter
set to uav
; it exists solely for compatibility with legacy
clients and will be deprecated in Flockwave 2.0.
Request fields
This request has no fields.
Response fields
Name | Required? | Type | Description |
---|---|---|---|
|
yes |
list of strings |
The list of UAV IDs that the server knows |
Example request
{
"type": "UAV-LIST"
}
Example response
{
"type": "UAV-LIST",
"ids": ["1", "17", "31"]
}
UAV-MOTOR
— Send request to turn motors on (without taking off) or off
A client sends this request to the server to request one or more of the UAVs to turn their motors on or off. Not all UAVs support this operation; UAVs that do not support turning on their motors without taking off should do nothing.
Typically, it is dangerous to turn off the motors while the UAV is airborne, and the default behaviour in such cases is to deny the operation. When the operator wants to stop the motors of the UAV even if it is airborne (in other words, to initiate an emergency stop without shutting down the software of the UAV), the command must be sent in "forced" mode.
Request fields
Name | Required? | Type | Description |
---|---|---|---|
|
yes |
list of strings |
The list of UAV IDs to target with this message |
|
yes |
boolean |
Whether to start ( |
|
no |
boolean |
Whether the command is forced, i.e. the UAV should execute it even if it is not safe to do so. Defaults to |
|
no |
Object describing any additional preferences about how the messages should be delivered |
Response fields
The response is a multi-object async response; each UAV is mapped to a boolean denoting whether the operation was sent successfully to the UAV. If the UAV supports acknowledgments for this operation, the result will indicate whether the UAV has acknowledged the operation. If the UAV does not support acknowledgments for this type of operation, the result will indicate whether the request has been sent to the UAV.
Example request
{
"type": "UAV-MOTOR",
"ids": ["1", "17", "31", "spam"],
"start": false,
"force": true
}
Example response
{
"type": "UAV-MOTOR",
"result": {
"1": true
},
"error": {
"31": "UAV does not support forced motor shutdown.",
"spam": "No such UAV."
},
"receipt": {
"17": "0badcafedeadbeef"
}
}
UAV-PREFLT
— Preflight checklist information of one or more UAVs
A client sends this request to the server to obtain detailed information about the state of the onboard preflight checks on one or more UAVs currently known to the server.
Request fields
Name | Required? | Type | Description |
---|---|---|---|
|
yes |
list of strings |
The list of UAV IDs that the client is interested in |
Response and notification fields
Name | Required? | Type | Description |
---|---|---|---|
|
no |
object of |
Object mapping UAV IDs to the corresponding preflight check information. |
|
no |
object |
Object mapping UAV IDs to reasons why the corresponding preflight checklist could not have been retrieved. |
All the UAV IDs that were specified in the request MUST appear either
in the status
list or in the error
list. When this message is sent
as a notification, only the status
field SHOULD be present.
Example request
{
"type": "UAV-PREFLT",
"ids": ["1", "spam"]
}
Example response
{
"type": "UAV-PREFLT",
"status": {
"1": {
"message": "Compass inconsistency",
"result": "failure",
"items": [
{
"id": "compass",
"label": "Compass",
"result": "failure",
"message": "Compass inconsistency detected"
},
{
"id": "imu",
"label": "IMU",
"result": "pass",
"message": "IMU subsystem healthy"
},
{
"id": "gps",
"label": "GPS",
"result": "pass",
"message": "3D GPS fix"
},
{
"id": "Home",
"label": "Home position",
"result": "warning",
"message": "Home position not set yet"
}
]
}
},
"error": {
"spam": "No such UAV."
}
}
UAV-RST
— Send reboot request
A client sends this request to the server to initiate the reboot of the entire UAV or some subsystem of it. Note that this is a potentially dangerous operation; this message only if the UAV is on the ground or if you are sure that the rebooted subsystem does not affect the normal operation of the UAV during flight.
The server responds with two lists: the first list contains the IDs of the UAVs where a reboot attempt was started (in the sense that the UAV has been notified that they should reboot), and the second list contains the IDs where such an attempt was not started. (Possible reasons for failure could be: invalid UAV ID, UAV does not support rebooting and so on). The server MAY decide to include more detailed information about failed attempts in the response.
Request fields
Name | Required? | Type | Description |
---|---|---|---|
|
yes |
list of strings |
The list of UAV IDs to target with this message |
|
no |
string |
The name of the UAV component to reboot. The list of allowed names depends on the type of the UAV. When omitted or empty, the entire UAV will be rebooted as if it was turned off and then on again. |
|
no |
Object describing any additional preferences about how the messages should be delivered |
Response fields
The response is a multi-object async response; each UAV is mapped to a boolean denoting whether the operation was sent successfully to the UAV. If the UAV supports acknowledgments for this operation, the result will indicate whether the UAV has acknowledged the operation. If the UAV does not support acknowledgments for this type of operation, the result will indicate whether the request has been sent to the UAV.
Example request
{
"type": "UAV-RST",
"ids": ["1", "17", "31", "spam"],
"component": "autopilot"
}
Example response
{
"type": "UAV-RST",
"result": {
"1": true
},
"error": {
"31": "UAV does not support rebooting.",
"spam": "No such UAV."
},
"receipt": {
"17": "0badcafedeadbeef"
}
}
UAV-RTH
— Initiate return to home position
A client send this request to the server to request some of the UAVs to return to their home positions.
The server responds with two lists: the first list contains the IDs of the UAVs where an unsupervised landing attempt was started (in the sense that the UAV has been notified that they should return to their home positions now), and the second list contains the IDs where such an attempt was not started. (Possible reasons for failure could be: invalid UAV ID, UAV does not know the concept of a home position and so on). The server MAY decide to include more detailed information about failed attempts in the response.
Clients interested in whether the targeted UAVs have returned to their
home positions should keep an eye on UAV-INF
messages and watch
the GPS coordinates of the UAVs.
Request fields
Name | Required? | Type | Description |
---|---|---|---|
|
yes |
list of strings |
The list of UAV IDs to target with this message |
|
no |
Object describing any additional preferences about how the messages should be delivered |
Response fields
The response is a multi-object async response; each UAV is mapped to a boolean denoting whether the operation was sent successfully to the UAV. If the UAV supports acknowledgments for this operation, the result will indicate whether the UAV has acknowledged the operation. If the UAV does not support acknowledgments for this type of operation, the result will indicate whether the request has been sent to the UAV.
Example request
{
"type": "UAV-RTH",
"ids": ["1", "17", "31", "spam"],
"transport": {
"channel": 1,
"broadcast": true
}
}
Example response
{
"type": "UAV-RTH",
"result": {
"1": true
},
"error": {
"31": "UAV is a beacon.",
"spam": "No such UAV."
},
"receipt": {
"17": "0badcafedeadbeef"
}
}
UAV-SIGNAL
- Emit light or audio signals
A client sends this request to the server to ask one or more UAVs to emit a light or audio signal in order to attract attention. This is useful if you are trying to find a lost drone in the field or if you want to identify a drone needing battery replacement in a drone swarm, given its ID.
The message specifies what sort of signal should be emitted; right now the
protocol supports light
and sound
signals, but more signal types may be
added in the future. As the signal types are merely strings, the protocol can
easily be extended in the future with additional signal types, and UAVs that
do not know or do not support a specific signal type should simply ignore the
unknown ones.
Request fields
Name | Required? | Type | Description |
---|---|---|---|
|
yes |
list of strings |
The list of UAV IDs to target with this message |
|
yes |
list of strings |
The list of signal types that the targeted UAVs should emit |
|
yes |
integer |
The duration of the signal, in milliseconds. UAVs that do not support prescribed signal durations may ignore it and fall back to a default duration. |
|
no |
Object describing any additional preferences about how the messages should be delivered |
Response fields
The response is a multi-object async response; each UAV is mapped to a boolean denoting whether the operation was sent successfully to the UAV. If the UAV supports acknowledgments for this operation, the result will indicate whether the UAV has acknowledged the operation. If the UAV does not support acknowledgments for this type of operation, the result will indicate whether the request has been sent to the UAV.
Example request
{
"type": "UAV-SIGNAL",
"ids": ["1", "17", "31", "spam"],
"signals": ["sound", "light"],
"duration": 5000
}
Example response
{
"type": "UAV-SIGNAL",
"result": {
"1": true
},
"error": {
"31": "UAV is a beacon.",
"spam": "No such UAV."
},
"receipt": {
"17": "0badcafedeadbeef"
}
}
UAV-SLEEP
— Send the UAV to a low-power state.
A client sends this request to the server to request one or more UAVs to switch to a low-power state where most of the components are powered down, except the ones responsible for maintaining a connection with the GCS. This allows the operator to suspend a UAV remotely and wake it up later. UAVs that do not support low-power states MUST NOT treat this command as a poweroff command as it becomes impossible to recover from the powered-down state without physically restarting the UAV.
The server responds with two lists: the first list contains the IDs of the UAVs where the command was acknowledged, and the second list contains the IDs where such an acknowledgment was not received. (Note that the UAV may have still entered a low-power state even if the acknowledgment was not received; this may happen if the UAV is constructed in a way that it does not have time to send the acknowledgment before it powers down).
Clients interested in whether the low-power state switch attempts have succeeded
should keep an eye on UAV-INF
messages.
Request fields
Name | Required? | Type | Description |
---|---|---|---|
|
yes |
list of strings |
The list of UAV IDs to target with this message |
|
no |
Object describing any additional preferences about how the messages should be delivered |
Response fields
The response is a multi-object async response; each UAV is mapped to a boolean denoting whether the operation was sent successfully to the UAV. If the UAV supports acknowledgments for this operation, the result will indicate whether the UAV has acknowledged the operation. If the UAV does not support acknowledgments for this type of operation, and the server knows that no acknowledgment should be expected, the result may indicate whether the request has been sent to the UAV instead.
Example request
{
"type": "UAV-SLEEP",
"ids": ["1", "17", "31", "spam"]
}
Example response
{
"type": "UAV-SLEEP",
"result": {
"1": true
},
"error": {
"31": "UAV does not support sleep mode.",
"spam": "No such UAV."
},
"receipt": {
"17": "0badcafedeadbeef"
}
}
UAV-TAKEOFF
— Initiate unsupervised take-off
A client sends this request to the server to initiate unsupervised take-off on one or more UAVs. The server responds with two lists: the first list contains the IDs of the UAVs where an unsupervised take-off was started (in the sense that the UAV has been notified that they should take off now), and the second list contains the IDs where such an attempt was not started. (Possible reasons for failure could be: invalid UAV ID, UAV does not support unsupervised take-off and so on). The server MAY decide to include more detailed information about failed attempts in the response.
Clients interested in whether the take-off attempts have succeeded
should keep an eye on UAV-INF
messages and watch the status flags
of the UAVs.
Request fields
Name | Required? | Type | Description |
---|---|---|---|
|
yes |
list of strings |
The list of UAV IDs to target with this message |
|
no |
Object describing any additional preferences about how the messages should be delivered |
Response fields
The response is a multi-object async response; each UAV is mapped to a boolean denoting whether the operation was sent successfully to the UAV. If the UAV supports acknowledgments for this operation, the result will indicate whether the UAV has acknowledged the operation. If the UAV does not support acknowledgments for this type of operation, the result will indicate whether the request has been sent to the UAV.
Example request
{
"type": "UAV-TAKEOFF",
"ids": ["1", "17", "31", "spam"]
}
Example response
{
"type": "UAV-TAKEOFF",
"result": {
"1": true
},
"error": {
"31": "UAV is a beacon.",
"spam": "No such UAV."
},
"receipt": {
"17": "0badcafedeadbeef"
}
}
UAV-TEST
- Test a component of one or more UAVs
A client sends this request to the server to ask one or more UAVs to perform a self-test on one of its components.
The message specifies the name of the component to test and an additional
parameter object. The interpretation of the parameter object depends on the
component itself. Right now the protocol supports motor
and led
as the
component names, but more component types may be added in the future. As the
component names are merely strings, the protocol can easily be extended in the
future with additional component types. UAVs that do not know or do not support
testing a specific component will return failures for the unsupported components.
Request fields
Name | Required? | Type | Description |
---|---|---|---|
|
yes |
list of strings |
The list of UAV IDs to target with this message |
|
yes |
string |
The name of the UAV component to test |
|
no |
object |
Additional parameters of the test |
Response fields
The response is a multi-object async response; each UAV is mapped to a boolean denoting whether the self-test was performed successfully on the UAV. The semantics of a successful response may vary from component to component; for instance, the self-test of a LED light requires a human operator to observe whether the LED light works correctly, so in this case the response will indicate success if the test has started. Similarly, a motor test might be handled by a particular UAV in a way that a human operator has to observe the motors to check whether they are spinning in the right direction.
Example request
{
"type": "UAV-TEST",
"ids": ["1", "17", "31", "spam"],
"component": "motor",
"parameters": {}
}
Example response
{
"type": "UAV-TEST",
"result": {
"1": true
},
"error": {
"31": "Component not supported.",
"spam": "No such UAV."
},
"receipt": {
"17": "0badcafedeadbeef"
}
}
UAV-VER
— Query version number of components
A client sends this request to the server to retrieve the version numbers of the essential components of one or more UAVs.
It is up to the UAVs to decide which components can report version numbers and how these version numbers should be presented to the user. A simple non-autonomous UAV may report only the version number of the hardware and the firmware, while a more complex autonomous UAV may report several version numbers for various software components.
Request fields
Name | Required? | Type | Description |
---|---|---|---|
|
yes |
list of strings |
The list of UAV IDs to target with this message |
Response fields
The response is a multi-object async response; each UAV is mapped to another object mapping component names to version numbers.
Example request
{
"type": "UAV-VER",
"ids": ["1", "17", "spam"]
}
Example response
{
"type": "UAV-VER",
"result": {
"1": {
"firmware": "2.4.17",
"hardware": "1.3"
}
},
"error": {
"spam": "No such UAV."
},
"receipt": {
"17": "0badcafedeadbeef"
}
}
UAV-WAKEUP
— Recall the UAV from a low-power state to normal operational state.
A client sends this request to the server to request one or more UAVs to
switch back to normal operational state from a low-power state. This
allows the operator to wake up a UAV that was suspended earlier with
UAV-SLEEP
.
The server responds with two lists: the first list contains the IDs of the UAVs where the command was acknowledged, and the second list contains the IDs where such an acknowledgment was not received. (Note that the UAV may have still started recovering to a normal operational state even if the acknowledgment was not received; this may happen if the UAV is constructed in a way that it does not respond to wakeup calls because the power management subsystem is too low-level to engage in communication).
Clients interested in whether the wakeup calls have succeeded should keep an eye
on UAV-INF
messages.
Request fields
Name | Required? | Type | Description |
---|---|---|---|
|
yes |
list of strings |
The list of UAV IDs to target with this message |
|
no |
Object describing any additional preferences about how the messages should be delivered |
Response fields
The response is a multi-object async response; each UAV is mapped to a boolean denoting whether the operation was sent successfully to the UAV. If the UAV supports acknowledgments for this operation, the result will indicate whether the UAV has acknowledged the operation. If the UAV does not support acknowledgments for this type of operation, and the server knows that no acknowledgment should be expected, the result may indicate whether the request has been sent to the UAV instead.
Example request
{
"type": "UAV-WAKEUP",
"ids": ["1", "17", "31", "spam"]
}
Example response
{
"type": "UAV-WAKEUP",
"result": {
"1": true
},
"error": {
"31": "UAV does not support sleep mode.",
"spam": "No such UAV."
},
"receipt": {
"17": "0badcafedeadbeef"
}
}