Browse Source

AP_Mission: support MAV_CMD_DO_SEND_SCRIPT_MESSAGE

zr-v5.1
Iampete1 4 years ago committed by Andrew Tridgell
parent
commit
849ad8c6de
  1. 19
      libraries/AP_Mission/AP_Mission.cpp
  2. 12
      libraries/AP_Mission/AP_Mission.h
  3. 17
      libraries/AP_Mission/AP_Mission_Commands.cpp

19
libraries/AP_Mission/AP_Mission.cpp

@ -299,6 +299,7 @@ bool AP_Mission::verify_command(const Mission_Command& cmd) @@ -299,6 +299,7 @@ bool AP_Mission::verify_command(const Mission_Command& cmd)
case MAV_CMD_DO_DIGICAM_CONTROL:
case MAV_CMD_DO_SET_CAM_TRIGG_DIST:
case MAV_CMD_DO_PARACHUTE:
case MAV_CMD_DO_SEND_SCRIPT_MESSAGE:
case MAV_CMD_DO_SPRAYER:
case MAV_CMD_DO_AUX_FUNCTION:
case MAV_CMD_DO_SET_RESUME_REPEAT_DIST:
@ -333,6 +334,8 @@ bool AP_Mission::start_command(const Mission_Command& cmd) @@ -333,6 +334,8 @@ bool AP_Mission::start_command(const Mission_Command& cmd)
return start_command_camera(cmd);
case MAV_CMD_DO_PARACHUTE:
return start_command_parachute(cmd);
case MAV_CMD_DO_SEND_SCRIPT_MESSAGE:
return start_command_do_scripting(cmd);
case MAV_CMD_DO_SPRAYER:
return start_command_do_sprayer(cmd);
case MAV_CMD_DO_SET_RESUME_REPEAT_DIST:
@ -1110,6 +1113,13 @@ MAV_MISSION_RESULT AP_Mission::mavlink_int_to_mission_cmd(const mavlink_mission_ @@ -1110,6 +1113,13 @@ MAV_MISSION_RESULT AP_Mission::mavlink_int_to_mission_cmd(const mavlink_mission_
cmd.p1 = packet.param1; // action 0=disable, 1=enable
break;
case MAV_CMD_DO_SEND_SCRIPT_MESSAGE:
cmd.p1 = packet.param1;
cmd.content.scripting.p1 = packet.param2;
cmd.content.scripting.p2 = packet.param3;
cmd.content.scripting.p3 = packet.param4;
break;
default:
// unrecognised command
return MAV_MISSION_UNSUPPORTED;
@ -1559,6 +1569,13 @@ bool AP_Mission::mission_cmd_to_mavlink_int(const AP_Mission::Mission_Command& c @@ -1559,6 +1569,13 @@ bool AP_Mission::mission_cmd_to_mavlink_int(const AP_Mission::Mission_Command& c
packet.param1 = cmd.p1; // Resume repeat distance (m)
break;
case MAV_CMD_DO_SEND_SCRIPT_MESSAGE:
packet.param1 = cmd.p1;
packet.param2 = cmd.content.scripting.p1;
packet.param3 = cmd.content.scripting.p2;
packet.param4 = cmd.content.scripting.p3;
break;
default:
// unrecognised command
return false;
@ -2266,6 +2283,8 @@ const char *AP_Mission::Mission_Command::type() const @@ -2266,6 +2283,8 @@ const char *AP_Mission::Mission_Command::type() const
return "MountControl";
case MAV_CMD_DO_WINCH:
return "Winch";
case MAV_CMD_DO_SEND_SCRIPT_MESSAGE:
return "Scripting";
default:
#if CONFIG_HAL_BOARD == HAL_BOARD_SITL

12
libraries/AP_Mission/AP_Mission.h

@ -204,6 +204,13 @@ public: @@ -204,6 +204,13 @@ public:
float release_rate; // release rate in meters/second
};
// Scripting command structure
struct PACKED scripting_Command {
float p1;
float p2;
float p3;
};
union Content {
// jump structure
Jump_Command jump;
@ -271,6 +278,9 @@ public: @@ -271,6 +278,9 @@ public:
// do-winch
Winch_Command winch;
// do scripting
scripting_Command scripting;
// location
Location location{}; // Waypoint location
};
@ -708,6 +718,8 @@ private: @@ -708,6 +718,8 @@ private:
bool command_do_set_repeat_dist(const AP_Mission::Mission_Command& cmd);
bool start_command_do_sprayer(const AP_Mission::Mission_Command& cmd);
bool start_command_do_scripting(const AP_Mission::Mission_Command& cmd);
};
namespace AP

17
libraries/AP_Mission/AP_Mission_Commands.cpp

@ -6,6 +6,7 @@ @@ -6,6 +6,7 @@
#include <AP_Parachute/AP_Parachute.h>
#include <AP_ServoRelayEvents/AP_ServoRelayEvents.h>
#include <AC_Sprayer/AC_Sprayer.h>
#include <AP_Scripting/AP_Scripting.h>
bool AP_Mission::start_command_do_aux_function(const AP_Mission::Mission_Command& cmd)
{
@ -186,3 +187,19 @@ bool AP_Mission::start_command_do_sprayer(const AP_Mission::Mission_Command& cmd @@ -186,3 +187,19 @@ bool AP_Mission::start_command_do_sprayer(const AP_Mission::Mission_Command& cmd
return false;
#endif // HAL_SPRAYER_ENABLED
}
bool AP_Mission::start_command_do_scripting(const AP_Mission::Mission_Command& cmd)
{
#ifdef ENABLE_SCRIPTING
AP_Scripting *scripting = AP_Scripting::get_singleton();
if (scripting == nullptr) {
return false;
}
scripting->handle_mission_command(cmd);
return true;
#else
return false;
#endif // ENABLE_SCRIPTING
}

Loading…
Cancel
Save