61 lines
1.8 KiB
C
61 lines
1.8 KiB
C
//-------------------------------------------------------------------
|
|
// Filename: hal_rf_util.c
|
|
// Description: Support for anergy detection applications.
|
|
//-------------------------------------------------------------------
|
|
//-------------------------------------------------------------------
|
|
// INCLUDES
|
|
//-------------------------------------------------------------------
|
|
#include "hal_defs.h"
|
|
#include "hal_mcu.h"
|
|
#include "hal_rf_util.h"
|
|
#include "hal_rf.h"
|
|
|
|
//-------------------------------------------------------------------
|
|
// FUNCTIONS
|
|
//-------------------------------------------------------------------
|
|
//-------------------------------------------------------------------
|
|
// @fn halSampleED
|
|
// @brief Sample Energy Detect
|
|
// @param uint8 channel - channel between 11 and 26
|
|
// uint16 sampleTime - sample time in us
|
|
// @return int8 - sampled RSSI value
|
|
//-------------------------------------------------------------------
|
|
int8 halSampleED(uint8 channel, uint16 sampleTime)
|
|
{
|
|
int8 rssi = 0;
|
|
|
|
// Set channel
|
|
halRfSetChannel(channel);
|
|
|
|
// Set RX on
|
|
halRfReceiveOn();
|
|
while (!RSSISTAT)
|
|
;
|
|
|
|
// Enable energy scan mode, using peak signal strength
|
|
FRMCTRL0 |= 0x10;
|
|
|
|
// Spend sampleTime us accumulating the peak RSSI value
|
|
halMcuWaitUs(sampleTime);
|
|
rssi = RSSI;
|
|
|
|
// Exit the current channel
|
|
halRfReceiveOff();
|
|
// Disable ED scan mode
|
|
FRMCTRL0 &= ~0x10;
|
|
|
|
return rssi;
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// @fn halSetRxScanMode
|
|
// @brief Set chip in RX scanning mode
|
|
// @param none
|
|
// @return none
|
|
//-------------------------------------------------------------------
|
|
void halSetRxScanMode(void)
|
|
{
|
|
// Infinite RX mode (disables symbol search)
|
|
FRMCTRL0 = 0x0C;
|
|
}
|