[riot-users] Radio Interrupt Handler

Navneet Pandey navneet.pandey at outlook.in
Fri Nov 9 12:19:49 CET 2018


Hello Joakim, thanks for an elaborate explanation, I will check those articles out. Before I do, I have a few more queries.

Could you also point out which module is responsible for radio switch on/off, assuming radio only has a binary mode unlike the CPU.
Is it 'at86rf2xx_netdev' or something else?

Also, is it possible to keep the radio open always for the duration of an experiment? And may be avoid deep sleep mode as well?

And am I correct when I say that 'cortex_sleep(deep)' puts CPU to sleep but doesn't touch the radio (based on what you replied).

Based on some of the modules on which I enabled debugging:
Following was the pattern:  PACKET SENT-> TX_Ends -> pm_set_lowest -> Idle -> pm_set_lowest -> RX_Ends -> PACKET RCVD.
I did not understand the part where CPU moved to idle state before going to sleep again. Did I miss any state in the process (probably did not enable debugging)?

I know these are a lot of questions. I really appreciate that you are answering my question in great detail. Thank you.

Regards,
Navneet Pandey

From: Navneet Pandey <navneet.pandey at outlook.in>
Sent: Thursday, November 8, 2018 1:08 PM
To: users at riot-os.org
Subject: RE: Radio Interrupt Handler

Hello Joakim,

Thank you, the information was really helpful. I was exploring the 'at86rf2xx_netdev.c' file. I noticed something weird. When I enabled debugging all I got was

  *   To Idle state
  *   Evt TX_END
  *   Evt RX_END

By enabling debugging in pm_layered.c and pm.c, I noticed cortex_sleep(deep) was being called when radio was not doing anything. So why am I not seeing any of the following debug statements being printed (or in other words none of the following cases being invoked).
case NETOPT_STATE_STANDBY:
            DEBUG("STANDBY\n");
            at86rf2xx_set_state(dev, AT86RF2XX_STATE_TRX_OFF);
            break;
        case NETOPT_STATE_SLEEP:
            DEBUG("To SLEEP\n");
            at86rf2xx_set_state(dev, AT86RF2XX_STATE_SLEEP);
            break;
        case NETOPT_STATE_IDLE:
            DEBUG("To IDLE\n");
            at86rf2xx_set_state(dev, AT86RF2XX_STATE_RX_AACK_ON);
            break;

Regards,
Navneet Pandey

From: Navneet Pandey <navneet.pandey at outlook.in<mailto:navneet.pandey at outlook.in>>
Sent: Monday, November 5, 2018 11:10 AM
To: users at riot-os.org<mailto:users at riot-os.org>
Subject: Radio Interrupt Handler

Hello,

Could someone please point out the code where radio is switched on/off when sending a MAC/UDP packet.

I am expecting something similar to the following code snippet:
/** Turn the MAC layer on. */
  int (* on)(void);

  /** Turn the MAC layer off. */
  int (* off)(int keep_radio_on);

This code is from Contiki.

I am interested in understanding the time it takes for system to wake up from sleep (dormant mode) to receive packets.

Thank you.

Regards,
Navneet Pandey

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.riot-os.org/pipermail/users/attachments/20181109/aaacff20/attachment.html>


More information about the users mailing list