mirror of
https://github.com/ArduPilot/ardupilot
synced 2025-01-20 15:48:29 -04:00
AP_Param: enable reduced size support for AP_Periph
This commit is contained in:
parent
88fbbfba09
commit
f897eae89d
@ -44,6 +44,12 @@ extern const AP_HAL::HAL &hal;
|
|||||||
# define Debug(fmt, args ...)
|
# define Debug(fmt, args ...)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAL_NO_GCS
|
||||||
|
#define GCS_SEND_PARAM(name, type, v)
|
||||||
|
#else
|
||||||
|
#define GCS_SEND_PARAM(name, type, v) gcs().send_parameter_value(name, type, v)
|
||||||
|
#endif
|
||||||
|
|
||||||
// Note about AP_Vector3f handling.
|
// Note about AP_Vector3f handling.
|
||||||
// The code has special cases for AP_Vector3f to allow it to be viewed
|
// The code has special cases for AP_Vector3f to allow it to be viewed
|
||||||
// as both a single 3 element vector and as a set of 3 AP_Float
|
// as both a single 3 element vector and as a set of 3 AP_Float
|
||||||
@ -75,6 +81,7 @@ bool AP_Param::registered_save_handler;
|
|||||||
// we need a dummy object for the parameter save callback
|
// we need a dummy object for the parameter save callback
|
||||||
static AP_Param save_dummy;
|
static AP_Param save_dummy;
|
||||||
|
|
||||||
|
#if AP_PARAM_MAX_EMBEDDED_PARAM > 0
|
||||||
/*
|
/*
|
||||||
this holds default parameters in the normal NAME=value form for a
|
this holds default parameters in the normal NAME=value form for a
|
||||||
parameter file. It can be manipulated by apj_tool.py to change the
|
parameter file. It can be manipulated by apj_tool.py to change the
|
||||||
@ -86,6 +93,7 @@ const AP_Param::param_defaults_struct AP_Param::param_defaults_data = {
|
|||||||
AP_PARAM_MAX_EMBEDDED_PARAM,
|
AP_PARAM_MAX_EMBEDDED_PARAM,
|
||||||
0
|
0
|
||||||
};
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
// storage object
|
// storage object
|
||||||
StorageAccess AP_Param::_storage(StorageManager::StorageParam);
|
StorageAccess AP_Param::_storage(StorageManager::StorageParam);
|
||||||
@ -1054,7 +1062,7 @@ void AP_Param::save_sync(bool force_save)
|
|||||||
v2 = get_default_value(this, &info->def_value);
|
v2 = get_default_value(this, &info->def_value);
|
||||||
}
|
}
|
||||||
if (is_equal(v1,v2) && !force_save) {
|
if (is_equal(v1,v2) && !force_save) {
|
||||||
gcs().send_parameter_value(name, (enum ap_var_type)info->type, v2);
|
GCS_SEND_PARAM(name, (enum ap_var_type)info->type, v2);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!force_save &&
|
if (!force_save &&
|
||||||
@ -1062,7 +1070,7 @@ void AP_Param::save_sync(bool force_save)
|
|||||||
(fabsf(v1-v2) < 0.0001f*fabsf(v1)))) {
|
(fabsf(v1-v2) < 0.0001f*fabsf(v1)))) {
|
||||||
// for other than 32 bit integers, we accept values within
|
// for other than 32 bit integers, we accept values within
|
||||||
// 0.01 percent of the current value as being the same
|
// 0.01 percent of the current value as being the same
|
||||||
gcs().send_parameter_value(name, (enum ap_var_type)info->type, v2);
|
GCS_SEND_PARAM(name, (enum ap_var_type)info->type, v2);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1371,10 +1379,12 @@ bool AP_Param::load_all()
|
|||||||
*/
|
*/
|
||||||
void AP_Param::reload_defaults_file(bool last_pass)
|
void AP_Param::reload_defaults_file(bool last_pass)
|
||||||
{
|
{
|
||||||
|
#if AP_PARAM_MAX_EMBEDDED_PARAM > 0
|
||||||
if (param_defaults_data.length != 0) {
|
if (param_defaults_data.length != 0) {
|
||||||
load_embedded_param_defaults(last_pass);
|
load_embedded_param_defaults(last_pass);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#if HAL_OS_POSIX_IO == 1
|
#if HAL_OS_POSIX_IO == 1
|
||||||
/*
|
/*
|
||||||
@ -1982,6 +1992,7 @@ bool AP_Param::load_defaults_file(const char *filename, bool last_pass)
|
|||||||
|
|
||||||
#endif // HAL_OS_POSIX_IO
|
#endif // HAL_OS_POSIX_IO
|
||||||
|
|
||||||
|
#if AP_PARAM_MAX_EMBEDDED_PARAM > 0
|
||||||
/*
|
/*
|
||||||
count the number of embedded parameter defaults
|
count the number of embedded parameter defaults
|
||||||
*/
|
*/
|
||||||
@ -2106,6 +2117,7 @@ void AP_Param::load_embedded_param_defaults(bool last_pass)
|
|||||||
}
|
}
|
||||||
num_param_overrides = num_defaults;
|
num_param_overrides = num_defaults;
|
||||||
}
|
}
|
||||||
|
#endif // AP_PARAM_MAX_EMBEDDED_PARAM > 0
|
||||||
|
|
||||||
/*
|
/*
|
||||||
find a default value given a pointer to a default value in flash
|
find a default value given a pointer to a default value in flash
|
||||||
@ -2132,7 +2144,7 @@ void AP_Param::send_parameter(const char *name, enum ap_var_type var_type, uint8
|
|||||||
}
|
}
|
||||||
if (var_type != AP_PARAM_VECTOR3F) {
|
if (var_type != AP_PARAM_VECTOR3F) {
|
||||||
// nice and simple for scalar types
|
// nice and simple for scalar types
|
||||||
gcs().send_parameter_value(name, var_type, cast_to_float(var_type));
|
GCS_SEND_PARAM(name, var_type, cast_to_float(var_type));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2140,6 +2152,7 @@ void AP_Param::send_parameter(const char *name, enum ap_var_type var_type, uint8
|
|||||||
// of a set of the first element of a AP_Vector3f. This happens as the ap->save() call can't
|
// of a set of the first element of a AP_Vector3f. This happens as the ap->save() call can't
|
||||||
// distinguish between a vector and scalar save. It means that setting first element of a vector
|
// distinguish between a vector and scalar save. It means that setting first element of a vector
|
||||||
// via MAVLink results in sending all 3 elements to the GCS
|
// via MAVLink results in sending all 3 elements to the GCS
|
||||||
|
#ifndef HAL_NO_GCS
|
||||||
const Vector3f &v = ((AP_Vector3f *)this)->get();
|
const Vector3f &v = ((AP_Vector3f *)this)->get();
|
||||||
char name2[AP_MAX_NAME_SIZE+1];
|
char name2[AP_MAX_NAME_SIZE+1];
|
||||||
strncpy(name2, name, AP_MAX_NAME_SIZE);
|
strncpy(name2, name, AP_MAX_NAME_SIZE);
|
||||||
@ -2147,11 +2160,12 @@ void AP_Param::send_parameter(const char *name, enum ap_var_type var_type, uint8
|
|||||||
char &name_axis = name2[strlen(name)-1];
|
char &name_axis = name2[strlen(name)-1];
|
||||||
|
|
||||||
name_axis = 'X';
|
name_axis = 'X';
|
||||||
gcs().send_parameter_value(name2, AP_PARAM_FLOAT, v.x);
|
GCS_SEND_PARAM(name2, AP_PARAM_FLOAT, v.x);
|
||||||
name_axis = 'Y';
|
name_axis = 'Y';
|
||||||
gcs().send_parameter_value(name2, AP_PARAM_FLOAT, v.y);
|
GCS_SEND_PARAM(name2, AP_PARAM_FLOAT, v.y);
|
||||||
name_axis = 'Z';
|
name_axis = 'Z';
|
||||||
gcs().send_parameter_value(name2, AP_PARAM_FLOAT, v.z);
|
GCS_SEND_PARAM(name2, AP_PARAM_FLOAT, v.z);
|
||||||
|
#endif // HAL_NO_GCS
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -503,6 +503,7 @@ private:
|
|||||||
/*
|
/*
|
||||||
structure for built-in defaults file that can be modified using apj_tool.py
|
structure for built-in defaults file that can be modified using apj_tool.py
|
||||||
*/
|
*/
|
||||||
|
#if AP_PARAM_MAX_EMBEDDED_PARAM > 0
|
||||||
struct PACKED param_defaults_struct {
|
struct PACKED param_defaults_struct {
|
||||||
char magic_str[8];
|
char magic_str[8];
|
||||||
uint8_t param_magic[8];
|
uint8_t param_magic[8];
|
||||||
@ -511,6 +512,7 @@ private:
|
|||||||
volatile char data[AP_PARAM_MAX_EMBEDDED_PARAM];
|
volatile char data[AP_PARAM_MAX_EMBEDDED_PARAM];
|
||||||
};
|
};
|
||||||
static const param_defaults_struct param_defaults_data;
|
static const param_defaults_struct param_defaults_data;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
static bool check_group_info(const struct GroupInfo *group_info, uint16_t *total_size,
|
static bool check_group_info(const struct GroupInfo *group_info, uint16_t *total_size,
|
||||||
|
Loading…
Reference in New Issue
Block a user