SimpliciTI is a TI proprietary low power Radio Frequency network protocol (SimpliciTI page of the TI website). It is intended to support development of wireless end user devices in environment in which the network support is simple and the developer desires a simple means to do messaging over air. Thus SimpliciTI supplies APIs in order to manage easily messaging between devices.
SimpliciTI is considered as a library and not as an operating system, since it does not implement task handler.
SimpliciTI main features are :
It supports 2 basic topologies: a strictly peer-to-peer and a star topology in which the star hub is a peer to every other device .
SimpliciTI allows user to implement three device types : End Device, Range Extender, and Access Point. Note that a hardware device may host several SimpliciTI devices either of same type or of different type.
It is the base element of the network. It generally supports most of the sensors or actuators of the network. A strictly peer-to-peer network is exclusively composed of end devices (and eventually range extenders).
It supports such features and functions as store-and-forward support for sleeping End Devices, management of network devices in terms of membership permissions, linking permissions, security keys, etc. The Access Point can also support End Device functionality. In the star topology the Access Point acts as the hub of the network.
These devices are intended to repeat frames in order to extend the network range. Due to their function, they are always on. Networks are currently limited to 4 range extenders.
This is the only layer that the developer needs to implement. It is where he develops his application (to manage sensors for example), and implements network communication, by using SimpliciTI network APIs or network applications. Note that it is in this layer that the developer needs to implement reliable transport if required, as there is no Transport layer.
This layer manages the Rx and Tx queues and dispatches frames to their destination. The destination is always an application designated by a Port number. Network applications are internal peer-to-peer objects intended to manage network. They work on a predefined port and are not intended to be used by the developer (except Ping for debugging purposes) Their usage depends on the SimpliciTI device type. These applications are:
Source code files for network layer are located in /Components/simpliciti.
This layer may be divided in 2 entities:
with the radio (/Components/mrfi);
toward the network layer (/Components/bsp).
SimpliciTI supports 5 families of TI radios :
Source code files for these 5 families of radio are located in the /mrfi/radios folder.
SimpliciTI implements 2 families of microcontrollers : Intel 8051 and TI MSP430 (source code directory : /bsp/mcus).
The following boards are supported : CC2430DB, CC2530EM, EXP461x, EZ430RF, RFUSB, SRF04EB, SRF05EB (source code directory : /bsp/boards).
As a convenience SimpliciTI also supports LEDs and button/switch peripherals attached to GPIO pins of the microcontroller. But no other services are provided such as UART drivers, LCD drivers, or timer services (source code directory : /bsp/drivers directory).
APIs enable user to implement a reliable network with little effort. But we have to keep in mind that the resulting network sacrifices flexibility for simplicity. Here are the different APIs supplied by SimpliciTI:
If you want to be sure to use the latest available version of SimpliciTI, you can put the wsn430 board code of the old version SimpliciTI into the new one.
SimpliciTI is written to be compiled with the IAR Embedded Workbench environment of the IAR Systems society. So in order to make it compilable with MSPGCC, some minor changes have to be performed on the SimpliciTI code.
#error "ERROR: Unknown compiler."
#ifdef __GNUC__ #include <io.h> #include <signal.h> #include <iomacros.h> #define __bsp_ISTATE_T__ uint16_t #define __bsp_ISR_FUNCTION__(f,v) interrupt (v) f(void) #define __bsp_ENABLE_INTERRUPTS__() eint() #define __bsp_DISABLE_INTERRUPTS__() dint() #define __bsp_INTERRUPTS_ARE_ENABLED__() (READ_SR & 0x8) #define __bsp_GET_ISTATE__() (READ_SR & 0x8) #define __bsp_RESTORE_ISTATE__(x) st(if((x&GIE))_BIS_SR(GIE);) #else #error "ERROR: Unknown compiler." #endif
typedef signed char int8_t; typedef signed short int16_t; typedef signed long int32_t; typedef unsigned char uint8_t; typedef unsigned short uint16_t; typedef unsigned long uint32_t;
#ifndef __GNUC__ typedef signed char int8_t; typedef signed short int16_t; typedef signed long int32_t; typedef unsigned char uint8_t; typedef unsigned short uint16_t; typedef unsigned long uint32_t; #endif
Replace (l 197):
#error "ERROR: Debounce delay macro is missing."
#ifndef __GNUC__ #error "ERROR: Debounce delay macro is missing." #endif
Replace (l 40) :
#ifndef __GNUC_ #include <intrinsics.h> #endif
Just download and extract the simpliciti-wsn430-v1.1.1.tar.gz archive. SimpliciTI 1.1.1 ported for WSN430 and compilable with MSPGCC is ready to use.
SimpliciTI source code is in the /Components directory, including WSN430 board source code (located in /Components/bsp/boards). Examples are stored in the /Projects/Examples folder. SimpliciTI official documentations are available in the /Documents directory.
A program example using SimpliciTI for WSN430 is presented on that page.