Files
openairinterface5g/targets/ARCH/LMSSDR/USERSPACE/LIB/lms7002m/lms7002_defines.h
T

219 lines
4.4 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
@file lms7002_defines.h
@author Lime Microsystems
@brief enumerations of available LMS7002M commands and statuses
*/
#pragma once
const int LMS_RST_DEACTIVATE = 0;
const int LMS_RST_ACTIVATE = 1;
const int LMS_RST_PULSE = 2;
enum eLMS_DEV
{
LMS_DEV_UNKNOWN,
LMS_DEV_EVB6,
LMS_DEV_DIGIGREEN,
LMS_DEV_DIGIRED,
LMS_DEV_EVB7,
LMS_DEV_ZIPPER,
LMS_DEV_SOCKETBOARD,
LMS_DEV_EVB7V2,
LMS_DEV_STREAM,
LMS_DEV_NOVENA,
LMS_DEV_DATASPARK,
LMS_DEV_RFSPARK,
LMS_DEV_LMS6002USB,
LMS_DEV_RFESPARK,
LMS_DEV_SODERA,
LMS_DEV_COUNT
};
const char LMS_DEV_NAMES[][80] =
{
"UNKNOWN",
"EVB6",
"DigiGreen",
"DigiRed",
"EVB7",
"ZIPPER",
"Socket Board",
"EVB7_v2",
"Stream",
"Novena",
"DataSpark",
"RF-Spark",
"LMS6002-USB Stick",
"RF-ESpark",
"SoDeRa",
};
static const char* GetDeviceName(const eLMS_DEV device)
{
if (LMS_DEV_UNKNOWN < device && device < LMS_DEV_COUNT)
return LMS_DEV_NAMES[device];
else
return LMS_DEV_NAMES[LMS_DEV_UNKNOWN];
}
enum eEXP_BOARD
{
EXP_BOARD_UNKNOWN,
EXP_BOARD_UNSUPPORTED,
EXP_BOARD_NO,
EXP_BOARD_MYRIAD1,
EXP_BOARD_MYRIAD2,
EXP_BOARD_MYRIAD_NOVENA,
EXP_BOARD_HPM1000,
EXP_BOARD_MYRIAD7,
EXP_BOARD_HPM7,
EXP_BOARD_COUNT
};
const char EXP_BOARD_NAMES[][80] =
{
"UNKNOWN",
"UNSUPPORTED",
"NOT AVAILABLE",
"Myriad1",
"Myriad2",
"Novena",
"HPM1000",
"Myriad7",
"HMP7"
};
static const char* GetExpansionBoardName(const eEXP_BOARD board)
{
if (EXP_BOARD_UNKNOWN < board && board < EXP_BOARD_COUNT)
return EXP_BOARD_NAMES[board];
else
return EXP_BOARD_NAMES[EXP_BOARD_UNKNOWN];
}
struct LMS64C_Info
{
unsigned char firmware;
unsigned char deviceType;
unsigned char protocol;
unsigned char hardware;
unsigned char expansionBoard;
};
enum eCMD_LMS
{
CMD_GET_INFO = 0x00,
CMD_LMS6002_RST = 0x10,
///Writes data to SI5356 synthesizer via I2C
CMD_SI5356_WR = 0x11,
///Reads data from SI5356 synthesizer via I2C
CMD_SI5356_RD = 0x12,
///Writes data to SI5351 synthesizer via I2C
CMD_SI5351_WR = 0x13,
///Reads data from SI5351 synthesizer via I2C
CMD_SI5351_RD = 0x14,
///PanelBus DVI (HDMI) Transmitter control
CMD_TFP410_WR = 0x15,
///PanelBus DVI (HDMI) Transmitter control
CMD_TFP410_RD = 0x16,
///Sets new LMS7002M chip’s RESET pin level (0, 1, pulse)
CMD_LMS7002_RST = 0x20,
///Writes data to LMS7002M chip via SPI
CMD_LMS7002_WR = 0x21,
///Reads data from LMS7002M chip via SPI
CMD_LMS7002_RD = 0x22,
///Writes data to LMS6002 chip via SPI
CMD_LMS6002_WR = 0x23,
///Reads data from LMS6002 chip via SPI
CMD_LMS6002_RD = 0x24,
CMD_LMS_LNA = 0x2A,
CMD_LMS_PA = 0x2B,
CMD_PROG_MCU = 0x2C,
///Writes data to ADF4002 chip via SPI
CMD_ADF4002_WR = 0x31,
CMD_USB_FIFO_RST = 0x40,
CMD_PE636040_WR = 0x41,
CMD_PE636040_RD = 0x42,
CMD_GPIO_WR = 0x51,
CMD_GPIO_RD = 0x52,
CMD_ALTERA_FPGA_GW_WR = 0x53,
CMD_ALTERA_FPGA_GW_RD = 0x54,
CMD_BRDSPI_WR = 0x55,//16 bit spi for stream, dataspark control
CMD_BRDSPI_RD = 0x56,//16 bit spi for stream, dataspark control
CMD_BRDSPI8_WR = 0x57, //8 + 8 bit spi for stream, dataspark control
CMD_BRDSPI8_RD = 0x58, //8 + 8 bit spi for stream, dataspark control
CMD_BRDCONF_WR = 0x5D, //write config data to board
CMD_BRDCONF_RD = 0x5E, //read config data from board
CMD_ANALOG_VAL_WR = 0x61, //write analog value
CMD_ANALOG_VAL_RD = 0x62, //read analog value
CMD_MYRIAD_RST = 0x80,
CMD_MYRIAD_WR = 0x81,
CMD_MYRIAD_RD = 0x82,
CMD_MYRIAD_PROG = 0x8C
};
enum eCMD_STATUS
{
STATUS_UNDEFINED,
STATUS_COMPLETED_CMD,
STATUS_UNKNOWN_CMD,
STATUS_BUSY_CMD,
STATUS_MANY_BLOCKS_CMD,
STATUS_ERROR_CMD,
STATUS_WRONG_ORDER_CMD,
STATUS_RESOURCE_DENIED_CMD,
STATUS_COUNT
};
static const char status_text[][32]=
{
"Undefined/Failure",
"Completed",
"Unknown command",
"Busy",
"Too many blocks",
"Error",
"Wrong order",
"Resource denied"
};
static const char* status2string(const int status)
{
if(status >= 0 && status < STATUS_COUNT)
return status_text[status];
else
return "Unknown status";
}
enum eADC_UNITS
{
RAW,
VOLTAGE,
CURRENT,
RESISTANCE,
POWER,
TEMPERATURE,
ADC_UNITS_COUNT
};
static const char adc_units_text[][8] = {"", "V", "A", "Ohm", "W", "C"};
static const char* adcUnits2string(const unsigned units)
{
if (units < ADC_UNITS_COUNT)
return adc_units_text[units];
else
return " unknown";
}