Rest API
OLAF includes an internal REST API using Flask. The REST API is used to give insight into what the OLAF app is doing during testing and system integration without using the CAN bus.
The REST API provides the /od/<index>/ and /od/<index>/<subindex>/ endpoints that will
call the internal SDO uploads / downloads for objects at that index and subindex.
View the EDS or DCF file to see what indexes and subindexes are available. Or get the output from
the /od-all endpoint.
Note
If a object is a DOMAIN (arbitrary binary data) type, the value will be encoded with Base64 on a read and must be encoded on a write.
Reading a object from the OD
Read a variable at an index.
$ curl -X GET localhost:8000/od/0x1000/
{
"access_type": "ro",
"data_type": "UNSIGNED32",
"name": "Device type",
"object_type": "VARIABLE",
"value": 0
}
Read a record / array at an index.
$ curl -X GET localhost:8000/od/0x1018/
{
"name": "Identity",
"object_type": "RECORD",
"subindexes": {
"0": {
"access_type": "const",
"data_type": "UNSIGNED8",
"name": "Highest sub-index supported",
"object_type": "VARIABLE",
"value": 4
},
"1": {
"access_type": "ro",
"data_type": "UNSIGNED32",
"name": "Vendor-ID",
"object_type": "VARIABLE",
"value": 0
},
"2": {
"access_type": "ro",
"data_type": "UNSIGNED32",
"name": "Product code",
"object_type": "VARIABLE",
"value": 0
},
"3": {
"access_type": "ro",
"data_type": "UNSIGNED32",
"name": "Revision number",
"object_type": "VARIABLE",
"value": 0
},
"4": {
"access_type": "ro",
"data_type": "UNSIGNED32",
"name": "Serial number",
"object_type": "VARIABLE",
"value": 0
}
}
}
Read a variable at an index and subindex.
$ curl -X GET localhost:8000/od/0x1018/0x01/
{
"access_type": "ro",
"data_type": "UNSIGNED32",
"name": "Device type",
"object_type": "VARIABLE",
"value": 0
}
Writing a value to object in the OD
When writing to an object the value is always read back.
Note
The value writen must match the datatype. You cannot write "2" to a integer object.
Write a value to a variable at an index.
$ curl -X PUT localhost:8000/od/0x6000/ --header 'content-type: application/json' --data '{"value": 0}'
{
"access_type": "ro",
"data_type": "UNSIGNED32",
"name": "Device type",
"object_type": "VARIABLE",
"value": 2
}
Write a value to a variable at an index and subindex.
$ curl -X PUT localhost:8000/od/0x1018/0x01/ --header 'content-type: application/json' --data '{"value": 2}'
{
"access_type": "ro",
"data_type": "UNSIGNED32",
"name": "Device type",
"object_type": "VARIABLE",
"value": 2
}
Errors
When a invalid read or write happens, the reponse have "error" feild.
$ curl -X PUT localhost:8000/od/0x9000/ --header 'content-type: application/json' --data '{"value": 1}'
{
"error": "index 0x9000 does not exist"
}