That service provider suppliles services for all robotkernel modules with support for canopen protocol devices. The service provider will provide acyclic calls to access the canopen dictionary entries.
No specific configuration is needed for the service provider. The robotkernel just needs to know which service provider to load. To load der service_provider_canopen_device just add it to your config file.
service_providers:
- name: canopen
so_file: libservice_provider_canopen_protocol.so
get object dictionary list : Returns a list indices with all available ids on the device. On error, the error_message field will be filled with the error cause.
response:
- vector/uint16_t: indices
- string: error_message
read_object : Returns the description of the object with given index. On error, the error_message field will be filled with the error cause.
request:
- uint16_t: index
response:
- uint16_t: data_type
- uint8_t: objcode
- uint8_t: max_subindices
- string: name
- string: error_message
read element : Reads one element value of an id with given index and sub_index.
request:
- uint16_t: index
- uint8_t: sub_index
response:
- string: name
- uint8_t: value_info
- uint16_t: data_type
- uint16_t: bit_length
- uint16_t: obj_access
- uint16_t: unit
- string: default_value
- string: min_value
- string: max_value
- string: value
- string: error_message
write element : Writes value to one element (sub index) of anindex*. The datatype ofvaluemust match to the datatype of the element. On error, the*error_message'' field will be filled with the error cause.
request:
- uint16_t: index
- uint8_t: sub_index
- string: value
response:
- string: error_message
All of these services will be available through a robotkernel brigdge (e.g. bridge_ln, bridge_jsonrpc, bridge_cli, ...)
Serivice Provider Canopen Protocol