Revision e4379628 core/src/aos_system.c
core/src/aos_system.c | ||
---|---|---|
594 | 594 |
// handle argument |
595 | 595 |
else { |
596 | 596 |
if (strcmp(argv[1], "-h") == 0 || strcmp(argv[1], "--hibernate") == 0) { |
597 |
chEvtBroadcastFlags(&aos.events.os, AOS_SYSTEM_EVENTFLAGS_HIBERNATE); |
|
597 |
// broadcast shutdown event |
|
598 |
chEvtBroadcastFlags(&aos.events.os, AOS_SYSTEM_EVENTFLAGS_SHUTDOWN_HIBERNATE); |
|
599 |
// set terminate flag so no further prompt will be printed |
|
598 | 600 |
chThdTerminate(chThdGetSelfX()); |
599 | 601 |
return AOS_OK; |
600 | 602 |
} |
601 | 603 |
else if (strcmp(argv[1], "-d") == 0 || strcmp(argv[1], "--deepsleep") == 0) { |
602 |
chEvtBroadcastFlags(&aos.events.os, AOS_SYSTEM_EVENTFLAGS_DEEPSLEEP); |
|
604 |
// broadcast shutdown event |
|
605 |
chEvtBroadcastFlags(&aos.events.os, AOS_SYSTEM_EVENTFLAGS_SHUTDOWN_DEEPSLEEP); |
|
606 |
// set terminate flag so no further prompt will be printed |
|
603 | 607 |
chThdTerminate(chThdGetSelfX()); |
604 | 608 |
return AOS_OK; |
605 | 609 |
} |
606 | 610 |
else if (strcmp(argv[1], "-t") == 0 || strcmp(argv[1], "--transportation") == 0) { |
607 |
chEvtBroadcastFlags(&aos.events.os, AOS_SYSTEM_EVENTFLAGS_TRANSPORTATION); |
|
611 |
// broadcast shutdown event |
|
612 |
chEvtBroadcastFlags(&aos.events.os, AOS_SYSTEM_EVENTFLAGS_SHUTDOWN_TRANSPORTATION); |
|
613 |
// set terminate flag so no further prompt will be printed |
|
608 | 614 |
chThdTerminate(chThdGetSelfX()); |
609 | 615 |
return AOS_OK; |
610 | 616 |
} |
611 | 617 |
else if (strcmp(argv[1], "-r") == 0 || strcmp(argv[1], "--restart") == 0) { |
612 |
chEvtBroadcastFlags(&aos.events.os, AOS_SYSTEM_EVENTFLAGS_RESTART); |
|
618 |
// broadcast shutdown event |
|
619 |
chEvtBroadcastFlags(&aos.events.os, AOS_SYSTEM_EVENTFLAGS_SHUTDOWN_RESTART); |
|
620 |
// set terminate flag so no further prompt will be printed |
|
613 | 621 |
chThdTerminate(chThdGetSelfX()); |
614 | 622 |
return AOS_OK; |
615 | 623 |
} |
... | ... | |
622 | 630 |
(void)argv; |
623 | 631 |
(void)argc; |
624 | 632 |
|
625 |
chEvtBroadcastFlags(&aos.events.os, AOS_SYSTEM_EVENTFLAGS_SHUTDOWN); |
|
633 |
chEvtBroadcastFlags(&aos.events.os, AOS_SYSTEM_EVENTFLAGS_SHUTDOWN_MASK);
|
|
626 | 634 |
chThdTerminate(chThdGetSelfX()); |
627 | 635 |
return AOS_OK; |
628 | 636 |
#endif /* (AMIROOS_CFG_SSSP_ENABLE == true) */ |
629 | 637 |
} |
630 | 638 |
|
631 | 639 |
#if (AMIROOS_CFG_TESTS_ENABLE == true) || defined(__DOXYGEN__) |
640 |
|
|
632 | 641 |
/** |
633 | 642 |
* @brief Callback function for the kernel:test shell command. |
634 | 643 |
* |
... | ... | |
1039 | 1048 |
|
1040 | 1049 |
switch (shutdown) { |
1041 | 1050 |
case AOS_SHUTDOWN_PASSIVE: |
1042 |
chEvtBroadcastFlags(&aos.events.os, AOS_SYSTEM_EVENTFLAGS_SHUTDOWN); |
|
1051 |
chEvtBroadcastFlags(&aos.events.os, AOS_SYSTEM_EVENTFLAGS_SHUTDOWN_PASSIVE);
|
|
1043 | 1052 |
aosprintf("shutdown request received...\n"); |
1044 | 1053 |
break; |
1045 | 1054 |
case AOS_SHUTDOWN_HIBERNATE: |
1046 |
chEvtBroadcastFlags(&aos.events.os, AOS_SYSTEM_EVENTFLAGS_HIBERNATE); |
|
1047 | 1055 |
aosprintf("shutdown to hibernate mode...\n"); |
1048 | 1056 |
break; |
1049 | 1057 |
case AOS_SHUTDOWN_DEEPSLEEP: |
1050 |
chEvtBroadcastFlags(&aos.events.os, AOS_SYSTEM_EVENTFLAGS_DEEPSLEEP); |
|
1051 | 1058 |
aosprintf("shutdown to deepsleep mode...\n"); |
1052 | 1059 |
break; |
1053 | 1060 |
case AOS_SHUTDOWN_TRANSPORTATION: |
1054 |
chEvtBroadcastFlags(&aos.events.os, AOS_SYSTEM_EVENTFLAGS_TRANSPORTATION); |
|
1055 | 1061 |
aosprintf("shutdown to transportation mode...\n"); |
1056 | 1062 |
break; |
1057 | 1063 |
case AOS_SHUTDOWN_RESTART: |
1058 |
chEvtBroadcastFlags(&aos.events.os, AOS_SYSTEM_EVENTFLAGS_RESTART); |
|
1059 | 1064 |
aosprintf("restarting system...\n"); |
1060 | 1065 |
break; |
1061 | 1066 |
// must never occur |
Also available in: Unified diff