Revision 3106e8cc core/src/aos_system.c

View differences:

core/src/aos_system.c
672 672
/**
673 673
 * @brief   Generic callback function for GPIO interrupts.
674 674
 *
675
 * @param[in] args   Pointer to the GPIO pad identifier.
675
 * @param[in] args   Pointer to the GPIO line identifier.
676 676
 */
677 677
static void _intCallback(void* args)
678 678
{
679
  aosDbgCheck((args != NULL) && (*((iopadid_t*)args) < sizeof(eventflags_t) * 8));
679
  aosDbgCheck((args != NULL) && (*((ioline_t*)args) != PAL_NOLINE) && (PAL_PAD(*((ioline_t*)args)) < sizeof(eventflags_t) * 8));
680 680

  
681 681
  chSysLockFromISR();
682
  chEvtBroadcastFlagsI(&aos.events.io, AOS_IOEVENT_FLAG(*((iopadid_t*)args)));
682
  chEvtBroadcastFlagsI(&aos.events.io, AOS_IOEVENT_FLAG(PAL_PAD(*((ioline_t*)args))));
683 683
  chSysUnlockFromISR();
684 684

  
685 685
  return;
......
690 690
/**
691 691
 * @brief   Callback function for the Sync signal interrupt.
692 692
 *
693
 * @param[in] args   Pointer to the GPIO pad identifier.
693
 * @param[in] args   Pointer to the GPIO line identifier.
694 694
 */
695 695
static void _signalSyncCallback(void *args)
696 696
{
697
  aosDbgCheck((args != NULL) && (*((iopadid_t*)args) < sizeof(eventflags_t) * 8));
697
  aosDbgCheck((args != NULL) && (*((ioline_t*)args) != PAL_NOLINE) && (PAL_PAD(*((ioline_t*)args)) < sizeof(eventflags_t) * 8));
698 698

  
699 699
  apalControlGpioState_t s_state;
700 700
  aos_timestamp_t uptime;
......
723 723
    }
724 724
  }
725 725
  // broadcast event
726
  chEvtBroadcastFlagsI(&aos.events.io, AOS_IOEVENT_FLAG(*((iopadid_t*)args)));
726
  chEvtBroadcastFlagsI(&aos.events.io, AOS_IOEVENT_FLAG(PAL_PAD(*((ioline_t*)args))));
727 727
  chSysUnlockFromISR();
728 728

  
729 729
  return;
......
840 840
  /* interrupt setup */
841 841
#if (AMIROOS_CFG_SSSP_ENABLE == true)
842 842
  // PD signal
843
  palSetPadCallback(moduleSsspGpioPd.gpio->port, moduleSsspGpioPd.gpio->pad, _intCallback, &moduleSsspGpioPd.gpio->pad);
844
  palEnablePadEvent(moduleSsspGpioPd.gpio->port, moduleSsspGpioPd.gpio->pad, APAL2CH_EDGE(moduleSsspGpioPd.meta.edge));
843
  palSetLineCallback(moduleSsspGpioPd.gpio->line, _intCallback, &moduleSsspGpioPd.gpio->line);
844
  palEnableLineEvent(moduleSsspGpioPd.gpio->line, APAL2CH_EDGE(moduleSsspGpioPd.meta.edge));
845 845
  // SYNC signal
846 846
#if (AMIROOS_CFG_SSSP_MASTER == true)
847
  palSetPadCallback(moduleSsspGpioSync.gpio->port, moduleSsspGpioSync.gpio->pad, _intCallback, &moduleSsspGpioSync.gpio->pad);
847
  palSetLineCallback(moduleSsspGpioSync.gpio->line, _intCallback, &moduleSsspGpioSync.gpio->line);
848 848
#else /* (AMIROOS_CFG_SSSP_MASTER == true) */
849
  palSetPadCallback(moduleSsspGpioSync.gpio->port, moduleSsspGpioSync.gpio->pad, _signalSyncCallback, &moduleSsspGpioSync.gpio->pad);
849
  palSetLineCallback(moduleSsspGpioSync.gpio->line, _signalSyncCallback, &moduleSsspGpioSync.gpio->line);
850 850
#endif /* (AMIROOS_CFG_SSSP_MASTER == true) */
851
  palEnablePadEvent(moduleSsspGpioSync.gpio->port, moduleSsspGpioSync.gpio->pad, APAL2CH_EDGE(moduleSsspGpioSync.meta.edge));
851
  palEnableLineEvent(moduleSsspGpioSync.gpio->line, APAL2CH_EDGE(moduleSsspGpioSync.meta.edge));
852 852
#if (AMIROOS_CFG_SSSP_STACK_START != true)
853 853
  // DN signal
854
  palSetPadCallback(moduleSsspGpioDn.gpio->port, moduleSsspGpioDn.gpio->pad, _intCallback, &moduleSsspGpioDn.gpio->pad);
855
  palEnablePadEvent(moduleSsspGpioDn.gpio->port, moduleSsspGpioDn.gpio->pad, APAL2CH_EDGE(moduleSsspGpioDn.meta.edge));
854
  palSetLineCallback(moduleSsspGpioDn.gpio->line, _intCallback, &moduleSsspGpioDn.gpio->line);
855
  palEnableLineEvent(moduleSsspGpioDn.gpio->line, APAL2CH_EDGE(moduleSsspGpioDn.meta.edge));
856 856
#endif /* (AMIROOS_CFG_SSSP_STACK_START != true) */
857 857
#if (AMIROOS_CFG_SSSP_STACK_END != true)
858 858
  // UP signal
859
  palSetPadCallback(moduleSsspGpioUp.gpio->port, moduleSsspGpioUp.gpio->pad, _intCallback, &moduleSsspGpioUp.gpio->pad);
860
  palEnablePadEvent(moduleSsspGpioUp.gpio->port, moduleSsspGpioUp.gpio->pad, APAL2CH_EDGE(moduleSsspGpioUp.meta.edge));
859
  palSetLineCallback(moduleSsspGpioUp.gpio->line, _intCallback, &moduleSsspGpioUp.gpio->line);
860
  palEnableLineEvent(moduleSsspGpioUp.gpio->line, APAL2CH_EDGE(moduleSsspGpioUp.meta.edge));
861 861
#endif /* (AMIROOS_CFG_SSSP_STACK_END != true) */
862 862
#endif /* (AMIROOS_CFG_SSSP_ENABLE == true) */
863
#if defined(MODULE_INIT_INTERRUPTS)
864
  // further interrupt signals
865
  MODULE_INIT_INTERRUPTS();
866
#endif /* defined(MODULE_INIT_INTERRUPTS) */
867 863

  
868 864
#if (AMIROOS_CFG_SHELL_ENABLE == true) || (AMIROOS_CFG_TESTS_ENABLE == true)
869 865
  /* init shell */
......
1168 1164
  return;
1169 1165
}
1170 1166

  
1167
/**
1168
 * @brief   Generic callback function for GPIO interrupts.
1169
 *
1170
 * @param[in] args   Pointer to the GPIO pad identifier.
1171
 */
1172
palcallback_t aosSysGetStdIntCallback(void)
1173
{
1174
  return _intCallback;
1175
}
1176

  
1171 1177
/** @} */

Also available in: Unified diff