Skip to content

Commit c214a12

Browse files
Merge pull request #11716 from xznhj8129/mav/05-mission
MAVLink mission transfer state machine
2 parents 8a319b2 + 42dbfc5 commit c214a12

26 files changed

Lines changed: 5321 additions & 11 deletions

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
*.bak
88
*.uvgui.*
99
*.ubx
10+
*.log
1011
.project
1112
.settings
1213
.cproject

src/main/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -412,6 +412,8 @@ main_sources(COMMON_SRC
412412
mavlink/mavlink_guided.c
413413
mavlink/mavlink_guided.h
414414
mavlink/mavlink_internal.h
415+
mavlink/mavlink_mission.c
416+
mavlink/mavlink_mission.h
415417
mavlink/mavlink_modes.c
416418
mavlink/mavlink_modes.h
417419
mavlink/mavlink_types.h

src/main/fc/fc_mavlink.c

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
#include "mavlink/mavlink_command.h"
66
#include "mavlink/mavlink_guided.h"
7+
#include "mavlink/mavlink_mission.h"
78
#include "mavlink/mavlink_runtime.h"
89
#include "mavlink/mavlink_streams.h"
910

@@ -249,6 +250,22 @@ mavlinkFcDispatchResult_e mavlinkFcDispatchIncomingMessage(uint8_t ingressPortIn
249250
return mavlinkHandleIncomingTimesync() ? MAVLINK_FC_DISPATCH_HANDLED_ACTIVITY : MAVLINK_FC_DISPATCH_NOT_HANDLED;
250251
case MAVLINK_MSG_ID_PARAM_REQUEST_LIST:
251252
return handleIncoming_PARAM_REQUEST_LIST() ? MAVLINK_FC_DISPATCH_HANDLED_ACTIVITY : MAVLINK_FC_DISPATCH_NOT_HANDLED;
253+
case MAVLINK_MSG_ID_MISSION_CLEAR_ALL:
254+
return mavlinkHandleIncomingMissionClearAll() ? MAVLINK_FC_DISPATCH_HANDLED_ACTIVITY : MAVLINK_FC_DISPATCH_NOT_HANDLED;
255+
case MAVLINK_MSG_ID_MISSION_COUNT:
256+
return mavlinkHandleIncomingMissionCount() ? MAVLINK_FC_DISPATCH_HANDLED_ACTIVITY : MAVLINK_FC_DISPATCH_NOT_HANDLED;
257+
case MAVLINK_MSG_ID_MISSION_ITEM:
258+
return mavlinkHandleIncomingMissionItem() ? MAVLINK_FC_DISPATCH_HANDLED_ACTIVITY : MAVLINK_FC_DISPATCH_NOT_HANDLED;
259+
case MAVLINK_MSG_ID_MISSION_ITEM_INT:
260+
return mavlinkHandleIncomingMissionItemInt() ? MAVLINK_FC_DISPATCH_HANDLED_ACTIVITY : MAVLINK_FC_DISPATCH_NOT_HANDLED;
261+
case MAVLINK_MSG_ID_MISSION_REQUEST_LIST:
262+
return mavlinkHandleIncomingMissionRequestList() ? MAVLINK_FC_DISPATCH_HANDLED_ACTIVITY : MAVLINK_FC_DISPATCH_NOT_HANDLED;
263+
case MAVLINK_MSG_ID_MISSION_REQUEST:
264+
return mavlinkHandleIncomingMissionRequest() ? MAVLINK_FC_DISPATCH_HANDLED_ACTIVITY : MAVLINK_FC_DISPATCH_NOT_HANDLED;
265+
case MAVLINK_MSG_ID_MISSION_REQUEST_INT:
266+
return mavlinkHandleIncomingMissionRequestInt() ? MAVLINK_FC_DISPATCH_HANDLED_ACTIVITY : MAVLINK_FC_DISPATCH_NOT_HANDLED;
267+
case MAVLINK_MSG_ID_MISSION_ACK:
268+
return mavlinkHandleIncomingMissionAck() ? MAVLINK_FC_DISPATCH_HANDLED_ACTIVITY : MAVLINK_FC_DISPATCH_NOT_HANDLED;
252269
case MAVLINK_MSG_ID_COMMAND_LONG:
253270
return mavlinkHandleIncomingCommandLong() ? MAVLINK_FC_DISPATCH_HANDLED_ACTIVITY : MAVLINK_FC_DISPATCH_NOT_HANDLED;
254271
case MAVLINK_MSG_ID_COMMAND_INT:

src/main/mavlink/mavlink_guided.h

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,11 @@
33
#include <stdbool.h>
44
#include <stdint.h>
55

6-
#include "mavlink/mavlink_types.h"
7-
8-
typedef enum {
9-
MAV_FRAME_SUPPORTED_NONE = 0,
10-
MAV_FRAME_SUPPORTED_GLOBAL = (1 << 0),
11-
MAV_FRAME_SUPPORTED_GLOBAL_RELATIVE_ALT = (1 << 1),
12-
MAV_FRAME_SUPPORTED_GLOBAL_INT = (1 << 2),
13-
MAV_FRAME_SUPPORTED_GLOBAL_RELATIVE_ALT_INT = (1 << 3),
14-
} mavFrameSupportMask_e;
6+
#include "mavlink/mavlink_mission.h"
157

168
bool mavlinkFrameIsSupported(uint8_t frame, mavFrameSupportMask_e allowedMask);
179
bool mavlinkFrameUsesAbsoluteAltitude(uint8_t frame);
1810
MAV_RESULT mavlinkSetAltitudeTargetFromFrame(uint8_t frame, float altitudeMeters);
11+
12+
bool mavlinkHandleIncomingSetPositionTargetGlobalInt(void);
13+
bool mavlinkHandleIncomingSetPositionTargetLocalNed(void);

src/main/mavlink/mavlink_internal.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,10 @@
7474

7575
#include "scheduler/scheduler.h"
7676

77+
#define MAVLINK_MISSION_UPLOAD_RETRY_MS 1500
78+
#define MAVLINK_MISSION_UPLOAD_MAX_RETRIES 5
79+
#define MAVLINK_MISSION_DOWNLOAD_TIMEOUT_MS 5000
80+
#define MAVLINK_MISSION_CURRENT_INTERVAL_MS 1000
7781
#define MAVLINK_RX_BYTE_BUDGET 64
7882

7983
typedef struct mavlinkContext_s {
@@ -90,6 +94,10 @@ typedef struct mavlinkContext_s {
9094
uint8_t autopilotType;
9195
uint8_t componentId;
9296
uint8_t recvPortIndex;
97+
mavlinkMissionTransfer_t missionTransfer;
98+
timeMs_t lastMissionCurrentMs;
99+
bool missionCompleted;
100+
bool lastWpModeActive;
93101
uint32_t lastArmingDisableFlags;
94102
flightModeForTelemetry_e lastFlightMode;
95103
bool lastGCSNavMode;
@@ -110,5 +118,6 @@ extern mavlinkContext_t mavlinkContext;
110118
#define mavAutopilotType (mavlinkContext.autopilotType)
111119
#define mavComponentId (mavlinkContext.componentId)
112120
#define mavRecvPortIndex (mavlinkContext.recvPortIndex)
121+
#define mavMissionTransfer (mavlinkContext.missionTransfer)
113122

114123
#endif

0 commit comments

Comments
 (0)