Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
*.bak
*.uvgui.*
*.ubx
*.log
.project
.settings
.cproject
Expand Down
2 changes: 2 additions & 0 deletions src/main/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -412,6 +412,8 @@ main_sources(COMMON_SRC
mavlink/mavlink_guided.c
mavlink/mavlink_guided.h
mavlink/mavlink_internal.h
mavlink/mavlink_mission.c
mavlink/mavlink_mission.h
mavlink/mavlink_modes.c
mavlink/mavlink_modes.h
mavlink/mavlink_types.h
Expand Down
17 changes: 17 additions & 0 deletions src/main/fc/fc_mavlink.c
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

#include "mavlink/mavlink_command.h"
#include "mavlink/mavlink_guided.h"
#include "mavlink/mavlink_mission.h"
#include "mavlink/mavlink_runtime.h"
#include "mavlink/mavlink_streams.h"

Expand Down Expand Up @@ -249,6 +250,22 @@ mavlinkFcDispatchResult_e mavlinkFcDispatchIncomingMessage(uint8_t ingressPortIn
return mavlinkHandleIncomingTimesync() ? MAVLINK_FC_DISPATCH_HANDLED_ACTIVITY : MAVLINK_FC_DISPATCH_NOT_HANDLED;
case MAVLINK_MSG_ID_PARAM_REQUEST_LIST:
return handleIncoming_PARAM_REQUEST_LIST() ? MAVLINK_FC_DISPATCH_HANDLED_ACTIVITY : MAVLINK_FC_DISPATCH_NOT_HANDLED;
case MAVLINK_MSG_ID_MISSION_CLEAR_ALL:
return mavlinkHandleIncomingMissionClearAll() ? MAVLINK_FC_DISPATCH_HANDLED_ACTIVITY : MAVLINK_FC_DISPATCH_NOT_HANDLED;
case MAVLINK_MSG_ID_MISSION_COUNT:
return mavlinkHandleIncomingMissionCount() ? MAVLINK_FC_DISPATCH_HANDLED_ACTIVITY : MAVLINK_FC_DISPATCH_NOT_HANDLED;
case MAVLINK_MSG_ID_MISSION_ITEM:
return mavlinkHandleIncomingMissionItem() ? MAVLINK_FC_DISPATCH_HANDLED_ACTIVITY : MAVLINK_FC_DISPATCH_NOT_HANDLED;
case MAVLINK_MSG_ID_MISSION_ITEM_INT:
return mavlinkHandleIncomingMissionItemInt() ? MAVLINK_FC_DISPATCH_HANDLED_ACTIVITY : MAVLINK_FC_DISPATCH_NOT_HANDLED;
case MAVLINK_MSG_ID_MISSION_REQUEST_LIST:
return mavlinkHandleIncomingMissionRequestList() ? MAVLINK_FC_DISPATCH_HANDLED_ACTIVITY : MAVLINK_FC_DISPATCH_NOT_HANDLED;
case MAVLINK_MSG_ID_MISSION_REQUEST:
return mavlinkHandleIncomingMissionRequest() ? MAVLINK_FC_DISPATCH_HANDLED_ACTIVITY : MAVLINK_FC_DISPATCH_NOT_HANDLED;
case MAVLINK_MSG_ID_MISSION_REQUEST_INT:
return mavlinkHandleIncomingMissionRequestInt() ? MAVLINK_FC_DISPATCH_HANDLED_ACTIVITY : MAVLINK_FC_DISPATCH_NOT_HANDLED;
case MAVLINK_MSG_ID_MISSION_ACK:
return mavlinkHandleIncomingMissionAck() ? MAVLINK_FC_DISPATCH_HANDLED_ACTIVITY : MAVLINK_FC_DISPATCH_NOT_HANDLED;
case MAVLINK_MSG_ID_COMMAND_LONG:
return mavlinkHandleIncomingCommandLong() ? MAVLINK_FC_DISPATCH_HANDLED_ACTIVITY : MAVLINK_FC_DISPATCH_NOT_HANDLED;
case MAVLINK_MSG_ID_COMMAND_INT:
Expand Down
13 changes: 4 additions & 9 deletions src/main/mavlink/mavlink_guided.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,11 @@
#include <stdbool.h>
#include <stdint.h>

#include "mavlink/mavlink_types.h"

typedef enum {
MAV_FRAME_SUPPORTED_NONE = 0,
MAV_FRAME_SUPPORTED_GLOBAL = (1 << 0),
MAV_FRAME_SUPPORTED_GLOBAL_RELATIVE_ALT = (1 << 1),
MAV_FRAME_SUPPORTED_GLOBAL_INT = (1 << 2),
MAV_FRAME_SUPPORTED_GLOBAL_RELATIVE_ALT_INT = (1 << 3),
} mavFrameSupportMask_e;
#include "mavlink/mavlink_mission.h"

bool mavlinkFrameIsSupported(uint8_t frame, mavFrameSupportMask_e allowedMask);
bool mavlinkFrameUsesAbsoluteAltitude(uint8_t frame);
MAV_RESULT mavlinkSetAltitudeTargetFromFrame(uint8_t frame, float altitudeMeters);

bool mavlinkHandleIncomingSetPositionTargetGlobalInt(void);
bool mavlinkHandleIncomingSetPositionTargetLocalNed(void);
9 changes: 9 additions & 0 deletions src/main/mavlink/mavlink_internal.h
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,10 @@

#include "scheduler/scheduler.h"

#define MAVLINK_MISSION_UPLOAD_RETRY_MS 1500
#define MAVLINK_MISSION_UPLOAD_MAX_RETRIES 5
#define MAVLINK_MISSION_DOWNLOAD_TIMEOUT_MS 5000
#define MAVLINK_MISSION_CURRENT_INTERVAL_MS 1000
#define MAVLINK_RX_BYTE_BUDGET 64

typedef struct mavlinkContext_s {
Expand All @@ -90,6 +94,10 @@ typedef struct mavlinkContext_s {
uint8_t autopilotType;
uint8_t componentId;
uint8_t recvPortIndex;
mavlinkMissionTransfer_t missionTransfer;
timeMs_t lastMissionCurrentMs;
bool missionCompleted;
bool lastWpModeActive;
uint32_t lastArmingDisableFlags;
flightModeForTelemetry_e lastFlightMode;
bool lastGCSNavMode;
Expand All @@ -110,5 +118,6 @@ extern mavlinkContext_t mavlinkContext;
#define mavAutopilotType (mavlinkContext.autopilotType)
#define mavComponentId (mavlinkContext.componentId)
#define mavRecvPortIndex (mavlinkContext.recvPortIndex)
#define mavMissionTransfer (mavlinkContext.missionTransfer)

#endif
Loading
Loading