| 432 | } |
| 433 | |
| 434 | CO_LSSmaster_return_t |
| 435 | CO_LSSmaster_configureStore(CO_LSSmaster_t* LSSmaster, uint32_t timeDifference_us) { |
| 436 | CO_LSSmaster_return_t ret = CO_LSSmaster_INVALID_STATE; |
| 437 | |
| 438 | if (LSSmaster == NULL) { |
| 439 | return CO_LSSmaster_ILLEGAL_ARGUMENT; |
| 440 | } |
| 441 | |
| 442 | /* Initiate config store */ |
| 443 | if ((LSSmaster->state == CO_LSSmaster_STATE_CFG_SLECTIVE) && (LSSmaster->command == CO_LSSmaster_COMMAND_WAITING)) { |
| 444 | |
| 445 | LSSmaster->command = CO_LSSmaster_COMMAND_CFG_STORE; |
| 446 | LSSmaster->timeoutTimer = 0; |
| 447 | |
| 448 | CO_FLAG_CLEAR(LSSmaster->CANrxNew); |
| 449 | LSSmaster->TXbuff->data[0] = CO_LSS_CFG_STORE; |
| 450 | (void)memset(&LSSmaster->TXbuff->data[1], 0, sizeof(LSSmaster->TXbuff->data) - 1U); |
| 451 | (void)CO_CANsend(LSSmaster->CANdevTx, LSSmaster->TXbuff); |
| 452 | |
| 453 | ret = CO_LSSmaster_WAIT_SLAVE; |
| 454 | } |
| 455 | /* Wait for confirmation */ |
| 456 | else if (LSSmaster->command == CO_LSSmaster_COMMAND_CFG_STORE) { |
| 457 | |
| 458 | ret = CO_LSSmaster_configureCheckWait(LSSmaster, timeDifference_us, CO_LSS_CFG_STORE); |
| 459 | } else { /* MISRA C 2004 14.10 */ |
| 460 | } |
| 461 | |
| 462 | if ((ret != CO_LSSmaster_INVALID_STATE) && (ret != CO_LSSmaster_WAIT_SLAVE)) { |
| 463 | /* finished */ |
| 464 | LSSmaster->command = CO_LSSmaster_COMMAND_WAITING; |
| 465 | } |
| 466 | return ret; |
| 467 | } |
| 468 | |
| 469 | CO_LSSmaster_return_t |
| 470 | CO_LSSmaster_ActivateBit(CO_LSSmaster_t* LSSmaster, uint16_t switchDelay_ms) { |
no test coverage detected