Navigation bar
  Print document Start Previous page
 26 of 177 
Next page End  

SAE J2735-Draft-Rev15 [issued: 01-30-07]
-
26 -
This is an SAE Motor Vehicle Council draft document of the DSRC committee, subject to change.
responsibility of the application layer and is outside the scope of this message definition.  In general, this message
depends on the lower layers of the DSRC protocol for successful message delivery, but not to ensure message
delivery order.  A CRC value is provided (which is generated over the entire msg content including the payload) to
detect data corruption. 
In order to transfer data payloads larger than 65535 bytes in length, the sending application SHALL  break them
down into sequential blocks, and then send each with a common sessionID and its own blockID value.  The total
expected number of blocks can be determined from the blockCount value.  The total size of the complete data
payload MAY be determined by multiplying the blockCount value by the wordCount, although individual
applications MAY establish their own rules for this (i.e word counts that vary across blocks are expressly allowed).
 
Therefore, the typical use of this message by an application is to establish a sessionID which will be static for the
life of the transfer, devise a reasonable wordCount for each payload, divide the overall payload by the wordCount
into N such payloads, and thereby creating the value for the blockCount.  If the blockCount is more than one, then
the message is sent with the blockID set to 0,1,2, etc. and the payload Octets and CRC set as needed until all the
data is sent and the blockID is N-1 the value of the blockCount (indicating the last block is being sent).  Upon
receipt of this last message by the receiver, the sessionID may be used at that time to initiate another session. 
Note that other sessions, using other sessionIDs may be occurring during the same time.  Management of
sessionIDs is outside the scope of this message set.  
The CRC value SHALL be computed by setting an initial CRC value of zero, and then computing the final value by
processing the message a single byte at a time and with each element taken in order starting from the msgType
up to and including all of the payload to determine the final value.  The polynomial value and algorithm used SHALL
be the CRC-CCITT. 
ASN.1 Representation:
GenericTransferMsg ::= SEQUENCE {
   msgID       DSRCmsgID,               -- App ID value, 1 byte
   sessionID       INTEGER (0..255),
   applicationID   INTEGER (0..65535),
   blockID         INTEGER (0..65535),  -- the block number which this is
   blockCount      INTEGER (0..65535),  -- the number of blocks in total
   wordCount       INTEGER (0..65535),  -- the number of bytes in this payload
   payLoad         PayloadData,         -- the payload data to be transferred
   crc             INTEGER (0..65535),  -- a CRC, if not provided by the framing
   ...
   }
XML Representation:
<xs:element name="genericTransferMsg" type="GenericTransferMsg"/>
<xs:complexType name="GenericTransferMsg" >
      <xs:sequence>
         <xs:element name="msgID" type="DSRCmsgID" />
         <!-- App ID value,  1 byte -->
         <xs:element name="sessionID" >
            <xs:simpleType>
               <xs:restriction base="xs:unsignedByte"/>
            </xs:simpleType>
         </xs:element>
         <xs:element name="applicationID" >
            <xs:simpleType>
               <xs:restriction base="xs:unsignedShort"/>
            </xs:simpleType>
         </xs:element>
         <xs:element name="blockID" >
            <xs:simpleType>
               <xs:restriction base="xs:unsignedShort"/>
            </xs:simpleType>
         </xs:element>
         <!-- the block number which this is -->