Работа с контроллером там спрятана очень далеко и это вообще
ничтожная часть проекта. Поэтому абсолютно неважно как реализована
работа с uart/spi/gpio. Там гигантская надстройка в виде полётного
софта.
#include <AP_HAL/AP_HAL.h> // Common dependencies #include <AP_Common/AP_Common.h> // Common definitions and utility routines for the ArduPilot libraries #include <AP_Common/Location.h> // Library having the implementation of location class #include <AP_Param/AP_Param.h> // A system for managing and storing variables that are of general interest to the system. #include <StorageManager/StorageManager.h> // library for Management for hal.storage to allow for backwards compatible mapping of storage offsets to available storage // Application dependencies #include <AP_Logger/AP_Logger.h> // ArduPilot Mega Flash Memory Library #include <AP_Math/AP_Math.h> // ArduPilot Mega Vector/Matrix math Library #include <AP_AccelCal/AP_AccelCal.h> // interface and maths for accelerometer calibration #include <AP_InertialSensor/AP_InertialSensor.h> // ArduPilot Mega Inertial Sensor (accel & gyro) Library #include <AP_AHRS/AP_AHRS.h> // AHRS (Attitude Heading Reference System) interface library for ArduPilot #include <AP_Mission/AP_Mission.h> // Mission command library #include <AP_Mission/AP_Mission_ChangeDetector.h> // Mission command change detection library #include <AC_AttitudeControl/AC_AttitudeControl_Multi.h> // Attitude control library #include <AC_AttitudeControl/AC_AttitudeControl_Multi_6DoF.h> // 6DoF Attitude control library #include <AC_AttitudeControl/AC_AttitudeControl_Heli.h> // Attitude control library for traditional helicopter #include <AC_AttitudeControl/AC_PosControl.h> // Position control library #include <AC_AttitudeControl/AC_CommandModel.h> // Command model library #include <AP_Motors/AP_Motors.h> // AP Motors library #include <AP_Stats/AP_Stats.h> // statistics library #include <Filter/Filter.h> // Filter library #include <AP_Vehicle/AP_Vehicle.h> // needed for AHRS build #include <AP_InertialNav/AP_InertialNav.h> // inertial navigation library #include <AC_WPNav/AC_WPNav.h> // ArduCopter waypoint navigation library #include <AC_WPNav/AC_Loiter.h> // ArduCopter Loiter Mode Library #include <AC_WPNav/AC_Circle.h> // circle navigation library #include <AP_Declination/AP_Declination.h> // ArduPilot Mega Declination Helper Library #include <AP_RCMapper/AP_RCMapper.h> // RC input mapping library #include <AP_BattMonitor/AP_BattMonitor.h> // Battery monitor library #include <AP_LandingGear/AP_LandingGear.h> // Landing Gear library #include <AC_InputManager/AC_InputManager.h> // Pilot input handling library #include <AC_InputManager/AC_InputManager_Heli.h> // Heli specific pilot input handling library #include <AP_Arming/AP_Arming.h> // ArduPilot motor arming library #include <AP_SmartRTL/AP_SmartRTL.h> // ArduPilot Smart Return To Launch Mode (SRTL) library #include <AP_TempCalibration/AP_TempCalibration.h> // temperature calibration library #include <AC_AutoTune/AC_AutoTune_Multi.h> // ArduCopter autotune library. support for autotune of multirotors. #include <AC_AutoTune/AC_AutoTune_Heli.h> // ArduCopter autotune library. support for autotune of helicopters. #include <AP_Parachute/AP_Parachute.h> // ArduPilot parachute release library #include <AC_Sprayer/AC_Sprayer.h> // Crop sprayer library #include <AP_ADSB/AP_ADSB.h> // ADS-B RF based collision avoidance module library #include <AP_Proximity/AP_Proximity.h> // ArduPilot proximity sensor library #include <AC_PrecLand/AC_PrecLand_config.h> #include <AP_OpticalFlow/AP_OpticalFlow.h> #include <AP_Winch/AP_Winch_config.h> // Configuration #include "defines.h" #include "config.h" #if FRAME_CONFIG == HELI_FRAME #define AC_AttitudeControl_t AC_AttitudeControl_Heli #else #define AC_AttitudeControl_t AC_AttitudeControl_Multi #endif #if FRAME_CONFIG == HELI_FRAME #define MOTOR_CLASS AP_MotorsHeli #else #define MOTOR_CLASS AP_MotorsMulticopter #endif #if MODE_AUTOROTATE_ENABLED == ENABLED #include <AC_Autorotation/AC_Autorotation.h> // Autorotation controllers #endif #include "RC_Channel.h" // RC Channel Library #include "GCS_Mavlink.h" #include "GCS_Copter.h" #include "AP_Rally.h" // Rally point library #include "AP_Arming.h" #include <AP_Beacon/AP_Beacon_config.h> #if AP_BEACON_ENABLED #include <AP_Beacon/AP_Beacon.h> #endif #if AC_AVOID_ENABLED == ENABLED #include <AC_Avoidance/AC_Avoid.h> #endif #if AC_OAPATHPLANNER_ENABLED == ENABLED #include <AC_WPNav/AC_WPNav_OA.h> #include <AC_Avoidance/AP_OAPathPlanner.h> #endif #include <AP_Gripper/AP_Gripper_config.h> #if AP_GRIPPER_ENABLED # include <AP_Gripper/AP_Gripper.h> #endif #if AC_PRECLAND_ENABLED # include <AC_PrecLand/AC_PrecLand.h> # include <AC_PrecLand/AC_PrecLand_StateMachine.h> #endif #if MODE_FOLLOW_ENABLED == ENABLED # include <AP_Follow/AP_Follow.h> #endif #if AP_TERRAIN_AVAILABLE # include <AP_Terrain/AP_Terrain.h> #endif #if RANGEFINDER_ENABLED == ENABLED # include <AP_RangeFinder/AP_RangeFinder.h> #endif #include <AP_Mount/AP_Mount.h> #include <AP_Camera/AP_Camera.h> #if HAL_BUTTON_ENABLED # include <AP_Button/AP_Button.h> #endif #if OSD_ENABLED || OSD_PARAM_ENABLED #include <AP_OSD/AP_OSD.h> #endif #if ADVANCED_FAILSAFE == ENABLED # include "afs_copter.h" #endif #if TOY_MODE_ENABLED == ENABLED # include "toy_mode.h" #endif #if AP_WINCH_ENABLED # include <AP_Winch/AP_Winch.h> #endif #include <AP_RPM/AP_RPM.h> #if AP_SCRIPTING_ENABLED #include <AP_Scripting/AP_Scripting.h> #endif #if AC_CUSTOMCONTROL_MULTI_ENABLED == ENABLED #include <AC_CustomControl/AC_CustomControl.h> // Custom control library #endif #if AC_AVOID_ENABLED && !AP_FENCE_ENABLED #error AC_Avoidance relies on AP_FENCE_ENABLED which is disabled #endif #if AC_OAPATHPLANNER_ENABLED && !AP_FENCE_ENABLED #error AP_OAPathPlanner relies on AP_FENCE_ENABLED which is disabled #endif // Local modules #ifdef USER_PARAMS_ENABLED #include "UserParameters.h" #endif #include "Parameters.h" #if HAL_ADSB_ENABLED #include "avoidance_adsb.h" #endif #include "mode.h" class Copter : public AP_Vehicle { public: friend class GCS_MAVLINK_Copter; friend class GCS_Copter; friend class AP_Rally_Copter; friend class Parameters; friend class ParametersG2; friend class AP_Avoidance_Copter; #if ADVANCED_FAILSAFE == ENABLED friend class AP_AdvancedFailsafe_Copter; #endif friend class AP_Arming_Copter; friend class ToyMode; friend class RC_Channel_Copter; friend class RC_Channels_Copter; friend class AutoTune; friend class Mode; friend class ModeAcro; friend class ModeAcro_Heli; friend class ModeAltHold; friend class ModeAuto; friend class ModeAutoTune; friend class ModeAvoidADSB; friend class ModeBrake; friend class ModeCircle; friend class ModeDrift; friend class ModeFlip; friend class ModeFlowHold; friend class ModeFollow; friend class ModeGuided; friend class ModeLand; friend class ModeLoiter; friend class ModePosHold; friend class ModeRTL; friend class ModeSmartRTL; friend class ModeSport; friend class ModeStabilize; friend class ModeStabilize_Heli; friend class ModeSystemId; friend class ModeThrow; friend class ModeZigZag; friend class ModeAutorotate; friend class ModeTurtle; Copter(void);
-
- Да уж, "прозрачно" донельзя… - Eddy_Em(15.08.2023 20:22)