User Tools

Site Tools


projects:crazyflie:firmware:comm_protocol

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
projects:crazyflie:firmware:comm_protocol [2013-09-17 10:40]
ledvinap [Logging]
projects:crazyflie:firmware:comm_protocol [2021-06-24 16:49] (current)
kimberly
Line 1: Line 1:
 +<WRAP center round important 60%>
 +This page has deprecated and will be archived. Please go to [[https://www.bitcraze.io/]].
 +</WRAP>
 ====== Overview ====== ====== Overview ======
 CRTP is the protocol used to communicate with Crazyflie. Is originally stands for //Crazy RealTime Protocol//. The protocol permits to communicate independently with the copter subsystem and would have the capability to handle packet priorities. CRTP is the protocol used to communicate with Crazyflie. Is originally stands for //Crazy RealTime Protocol//. The protocol permits to communicate independently with the copter subsystem and would have the capability to handle packet priorities.
Line 200: Line 203:
 | Start a log block                          | 0x03 (CONTROL_START_BLOCK) to identify the command for enabling logging data from an existing block  | | Start a log block                          | 0x03 (CONTROL_START_BLOCK) to identify the command for enabling logging data from an existing block  |
 |        :::                        |          | Block ID | |        :::                        |          | Block ID |
-|        :::                        |          | Period in 10th of ms |+|        :::                        |          | Period in 10ms increments |
 |  Stop a log block                          | 0x04 (CONTROL_STOP_BLOCK) to identify the command for disabling logging data from an existing block  | |  Stop a log block                          | 0x04 (CONTROL_STOP_BLOCK) to identify the command for disabling logging data from an existing block  |
 |        :::                        |          | Block ID | |        :::                        |          | Block ID |
Line 305: Line 308:
 === Log data access (Port 5 channel 2) === === Log data access (Port 5 channel 2) ===
 Logging data is sent back to the copter as raw data with only the block id. This means that the lookup of what data is for what variable has to be done on the computer side. Log  Logging data is sent back to the copter as raw data with only the block id. This means that the lookup of what data is for what variable has to be done on the computer side. Log 
-block header contains 3 byte timestamp, its value is number of milliseconds from Crazyflie system start (it will wrap around in about 5 hours). All values are sent in little endian format.+block header contains 3 byte timestamp, its value is number of microseconds from Crazyflie system start (it will wrap around in about 16 seconds. Is is also currently based on xTaskGetTickCount, so resolution is only 1ms). All values are sent in little endian format.
  
 ^  **Byte**  ^  **Description**  ^ ^  **Byte**  ^  **Description**  ^
 |          | Block ID | |          | Block ID |
-|    1-3     | Block send time timestamp in ms, LSB first  |+|    1-3     | Block send time timestamp in us, LSB first  |
 |    4-31    | Logged variable values, LSB first  | |    4-31    | Logged variable values, LSB first  |
  
Line 320: Line 323:
  
 Receiving a log block 0xbb with timestamp 130.532s (0x1FDE4 ms), logging uint16 variable with value 0xBABE: Receiving a log block 0xbb with timestamp 130.532s (0x1FDE4 ms), logging uint16 variable with value 0xBABE:
-CF -> Computer : 0x[5,2] 0xBB 0xE4 0xDF 0x01 0xBE 0xBA+CF -> Computer : 0x[5,2] 0xBB 0xE4 0xFD 0x01 0xBE 0xBA
 </code> </code>
 ==== Parameters ==== ==== Parameters ====
-The parameters system aims at making accessible all the gettable and settable parameters of the copter. In the copter a table of parameters is hold and can be retrieved. In this table every parameter name is associated with an ID and a group name. Three ID are used to acces the TOC and the paramareters:+The parameters system makes all the gettable and settable parameters of the copter accessibleThe copter holds a table of parameters which can be retrieved. In this table every parameter name is associated with an ID and a group name. Three IDs are used to acces the TOC and the parameters:
  
-| **Port**  | **Function**      | +Port      ^ Channel     Function          ^ 
-|  (0,9,0)  | TOC access        | +|  2        |           | TOC access        | 
-|  (0,9,1)  | Parameter read    | +|  2        |           | Parameter read    | 
-|  (0,9,2)  | Parameter write   |+|  2        | 2           | Parameter write   |
  
-=== TOC access === +=== TOC access (Port 2 channel 0) === 
-This ports permits to access the parameters table of content. The first byte of the message is a message ID, three messages ID are defined:+These messages permit to access the parameters table of content. The first byte of the message is a message ID, three messages ID are defined:
  
-| **Message ID** | **Meaning in upstream packets** | **Meaning in downstream packets** | +^  Message ID  ^  Meaning in upstream packets  ^  Meaning in downstream packets      ^ 
-|            0 | Reset TOC pointer             | Last TOC element                +|            0 | Reset TOC pointer             | Last TOC element                    
-|            1 | Get next TOC element          | TOC element                     +|            1 | Get next TOC element          | TOC element (ID, type, group, name) 
-|            3 | Get TOC CRC32                 | TOC CRC32                       |+|            3 | Get TOC CRC32                 Number of parameters, TOC CRC32     |
  
-The upstream ID are commands and are sent alone. The downstream have the following formats:+The upstream ID are commands and are sent alone. The downstream has the following formats:
  
 <code> <code>
Line 352: Line 355:
 </code> </code>
  
-The parameters are sequentially requested by the PC until the end. When the last parameter is reached it has the ID 0 'Last TOC element'. The reset command permits to reset the TOC pointers so that the next sent TOC element will be the first one. The Get CRC commands also returns the number of parameters.+The parameters are sequentially requested by the PC until the end. When the last parameter is reached it has the ID 0 'Last TOC element'. The reset command permits to reset the TOC pointers so that the next sent TOC element will be the first one. The "Get TOC CRC" command also returns the number of parameters.
  
-The CRC32 is a hash of the copter TOC. This is aim at implementing caching of the TOC in the PC Utils to avoid fetching the full TOC each time the copter is connected.+The CRC32 is a hash of the copter TOC. This is aimed at implementing caching of the TOC in the PC Utils to avoid fetching the full TOC each time the copter is connected.
  
-=== Parameter read === +=== Parameter read (Port 2 channel 1) and parameter write (Port 2 channel 2)=== 
-**TODO** + 
-=== Parameter write === +The following messages are sent from the client to the Crazyflie: 
-**TODO**+^  **Request for**   ^  **Byte**  ^  **Description**  ^ 
 +|  Parameter read    |          | The id of the parameter to read   | 
 +|  Parameter write   |          | The id of the parameter to write   | 
 +|   :::              |          | The value to set | 
 + 
 +The following messages are sent from the Crazyflie to the client: 
 +^  **Reply for**             **Byte**  ^  **Description** 
 +|  Parameter read & write            | Parameter id      | 
 +|   :::                         1-n    | Parameter value   |
  
 === Fight control ==== === Fight control ====
projects/crazyflie/firmware/comm_protocol.1379407243.txt.gz · Last modified: 2015-07-15 16:30 (external edit)