This article applies to:
DolphinAPI
I am using radio_getRSSI but I would like to convert the values to dBm. How can I do it with the API ?
You can use the radio_rssiToDbm_asm. In your source code add the definition of the function as shown below:
definition
/************************************************************************************************************************//*! Calculates dBm from RSSI based on the calibration values in radio init specified by array u8RssiCalib. \param RSSI signal where the LSB bit is the LNA \return dBm value, <b>Number of nested functions:</b> -\n <b>Typical execution time:</b> -us \note This value is supposed to be interpreted as a negative value although the function returns an unsigned value \sa radio_getRSSI **************************************************************************************************************************/ uint8 radio_rssiToDbm_asm(uint16 u16RssiLna);
With the result uin16 value call the function radio_rssiToDbm_asm and you will get the dBm result. This function is already defined in the API Version 2.2.0.0.
EXAMPLE CODE:
This example shows how to get the LongTerm RSSI and transmit it through the UART.
#include "EO3000I_API.h" #include "EO3000I_CFG.h" #include "stdio.h" #include "string.h" uint8 radio_rssiToDbm_asm(uint16 u16RssiLna); void main() { uint16 pu16StRssi, pu16LtRssi; uint8 u8Buff[30]; uint8 u8dBmLtRssi; mainInit(); radio_enableRx(1); while(1) { radio_getRSSI (&pu16StRssi, &pu16LtRssi); u8dBmLtRssi = radio_rssiToDbm_asm(pu16LtRssi); sprintf(u8Buff,"Long Term RSSI: %u dBm\n", (uint16)u8dBmLtRssi); while (uart_sendBuffer(u8Buff, strlen(u8Buff))!=OK); time_wait(500); } }
// Generated with DolphinStudio 2.0.0.13 which was compiled on Jun 2 2010 05:10:30 //Generated on 24.01.2011 14:48 by DolphinStudio 2.1.1.0 #ifndef _EO3000I_CFG_H_INCLUDED #define _EO3000I_CFG_H_INCLUDED #include "EO3000I_API.h" //! Function Prototypes void radio_init_asm(RADIO_INIT_PARAM u8PowerUp); void startupInit(); void mainInit(); //*********************UART PARAM*************************** //! UART Rx/Tx buffers allocation #define RX_RING_SIZE 34 #define TX_RING_SIZE 34 extern volatile uint8 xdata u8RxRing[RX_RING_SIZE]; extern volatile uint8 xdata u8TxRing[TX_RING_SIZE]; extern uint8 uart_param[]; //*********************RADIO PARAM*************************** #define RADIO_BUFF_NUM 10 #define RADIO_MATURITY_TIME 100 //! Radio buffers allocation extern volatile uint8 xdata u8gRadioBuff[RADIO_BUFF_NUM][RADIO_BUFF_LENGTH]; //! Radio tx buffers additional allocation for state extern volatile uint8 xdata u8gRadioBuffTXState[RADIO_BUFF_NUM]; //! Radio flags extern volatile uint8 idata u8gFlags[RADIO_BUFF_NUM]; //! buffers Rx subtelegrams counters. Index indicates the buffer number. extern volatile uint8 idata u8gRadioBuffsRxSubtel[RADIO_BUFF_NUM]; //! buffers Tx subtelegrams counters. Index indicates the buffer number. extern volatile uint8 idata u8gRadioBuffsTxSubtel[RADIO_BUFF_NUM]; //! buffers time stamp counters. Index indicates the buffer number. extern volatile uint8 idata u8gRadioBuffsTimeStamp[RADIO_BUFF_NUM]; //! buffers received bytes counters. Index indicates the buffer number. extern volatile uint8 idata u8gRadioBuffsBytes[RADIO_BUFF_NUM]; //! buffers dBm values. Value indicating signal strength upon telegram reception. extern volatile uint8 xdata u8gRxRadioBuffsDbm[RADIO_BUFF_NUM]; //! Tx buffers time to send subtelegram. Index indicates the buffer number. extern volatile uint8 idata u8gTxRadioBuffsTimeToSend[RADIO_BUFF_NUM]; //*********************FILTER PARAM*************************** //! Max. number of filters #define FILTER_NUM 4 //! Filter buffer allocation for value of filter extern volatile uint32 xdata u32gFilterValue[FILTER_NUM]; //! Filter buffer allocation containing FILTER_TYPE (Bit 0..1 and FILTER_KIND Bit 7) extern volatile uint8 xdata u8gFilterCfg[FILTER_NUM]; extern uint8 filter_param[]; //*********************IO PARAM*************************** extern uint8 code io_param[]; #endif //_EO3000I_CFG_H_INCLUDED
//Generated on 24.01.2011 14:48 by DolphinStudio 2.1.1.0 #include "EO3000I_CFG.h" //*********************API INIT*************************** //Note: Function is called from startup.a51. Global variables are not yet initialized! void startupInit() { pwr_enableXTAL(DEFAULT_DELAY); io_init(io_param); } //Note: Function is called from main() void mainInit() { radio_init_asm(CFG_ALL); radio_init(RADIO_BUFF_NUM, RADIO_MATURITY_TIME); UART_INIT(uart_param, SET_ALL_PARAM); isr_timer0Init(); misc_init(); pwr_selectXTAL(); ISD51_INIT(BAUD_57600); } //*********************UART PARAM*************************** //! UART Rx/Tx buffers allocation volatile uint8 xdata u8RxRing[RX_RING_SIZE]; volatile uint8 xdata u8TxRing[TX_RING_SIZE]; uint8 uart_param[] = { BAUD_9600, //IDX_BAUD RX_RING_SIZE, //IDX_RX_RING_SIZE TX_RING_SIZE, //IDX_TX_RING_SIZE }; //*********************RADIO PARAM*************************** //! Radio buffers allocation volatile uint8 xdata u8gRadioBuff[RADIO_BUFF_NUM][RADIO_BUFF_LENGTH]; //! Radio tx buffers additional allocation for state volatile uint8 xdata u8gRadioBuffTXState[RADIO_BUFF_NUM]; //! Radio flags volatile uint8 idata u8gFlags[RADIO_BUFF_NUM]; //! buffers Rx subtelegrams counters. Index indicates the buffer number. volatile uint8 idata u8gRadioBuffsRxSubtel[RADIO_BUFF_NUM]; //! buffers Tx subtelegrams counters. Index indicates the buffer number. volatile uint8 idata u8gRadioBuffsTxSubtel[RADIO_BUFF_NUM]; //! buffers time stamp counters. Index indicates the buffer number. volatile uint8 idata u8gRadioBuffsTimeStamp[RADIO_BUFF_NUM]; //! buffers received bytes counters. Index indicates the buffer number. volatile uint8 idata u8gRadioBuffsBytes[RADIO_BUFF_NUM]; //! buffers dBm values. Value indicating signal strength upon telegram reception. volatile uint8 xdata u8gRxRadioBuffsDbm[RADIO_BUFF_NUM]; //! Tx buffers time to send subtelegram. Index indicates the buffer number. volatile uint8 idata u8gTxRadioBuffsTimeToSend[RADIO_BUFF_NUM]; //*********************FILTER PARAM*************************** //! Filter buffer allocation for value of filter volatile uint32 xdata u32gFilterValue[FILTER_NUM]; //! Filter buffer allocation containing FILTER_TYPE (Bit 0..1 and FILTER_KIND Bit 7) volatile uint8 xdata u8gFilterCfg[FILTER_NUM]; uint8 filter_param[] = { FILTER_NUM, //IDX_FILTER_MAX FILTER_ALL_AND //IDX_FILTER_OPERATOR }; //*********************IO PARAM*************************** uint8 code io_param[] = { 0x07, //IDX_GPIO_CONF 0x00, //IDX_GPIO0_CONF 0x0E, //IDX_GPIO0_PULL_CONF 0x01, //IDX_GPIO0_DIR 0x00, //IDX_GPIO1_AN 0xC0, //IDX_GPIO1_CONF 0x03, //IDX_GPIO1_DIG_CONF 0x80, //IDX_GPIO1_DIR 0x7F, //IDX_GPIO1_PULL 0x04, //IDX_GPIO2_CONF 0x00, //IDX_GPIO2_DIR 0x00, //IDX_GPIO0 0x00, //IDX_GPIO1 0x00 //IDX_GPIO2 }; // I/O Configuration overview // // Pin: Interface Direction Pull Init Value // SCSEDIO0: Digital I/O Out None 0 // SCLKDIO1: Digital I/O In Up 0 // WSDADIO2: Digital I/O In Up 0 // RSDADIO3: Digital I/O In Up 0 // ADIO0: Digital I/O In Up 0 // ADIO1: Digital I/O In Up 0 // ADIO2: Digital I/O In Up 0 // ADIO3: Digital I/O In Up 0 // ADIO4: Digital I/O In Up 0 // ADIO5: Digital I/O In Up 0 // ADIO6: UART In Up 0 // ADIO7: UART Out None 0 // WXIDIO: Digital I/O In Up 0 // WXODIO: Digital I/O In Up // WAKE0: Digital I/O In None // WAKE1: Digital I/O In None
FAQ Single Template
Find the right distributor for our modules, components and finished products in your region!
The EnOcean newsletter informs you regularly about exciting projects in the areas of IoT and smart buildings as well as current events and new products.
© 2024 EnOcean GmbH. All rights reserved.