10#pragma message(AMULIBC_CONFIG_MESSAGE)
17#ifdef __AMU_USE_SCPI__
47 .watchdog_kick = NULL,
48 .hardware_reset = NULL,
77#ifdef __AMU_USE_SCPI__
97int8_t
amu_dev_transfer(uint8_t address, uint8_t reg, uint8_t* data,
size_t len, uint8_t rw) {
98 return amu_device.transfer(address, reg, data, len, rw);
190 for (uint8_t i = startAddress; i < endAddress; i++) {
312 memset(data, 0, len);
421 default:
return NULL;
break;
434char* amu_dev_setDeviceTypeStr(
const char* deviceTypeStr) {
439char* amu_dev_setManufacturerStr(
const char* manufacturerStr) {
444char* amu_dev_setSerialNumStr(
const char* serialNumStr) {
449char* amu_dev_setFirmwareStr(
const char* firmwareStr) {
454uint16_t amu_reg_get_length(uint8_t reg) {
AMU Command Definitions and SCPI Command Mappings.
volatile amu_device_t amu_device
uint8_t amu_get_device_address(uint8_t deviceNum)
Device addresses are used for TODO.
int8_t amu_dev_transfer(uint8_t address, uint8_t reg, uint8_t *data, size_t len, uint8_t rw)
Transfering... TODO.
int8_t amu_get_num_devices()
int8_t amu_dev_query_command(uint8_t address, CMD_t command, uint8_t commandDataLen, uint8_t responseLength)
TODO.
uint8_t _amu_route_command(uint8_t deviceNum, CMD_t cmd, size_t transferLen, bool query)
TODO.
void _amu_transfer_write(size_t offset, void *data, size_t len)
TODO: explain the transfer part of a transfer write.
volatile uint8_t * amu_dev_get_transfer_reg_ptr(void)
static uint8_t amu_num_devices
uint8_t amu_dev_busy(uint8_t address)
Checks to see if the AMU device is busy.
static uint8_t amu_dev_initialized
int8_t amu_dev_send_command(uint8_t address, CMD_t command)
Sends a command to an AMU device.
amu_data_reg_t * amu_get_register_ptr(uint8_t reg)
static volatile uint8_t amu_transfer_reg[(40 *sizeof(float))]
int8_t amu_dev_send_command_data(uint8_t address, CMD_t command, uint8_t len)
Move local transfer reg to remote transfer reg, then send command.
volatile amu_device_t * amu_dev_init(amu_transfer_fptr_t transfer_ptr)
TODO.
int8_t amu_get_num_connected_devices()
static uint8_t amu_device_addresses[16]
uint8_t amu_scan_for_devices(uint8_t startAddress, uint8_t endAddress)
Scans for any devices that might be connected in order to identify them.
void _amu_transfer_read(size_t offset, void *data, size_t len)
TODO: explain the transfer part of a transfer read.
static uint16_t transfer_reg_data_len
#define AMU_MANUFACTURER_STR_LEN
char dev_deviceType_str[10]
#define AMU_SERIALNUM_STR_LEN
char dev_serialNumber_str[26]
char dev_manufacturer_str[20]
#define AMU_FIRMWARE_STR_LEN
static void amu_command_complete(void)
#define AMU_FIRMWARE_DEFAULT_STR
#define AMU_DEVICE_DEFAULT_STR
#define AMU_DEVICE_STR_LEN
#define AMU_SERIALNUM_DEFAULT_STR
#define AMU_TWI_TRANSFER_READ
#define AMU_MAX_CONNECTED_DEVICES
#define AMU_MANUFACTURER_DEFAULT_STR
#define AMU_TWI_TRANSFER_WRITE
#define AMU_TWI_ALLCALL_ADDRESS
char dev_firmware_str[16]
uint16_t amu_regs_get_register_length(uint8_t reg)
volatile amu_twi_regs_t * amu_regs_get_twi_regs_ptr(void)
@ AMU_REG_SYSTEM_AMU_STATUS
@ AMU_REG_SYSTEM_TSENSOR_NUM
@ AMU_REG_SYSTEM_ADC_ACTIVE_CHANNELS
@ AMU_REG_SYSTEM_TSENSOR_TYPE
@ AMU_REG_SYSTEM_STATUS_HRADC
@ AMU_REG_SYSTEM_TWI_STATUS
@ AMU_REG_SYSTEM_HARDWARE_REVISION
@ AMU_REG_DATA_PTR_VOLTAGE
@ AMU_REG_DATA_PTR_PRESSURE
@ AMU_REG_DATA_PTR_SWEEP_CONFIG
@ AMU_REG_DATA_PTR_SS_YAW
@ AMU_REG_DATA_PTR_CURRENT
@ AMU_REG_DATA_PTR_TIMESTAMP
@ AMU_REG_DATA_PTR_SWEEP_META
@ AMU_REG_DATA_PTR_SS_PITCH
@ AMU_REG_DATA_PTR_SUNSENSOR
@ AMU_REG_SWEEP_META_TIMESTAMP
@ AMU_REG_SWEEP_META_IMAX
@ AMU_REG_SWEEP_META_PMAX
@ AMU_REG_SWEEP_META_TSENSOR_START
@ AMU_REG_SWEEP_META_VMAX
@ AMU_REG_SWEEP_META_TSENSOR_END
@ AMU_REG_SWEEP_CONFIG_DAC_GAIN
@ AMU_REG_SWEEP_CONFIG_ADC_AVERAGES
@ AMU_REG_SWEEP_CONFIG_NUM_POINTS
@ AMU_REG_SWEEP_CONFIG_DELAY
@ AMU_REG_SWEEP_CONFIG_AVERAGES
@ AMU_REG_SWEEP_CONFIG_AREA
@ AMU_REG_SWEEP_CONFIG_PWR_MODE
@ AMU_REG_SWEEP_CONFIG_AM0
@ AMU_REG_SWEEP_CONFIG_RATIO
@ AMU_REG_SWEEP_CONFIG_TYPE
@ AMU_REG_DUT_SERIAL_NUMBER
@ AMU_REG_DUT_MANUFACTURER
@ AMU_REG_DUT_INTERCONNECT
@ AMU_REG_SUNSENSOR_PITCH
@ AMU_REG_ADC_DATA_OFFSET
@ AMU_REG_ADC_DATA_TSENSOR_1
@ AMU_REG_ADC_DATA_TSENSOR_2
@ AMU_REG_ADC_DATA_VOLTAGE
@ AMU_REG_ADC_DATA_CURRENT
@ AMU_REG_ADC_DATA_TSENSOR_0
volatile uint8_t amu_data_reg_t
int8_t(* amu_transfer_fptr_t)(uint8_t address, uint8_t reg, uint8_t *data, size_t len, uint8_t read)
#define AMU_TRANSFER_REG_SIZE
#define AMU_NO_ADDRESS_MATCH
#define AMU_DEVICE_END_LIST
@ CMD_SYSTEM_NO_CMD
No operation command - Communication test.
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)