* message 설명 : autopilot software의 버전과 지원할 수 있는 항목들을 GCS에게 보내줌
* message id : 148
* Fields 설명 (1번부터 순서대로 MAVLink 문서에 설명된 필드임)
1. capabilities (uint64_t) : 여러 항목들에 대한 지원 여부를 비트로 표현한 필드(Fields 설명후 자세하게 설명)
2. flight_sw_version (uint32_t) : 펌웨어 버전 번호
3. middleware_sw_version (uint32_t) : 미들웨어 버전 번호
4. os_sw_version (uint32_t) : 운영체제 버전 번호
5. board-version (uint32_t) : 하드웨어, 보드 버전
6. flight_custom_version (uint8_t[8]) : git hash(commitment에 대한 hash)의 처음 8바이트
7. middleware_custom_version (uint8_t[8]) : git hash(commitment에 대한 hash)의 처음 8바이트
8. os_custom_version (uint8_t[8]) : git hash(commitment에 대한 hash)의 처음 8바이트
9. vendor_id (uint16_t) : 보드 벤더에 대한 ID
10. product_id (uint16_t) : 제품에 대한 ID
11. uid (uint64_t) : 하드웨어에서 제공하는 UID
12. uid2 (uint8_t[18]) : uid 필드를 대체하는 필드, 0이 아니면 해당 필드를 uid로 인식함
* wireshark에 캡처된 모습
* capabilities 필드에 대한 설명
- capabilities 필드는 총 64비트로 이루어져 있으며 각 비트는 다음과 같은 의미를 지닌다.
비트 값 | 필드명 |
1 (0x0001) | MAV_PROTOCOL_CAPABILITY_MISSION_FLOAT |
2 (0x0002) | MAV_PROTOCOL_CAPABILITY_PARAM_FLOAT |
4 (0x0004) | MAV_PROTOCOL_CAPABILITY_MISSION_INT |
8 (0x0008) | MAV_PROTOCOL_CAPABILITY_COMMAND_INT |
16 (0x0010) | MAV_PROTOCOL_CAPABILITY_PARAM_UNION |
32 (0x0020) | MAV_PROTOCOL_CAPABILITY_FTP |
64 (0x0040) | MAV_PROTOCOL_CAPABILITY_SET_ATTITUDE_TARGET |
128 (0x0080) | MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_LOCAL_NED |
256 (0x0100) | MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_GLOBAL_INT |
512 (0x0200) | MAV_PROTOCOL_CAPABILITY_TERRAIN |
1024 (0x0400) | MAV_PROTOCOL_CAPABILITY_SET_ACTUATOR_TARGET |
2048 (0x0800) | MAV_PROTOCOL_CAPABILITY_FLIGHT_TERMINATION |
4096 (0x1000) | MAV_PROTOCOL_CAPABILITY_COMPASS_CALIBRATION |
8192 (0x2000) | MAV_PROTOCOL_CAPABILITY_MAVLINK2 |
16384 (0x4000) | MAV_PROTOCOL_CAPABILITY_MISSION_FENCE |
32768 (0x8000) | MAV_PROTOCOL_CAPABILITY_MISSION_RALLY |
65536 (0x10000) | MAV_PROTOCOL_CAPABILITY_FLIGHT_INFORMATION |
ex) 본 포스팅에 첨부한 wireshark 파일에서 capabilities 필드의 값은 58607 (ef e4 00 00 00 00 00 00)
--> 0xe4ef
--> 0xe4ef = 0x8000 + 0x4000 + 0x2000 + 0x0400 + 0x0080 + 0x0040 + 0x0020 + 0x0008 + 0x0004 + 0x0002 + 0x0001
--> 그러므로 지원하는 기능 목록은 다음과 같음
0x0001 : MAV_PROTOCOL_CAPABILITY_MISSION_FLOAT
0x0002 : MAV_PROTOCOL_CAPABILITY_PARAM_FLOAT
0x0004 : MAV_PROTOCOL_CAPABILITY_MISSION_INT
0x0008 : MAV_PROTOCOL_CAPABILITY_COMMAND_INT
0x0020 : MAV_PROTOCOL_CAPABILITY_FTP
0x0040 : MAV_PROTOCOL_CAPABILITY_SET_ATTITUDE_TARGET
0x0080 : MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_LOCAL_NED
0x0400 : MAV_PROTOCOL_CAPABILITY_SET_ACTUATOR_TARGET
0x2000 : MAV_PROTOCOL_CAPABILITY_MAVLINK2
0x4000 : MAV_PROTOCOL_CAPABILITY_MISSION_FENCE
0x8000 : MAV_PROTOCOL_CAPABILITY_MISSION_RALLY
--> 기능에 대한 자세한 설명은 다음 링크를 참고
mavlink.io/en/messages/common.htmlmavlink.io/en/messages/common.html#MAV_PROTOCOL_CAPABILITY