ezradio_api_lib_add.c
00001
00034 #include <stdint.h>
00035 #include <stdarg.h>
00036 #include "em_gpio.h"
00037 #include "gpiointerrupt.h"
00038
00039 #include "ezradio_cmd.h"
00040 #include "ezradio_prop.h"
00041 #include "ezradio_comm.h"
00042 #include "ezradio_hal.h"
00043 #include "ezradio_api_lib.h"
00044 #include "ezradio_api_lib_add.h"
00045
00050 EZRADIO_ConfigRet_t ezradio_configuration_init(const uint8_t* pSetPropCmd)
00051 {
00052 uint8_t col;
00053 uint8_t response;
00054 uint8_t numOfBytes;
00055
00056
00057 while (*pSetPropCmd != 0x00)
00058 {
00059
00060
00061
00062
00063
00064 numOfBytes = *pSetPropCmd++;
00065
00066 if (numOfBytes > 16u)
00067 {
00068
00069 return EZRADIO_CONFIG_COMMAND_ERROR;
00070 }
00071
00072 for (col = 0u; col < numOfBytes; col++)
00073 {
00074 ezradioCmd[col] = *pSetPropCmd;
00075 pSetPropCmd++;
00076 }
00077
00078 if (ezradio_comm_SendCmdGetResp(numOfBytes, ezradioCmd, 1, &response) != 0xFF)
00079 {
00080
00081 return EZRADIO_CONFIG_CTS_TIMEOUT;
00082 }
00083
00084 if (ezradio_hal_NirqLevel() == 0)
00085 {
00086
00087 ezradio_get_int_status(0, 0, 0);
00088 if (ezradioReply.GET_INT_STATUS.CHIP_PEND & EZRADIO_CMD_GET_CHIP_STATUS_REP_CHIP_PEND_CMD_ERROR_PEND_MASK)
00089 {
00090 return EZRADIO_CONFIG_COMMAND_ERROR;
00091 }
00092 }
00093 }
00094
00095 return EZRADIO_CONFIG_SUCCESS;
00096 }
00097
00098 #ifdef EZRADIO_DRIVER_EXTENDED_SUPPORT
00099
00100
00101 #ifdef EZRADIO_DRIVER_FULL_SUPPORT
00102
00103
00109 void ezradio_get_adc_reading( uint8_t adc_en, uint8_t adc_cfg )
00110 {
00111 ezradioCmd[0] = EZRADIO_CMD_ID_GET_ADC_READING;
00112 ezradioCmd[1] = adc_en;
00113 ezradioCmd[1] = adc_cfg;
00114
00115 ezradio_comm_SendCmdGetResp( EZRADIO_CMD_ARG_COUNT_GET_ADC_READING,
00116 ezradioCmd,
00117 EZRADIO_CMD_REPLY_COUNT_GET_ADC_READING,
00118 ezradioCmd );
00119
00120 ezradioReply.GET_ADC_READING.GPIO_ADC = ((uint16_t)ezradioCmd[0] << 8) & 0xFF00;
00121 ezradioReply.GET_ADC_READING.GPIO_ADC |= (uint16_t)ezradioCmd[1] & 0x00FF;
00122 ezradioReply.GET_ADC_READING.BATTERY_ADC = ((uint16_t)ezradioCmd[2] << 8) & 0xFF00;
00123 ezradioReply.GET_ADC_READING.BATTERY_ADC |= (uint16_t)ezradioCmd[3] & 0x00FF;
00124 ezradioReply.GET_ADC_READING.TEMP_ADC = ((uint16_t)ezradioCmd[4] << 8) & 0xFF00;
00125 ezradioReply.GET_ADC_READING.TEMP_ADC |= (uint16_t)ezradioCmd[5] & 0x00FF;
00126 }
00127
00136 void ezradio_ircal(uint8_t searching_step_size, uint8_t searching_rssi_avg, uint8_t rx_chain_setting1, uint8_t rx_chain_setting2)
00137 {
00138 ezradioCmd[0] = EZRADIO_CMD_ID_IRCAL;
00139 ezradioCmd[1] = searching_step_size;
00140 ezradioCmd[2] = searching_rssi_avg;
00141 ezradioCmd[3] = rx_chain_setting1;
00142 ezradioCmd[4] = rx_chain_setting2;
00143
00144 ezradio_comm_SendCmd( EZRADIO_CMD_ARG_COUNT_IRCAL, ezradioCmd);
00145 }
00146
00153 void ezradio_ircal_manual(uint8_t ircal_amp, uint8_t ircal_ph)
00154 {
00155 ezradioCmd[0] = EZRADIO_CMD_ID_IRCAL_MANUAL;
00156 ezradioCmd[1] = ircal_amp;
00157 ezradioCmd[2] = ircal_ph;
00158
00159 ezradio_comm_SendCmdGetResp( EZRADIO_CMD_ARG_COUNT_IRCAL_MANUAL,
00160 ezradioCmd,
00161 EZRADIO_CMD_REPLY_COUNT_IRCAL_MANUAL,
00162 ezradioCmd );
00163
00164 ezradioReply.IRCAL_MANUAL.IRCAL_AMP_REPLY = ezradioCmd[0];
00165 ezradioReply.IRCAL_MANUAL.IRCAL_PH_REPLY = ezradioCmd[1];
00166 }
00167
00180 void ezradio_tx_hop(uint8_t inte, uint8_t frac2, uint8_t frac1, uint8_t frac0, uint8_t vco_cnt1, uint8_t vco_cnt0, uint8_t pll_settle_time1, uint8_t pll_settle_time0)
00181 {
00182 ezradioCmd[0] = EZRADIO_CMD_ID_TX_HOP;
00183 ezradioCmd[1] = inte;
00184 ezradioCmd[2] = frac2;
00185 ezradioCmd[3] = frac1;
00186 ezradioCmd[4] = frac0;
00187 ezradioCmd[5] = vco_cnt1;
00188 ezradioCmd[6] = vco_cnt0;
00189 ezradioCmd[7] = pll_settle_time1;
00190 ezradioCmd[8] = pll_settle_time0;
00191
00192 ezradio_comm_SendCmd( EZRADIO_CMD_ARG_COUNT_TX_HOP, ezradioCmd );
00193 }
00194
00205 void ezradio_rx_hop(uint8_t inte, uint8_t frac2, uint8_t frac1, uint8_t frac0, uint8_t vco_cnt1, uint8_t vco_cnt0)
00206 {
00207 ezradioCmd[0] = EZRADIO_CMD_ID_RX_HOP;
00208 ezradioCmd[1] = inte;
00209 ezradioCmd[2] = frac2;
00210 ezradioCmd[3] = frac1;
00211 ezradioCmd[4] = frac0;
00212 ezradioCmd[5] = vco_cnt1;
00213 ezradioCmd[6] = vco_cnt0;
00214
00215 ezradio_comm_SendCmd( EZRADIO_CMD_ARG_COUNT_RX_HOP, ezradioCmd );
00216 }
00217
00218 #endif
00219
00220 #endif