Revision c218345a core/src/aos_main.cpp
core/src/aos_main.cpp | ||
---|---|---|
274 | 274 |
#if (AMIROOS_CFG_SSSP_ENABLE == true) |
275 | 275 |
{ |
276 | 276 |
eventflags_t flagsmask = AMIROOS_CFG_MAIN_LOOP_GPIOEVENT_FLAGSMASK | MODULE_SSSP_EVENTFLAG_PD | MODULE_SSSP_EVENTFLAG_S; |
277 |
#if (AMIROOS_CFG_SSSP_MSI == true) |
|
277 | 278 |
#if (AMIROOS_CFG_SSSP_STACK_START != true) |
278 | 279 |
flagsmask |= MODULE_SSSP_EVENTFLAG_DN; |
279 | 280 |
#endif /* (AMIROOS_CFG_SSSP_STACK_START != true) */ |
280 | 281 |
#if (AMIROOS_CFG_SSSP_STACK_END != true) |
281 | 282 |
flagsmask |= MODULE_SSSP_EVENTFLAG_UP; |
282 | 283 |
#endif /* (AMIROOS_CFG_SSSP_STACK_END != true) */ |
284 |
#endif /* (AMIROOS_CFG_SSSP_MSI == true) */ |
|
283 | 285 |
chEvtRegisterMaskWithFlags(&aos.events.gpio, &_eventListenerGPIO, EVENTMASK_GPIO, flagsmask); |
284 | 286 |
} |
285 | 287 |
#else /* (AMIROOS_CFG_SSSP_ENABLE == true) */ |
... | ... | |
600 | 602 |
#endif /* (AMIROOS_CFG_SSSP_MSI == true) */ |
601 | 603 |
} |
602 | 604 |
|
603 |
// start the internal system uptime counter |
|
604 |
aosSysStartUptime(); |
|
605 |
|
|
606 | 605 |
/* |
607 |
* There must be no delays at this point, thus no hook allowed.
|
|
606 |
* There must be no delay at this point, thus no hook allowed. |
|
608 | 607 |
*/ |
609 | 608 |
|
610 | 609 |
#if (AMIROOS_CFG_SSSP_MSI == true) |
611 | 610 |
|
612 |
//TODO |
|
611 |
//TODO: MSI
|
|
613 | 612 |
|
613 |
#if (HAL_USE_RTC == TRUE) |
|
614 |
|
|
615 |
//TODO: Calendar synchronization |
|
616 |
|
|
617 |
#endif /* (HAL_USE_RTC == TRUE) */ |
|
614 | 618 |
#endif /* (AMIROOS_CFG_SSSP_MSI == true) */ |
615 | 619 |
|
616 | 620 |
#endif /* (AMIROOS_CFG_SSSP_ENABLE == true) */ |
... | ... | |
634 | 638 |
* ########################################################################## |
635 | 639 |
*/ |
636 | 640 |
|
641 |
#if (AMIROOS_CFG_SSSP_ENABLE == true) |
|
642 |
/* ignore all SSSP signal events, except for PD and configured events */ |
|
643 |
eventflags = MODULE_SSSP_EVENTFLAG_S; |
|
644 |
#if (AMIROOS_CFG_SSSP_MSI == true) |
|
645 |
#if (AMIROOS_CFG_SSSP_STACK_START != true) |
|
646 |
eventflags |= MODULE_SSSP_EVENTFLAG_DN; |
|
647 |
#endif /* (AMIROOS_CFG_SSSP_STACK_START != true) */ |
|
648 |
#if (AMIROOS_CFG_SSSP_STACK_END != true) |
|
649 |
eventflags |= MODULE_SSSP_EVENTFLAG_UP; |
|
650 |
#endif /* (AMIROOS_CFG_SSSP_STACK_END != true) */ |
|
651 |
#endif /* (AMIROOS_CFG_SSSP_MSI == true) */ |
|
652 |
eventflags &= ~((eventflags_t)AMIROOS_CFG_MAIN_LOOP_GPIOEVENT_FLAGSMASK); |
|
653 |
_eventListenerGPIO.wflags &= ~eventflags; |
|
654 |
#endif /* (AMIROOS_CFG_SSSP_ENABLE == true) */ |
|
655 |
|
|
637 | 656 |
// sleep until a shutdown event is received |
638 | 657 |
while (shutdown == AOS_SHUTDOWN_NONE) { |
639 | 658 |
// wait for an event |
... | ... | |
659 | 678 |
#if (AMIROOS_CFG_SSSP_ENABLE == true) |
660 | 679 |
// PD event |
661 | 680 |
if (eventflags & MODULE_SSSP_EVENTFLAG_PD) { |
662 |
aosSsspShutdownInit(); |
|
681 |
aosSsspShutdownInit(false);
|
|
663 | 682 |
shutdown = AOS_SHUTDOWN_PASSIVE; |
664 | 683 |
} |
665 | 684 |
// all other events |
... | ... | |
716 | 735 |
break; |
717 | 736 |
} |
718 | 737 |
|
738 |
#if (AMIROOS_CFG_SSSP_ENABLE == true) |
|
739 |
|
|
740 |
/* |
|
741 |
* Re-anable the S signal GPIO event. |
|
742 |
* Note that events for the optional signals UP and DN are not enabled as they are not utilized during SSSP shutdown phase. |
|
743 |
*/ |
|
744 |
chSysLock(); |
|
745 |
_eventListenerGPIO.wflags |= MODULE_SSSP_EVENTFLAG_S; |
|
746 |
chSysUnlock(); |
|
747 |
|
|
748 |
#endif /* (AMIROOS_CFG_SSSP_ENABLE == true) */ |
|
749 |
|
|
719 | 750 |
#if defined(AMIROOS_CFG_MAIN_LOOP_HOOK_2) |
720 | 751 |
#if defined(AMIROOS_CFG_MAIN_LOOP_HOOK_2_ARGS) |
721 | 752 |
AMIROOS_CFG_MAIN_LOOP_HOOK_2(AMIROOS_CFG_MAIN_LOOP_HOOK_2_ARGS); |
Also available in: Unified diff