20#ifdef __AMU_USE_SCPI__
22#ifndef AMULIBC_SCPI_INPUT_BUFFER_LENGTH
23#define AMULIBC_SCPI_INPUT_BUFFER_LENGTH 1024
26#ifndef AMULIBC_SCPI_ERROR_QUEUE_SIZE
27#define AMULIBC_SCPI_ERROR_QUEUE_SIZE 16
31#define SCPI_USE_PROGMEM
49 #define SCPI_CMD_RW_PROTOTYPE(TYPE) scpi_result_t scpi_cmd_rw_##TYPE(scpi_t *context);
63 #define SCPI_CMD_EXEC_QRY_PROTOTYPE(TYPE) scpi_result_t scpi_cmd_exec_qry_##TYPE(scpi_t *context);
84#if defined(__AMU_USE_SCPI__)
86 #ifdef SCPI_USE_PROGMEM
87 #define SCPI_COMMAND(P, C, T) static const char C ## _ ## T ## _pattern[] PROGMEM = P;
89 #define SCPI_COMMAND(P, C, T) static const char C ## _ ## T ## _pattern[] = P;
92 #define __AMU_DEFAULT_CMD_LIST__ \
93 SCPI_COMMAND("*CLS", SCPI_CoreCls, 0 ) \
94 SCPI_COMMAND("*ESE?", SCPI_CoreEseQ, 0 ) \
95 SCPI_COMMAND("*ESR?", SCPI_CoreEsrQ, 0 ) \
96 SCPI_COMMAND("*IDN?", SCPI_CoreIdnQ, 0 ) \
97 SCPI_COMMAND("*OPC", SCPI_CoreOpc, 0 ) \
98 SCPI_COMMAND("*OPC?", SCPI_CoreOpcQ, 0 ) \
99 SCPI_COMMAND("*RST", SCPI_CoreRst, 0 ) \
100 SCPI_COMMAND("*SRE", SCPI_CoreSre, 0 ) \
101 SCPI_COMMAND("*SRE?", SCPI_CoreSreQ, 0 ) \
102 SCPI_COMMAND("*STB?", SCPI_CoreStbQ, 0 ) \
103 SCPI_COMMAND("*TST?", scpi_cmd_execute, CMD_SYSTEM_NO_CMD ) \
104 SCPI_COMMAND("*WAI", SCPI_CoreWai, 0 ) \
106 SCPI_COMMAND("STATus:QUEStionable:ENABle", SCPI_StatusQuestionableEnable, 0 ) \
107 SCPI_COMMAND("STATus:QUEStionable:ENABle?", SCPI_StatusQuestionableEnableQ, 0 ) \
108 SCPI_COMMAND("STATus:PRESet", SCPI_StatusPreset, 0 ) \
110 SCPI_COMMAND("SYSTem:ERRor[:NEXT]?", SCPI_SystemErrorNextQ, 0 ) \
111 SCPI_COMMAND("SYSTem:ERRor:COUNt?", SCPI_SystemErrorCountQ, 0 ) \
112 SCPI_COMMAND("SYSTem:VERSion?", SCPI_SystemVersionQ, 0 ) \
113 SCPI_COMMAND("SYSTem:SCPI:LIST?", scpi_cmd_execute, CMD_USB_SYSTEM_LIST_SCPI_COMMANDS ) \
115 SCPI_COMMAND("SYSTem:BOOTloader", scpi_cmd_execute, CMD_USB_SYSTEM_ENTER_BOOTLOADER ) \
116 SCPI_COMMAND("SYSTem:DEBug#?", scpi_cmd_rw_float, CMD_USB_SYSTEM_DEBUG ) \
117 SCPI_COMMAND("SYSTem:FIRMware?", _scpi_cmd_query_str, CMD_SYSTEM_FIRMWARE ) \
118 SCPI_COMMAND("SYSTem:HARDware?", scpi_cmd_rw_uint8_t, AMU_REG_SYSTEM_HARDWARE_REVISION ) \
119 SCPI_COMMAND("SYSTem:LED:PAT", _scpi_cmd_led, CMD_SYSTEM_LED ) \
120 SCPI_COMMAND("SYSTem:LED:COLOR[?]", scpi_cmd_rw_amu_pid_t, CMD_SYSTEM_LED_COLOR ) \
121 SCPI_COMMAND("SYSTem:SERial?", _scpi_cmd_query_str, CMD_SYSTEM_SERIAL_NUM ) \
122 SCPI_COMMAND("SYSTem:SLEEP", scpi_cmd_execute, CMD_SYSTEM_SLEEP ) \
123 SCPI_COMMAND("SYSTem:STATus?", scpi_cmd_rw_uint8_t, AMU_REG_SYSTEM_AMU_STATUS ) \
124 SCPI_COMMAND("SYSTem:TEMPerature?", scpi_cmd_rw_float, CMD_SYSTEM_TEMPERATURE ) \
125 SCPI_COMMAND("SYSTem:TIMEstamp[?]", scpi_cmd_rw_uint32_t, CMD_SYSTEM_TIME ) \
126 SCPI_COMMAND("SYSTem:TIMEstamp:UTC[?]", scpi_cmd_rw_uint32_t, CMD_SYSTEM_UTC_TIME ) \
127 SCPI_COMMAND("SYSTem:TWI:ADDress[?]", scpi_cmd_rw_uint8_t, CMD_SYSTEM_TWI_ADDRESS ) \
128 SCPI_COMMAND("SYSTem:TWI:NUMdevices?", scpi_cmd_rw_uint8_t, CMD_SYSTEM_TWI_NUM_DEVICES ) \
129 SCPI_COMMAND("SYSTem:TWI:MODE[?]", scpi_cmd_rw_uint8_t, CMD_USB_SYSTEM_TWI_MODE ) \
130 SCPI_COMMAND("SYSTem:TWI:SCAN?", _scpi_cmd_twi_scan, CMD_USB_SYSTEM_TWI_SCAN ) \
131 SCPI_COMMAND("SYSTem:TWI:STATus?", scpi_cmd_rw_uint8_t, CMD_SYSTEM_TWI_STATUS ) \
132 SCPI_COMMAND("SYSTem:XMEGA:FUSES?", scpi_cmd_rw_uint32_t, CMD_SYSTEM_XMEGA_FUSES ) \
133 SCPI_COMMAND("SYSTem:XMEGA:SIGnature?", _scpi_cmd_query_str, CMD_SYSTEM_XMEGA_USER_SIGNATURES ) \
135 SCPI_COMMAND("DUT:JUNCtion[?]", scpi_cmd_rw_uint8_t, CMD_DUT_JUNCTION ) \
136 SCPI_COMMAND("DUT:COVERglass[?]", scpi_cmd_rw_uint8_t, CMD_DUT_COVERGLASS ) \
137 SCPI_COMMAND("DUT:INTERconnect[?]", scpi_cmd_rw_uint8_t, CMD_DUT_INTERCONNECT ) \
138 SCPI_COMMAND("DUT:MANufacturer[?]", _scpi_cmd_query_str, CMD_DUT_MANUFACTURER ) \
139 SCPI_COMMAND("DUT:MODel[?]", _scpi_cmd_query_str, CMD_DUT_MODEL ) \
140 SCPI_COMMAND("DUT:TECHnology[?]", _scpi_cmd_query_str, CMD_DUT_TECHNOLOGY ) \
141 SCPI_COMMAND("DUT:SERialnumber[?]", _scpi_cmd_query_str, CMD_DUT_SERIAL_NUMBER ) \
142 SCPI_COMMAND("DUT:ENERGY[?]", scpi_cmd_rw_float, CMD_DUT_ENERGY ) \
143 SCPI_COMMAND("DUT:DOSE[?]", scpi_cmd_rw_float, CMD_DUT_DOSE ) \
144 SCPI_COMMAND("DUT:NOTEs[?]", _scpi_cmd_query_str, CMD_DUT_NOTES ) \
146 SCPI_COMMAND("DUT:TSENSor:TYPE[?]", scpi_cmd_rw_uint8_t, CMD_DUT_TSENSOR_TYPE ) \
147 SCPI_COMMAND("DUT:TSENSor:NUMber[?]", scpi_cmd_rw_uint8_t, CMD_DUT_TSENSOR_NUMBER ) \
148 SCPI_COMMAND("DUT:TSENSor:FIT[?]", scpi_cmd_rw_amu_coeff_t, CMD_DUT_TSENSOR_FIT ) \
150 SCPI_COMMAND("MEASure:ADC:ACTive[:RAW]?", _scpi_cmd_measure_active_ch, CMD_EXEC_MEAS_ACTIVE_CHANNELS ) \
151 SCPI_COMMAND("MEASure:INTERNALvoltages?", scpi_cmd_rw_amu_int_volt_t, CMD_EXEC_MEAS_INTERNAL_VOLTAGES ) \
152 SCPI_COMMAND("MEASure:SUNSensor?", scpi_cmd_rw_ss_angle_t, CMD_EXEC_MEAS_SUN_SENSOR ) \
153 SCPI_COMMAND("MEASure:PRESSure?", scpi_cmd_rw_press_data_t, CMD_EXEC_MEAS_PRESSURE_SENSOR ) \
155 SCPI_COMMAND("ADC:CALibrate[?]", scpi_cmd_exec_qry_float, CMD_EXEC_ADC_CAL ) \
156 SCPI_COMMAND("ADC:CALibrate:TSENSor", scpi_cmd_rw_float, CMD_EXEC_TSENSOR_CAL_25C ) \
157 SCPI_COMMAND("ADC:CALibrate:ALL:INTernal", scpi_cmd_execute, CMD_EXEC_ADC_CAL_ALL_INTERNAL ) \
158 SCPI_COMMAND("ADC:SAVE:ALL:INTernal", scpi_cmd_execute, CMD_EXEC_ADC_CAL_SAVE_ALL_INTERNAL ) \
159 SCPI_COMMAND("ADC:CH:ACTIVE[?]", scpi_cmd_rw_uint16_t, AMU_REG_SYSTEM_ADC_ACTIVE_CHANNELS ) \
161 SCPI_COMMAND("ADC:CH#[?]", scpi_cmd_rw_uint16_t, CMD_ADC_CH_REG ) \
162 SCPI_COMMAND("ADC:CH#:SETup[?]", scpi_cmd_rw_uint16_t, CMD_ADC_CH_SETUP ) \
163 SCPI_COMMAND("ADC:CH#:FILTer[?]", scpi_cmd_rw_uint32_t, CMD_ADC_CH_FILTER ) \
164 SCPI_COMMAND("ADC:CH#:RATE[?]", scpi_cmd_rw_float, CMD_ADC_CH_RATE ) \
165 SCPI_COMMAND("ADC:CH#:PGA[?]", scpi_cmd_rw_uint8_t, CMD_ADC_CH_PGA ) \
166 SCPI_COMMAND("ADC:CH#:MAX?", scpi_cmd_rw_float, CMD_ADC_CH_PGA_MAX ) \
167 SCPI_COMMAND("ADC:CH#:SAVE", scpi_cmd_execute, CMD_ADC_CH_SAVE ) \
168 SCPI_COMMAND("ADC:CH#:OFFset[?]", scpi_cmd_rw_int32_t, CMD_ADC_CH_OFFSET_COEFF ) \
169 SCPI_COMMAND("ADC:CH#:GAIN[?]", scpi_cmd_rw_int32_t, CMD_ADC_CH_GAIN_COEFF ) \
170 SCPI_COMMAND("ADC:CH#:CALibrate:INTernal", scpi_cmd_execute, CMD_ADC_CH_CAL_INTERNAL ) \
171 SCPI_COMMAND("ADC:CH#:CALibrate:ZERO" , scpi_cmd_execute, CMD_ADC_CH_CAL_ZERO_SCALE ) \
172 SCPI_COMMAND("ADC:CH#:CALibrate:FULL", scpi_cmd_execute, CMD_ADC_CH_CAL_FULL_SCALE ) \
173 SCPI_COMMAND("ADC:CH#:CALibrate:RESet", scpi_cmd_execute, CMD_ADC_CH_CAL_RESET ) \
174 SCPI_COMMAND("ADC:CH#:CALibrate:SAVe", scpi_cmd_execute, CMD_ADC_CH_CAL_SAVE ) \
176 SCPI_COMMAND("ADC:STATus?", scpi_cmd_rw_uint32_t, AMU_REG_SYSTEM_STATUS_HRADC ) \
178 SCPI_COMMAND("SUNSensor?", _scpi_read_ptr, AMU_REG_DATA_PTR_SUNSENSOR ) \
180 SCPI_COMMAND("SWEEP:TIMEstamp?", _scpi_read_ptr, AMU_REG_DATA_PTR_TIMESTAMP ) \
181 SCPI_COMMAND("SWEEP:VOLTage?", _scpi_read_ptr, AMU_REG_DATA_PTR_VOLTAGE ) \
182 SCPI_COMMAND("SWEEP:CURRent?", _scpi_read_ptr, AMU_REG_DATA_PTR_CURRENT ) \
183 SCPI_COMMAND("SWEEP:YAW?", _scpi_read_ptr, AMU_REG_DATA_PTR_SS_YAW ) \
184 SCPI_COMMAND("SWEEP:PITCH?", _scpi_read_ptr, AMU_REG_DATA_PTR_SS_PITCH ) \
186 SCPI_COMMAND("SWEEP:VOLTage", _scpi_write_sweep_ptr, AMU_REG_DATA_PTR_VOLTAGE ) \
187 SCPI_COMMAND("SWEEP:CURRent", _scpi_write_sweep_ptr, AMU_REG_DATA_PTR_CURRENT ) \
188 SCPI_COMMAND("SWEEP:YAW", _scpi_write_sweep_ptr, AMU_REG_DATA_PTR_SS_YAW ) \
189 SCPI_COMMAND("SWEEP:PITCH", _scpi_write_sweep_ptr, AMU_REG_DATA_PTR_SS_PITCH ) \
191 SCPI_COMMAND("HEATer:STATE[?]", scpi_cmd_rw_uint8_t, CMD_AUX_HEATER_STATE ) \
192 SCPI_COMMAND("HEATer:SETpoint[?]", scpi_cmd_rw_float, CMD_AUX_HEATER_SETPOINT ) \
193 SCPI_COMMAND("HEATer:PID[?]", scpi_cmd_rw_amu_pid_t, CMD_AUX_HEATER_PID ) \
194 SCPI_COMMAND("HEATer:PID:SAVE", scpi_cmd_execute, CMD_EXEC_HEATER_PID_SAVE ) \
196 SCPI_COMMAND("SWEEP:META?", _scpi_read_ptr, AMU_REG_DATA_PTR_SWEEP_META ) \
197 SCPI_COMMAND("SWEEP:META", _scpi_write_meta_ptr, AMU_REG_DATA_PTR_SWEEP_META ) \
199 SCPI_COMMAND("SWEEP:CONFig?", _scpi_read_ptr, AMU_REG_DATA_PTR_SWEEP_CONFIG ) \
200 SCPI_COMMAND("SWEEP:CONFig", _scpi_write_config_ptr, AMU_REG_DATA_PTR_SWEEP_CONFIG ) \
201 SCPI_COMMAND("SWEEP:CONFig:SAVe", scpi_cmd_execute, CMD_SWEEP_CONFIG_SAVE ) \
203 SCPI_COMMAND("SWEEP:DISable", scpi_cmd_execute, CMD_SWEEP_DISABLE ) \
204 SCPI_COMMAND("SWEEP:ENAble", scpi_cmd_execute, CMD_SWEEP_ENABLE ) \
205 SCPI_COMMAND("SWEEP:TRIGger", scpi_cmd_execute, CMD_SWEEP_TRIG_SWEEP ) \
206 SCPI_COMMAND("SWEEP:TRIGger:INITialize", scpi_cmd_execute, CMD_SWEEP_TRIG_INIT ) \
207 SCPI_COMMAND("SWEEP:TRIGger:ISC?", scpi_cmd_rw_amu_meas_t, CMD_SWEEP_TRIG_ISC ) \
208 SCPI_COMMAND("SWEEP:TRIGger:VOC?", scpi_cmd_rw_amu_meas_t, CMD_SWEEP_TRIG_VOC ) \
209 SCPI_COMMAND("SWEEP:TRIGger:USB", scpi_cmd_execute, CMD_USB_SWEEP_TRIGGER ) \
210 SCPI_COMMAND("SWEEP:EEPROM:SAVE", scpi_cmd_execute, CMD_SWEEP_IV_SAVE_TO_EEPROM ) \
211 SCPI_COMMAND("SWEEP:EEPROM:LOAD", scpi_cmd_execute, CMD_SWEEP_IV_LOAD_FROM_EEPROM ) \
212 SCPI_COMMAND("SWEEP:AES:ENCode", scpi_cmd_execute, CMD_SWEEP_AES_ENCODE ) \
213 SCPI_COMMAND("SWEEP:AES:DECode", scpi_cmd_execute, CMD_SWEEP_AES_DECODE ) \
214 SCPI_COMMAND("SWEEP:DATApoint:SAVE", scpi_cmd_execute, CMD_SWEEP_DATAPOINT_SAVE ) \
216 SCPI_COMMAND("DAC:STATE[?]", scpi_cmd_rw_uint8_t, CMD_AUX_DAC_STATE ) \
217 SCPI_COMMAND("DAC:CALibrate[?]", scpi_cmd_rw_float, CMD_EXEC_DAC_CAL ) \
218 SCPI_COMMAND("DAC:CALibrate:SAVe", scpi_cmd_execute, CMD_EXEC_DAC_CAL_SAVE ) \
219 SCPI_COMMAND("DAC:CURRent[?]", scpi_cmd_rw_float, CMD_AUX_DAC_CURRENT ) \
220 SCPI_COMMAND("DAC:CURRent:RAW[?]", scpi_cmd_rw_uint16_t, CMD_AUX_DAC_CURRENT_RAW ) \
221 SCPI_COMMAND("DAC:OFFset[?]", scpi_cmd_rw_uint16_t, CMD_AUX_DAC_OFFSET ) \
222 SCPI_COMMAND("DAC:OFFset:CORRection[?]", scpi_cmd_rw_float, CMD_AUX_DAC_OFFSET_CORRECTION ) \
223 SCPI_COMMAND("DAC:GAIN:CORRection[?]", scpi_cmd_rw_float, CMD_AUX_DAC_GAIN_CORRECTION ) \
224 SCPI_COMMAND("DAC:VOLTage[?]", scpi_cmd_rw_float, CMD_AUX_DAC_VOLTAGE ) \
225 SCPI_COMMAND("DAC:VOLTage:RAW[?]", scpi_cmd_rw_uint16_t, CMD_AUX_DAC_VOLTAGE_RAW ) \
227 SCPI_COMMAND("MEMory:ERASE:ALL", scpi_cmd_execute, CMD_USB_EEPROM_ERASE_ALL ) \
228 SCPI_COMMAND("MEMory:ERASE:CONFig", scpi_cmd_execute, CMD_USB_EEPROM_ERASE_CONFIG ) \
229 SCPI_COMMAND("MEMory:ADC:CH#:OFFset[?]", scpi_cmd_rw_uint32_t, CMD_USB_EEPROM_OFFSET ) \
230 SCPI_COMMAND("MEMory:ADC:CH#:GAIN[?]", scpi_cmd_rw_uint32_t, CMD_USB_EEPROM_GAIN ) \
231 SCPI_COMMAND("MEMory:VOLTage:OFFset#[?]", scpi_cmd_rw_uint32_t, CMD_USB_EEPROM_VOLTAGE_OFFSET ) \
232 SCPI_COMMAND("MEMory:CURRent:OFFset#[?]", scpi_cmd_rw_uint32_t, CMD_USB_EEPROM_CURRENT_OFFSET ) \
233 SCPI_COMMAND("MEMory:VOLTage:GAIN#[?]", scpi_cmd_rw_uint32_t, CMD_USB_EEPROM_VOLTAGE_GAIN ) \
234 SCPI_COMMAND("MEMory:CURRent:GAIN#[?]", scpi_cmd_rw_uint32_t, CMD_USB_EEPROM_CURRENT_GAIN )
236 #define __AMU_EXTENDED_CMD_LIST__ \
237 SCPI_COMMAND("ADC:VOLTage:CALibrate:ZERO", scpi_cmd_execute, CMD_USB_ADC_VOLTAGE_CAL_ZERO ) \
238 SCPI_COMMAND("ADC:VOLTage:CALibrate:FULL", scpi_cmd_execute, CMD_USB_ADC_VOLTAGE_CAL_FULL ) \
239 SCPI_COMMAND("ADC:VOLTage:CALibrate:RESet", scpi_cmd_execute, CMD_USB_ADC_VOLTAGE_CAL_RESET ) \
240 SCPI_COMMAND("ADC:VOLTage:CALibrate:SAVe", scpi_cmd_execute, CMD_USB_ADC_VOLTAGE_CAL_SAVE ) \
241 SCPI_COMMAND("ADC:VOLTage:PGA[?]", scpi_cmd_rw_uint8_t, CMD_USB_ADC_VOLTAGE_PGA ) \
242 SCPI_COMMAND("ADC:VOLTage:MAX?", scpi_cmd_rw_float, CMD_USB_ADC_VOLTAGE_MAX ) \
243 SCPI_COMMAND("ADC:VOLTage:MAX:PGA#?", scpi_cmd_rw_float, CMD_USB_ADC_VOLTAGE_MAX_PGA ) \
244 SCPI_COMMAND("ADC:VOLTage:OFFset[?]", scpi_cmd_rw_int32_t, CMD_USB_ADC_VOLTAGE_OFFSET ) \
245 SCPI_COMMAND("ADC:VOLTage:GAIN[?]", scpi_cmd_rw_int32_t, CMD_USB_ADC_VOLTAGE_GAIN ) \
247 SCPI_COMMAND("ADC:CURRent:CALibrate:ZERO", scpi_cmd_execute, CMD_USB_ADC_CURRENT_CAL_ZERO ) \
248 SCPI_COMMAND("ADC:CURRent:CALibrate:FULL", scpi_cmd_execute, CMD_USB_ADC_CURRENT_CAL_FULL ) \
249 SCPI_COMMAND("ADC:CURRent:CALibrate:RESet", scpi_cmd_execute, CMD_USB_ADC_CURRENT_CAL_RESET ) \
250 SCPI_COMMAND("ADC:CURRent:CALibrate:SAVe", scpi_cmd_execute, CMD_USB_ADC_CURRENT_CAL_SAVE ) \
251 SCPI_COMMAND("ADC:CURRent:PGA[?]", scpi_cmd_rw_uint8_t, CMD_USB_ADC_CURRENT_PGA ) \
252 SCPI_COMMAND("ADC:CURRent:MAX?", scpi_cmd_rw_float, CMD_USB_ADC_CURRENT_MAX ) \
253 SCPI_COMMAND("ADC:CURRent:MAX:PGA#?", scpi_cmd_rw_float, CMD_USB_ADC_CURRENT_MAX_PGA ) \
254 SCPI_COMMAND("ADC:CURRent:OFFset[?]", scpi_cmd_rw_int32_t, CMD_USB_ADC_CURRENT_OFFSET ) \
255 SCPI_COMMAND("ADC:CURRent:GAIN[?]", scpi_cmd_rw_int32_t, CMD_USB_ADC_CURRENT_GAIN ) \
257 SCPI_COMMAND("SWEEP:META:VOC?", scpi_cmd_rw_float, AMU_REG_SWEEP_META_VOC ) \
258 SCPI_COMMAND("SWEEP:META:ISC?", scpi_cmd_rw_float, AMU_REG_SWEEP_META_ISC ) \
259 SCPI_COMMAND("SWEEP:META:TSENSor:START?", scpi_cmd_rw_float, AMU_REG_SWEEP_META_TSENSOR_START ) \
260 SCPI_COMMAND("SWEEP:META:TSENSor:END?", scpi_cmd_rw_float, AMU_REG_SWEEP_META_TSENSOR_END ) \
261 SCPI_COMMAND("SWEEP:META:FF?", scpi_cmd_rw_float, AMU_REG_SWEEP_META_FF ) \
262 SCPI_COMMAND("SWEEP:META:EFF?", scpi_cmd_rw_float, AMU_REG_SWEEP_META_EFF ) \
263 SCPI_COMMAND("SWEEP:META:VMAX?", scpi_cmd_rw_float, AMU_REG_SWEEP_META_VMAX ) \
264 SCPI_COMMAND("SWEEP:META:IMAX?", scpi_cmd_rw_float, AMU_REG_SWEEP_META_IMAX ) \
265 SCPI_COMMAND("SWEEP:META:PMAX?", scpi_cmd_rw_float, AMU_REG_SWEEP_META_PMAX ) \
266 SCPI_COMMAND("SWEEP:META:ADC?", scpi_cmd_rw_float, AMU_REG_SWEEP_META_ADC ) \
267 SCPI_COMMAND("SWEEP:META:TIMEstamp?", scpi_cmd_rw_uint32_t, AMU_REG_SWEEP_META_TIMESTAMP ) \
268 SCPI_COMMAND("SWEEP:META:CRC?", scpi_cmd_rw_uint32_t, AMU_REG_SWEEP_META_CRC ) \
270 SCPI_COMMAND("SWEEP:CONFig:TYPE[?]", scpi_cmd_rw_uint8_t, AMU_REG_SWEEP_CONFIG_TYPE ) \
271 SCPI_COMMAND("SWEEP:CONFig:NUMpoints[?]", scpi_cmd_rw_uint8_t, AMU_REG_SWEEP_CONFIG_NUM_POINTS ) \
272 SCPI_COMMAND("SWEEP:CONFig:DELAY[?]", scpi_cmd_rw_uint8_t, AMU_REG_SWEEP_CONFIG_DELAY ) \
273 SCPI_COMMAND("SWEEP:CONFig:ADC:AVERages[?]", scpi_cmd_rw_uint8_t, AMU_REG_SWEEP_CONFIG_ADC_AVERAGES ) \
274 SCPI_COMMAND("SWEEP:CONFig:RATIO[?]", scpi_cmd_rw_uint8_t, AMU_REG_SWEEP_CONFIG_RATIO ) \
275 SCPI_COMMAND("SWEEP:CONFig:POWER[?]", scpi_cmd_rw_uint8_t, AMU_REG_SWEEP_CONFIG_PWR_MODE ) \
276 SCPI_COMMAND("SWEEP:CONFig:GAIN[?]" , scpi_cmd_rw_uint8_t, AMU_REG_SWEEP_CONFIG_DAC_GAIN ) \
277 SCPI_COMMAND("SWEEP:CONFig:AVERages[?]" , scpi_cmd_rw_uint8_t, AMU_REG_SWEEP_CONFIG_AVERAGES ) \
278 SCPI_COMMAND("SWEEP:CONFig:AM0[?]", scpi_cmd_rw_float, AMU_REG_SWEEP_CONFIG_AM0 ) \
279 SCPI_COMMAND("SWEEP:CONFig:AREA[?]", scpi_cmd_rw_float, AMU_REG_SWEEP_CONFIG_AREA ) \
281 SCPI_COMMAND("SUNSensor:TL?", scpi_cmd_rw_float, AMU_REG_SUNSENSOR_TL ) \
282 SCPI_COMMAND("SUNSensor:BL?", scpi_cmd_rw_float, AMU_REG_SUNSENSOR_BL ) \
283 SCPI_COMMAND("SUNSensor:BR?", scpi_cmd_rw_float, AMU_REG_SUNSENSOR_BR ) \
284 SCPI_COMMAND("SUNSensor:TR?", scpi_cmd_rw_float, AMU_REG_SUNSENSOR_TR ) \
285 SCPI_COMMAND("SUNSensor:YAW?", scpi_cmd_rw_float, AMU_REG_SUNSENSOR_YAW ) \
286 SCPI_COMMAND("SUNSensor:PITCH?", scpi_cmd_rw_float, AMU_REG_SUNSENSOR_PITCH ) \
287 SCPI_COMMAND("SUNSensor:FIT:YAW[?]", scpi_cmd_rw_amu_coeff_t, CMD_AUX_SUNSENSOR_FIT_YAW_COEFF ) \
288 SCPI_COMMAND("SUNSensor:FIT:PITCH[?]", scpi_cmd_rw_amu_coeff_t, CMD_AUX_SUNSENSOR_FIT_PITCH_COEFF ) \
289 SCPI_COMMAND("SUNSensor:FIT:SAVE", scpi_cmd_execute, CMD_EXEC_SUNSENSOR_COEFF_SAVE ) \
290 SCPI_COMMAND("SUNSensor:HVAL[?]", scpi_cmd_rw_float, CMD_AUX_SUNSENSOR_HVAL ) \
291 SCPI_COMMAND("SUNSensor:RVAL[?]", scpi_cmd_rw_float, CMD_AUX_SUNSENSOR_RVAL ) \
292 SCPI_COMMAND("SUNSensor:THRESHold[?]", scpi_cmd_rw_float, CMD_AUX_SUNSENSOR_THRESHOLD ) \
294 SCPI_COMMAND("MEASure:ADC:CH#[:RAW]?", _scpi_cmd_measure_channel, CMD_EXEC_MEAS_CHANNEL ) \
295 SCPI_COMMAND("MEASure:ADC:VOLTage[:RAW]?", _scpi_cmd_measure_channel, CMD_MEAS_CH_VOLTAGE ) \
296 SCPI_COMMAND("MEASure:ADC:CURRent[:RAW]?", _scpi_cmd_measure_channel, CMD_MEAS_CH_CURRENT ) \
297 SCPI_COMMAND("MEASure:ADC:TSENSor[:RAW]?", _scpi_cmd_measure_channel, CMD_MEAS_CH_TSENSOR ) \
298 SCPI_COMMAND("MEASure:ADC:TSENSOR0[:RAW]?", _scpi_cmd_measure_channel, CMD_MEAS_CH_TSENSOR_0 ) \
299 SCPI_COMMAND("MEASure:ADC:TSENSOR1[:RAW]?", _scpi_cmd_measure_channel, CMD_MEAS_CH_TSENSOR_1 ) \
300 SCPI_COMMAND("MEASure:ADC:TSENSOR2[:RAW]?", _scpi_cmd_measure_channel, CMD_MEAS_CH_TSENSOR_2 ) \
301 SCPI_COMMAND("MEASure:ADC:TSENSORS[:RAW]?", _scpi_cmd_measure_tsensors, CMD_EXEC_MEAS_TSENSORS ) \
302 SCPI_COMMAND("MEASure:ADC:SSTL[:RAW]?", _scpi_cmd_measure_channel, CMD_MEAS_CH_SS_TL ) \
303 SCPI_COMMAND("MEASure:ADC:SSBL[:RAW]?", _scpi_cmd_measure_channel, CMD_MEAS_CH_SS_BL ) \
304 SCPI_COMMAND("MEASure:ADC:SSBR[:RAW]?", _scpi_cmd_measure_channel, CMD_MEAS_CH_SS_BR ) \
305 SCPI_COMMAND("MEASure:ADC:SSTR[:RAW]?", _scpi_cmd_measure_channel, CMD_MEAS_CH_SS_TR ) \
306 SCPI_COMMAND("MEASure:ADC:BIAS[:RAW]?", _scpi_cmd_measure_channel, CMD_MEAS_CH_BIAS ) \
307 SCPI_COMMAND("MEASure:ADC:OFFset[:RAW]?", _scpi_cmd_measure_channel, CMD_MEAS_CH_OFFSET ) \
308 SCPI_COMMAND("MEASure:ADC:TEMP[:RAW]?", _scpi_cmd_measure_channel, CMD_MEAS_CH_TEMP ) \
309 SCPI_COMMAND("MEASure:ADC:AVDD[:RAW]?", _scpi_cmd_measure_channel, CMD_MEAS_CH_AVDD ) \
310 SCPI_COMMAND("MEASure:ADC:IOVDD[:RAW]?", _scpi_cmd_measure_channel, CMD_MEAS_CH_IOVDD ) \
311 SCPI_COMMAND("MEASure:ADC:ALDO[:RAW]?", _scpi_cmd_measure_channel, CMD_MEAS_CH_ALDO ) \
312 SCPI_COMMAND("MEASure:ADC:DLDO[:RAW]?", _scpi_cmd_measure_channel, CMD_MEAS_CH_DLDO ) \
314 SCPI_COMMAND("SYSTem:CONFig:SAVE", scpi_cmd_execute, CMD_USB_SYSTEM_CONFIG_SAVE ) \
315 SCPI_COMMAND("SYSTem:CONFig:CURRent:GAIN[?]", scpi_cmd_rw_float, CMD_USB_SYSTEM_CONFIG_CURR_GAIN ) \
316 SCPI_COMMAND("SYSTem:CONFig:CURRent:Rsense[?]", scpi_cmd_rw_float, CMD_USB_SYSTEM_CONFIG_CURR_RSENSE ) \
317 SCPI_COMMAND("SYSTem:CONFig:VOLTage:R1[?]", scpi_cmd_rw_float, CMD_USB_SYSTEM_CONFIG_VOLT_R1 ) \
318 SCPI_COMMAND("SYSTem:CONFig:VOLTage:R2[?]", scpi_cmd_rw_float, CMD_USB_SYSTEM_CONFIG_VOLT_R2 ) \
AMU Command Definitions and SCPI Command Mappings.
void amu_scpi_init(volatile amu_device_t *dev, const char *idn1, const char *idn2, const char *idn3, const char *idn4)
scpi_result_t _scpi_write_config_ptr(scpi_t *context)
scpi_result_t scpi_cmd_execute(scpi_t *context)
scpi_result_t _scpi_cmd_measure_channel(scpi_t *context)
void amu_scpi_update(const char incomingByte)
scpi_result_t _scpi_cmd_measure_tsensors(scpi_t *context)
#define SCPI_CMD_RW_PROTOTYPE(TYPE)
scpi_result_t _scpi_cmd_led(scpi_t *context)
void amu_scpi_add_aux_commands(const scpi_command_t *aux_cmd_list)
scpi_result_t _scpi_write_meta_ptr(scpi_t *context)
scpi_result_t _scpi_cmd_query_str(scpi_t *context)
scpi_result_t _scpi_cmd_measure_active_ch(scpi_t *context)
scpi_result_t _scpi_cmd_twi_scan(scpi_t *context)
scpi_result_t _scpi_read_ptr(scpi_t *context)
int16_t _scpi_get_channelList(scpi_t *context)
void amu_scpi_update_buffer(const char *buffer, size_t len)
void amu_scpi_list_commands(void)
#define SCPI_CMD_EXEC_QRY_PROTOTYPE(TYPE)
scpi_result_t _scpi_write_sweep_ptr(scpi_t *context)
enum _scpi_result_t scpi_result_t