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
00047 union ezradio_cmd_reply_union ezradioReply;
00048
00049
00050 uint8_t ezradioCmd[16u];
00051
00059 void ezradio_reset(void)
00060 {
00061
00062 USTIMER_Init();
00063
00064 ezradio_hal_AssertShutdown();
00065
00066 USTIMER_Delay( 10u );
00067
00068 ezradio_hal_DeassertShutdown();
00069
00070 USTIMER_Delay( 100u );
00071
00072 ezradio_comm_ClearCTS();
00073
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
00132
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)
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
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
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
00585
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
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
00805
00806 #endif