Revision 1a8fb642 core/src/aos_system.c

View differences:

core/src/aos_system.c
661 661
 *
662 662
 * @param[in] args   Pointer to the GPIO line identifier.
663 663
 */
664
static void _extiCallback(void* args)
664
static void _gpioCallback(void* args)
665 665
{
666 666
  aosDbgCheck((args != NULL) && (*((ioline_t*)args) != PAL_NOLINE) && (PAL_PAD(*((ioline_t*)args)) < sizeof(eventflags_t) * 8));
667 667

  
668 668
  chSysLockFromISR();
669
  chEvtBroadcastFlagsI(&aos.events.io, AOS_IOEVENT_FLAG(PAL_PAD(*((ioline_t*)args))));
669
  chEvtBroadcastFlagsI(&aos.events.gpio, AOS_GPIOEVENT_FLAG(PAL_PAD(*((ioline_t*)args))));
670 670
  chSysUnlockFromISR();
671 671

  
672 672
  return;
......
690 690
  // if the system is in operation phase
691 691
  if (aos.sssp.stage == AOS_SSSP_OPERATION) {
692 692
    // read signal S
693
    apalControlGpioGet(&moduleSsspGpioSync, &s_state);
693
    apalControlGpioGet(&moduleSsspGpioS, &s_state);
694 694
    // if S was toggled from on to off
695 695
    if (s_state == APAL_GPIO_OFF) {
696 696
      // get current uptime
......
710 710
    }
711 711
  }
712 712
  // broadcast event
713
  chEvtBroadcastFlagsI(&aos.events.io, AOS_IOEVENT_FLAG(PAL_PAD(*((ioline_t*)args))));
713
  chEvtBroadcastFlagsI(&aos.events.gpio, AOS_GPIOEVENT_FLAG(PAL_PAD(*((ioline_t*)args))));
714 714
  chSysUnlockFromISR();
715 715

  
716 716
  return;
......
755 755

  
756 756
  chSysLockFromISR();
757 757
  // toggle and read signal S
758
  apalGpioToggle(moduleSsspGpioSync.gpio);
759
  apalControlGpioGet(&moduleSsspGpioSync, &s_state);
758
  apalGpioToggle(moduleSsspGpioS.gpio);
759
  apalControlGpioGet(&moduleSsspGpioS, &s_state);
760 760
  // if S was toggled from off to on
761 761
  if (s_state == APAL_GPIO_ON) {
762 762
    // reconfigure the timer precisely, because the logically falling edge (next interrupt) snychronizes the system time
......
817 817
  aos.sssp.moduleId = 0;
818 818
#endif /* (AMIROOS_CFG_SSSP_ENABLE == true) */
819 819
  aosIOStreamInit(&aos.iostream);
820
  chEvtObjectInit(&aos.events.io);
820
  chEvtObjectInit(&aos.events.gpio);
821 821
  chEvtObjectInit(&aos.events.os);
822 822

  
823 823
  /* interrupt setup */
824 824
#if (AMIROOS_CFG_SSSP_ENABLE == true)
825 825
  // PD signal
826
  palSetLineCallback(moduleSsspGpioPd.gpio->line, _extiCallback, &moduleSsspGpioPd.gpio->line);
827
  palEnableLineEvent(moduleSsspGpioPd.gpio->line, APAL2CH_EDGE(moduleSsspGpioPd.meta.edge));
826
  palSetLineCallback(moduleSsspGpioPD.gpio->line, _gpioCallback, &moduleSsspGpioPD.gpio->line);
827
  palEnableLineEvent(moduleSsspGpioPD.gpio->line, APAL2CH_EDGE(moduleSsspGpioPD.meta.edge));
828 828
  // SYNC signal
829 829
#if (AMIROOS_CFG_SSSP_MASTER == true)
830
  palSetLineCallback(moduleSsspGpioSync.gpio->line, _extiCallback, &moduleSsspGpioSync.gpio->line);
830
  palSetLineCallback(moduleSsspGpioS.gpio->line, _gpioCallback, &moduleSsspGpioS.gpio->line);
831 831
#else /* (AMIROOS_CFG_SSSP_MASTER == true) */
832
  palSetLineCallback(moduleSsspGpioSync.gpio->line, _signalSyncCallback, &moduleSsspGpioSync.gpio->line);
832
  palSetLineCallback(moduleSsspGpioS.gpio->line, _signalSyncCallback, &moduleSsspGpioS.gpio->line);
833 833
#endif /* (AMIROOS_CFG_SSSP_MASTER == true) */
834
  palEnableLineEvent(moduleSsspGpioSync.gpio->line, APAL2CH_EDGE(moduleSsspGpioSync.meta.edge));
834
  palEnableLineEvent(moduleSsspGpioS.gpio->line, APAL2CH_EDGE(moduleSsspGpioS.meta.edge));
835 835
#if (AMIROOS_CFG_SSSP_STACK_START != true)
836 836
  // DN signal
837
  palSetLineCallback(moduleSsspGpioDn.gpio->line, _extiCallback, &moduleSsspGpioDn.gpio->line);
838
  palEnableLineEvent(moduleSsspGpioDn.gpio->line, APAL2CH_EDGE(moduleSsspGpioDn.meta.edge));
837
  palSetLineCallback(moduleSsspGpioDN.gpio->line, _gpioCallback, &moduleSsspGpioDN.gpio->line);
838
  palEnableLineEvent(moduleSsspGpioDN.gpio->line, APAL2CH_EDGE(moduleSsspGpioDN.meta.edge));
839 839
#endif /* (AMIROOS_CFG_SSSP_STACK_START != true) */
840 840
#if (AMIROOS_CFG_SSSP_STACK_END != true)
841 841
  // UP signal
842
  palSetLineCallback(moduleSsspGpioUp.gpio->line, _extiCallback, &moduleSsspGpioUp.gpio->line);
843
  palEnableLineEvent(moduleSsspGpioUp.gpio->line, APAL2CH_EDGE(moduleSsspGpioUp.meta.edge));
842
  palSetLineCallback(moduleSsspGpioUP.gpio->line, _gpioCallback, &moduleSsspGpioUP.gpio->line);
843
  palEnableLineEvent(moduleSsspGpioUP.gpio->line, APAL2CH_EDGE(moduleSsspGpioUP.meta.edge));
844 844
#endif /* (AMIROOS_CFG_SSSP_STACK_END != true) */
845 845
#endif /* (AMIROOS_CFG_SSSP_ENABLE == true) */
846 846

  
......
926 926
  aos.sssp.stage = AOS_SSSP_STARTUP_2_2;
927 927

  
928 928
  // deactivate the sync signal to indicate that the module is ready (SSSPv1 stage 2.1 of startup phase)
929
  apalControlGpioSet(&moduleSsspGpioSync, APAL_GPIO_OFF);
929
  apalControlGpioSet(&moduleSsspGpioS, APAL_GPIO_OFF);
930 930

  
931 931
  // wait for any event to occur (do not apply any filter in order not to miss any event)
932 932
  m = chEvtWaitOne(ALL_EVENTS);
933 933
  f = chEvtGetAndClearFlags(syncEvtListener);
934
  apalControlGpioGet(&moduleSsspGpioSync, &s);
934
  apalControlGpioGet(&moduleSsspGpioS, &s);
935 935

  
936 936
  // if the event was a system event,
937 937
  //   and it was fired because of the SysSync control signal,
938 938
  //   and the SysSync control signal has been deactivated
939 939
  if (m & syncEvtListener->events &&
940
      f == MODULE_SSSP_EVENTFLAGS_SYNC &&
940
      f == MODULE_SSSP_EVENTFLAG_S &&
941 941
      s == APAL_GPIO_OFF) {
942 942
    chSysLock();
943 943
    // start the uptime counter
......
1030 1030
  chSysLock();
1031 1031
  // activate the SYS_PD control signal only, if this module initiated the shutdown
1032 1032
  if (shutdown != AOS_SHUTDOWN_PASSIVE) {
1033
    apalControlGpioSet(&moduleSsspGpioPd, APAL_GPIO_ON);
1033
    apalControlGpioSet(&moduleSsspGpioPD, APAL_GPIO_ON);
1034 1034
  }
1035 1035
  // activate the SYS_SYNC signal
1036
  apalControlGpioSet(&moduleSsspGpioSync, APAL_GPIO_ON);
1036
  apalControlGpioSet(&moduleSsspGpioS, APAL_GPIO_ON);
1037 1037
  chSysUnlock();
1038 1038
#endif /* (AMIROOS_CFG_SSSP_ENABLE == true) */
1039 1039

  
......
1152 1152
 *
1153 1153
 * @return  Pointer to the callback function.
1154 1154
 */
1155
palcallback_t aosSysGetStdExtiCallback(void)
1155
palcallback_t aosSysGetStdGpioCallback(void)
1156 1156
{
1157
  return _extiCallback;
1157
  return _gpioCallback;
1158 1158
}
1159 1159

  
1160 1160
/** @} */

Also available in: Unified diff