AMU Library 3.0
C/C++ library for communicating with AMU (Aerospace Measurement Unit) devices
Loading...
Searching...
No Matches
amu_types.h
Go to the documentation of this file.
1/*
2 * amu_types.h
3 *
4 * Created: 5/5/2019 3:57:46 PM
5 * Author: colin
6 */
7
8
9#ifndef __AMU_TYPES_H__
10#define __AMU_TYPES_H__
11
12#include <stdint.h>
13#include <stdbool.h>
14#include <string.h>
15#include <stddef.h>
16
17#include "amu_config_internal.h"
18
19#define AMU_ADDRESS_DEFAULT 0x0F
20#define AMU_NO_ADDRESS_MATCH 0xFF
21
22#define AMU_DEVICE_END_LIST 0xFF
23
24#define AMU_THIS_DEVICE 0x00
25
26#define AMU_NOTES_SIZE 128
27
28#ifdef __AMU_LOW_MEMORY__
29#define IVSWEEP_MAX_POINTS 40
30#define AMU_TRANSFER_REG_SIZE (IVSWEEP_MAX_POINTS * sizeof(float))
31#else
32 #ifndef IVSWEEP_MAX_POINTS
33 #define IVSWEEP_MAX_POINTS 250
34 #endif
35#define AMU_TRANSFER_REG_SIZE (IVSWEEP_MAX_POINTS * sizeof(float) * 2)
36#endif
37
38#define AMU_DUT_MANUFACTURER_STR_LEN 16
39#define AMU_DUT_MODEL_STR_LEN 16
40#define AMU_DUT_TECHNOLOGY_STR_LEN 16
41#define AMU_DUT_SERIALNUM_STR_LEN 24
42
43
63
64typedef amu_adc_ch_t AMU_ADC_CH_t; // for backwards consistency
65
66typedef enum amu_adc_pga_enum_t {
77
84
86
109
111
125
131
141
142typedef enum amu_status_enum_t {
148
155
156typedef union {
157 struct {
158 float A;
159 float B;
160 float C;
161 float D;
162 } val;
163 float f[4];
164 uint32_t i[4];
165 uint8_t raw[16];
167
168typedef struct {
169 float P;
170 float I;
171 float D;
172} amu_pid_t;
173
175
176typedef struct {
177 uint8_t type;
178 uint8_t numPoints;
179 uint8_t delay;
180 uint8_t ratio;
181 uint8_t power;
182 uint8_t dac_gain;
185 float am0;
186 float area;
188
189typedef struct {
192} amu_meas_t;
193
194typedef struct {
195 float voc;
196 float isc;
199 float ff;
200 float eff;
201 float vmax;
202 float imax;
203 float pmax;
204 float adc;
205 uint32_t timestamp;
206 uint32_t crc;
208
209typedef struct {
210 float voltage;
211 float current;
213
214typedef struct {
218#ifndef __AMU_LOW_MEMORY__
219 float yaw[IVSWEEP_MAX_POINTS];
220 float pitch[IVSWEEP_MAX_POINTS];
221#endif
223
224typedef union {
225 struct {
226 uint32_t voltage;
227 uint32_t current;
228 uint32_t tsensors[3];
229 uint32_t bias;
230 uint32_t offset;
231 uint32_t adc_temp;
232 uint32_t avdd;
233 uint32_t iovdd;
234 uint32_t aldo;
235 uint32_t dldo;
236 uint32_t ss_tl;
237 uint32_t ss_bl;
238 uint32_t ss_br;
239 uint32_t ss_tr;
240 } val;
241 uint32_t channel[16];
243
244typedef struct {
245 float yaw;
246 float pitch;
247} ss_angle_t;
248
249typedef struct {
250 float diode[4];
253
254typedef struct {
255 float pressure;
257 float humidity;
258 float status;
260
261typedef struct {
262 float avdd;
263 float iovdd;
264 float aldo;
265 float dldo;
267
280
298
299typedef int8_t(*amu_transfer_fptr_t) (
300 uint8_t address,
301 uint8_t reg,
302 uint8_t* data,
303 size_t len,
304 uint8_t read );
305
306typedef void(*amu_delay_fptr_t)(uint32_t period);
307typedef void(*amu_watchdog_fptr_t)(void);
308typedef void(*amu_watchdog_reset_fptr_t)(void);
309typedef void(*amu_hardware_reset_fptr_t)(void);
310typedef int(*amu_print_fptr_t)(const char* fmt, ...);
311#if defined(ESP32)
312typedef unsigned long(*amu_milis_fptr_t)(void);
313#else
314typedef uint32_t(*amu_milis_fptr_t)(void);
315#endif
316typedef struct {
317 size_t(*write_cmd)(const char* data, size_t len);
318 void(*reset_cmd)(void);
319 void(*flush_cmd)(void);
321
350
351typedef volatile uint8_t amu_data_reg_t;
352
353#endif /* __AMU_TYPES_H__ */
char amu_notes_t[128]
Definition amu_types.h:174
amu_status_t
Definition amu_types.h:142
@ AMU_STATUS_SLEEP
Definition amu_types.h:143
@ AMU_STATUS_MPPT
Definition amu_types.h:146
@ AMU_STATUS_HEATER
Definition amu_types.h:145
@ AMU_STATUS_MEASURE
Definition amu_types.h:144
amu_adc_ch_t
Definition amu_types.h:44
@ AMU_ADC_CH_TSENSOR1
Definition amu_types.h:48
@ AMU_ADC_CH_BIAS
Definition amu_types.h:50
@ AMU_ADC_CH_ALDO
Definition amu_types.h:55
@ AMU_ADC_CH_VOLTAGE
Definition amu_types.h:45
@ AMU_ADC_CH_TSENSOR2
Definition amu_types.h:49
@ AMU_ADC_CH_AVDD
Definition amu_types.h:53
@ AMU_ADC_CH_CURRENT
Definition amu_types.h:46
@ AMU_ADC_CH_DLDO
Definition amu_types.h:56
@ AMU_ADC_CH_SS_BL
Definition amu_types.h:58
@ AMU_ADC_CH_TSENSOR0
Definition amu_types.h:47
@ AMU_ADC_CH_NUM
Definition amu_types.h:61
@ AMU_ADC_CH_TEMP
Definition amu_types.h:52
@ AMU_ADC_CH_SS_BR
Definition amu_types.h:59
@ AMU_ADC_CH_OFFSET
Definition amu_types.h:51
@ AMU_ADC_CH_SS_TR
Definition amu_types.h:60
@ AMU_ADC_CH_SS_TL
Definition amu_types.h:57
@ AMU_ADC_CH_IOVDD
Definition amu_types.h:54
amu_ch_en_t
Definition amu_types.h:87
@ AMU_CH_EN_SUNSENSOR
Definition amu_types.h:106
@ AMU_CH_EN_SS_TR
Definition amu_types.h:105
@ AMU_CH_EN_ALL
Definition amu_types.h:107
@ AMU_CH_EN_BIAS
Definition amu_types.h:94
@ AMU_CH_EN_TSENSOR2
Definition amu_types.h:92
@ AMU_CH_EN_SS_BR
Definition amu_types.h:104
@ AMU_CH_EN_ALDO
Definition amu_types.h:99
@ AMU_CH_EN_AVDD
Definition amu_types.h:97
@ AMU_CH_EN_OFFSET
Definition amu_types.h:95
@ AMU_CH_EN_IOVDD
Definition amu_types.h:98
@ AMU_CH_EN_TSENSOR1
Definition amu_types.h:91
@ AMU_CH_EN_TSENSORS
Definition amu_types.h:93
@ AMU_CH_EN_TEMP
Definition amu_types.h:96
@ AMU_CH_EN_SS_TL
Definition amu_types.h:102
@ AMU_CH_EN_DLDO
Definition amu_types.h:100
@ AMU_CH_EN_INTERNAL_VOLTAGES
Definition amu_types.h:101
@ AMU_CH_EN_SS_BL
Definition amu_types.h:103
@ AMU_CH_EN_CURRENT
Definition amu_types.h:89
@ AMU_CH_EN_TSENSOR0
Definition amu_types.h:90
@ AMU_CH_EN_VOLTAGE
Definition amu_types.h:88
uint32_t(* amu_milis_fptr_t)(void)
Definition amu_types.h:314
#define AMU_DUT_MANUFACTURER_STR_LEN
Definition amu_types.h:38
volatile uint8_t amu_data_reg_t
Definition amu_types.h:351
amu_hardware_revision_t
Definition amu_types.h:112
@ AMU_HARDWARE_REVISION_AMU_3_3
Definition amu_types.h:120
@ AMU_HARDWARE_REVISION_AMU_2_1
Definition amu_types.h:117
@ AMU_HARDWARE_REVISION_AMU_2_0
Definition amu_types.h:116
@ AMU_HARDWARE_REVISION_AMU_3_0
Definition amu_types.h:118
@ AMU_HARDWARE_REVISION_AMU_SP_DEV
Definition amu_types.h:122
@ AMU_HARDWARE_REVISION_AMU_1_0
Definition amu_types.h:114
@ AMU_HARDWARE_REVISION_AMU_SP
Definition amu_types.h:123
@ AMU_HARDWARE_REVISION_AMU_3_2
Definition amu_types.h:119
@ AMU_HARDWARE_REVISION_ISC2
Definition amu_types.h:113
@ AMU_HARDWARE_REVISION_AMU_1_1
Definition amu_types.h:115
#define AMU_NOTES_SIZE
Definition amu_types.h:26
amu_adc_ch_t AMU_ADC_CH_t
Definition amu_types.h:64
void(* amu_delay_fptr_t)(uint32_t period)
Definition amu_types.h:306
int(* amu_print_fptr_t)(const char *fmt,...)
Definition amu_types.h:310
amu_adc_power_mode_t
Definition amu_types.h:78
@ AMU_ADC_POWER_MODE_HIGH
Definition amu_types.h:81
@ AMU_ADC_POWER_MODE_LOW
Definition amu_types.h:79
@ AMU_ADC_POWER_MODE_STANDBY
Definition amu_types.h:82
@ AMU_ADC_POWER_MODE_MID
Definition amu_types.h:80
void(* amu_hardware_reset_fptr_t)(void)
Definition amu_types.h:309
amu_adc_power_mode_t AMU_ADC_POWER_MODE_t
Definition amu_types.h:85
amu_sleep_mode_t
Definition amu_types.h:149
@ AMU_SLEEP_MODE_STANDBY
Definition amu_types.h:151
@ AMU_SLEEP_MODE_IDLE
Definition amu_types.h:152
@ AMU_SLEEP_MODE_DEEP
Definition amu_types.h:150
@ AMU_SLEEP_MODE_OFF
Definition amu_types.h:153
amu_led_pattern_t
Definition amu_types.h:132
@ AMU_LED_PATTERN_SLOW_RGB_FADE
Definition amu_types.h:136
@ AMU_LED_PATTERN_WHITE_FLASH
Definition amu_types.h:134
@ AMU_LED_PATTERN_OFF
Definition amu_types.h:133
@ AMU_LED_PATTERN_QUICK_RGB_FADE
Definition amu_types.h:135
@ AMU_LED_PATTERN_GREEN_FLASH
Definition amu_types.h:138
@ AMU_LED_PATTERN_BLUE_FLASH
Definition amu_types.h:139
@ AMU_LED_PATTERN_RED_FLASH
Definition amu_types.h:137
#define IVSWEEP_MAX_POINTS
Definition amu_types.h:29
int8_t(* amu_transfer_fptr_t)(uint8_t address, uint8_t reg, uint8_t *data, size_t len, uint8_t read)
Definition amu_types.h:299
amu_adc_pga_t
Definition amu_types.h:66
@ ADC_PGA_2X
Definition amu_types.h:68
@ ADC_PGA_32X
Definition amu_types.h:72
@ ADC_PGA_4X
Definition amu_types.h:69
@ ADC_PGA_128X
Definition amu_types.h:74
@ ADC_PGA_1X
Definition amu_types.h:67
@ ADC_PGA_16X
Definition amu_types.h:71
@ ADC_PGA_64X
Definition amu_types.h:73
@ ADC_PGA_8X
Definition amu_types.h:70
@ ADC_PGA_NUM
Definition amu_types.h:75
#define AMU_DUT_MODEL_STR_LEN
Definition amu_types.h:39
void(* amu_watchdog_fptr_t)(void)
Definition amu_types.h:307
#define AMU_DUT_TECHNOLOGY_STR_LEN
Definition amu_types.h:40
amu_tsensor_type_t
Definition amu_types.h:126
@ AMU_TSENSOR_TYPE_PT1000_RTD
Definition amu_types.h:127
@ AMU_TSENSOR_TYPE_PT100_RTD
Definition amu_types.h:128
@ AMU_TSENSOR_TYPE_AD590
Definition amu_types.h:129
amu_ch_en_t AMU_CH_EN_t
Definition amu_types.h:110
void(* amu_watchdog_reset_fptr_t)(void)
Definition amu_types.h:308
#define AMU_DUT_SERIALNUM_STR_LEN
Definition amu_types.h:41
amu_delay_fptr_t delay
Definition amu_types.h:333
amu_hardware_reset_fptr_t hardware_reset
Definition amu_types.h:339
volatile ivsweep_packet_t * sweep_data
Definition amu_types.h:327
amu_scpi_dev_t scpi_dev
Definition amu_types.h:329
amu_transfer_fptr_t transfer
Definition amu_types.h:331
uint8_t(* process_cmd)(uint16_t cmd)
Definition amu_types.h:347
volatile uint8_t twi_address
Definition amu_types.h:324
amu_milis_fptr_t millis
Definition amu_types.h:341
amu_watchdog_fptr_t watchdog_reset
Definition amu_types.h:337
amu_print_fptr_t print
Definition amu_types.h:343
volatile amu_twi_regs_t * amu_regs
Definition amu_types.h:325
amu_watchdog_fptr_t watchdog_kick
Definition amu_types.h:335
volatile uint8_t * transfer_reg
Definition amu_types.h:326
char serial[24]
Definition amu_types.h:276
uint8_t coverglass
Definition amu_types.h:270
uint8_t interconnect
Definition amu_types.h:271
char model[16]
Definition amu_types.h:274
char manufacturer[16]
Definition amu_types.h:273
char technology[16]
Definition amu_types.h:275
uint8_t junction
Definition amu_types.h:269
float energy
Definition amu_types.h:277
uint8_t reserved
Definition amu_types.h:272
float dose
Definition amu_types.h:278
float temperature
Definition amu_types.h:191
float measurement
Definition amu_types.h:190
float I
Definition amu_types.h:170
float D
Definition amu_types.h:171
void(* flush_cmd)(void)
Definition amu_types.h:319
void(* reset_cmd)(void)
Definition amu_types.h:318
size_t(* write_cmd)(const char *data, size_t len)
Definition amu_types.h:317
ss_angle_t ss_angle
Definition amu_types.h:292
ivsweep_config_t sweep_config
Definition amu_types.h:295
uint8_t amu_status
Definition amu_types.h:283
uint8_t command
Definition amu_types.h:282
uint8_t hardware_revision
Definition amu_types.h:285
int8_t twi_status
Definition amu_types.h:284
uint32_t utc_time
Definition amu_types.h:293
uint32_t milliseconds
Definition amu_types.h:294
uint16_t activeADCchannels
Definition amu_types.h:288
uint8_t tsensor_num
Definition amu_types.h:287
ivsweep_meta_t meta
Definition amu_types.h:296
uint32_t adc_status
Definition amu_types.h:289
uint8_t tsensor_type
Definition amu_types.h:286
adc_channels_t adc_raw
Definition amu_types.h:291
amu_dut_t dut
Definition amu_types.h:290
uint8_t sweep_averages
Definition amu_types.h:183
uint8_t numPoints
Definition amu_types.h:178
uint8_t adc_averages
Definition amu_types.h:184
uint32_t timestamp
Definition amu_types.h:205
float tsensor_end
Definition amu_types.h:198
float tsensor_start
Definition amu_types.h:197
uint32_t crc
Definition amu_types.h:206
uint32_t timestamp[40]
Definition amu_types.h:215
float voltage[40]
Definition amu_types.h:216
float current[40]
Definition amu_types.h:217
float pressure
Definition amu_types.h:255
float humidity
Definition amu_types.h:257
float temperature
Definition amu_types.h:256
float yaw
Definition amu_types.h:245
float pitch
Definition amu_types.h:246
uint32_t ss_tl
Definition amu_types.h:236
uint32_t iovdd
Definition amu_types.h:233
uint32_t channel[16]
Definition amu_types.h:241
uint32_t ss_br
Definition amu_types.h:238
uint32_t voltage
Definition amu_types.h:226
uint32_t ss_bl
Definition amu_types.h:237
uint32_t current
Definition amu_types.h:227
uint32_t avdd
Definition amu_types.h:232
uint32_t ss_tr
Definition amu_types.h:239
uint32_t aldo
Definition amu_types.h:234
uint32_t dldo
Definition amu_types.h:235
uint32_t offset
Definition amu_types.h:230
uint32_t adc_temp
Definition amu_types.h:231
uint32_t bias
Definition amu_types.h:229
uint32_t tsensors[3]
Definition amu_types.h:228
float f[4]
Definition amu_types.h:163
uint8_t raw[16]
Definition amu_types.h:165
uint32_t i[4]
Definition amu_types.h:164