Revision 3106e8cc core/src/aos_system.c
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