ezradio_api_lib.c

Go to the documentation of this file.
00001 /**************************************************************************/
00034 #include <stdint.h>
00035 #include <stdarg.h>
00036 #include "em_gpio.h"
00037 #include "gpiointerrupt.h"
00038 #include "ustimer.h"
00039 
00040 #include "ezradio_cmd.h"
00041 #include "ezradio_prop.h"
00042 #include "ezradio_comm.h"
00043 #include "ezradio_hal.h"
00044 #include "ezradio_api_lib.h"
00045 
00046 /* EZRadio command reply union */
00047 union ezradio_cmd_reply_union ezradioReply;
00048 
00049 /* EZRadio command buffer */
00050 uint8_t ezradioCmd[16u];
00051 
00059 void ezradio_reset(void)
00060 {
00061     /* Initialize ustimer */
00062     USTIMER_Init();
00063     /* Put radio in shutdown */
00064     ezradio_hal_AssertShutdown();
00065     /* Delay for 20us */
00066     USTIMER_Delay( 10u );
00067     /* Release radio from shutdown */
00068     ezradio_hal_DeassertShutdown();
00069     /* Delay for 100us */
00070     USTIMER_Delay( 100u );
00071     /* Clear CTS signal. */
00072     ezradio_comm_ClearCTS();
00073     /* Deinit ustimer */
00074     USTIMER_DeInit();
00075 }
00076 
00081 void ezradio_power_up(uint8_t boot_options, uint8_t xtal_options, uint32_t xo_freq)
00082 {
00083     ezradioCmd[0] = EZRADIO_CMD_ID_POWER_UP;
00084     ezradioCmd[1] = boot_options;
00085     ezradioCmd[2] = xtal_options;
00086     ezradioCmd[3] = (uint8_t)(xo_freq >> 24);
00087     ezradioCmd[4] = (uint8_t)(xo_freq >> 16);
00088     ezradioCmd[5] = (uint8_t)(xo_freq >> 8);
00089     ezradioCmd[6] = (uint8_t)(xo_freq);
00090 
00091     ezradio_comm_SendCmd( EZRADIO_CMD_ARG_COUNT_POWER_UP, ezradioCmd );
00092 }
00093 
00097 void ezradio_part_info(void)
00098 {
00099     ezradioCmd[0] = EZRADIO_CMD_ID_PART_INFO;
00100 
00101     ezradio_comm_SendCmdGetResp( EZRADIO_CMD_ARG_COUNT_PART_INFO,
00102                               ezradioCmd,
00103                               EZRADIO_CMD_REPLY_COUNT_PART_INFO,
00104                               ezradioCmd );
00105 
00106     ezradioReply.PART_INFO.CHIPREV         = ezradioCmd[0];
00107     ezradioReply.PART_INFO.PART            = ((uint16_t)ezradioCmd[1] << 8) & 0xFF00;
00108     ezradioReply.PART_INFO.PART           |= (uint16_t)ezradioCmd[2] & 0x00FF;
00109     ezradioReply.PART_INFO.PBUILD          = ezradioCmd[3];
00110     ezradioReply.PART_INFO.ID              = ((uint16_t)ezradioCmd[4] << 8) & 0xFF00;
00111     ezradioReply.PART_INFO.ID             |= (uint16_t)ezradioCmd[5] & 0x00FF;
00112     ezradioReply.PART_INFO.CUSTOMER        = ezradioCmd[6];
00113     ezradioReply.PART_INFO.ROMID           = ezradioCmd[7];
00114 }
00115 
00122 void ezradio_start_tx(uint8_t channel, uint8_t condition, uint16_t tx_len)
00123 {
00124     ezradioCmd[0] = EZRADIO_CMD_ID_START_TX;
00125     ezradioCmd[1] = channel;
00126     ezradioCmd[2] = condition;
00127     ezradioCmd[3] = (uint8_t)(tx_len >> 8);
00128     ezradioCmd[4] = (uint8_t)(tx_len);
00129     ezradioCmd[5] = 0x00;
00130 
00131     // Don't repeat the packet, 
00132     // ie. transmit the packet only once
00133     ezradioCmd[6] = 0x00;
00134 
00135     ezradio_comm_SendCmd( EZRADIO_CMD_ARG_COUNT_START_TX, ezradioCmd );
00136 }
00137 
00148  void ezradio_start_rx(uint8_t channel, uint8_t condition, uint16_t rx_len, uint8_t next_state1, uint8_t next_state2, uint8_t next_state3)
00149 {
00150     ezradioCmd[0] = EZRADIO_CMD_ID_START_RX;
00151     ezradioCmd[1] = channel;
00152     ezradioCmd[2] = condition;
00153     ezradioCmd[3] = (uint8_t)(rx_len >> 8);
00154     ezradioCmd[4] = (uint8_t)(rx_len);
00155     ezradioCmd[5] = next_state1;
00156     ezradioCmd[6] = next_state2;
00157     ezradioCmd[7] = next_state3;
00158 
00159     ezradio_comm_SendCmd( EZRADIO_CMD_ARG_COUNT_START_RX, ezradioCmd );
00160 }
00161 
00169 void ezradio_get_int_status(uint8_t ph_clr_pend, uint8_t modem_clr_pend, uint8_t chip_clr_pend)
00170 {
00171     ezradioCmd[0] = EZRADIO_CMD_ID_GET_INT_STATUS;
00172     ezradioCmd[1] = ph_clr_pend;
00173     ezradioCmd[2] = modem_clr_pend;
00174     ezradioCmd[3] = chip_clr_pend;
00175 
00176     ezradio_comm_SendCmdGetResp( EZRADIO_CMD_ARG_COUNT_GET_INT_STATUS,
00177                               ezradioCmd,
00178                               EZRADIO_CMD_REPLY_COUNT_GET_INT_STATUS,
00179                               ezradioCmd );
00180 
00181     ezradioReply.GET_INT_STATUS.INT_PEND       = ezradioCmd[0];
00182     ezradioReply.GET_INT_STATUS.INT_STATUS     = ezradioCmd[1];
00183     ezradioReply.GET_INT_STATUS.PH_PEND        = ezradioCmd[2];
00184     ezradioReply.GET_INT_STATUS.PH_STATUS      = ezradioCmd[3];
00185     ezradioReply.GET_INT_STATUS.MODEM_PEND     = ezradioCmd[4];
00186     ezradioReply.GET_INT_STATUS.MODEM_STATUS   = ezradioCmd[5];
00187     ezradioReply.GET_INT_STATUS.CHIP_PEND      = ezradioCmd[6];
00188     ezradioReply.GET_INT_STATUS.CHIP_STATUS    = ezradioCmd[7];
00189 }
00190 
00203 void ezradio_gpio_pin_cfg(uint8_t gpio0, uint8_t gpio1, uint8_t gpio2, uint8_t gpio3, uint8_t nirq, uint8_t sdo, uint8_t gen_config)
00204 {
00205     ezradioCmd[0] = EZRADIO_CMD_ID_GPIO_PIN_CFG;
00206     ezradioCmd[1] = gpio0;
00207     ezradioCmd[2] = gpio1;
00208     ezradioCmd[3] = gpio2;
00209     ezradioCmd[4] = gpio3;
00210     ezradioCmd[5] = nirq;
00211     ezradioCmd[6] = sdo;
00212     ezradioCmd[7] = gen_config;
00213 
00214     ezradio_comm_SendCmdGetResp( EZRADIO_CMD_ARG_COUNT_GPIO_PIN_CFG,
00215                               ezradioCmd,
00216                               EZRADIO_CMD_REPLY_COUNT_GPIO_PIN_CFG,
00217                               ezradioCmd );
00218 
00219     ezradioReply.GPIO_PIN_CFG.gpIO[0]        = ezradioCmd[0];
00220     ezradioReply.GPIO_PIN_CFG.gpIO[1]        = ezradioCmd[1];
00221     ezradioReply.GPIO_PIN_CFG.gpIO[2]        = ezradioCmd[2];
00222     ezradioReply.GPIO_PIN_CFG.gpIO[3]        = ezradioCmd[3];
00223     ezradioReply.GPIO_PIN_CFG.NIRQ         = ezradioCmd[4];
00224     ezradioReply.GPIO_PIN_CFG.SDO          = ezradioCmd[5];
00225     ezradioReply.GPIO_PIN_CFG.GEN_CONFIG   = ezradioCmd[6];
00226 }
00227 
00236 #ifdef __C51__
00237 #pragma maxargs (13)  /* allow 13 bytes for parameters */
00238 #endif
00239 void ezradio_set_property( uint8_t group, uint8_t num_props, uint8_t start_prop, ... )
00240 {
00241     va_list argList;
00242     uint8_t cmdIndex;
00243 
00244     ezradioCmd[0] = EZRADIO_CMD_ID_SET_PROPERTY;
00245     ezradioCmd[1] = group;
00246     ezradioCmd[2] = num_props;
00247     ezradioCmd[3] = start_prop;
00248 
00249     va_start (argList, start_prop);
00250     cmdIndex = 4;
00251     while(num_props--)
00252     {
00253         ezradioCmd[cmdIndex] = (uint8_t)va_arg (argList, int);
00254         cmdIndex++;
00255     }
00256     va_end(argList);
00257 
00258     ezradio_comm_SendCmd( cmdIndex, ezradioCmd );
00259 }
00260 
00266 void ezradio_change_state(uint8_t next_state1)
00267 {
00268     ezradioCmd[0] = EZRADIO_CMD_ID_CHANGE_STATE;
00269     ezradioCmd[1] = next_state1;
00270 
00271     ezradio_comm_SendCmd( EZRADIO_CMD_ARG_COUNT_CHANGE_STATE, ezradioCmd );
00272 }
00273 
00274 #ifdef EZRADIO_DRIVER_EXTENDED_SUPPORT
00275 /* Extended driver support functions */
00276 
00280 void ezradio_nop(void)
00281 {
00282     ezradioCmd[0] = EZRADIO_CMD_ID_NOP;
00283 
00284     ezradio_comm_SendCmd( EZRADIO_CMD_ARG_COUNT_NOP, ezradioCmd );
00285 }
00286 
00293 void ezradio_fifo_info(uint8_t fifo)
00294 {
00295     ezradioCmd[0] = EZRADIO_CMD_ID_FIFO_INFO;
00296     ezradioCmd[1] = fifo;
00297 
00298     ezradio_comm_SendCmdGetResp( EZRADIO_CMD_ARG_COUNT_FIFO_INFO,
00299                               ezradioCmd,
00300                               EZRADIO_CMD_REPLY_COUNT_FIFO_INFO,
00301                               ezradioCmd );
00302 
00303     ezradioReply.FIFO_INFO.RX_FIFO_COUNT   = ezradioCmd[0];
00304     ezradioReply.FIFO_INFO.TX_FIFO_SPACE   = ezradioCmd[1];
00305 }
00306 
00313 void ezradio_write_tx_fifo(uint8_t numBytes, uint8_t* pTxData)
00314 {
00315     ezradio_comm_WriteData( EZRADIO_CMD_ID_WRITE_TX_FIFO, 0, numBytes, pTxData );
00316 }
00317 
00324 void ezradio_read_rx_fifo(uint8_t numBytes, uint8_t* pRxData)
00325 {
00326     ezradio_comm_ReadData( EZRADIO_CMD_ID_READ_RX_FIFO, 0, numBytes, pRxData );
00327 }
00328 
00336 void ezradio_get_property(uint8_t group, uint8_t num_props, uint8_t start_prop)
00337 {
00338     ezradioCmd[0] = EZRADIO_CMD_ID_GET_PROPERTY;
00339     ezradioCmd[1] = group;
00340     ezradioCmd[2] = num_props;
00341     ezradioCmd[3] = start_prop;
00342 
00343     ezradio_comm_SendCmdGetResp( EZRADIO_CMD_ARG_COUNT_GET_PROPERTY,
00344                               ezradioCmd,
00345                               ezradioCmd[2],
00346                               ezradioCmd );
00347 
00348     ezradioReply.GET_PROPERTY.DATA[0]   = ezradioCmd[0];
00349     ezradioReply.GET_PROPERTY.DATA[1]   = ezradioCmd[1];
00350     ezradioReply.GET_PROPERTY.DATA[2]   = ezradioCmd[2];
00351     ezradioReply.GET_PROPERTY.DATA[3]   = ezradioCmd[3];
00352     ezradioReply.GET_PROPERTY.DATA[4]   = ezradioCmd[4];
00353     ezradioReply.GET_PROPERTY.DATA[5]   = ezradioCmd[5];
00354     ezradioReply.GET_PROPERTY.DATA[6]   = ezradioCmd[6];
00355     ezradioReply.GET_PROPERTY.DATA[7]   = ezradioCmd[7];
00356     ezradioReply.GET_PROPERTY.DATA[8]   = ezradioCmd[8];
00357     ezradioReply.GET_PROPERTY.DATA[9]   = ezradioCmd[9];
00358     ezradioReply.GET_PROPERTY.DATA[10]  = ezradioCmd[10];
00359     ezradioReply.GET_PROPERTY.DATA[11]  = ezradioCmd[11];
00360     ezradioReply.GET_PROPERTY.DATA[12]  = ezradioCmd[12];
00361     ezradioReply.GET_PROPERTY.DATA[13]  = ezradioCmd[13];
00362     ezradioReply.GET_PROPERTY.DATA[14]  = ezradioCmd[14];
00363     ezradioReply.GET_PROPERTY.DATA[15]  = ezradioCmd[15];
00364 }
00365 
00366 #ifdef EZRADIO_DRIVER_FULL_SUPPORT
00367 /* Full driver support functions */
00368 
00372 void ezradio_func_info(void)
00373 {
00374     ezradioCmd[0] = EZRADIO_CMD_ID_FUNC_INFO;
00375 
00376     ezradio_comm_SendCmdGetResp( EZRADIO_CMD_ARG_COUNT_FUNC_INFO,
00377                               ezradioCmd,
00378                               EZRADIO_CMD_REPLY_COUNT_FUNC_INFO,
00379                               ezradioCmd );
00380 
00381     ezradioReply.FUNC_INFO.REVEXT          = ezradioCmd[0];
00382     ezradioReply.FUNC_INFO.REVBRANCH       = ezradioCmd[1];
00383     ezradioReply.FUNC_INFO.REVINT          = ezradioCmd[2];
00384     ezradioReply.FUNC_INFO.FUNC            = ezradioCmd[5];
00385 }
00386 
00392 void ezradio_frr_a_read(uint8_t respByteCount)
00393 {
00394     ezradio_comm_ReadData(EZRADIO_CMD_ID_FRR_A_READ,
00395                             0,
00396                         respByteCount,
00397                         ezradioCmd);
00398 
00399     ezradioReply.FRR_A_READ.FRR_A_VALUE = ezradioCmd[0];
00400     ezradioReply.FRR_A_READ.FRR_B_VALUE = ezradioCmd[1];
00401     ezradioReply.FRR_A_READ.FRR_C_VALUE = ezradioCmd[2];
00402     ezradioReply.FRR_A_READ.FRR_D_VALUE = ezradioCmd[3];
00403 }
00404 
00410 void ezradio_frr_b_read(uint8_t respByteCount)
00411 {
00412     ezradio_comm_ReadData(EZRADIO_CMD_ID_FRR_B_READ,
00413                             0,
00414                         respByteCount,
00415                         ezradioCmd);
00416 
00417     ezradioReply.FRR_B_READ.FRR_B_VALUE = ezradioCmd[0];
00418     ezradioReply.FRR_B_READ.FRR_C_VALUE = ezradioCmd[1];
00419     ezradioReply.FRR_B_READ.FRR_D_VALUE = ezradioCmd[2];
00420     ezradioReply.FRR_B_READ.FRR_A_VALUE = ezradioCmd[3];
00421 }
00422 
00428 void ezradio_frr_c_read(uint8_t respByteCount)
00429 {
00430     ezradio_comm_ReadData(EZRADIO_CMD_ID_FRR_C_READ,
00431                             0,
00432                         respByteCount,
00433                         ezradioCmd);
00434 
00435     ezradioReply.FRR_C_READ.FRR_C_VALUE = ezradioCmd[0];
00436     ezradioReply.FRR_C_READ.FRR_D_VALUE = ezradioCmd[1];
00437     ezradioReply.FRR_C_READ.FRR_A_VALUE = ezradioCmd[2];
00438     ezradioReply.FRR_C_READ.FRR_B_VALUE = ezradioCmd[3];
00439 }
00440 
00446 void ezradio_frr_d_read(uint8_t respByteCount)
00447 {
00448     ezradio_comm_ReadData(EZRADIO_CMD_ID_FRR_D_READ,
00449                             0,
00450                         respByteCount,
00451                         ezradioCmd);
00452 
00453     ezradioReply.FRR_D_READ.FRR_D_VALUE = ezradioCmd[0];
00454     ezradioReply.FRR_D_READ.FRR_A_VALUE = ezradioCmd[1];
00455     ezradioReply.FRR_D_READ.FRR_B_VALUE = ezradioCmd[2];
00456     ezradioReply.FRR_D_READ.FRR_C_VALUE = ezradioCmd[3];
00457 }
00458 
00462 void ezradio_request_device_state(void)
00463 {
00464     ezradioCmd[0] = EZRADIO_CMD_ID_REQUEST_DEVICE_STATE;
00465 
00466     ezradio_comm_SendCmdGetResp( EZRADIO_CMD_ARG_COUNT_REQUEST_DEVICE_STATE,
00467                               ezradioCmd,
00468                               EZRADIO_CMD_REPLY_COUNT_REQUEST_DEVICE_STATE,
00469                               ezradioCmd );
00470 
00471     ezradioReply.REQUEST_DEVICE_STATE.CURR_STATE       = ezradioCmd[0];
00472     ezradioReply.REQUEST_DEVICE_STATE.CURRENT_CHANNEL  = ezradioCmd[1];
00473 }
00474 
00478 void ezradio_read_cmd_buff(void)
00479 {
00480     ezradioCmd[0] = EZRADIO_CMD_ID_READ_CMD_BUFF;
00481 
00482     ezradio_comm_SendCmdGetResp( EZRADIO_CMD_ARG_COUNT_READ_CMD_BUFF,
00483                                ezradioCmd,
00484                                EZRADIO_CMD_REPLY_COUNT_READ_CMD_BUFF,
00485                                ezradioCmd );
00486 
00487     ezradioReply.READ_CMD_BUFF.BYTE[0]   = ezradioCmd[0];
00488     ezradioReply.READ_CMD_BUFF.BYTE[1]   = ezradioCmd[1];
00489     ezradioReply.READ_CMD_BUFF.BYTE[2]   = ezradioCmd[2];
00490     ezradioReply.READ_CMD_BUFF.BYTE[3]   = ezradioCmd[3];
00491     ezradioReply.READ_CMD_BUFF.BYTE[4]   = ezradioCmd[4];
00492     ezradioReply.READ_CMD_BUFF.BYTE[5]   = ezradioCmd[5];
00493     ezradioReply.READ_CMD_BUFF.BYTE[6]   = ezradioCmd[6];
00494     ezradioReply.READ_CMD_BUFF.BYTE[7]   = ezradioCmd[7];
00495     ezradioReply.READ_CMD_BUFF.BYTE[8]   = ezradioCmd[8];
00496     ezradioReply.READ_CMD_BUFF.BYTE[9]   = ezradioCmd[9];
00497     ezradioReply.READ_CMD_BUFF.BYTE[10]  = ezradioCmd[10];
00498     ezradioReply.READ_CMD_BUFF.BYTE[11]  = ezradioCmd[11];
00499     ezradioReply.READ_CMD_BUFF.BYTE[12]  = ezradioCmd[12];
00500     ezradioReply.READ_CMD_BUFF.BYTE[13]  = ezradioCmd[13];
00501     ezradioReply.READ_CMD_BUFF.BYTE[14]  = ezradioCmd[14];
00502     ezradioReply.READ_CMD_BUFF.BYTE[15]  = ezradioCmd[15];
00503 }
00504 
00510 void ezradio_get_ph_status(uint8_t ph_clr_pend)
00511 {
00512     ezradioCmd[0] = EZRADIO_CMD_ID_GET_PH_STATUS;
00513     ezradioCmd[1] = ph_clr_pend;
00514 
00515     ezradio_comm_SendCmdGetResp( EZRADIO_CMD_ARG_COUNT_GET_PH_STATUS,
00516                               ezradioCmd,
00517                               EZRADIO_CMD_REPLY_COUNT_GET_PH_STATUS,
00518                               ezradioCmd );
00519 
00520     ezradioReply.GET_PH_STATUS.PH_PEND        = ezradioCmd[0];
00521     ezradioReply.GET_PH_STATUS.PH_STATUS      = ezradioCmd[1];
00522 }
00523 
00529 void ezradio_get_modem_status( uint8_t modem_clr_pend )
00530 {
00531     ezradioCmd[0] = EZRADIO_CMD_ID_GET_MODEM_STATUS;
00532     ezradioCmd[1] = modem_clr_pend;
00533 
00534     ezradio_comm_SendCmdGetResp( EZRADIO_CMD_ARG_COUNT_GET_MODEM_STATUS,
00535                               ezradioCmd,
00536                               EZRADIO_CMD_REPLY_COUNT_GET_MODEM_STATUS,
00537                               ezradioCmd );
00538 
00539     ezradioReply.GET_MODEM_STATUS.MODEM_PEND   = ezradioCmd[0];
00540     ezradioReply.GET_MODEM_STATUS.MODEM_STATUS = ezradioCmd[1];
00541     ezradioReply.GET_MODEM_STATUS.CURR_RSSI    = ezradioCmd[2];
00542     ezradioReply.GET_MODEM_STATUS.LATCH_RSSI   = ezradioCmd[3];
00543     ezradioReply.GET_MODEM_STATUS.ANT1_RSSI    = ezradioCmd[4];
00544     ezradioReply.GET_MODEM_STATUS.ANT2_RSSI    = ezradioCmd[5];
00545     ezradioReply.GET_MODEM_STATUS.AFC_FREQ_OFFSET =  ((uint16_t)ezradioCmd[6] << 8) & 0xFF00;
00546     ezradioReply.GET_MODEM_STATUS.AFC_FREQ_OFFSET |= (uint16_t)ezradioCmd[7] & 0x00FF;
00547 }
00548 
00554 void ezradio_get_chip_status( uint8_t chip_clr_pend )
00555 {
00556     ezradioCmd[0] = EZRADIO_CMD_ID_GET_CHIP_STATUS;
00557     ezradioCmd[1] = chip_clr_pend;
00558 
00559     ezradio_comm_SendCmdGetResp( EZRADIO_CMD_ARG_COUNT_GET_CHIP_STATUS,
00560                               ezradioCmd,
00561                               EZRADIO_CMD_REPLY_COUNT_GET_CHIP_STATUS,
00562                               ezradioCmd );
00563 
00564     ezradioReply.GET_CHIP_STATUS.CHIP_PEND         = ezradioCmd[0];
00565     ezradioReply.GET_CHIP_STATUS.CHIP_STATUS       = ezradioCmd[1];
00566     ezradioReply.GET_CHIP_STATUS.CMD_ERR_STATUS    = ezradioCmd[2];
00567 }
00568 
00569 
00578 void ezradio_get_packet_info(uint8_t field_number_mask, uint16_t len, int16_t diff_len )
00579 {
00580     ezradioCmd[0] = EZRADIO_CMD_ID_PACKET_INFO;
00581     ezradioCmd[1] = field_number_mask;
00582     ezradioCmd[2] = (uint8_t)(len >> 8);
00583     ezradioCmd[3] = (uint8_t)(len);
00584     // the different of the byte, althrough it is signed, but to command hander
00585     // it can treat it as unsigned
00586     ezradioCmd[4] = (uint8_t)((uint16_t)diff_len >> 8);
00587     ezradioCmd[5] = (uint8_t)(diff_len);
00588 
00589     ezradio_comm_SendCmdGetResp( EZRADIO_CMD_ARG_COUNT_PACKET_INFO,
00590                               ezradioCmd,
00591                               EZRADIO_CMD_REPLY_COUNT_PACKET_INFO,
00592                               ezradioCmd );
00593 
00594     ezradioReply.PACKET_INFO.LENGTH = ((uint16_t)ezradioCmd[0] << 8) & 0xFF00;
00595     ezradioReply.PACKET_INFO.LENGTH |= (uint16_t)ezradioCmd[1] & 0x00FF;
00596 }
00597 
00598 
00599 /*
00600  * Faster versions of the above commands. 
00601  */
00602 
00606 void ezradio_start_tx_fast( void )
00607 {
00608     ezradioCmd[0] = EZRADIO_CMD_ID_START_TX;
00609 
00610     ezradio_comm_SendCmd( 1, ezradioCmd );
00611 }
00612 
00617 void ezradio_start_rx_fast( void )
00618 {
00619     ezradioCmd[0] = EZRADIO_CMD_ID_START_RX;
00620 
00621     ezradio_comm_SendCmd( 1, ezradioCmd );
00622 }
00623 
00628 void ezradio_get_int_status_fast_clear( void )
00629 {
00630     ezradioCmd[0] = EZRADIO_CMD_ID_GET_INT_STATUS;
00631 
00632     ezradio_comm_SendCmd( 1, ezradioCmd );
00633 }
00634 
00639 void ezradio_get_int_status_fast_clear_read(void)
00640 {
00641     ezradioCmd[0] = EZRADIO_CMD_ID_GET_INT_STATUS;
00642 
00643     ezradio_comm_SendCmdGetResp( 1,
00644                               ezradioCmd,
00645                               EZRADIO_CMD_REPLY_COUNT_GET_INT_STATUS,
00646                               ezradioCmd );
00647 
00648     ezradioReply.GET_INT_STATUS.INT_PEND       = ezradioCmd[0];
00649     ezradioReply.GET_INT_STATUS.INT_STATUS     = ezradioCmd[1];
00650     ezradioReply.GET_INT_STATUS.PH_PEND        = ezradioCmd[2];
00651     ezradioReply.GET_INT_STATUS.PH_STATUS      = ezradioCmd[3];
00652     ezradioReply.GET_INT_STATUS.MODEM_PEND     = ezradioCmd[4];
00653     ezradioReply.GET_INT_STATUS.MODEM_STATUS   = ezradioCmd[5];
00654     ezradioReply.GET_INT_STATUS.CHIP_PEND      = ezradioCmd[6];
00655     ezradioReply.GET_INT_STATUS.CHIP_STATUS    = ezradioCmd[7];
00656 }
00657 
00662 void ezradio_gpio_pin_cfg_fast( void )
00663 {
00664     ezradioCmd[0] = EZRADIO_CMD_ID_GPIO_PIN_CFG;
00665 
00666     ezradio_comm_SendCmdGetResp( 1,
00667                               ezradioCmd,
00668                               EZRADIO_CMD_REPLY_COUNT_GPIO_PIN_CFG,
00669                               ezradioCmd );
00670 
00671     ezradioReply.GPIO_PIN_CFG.gpIO[0]        = ezradioCmd[0];
00672     ezradioReply.GPIO_PIN_CFG.gpIO[1]        = ezradioCmd[1];
00673     ezradioReply.GPIO_PIN_CFG.gpIO[2]        = ezradioCmd[2];
00674     ezradioReply.GPIO_PIN_CFG.gpIO[3]        = ezradioCmd[3];
00675     ezradioReply.GPIO_PIN_CFG.NIRQ         = ezradioCmd[4];
00676     ezradioReply.GPIO_PIN_CFG.SDO          = ezradioCmd[5];
00677     ezradioReply.GPIO_PIN_CFG.GEN_CONFIG   = ezradioCmd[6];
00678 }
00679 
00680 
00685 void ezradio_get_ph_status_fast_clear( void )
00686 {
00687     ezradioCmd[0] = EZRADIO_CMD_ID_GET_PH_STATUS;
00688     ezradioCmd[1] = 0;
00689 
00690     ezradio_comm_SendCmd( 2, ezradioCmd );
00691 }
00692 
00697 void ezradio_get_ph_status_fast_clear_read(void)
00698 {
00699     ezradioCmd[0] = EZRADIO_CMD_ID_GET_PH_STATUS;
00700 
00701     ezradio_comm_SendCmdGetResp( 1,
00702                               ezradioCmd,
00703                               EZRADIO_CMD_REPLY_COUNT_GET_PH_STATUS,
00704                               ezradioCmd );
00705 
00706     ezradioReply.GET_PH_STATUS.PH_PEND        = ezradioCmd[0];
00707     ezradioReply.GET_PH_STATUS.PH_STATUS      = ezradioCmd[1];
00708 }
00709 
00714 void ezradio_get_modem_status_fast_clear( void )
00715 {
00716     ezradioCmd[0] = EZRADIO_CMD_ID_GET_MODEM_STATUS;
00717     ezradioCmd[1] = 0;
00718 
00719     ezradio_comm_SendCmd( 2, ezradioCmd );
00720 }
00721 
00726 void ezradio_get_modem_status_fast_clear_read( void )
00727 {
00728     ezradioCmd[0] = EZRADIO_CMD_ID_GET_MODEM_STATUS;
00729 
00730     ezradio_comm_SendCmdGetResp( 1,
00731                               ezradioCmd,
00732                               EZRADIO_CMD_REPLY_COUNT_GET_MODEM_STATUS,
00733                               ezradioCmd );
00734 
00735     ezradioReply.GET_MODEM_STATUS.MODEM_PEND   = ezradioCmd[0];
00736     ezradioReply.GET_MODEM_STATUS.MODEM_STATUS = ezradioCmd[1];
00737     ezradioReply.GET_MODEM_STATUS.CURR_RSSI    = ezradioCmd[2];
00738     ezradioReply.GET_MODEM_STATUS.LATCH_RSSI   = ezradioCmd[3];
00739     ezradioReply.GET_MODEM_STATUS.ANT1_RSSI    = ezradioCmd[4];
00740     ezradioReply.GET_MODEM_STATUS.ANT2_RSSI    = ezradioCmd[5];
00741     ezradioReply.GET_MODEM_STATUS.AFC_FREQ_OFFSET = ((uint16_t)ezradioCmd[6] << 8) & 0xFF00;
00742     ezradioReply.GET_MODEM_STATUS.AFC_FREQ_OFFSET |= (uint16_t)ezradioCmd[7] & 0x00FF;
00743 }
00744 
00749 void ezradio_get_chip_status_fast_clear( void )
00750 {
00751     ezradioCmd[0] = EZRADIO_CMD_ID_GET_CHIP_STATUS;
00752     ezradioCmd[1] = 0;
00753 
00754     ezradio_comm_SendCmd( 2, ezradioCmd );
00755 }
00756 
00761 void ezradio_get_chip_status_fast_clear_read( void )
00762 {
00763     ezradioCmd[0] = EZRADIO_CMD_ID_GET_CHIP_STATUS;
00764 
00765     ezradio_comm_SendCmdGetResp( 1,
00766                               ezradioCmd,
00767                               EZRADIO_CMD_REPLY_COUNT_GET_CHIP_STATUS,
00768                               ezradioCmd );
00769 
00770     ezradioReply.GET_CHIP_STATUS.CHIP_PEND         = ezradioCmd[0];
00771     ezradioReply.GET_CHIP_STATUS.CHIP_STATUS       = ezradioCmd[1];
00772     ezradioReply.GET_CHIP_STATUS.CMD_ERR_STATUS    = ezradioCmd[2];
00773 }
00774 
00780 void ezradio_fifo_info_fast_reset(uint8_t fifo)
00781 {
00782     ezradioCmd[0] = EZRADIO_CMD_ID_FIFO_INFO;
00783     ezradioCmd[1] = fifo;
00784 
00785     ezradio_comm_SendCmd( 2, ezradioCmd );
00786 }
00787 
00791 void ezradio_fifo_info_fast_read(void)
00792 {
00793     ezradioCmd[0] = EZRADIO_CMD_ID_FIFO_INFO;
00794 
00795     ezradio_comm_SendCmdGetResp( 1,
00796                               ezradioCmd,
00797                               EZRADIO_CMD_REPLY_COUNT_FIFO_INFO,
00798                               ezradioCmd );
00799 
00800     ezradioReply.FIFO_INFO.RX_FIFO_COUNT   = ezradioCmd[0];
00801     ezradioReply.FIFO_INFO.TX_FIFO_SPACE   = ezradioCmd[1];
00802 }
00803 
00804 #endif /* EZRADIO_DRIVER_FULL_SUPPORT */
00805 
00806 #endif /* EZRADIO_DRIVER_EXTENDED_SUPPORT */