Revision c218345a core/src/aos_main.cpp

View differences:

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