diff options
Diffstat (limited to 'apps/uORB/parameter_storage.h')
-rw-r--r-- | apps/uORB/parameter_storage.h | 148 |
1 files changed, 148 insertions, 0 deletions
diff --git a/apps/uORB/parameter_storage.h b/apps/uORB/parameter_storage.h new file mode 100644 index 000000000..54ae63cb9 --- /dev/null +++ b/apps/uORB/parameter_storage.h @@ -0,0 +1,148 @@ +/* Structure for storage of parameters */ + +#ifndef GLOBAL_DATA_PARAMETER_STORAGE_T_H_ //adjust this line! +#define GLOBAL_DATA_PARAMETER_STORAGE_T_H_ //adjust this line! + +#define PX4_MSG_PARAM_VALUE_FIELD_PARAM_ID_LEN 16 +#define MAX_PARAM_NAME_LEN 16 + +#include <stdbool.h> +#include <stdint.h> + +enum MODE { + TAKEOFF = 1, + CRUISE, + LOITER, + LAND +}; + +enum PARAM { + PARAM_SYSTEM_ID = 0, ///< System ID used for communication + PARAM_COMP_ID, ///< Component ID + PARAM_FLIGHT_ENV, ///< Flight environment, indoor or outdoor + PARAM_BATTERYVOLTAGE_CONVERSION, ///< Conversion factor from adc measurement to millivolts. if not set the sensor app will use the default value for the ardrone board + PARAM_PID_YAWPOS_P, + PARAM_PID_YAWPOS_I, + PARAM_PID_YAWPOS_D, + PARAM_PID_YAWPOS_AWU, + PARAM_PID_YAWPOS_LIM, + PARAM_PID_YAWSPEED_P, + PARAM_PID_YAWSPEED_I, + PARAM_PID_YAWSPEED_D, + PARAM_PID_YAWSPEED_AWU, + PARAM_PID_YAWSPEED_LIM, + PARAM_PID_ATT_P, + PARAM_PID_ATT_I, + PARAM_PID_ATT_D, + PARAM_PID_ATT_AWU, + PARAM_PID_ATT_LIM, + PARAM_PID_POS_P, + PARAM_PID_POS_I, + PARAM_PID_POS_D, + PARAM_PID_POS_AWU, + PARAM_PID_POS_LIM, + PARAM_PID_POS_Z_P, + PARAM_PID_POS_Z_I, + PARAM_PID_POS_Z_D, + PARAM_PID_POS_Z_AWU, + PARAM_PID_POS_Z_LIM, + PARAM_AIRSPEED, + PARAM_WPLON, + PARAM_WPLAT, + PARAM_WPALT, + PARAM_FLIGHTMODE, + PARAM_SENSOR_GYRO_XOFFSET, + PARAM_SENSOR_GYRO_YOFFSET, + PARAM_SENSOR_GYRO_ZOFFSET, + PARAM_SENSOR_MAG_XOFFSET, + PARAM_SENSOR_MAG_YOFFSET, + PARAM_SENSOR_MAG_ZOFFSET, + PARAM_ATT_XOFFSET, + PARAM_ATT_YOFFSET, + PARAM_RC1_MIN, + PARAM_RC1_MAX, + PARAM_RC1_TRIM, + PARAM_RC1_REV, + PARAM_RC2_MIN, + PARAM_RC2_MAX, + PARAM_RC2_TRIM, + PARAM_RC2_REV, + PARAM_RC3_MIN, + PARAM_RC3_MAX, + PARAM_RC3_TRIM, + PARAM_RC3_REV, + PARAM_RC4_MIN, + PARAM_RC4_MAX, + PARAM_RC4_TRIM, + PARAM_RC4_REV, + PARAM_RC5_MIN, + PARAM_RC5_MAX, + PARAM_RC5_TRIM, + PARAM_RC5_REV, + PARAM_RC6_MIN, + PARAM_RC6_MAX, + PARAM_RC6_TRIM, + PARAM_RC6_REV, + PARAM_RC7_MIN, + PARAM_RC7_MAX, + PARAM_RC7_TRIM, + PARAM_RC7_REV, + PARAM_RC8_MIN, + PARAM_RC8_MAX, + PARAM_RC8_TRIM, + PARAM_RC8_REV, + PARAM_THROTTLE_CHAN, + PARAM_ROLL_CHAN, + PARAM_PITCH_CHAN, + PARAM_YAW_CHAN, + PARAM_OVERRIDE_CHAN, + PARAM_SERVO1_MIN, + PARAM_SERVO1_MAX, + PARAM_SERVO1_TRIM, + PARAM_SERVO2_MIN, + PARAM_SERVO2_MAX, + PARAM_SERVO2_TRIM, + PARAM_SERVO3_MIN, + PARAM_SERVO3_MAX, + PARAM_SERVO3_TRIM, + PARAM_SERVO4_MIN, + PARAM_SERVO4_MAX, + PARAM_SERVO4_TRIM, + PARAM_SERVO_SCALE, + PARAM_MAX_COUNT ///< LEAVE THIS IN PLACE AS LAST ELEMENT! +}; + +struct px4_parameter_storage_t { + float param_values[PARAM_MAX_COUNT]; ///< Parameter values + const char *param_names[PARAM_MAX_COUNT]; ///< Parameter names + bool param_needs_write[PARAM_MAX_COUNT]; + uint16_t next_param; + uint16_t size; +}; + + +#define PX4_FLIGHT_ENVIRONMENT_INDOOR 0 +#define PX4_FLIGHT_ENVIRONMENT_OUTDOOR 1 +#define PX4_FLIGHT_ENVIRONMENT_TESTING 2 //NO check for position fix in this environment + +struct global_data_parameter_storage_t { + + /* use of a counter and timestamp recommended (but not necessary) */ + +// uint16_t counter; //incremented by the writing thread everytime new data is stored +// uint64_t timestamp; //in microseconds since system start, is set whenever the writing thread stores new data + + /* Actual data, this is specific to the type of data which is stored in this struct */ + + //***** Start: Add your variables here ***** + + /* Parameters (set by a param_set mavlink message */ + struct px4_parameter_storage_t pm; + + //*****END: Add your variables here ***** + +}; + +__attribute__ ((visibility ("default"))) extern struct global_data_parameter_storage_t *global_data_parameter_storage; //adjust this line! + +#endif |