Changes

Jump to navigation Jump to search
935 bytes added ,  00:55, 29 June 2017
Line 14: Line 14:     
== Gesture Specification ==
 
== Gesture Specification ==
The following is STINGR Gesture Specification II, which replaces the theoretical, but never implemented, [[STINGR Gesture Specification I]].
+
The following is STINGR Gesture Specification II, which replaces the theoretical, but never implemented, [[STINGR Gesture Specification I]].<br/>
As mentioned above, a Gesture consists of a series of frames, each with a specific purpose. Each Gesture is transmitted on the CAN Bus, and allows all boards to determine if a Gesture is targeted towards them, and act appropriately. This section defines the specification of a Gesture, including a description of each of the frames.
+
As mentioned above, a Gesture consists of a series of CAN Packets -- these packets specify the source and destination of a gesture, some auxiliary data, and the primary data payload. STINGR manages CAN Packets, which are obfuscated from the end-user.  
   −
More explicitly, a Gesture looks as so, with the leftmost frames being transmitted first, and the rightmost frames being transmitted last.
+
More explicitly, a Gesture looks is comprised of an initialization CAN Packet, followed by up to 256 additional CAN Packets, each comprised of a 1 byte header and 7 byte data payload, for a total possible data length of 256 * 7 = 1,792 bytes. The initialization CAN Packet consists of the standard header, 2 bytes of additional information, and 5 bytes of data payload. Subsequent CAN Packets consist of the 1 byte header and up to 7 bytes of data. The general structure of this format is as such:
 +
 
 +
{| class="wikitable"
 +
|Initialization Packet (8 bytes)
 +
|Data Packets (up to 256)
 +
|}
 +
 
 +
The following is the general structure of a generic CAN Packet -- specifically, the 1 byte header and 7 byte data payload sections.
 +
 
 +
{| class="wikitable"
 +
| style="background-color: #4CC9FF;"|
 +
Source (0 - 16) (4 bit)
 +
| style="background-color: #8AFFDF;"|
 +
IsInit (1 bit)
 +
| style="background-color: #FFA6CE;"|
 +
Parity (1 bit)
 +
| style="background-color: #EDFF7A;"|
 +
Message ID (2 bit)
 +
| style="background-color: #AD6DF9;"|
 +
Data (7 bytes)
 +
|}
 +
 
 +
The following is the initialization CAN Packet -- the first packet sent to begin a gesture transmission. It consists of a standard header followed by a two-byte auxiliary information frame.
    
{| class="wikitable"
 
{| class="wikitable"
 
| style="background-color: #4CC9FF;"|
 
| style="background-color: #4CC9FF;"|
Type (Req/Resp) (1 bit)
+
Header (1 byte)
 
| style="background-color: #8AFFDF;"|
 
| style="background-color: #8AFFDF;"|
State Flags (7 bits)
+
Destination Identifier (4 bits)
 
| style="background-color: #FFA6CE;"|
 
| style="background-color: #FFA6CE;"|
Source Identifier (8 bit)
+
Flags (4 bits)
 
| style="background-color: #EDFF7A;"|
 
| style="background-color: #EDFF7A;"|
Destination Identifier (8 bit)
+
Message Length (in # Packets) (8 bits)
 
| style="background-color: #AD6DF9;"|
 
| style="background-color: #AD6DF9;"|
Data (4-500 bytes)
+
Data (5 bytes)
| style="background-color: #C25959;"|
  −
Checksum (8 byte)
   
|}
 
|}
 +
    
=== Type Frame ===
 
=== Type Frame ===

Navigation menu