Hello World RTOS

Description

This variation of the Hello World application integrates a Real-Time Operating System (RTOS). It can serve as a starting point for RTOS-based applications using the SWC.

Behavior

In this example, an RTOS is used to synchronize four different processes.

The SWC Callback thread, which has the highest priority, is used to manage the processing of the SPARK Wireless Core callback queue. This thread processes the TX and RX callbacks of the SWC and a semaphore is used to protect access to the callback queue.

Two virtual timers are generated through the RTOS: the first is used to periodically trigger data generation to be sent by the SWC and the second to print the statistics provided by the SWC.

Finally, the UI thread is used to handle the button mapping depending on the app’s state. It also handles the pairing process.

The system consists of two devices set up with the same behavior. Both devices transmit a packet to the other device. The payload consists of the string “Hello, World!” appended by a 32-bit counter value. The counter value is incremented before each transmission. Upon receiving the packet, the application prints the message with the SWC statistics on a serial interface.

Application Schedule

The following diagram illustrates the general structure of the schedule used in this application.

Hello Word RTOS schedule

Figure 26: Hello World RTOS Application’s Schedule.

Pairing

On boot, devices attempt to pair automatically. If unsuccessful, manual pairing can be performed afterward to use the application.

Auto Pairing:
  • On boot, devices automatically start the pairing process. RGB blinks blue twice to indicate that pairing is in progress.

  • If the pairing procedure is unsuccessful, RGB blinks red twice after 10 seconds.

  • Once successfully paired, RGB turns magenta, and the devices begin exchanging application data.

Manual Pairing:
  • Press the SW1 button on both devices to start the pairing procedure; RGB blinks blue twice when doing so.

  • If the pairing procedure is unsuccessful, RGB blinks red twice after 10 seconds.

  • Once successfully paired, RGB turns magenta, and the devices begin exchanging application data.

Unpairing:
  • When paired, pressing the SW1 button again unpairs the device; RGB blinks red twice to indicate that unpairing has been completed.

  • Unpairing causes the devices to forget their learned addresses. The devices are no longer able to exchange application data.

  • To start a new pairing procedure, both devices must be unpaired first.

Note

LED behavior changes in pairing mode versus normal execution mode. During pairing mode, LEDs indicate pairing status as described below. Once paired, LEDs indicate packet transmission and reception and fallback mode status.

Auto Pairing:
  • On boot, devices automatically start the pairing process. LED0 blinks twice to indicate the pairing is in progress.

  • If the pairing procedure is unsuccessful, all LEDs blink twice after 10 seconds.

  • Once successfully paired, LEDs turn on sequentially, then turn off, and the devices begin exchanging application data.

Manual Pairing:
  • Press the SW1 button on both devices to start the pairing procedure; LED0 blinks twice when doing so.

  • If the pairing procedure is unsuccessful, all LEDs blink twice after 10 seconds.

  • Once successfully paired, LEDs turn on sequenstially, then turn off, and the devices begin exchanging application data.

Unpairing:
  • When paired, pressing the SW1 button again unpairs the device; All LEDs blink twice to indicate that unpairing has been completed.

  • Unpairing causes the devices to forget their learned addresses. The devices are no longer able to exchange application data.

  • To start a new pairing procedure, both devices must be unpaired first.

Board User Interface

  • LED1 toggles every time a packet is successfully transmitted (almost always on because of the high packet rate).

  • LED2 toggles every time a packet is successfully received (almost always on because of the high packet rate).

Table 35: Device User Interface Description

Interface

Name

Description

SW1

Pairing Process

Pair, unpair, or abort the pairing process depending on the current state.

SW2

Reset Stats

Reset the TX and RX statistics.

SW3

N/A

N/A

SW4

N/A

N/A

LED1

Transmission Success

Toggle LED when a wireless transmission is successful.

LED2

Reception Success

Toggle LED when a wireless reception is successful.

LED3

N/A

N/A

LED4

N/A

N/A

RGB

Pairing Event

Indicate pairing event as described in the pairing section.

  • LED0 toggles every time a packet is successfully transmitted (almost always on because of the high packet rate).

  • LED1 toggles every time a packet is successfully received (almost always on because of the high packet rate).

Table 36: Device User Interface Description

Interface

Name

Description

SW1

Pairing Process

Press and hold for 3 seconds: Pair, unpair, or abort the pairing process depending on the current state.

Reset Stats

Press for less than 250 ms: Reset the TX and RX statistics.

SW2

LED0

Transmission Success

Toggle LED when a wireless transmission is successful.

LED1

Reception Success

Toggle LED when a wireless reception is successful.

LED2

N/A

N/A

Certification

This application has the ability to run in Certification Mode.

When certification mode is active, a dedicated LED is activated to indicate that the mode is enabled. All activity status LEDs (transmission, reception, fallback, and payload) are suppressed so that only the certification indicator is visible.

Table 37: Certification Mode Indicator

Board

Indicator

Quasar

RGB LED steady yellow.

EVK1.4

Steady LED2.

Only one level of certification is needed for this application since the datarate is constant. The activation process must be performed independently on both the Coordinator and the Node.

Table 38: Certification Mode Activation

Certification Mode

Activation Process

Hello World RTOS Certification

Hold SW2 at startup until the LED 1 blinks once, then release.

Terminal

The following figure shows the terminal output of this application.

See Viewing the Terminal for details on how to view the terminal output.

Hello World RTOS Serial Interface Output

Figure 27: Hello World RTOS Serial Interface Output (from left: Coordinator & Node).

See Wireless Core API - Statistics for more details.