//
// Copyright 2017 Ettus Research (National Instruments)
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see .
//
#include "adi/common.h"
#include
#include
#include
//#include
#define CMB_TRACE_FUNCTIONS 0
#if CMB_TRACE_FUNCTIONS == 1
#define CMB_TRACE_FUNCTION std::cout << __FUNCTION__ << std::endl;
#else
#define CMB_TRACE_FUNCTION
#endif
/* close hardware pointers */
commonErr_t CMB_closeHardware(void)
{
CMB_TRACE_FUNCTION;
return COMMONERR_OK;
}
/* GPIO function */
commonErr_t CMB_setGPIO(uint32_t GPIO)
{
CMB_TRACE_FUNCTION;
return COMMONERR_OK;
}
/* hardware reset function */
commonErr_t CMB_hardReset(uint8_t spiChipSelectIndex)
{
CMB_TRACE_FUNCTION;
//std::cout << "Hard reset chip select " << spiChipSelectIndex << std::endl;
return COMMONERR_OK;
}
/* SPI read/write functions */
/* allows the platform HAL to work with devices with various SPI settings */
commonErr_t CMB_setSPIOptions(spiSettings_t *spiSettings)
{
CMB_TRACE_FUNCTION;
return COMMONERR_OK;
}
/* value of 0 deasserts all chip selects */
commonErr_t CMB_setSPIChannel(uint16_t chipSelectIndex)
{
CMB_TRACE_FUNCTION;
return COMMONERR_OK;
}
/* single SPI byte write function */
commonErr_t CMB_SPIWriteByte(spiSettings_t *spiSettings, uint16_t addr, uint8_t data)
{
mpm_spiSettings_t *mpm_spi = mpm_spiSettings_t::make(spiSettings);
try {
mpm_spi->spi_iface->write_byte(addr, data);
return COMMONERR_OK;
} catch (const std::exception &e) {
/* ... error handling ... */
}
return COMMONERR_FAILED;
}
commonErr_t CMB_SPIWriteBytes(spiSettings_t *spiSettings, uint16_t *addr, uint8_t *data, uint32_t count)
{
mpm_spiSettings_t *mpm_spi = mpm_spiSettings_t::make(spiSettings);
try {
mpm_spi->spi_iface->write_bytes(addr, data, count);
return COMMONERR_OK;
} catch (const std::exception &e) {
/* ... error handling ... */
}
return COMMONERR_FAILED;
}
/* single SPI byte read function */
commonErr_t CMB_SPIReadByte (spiSettings_t *spiSettings, uint16_t addr, uint8_t *readdata)
{
mpm_spiSettings_t *mpm_spi = mpm_spiSettings_t::make(spiSettings);
try {
*readdata = mpm_spi->spi_iface->read_byte(addr);
return COMMONERR_OK;
} catch (const std::exception &e) {
/* ... error handling ... */
}
return COMMONERR_FAILED;
}
/* write a field in a single register */
commonErr_t CMB_SPIWriteField(
spiSettings_t *spiSettings,
uint16_t addr, uint8_t field_val,
uint8_t mask, uint8_t start_bit
) {
mpm_spiSettings_t *mpm_spi = mpm_spiSettings_t::make(spiSettings);
try {
mpm_spi->spi_iface->write_field(addr, field_val, mask, start_bit);
return COMMONERR_OK;
} catch (const std::exception &e) {
/* ... error handling ... */
}
return COMMONERR_FAILED;
}
/* read a field in a single register */
commonErr_t CMB_SPIReadField(
spiSettings_t *spiSettings,
uint16_t addr, uint8_t *field_val,
uint8_t mask, uint8_t start_bit
) {
mpm_spiSettings_t *mpm_spi = mpm_spiSettings_t::make(spiSettings);
try {
*field_val = mpm_spi->spi_iface->read_field(addr, mask, start_bit);
return COMMONERR_OK;
} catch (const std::exception &e) {
/* ... error handling ... */
}
return COMMONERR_FAILED;
}
/* platform timer functions */
commonErr_t CMB_wait_ms(uint32_t time_ms)
{
CMB_TRACE_FUNCTION;
return COMMONERR_OK;
}
commonErr_t CMB_wait_us(uint32_t time_us)
{
CMB_TRACE_FUNCTION;
return COMMONERR_OK;
}
commonErr_t CMB_setTimeout_ms(uint32_t timeOut_ms)
{
CMB_TRACE_FUNCTION;
return COMMONERR_OK;
}
commonErr_t CMB_setTimeout_us(uint32_t timeOut_us)
{
CMB_TRACE_FUNCTION;
return COMMONERR_OK;
}
commonErr_t CMB_hasTimeoutExpired()
{
CMB_TRACE_FUNCTION;
return COMMONERR_FAILED;
}
/* platform logging functions */
commonErr_t CMB_openLog(const char *filename)
{
CMB_TRACE_FUNCTION;
return COMMONERR_OK;
}
commonErr_t CMB_closeLog(void)
{
CMB_TRACE_FUNCTION;
return COMMONERR_OK;
}
commonErr_t CMB_writeToLog(ADI_LOGLEVEL level, uint8_t deviceIndex, uint32_t errorCode, const char *comment)
{
CMB_TRACE_FUNCTION;
std::cout << level << " " << errorCode << " " << comment << std::endl;
return COMMONERR_OK;
}
commonErr_t CMB_flushLog(void)
{
CMB_TRACE_FUNCTION;
return COMMONERR_OK;
}
/* platform FPGA AXI register read/write functions */
commonErr_t CMB_regRead(uint32_t offset, uint32_t *data)
{
CMB_TRACE_FUNCTION;
return COMMONERR_OK;
}
commonErr_t CMB_regWrite(uint32_t offset, uint32_t data)
{
CMB_TRACE_FUNCTION;
return COMMONERR_OK;
}
/* platform DDR3 memory read/write functions */
commonErr_t CMB_memRead(uint32_t offset, uint32_t *data, uint32_t len)
{
CMB_TRACE_FUNCTION;
return COMMONERR_OK;
}
commonErr_t CMB_memWrite(uint32_t offset, uint32_t *data, uint32_t len)
{
CMB_TRACE_FUNCTION;
return COMMONERR_OK;
}