123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- #include <stdio.h>
- #include <string.h>
- #include "myRadio.h"
- #include "board.h"
- #include "spi.h"
- //------------
- #include "RF.h"
- static rfRxCallBack rxCb;
- static uint8_t rfMode;
- static uint8_t rfPower = RF8dBm;
- rfRxPacket_ts rfRxPacket;
- void myRadio_delay(uint32_t time_ms)
- {
- delay1ms(time_ms);
- }
- void myRadio_init(int agr0, void *agr1_ptr)
- {
- spi_init();
- RF_Init(rfPower);
- if ((rfRxCallBack )agr1_ptr)
- {
- rxCb = (rfRxCallBack )agr1_ptr;
- }
- }
- void myRadio_abort(void)
- {
- rfMode = 0;
- RF_Reset();
- }
- void myRadio_transmit(rfTxPacket_ts *packet)
- {
- if (rfMode != 1)
- {
- RF_TxMode();
- }
- rfMode = 1;
-
- RF_TxData(packet->payload, PAYLOAD_WIDTH);
- }
- void myRadio_receiver(void)
- {
- rfMode = 2;
- RF_RxMode();
- }
- void myRadio_receiverSync(rfRxPacket_ts *packet)
- {
- }
- uint32_t myRadio_getFrequency(void)
- {
- }
- void myRadio_setFrequency(uint32_t freq)
- {
-
- }
- int8_t myRadio_getTxPower(void)
- {
- return rfPower;
- }
- void myRadio_setTxPower(int8_t power)
- {
- rfPower = power;
- }
- void myRadio_setCtrl(controlMode_te mode, uint32_t value)
- {
- switch (mode)
- {
- case RADIO_EXT_CONTROL_TX_UNMODULATED:
- {
- rfMode = 3;
- RF_Carrier(0, rfPower);
- }
- break;
- case RADIO_EXT_CONTROL_RX_SENSITIVITY:
- {
- rfMode = 4;
- }
- break;
- default:
- break;
- }
- }
- void myRadio_process(void)
- {
- if (rfMode >= 3)
- {
- return;
- }
-
- uint8_t status = RF_GetStatus();
- if ((!status) || (status == 0xff))
- {
- return;
- }
- if (!rfMode)
- {
- return;
- }
- if (status & TX_DS_FLAG)
- {
- RF_ClearFIFO();
- RF_ClearStatus();
- rfMode = 0;
- rxCb(TX_STA_SECCESS, rfRxPacket);
- }
- else if (status & MAX_RT_FLAG)
- {
- RF_ClearFIFO();
- RF_ClearStatus();
- }
- else if (status & RX_DR_FLAG)
- {
- uint8_t ucPayload[PAYLOAD_WIDTH];
- memset(rfRxPacket.payload, 0, sizeof(rfRxPacket.payload));
- RF_ReadBuf(R_RX_PAYLOAD, rfRxPacket.payload, PAYLOAD_WIDTH); // 将接收到的数据读出到ucPayload
- RF_ClearFIFO();
- RF_ClearStatus();
- rfMode = 0;
- if (rxCb)
- {
- rxCb(RX_STA_SECCESS, rfRxPacket);
- }
- }
- else if (status & RX_TX_FLAG)
- {
- RF_ClearFIFO();
- RF_ClearStatus();
- }
- }
|