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