AP_Scripting: add support for dependencty on manual methods, remove handling of mission commands without AP_Mission
This commit is contained in:
parent
77e2d07979
commit
105801c5b0
@ -304,6 +304,7 @@ void AP_Scripting::thread(void) {
|
|||||||
|
|
||||||
void AP_Scripting::handle_mission_command(const AP_Mission::Mission_Command& cmd_in)
|
void AP_Scripting::handle_mission_command(const AP_Mission::Mission_Command& cmd_in)
|
||||||
{
|
{
|
||||||
|
#if AP_MISSION_ENABLED
|
||||||
if (!_enable) {
|
if (!_enable) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -328,6 +329,7 @@ void AP_Scripting::handle_mission_command(const AP_Mission::Mission_Command& cmd
|
|||||||
AP_HAL::millis()};
|
AP_HAL::millis()};
|
||||||
|
|
||||||
mission_data->push(cmd);
|
mission_data->push(cmd);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
bool AP_Scripting::arming_checks(size_t buflen, char *buffer) const
|
bool AP_Scripting::arming_checks(size_t buflen, char *buffer) const
|
||||||
|
@ -90,6 +90,7 @@ public:
|
|||||||
ScriptingCANSensor *_CAN_dev2;
|
ScriptingCANSensor *_CAN_dev2;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if AP_MISSION_ENABLED
|
||||||
// mission item buffer
|
// mission item buffer
|
||||||
static const int mission_cmd_queue_size = 5;
|
static const int mission_cmd_queue_size = 5;
|
||||||
struct scripting_mission_cmd {
|
struct scripting_mission_cmd {
|
||||||
@ -100,6 +101,7 @@ public:
|
|||||||
uint32_t time_ms;
|
uint32_t time_ms;
|
||||||
};
|
};
|
||||||
ObjectBuffer<struct scripting_mission_cmd> * mission_data;
|
ObjectBuffer<struct scripting_mission_cmd> * mission_data;
|
||||||
|
#endif
|
||||||
|
|
||||||
// PWMSource storage
|
// PWMSource storage
|
||||||
uint8_t num_pwm_source;
|
uint8_t num_pwm_source;
|
||||||
|
@ -760,7 +760,7 @@ singleton i2c manual get_device lua_get_i2c_device 4
|
|||||||
|
|
||||||
global manual millis lua_millis 0
|
global manual millis lua_millis 0
|
||||||
global manual micros lua_micros 0
|
global manual micros lua_micros 0
|
||||||
global manual mission_receive lua_mission_receive 0
|
global manual mission_receive lua_mission_receive 0 depends AP_MISSION_ENABLED
|
||||||
|
|
||||||
userdata uint32_t creation lua_new_uint32_t 1
|
userdata uint32_t creation lua_new_uint32_t 1
|
||||||
userdata uint32_t manual_operator __add uint32_t___add
|
userdata uint32_t manual_operator __add uint32_t___add
|
||||||
|
@ -368,6 +368,7 @@ struct method_alias {
|
|||||||
int line;
|
int line;
|
||||||
int num_args;
|
int num_args;
|
||||||
enum alias_type type;
|
enum alias_type type;
|
||||||
|
char *dependency;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct userdata_field {
|
struct userdata_field {
|
||||||
@ -887,6 +888,20 @@ void handle_manual(struct userdata *node, enum alias_type type) {
|
|||||||
}
|
}
|
||||||
alias->num_args = atoi(num_args);
|
alias->num_args = atoi(num_args);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
char *depends_keyword = next_token();
|
||||||
|
if (depends_keyword != NULL) {
|
||||||
|
if (strcmp(depends_keyword, keyword_depends) != 0) {
|
||||||
|
error(ERROR_SINGLETON, "Expected depends keyword for manual method %s %s, got: %s", node->name, name, depends_keyword);
|
||||||
|
} else {
|
||||||
|
char *dependency = strtok(NULL, "");
|
||||||
|
if (dependency == NULL) {
|
||||||
|
error(ERROR_USERDATA, "Expected dependency string for global %s on line", name, state.line_num);
|
||||||
|
}
|
||||||
|
string_copy(&(alias->dependency), dependency);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
alias->next = node->method_aliases;
|
alias->next = node->method_aliases;
|
||||||
node->method_aliases = alias;
|
node->method_aliases = alias;
|
||||||
}
|
}
|
||||||
@ -2414,7 +2429,9 @@ void emit_sandbox(void) {
|
|||||||
if (manual_aliases->type != ALIAS_TYPE_MANUAL) {
|
if (manual_aliases->type != ALIAS_TYPE_MANUAL) {
|
||||||
error(ERROR_GLOBALS, "Globals only support manual methods");
|
error(ERROR_GLOBALS, "Globals only support manual methods");
|
||||||
}
|
}
|
||||||
|
start_dependency(source, manual_aliases->dependency);
|
||||||
fprintf(source, " {\"%s\", %s},\n", manual_aliases->alias, manual_aliases->name);
|
fprintf(source, " {\"%s\", %s},\n", manual_aliases->alias, manual_aliases->name);
|
||||||
|
end_dependency(source, manual_aliases->dependency);
|
||||||
manual_aliases = manual_aliases->next;
|
manual_aliases = manual_aliases->next;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -215,6 +215,7 @@ int lua_mavlink_block_command(lua_State *L) {
|
|||||||
}
|
}
|
||||||
#endif // HAL_GCS_ENABLED
|
#endif // HAL_GCS_ENABLED
|
||||||
|
|
||||||
|
#if AP_MISSION_ENABLED
|
||||||
int lua_mission_receive(lua_State *L) {
|
int lua_mission_receive(lua_State *L) {
|
||||||
binding_argcheck(L, 0);
|
binding_argcheck(L, 0);
|
||||||
|
|
||||||
@ -242,6 +243,7 @@ int lua_mission_receive(lua_State *L) {
|
|||||||
|
|
||||||
return 5;
|
return 5;
|
||||||
}
|
}
|
||||||
|
#endif // AP_MISSION_ENABLED
|
||||||
|
|
||||||
#if HAL_LOGGING_ENABLED
|
#if HAL_LOGGING_ENABLED
|
||||||
int AP_Logger_Write(lua_State *L) {
|
int AP_Logger_Write(lua_State *L) {
|
||||||
|
Loading…
Reference in New Issue
Block a user