API Reference
This section provides detailed API documentation for the MAVLink SDK components.
CMavlinkSDK (Main Entry Point)
The main entry point for the SDK. Provides connection management and controls the SDK lifecycle.
Access via singleton:
mavlinksdk::CMavlinkSDK& sdk = mavlinksdk::CMavlinkSDK::getInstance();
Methods
getInstance()
Get the singleton instance of the SDK.
static CMavlinkSDK& getInstance();
connectUDP(ip, port)
Configure UDP connection.
void connectUDP(const std::string& ip, const int& port);
Parameters:
- ip - IP address to bind to (e.g., “0.0.0.0” for all interfaces)
- port - UDP port number
connectSerial(device, baudrate, dynamic)
Configure serial connection.
void connectSerial(const std::string& device, const int& baudrate, const bool& dynamic);
Parameters:
- device - Serial device path (e.g., “/dev/ttyUSB0”)
- baudrate - Baud rate (e.g., 57600, 115200)
- dynamic - Enable dynamic port detection
connectTCP(ip, port)
Configure TCP connection.
void connectTCP(const std::string& ip, const int& port);
Parameters:
- ip - IP address to connect to
- port - TCP port number
start(event_handler)
Start the SDK with an event handler.
void start(CMavlinkEvents* event_handler);
Parameters:
- event_handler - Pointer to your event handler instance
stop()
Stop the SDK and close connections.
void stop();
sendMavlinkMessage(msg)
Send a raw MAVLink message.
void sendMavlinkMessage(const mavlink_message_t& msg);
Parameters:
- msg - MAVLink message to send
CMavlinkCommand (Vehicle Control)
High-level command interface for vehicle control.
Access via singleton:
mavlinksdk::CMavlinkCommand& cmd = mavlinksdk::CMavlinkCommand::getInstance();
Methods
doArmDisarm(arm, force)
Arm or disarm the vehicle.
void doArmDisarm(const bool& arm, const bool& force);
Parameters:
- arm - True to arm, false to disarm
- force - Force arm/disarm
doSetMode(mode, custom_mode, custom_sub_mode)
Change flight mode.
void doSetMode(const int& mode, const uint32_t& custom_mode = 0, const uint32_t& custom_sub_mode = 0);
Parameters:
- mode - Flight mode number
- custom_mode - Custom mode value (optional)
- custom_sub_mode - Custom sub-mode value (optional)
takeOff(altitude)
Initiate takeoff to specified altitude.
void takeOff(const float& altitude);
Parameters:
- altitude - Target altitude in meters
gotoGuidedPoint(lat, lon, alt)
Fly to GPS coordinate.
void gotoGuidedPoint(const double& lat, const double& lon, const double& alt);
Parameters:
- lat - Latitude in degrees
- lon - Longitude in degrees
- alt - Altitude in meters
changeAltitude(altitude)
Change target altitude.
void changeAltitude(const float& altitude);
Parameters:
- altitude - Target altitude in meters
setHome(yaw, lat, lon, alt)
Set home position.
void setHome(const float& yaw, const double& lat, const double& lon, const double& alt);
Parameters:
- yaw - Yaw angle in degrees
- lat - Latitude in degrees
- lon - Longitude in degrees
- alt - Altitude in meters
setROI(lat, lon, alt)
Set region of interest.
void setROI(const double& lat, const double& lon, const double& alt);
Parameters:
- lat - Latitude in degrees
- lon - Longitude in degrees
- alt - Altitude in meters
resetROI()
Clear region of interest.
void resetROI();
setYawCondition(angle, rate, clockwise, relative)
Control yaw.
void setYawCondition(const float& angle, const float& rate, const bool& clockwise, const bool& relative);
Parameters:
- angle - Target angle in degrees
- rate - Yaw rate in degrees/second
- clockwise - True for clockwise rotation
- relative - True for relative angle
setNavigationSpeed(type, speed, throttle, relative)
Set navigation speed.
void setNavigationSpeed(const int& type, const float& speed, const float& throttle, const bool& relative);
Parameters:
- type - Speed type
- speed - Speed value
- throttle - Throttle value
- relative - True for relative speed
setServo(channel, pwm)
Control servo output.
void setServo(const uint8_t& channel, const uint16_t& pwm);
Parameters:
- channel - Servo channel number
- pwm - PWM value
sendRCChannels(channels, length)
Send RC override.
void sendRCChannels(const uint16_t* channels, const uint8_t& length);
Parameters:
- channels - Array of RC channel values
- length - Number of channels
releaseRCChannels()
Release RC override.
void releaseRCChannels();
requestMissionList()
Request mission from vehicle.
void requestMissionList();
writeMission(mission_map)
Upload mission to vehicle.
void writeMission(const std::map<int, mavlink_mission_item_int_t>& mission_map);
Parameters:
- mission_map - Map of mission items
clearWayPoints()
Clear mission on vehicle.
void clearWayPoints();
setCurrentMission(mission_number)
Set active waypoint.
void setCurrentMission(const uint16_t& mission_number);
Parameters:
- mission_number - Mission item number
readParameter(param_name)
Read single parameter.
void readParameter(const std::string& param_name);
Parameters:
- param_name - Parameter name
writeParameter(param_name, value)
Write parameter.
void writeParameter(const std::string& param_name, const float& value);
Parameters:
- param_name - Parameter name
- value - Parameter value
requestParametersList()
Request all parameters.
void requestParametersList();
cmdTerminateFlight()
Emergency flight termination.
void cmdTerminateFlight();
requestHomeLocation()
Request home position.
void requestHomeLocation();
sendNative(mavlink_message)
Send raw MAVLink message.
void sendNative(const mavlink_message_t& mavlink_message);
Parameters:
- mavlink_message - MAVLink message to send
CVehicle (Vehicle State & Telemetry)
Central component for vehicle state and telemetry. Automatically parses incoming MAVLink messages and maintains cached telemetry data.
Access via singleton:
mavlinksdk::CVehicle& vehicle = mavlinksdk::CVehicle::getInstance();
State Detection Methods
isFCBConnected()
Returns true if heartbeat received within last 3 seconds.
bool isFCBConnected();
isArmed()
Returns true if vehicle is armed.
bool isArmed();
isFlying()
Returns true if vehicle is in flight (armed + active state).
bool isFlying();
isReadyToArm()
Returns true if pre-arm checks passed.
bool isReadyToArm();
isMotorEnabled()
Returns true if motors are enabled and healthy.
bool isMotorEnabled();
hasLidarAltitude()
Returns true if downward-facing lidar is available.
bool hasLidarAltitude();
Telemetry Accessor Methods
The SDK automatically parses and stores these MAVLink messages. Access them using the following methods:
Position
mavlink_global_position_int_t getMsgGlobalPositionInt();
mavlink_local_position_ned_t getMsgLocalPositionNED();
mavlink_gps_raw_int_t getMSGGPSRaw();
mavlink_gps2_raw_t getMSGGPS2Raw();
Attitude
mavlink_attitude_t getMsgAttitude();
Speed
mavlink_vfr_hud_t getMsgVFRHud();
Battery
mavlink_sys_status_t getMsgSysStatus();
mavlink_battery_status_t getMsgBatteryStatus();
mavlink_battery2_t getMsgBattery2Status();
System
mavlink_heartbeat_t getMsgHeartBeat();
mavlink_home_position_t getMsgHomePosition();
mavlink_system_time_t getSystemTime();
Navigation
mavlink_nav_controller_output_t getMsgNavController();
RC and Servos
mavlink_rc_channels_t getRCChannels();
mavlink_servo_output_raw_t getServoOutputRaw();
Sensors
mavlink_radio_status_t getRadioStatus();
mavlink_ekf_status_report_t getEkf_status_report();
mavlink_vibration_t getVibration();
distance_sensor_t getDistanceSensor(const int& direction);
mavlink_wind_t getMsgWind();
mavlink_terrain_report_t getTerrainReport();
Traffic
mavlink_adsb_vehicle_t getADSBVechile();
High Latency
mavlink_high_latency_t getHighLatency();
mavlink_high_latency2_t getHighLatency2();
int getHighLatencyMode();
Flight Info
mavlink_flight_information_t getFlightInformation();
System ID Filtering
restrictMessageToSysID(sysid)
Only accept messages from specific system ID.
void restrictMessageToSysID(const int& sysid);
restrictMessageToCompID(compid)
Only accept messages from specific component ID.
void restrictMessageToCompID(const int& compid);
getSysId()
Get current system ID of connected vehicle.
int getSysId();
getCompId()
Get current component ID of connected vehicle.
int getCompId();
CMavlinkEvents (Callbacks)
Abstract callback interface. Inherit from this class and override methods to receive event notifications.
Connection Events
OnConnected(connected)
Connection state changed.
virtual void OnConnected(const bool& connected) = 0;
OnHeartBeat_First(heartbeat)
First heartbeat received.
virtual void OnHeartBeat_First(const mavlink_heartbeat_t& heartbeat) = 0;
OnHeartBeat_Resumed(heartbeat)
Heartbeat resumed after timeout.
virtual void OnHeartBeat_Resumed(const mavlink_heartbeat_t& heartbeat) = 0;
OnBoardRestarted()
Flight controller restarted.
virtual void OnBoardRestarted() = 0;
Vehicle State Events
OnArmed(armed, ready_to_arm)
Arm state changed.
virtual void OnArmed(const bool& armed, const bool& ready_to_arm) = 0;
OnFlying(isFlying)
Flying state changed.
virtual void OnFlying(const bool& isFlying) = 0;
OnModeChanges(custom_mode, firmware_type, autopilot)
Flight mode changed.
virtual void OnModeChanges(const uint32_t& custom_mode, const int& firmware_type,
const MAV_AUTOPILOT& autopilot) = 0;
OnStatusText(severity, status)
Status message received.
virtual void OnStatusText(const std::uint8_t& severity, const std::string& status) = 0;
OnACK(cmd, result, result_msg)
Command acknowledgment received.
virtual void OnACK(const int& cmd, const int& result, const std::string& result_msg) = 0;
Telemetry Events
OnHomePositionUpdated(home_position)
Home position updated.
virtual void OnHomePositionUpdated(const mavlink_home_position_t& home_position) = 0;
OnServoOutputRaw(servo_output_raw)
Servo output changed.
virtual void OnServoOutputRaw(const mavlink_servo_output_raw_t& servo_output_raw) = 0;
OnEKFStatusReportChanged(ekf_status_report)
EKF status changed.
virtual void OnEKFStatusReportChanged(const mavlink_ekf_status_report_t& ekf_status_report) = 0;
OnVibrationChanged(vibration)
Vibration data updated.
virtual void OnVibrationChanged(const mavlink_vibration_t& vibration) = 0;
OnDistanceSensorChanged(distance_sensor)
Distance sensor updated.
virtual void OnDistanceSensorChanged(const distance_sensor_t& distance_sensor) = 0;
OnADSBVechileReceived(adsb_vehicle)
ADS-B traffic received.
virtual void OnADSBVechileReceived(const mavlink_adsb_vehicle_t& adsb_vehicle) = 0;
OnHighLatencyModeChanged(latency_mode)
High latency mode changed.
virtual void OnHighLatencyModeChanged(const int& latency_mode) = 0;
OnHighLatencyMessageReceived(latency_mode)
High latency message received.
virtual void OnHighLatencyMessageReceived(const int& latency_mode) = 0;
Mission Events
OnWaypointReached(seq)
Waypoint reached.
virtual void OnWaypointReached(const uint16_t& seq) = 0;
OnWayPointReceived(mission_item_int)
Mission item downloaded.
virtual void OnWayPointReceived(const mavlink_mission_item_int_t& mission_item_int) = 0;
OnWayPointsLoadingCompleted()
Mission download complete.
virtual void OnWayPointsLoadingCompleted() = 0;
OnMissionACK(result, mission_type, result_msg)
Mission acknowledgment.
virtual void OnMissionACK(const int& result, const int& mission_type,
const std::string& result_msg) = 0;
OnMissionSaveFinished(result, mission_type, result_msg)
Mission upload complete.
virtual void OnMissionSaveFinished(const int& result, const int& mission_type,
const std::string& result_msg) = 0;
OnMissionCurrentChanged(mission_current)
Active waypoint changed.
virtual void OnMissionCurrentChanged(const uint16_t& mission_current) = 0;
Parameter Events
OnParamReceived(param_name, param_message, changed, first_iteration)
Parameter received.
virtual void OnParamReceived(const std::string& param_name,
const mavlink_param_value_t& param_message,
const bool& changed,
const bool& first_iteration) = 0;
OnParamReceivedCompleted()
All parameters received.
virtual void OnParamReceivedCompleted() = 0;
Raw Message Event
OnMessageReceived(mavlink_message)
Any MAVLink message received.
virtual void OnMessageReceived(const mavlink_message_t& mavlink_message) = 0;