Simple Sensor Interface protocol
   HOME

TheInfoList



OR:

The Simple Sensor Interface (SSI) protocol is a simple communications protocol designed for data transfer between computers or user terminals and smart sensors. The SSI protocol is an Application layer protocol as in the
OSI model The Open Systems Interconnection model (OSI model) is a conceptual model that 'provides a common basis for the coordination of SOstandards development for the purpose of systems interconnection'. In the OSI reference model, the communications ...
. The SSI protocol has been developed jointly by
Nokia Nokia Corporation (natively Nokia Oyj, referred to as Nokia) is a Finnish multinational telecommunications, information technology, and consumer electronics corporation, established in 1865. Nokia's main headquarters are in Espoo, Finland, i ...
,
Vaisala Vaisala Oyj () is a Finnish company that develops, manufactures and markets products and services for environmental and industrial measurement. Their major customer groups and markets are national meteorological and hydrological services, avia ...
,
Suunto Suunto Oy is a Finnish company that manufactures and markets sports watches, dive computers, compasses and precision instruments. Headquartered in Vantaa, Finland, Suunto employs more than 300 people worldwide, and its products are sold in over ...
, Ionific, Mermit and
University of Oulu The University of Oulu ( fi, Oulun yliopisto) is one of the largest universities in Finland, located in the city of Oulu. It was founded on July 8, 1958. The university has around 13,000 students and 2,900 staff. 21 International Master's P ...
. Currently SSI is being developed within the Mimosa Project, part of the
European Union The European Union (EU) is a supranational political and economic union of member states that are located primarily in Europe. The union has a total area of and an estimated total population of about 447million. The EU has often been de ...
Framework Programmes for Research and Technological Development The Framework Programmes for Research and Technological Development, also called Framework Programmes or abbreviated FP1 to FP9, are funding programmes created by the European Union/European Commission to support and foster research in the Europe ...
. The SSI protocol is used in point-to-point communications over
UART A universal asynchronous receiver-transmitter (UART ) is a computer hardware device for asynchronous serial communication in which the data format and transmission speeds are configurable. It sends data bits one by one, from the least signific ...
and networking nanoIP applications. SSI also provides polling sensors and streaming sensor data. For RFID sensor tags SSI specifies memory map for sensor data. The criteria for SSI protocol development are: * general purpose * simple – minimal overhead * small footprint on the server (sensor) side Sample implementation of the SSI protocol for
MSP430 The MSP430 is a mixed-signal microcontroller family from Texas Instruments, first introduced on 14 February 1992. Built around a CPU, the MSP430 is designed for low cost and, specifically, low power consumption embedded applications. Applic ...
microcontrollers A microcontroller (MCU for ''microcontroller unit'', often also MC, UC, or μC) is a small computer on a single VLSI integrated circuit (IC) chip. A microcontroller contains one or more CPUs ( processor cores) along with memory and programmabl ...
will be published as open source during August 2006 by Nokia.


SSI message structure

An SSI message consists of a 2-byte header and an ''n''-byte payload. The header consists of a one byte address (wildcard is '?', 0x3F in
ASCII ASCII ( ), abbreviated from American Standard Code for Information Interchange, is a character encoding standard for electronic communication. ASCII codes represent text in computers, telecommunications equipment, and other devices. Because ...
) and a one byte message/command type. The different possible values for the message/command type are presented in SSI v1.2 command base.


SSI v1.2 command base

{, class="wikitable" , - ! Command byte ! Direction ! Description , - , Q,q (0x51, 0x71) , C-> , Query , - , A,a (0x41, 0x61) , <-S , Query reply , - , C,c (0x43, 0x63) , C-> , Discover sensors , - , N,n (0x4E, 0x6E) , <-S , Discovery reply , - , Z,z (0x5A, 0x7A) , C-> , Reset sensor device , - , G,g (0x47, 0x67) , C-> , Get configuration data for a sensor. , - , X,x (0x58, 0x78) , <-S , Configuration data response , - , S,s (0x53, 0x73) , C-> , Set configuration data for a sensor , - , R,r (0x52, 0x72) , C-> , Request sensor data , - , V,v (0x56, 0x76) , <-S , Sensor data response , - , D,d (0x44, 0x64) , <-S , Sensor response with one byte status field , - , M,m (0x4D, 0x6D) , <-S , Sensor response with many data points , - , O,o (0x4F, 0x6F) , C-> , Create sensor observer , - , Y,y (0x59, 0x79) , <-S , Observer created , - , K,k (0x4B, 0x6B) , <-> , Delete sensor observer / listener , - , U,u (0x55, 0x75) , <-> , Observer / listener finished , - , L,l (0x4C, 0x6C) , <-S , Request sensor listener , - , J,j (0x4A, 0x6A) , C-> , Sensor listener created , - , E,e (0x45, 0x65) , <-> , Error , - , F,f (0x46, 0x66) , <-> , Free data for custom purposes The group of commands: * Q – query * A – query reply * C – sensor discovery * N – discovery reply * Z – reset * G – get sensor configuration * S – set sensor configuration are used to find and configure sensor units utilizing the SSI-protocol. The group of commands: * R – request sensor data * V – data response * D – data response with status field are used to read sensor data infrequently. For data streaming purposes defined commands are: * O – create sensor observer * Y – observer created * K – delete observer * U – observer finished * L – request sensor listener * J – sensor listener created. * V – data response * M – data response with many data points


Point-to-point SSI

Point-to-point messaging with SSI can be done with SSI/UART. An SSI UART message consists of a 3-byte UART header, an SSI message as the payload and an optional Cyclic redundancy check
checksum A checksum is a small-sized block of data derived from another block of digital data for the purpose of detecting errors that may have been introduced during its transmission or storage. By themselves, checksums are often used to verify data ...
. The use of a checksum is defined by the SSI message/command type, with lower case commands indicating the use of CRC. The header consists of a start byte (0xFE), a 2-byte (total) length of the message and a 2-byte bitwise Negation length to help identify the frame start.


Networking SSI

SSI networking in a variable environment is done using nanoIP. In a typical case using SSI, an individual message is not important, and so nanoUDP (simplified UDP defined by nanoIP) is used as the message format. If individual messages are important, nanoTCP can be used, as it provides flow control and retransmission at a cost of message size and increase in network traffic. A nanoUDP message consists of a 5-byte nanoUDP header, an ''n''-byte message payload and an optional 2-byte CRC checksum. The header consists of one protocol byte, a 2-byte message length (total length, including header and CRC), a 1-byte source port and a 1-byte destination port number. The destination port number should be 0x28 for SSI messages.


Version history

*0.1 March 14, 2003 *0.2 April 29, 2003 *0.3 May 20, 2003 *0.4 October 2, 2003 *0.5 December 5, 2003, not compatible with previous *0.6 November 3, 2004 *0.7 December 22, 2004 *0.8 January 14, 2005 *1.0 April 11, 2005 *1.1 October 27, 2005 *1.2 May 27, 2006, not compatible with previous


External links


nanoIP
Network protocols Application layer protocols