This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Obtaining RSSI through SimpliciTI API

Other Parts Discussed in Thread: SIMPLICITI

Hello,


I am new to developing with the eZ430-Chronos Watch platform and am currently working on a project in which we need the RSSI value to continue on forward with the project. We've tried several ways of obtaining the value, but none have worked thus far. We discovered that the SimpliciTI API can access these values. Now, the question that remains for us is exactly do we make the function calls to read those values? Do we have to create a standalone program that makes these API calls and if so, how do we make these calls? Is it simply a matter of including the header files or do we have to communicate with the access point serially?


Perhaps I am understanding everything wrong, but this is what I currently have gathered from what I've read. Any help is appreciated.


Thank you!

  • The following code will give you the RSSI:

          smplStatus_t status;
          rssi_t rssiValue;
          MRFI_RxOn();
          status = nwk_radioControl(IOCTL_ACT_RADIO_RSSI, &rssiValue);

    BR

    Siri

  • Hello Siri,

    Thank you for your reply. I saw the code you posted and it seems to be that status is an enum that contains many states. I'm having a hard time grasping just exactly what this code does. I believe you posted on my other thread about the RSSI information being appended after the package handler receives the package. My main concern is how can I use the SimpliciTI API to read those registers, for example, RXFIFO? And where exactly would I make this call to obtain the values and see them myself? I see mrfiSpiReadReg can be called to read a register (in this case, it would the RSSI register 0x34). However, where would I place this code in order for me to be able to access it? Would it be in the SimpliciTI main file?

    One idea I had was to completely erase the packets of the acceleration data and appending the RSSI information there, but I'm not sure how correct or feasible this might be. I've been working on this RSSI issue for quite some time now and there seem to be many ways of going about it, but I cannot really understand how to do it. Any help is greatly appreciated.

    Thanks!

  • My main question is how do we use the SimpliciTI API to obtain the RSSI value. To call the functions, should it be done within the AP code or does another standalone file have to be made?

    Thanks!
  • The code I posted can be called from your main routine after your radio has been initialized. It will make sure that the radio enters RX state and then it will read the RSSI register when the RSSI is valid.

    If you are only interested in the RSSI of your received packet , this is already being appended to the RXFIFO and read from the FIFO in the function Mrfi_SyncPinRxIsr():

    /* get receive metrics from FIFO */

    mrfiSpiReadRxFifo(&(mrfiIncomingPacket.rxMetrics[0]), MRFI_RX_METRICS_SIZE);

    In the same function the RSSI is converted and offset compensation for the RSSI is done:

    /* Convert the raw RSSI value and do offset compensation for this radio */

    mrfiIncomingPacket.rxMetrics[MRFI_RX_METRICS_RSSI_OFS] =

    Mrfi_CalculateRssi(mrfiIncomingPacket.rxMetrics[MRFI_RX_METRICS_RSSI_OFS]);

    mrfiIncomingPacket is copied to a specific location using the function MRFI_Receive(mrfiPacket_t * pPacket)

    BR

    Siri