Difference between revisions of "Async kb"

From Felixl.com
Jump to navigationJump to search
(S)
(S)
Line 97: Line 97:
 
.data[1] .... .data[msg.length-1] == id's of requested frames
 
.data[1] .... .data[msg.length-1] == id's of requested frames
  
== S ==
+
== Data Frame ==
 +
 
 +
.data[0] = frame id
 +
 
 +
.data[1] = number of frames in current block (not including '''0-Frame''')
 +
 
 +
.data[2] .... .data[N] == user data
 +
 
 +
 
 +
There are 2 different frame types --- '''"0-Frame"''' and '''Regular Frame'''
 +
 
 +
'''0-Frame''' is the first frame to be send out -- it has description of current block transfer.
 +
 
 +
'''0-Frame''' has following structure:
 +
 
 +
.data[0]=0x00
 +
 
 +
.data[1]=number of frames in current block (not including '''0-Frame''')
 +
 
 +
.data[2]=0x00
 +
 
 +
.data[3]=Flags ( 0x01 == acknowledge after the entire block, 0x02 = acknowledge every frame)
 +
 
 +
.data[4]=total block count
 +
 
 
== S ==
 
== S ==

Revision as of 10:49, 6 March 2007

Terms:

connection: data transfer session, highest in hierarchy

block: data transfer unit, consists of several frames

frame: lowest data transfer unit. basically -- one network message


Message type ==

  • 0x80 = data
  • 0x90 = command

commands:

Request Session

.data[0] = 0xca -- request session

parameters:

.data[1] = priority (always 1)

.data[2] , .data[3] -- message packet max size (16 bit, big endian)

.data[4] == 0x01 (revision)

Session Granted

.data[0] = 0xf2 -- session granted

parameters:

.data[1] = number of frames per block

.data[2] = revision (always 0x01)

.data[3] = priority acknowledge (should reply with the same priority requested)

.data[4] .data[5] = bytes per frame (maximum allowed bytes per frame, 16bit, bigendian)

Starting Transfer

.data[0] = 0xfd

no parameters

Frame Acknowledge

.data[0] = 0xfa (frame acknowledge)

parameters

.data[1]= total number of frames in this block

.data[2]= id of received message

.data[3]= id of current block

Frame Not Acknowledged

.data[0] = 0xfa

.data[1] = 0x00

.data[2] = 0x00

params :

.data[3] = id of current block

Single Frame Request

.data[0] = 0xfb

.data[1] = 0x00

parameters:

.data[2] = id of requested frame in current block

Current block request

.data[0] = 0xfb

.data[1] = 0x00

.data[2] = 0x00

Multiple Frame Request

.data[0] = 0xff


.data[1] .... .data[msg.length-1] == id's of requested frames

Data Frame

.data[0] = frame id

.data[1] = number of frames in current block (not including 0-Frame)

.data[2] .... .data[N] == user data


There are 2 different frame types --- "0-Frame" and Regular Frame

0-Frame is the first frame to be send out -- it has description of current block transfer.

0-Frame has following structure:

.data[0]=0x00

.data[1]=number of frames in current block (not including 0-Frame)

.data[2]=0x00

.data[3]=Flags ( 0x01 == acknowledge after the entire block, 0x02 = acknowledge every frame)

.data[4]=total block count

S