Protocol

ArduRPC brings remote procedure calls to microcontrollers. The binary protocol has been designed to be simple and flexible. Basic and also complex data types are supported.

Communication

Request

Name Type Comment
Version uint8 Protocol version (default: 0)
Handler ID uint8 ID of the handler
Command ID uint8 ID of the command to call
Length uint8 Length of data in bytes
Data   List of parameters
Version:
This is the version of the protocol. At the moment only version 0 is supported.
Handler ID:
The ID of the handler to use.
Command ID:
The ID of the command to call.
Length:
Length of the data in bytes.
Data:
A list of parameters. See Data Types for more information.

Response

Name Type Comment
Return code uint8 The return code. See Return codes
Data Mixed The result
Data:
The result data. Only one type of data is allowed.

Data Types

Basic data types

Basic data types have a fixed length like a signet Integer.

Data Types

Identifier Data Type Size in Bytes
0x00 None 0
0x01 Signed Char 1
0x02 Unsigned Char 1
0x03 Signet Short 2
0x04 Unsigned Short 2
0x05 Signed Long 4
0x06 Unsigned Long 4
0x07 Signed Long Long 8
0x08 Unsigned Long Long 8
0x09 Float [1] 4

Data structure:

Name Type Comment
Identifier uint8 The identifier. See Data types for more information.
Data   The data specified by the identifier.

Complex data types

At the moment the following data types are supported.

Identifier Data Type
0x10 Simple array
0x11 String
0x12 Multicolumn array
0x13 Value array

Array:

Name Type Comment
Identifier uint8 Set to 0x10. See data types for more information.
Data Identifier uint8 Basic data type of the elements.
Length uint8 Length of the string in bytes.
Data   The string.

String:

Name Type Comment
Identifier uint8 Set to 0x11. See data types for more information.
Length uint8 Length of the string in bytes.
Data   The string.

Multi column array:

Name Type Comment
Identifier uint8 Set to 0x12. See data types for more information.
Columns uint8 Number of columns.
Column Identifier 1 uint8 The identifier for column 1
Column Identifier m uint8 The identifier for column m
Length uint8 Number of rows
Row 1   Data of row 1
Row n   Data of row n

Value array:

Name Type Comment
Identifier uint8 Set to 0x13. See data types for more information.
Length uint8 Length of the array in bytes.
Data   List of identifiers and values

Return codes

Code Comment
0 Success
122 Error in the package data
123 Error while parsing the header
124 Function not found
125 Handler not found
126 Command not found
127 Failure no reason given

Example

Basic data types

Request:

Data Comment
0x00 Protocol version (default: 0)
0x03 ID of the handler.
0x02 ID of the command to call
0x05 Length of data in bytes
0x10 Value: 16 (Type: uint8)
0x00 Value: 1 (Type: uint16)
0x01

Response:

Data Comment
0x00 Success
0x01 Identifier for Unsigned Char
0x10 Value: 16

Footnotes

[1]Float values MUST use the IEEE 754 binary32 representation format.