nes-proj/cpu/arm/aducrf101/Common/radioeng.h

175 lines
6.1 KiB
C

/**
* Copyright (c) 2014, Analog Devices, Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted (subject to the limitations in the
* disclaimer below) provided that the following conditions are met:
*
* - Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* - Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the
* distribution.
*
* - Neither the name of Analog Devices, Inc. nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE
* GRANTED BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT
* HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/**
@file radioeng.h
@brief Radio Interface Engine Functions
@version v1.0
@author PAD CSE group, Analog Devices Inc
@date May 08th 2013
**/
#define RIE_U32 unsigned long
#define RIE_U16 unsigned short int
#define RIE_U8 unsigned char
#define RIE_S8 signed char
/*! \enum RIE_BaseConfigs
* Variables of this type are used to define the Base Configuration
*/
/*! \var RIE_BaseConfigs DR_1_0kbps_Dev10_0kHz
* Base configuration of 1 kbps datarate, 10.0 kHz frequency deviation.
Use for achieving longer distances.
*/
/*! \var RIE_BaseConfigs DR_38_4kbps_Dev20kHz
* Base configuration of 38.4 kbps datarate, 20 kHz frequency deviation.
Use as a compromise of distance and power.
*/
/*! \var RIE_BaseConfigs DR_300_0kbps_Dev75_0kHz
* Base configuration of 300 kbps datarate, 75 kHz frequency deviation.
Use for achieving faster transmission times hence lower power.
*/
typedef enum
{
DR_1_0kbps_Dev10_0kHz = 0x0,
DR_38_4kbps_Dev20kHz = 0x1,
DR_300_0kbps_Dev75_0kHz = 0x2,
UnsupportedDRDev
} RIE_BaseConfigs;
/*! \enum RIE_ModulationTypes
* Variables of this type are used to define a tx modulation type
*/
/*! \var RIE_ModulationTypes FSK_Modulation
* FSK Modulation
*/
/*! \var RIE_ModulationTypes GFSK_Modulation
* GFSK Modulation
*/
typedef enum {FSK_Modulation = 0, GFSK_Modulation = 1} RIE_ModulationTypes;
/*! \enum RIE_PATypes
* Variables of this type are used to define a PA type
*/
/*! \var RIE_PATypes DifferentialPA
* Differential PA
*/
/*! \var RIE_PATypes SingleEndedPA
* Single Ended PA
*/
typedef enum {DifferentialPA = 0, SingleEndedPA = 1} RIE_PATypes;
typedef enum {PowerLevel0 ,PowerLevel1 ,PowerLevel2 ,PowerLevel3,
PowerLevel4 ,PowerLevel5 ,PowerLevel6 ,PowerLevel7,
PowerLevel8 ,PowerLevel9 ,PowerLevel10,PowerLevel11,
PowerLevel12,PowerLevel13,PowerLevel14,PowerLevel15
} RIE_PAPowerLevel;
/*! \enum RIE_BOOL
* Variables of this type are used to define a TRUE or FALSE condition
*/
/*! \var RIE_BOOL RIE_TRUE
* TRUE condition
*/
/*! \var RIE_BOOL RIE_FALSE
* FALSE condition
*/
typedef enum {RIE_FALSE = 0, RIE_TRUE = !RIE_FALSE} RIE_BOOL;
/*! \enum RIE_Responses
* Variables of this type are used to define the return value from functions
*/
/*! \var RIE_Responses RIE_Success
* Successful completion
*/
/*! \var RIE_Responses RIE_RadioSPICommsFail
* SPI communications with the radio failure.
*/
/*! \var RIE_Responses RIE_UnsupportedRadioConfig
* This is an unsupported radio configuration
*/
/*! \var RIE_Responses RIE_Unimplemented
* This feature has not been implemented
*/
/*! \var RIE_Responses RIE_InvalidParamter
* An invaild parameter was passed
*/
typedef enum
{
RIE_Success = 0x0,
RIE_RadioSPICommsFail = 0x1,
RIE_UnsupportedRadioConfig = 0x2,
RIE_Unimplemented = 0x3,
RIE_InvalidParamter = 0x4,
} RIE_Responses;
// Added in Radio Interface Engine v0.1
RIE_Responses RadioGetAPIVersion (RIE_U32 *pVersion);
RIE_Responses RadioInit (RIE_BaseConfigs BaseConfig);
RIE_Responses RadioPowerOff (void);
RIE_Responses RadioTerminateRadioOp (void);
RIE_Responses RadioSetFrequency (RIE_U32 Frequency);
RIE_Responses RadioSetModulationType (RIE_ModulationTypes ModulationType);
RIE_Responses RadioPayldManchesterEncode(RIE_BOOL bEnable);
RIE_Responses RadioPayldDataWhitening (RIE_BOOL bEnable);
RIE_Responses RadioTxPacketFixedLen (RIE_U8 Len, RIE_U8 *pData);
RIE_BOOL RadioTxPacketComplete (void);
RIE_Responses RadioTxSetPA (RIE_PATypes PAType,RIE_PAPowerLevel Power);
RIE_Responses RadioTxCarrier (void);
RIE_Responses RadioTxPreamble (void);
RIE_Responses RadioRxPacketFixedLen (RIE_U8 Len);
RIE_BOOL RadioRxPacketAvailable (void);
RIE_Responses RadioRxPacketRead (RIE_U8 BufferLen,RIE_U8 *pPktLen,RIE_U8 *pData,RIE_S8 *pRSSIdBm);
RIE_Responses RadioRxBERTestMode (void);
// Added in Radio Interface Engine v0.2
RIE_Responses RadioSwitchConfig (RIE_BaseConfigs BaseConfig);
RIE_Responses RadioRadioGetRSSI (RIE_S8 *pRSSIdBm);
RIE_Responses RadioTxSetPower (RIE_PAPowerLevel Power);
// Added in Radio Interface Engine v0.3
RIE_Responses RadioTxPacketVariableLen (RIE_U8 Len, RIE_U8 *pData);
RIE_Responses RadioRxPacketVariableLen (void);
// Added in Radio Interface Engine v0.5
RIE_Responses RadioDeInit (void);