aboutsummaryrefslogtreecommitdiff
path: root/apps/uORB/parameter_storage.h
blob: aa4c1bb4fbeb10977b352a7a5056222fd962bd3b (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
/* 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!
};

#pragma pack(push, 1)
struct px4_parameter_storage_t {
	float param_values[PARAM_MAX_COUNT];      ///< Parameter values
	bool param_needs_write[PARAM_MAX_COUNT];
	const char *param_names[PARAM_MAX_COUNT]; ///< Parameter names
	uint16_t next_param;
	uint16_t size;
};
#pragma pack(pop)


#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

#pragma pack(push, 1)
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 *****

};
#pragma pack(pop)

__attribute__ ((visibility ("default"))) extern struct global_data_parameter_storage_t *global_data_parameter_storage; //adjust this line!

#endif