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.
© 2025 EnOcean GmbH. All rights reserved.