AP_Mount: add healthy and pre_arm_checks

Co-authored-by: olliw42 <waldmanns@gmx.de>
This commit is contained in:
Randy Mackay 2022-06-16 17:13:08 +09:00
parent 10da8a42bd
commit 822ee75e20
3 changed files with 35 additions and 0 deletions

View File

@ -734,6 +734,34 @@ void AP_Mount::send_mount_status(mavlink_channel_t chan)
} }
} }
// run pre-arm check. returns false on failure and fills in failure_msg
// any failure_msg returned will not include a prefix
bool AP_Mount::pre_arm_checks(char *failure_msg, uint8_t failure_msg_len)
{
// check type parameters
for (uint8_t i=0; i<AP_MOUNT_MAX_INSTANCES; i++) {
if ((state[i]._type != Mount_Type_None) && (_backends[i] == nullptr)) {
strncpy(failure_msg, "check TYPE", failure_msg_len);
return false;
}
}
// return true if no mount configured
if (_num_instances == 0) {
return true;
}
// check healthy
for (uint8_t i=0; i<AP_MOUNT_MAX_INSTANCES; i++) {
if ((_backends[i] != nullptr) && !_backends[i]->healthy()) {
strncpy(failure_msg, "not healthy", failure_msg_len);
return false;
}
}
return true;
}
// point at system ID sysid // point at system ID sysid
void AP_Mount::set_target_sysid(uint8_t instance, uint8_t sysid) void AP_Mount::set_target_sysid(uint8_t instance, uint8_t sysid)
{ {

View File

@ -143,6 +143,10 @@ public:
// send a MOUNT_STATUS message to GCS: // send a MOUNT_STATUS message to GCS:
void send_mount_status(mavlink_channel_t chan); void send_mount_status(mavlink_channel_t chan);
// run pre-arm check. returns false on failure and fills in failure_msg
// any failure_msg returned will not include a prefix
bool pre_arm_checks(char *failure_msg, uint8_t failure_msg_len);
// parameter var table // parameter var table
static const struct AP_Param::GroupInfo var_info[]; static const struct AP_Param::GroupInfo var_info[];

View File

@ -43,6 +43,9 @@ public:
// used for gimbals that need to read INS data at full rate // used for gimbals that need to read INS data at full rate
virtual void update_fast() {} virtual void update_fast() {}
// return true if healthy
virtual bool healthy() const { return true; }
// has_pan_control - returns true if this mount can control it's pan (required for multicopters) // has_pan_control - returns true if this mount can control it's pan (required for multicopters)
virtual bool has_pan_control() const = 0; virtual bool has_pan_control() const = 0;