| 303 | } |
| 304 | |
| 305 | ODR_t |
| 306 | OD_get_value(const OD_entry_t* entry, uint8_t subIndex, void* val, OD_size_t len, bool_t odOrig) { |
| 307 | if (val == NULL) { |
| 308 | return ODR_DEV_INCOMPAT; |
| 309 | } |
| 310 | |
| 311 | OD_IO_t io = {NULL}; |
| 312 | OD_stream_t* stream = &io.stream; |
| 313 | OD_size_t countRd = 0; |
| 314 | |
| 315 | ODR_t ret = OD_getSub(entry, subIndex, &io, odOrig); |
| 316 | |
| 317 | if (ret != ODR_OK) { |
| 318 | return ret; |
| 319 | } |
| 320 | if (stream->dataLength != len) { |
| 321 | return ODR_TYPE_MISMATCH; |
| 322 | } |
| 323 | |
| 324 | return io.read(stream, val, len, &countRd); |
| 325 | } |
| 326 | |
| 327 | ODR_t |
| 328 | OD_set_value(const OD_entry_t* entry, uint8_t subIndex, void* val, OD_size_t len, bool_t odOrig) { |
no test coverage detected