MCPcopy Create free account
hub / github.com/CANopenNode/CANopenNode / CO_LSSmaster_InquireLssAddress

Function CO_LSSmaster_InquireLssAddress

305/CO_LSSmaster.c:532–608  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

530}
531
532CO_LSSmaster_return_t
533CO_LSSmaster_InquireLssAddress(CO_LSSmaster_t* LSSmaster, uint32_t timeDifference_us, CO_LSS_address_t* lssAddress) {
534 CO_LSSmaster_return_t ret = CO_LSSmaster_INVALID_STATE;
535 uint8_t next = CO_LSSmaster_COMMAND_WAITING;
536
537 if ((LSSmaster == NULL) || (lssAddress == NULL)) {
538 return CO_LSSmaster_ILLEGAL_ARGUMENT;
539 }
540
541 /* Check for reply */
542 if (LSSmaster->command == CO_LSSmaster_COMMAND_INQUIRE_VENDOR) {
543
544 ret = CO_LSSmaster_inquireCheckWait(LSSmaster, timeDifference_us, CO_LSS_INQUIRE_VENDOR,
545 &lssAddress->identity.vendorID);
546 if (ret == CO_LSSmaster_OK) {
547 /* Start next request */
548 next = CO_LSSmaster_COMMAND_INQUIRE_PRODUCT;
549 ret = CO_LSSmaster_WAIT_SLAVE;
550 }
551 } else if (LSSmaster->command == CO_LSSmaster_COMMAND_INQUIRE_PRODUCT) {
552
553 ret = CO_LSSmaster_inquireCheckWait(LSSmaster, timeDifference_us, CO_LSS_INQUIRE_PRODUCT,
554 &lssAddress->identity.productCode);
555 if (ret == CO_LSSmaster_OK) {
556 /* Start next request */
557 next = CO_LSSmaster_COMMAND_INQUIRE_REV;
558 ret = CO_LSSmaster_WAIT_SLAVE;
559 }
560 } else if (LSSmaster->command == CO_LSSmaster_COMMAND_INQUIRE_REV) {
561
562 ret = CO_LSSmaster_inquireCheckWait(LSSmaster, timeDifference_us, CO_LSS_INQUIRE_REV,
563 &lssAddress->identity.revisionNumber);
564 if (ret == CO_LSSmaster_OK) {
565 /* Start next request */
566 next = CO_LSSmaster_COMMAND_INQUIRE_SERIAL;
567 ret = CO_LSSmaster_WAIT_SLAVE;
568 }
569 } else if (LSSmaster->command == CO_LSSmaster_COMMAND_INQUIRE_SERIAL) {
570
571 ret = CO_LSSmaster_inquireCheckWait(LSSmaster, timeDifference_us, CO_LSS_INQUIRE_SERIAL,
572 &lssAddress->identity.serialNumber);
573 } else { /* MISRA C 2004 14.10 */
574 }
575
576 /* Check for next request */
577 if ((LSSmaster->state == CO_LSSmaster_STATE_CFG_SLECTIVE) || (LSSmaster->state == CO_LSSmaster_STATE_CFG_GLOBAL)) {
578 if (LSSmaster->command == CO_LSSmaster_COMMAND_WAITING) {
579
580 LSSmaster->command = CO_LSSmaster_COMMAND_INQUIRE_VENDOR;
581 LSSmaster->timeoutTimer = 0;
582
583 ret = CO_LSSmaster_inquireInitiate(LSSmaster, CO_LSS_INQUIRE_VENDOR);
584 } else if (next == CO_LSSmaster_COMMAND_INQUIRE_PRODUCT) {
585 LSSmaster->command = CO_LSSmaster_COMMAND_INQUIRE_PRODUCT;
586 LSSmaster->timeoutTimer = 0;
587
588 ret = CO_LSSmaster_inquireInitiate(LSSmaster, CO_LSS_INQUIRE_PRODUCT);
589 } else if (next == CO_LSSmaster_COMMAND_INQUIRE_REV) {

Callers 1

CO_gateway_ascii.cFile · 0.85

Calls 2

Tested by

no test coverage detected