10#ifdef __AMU_USE_SCPI__
14#ifdef __AMU_REMOTE_DEVICE__
24 void begin(uint8_t twiAddress);
27 uint8_t waitUntilReady(uint32_t timeout);
31 char* readNotes(
char *notes, uint8_t len);
32 char* readNotes(
char* notes);
33 char* readSerialStr(
void);
34 char* readFirmwareStr(
void);
36 int8_t setActiveChannels(uint16_t channels);
37 int8_t setTimeStamp(uint32_t timestamp);
39 int8_t setLEDcolor(
float red,
float grn,
float blu);
44 float measureVoltage(
void);
45 float measureCurrent(
void);
46 float measureTSensor(
void);
47 float measureTSensor0(
void);
48 float measureTSensor1(
void);
49 float measureTSensor2(
void);
50 float measureSSTL(
void);
51 float measureSSBL(
void);
52 float measureSSBR(
void);
53 float measureSSTR(
void);
54 float measureBias(
void);
55 float measureOffset(
void);
56 float measureTemperature(
void);
57 float measureAvdd(
void);
58 float measureIOvdd(
void);
59 float measureAldo(
void);
60 float measureDldo(
void);
62 float measureChannel(uint8_t channel);
63 int8_t measureActiveChannels(
void);
64 amu_int_volt_t measureInternalVoltages(
void);
65 quad_photo_sensor_t measureSunSensor(
void);
67 float measureSystemTemperature(
void);
70 press_data_t measurePressureSensor(
void);
71 float measurePressure(
void);
72 float measureHumidity(
void);
73 float measurePSTemperature(
void);
76 ivsweep_config_t * readSweepConfig(
void);
77 ivsweep_meta_t * readMeta(
void);
80 ss_angle_t * readSunSensorAngles(
void);
81 quad_photo_sensor_t * readSunSensorMeasurement(
void);
83 amu_meas_t readMeasurement(
void);
84 uint32_t * readSweepTimestamps(uint32_t*);
85 float * readSweepVoltages(
float*);
86 float * readSweepCurrents(
float*);
87 float * readSweepYaws(
float*);
88 float * readSweepPitches(
float*);
89 ivsweep_packet_t * readSweepIV(ivsweep_packet_t*);
90 ivsweep_packet_t * readSweepSunAngle(ivsweep_packet_t*);
91 ivsweep_packet_t * readSweepAll(ivsweep_packet_t*);
93 void loadSweepDatapoints(uint8_t offset);
95 uint8_t getAddress(
void) {
return address; }
97 amu_dut_t* getDUT(
void) {
return &dut; }
98 char * getDutManufacturer(
void) {
return dut.manufacturer; }
99 char* getDutModel(
void) {
return dut.model; }
100 uint8_t getDutJunction(
void) {
return dut.junction; }
101 char * getDutSerialNumber(
void) {
return dut.serial; }
102 float getDutEnergy(
void) {
return dut.energy; }
103 float getDutDose(
void) {
return dut.dose; }
108 char * getFirmware(
void) {
return firmware; }
109 char* getSerialNumber(
void) {
return serial_number; }
111 ivsweep_config_t * getSweepConfig(
void) {
return &sweep_config; }
112 ivsweep_meta_t * getMetaData(
void) {
return &meta; }
114 float getDACgainCorrection(
void);
116 quad_photo_sensor_t getQuadPhotoSensor(
void) {
return sun_sensor; }
118 float getPhotoDiodeVoltage(uint8_t n);
119 float getYaw(
void) {
return sun_sensor.angle.yaw; }
120 float getPitch(
void) {
return sun_sensor.angle.pitch; }
122 float getYawAbs(
void) {
return abs(sun_sensor.angle.yaw); }
123 float getPitchAbs(
void) {
return abs(sun_sensor.angle.pitch); }
125 bool goodSunAngle(
float minAngle);
127 amu_coeff_t getYawCoefficients(
void);
128 amu_coeff_t getPitchCoefficients(
void);
129 float getSSHVal(
void);
130 float getSSRVal(
void);
132 uint32_t getADCstatus(
void);
134 int8_t triggerIsc(
void);
135 int8_t triggerVoc(
void);
137 int8_t triggerSweep(
void);
139 amu_meas_t measureIsc(
void);
140 amu_meas_t measureVoc(
void);
148 typedef void (*errorPrintFncPtr_t)(
const char* fmt, ...);
149 typedef void (*resetFncPtr_t)(void);
151 static errorPrintFncPtr_t errorPrintFncPtr;
152 static resetFncPtr_t amuResetFncPtr;
153 static resetFncPtr_t eyasResetFncPtr;
156 static amu_scpi_dev_t *
amu_scpi_init(
size_t(*write_cmd)(
const char* data,
size_t len),
void(*flush_cmd)(
void));
160 static void setErrorPrintFunction(errorPrintFncPtr_t fptr) { errorPrintFncPtr = fptr; }
161 static void setAMUResetFuncPtr(resetFncPtr_t fptr) { amuResetFncPtr = fptr; }
162 static void setEYASResetFuncPtr(resetFncPtr_t fptr) { eyasResetFncPtr = fptr; }
168 volatile amu_device_t* amu_dev;
177 ivsweep_config_t sweep_config;
180 quad_photo_sensor_t sun_sensor;
184 int8_t sendCommand(
CMD_t cmd);
185 int8_t sendCommand(
CMD_t cmd,
void* params, uint8_t param_len);
186 int8_t sendCommandandWait(
CMD_t cmd, uint32_t wait);
188 template <
typename T>
189 T query(
CMD_t command);
191 template <
typename T>
192 T query(
CMD_t command, T* data);
194 template <
typename T>
195 T * query(
CMD_t command, T *data,
size_t len);
197 template <
typename T>
198 T queryChannel(
CMD_t command, uint8_t channel);
200 template <
typename T>
201 T read_twi_reg(uint8_t reg);
203 template <
typename T>
204 T * read_twi_reg(uint8_t reg, T *data,
size_t len);
206 template <
typename T>
207 int8_t write_twi_reg(uint8_t reg, T data);
209 template <
typename T>
210 int8_t write_twi_reg(uint8_t reg, T * data,
size_t len);
#define AMU_SERIALNUM_STR_LEN
#define AMU_FIRMWARE_STR_LEN
amu_adc_ch_t AMU_ADC_CH_t
int8_t(* amu_transfer_fptr_t)(uint8_t address, uint8_t reg, uint8_t *data, size_t len, uint8_t read)
SCPI library include file.
void amu_scpi_init(volatile amu_device_t *dev, const char *idn1, const char *idn2, const char *idn3, const char *idn4)