AMU Library 3.0
C/C++ library for communicating with AMU (Aerospace Measurement Unit) devices
Loading...
Searching...
No Matches
amu_regs.c
Go to the documentation of this file.
1#include "amu_regs.h"
2#include "amu_types.h"
3
5
6
10
11// Macros to get size of struct members without an instance
12#define MEMBER_SIZE(type, member) sizeof(((type*)0)->member)
13
14uint16_t amu_regs_get_register_length(uint8_t reg) {
15
16 switch(reg) {
17
18 case AMU_REG_SYSTEM_CMD: return MEMBER_SIZE(amu_twi_regs_t, command); break;
19 case AMU_REG_SYSTEM_AMU_STATUS: return MEMBER_SIZE(amu_twi_regs_t, amu_status); break;
20 case AMU_REG_SYSTEM_TWI_STATUS: return MEMBER_SIZE(amu_twi_regs_t, twi_status); break;
21 case AMU_REG_SYSTEM_HARDWARE_REVISION: return MEMBER_SIZE(amu_twi_regs_t, hardware_revision); break;
22 case AMU_REG_SYSTEM_TSENSOR_TYPE: return MEMBER_SIZE(amu_twi_regs_t, tsensor_type); break;
23 case AMU_REG_SYSTEM_TSENSOR_NUM: return MEMBER_SIZE(amu_twi_regs_t, tsensor_num); break;
24 case AMU_REG_SYSTEM_ADC_ACTIVE_CHANNELS: return MEMBER_SIZE(amu_twi_regs_t, activeADCchannels); break;
25 case AMU_REG_SYSTEM_STATUS_HRADC: return MEMBER_SIZE(amu_twi_regs_t, adc_status); break;
26
27 case AMU_REG_DUT: return sizeof(amu_dut_t); break;
28 // case AMU_REG_DUT_JUNCTION: return MEMBER_SIZE(amu_dut_t, junction); break;
29 case AMU_REG_DUT_COVERGLASS: return MEMBER_SIZE(amu_dut_t, coverglass); break;
30 case AMU_REG_DUT_INTERCONNECT: return MEMBER_SIZE(amu_dut_t, interconnect); break;
31 case AMU_REG_DUT_RESERVED: return MEMBER_SIZE(amu_dut_t, reserved); break;
32 case AMU_REG_DUT_MANUFACTURER: return MEMBER_SIZE(amu_dut_t, manufacturer); break;
33 case AMU_REG_DUT_MODEL: return MEMBER_SIZE(amu_dut_t, model); break;
34 case AMU_REG_DUT_TECHNOLOGY: return MEMBER_SIZE(amu_dut_t, technology); break;
35 case AMU_REG_DUT_SERIAL_NUMBER: return MEMBER_SIZE(amu_dut_t, serial); break;
36 case AMU_REG_DUT_ENERGY: return MEMBER_SIZE(amu_dut_t, energy); break;
37 case AMU_REG_DUT_DOSE: return MEMBER_SIZE(amu_dut_t, dose); break;
38
41 // case AMU_REG_ADC_DATA_TSENSOR: return MEMBER_SIZE(adc_channels_t, val.tsensors); break;
42 // case AMU_REG_ADC_DATA_TSENSORS: return MEMBER_SIZE(adc_channels_t, val.tsensors); break;
46 case AMU_REG_ADC_DATA_BIAS: return MEMBER_SIZE(adc_channels_t, val.bias); break;
49 case AMU_REG_ADC_DATA_AVDD: return MEMBER_SIZE(adc_channels_t, val.avdd); break;
51 case AMU_REG_ADC_DATA_ALDO: return MEMBER_SIZE(adc_channels_t, val.aldo); break;
52 case AMU_REG_ADC_DATA_DLDO: return MEMBER_SIZE(adc_channels_t, val.dldo); break;
57
58 // case AMU_REG_SUNSENSOR_TL: return MEMBER_SIZE(quad_photo_sensor_t, diode[0]); break;
59 // case AMU_REG_SUNSENSOR_BL: return MEMBER_SIZE(quad_photo_sensor_t, diode[1]); break;
60 // case AMU_REG_SUNSENSOR_BR: return MEMBER_SIZE(quad_photo_sensor_t, diode[2]); break;
61 // case AMU_REG_SUNSENSOR_TR: return MEMBER_SIZE(quad_photo_sensor_t, diode[3]); break;
62 case AMU_REG_SUNSENSOR_YAW: return MEMBER_SIZE(ss_angle_t, yaw); break;
63 case AMU_REG_SUNSENSOR_PITCH: return MEMBER_SIZE(ss_angle_t, pitch); break;
64
65 case AMU_REG_TIME_MILLIS: return MEMBER_SIZE(amu_twi_regs_t, milliseconds); break;
66 case AMU_REG_TIME_UTC: return MEMBER_SIZE(amu_twi_regs_t, utc_time); break;
67
69 case AMU_REG_SWEEP_CONFIG_NUM_POINTS: return MEMBER_SIZE(ivsweep_config_t, numPoints); break;
73 case AMU_REG_SWEEP_CONFIG_DAC_GAIN: return MEMBER_SIZE(ivsweep_config_t, dac_gain); break;
74 case AMU_REG_SWEEP_CONFIG_AVERAGES: return MEMBER_SIZE(ivsweep_config_t, sweep_averages); break;
75 case AMU_REG_SWEEP_CONFIG_ADC_AVERAGES: return MEMBER_SIZE(ivsweep_config_t, adc_averages); break;
78
79 case AMU_REG_SWEEP_META_VOC: return MEMBER_SIZE(ivsweep_meta_t, voc); break;
80 case AMU_REG_SWEEP_META_ISC: return MEMBER_SIZE(ivsweep_meta_t, isc); break;
81 case AMU_REG_SWEEP_META_TSENSOR_START: return MEMBER_SIZE(ivsweep_meta_t, tsensor_start); break;
82 case AMU_REG_SWEEP_META_TSENSOR_END: return MEMBER_SIZE(ivsweep_meta_t, tsensor_end); break;
83 case AMU_REG_SWEEP_META_FF: return MEMBER_SIZE(ivsweep_meta_t, ff); break;
84 case AMU_REG_SWEEP_META_EFF: return MEMBER_SIZE(ivsweep_meta_t, eff); break;
85 case AMU_REG_SWEEP_META_VMAX: return MEMBER_SIZE(ivsweep_meta_t, vmax); break;
86 case AMU_REG_SWEEP_META_IMAX: return MEMBER_SIZE(ivsweep_meta_t, imax); break;
87 case AMU_REG_SWEEP_META_PMAX: return MEMBER_SIZE(ivsweep_meta_t, pmax); break;
88 case AMU_REG_SWEEP_META_ADC: return MEMBER_SIZE(ivsweep_meta_t, adc); break;
89 case AMU_REG_SWEEP_META_TIMESTAMP: return MEMBER_SIZE(ivsweep_meta_t, timestamp); break;
90 case AMU_REG_SWEEP_META_CRC: return MEMBER_SIZE(ivsweep_meta_t, crc); break;
91
92 // case AMU_REG_DATA_PTR_COMMAND: return MEMBER_SIZE(amu_twi_regs_t, command); break;
97 case AMU_REG_DATA_PTR_SS_PITCH: return amu_twi_regs.sweep_config.numPoints * sizeof(float);
98
99 case AMU_REG_DATA_PTR_SWEEP_CONFIG: return sizeof(ivsweep_config_t); break;
100 case AMU_REG_DATA_PTR_SWEEP_META: return sizeof(ivsweep_meta_t); break;
101 case AMU_REG_DATA_PTR_SUNSENSOR: return sizeof(quad_photo_sensor_t); break;
102 case AMU_REG_DATA_PTR_PRESSURE: return sizeof(press_data_t); break;
103
104 case AMU_REG_DATA_PTR_DATAPOINT: return sizeof(ivsweep_datapoint_t); break;
105
106 default: return 0; break;
107 }
108
109}
#define MEMBER_SIZE(type, member)
Definition amu_regs.c:12
uint16_t amu_regs_get_register_length(uint8_t reg)
Definition amu_regs.c:14
static volatile amu_twi_regs_t amu_twi_regs
Definition amu_regs.c:4
volatile amu_twi_regs_t * amu_regs_get_twi_regs_ptr(void)
Definition amu_regs.c:7
@ AMU_REG_DUT
Definition amu_regs.h:24
@ AMU_REG_TIME_MILLIS
Definition amu_regs.h:99
@ AMU_REG_TIME_UTC
Definition amu_regs.h:100
@ AMU_REG_SYSTEM_AMU_STATUS
Definition amu_regs.h:38
@ AMU_REG_SYSTEM_CMD
Definition amu_regs.h:37
@ AMU_REG_SYSTEM_TSENSOR_NUM
Definition amu_regs.h:42
@ AMU_REG_SYSTEM_ADC_ACTIVE_CHANNELS
Definition amu_regs.h:43
@ AMU_REG_SYSTEM_TSENSOR_TYPE
Definition amu_regs.h:41
@ AMU_REG_SYSTEM_STATUS_HRADC
Definition amu_regs.h:44
@ AMU_REG_SYSTEM_TWI_STATUS
Definition amu_regs.h:39
@ AMU_REG_SYSTEM_HARDWARE_REVISION
Definition amu_regs.h:40
@ AMU_REG_DATA_PTR_VOLTAGE
Definition amu_regs.h:140
@ AMU_REG_DATA_PTR_PRESSURE
Definition amu_regs.h:147
@ AMU_REG_DATA_PTR_DATAPOINT
Definition amu_regs.h:148
@ AMU_REG_DATA_PTR_SWEEP_CONFIG
Definition amu_regs.h:144
@ AMU_REG_DATA_PTR_SS_YAW
Definition amu_regs.h:142
@ AMU_REG_DATA_PTR_CURRENT
Definition amu_regs.h:141
@ AMU_REG_DATA_PTR_TIMESTAMP
Definition amu_regs.h:139
@ AMU_REG_DATA_PTR_SWEEP_META
Definition amu_regs.h:145
@ AMU_REG_DATA_PTR_SS_PITCH
Definition amu_regs.h:143
@ AMU_REG_DATA_PTR_SUNSENSOR
Definition amu_regs.h:146
@ AMU_REG_SWEEP_META_CRC
Definition amu_regs.h:132
@ AMU_REG_SWEEP_META_TIMESTAMP
Definition amu_regs.h:131
@ AMU_REG_SWEEP_META_ADC
Definition amu_regs.h:130
@ AMU_REG_SWEEP_META_IMAX
Definition amu_regs.h:128
@ AMU_REG_SWEEP_META_VOC
Definition amu_regs.h:121
@ AMU_REG_SWEEP_META_ISC
Definition amu_regs.h:122
@ AMU_REG_SWEEP_META_PMAX
Definition amu_regs.h:129
@ AMU_REG_SWEEP_META_TSENSOR_START
Definition amu_regs.h:123
@ AMU_REG_SWEEP_META_FF
Definition amu_regs.h:125
@ AMU_REG_SWEEP_META_EFF
Definition amu_regs.h:126
@ AMU_REG_SWEEP_META_VMAX
Definition amu_regs.h:127
@ AMU_REG_SWEEP_META_TSENSOR_END
Definition amu_regs.h:124
@ AMU_REG_SWEEP_CONFIG_DAC_GAIN
Definition amu_regs.h:111
@ AMU_REG_SWEEP_CONFIG_ADC_AVERAGES
Definition amu_regs.h:113
@ AMU_REG_SWEEP_CONFIG_NUM_POINTS
Definition amu_regs.h:107
@ AMU_REG_SWEEP_CONFIG_DELAY
Definition amu_regs.h:108
@ AMU_REG_SWEEP_CONFIG_AVERAGES
Definition amu_regs.h:112
@ AMU_REG_SWEEP_CONFIG_AREA
Definition amu_regs.h:115
@ AMU_REG_SWEEP_CONFIG_PWR_MODE
Definition amu_regs.h:110
@ AMU_REG_SWEEP_CONFIG_AM0
Definition amu_regs.h:114
@ AMU_REG_SWEEP_CONFIG_RATIO
Definition amu_regs.h:109
@ AMU_REG_SWEEP_CONFIG_TYPE
Definition amu_regs.h:106
@ AMU_REG_DUT_MODEL
Definition amu_regs.h:55
@ AMU_REG_DUT_RESERVED
Definition amu_regs.h:53
@ AMU_REG_DUT_SERIAL_NUMBER
Definition amu_regs.h:57
@ AMU_REG_DUT_TECHNOLOGY
Definition amu_regs.h:56
@ AMU_REG_DUT_COVERGLASS
Definition amu_regs.h:51
@ AMU_REG_DUT_MANUFACTURER
Definition amu_regs.h:54
@ AMU_REG_DUT_ENERGY
Definition amu_regs.h:58
@ AMU_REG_DUT_INTERCONNECT
Definition amu_regs.h:52
@ AMU_REG_DUT_DOSE
Definition amu_regs.h:59
@ AMU_REG_SUNSENSOR_PITCH
Definition amu_regs.h:93
@ AMU_REG_SUNSENSOR_YAW
Definition amu_regs.h:92
@ AMU_REG_ADC_DATA_SS_TR
Definition amu_regs.h:82
@ AMU_REG_ADC_DATA_OFFSET
Definition amu_regs.h:73
@ AMU_REG_ADC_DATA_TSENSOR_1
Definition amu_regs.h:70
@ AMU_REG_ADC_DATA_SS_TL
Definition amu_regs.h:79
@ AMU_REG_ADC_DATA_BIAS
Definition amu_regs.h:72
@ AMU_REG_ADC_DATA_TSENSOR_2
Definition amu_regs.h:71
@ AMU_REG_ADC_DATA_TEMP
Definition amu_regs.h:74
@ AMU_REG_ADC_DATA_VOLTAGE
Definition amu_regs.h:65
@ AMU_REG_ADC_DATA_CURRENT
Definition amu_regs.h:66
@ AMU_REG_ADC_DATA_SS_BR
Definition amu_regs.h:81
@ AMU_REG_ADC_DATA_SS_BL
Definition amu_regs.h:80
@ AMU_REG_ADC_DATA_DLDO
Definition amu_regs.h:78
@ AMU_REG_ADC_DATA_IOVDD
Definition amu_regs.h:76
@ AMU_REG_ADC_DATA_AVDD
Definition amu_regs.h:75
@ AMU_REG_ADC_DATA_ALDO
Definition amu_regs.h:77
@ AMU_REG_ADC_DATA_TSENSOR_0
Definition amu_regs.h:69
uint32_t ss_tl
Definition amu_types.h:236
uint32_t iovdd
Definition amu_types.h:233
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