You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: en/messages/development.md
+44-2Lines changed: 44 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -36,14 +36,43 @@ span.warning {
36
36
37
37
Type | Defined | Included
38
38
--- | --- | ---
39
-
[Messages](#messages) | 11 | 232
40
-
[Enums](#enumerated-types) | 13 | 152
39
+
[Messages](#messages) | 12 | 232
40
+
[Enums](#enumerated-types) | 14 | 152
41
41
[Commands](#mav_commands) | 177 | 0
42
42
43
43
The following sections list all entities in the dialect (both included and defined in this file).
44
44
45
45
## Messages
46
46
47
+
### ESC_EEPROM (292) — [WIP] {#ESC_EEPROM}
48
+
49
+
<spanclass="warning">**WORK IN PROGRESS**: Do not use in stable production environments (it may change).</span>
50
+
51
+
ESC EEPROM data message for reading and writing ESC configuration.
52
+
53
+
Supports multiple ESC firmware types including AM32, Bluejay, and BLHeli32.
54
+
ESC data is read by sending the [MAV_CMD_REQUEST_MESSAGE](#MAV_CMD_REQUEST_MESSAGE) with `param1=292` and `param2=esc_index`, where esc_index is the zero-indexed ESC number for the corresponding motor, and 255 is used to request data for all ESC.
55
+
The message can be sent to set the ESC value.
56
+
For write requests, a bitmask allows selective writing of specific bytes to avoid corrupting unchanged values.
57
+
58
+
The data format is opaque to the autopilot.
59
+
A GCS is required to understand the format in order to create an appropriate UI for display and setting configuration values, and to inform users when the ESC uses an unsupported data format.
60
+
Note that for AM32 EEPROMs the data layout is defined in: https://github.com/am32-firmware/AM32/blob/main/Inc/eeprom.h (the second byte in the structure is the eeprom_version).
61
+
The firmware field indicates which ESC firmware is in use, allowing the GCS to interpret the data correctly.
62
+
63
+
Field Name | Type | Values | Description
64
+
--- | --- | --- | ---
65
+
target_system | `uint8_t` | | System ID (ID of target system, normally flight controller).
66
+
target_component | `uint8_t` | | Component ID (normally 0 for broadcast).
msg_index | `uint8_t` | | Zero-indexed sequence number of this message when multiple messages are required to transfer the complete EEPROM data. The first message has index 0. For single-message transfers, set to 0.
69
+
msg_count | `uint8_t` | | Total number of messages required to transfer the complete EEPROM data. For single-message transfers, set to 1. Receivers should collect all messages from index 0 to msg_count-1 before reconstructing the complete data.
70
+
esc_index | `uint8_t` | max:254 | Index of the ESC (0 = ESC1, 1 = ESC2, etc.).
71
+
write_mask | `uint32_t[6]` | | Bitmask indicating which bytes in the data array should be written. Each bit corresponds to a byte index in the data array (bit 0 of write_mask[0] = data[0], bit 31 of write_mask[0] = data[31], bit 0 of write_mask[1] = data[32], etc.). Set bits indicate bytes to write, cleared bits indicate bytes to skip. This allows precise updates of individual parameters without overwriting the entire EEPROM.
72
+
length | `uint8_t` | max:222 | Number of valid bytes in data array.
73
+
data | `uint8_t[192]` | | Raw ESC EEPROM data. Unused bytes should be set to zero.
<aid='GLOBAL_POSITION_PRIMARY'></a>2 | [GLOBAL_POSITION_PRIMARY](#GLOBAL_POSITION_PRIMARY) | True if the data originates from or is consumed by the primary estimator.
442
471
472
+
### ESC_FIRMWARE — [WIP] {#ESC_FIRMWARE}
473
+
474
+
<spanclass="warning">**WORK IN PROGRESS**: Do not use in stable production environments (it may change).</span>
0 commit comments