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.

[Help] SimpliciTI Cascading Problem

Other Parts Discussed in Thread: SIMPLICITI, TEST2

 

Hi all,

I use SimpliciTI Cascading sample code to implement over two end devices to communicate each other. But sometimes some end device can't receive anything. I trace the code with CCDebugger. I found that that device can't receive any interrupt from radio if they can't receive any package. Is it the hardware issue or software issue? Does anyone encounter like this issue? Please give me some information to find some method to debug. Thanks a lot.

 

 

Pogo Lin

  • I'm a bit unclear as to your statement of

    Pogo Lin said:
    I found that that device can't receive any interrupt from radio if they can't receive any package.

    The only time the radio cannot receive a package is if the radio is not enabled in receive mode.

    Another option is the radio interrupt will not re-enter itself before it has completed processing the current packet.  If you are debugging the interrupt code, the radio cannot respond to another packet while you are in that code.  However, after you leave the interrupt code, if another packet is ready in the radio FIFO, you should immediately re-enter the interrupt to manage it.

    If too many packets are received while in the interrupt code, the FIFO will overflow and all packets will be flushed.  Is it possible this could be happening?

    Jim Noxon

  • Thanks for your reply.

    I found it may be Oscillator's issue.  Although we initialize the device to High Speed RC Oscillator successfully,  sometimes it still run in internal Low Power RC Oscillator. I don't know how to solve this problem?

     

     

    Pogo

  • Sorry~  I correct my statement, it still device's High RC Oscillator, but not internal Oscillators. We initialize the device's High RC Oscillator successfully, but  the frequency of Oscillator is not correct, so the radio can't receive any thing.

  • You have to use the crystal oscillator option when using the radio.  The RC oscillator does not have enough stability for the radio PLL to operate good enough for radio communications.

    Jim Noxon

  • Hi,

     I have made the setting CLKCON = BIT7| BIT5 | BIT4; to use CC1110 at 433Mhz is it correct setting for CC1110. If not then please told mi the correct setting to configured the clock for CC1110_433Mhz

  • By setting bits 5 and 4 in the CLKCON register, you are prescaling the CPU clock by 64.  This will make your CPU run very slow.  Note that the CLKCON register has nothing to do with the frequency of the radio carrier frequency, that is managed with the FREQx registers.

    Note also that you need to wait for the HS XOSC to become stable by monitoring the appropriate bits in the SLEEP register such as SLEEP.XOSC_STB.

    See section 12.1.5.1 in the CC1110 spec sheet (http://focus.ti.com/lit/ds/symlink/cc1110f32.pdf)

    Just out of curiosity, the hardware you are using is capable of working at 433MHz right?  I'm not asking about the radio, I know it can but you must have components in the RF path appropriate with this frequency.  Just checking to make sure.

    If you want to set the radio parameters, I would suggest using the SmartRF Studio (http://focus.ti.com/docs/toolsw/folders/print/smartrftm-studio.html?DCMP=hpa_rf_general&HQS=Other+OT+smartrfstudio) and then export your settings into a compatible code header file you can use.

    Jim Noxon

  •  

     

    Hi,

      Thank for your guidance. when I am working with CC1111 and CC430  the code is working fine. But i want to work with CC1110   and CC430. So for that I am check all the registers through RF studio for 433 Mhz and 250kbaud. Those configuration is as follows :-

     


    MCSM1      =     0x30;       // Main Radio Control State Machine Configuration
    MCSM2      =     0x07;       // Main Radio Control State Machine Configuration
    SYNC0      =     0x91;       // Sync Word, Low Byte
    SYNC1      =     0xD3;       // Sync Word, High Byte
    AGCCTRL2   =     0xC7;       // AGC Control
    AGCCTRL1   =     0x00;       // AGC Control
    FSCTRL0    =     0x00;       // Frequency Synthesizer Control
    CHANNR     =     0x14;       // Channel Number
    VCO_VC_DAC =     0xA4;       // Current Setting from PLL Calibration Module
    PKTSTATUS  =     0x00;       // Packet Status
    MARCSTATE  =     0x01;       // Main Radio Control State Machine State
    RSSI       =     0x80;       // Received Signal Strength Indication
    LQI        =     0x00;       // Demodulator Estimate for Link Quality
    VERSION    =     0x03;       // Chip ID[7:0]
    PARTNUM    =     0x01;       // Chip ID[15:8]
    IOCFG0     =     0x06;       // Radio Test Signal Configuration (P1_5)
    IOCFG1     =     0x00;       // Radio Test Signal Configuration (P1_6)
    IOCFG2     =     0x00;       // Radio Test Signal Configuration (P1_7)
    PA_TABLE2  =     0x00;       // PA Power Setting 2
    PA_TABLE3  =     0x00;       // PA Power Setting 3
    PA_TABLE4  =     0x00;       // PA Power Setting 4
    PA_TABLE5  =     0x00;       // PA Power Setting 5
    PA_TABLE6  =     0x00;       // PA Power Setting 6
    PA_TABLE7  =     0x00;       // PA Power Setting 7
    FREND0     =     0x10;       // Front End TX Configuration
    FREND1     =     0xB6;       // Front End RX Configuration
    BSCFG      =     0x1C;       // Bit Synchronization Configuration
    FOCCFG     =     0x1D;       // Frequency Offset Compensation Configuration
    MCSM0      =     0x18;       // Main Radio Control State Machine Configuration
    AGCCTRL0   =     0xB0;       // AGC Control
    FSCAL3     =     0xEA;       // Frequency Synthesizer Calibration
    FSCAL2     =     0x2A;       // Frequency Synthesizer Calibration
    FREQ0      =     0x3B;       // Frequency Control Word, Low Byte
    FSCAL1     =     0x00;       // Frequency Synthesizer Calibration
    FREQ1      =     0xB1;       // Frequency Control Word, Middle Byte
    FSCAL0     =     0x1F;       // Frequency Synthesizer Calibration
    FREQ2      =     0x10;       // Frequency Control Word, High Byte
    TEST2      =     0x88;       // Various Test Settings
    MDMCFG0    =     0xF8;       // Modem Configuration
    MDMCFG4    =     0x2D;       // Modem configuration
    PA_TABLE1  =     0x00;       // PA Power Setting 1
    MDMCFG2    =     0x13;       // Modem Configuration
    TEST1      =     0x31;       // Various Test Settings
    MDMCFG3    =     0x3B;       // Modem Configuration
    DEVIATN    =     0x62;       // Modem Deviation Setting
    MDMCFG1    =     0x22;       // Modem Configuration
    FSCTRL1    =     0x0C;       // Frequency Synthesizer Control
    TEST0      =     0x09;       // Various Test Settings
    PA_TABLE0  =     0x8E;       // PA Power Setting 0
    PKTCTRL1   =     0x04;       // Packet Automation Control
    PKTCTRL0   =     0x05;       // Packet Automation Control
    FREQEST    =     0x00;       // Frequency Offset Estimate from Demodulator
    ADDR       =     0x00;       // Device Address
    PKTLEN     =     0xFF;       // Packet Length

    this is correct configuration for 433 Mhz of CC1110?

    I have use the file of smartrf_cc1111.h in that they are use the registers like this for CC1111

    //***********************************************************************************************

    /***************************************************************
     *  SmartRF Studio(tm) Export
     *
     *  Radio register settings specifed with C-code
     *  compatible #define statements.
     *
     ***************************************************************/

    // [BM] Modified radio settings for 433MHz, 868MHz, 915MHz

    #ifndef SMARTRF_CC1111_H
    #define SMARTRF_CC1111_H

    #define SMARTRF_RADIO_CC1111

    // ISM_EU configuration
    //
    // Chipcon
    // Product = CC1111
    // Chip version = D (VERSION = 0x03)
    // X-tal frequency = 24 MHz
    // RF output power = 0 dBm
    // RX filterbandwidth = 250.000000 kHz
    // Deviation = 32 kHz
    // Datarate = 76.721191 kBaud
    // Modulation = (1) GFSK
    // Manchester enable = (0) Manchester disabled
    // RF Frequency = 869.524658 MHz
    // Channel spacing = 199.951172 kHz
    // Channel number = 0
    // Optimization = -
    // Sync mode = (3) 30/32 sync word bits detected
    // Format of RX/TX data = (0) Normal mode
    // CRC operation = (1) CRC calculation in TX and CRC check in RX enabled
    // Forward Error Correction = (0) FEC disabled
    // Length configuration = (1) Variable packet length mode, packet length configured by the first received byte after sync word.
    // Packetlength = 255
    // Preamble count = (2)  4 bytes
    // Append status = 1
    // Address check = (0) No address check
    // Device address = 0

    // ISM_US configuration
    //
    // Chipcon
    // Product = CC1111
    // Chip version = D (VERSION = 0x03)
    // X-tal frequency = 24 MHz
    // RF output power = 0 dBm
    // RX filterbandwidth = 250.000000 kHz
    // Deviation = 32 kHz
    // Datarate = 76.721191 kBaud
    // Modulation = (1) GFSK
    // Manchester enable = (0) Manchester disabled
    // RF Frequency = 905.998901 MHz
    // Channel spacing = 199.951172 kHz
    // Channel number = 0
    // Optimization = -
    // Sync mode = (3) 30/32 sync word bits detected
    // Format of RX/TX data = (0) Normal mode
    // CRC operation = (1) CRC calculation in TX and CRC check in RX enabled
    // Forward Error Correction = (0) FEC disabled
    // Length configuration = (1) Variable packet length mode, packet length configured by the first received byte after sync word.
    // Packetlength = 255
    // Preamble count = (2)  4 bytes
    // Append status = 1
    // Address check = (0) No address check
    // Device address = 0

    #define SMARTRF_SETTING_FSCTRL1     0x09
    #define SMARTRF_SETTING_FSCTRL0     0x00
    #ifdef ISM_EU
      #define SMARTRF_SETTING_FREQ2       0x24
      #define SMARTRF_SETTING_FREQ1       0x3A
      #define SMARTRF_SETTING_FREQ0       0xEE
    #else
      #ifdef ISM_US 
      // 902MHz (CHANNR=20 --> 906MHz)
      #define SMARTRF_SETTING_FREQ2       0x25
      #define SMARTRF_SETTING_FREQ1       0x95
      #define SMARTRF_SETTING_FREQ0       0x55
        // 912MHz (CHANNR=0)
    //    #define SMARTRF_SETTING_FREQ2       0x26
    //    #define SMARTRF_SETTING_FREQ1       0x00
    //    #define SMARTRF_SETTING_FREQ0       0x00
      #else
        #ifdef ISM_LF
          // 433.30MHz
          #define SMARTRF_SETTING_FREQ2       0x12
          #define SMARTRF_SETTING_FREQ1       0x14
          #define SMARTRF_SETTING_FREQ0       0x7A
        #else
          #error "Wrong ISM band specified (valid are ISM_LF, ISM_EU and ISM_US)"
        #endif // ISM_LF
      #endif // ISM_US
    #endif // ISM_EU
    #define SMARTRF_SETTING_MDMCFG4     0x6B
    #define SMARTRF_SETTING_MDMCFG3     0xA3
    #define SMARTRF_SETTING_MDMCFG2     0x13
    #define SMARTRF_SETTING_MDMCFG1     0x23
    #define SMARTRF_SETTING_MDMCFG0     0x11
    #define SMARTRF_SETTING_CHANNR      0x00
    #define SMARTRF_SETTING_DEVIATN     0x43
    #define SMARTRF_SETTING_FREND1      0xB6
    #define SMARTRF_SETTING_FREND0      0x10
    #define SMARTRF_SETTING_MCSM0       0x18
    #define SMARTRF_SETTING_FOCCFG      0x1D
    #define SMARTRF_SETTING_BSCFG       0x1C
    #define SMARTRF_SETTING_AGCCTRL2    0xC7
    #define SMARTRF_SETTING_AGCCTRL1    0x00
    #define SMARTRF_SETTING_AGCCTRL0    0xB0
    #define SMARTRF_SETTING_FSCAL3      0xEA
    #define SMARTRF_SETTING_FSCAL2      0x2A
    #define SMARTRF_SETTING_FSCAL1      0x00
    #define SMARTRF_SETTING_FSCAL0      0x1F
    #define SMARTRF_SETTING_TEST2       0x81
    #define SMARTRF_SETTING_TEST1       0x35
    #define SMARTRF_SETTING_TEST0       0x09
    #define SMARTRF_SETTING_PA_TABLE0   0x50
    #define SMARTRF_SETTING_PKTCTRL1    0x04
    #define SMARTRF_SETTING_PKTCTRL0    0x05
    #define SMARTRF_SETTING_ADDR        0x00
    #define SMARTRF_SETTING_PKTLEN      0xFF

    #endif // SMARTRF_CC1111_H

    //***********************************************************************************

    what we do necessary changes in that file?

    Also i use the clock setting like this is it correct?

      SLEEP &= ~(BIT2 | BIT1 | BIT0);   // PM0, both OSC ON  
      asm("NOP");
      while(!(SLEEP & (BIT6 | BIT5)));  // Wait for both OSC to be stable
      for (i=0; i<20000; i++);          // Simple delay
      CLKCON &= ~BIT6;                  // Crystal on
      CLKCON &= ~(0x3F);                // clkspd=000, tickspd=000
      CLKCON |= BIT3 | BIT4 | BIT5;     // clkspd = 24MHz, tickspd = 24MHz/128=187500Hz
      while(!(SLEEP & (BIT6 | BIT5)));  // Wait for both OSC to be stable
      for (i=0; i<20000; i++);          // Simple delay

    //****************************************************************************************

        I know for frequency synthesizer we required the desired changes  FREQ2 and FSCTRL1 , i done as per requirement but my

    CC1110 and CC430 not able to communicate,Please told mi what and where we need to change in the register ?

              I have also done the communication between CC1110 and CC430 its fine.  But when i go for code At that time the problems are occurred between communication.

    So please suggest ,me any solution?

    thank you

    nilesh

     

     

     

     

     

     

  • If you are using TI evaluation modules, the crystal frequency of the CC1111 is not he same as the crystal frequency of the CC1110.  You will need to correct this in the SmartRF Studio parameters in order to get correct FREQx register settings for the carrier frequency.

    Jim Noxon

  • Hi

      As per data sheet I changes in the register and also placed in the smartrf_cc1111.h,But that time error Occured ==>" stack overflow";

    also when i connect my CC1110 with RF studio. I use easy mode and  select the "simplicity ping packet high data rate 250kbaud,base frequency 434 Mhz" at that time it show the

    FREQ2 =10;

    FREQ1=B!;

    FREQ0=3B;

      i think is it correct for 434 Mhz?How to change in the register ?

    I ask because i think we need to change in the program, is it possible if we change in the RF studio its automatically takes in program?

    I double click on the register by which i can change the register values but again when i select simplicity 434Mhz then it comes to their previous value?

    Please told me how to change in the RF studio register?

    Thank you

    nilesh

     

  • If you are using SimpliciTI, then this app note should explain everything you need.

    http://focus.ti.com/lit/an/swra352/swra352.pdf

    Jim Noxon

  •  

    Hi,

       Thank you for your help. I have one doubt  , watch using 26 Mhz crystal and CC1110 also using 26 Mhz Crystal can we copy the register of the watch in CC1110's smartRF_CC1110 file??

    Thanks for link ,now i am going to read that link.

    Thank you ?

    nilesh

     

  • Hi,

          very very thanks for that link I solve the problem of register setting by that link but after correct setting also CC1110 and CC430 are not able to communicate.

     Please told me, Only this register setting is neccecery or required something more to communicate between CC1110 and CC430?

    Thank  you

    nilesh

     

     

  • Just to check, are we sure the CC1110 board has a 434MHz RF path or is there any chance you are using an 868-915MHz board?

    Jim Noxon

  • If the CC1111 and the CC1110 both are using the same crystal frequency (i.e. 26MHz) then the smartrf_CC111x.h files should both be the same.  In that case, if the code works for the CC1111 and the crystals are the same then the same register settings should work for the CC1110.  Again, the crystals must be the same.

    Jim Noxon

  • Hi Sir,

     

        Now i have found the connection between CC1110 and CC430. Very very thanks for your guidance. Now i have going to establish the UART communication.

     

    Thanks & Regards

    Nilesh

  • Hi Sir,

     

        Now i have found the connection between CC1110 and CC430. Very very thanks for your guidance. Now i have going to establish the UART communication.

     

    Thanks & Regards

    Nilesh

  • Hi,

     

        I establish the communication between CC1110 and CC430. Now i written the code for UART. and its working.

    the code of access point received data and UART are as follows :-



      if (SMPL_SUCCESS == SMPL_Receive(linkID[ed_counter], ed_data, &len))
                      {
                          // Switch data packets are 4 byte long
                          if (len == 4)
                          {
                              BSP_TOGGLE_LED1();
                              memcpy(simpliciti_data, ed_data, 4);
                              memcpy(final_ed_app_data[ed_counter], ed_data, 4);
                              setFlag(simpliciti_flag, SIMPLICITI_TRIGGER_RECEIVED_DATA);                  
                            uart0Send(final_ed_app_data[ed_counter], 4);                                             //final_ed_app_data[ed_counter] this contains the data from CC4300
                          }

     

    //send the collected data on UART by this function and this function is in working condition

    void uart0Send(uint16* uartTxBuf, uint16 uartTxBufLength)
    //void uart0Send(uint8_t *uartTxBuf, uint8_t uartTxBufLength)
    {
      uint16 uartTxIndex;


      // Clear any pending TX interrupt request (set U0CSR.TX_BYTE = 0)
      U0CSR &= ~U0CSR_TX_BYTE;

      // Loop: send each UART0 sample on the UART0 TX line
      for (uartTxIndex = 0; uartTxIndex < uartTxBufLength; uartTxIndex++)
      {
        U0DBUF = uartTxBuf[uartTxIndex];
        while(! (U0CSR&U0CSR_TX_BYTE) );
        U0CSR &= ~U0CSR_TX_BYTE;
      }
    }

     

    My prob is UART is sending the another string but not able to send the data which collects from CC430?

    Please if anyone had solution please told me

     

    Thanks in advance

    Nilesh

     

  • Hi,

       I have one more problem regarding UART.

     

    My uart configuration is

     // Define size of allocated UART RX/TX buffer (just an example)
          #define SIZE_OF_UART_RX_BUFFER   50
          #define SIZE_OF_UART_TX_BUFFER   SIZE_OF_UART_RX_BUFFER

          #define UART_TST_CHAR_1  0xA5
          #define UART_TST_CHAR_2  0xB5

          // Test definitions
          //#define UART_TST_MODE_RX
          #define UART_TST_MODE_TX

          // Baudrate = 57.6 kbps (U0BAUD.BAUD_M = 34, U0GCR.BAUD_E = 11)
          #define UART_BAUD_M  34
          #define UART_BAUD_E  12       //115200


          const unsigned char test_string[] = {"1234\r\n"};

                                                           
      // Configure USART0 for Alternative 1 => Port P0 (PERCFG.U0CFG = 0)
      // To avoid potential I/O conflict with USART1:
      // configure USART1 for Alternative 2 => Port P1 (PERCFG.U1CFG = 1)
      PERCFG = (PERCFG & ~PERCFG_U0CFG) | PERCFG_U1CFG;

      // Configure relevant Port P0 pins for peripheral function:
      // P0SEL.SELP0_2/3/4/5 = 1 => RX = P0_2, TX = P0_3, CT = P0_4, RT = P0_5
      P0SEL |=  BIT3 | BIT2;

          // Initialise bitrate = 57.6 kbps (U0BAUD.BAUD_M = 34, U0GCR.BAUD_E = 11)
          U0BAUD = UART_BAUD_M;
          U0GCR = (U0GCR&~U0GCR_BAUD_E) | UART_BAUD_E;


          // Initialise UART protocol (start/stop bit, data bits, parity, etc.):

          // USART mode = UART (U0CSR.MODE = 1)
          U0CSR |= U0CSR_MODE;

          // Start bit level = low => Idle level = high  (U0UCR.START = 0)
          U0UCR &= ~U0UCR_START;

          // Stop bit level = high (U0UCR.STOP = 1)
          U0UCR |= U0UCR_STOP;

          // Number of stop bits = 1 (U0UCR.SPB = 0)
          U0UCR &= ~U0UCR_SPB;

          // Parity = disabled (U0UCR.PARITY = 0)
          U0UCR &= ~U0UCR_PARITY;

          // 9-bit data enable = 8 bits transfer (U0UCR.BIT9 = 0)
          U0UCR &= ~U0UCR_BIT9;

          // Level of bit 9 = 0 (U0UCR.D9 = 0), used when U0UCR.BIT9 = 1
          // Level of bit 9 = 1 (U0UCR.D9 = 1), used when U0UCR.BIT9 = 1
          // Parity = Even (U0UCR.D9 = 0), used when U0UCR.PARITY = 1
          // Parity = Odd (U0UCR.D9 = 1), used when U0UCR.PARITY = 1
          U0UCR &= ~U0UCR_D9;

          // Flow control = disabled (U0UCR.FLOW = 0)
          U0UCR &= ~U0UCR_FLOW;

          // Bit order = LSB first (U0GCR.ORDER = 0)
          U0GCR &= ~U0GCR_ORDER;
    //
    //

              uart0Send((uint16*)test_string, sizeof(test_string) - 1);  //   const unsigned char test_string[] = {"1234\r\n"};

     

    And uart sending function is

     


    void uart0Send(uint16* uartTxBuf, uint16 uartTxBufLength)
    //void uart0Send(uint8_t *uartTxBuf, uint8_t uartTxBufLength)
    {
      uint16 uartTxIndex;


      // Clear any pending TX interrupt request (set U0CSR.TX_BYTE = 0)
      U0CSR &= ~U0CSR_TX_BYTE;

      // Loop: send each UART0 sample on the UART0 TX line
      for (uartTxIndex = 0; uartTxIndex < uartTxBufLength; uartTxIndex++)
      {
        U0DBUF = uartTxBuf[uartTxIndex];
        delay();

        while(! (U0CSR&U0CSR_TX_BYTE) );
        U0CSR &= ~U0CSR_TX_BYTE;
        delay();
       
      
      }
     
    }

     

    In this case my code only takes EVEN no means on uart I see ==> 13 ,but i send  1234

    So whats the problem behind this?

     

     

    Thanks in advance

    Nilesh

  • You need to correct your function declaration back to a pointer to uint8_t* type for the buffer pointer.  When you made it a uint16_t, you cause the pointer to increment by two bytes thus you get 13 instead of 1234.  You are probably getting non printable codes for the remaining two bytes being sent.  I would suggest the following function prototype

    void uart0Send(uint8_t *uartTxBuf, uint16 uartTxBuffLength);

    This way you can still use a uint16 as the length of the buffer but you want your indexing into the buffer to be byte by byte not word by word.

    Jim Noxon

  • Hi Sir,

        Very Very thank you for your help.  Now my communication of CC1110 and CC430 is working fine with UART.

    Very Very thanks,

    Nilesh

  • Hi ,

     

        I made the communication between CC1110 and CC430 on 433 Mhz and that's fine . I want to increase the RF receiving  range of the CC1110 up to 100 -200m.Is their any solution for that?

     how to increase the range of CC1110 Please told me.

    Thanks in advance

    NIlesh

     

  • You should easily be able to achieve 200m at 433 MHz.  We regularly achieve that without any special components, etc.  If you are not achieving this it most likeley is due to attenuation in the RF path or you are using a very small chip antenna.  The links below may help you understand what to expect.  Note they assume ideal conditions.  If you are transmitting through walls or other RF attenuating substances, you will have to include this attenuation into your link budget.

    The Friis equation (http://en.wikipedia.org/wiki/Friis_transmission_equation) relates several radio communications parameters.

    Here is a link to a nice web base calculator. http://www.random-science-tools.com/electronics/friis.htm

    Jim Noxon

  • It is also possible to update the PA table to maximize the output power of the radio itself.  However, at 1dBm (I believe the default power setting) you should be able to achieve 200m of distance with a proper RF signaling path and decent antenna.

    Jim Noxon

  • Hi Sir,

           T hank's for your help.

    Thanks & regards

    Nilesh

     

  • Dear Jim,

    I have the same code implemented in my side for CC1110 and CC430. It works fine.

    I am observing that if by any chance CC1110 gets powered reset. It receives data from already switched ON CC430 in mentioned below code portion in "simpliciti\Components\mrfi\radios\family2\mrfi_radio.c":

    void MRFI_RfIsr(void)

    {

    ...

    ...

    else
      {
        /* CRC passed - continue processing */

        /* ------------------------------------------------------------------
         *    Filtering
         *   -----------
         */

        /* if address is not filtered, receive is successful */
        if (!MRFI_RxAddrIsFiltered(MRFI_P_DST_ADDR(&mrfiIncomingPacket)))
        {
          {
            /* ------------------------------------------------------------------
             *    Receive successful
             *   --------------------
             */

            /* 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]);

            /* Remove the CRC valid bit from the LQI byte */
            mrfiIncomingPacket.rxMetrics[MRFI_RX_METRICS_CRC_LQI_OFS] =
              (mrfiIncomingPacket.rxMetrics[MRFI_RX_METRICS_CRC_LQI_OFS] & MRFI_RX_METRICS_LQI_MASK);


            /* call external, higher level "receive complete" processing routine */
            MRFI_RxCompleteISR();
          }
       }
      }

    }

    But in "simpliciti\Components\mrfi\radios\common\mrfi_f1f2.c"

    uint8_t MRFI_RxAddrIsFiltered(uint8_t * pAddr)
    {

    ...


      uint8_t i;
      uint8_t addrByte;
      uint8_t filterAddrMatches;
      uint8_t broadcastAddrMatches;

      /* first check to see if filtering is even enabled */
      if (!mrfiRxFilterEnabled)
      {
        /*
         *  Filtering is not enabled, so by definition the address is
         *  not filtered.  Return zero to indicate address is not filtered.
         */
        return( 0 ); // <<<<----it returns from here.
      }

      /* clear address byte match counts */ ..

    ...

    }

    I am not able to find using what flow, it causes the "mrfiRxFilterEnabled" to becomes 0x01.

    And hence it doesn't process the incoming data from already switched on CC430 s.

    I need explanation for the following function as well specially the bold comments:

    smplStatus_t SMPL_Init(uint8_t (*f)(linkID_t))
    {
      smplStatus_t rc;

      if (!sInit_done)
      {
        /* set up radio. */
        MRFI_Init();

        /* initialize network */
        if ((rc=nwk_nwkInit(f)) != SMPL_SUCCESS)
        {
          return rc;
        }

        MRFI_WakeUp();
    #if defined( FREQUENCY_AGILITY )
        {
          freqEntry_t chan;

          chan.logicalChan = 0;
          /* ok to set default channel explicitly now that MRFI initialized. */
          nwk_setChannel(&chan);
        }
    #endif
        /* don't turn Rx on if we're an end device that isn't always on. */
    #if !defined( END_DEVICE )
        MRFI_RxOn();
    #endif

    #if defined( END_DEVICE )
        /* All except End Devices are in promiscuous mode */
        MRFI_SetRxAddrFilter((uint8_t *)nwk_getMyAddress());
        MRFI_EnableRxAddrFilter();
    #endif
      }
      sInit_done = 1;

      /* Join. if no AP or Join fails that status is returned. */
      rc = nwk_join();

      return rc;
    }

    Any pointer will be helpful.

    Thanks

    Rahul Deo