Revision 7de0cc90 core/src/aos_main.cpp
core/src/aos_main.cpp | ||
---|---|---|
33 | 33 |
*/ |
34 | 34 |
#if defined(AMIROOS_CFG_MAIN_EXTRA_INCLUDE_HEADER) |
35 | 35 |
#include AMIROOS_CFG_MAIN_EXTRA_INCLUDE_HEADER |
36 |
#endif |
|
36 |
#endif /* defined(AMIROOS_CFG_MAIN_EXTRA_INCLUDE_HEADER) */
|
|
37 | 37 |
|
38 | 38 |
/******************************************************************************/ |
39 | 39 |
/* LOCAL DEFINITIONS */ |
... | ... | |
81 | 81 |
*/ |
82 | 82 |
#define SSSP_STACKINIT_CANMSGID_ABORT 0x001 |
83 | 83 |
|
84 |
#else /* AMIROOS_CFG_SSSP_ENABLE == false */
|
|
84 |
#else /* (AMIROOS_CFG_SSSP_ENABLE == true) */
|
|
85 | 85 |
|
86 | 86 |
/** |
87 | 87 |
* @brief Default shutdown mode if SSSP is unavailable. |
88 | 88 |
*/ |
89 | 89 |
#define AOS_SHUTDOWN_DEFAULT AOS_SHUTDOWN_DEEPSLEEP |
90 | 90 |
|
91 |
#endif /* AMIROOS_CFG_SSSP_ENABLE */
|
|
91 |
#endif /* (AMIROOS_CFG_SSSP_ENABLE == true) */
|
|
92 | 92 |
|
93 | 93 |
/** |
94 | 94 |
* @brief CAN message identifier for calender synchronization message. |
... | ... | |
136 | 136 |
*/ |
137 | 137 |
#if defined(AMIROOS_CFG_MAIN_EXTRA_STATIC_VARIABLES) |
138 | 138 |
AMIROOS_CFG_MAIN_EXTRA_STATIC_VARIABLES |
139 |
#endif |
|
139 |
#endif /* defined(AMIROOS_CFG_MAIN_EXTRA_STATIC_VARIABLES) */
|
|
140 | 140 |
|
141 | 141 |
/******************************************************************************/ |
142 | 142 |
/* LOCAL FUNCTIONS */ |
... | ... | |
152 | 152 |
{ |
153 | 153 |
#if (AMIROOS_CFG_DBG == true) |
154 | 154 |
aosprintf("CTRL: unexpected/unknown event received. mask: 0x%08X; flags: 0x%08X\n", mask, flags); |
155 |
#else |
|
155 |
#else /* (AMIROOS_CFG_DBG == true) */
|
|
156 | 156 |
(void)(mask); |
157 | 157 |
(void)(flags); |
158 |
#endif |
|
158 |
#endif /* (AMIROOS_CFG_DBG == true) */
|
|
159 | 159 |
return; |
160 | 160 |
} |
161 | 161 |
|
... | ... | |
175 | 175 |
|
176 | 176 |
return; |
177 | 177 |
} |
178 |
#endif /* AMIROOS_CFG_SSSP_ENABLE == true */
|
|
178 |
#endif /* (AMIROOS_CFG_SSSP_ENABLE == true) */
|
|
179 | 179 |
|
180 | 180 |
/** |
181 | 181 |
* @brief Helper function to serialize data. |
... | ... | |
276 | 276 |
return; |
277 | 277 |
} |
278 | 278 |
|
279 |
#endif /* HAL_USE_RTC == TRUE */
|
|
279 |
#endif /* (HAL_USE_RTC == TRUE) */
|
|
280 | 280 |
|
281 | 281 |
#if (AMIROOS_CFG_SSSP_ENABLE == true) || defined(__DOXYGEN__) |
282 | 282 |
/** |
... | ... | |
325 | 325 |
CANRxFrame canRxFrame; |
326 | 326 |
#if (AMIROOS_CFG_SSSP_STACK_START != true) || (AMIROOS_CFG_DBG == true) |
327 | 327 |
aos_ssspmoduleid_t lastid = 0; |
328 |
#endif |
|
328 |
#endif /* (AMIROOS_CFG_SSSP_STACK_START != true) || (AMIROOS_CFG_DBG == true) */
|
|
329 | 329 |
flags_t flags; |
330 | 330 |
aos_timestamp_t uptime; |
331 | 331 |
|
... | ... | |
405 | 405 |
aosDbgPrintf(">>> 3-4 (abort)\n"); |
406 | 406 |
break; |
407 | 407 |
} |
408 |
#endif |
|
408 |
#endif /* (AMIROOS_CFG_DBG == true) */
|
|
409 | 409 |
|
410 | 410 |
// reset wfe flag for the next iteration |
411 | 411 |
flags.wfe_next = true; |
... | ... | |
446 | 446 |
#if (AMIROOS_CFG_SSSP_STACK_END != true) |
447 | 447 |
aosDbgPrintf("disabling UP\n"); |
448 | 448 |
apalControlGpioSet(&moduleSsspGpioUp, APAL_GPIO_OFF); |
449 |
#endif |
|
449 |
#endif /* (AMIROOS_CFG_SSSP_STACK_END != true) */
|
|
450 | 450 |
// set shutdown flag and exit the loop |
451 | 451 |
shutdown = AOS_SHUTDOWN_PASSIVE; |
452 | 452 |
break; |
... | ... | |
474 | 474 |
// get the flags |
475 | 475 |
eventflags_t oseventflags = chEvtGetAndClearFlags(&_eventListenerOS); |
476 | 476 |
// there should be no OS events at this point |
477 |
#ifdef MODULE_SSSP_STARTUP_3_OSEVENT_HOOK
|
|
477 |
#if defined(MODULE_SSSP_STARTUP_3_OSEVENT_HOOK)
|
|
478 | 478 |
MODULE_SSSP_STARTUP_3_OSEVENT_HOOK(eventmask, eventflags); |
479 |
#else |
|
479 |
#else /* defined(MODULE_SSSP_STARTUP_3_OSEVENT_HOOK) */
|
|
480 | 480 |
_unexpectedEventError(eventmask, oseventflags); |
481 |
#endif |
|
481 |
#endif /* defined(MODULE_SSSP_STARTUP_3_OSEVENT_HOOK) */
|
|
482 | 482 |
} |
483 | 483 |
// if a CAN event occurred |
484 | 484 |
if ((eventmask & eventListenerCan.events)) { |
... | ... | |
536 | 536 |
// proceed immediately |
537 | 537 |
stage = STAGE_3_2; |
538 | 538 |
flags.wfe_next = false; |
539 |
#else |
|
539 |
#else /* (AMIROOS_CFG_SSSP_STACK_START == true) */
|
|
540 | 540 |
// set the timeout timer |
541 | 541 |
chVTSet(&timerTimeout, chTimeUS2I(AOS_SYSTEM_SSSP_TIMEOUT), _ssspTimerCallback, &eventSourceTimeout); |
542 | 542 |
// proceed |
543 | 543 |
stage = STAGE_3_3_WAITFORFIRSTID; |
544 |
#endif |
|
545 |
#else |
|
544 |
#endif /* (AMIROOS_CFG_SSSP_STACK_START == true) */
|
|
545 |
#else /* (AMIROOS_CFG_SSSP_MASTER == true) */
|
|
546 | 546 |
// set the timeout timer |
547 | 547 |
chVTSet(&timerTimeout, chTimeUS2I(AOS_SYSTEM_SSSP_TIMEOUT), _ssspTimerCallback, &eventSourceTimeout); |
548 |
#endif |
|
548 |
#endif /* (AMIROOS_CFG_SSSP_MASTER == true) */
|
|
549 | 549 |
} |
550 | 550 |
|
551 | 551 |
#if (AMIROOS_CFG_SSSP_MASTER != true) |
... | ... | |
568 | 568 |
// proceed |
569 | 569 |
stage = STAGE_3_2; |
570 | 570 |
flags.wfe_next = false; |
571 |
#else |
|
571 |
#else /* (AMIROOS_CFG_SSSP_STACK_START == true) */
|
|
572 | 572 |
// set the timeout timer |
573 | 573 |
chVTSet(&timerTimeout, chTimeUS2I(AOS_SYSTEM_SSSP_TIMEOUT), _ssspTimerCallback, &eventSourceTimeout); |
574 | 574 |
// proceed |
575 | 575 |
stage = STAGE_3_3_WAITFORFIRSTID; |
576 |
#endif |
|
576 |
#endif /* (AMIROOS_CFG_SSSP_STACK_START == true) */
|
|
577 | 577 |
} |
578 | 578 |
} |
579 |
#endif |
|
579 |
#endif /* (AMIROOS_CFG_SSSP_MASTER != true) */
|
|
580 | 580 |
|
581 | 581 |
break; |
582 | 582 |
} /* end of STAGE_3_1 */ |
... | ... | |
599 | 599 |
chEvtBroadcast(&eventSourceTimeout); |
600 | 600 |
break; |
601 | 601 |
} |
602 |
#if (AMIROOS_CFG_SSSP_STACK_START != true) || (AMIROOS_CFG_DBG == true)
|
|
602 |
#if (AMIROOS_CFG_DBG == true) |
|
603 | 603 |
lastid = aos.sssp.moduleId; |
604 |
#endif |
|
604 |
#endif /* (AMIROOS_CFG_DBG == true) */
|
|
605 | 605 |
#if (AMIROOS_CFG_SSSP_STACK_END == true) |
606 | 606 |
// sequence is already over |
607 | 607 |
// deactivate S |
... | ... | |
609 | 609 |
apalControlGpioSet(&moduleSsspGpioSync, APAL_GPIO_OFF); |
610 | 610 |
// proceed |
611 | 611 |
stage = STAGE_3_3_WAITFORID; |
612 |
#else |
|
612 |
#else /* (AMIROOS_CFG_SSSP_STACK_END == true) */
|
|
613 | 613 |
// set the delay timer so the UP signal is activated later |
614 | 614 |
chVTSet(&timerDelay, chTimeUS2I(AMIROOS_CFG_SSSP_SIGNALDELAY), _ssspTimerCallback, &eventSourceDelay); |
615 |
#endif |
|
615 |
#endif /* (AMIROOS_CFG_SSSP_STACK_END == true) */
|
|
616 | 616 |
} |
617 | 617 |
|
618 | 618 |
// if a delay event occurred |
... | ... | |
629 | 629 |
// proceed |
630 | 630 |
stage = STAGE_3_3_WAITFORID; |
631 | 631 |
} |
632 |
#endif |
|
632 |
#endif /* (AMIROOS_CFG_SSSP_STACK_START == true) */
|
|
633 | 633 |
|
634 | 634 |
break; |
635 | 635 |
} /* end of STAGE_3_2 */ |
... | ... | |
666 | 666 |
eventmask &= ~(eventListenerTimeout.events); |
667 | 667 |
} |
668 | 668 |
} |
669 |
#endif |
|
669 |
#endif /* (AMIROOS_CFG_SSSP_STACK_START != true) */
|
|
670 | 670 |
break; |
671 | 671 |
} /* end of STAGE_3_3_WAITFORFIRSTID */ |
672 | 672 |
|
... | ... | |
728 | 728 |
// activate UP |
729 | 729 |
aosDbgPrintf("enabling UP\n"); |
730 | 730 |
apalControlGpioSet(&moduleSsspGpioUp, APAL_GPIO_ON); |
731 |
#endif |
|
731 |
#endif /* (AMIROOS_CFG_SSSP_STACK_END != true) */
|
|
732 | 732 |
// deactivate S |
733 | 733 |
aosDbgPrintf("disabling S\n"); |
734 | 734 |
apalControlGpioSet(&moduleSsspGpioSync, APAL_GPIO_OFF); |
... | ... | |
739 | 739 |
// proceed |
740 | 740 |
stage = STAGE_3_3_WAITFORID; |
741 | 741 |
} |
742 |
#endif |
|
742 |
#endif /* (AMIROOS_CFG_SSSP_STACK_START != true) */
|
|
743 | 743 |
|
744 | 744 |
break; |
745 | 745 |
} /* end of STAGE_3_3_WAITFORIDORSIG */ |
... | ... | |
760 | 760 |
// Plausibility of the received ID is not checked at this point but is done by other modules still in a previous stage. |
761 | 761 |
lastid = _deserialize(canRxFrame.data8, 4); |
762 | 762 |
aosDbgPrintf("ID (%u)\n", lastid); |
763 |
#endif |
|
763 |
#endif /* (AMIROOS_CFG_SSSP_STACK_START != true) || (AMIROOS_CFG_DBG == true) */
|
|
764 | 764 |
// restart timeout timer |
765 | 765 |
chVTSet(&timerTimeout, chTimeUS2I(AOS_SYSTEM_SSSP_TIMEOUT), _ssspTimerCallback, &eventSourceTimeout); |
766 | 766 |
chEvtWaitAnyTimeout(eventListenerTimeout.events, TIME_IMMEDIATE); |
767 | 767 |
eventmask &= ~(eventListenerTimeout.events); |
768 | 768 |
} |
769 | 769 |
} |
770 |
#endif |
|
770 |
#endif /* (AMIROOS_CFG_SSSP_STACK_END != true) */
|
|
771 | 771 |
|
772 | 772 |
break; |
773 | 773 |
} /* end of STAGE_3_3_WAITFORID */ |
... | ... | |
877 | 877 |
#if (AMIROOS_CFG_SSSP_STACK_END != true) |
878 | 878 |
aosDbgPrintf("disabling UP\n"); |
879 | 879 |
apalControlGpioSet(&moduleSsspGpioUp, APAL_GPIO_OFF); |
880 |
#endif |
|
880 |
#endif /* (AMIROOS_CFG_SSSP_STACK_END != true) */
|
|
881 | 881 |
aosDbgPrintf("disabling S\n"); |
882 | 882 |
apalControlGpioSet(&moduleSsspGpioSync, APAL_GPIO_OFF); |
883 | 883 |
aosSysGetUptime(&uptime); |
... | ... | |
885 | 885 |
|
886 | 886 |
return shutdown; |
887 | 887 |
} |
888 |
#endif /* AMIROOS_CFG_SSSP_ENABLE == true */
|
|
888 |
#endif /* (AMIROOS_CFG_SSSP_ENABLE == true) */
|
|
889 | 889 |
|
890 | 890 |
/** |
891 | 891 |
* @brief Application entry point. |
... | ... | |
899 | 899 |
aos_shutdown_t shutdown = AOS_SHUTDOWN_NONE; |
900 | 900 |
#if defined(AMIROOS_CFG_MAIN_EXTRA_THREAD_VARIABLES) |
901 | 901 |
AMIROOS_CFG_MAIN_EXTRA_THREAD_VARIABLES |
902 |
#endif |
|
902 |
#endif /* defined(AMIROOS_CFG_MAIN_EXTRA_THREAD_VARIABLES) */
|
|
903 | 903 |
|
904 | 904 |
/* |
905 | 905 |
* ########################################################################## |
... | ... | |
910 | 910 |
#if defined(AMIROOS_CFG_MAIN_INIT_HOOK_0) |
911 | 911 |
#if defined(AMIROOS_CFG_MAIN_INIT_HOOK_0_ARGS) |
912 | 912 |
AMIROOS_CFG_MAIN_INIT_HOOK_0(AMIROOS_CFG_MAIN_INIT_HOOK_0_ARGS); |
913 |
#else |
|
913 |
#else /* defined(AMIROOS_CFG_MAIN_INIT_HOOK_0_ARGS) */
|
|
914 | 914 |
AMIROOS_CFG_MAIN_INIT_HOOK_0(); |
915 |
#endif |
|
916 |
#endif |
|
915 |
#endif /* defined(AMIROOS_CFG_MAIN_INIT_HOOK_0_ARGS) */
|
|
916 |
#endif /* defined(AMIROOS_CFG_MAIN_INIT_HOOK_0) */
|
|
917 | 917 |
|
918 | 918 |
/* hardware, kernel, and operating system initialization */ |
919 | 919 |
// ChibiOS/HAL and custom hal additions (if any) |
920 | 920 |
halInit(); |
921 |
#ifdef MODULE_INIT_HAL_EXTRA
|
|
921 |
#if defined(MODULE_INIT_HAL_EXTRA)
|
|
922 | 922 |
MODULE_INIT_HAL_EXTRA(); |
923 |
#endif |
|
923 |
#endif /* defined(MODULE_INIT_HAL_EXTRA) */
|
|
924 | 924 |
|
925 | 925 |
#if defined(AMIROOS_CFG_MAIN_INIT_HOOK_1) |
926 | 926 |
#if defined(AMIROOS_CFG_MAIN_INIT_HOOK_1_ARGS) |
927 | 927 |
AMIROOS_CFG_MAIN_INIT_HOOK_1(AMIROOS_CFG_MAIN_INIT_HOOK_1_ARGS); |
928 |
#else |
|
928 |
#else /* defined(AMIROOS_CFG_MAIN_INIT_HOOK_1_ARGS) */
|
|
929 | 929 |
AMIROOS_CFG_MAIN_INIT_HOOK_1(); |
930 |
#endif |
|
931 |
#endif |
|
930 |
#endif /* defined(AMIROOS_CFG_MAIN_INIT_HOOK_1_ARGS) */
|
|
931 |
#endif /* defined(AMIROOS_CFG_MAIN_INIT_HOOK_1) */
|
|
932 | 932 |
|
933 | 933 |
// ChibiOS/RT kernel and custom kernel additions (if any) |
934 | 934 |
chSysInit(); |
935 |
#ifdef MODULE_INIT_KERNEL_EXTRA
|
|
935 |
#if defined(MODULE_INIT_KERNEL_EXTRA)
|
|
936 | 936 |
MODULE_INIT_KERNEL_EXTRA(); |
937 |
#endif |
|
937 |
#endif /* defined(MODULE_INIT_KERNEL_EXTRA) */
|
|
938 | 938 |
|
939 | 939 |
#if defined(AMIROOS_CFG_MAIN_INIT_HOOK_2) |
940 | 940 |
#if defined(AMIROOS_CFG_MAIN_INIT_HOOK_2_ARGS) |
941 | 941 |
AMIROOS_CFG_MAIN_INIT_HOOK_2(AMIROOS_CFG_MAIN_INIT_HOOK_2_ARGS); |
942 |
#else |
|
942 |
#else /* defined(AMIROOS_CFG_MAIN_INIT_HOOK_2_ARGS) */
|
|
943 | 943 |
AMIROOS_CFG_MAIN_INIT_HOOK_2(); |
944 |
#endif |
|
945 |
#endif |
|
944 |
#endif /* defined(AMIROOS_CFG_MAIN_INIT_HOOK_2_ARGS) */
|
|
945 |
#endif /* defined(AMIROOS_CFG_MAIN_INIT_HOOK_2) */
|
|
946 | 946 |
|
947 | 947 |
// AMiRo-OS and custom OS additions (if any) |
948 | 948 |
#if (AMIROOS_CFG_SHELL_ENABLE == true) || (AMIROOS_CFG_TESTS_ENABLE == true) |
949 | 949 |
aosSysInit(moduleShellPrompt); |
950 |
#else |
|
950 |
#else /* (AMIROOS_CFG_SHELL_ENABLE == true) || (AMIROOS_CFG_TESTS_ENABLE == true) */
|
|
951 | 951 |
aosSysInit(); |
952 |
#endif |
|
953 |
#ifdef MODULE_INIT_OS_EXTRA
|
|
952 |
#endif /* (AMIROOS_CFG_SHELL_ENABLE == true) || (AMIROOS_CFG_TESTS_ENABLE == true) */
|
|
953 |
#if defined(MODULE_INIT_OS_EXTRA)
|
|
954 | 954 |
MODULE_INIT_OS_EXTRA(); |
955 |
#endif |
|
955 |
#endif /* defined(MODULE_INIT_OS_EXTRA) */
|
|
956 | 956 |
|
957 | 957 |
#if defined(AMIROOS_CFG_MAIN_INIT_HOOK_3) |
958 | 958 |
#if defined(AMIROOS_CFG_MAIN_INIT_HOOK_3_ARGS) |
959 | 959 |
AMIROOS_CFG_MAIN_INIT_HOOK_3(AMIROOS_CFG_MAIN_INIT_HOOK_3_ARGS); |
960 |
#else |
|
960 |
#else /* defined(AMIROOS_CFG_MAIN_INIT_HOOK_3_ARGS) */
|
|
961 | 961 |
AMIROOS_CFG_MAIN_INIT_HOOK_3(); |
962 |
#endif |
|
963 |
#endif |
|
962 |
#endif /* defined(AMIROOS_CFG_MAIN_INIT_HOOK_3_ARGS) */
|
|
963 |
#endif /* defined(AMIROOS_CFG_MAIN_INIT_HOOK_3) */
|
|
964 | 964 |
|
965 | 965 |
/* event associations */ |
966 | 966 |
#if (AMIROOS_CFG_SSSP_ENABLE == true) |
967 | 967 |
ioeventflagsmask |= MODULE_SSSP_EVENTFLAGS_PD | MODULE_SSSP_EVENTFLAGS_SYNC; |
968 | 968 |
#if (AMIROOS_CFG_SSSP_STACK_START != true) |
969 | 969 |
ioeventflagsmask |= MODULE_SSSP_EVENTFLAGS_DN; |
970 |
#endif |
|
970 |
#endif /* (AMIROOS_CFG_SSSP_STACK_START != true) */
|
|
971 | 971 |
#if (AMIROOS_CFG_SSSP_STACK_END != true) |
972 | 972 |
ioeventflagsmask |= MODULE_SSSP_EVENTFLAGS_UP; |
973 |
#endif |
|
974 |
#endif /* AMIROOS_CFG_SSSP_ENABLE == true */
|
|
973 |
#endif /* (AMIROOS_CFG_SSSP_STACK_END != true) */
|
|
974 |
#endif /* (AMIROOS_CFG_SSSP_ENABLE == true) */
|
|
975 | 975 |
if (ioeventflagsmask != 0) { |
976 | 976 |
chEvtRegisterMaskWithFlags(&aos.events.io, &_eventListenerIO, IOEVENT_MASK, ioeventflagsmask); |
977 | 977 |
} |
... | ... | |
980 | 980 |
#if defined(AMIROOS_CFG_MAIN_INIT_HOOK_4) |
981 | 981 |
#if defined(AMIROOS_CFG_MAIN_INIT_HOOK_4_ARGS) |
982 | 982 |
AMIROOS_CFG_MAIN_INIT_HOOK_4(AMIROOS_CFG_MAIN_INIT_HOOK_4_ARGS); |
983 |
#else |
|
983 |
#else /* defined(AMIROOS_CFG_MAIN_INIT_HOOK_4_ARGS) */
|
|
984 | 984 |
AMIROOS_CFG_MAIN_INIT_HOOK_4(); |
985 |
#endif |
|
986 |
#endif |
|
985 |
#endif /* defined(AMIROOS_CFG_MAIN_INIT_HOOK_4_ARGS) */
|
|
986 |
#endif /* defined(AMIROOS_CFG_MAIN_INIT_HOOK_4) */
|
|
987 | 987 |
|
988 | 988 |
/* periphery communication initialization */ |
989 | 989 |
// module specific initialization (if any) |
990 |
#ifdef MODULE_INIT_PERIPHERY_COMM
|
|
990 |
#if defined(MODULE_INIT_PERIPHERY_COMM)
|
|
991 | 991 |
MODULE_INIT_PERIPHERY_COMM(); |
992 |
#endif |
|
992 |
#endif /* defined(MODULE_INIT_PERIPHERY_COMM) */
|
|
993 | 993 |
#if (AMIROOS_CFG_SSSP_ENABLE == true) |
994 | 994 |
// CAN (mandatory) |
995 | 995 |
canStart(&MODULE_HAL_CAN, &moduleHalCanConfig); |
996 |
#endif |
|
996 |
#endif /* (AMIROOS_CFG_SSSP_ENABLE == true) */
|
|
997 | 997 |
// user interface (if any) |
998 |
#ifdef MODULE_HAL_PROGIF
|
|
998 |
#if defined(MODULE_HAL_PROGIF)
|
|
999 | 999 |
aosIOChannelInit(&_stdiochannel, (BaseAsynchronousChannel*)&MODULE_HAL_PROGIF); |
1000 | 1000 |
aosIOChannelOutputEnable(&_stdiochannel); |
1001 | 1001 |
aosIOStreamAddChannel(&aos.iostream, &_stdiochannel); |
... | ... | |
1004 | 1004 |
aosShellChannelInputEnable(&_stdshellchannel); |
1005 | 1005 |
aosShellChannelOutputEnable(&_stdshellchannel); |
1006 | 1006 |
aosShellStreamAddChannel(&aos.shell.stream, &_stdshellchannel); |
1007 |
#endif |
|
1008 |
#endif |
|
1007 |
#endif /* (AMIROOS_CFG_SHELL_ENABLE == true) || (AMIROOS_CFG_TESTS_ENABLE == true) */
|
|
1008 |
#endif /* defined(MODULE_HAL_PROGIF) */
|
|
1009 | 1009 |
|
1010 | 1010 |
#if defined(AMIROOS_CFG_MAIN_INIT_HOOK_5) |
1011 | 1011 |
#if defined(AMIROOS_CFG_MAIN_INIT_HOOK_5_ARGS) |
1012 | 1012 |
AMIROOS_CFG_MAIN_INIT_HOOK_5(AMIROOS_CFG_MAIN_INIT_HOOK_5_ARGS); |
1013 |
#else |
|
1013 |
#else /* defined(AMIROOS_CFG_MAIN_INIT_HOOK_5_ARGS) */
|
|
1014 | 1014 |
AMIROOS_CFG_MAIN_INIT_HOOK_5(); |
1015 |
#endif |
|
1016 |
#endif |
|
1015 |
#endif /* defined(AMIROOS_CFG_MAIN_INIT_HOOK_5_ARGS) */
|
|
1016 |
#endif /* defined(AMIROOS_CFG_MAIN_INIT_HOOK_5) */
|
|
1017 | 1017 |
|
1018 | 1018 |
/* module is ready -> print welcome prompt */ |
1019 | 1019 |
aosprintf("\n"); |
... | ... | |
1035 | 1035 |
#if defined(AMIROOS_CFG_MAIN_INIT_HOOK_6) |
1036 | 1036 |
#if defined(AMIROOS_CFG_MAIN_INIT_HOOK_6_ARGS) |
1037 | 1037 |
AMIROOS_CFG_MAIN_INIT_HOOK_6(AMIROOS_CFG_MAIN_INIT_HOOK_6_ARGS); |
1038 |
#else |
|
1038 |
#else /* defined(AMIROOS_CFG_MAIN_INIT_HOOK_6_ARGS) */
|
|
1039 | 1039 |
AMIROOS_CFG_MAIN_INIT_HOOK_6(); |
1040 |
#endif |
|
1041 |
#endif |
|
1040 |
#endif /* defined(AMIROOS_CFG_MAIN_INIT_HOOK_6_ARGS) */
|
|
1041 |
#endif /* defined(AMIROOS_CFG_MAIN_INIT_HOOK_6) */
|
|
1042 | 1042 |
|
1043 | 1043 |
#if (AMIROOS_CFG_TESTS_ENABLE == true) |
1044 | 1044 |
#if defined(MODULE_INIT_TESTS) |
1045 | 1045 |
MODULE_INIT_TESTS(); |
1046 |
#else |
|
1047 |
#warning "MODULE_INIT_TESTS() not defined" |
|
1048 |
#endif |
|
1049 |
#endif |
|
1046 |
#else /* defined(MODULE_INIT_TESTS) */
|
|
1047 |
#warning "AMIROOS_CFG_TESTS_ENABLE set to true, but MODULE_INIT_TESTS() not defined"
|
|
1048 |
#endif /* defined(MODULE_INIT_TESTS) */
|
|
1049 |
#endif /* (AMIROOS_CFG_TESTS_ENABLE == true) */
|
|
1050 | 1050 |
|
1051 | 1051 |
#if defined(AMIROOS_CFG_MAIN_INIT_HOOK_7) |
1052 | 1052 |
#if defined(AMIROOS_CFG_MAIN_INIT_HOOK_7_ARGS) |
1053 | 1053 |
AMIROOS_CFG_MAIN_INIT_HOOK_7(AMIROOS_CFG_MAIN_INIT_HOOK_7_ARGS); |
1054 |
#else |
|
1054 |
#else /* defined(AMIROOS_CFG_MAIN_INIT_HOOK_7_ARGS) */
|
|
1055 | 1055 |
AMIROOS_CFG_MAIN_INIT_HOOK_7(); |
1056 |
#endif |
|
1057 |
#endif |
|
1056 |
#endif /* defined(AMIROOS_CFG_MAIN_INIT_HOOK_7_ARGS) */
|
|
1057 |
#endif /* defined(AMIROOS_CFG_MAIN_INIT_HOOK_7) */
|
|
1058 | 1058 |
|
1059 | 1059 |
#if (AMIROOS_CFG_SSSP_ENABLE == true) |
1060 | 1060 |
/* SSSP startup OS synchronization phase (end of startup stage 2) */ |
... | ... | |
1070 | 1070 |
if (eventflags & MODULE_SSSP_EVENTFLAGS_PD) { |
1071 | 1071 |
shutdown = AOS_SHUTDOWN_PASSIVE; |
1072 | 1072 |
} else { |
1073 |
#ifdef MODULE_SSSP_STARTUP_2_2_IOEVENT_HOOK
|
|
1073 |
#if defined(MODULE_SSSP_STARTUP_2_2_IOEVENT_HOOK)
|
|
1074 | 1074 |
MODULE_SSSP_STARTUP_2_2_IOEVENT_HOOK(eventmask, eventflags); |
1075 |
#else |
|
1075 |
#else /* defined(MODULE_SSSP_STARTUP_2_2_IOEVENT_HOOK) */
|
|
1076 | 1076 |
// ignore any other IO events |
1077 |
#endif |
|
1077 |
#endif /* defined(MODULE_SSSP_STARTUP_2_2_IOEVENT_HOOK) */
|
|
1078 | 1078 |
} |
1079 | 1079 |
} |
1080 | 1080 |
// OS event |
... | ... | |
1096 | 1096 |
if (shutdown == AOS_SHUTDOWN_NONE) { |
1097 | 1097 |
shutdown = _ssspModuleStackInitialization(); |
1098 | 1098 |
} |
1099 |
#endif /* AMIROOS_CFG_SSSP_ENABLE == true */
|
|
1099 |
#endif /* (AMIROOS_CFG_SSSP_ENABLE == true) */
|
|
1100 | 1100 |
|
1101 | 1101 |
/* |
1102 | 1102 |
* There must be no delays at this point, thus no hook is allowed. |
... | ... | |
1126 | 1126 |
canTransmitTimeout(&MODULE_HAL_CAN, CAN_ANY_MAILBOX, &frame, TIME_IMMEDIATE); |
1127 | 1127 |
|
1128 | 1128 |
aosDbgPrintf("done\n"); |
1129 |
#else /* AMIROOS_CFG_SSSP_MASTER == false */
|
|
1129 |
#else /* (AMIROOS_CFG_SSSP_MASTER == true) */
|
|
1130 | 1130 |
CANRxFrame frame; |
1131 | 1131 |
uint64_t encoded; |
1132 | 1132 |
struct tm t; |
... | ... | |
1136 | 1136 |
#if (AMIROOS_CFG_DBG == true) |
1137 | 1137 |
// increase timeout in debug mode due to additional delays introduced by the many prinf() calls |
1138 | 1138 |
if (canReceiveTimeout(&MODULE_HAL_CAN, CAN_ANY_MAILBOX, &frame, chTimeUS2I(10 * AOS_SYSTEM_SSSP_TIMEOUT)) == MSG_OK) { |
1139 |
#else |
|
1139 |
#else /* (AMIROOS_CFG_DBG == true) */
|
|
1140 | 1140 |
if (canReceiveTimeout(&MODULE_HAL_CAN, CAN_ANY_MAILBOX, &frame, chTimeUS2I(AOS_SYSTEM_SSSP_TIMEOUT)) == MSG_OK) { |
1141 |
#endif |
|
1141 |
#endif /* (AMIROOS_CFG_DBG == true) */
|
|
1142 | 1142 |
// validate message |
1143 | 1143 |
if (frame.DLC == 8 && |
1144 | 1144 |
frame.RTR == CAN_RTR_DATA && |
... | ... | |
1157 | 1157 |
} else { |
1158 | 1158 |
aosDbgPrintf("fail (timeout)\n"); |
1159 | 1159 |
} |
1160 |
#endif /* AMIROOS_CFG_SSSP_MASTER == false */
|
|
1160 |
#endif /* (AMIROOS_CFG_SSSP_MASTER == true) */
|
|
1161 | 1161 |
aosDbgPrintf("\n"); |
1162 | 1162 |
} |
1163 | 1163 |
#endif /* (AMIROOS_CFG_SSSP_ENABLE == true) && (HAL_USE_RTC == TRUE) */ |
... | ... | |
1165 | 1165 |
#if defined(AMIROOS_CFG_MAIN_INIT_HOOK_8) |
1166 | 1166 |
#if defined(AMIROOS_CFG_MAIN_INIT_HOOK_8_ARGS) |
1167 | 1167 |
AMIROOS_CFG_MAIN_INIT_HOOK_8(AMIROOS_CFG_MAIN_INIT_HOOK_8_ARGS); |
1168 |
#else |
|
1168 |
#else /* defined(AMIROOS_CFG_MAIN_INIT_HOOK_8_ARGS) */
|
|
1169 | 1169 |
AMIROOS_CFG_MAIN_INIT_HOOK_8(); |
1170 |
#endif |
|
1171 |
#endif |
|
1170 |
#endif /* defined(AMIROOS_CFG_MAIN_INIT_HOOK_8_ARGS) */
|
|
1171 |
#endif /* defined(AMIROOS_CFG_MAIN_INIT_HOOK_8) */
|
|
1172 | 1172 |
|
1173 | 1173 |
/* completely start AMiRo-OS */ |
1174 | 1174 |
if (shutdown == AOS_SHUTDOWN_NONE) { |
... | ... | |
1178 | 1178 |
#if defined(AMIROOS_CFG_MAIN_INIT_HOOK_9) |
1179 | 1179 |
#if defined(AMIROOS_CFG_MAIN_INIT_HOOK_9_ARGS) |
1180 | 1180 |
AMIROOS_CFG_MAIN_INIT_HOOK_9(AMIROOS_CFG_MAIN_INIT_HOOK_9_ARGS); |
1181 |
#else |
|
1181 |
#else /* defined(AMIROOS_CFG_MAIN_INIT_HOOK_9_ARGS) */
|
|
1182 | 1182 |
AMIROOS_CFG_MAIN_INIT_HOOK_9(); |
1183 |
#endif |
|
1184 |
#endif |
|
1183 |
#endif /* defined(AMIROOS_CFG_MAIN_INIT_HOOK_9_ARGS) */
|
|
1184 |
#endif /* defined(AMIROOS_CFG_MAIN_INIT_HOOK_9) */
|
|
1185 | 1185 |
|
1186 | 1186 |
/* |
1187 | 1187 |
* ########################################################################## |
... | ... | |
1194 | 1194 |
// wait for an event |
1195 | 1195 |
#if (AMIROOS_CFG_MAIN_LOOP_TIMEOUT != 0) |
1196 | 1196 |
eventmask = chEvtWaitOneTimeout(ALL_EVENTS, chTimeUS2I(AMIROOS_CFG_MAIN_LOOP_TIMEOUT)); |
1197 |
#else |
|
1197 |
#else /* (AMIROOS_CFG_MAIN_LOOP_TIMEOUT != 0) */
|
|
1198 | 1198 |
eventmask = chEvtWaitOne(ALL_EVENTS); |
1199 |
#endif |
|
1199 |
#endif /* (AMIROOS_CFG_MAIN_LOOP_TIMEOUT != 0) */
|
|
1200 | 1200 |
|
1201 | 1201 |
#if defined(AMIROOS_CFG_MAIN_LOOP_HOOK_0) |
1202 | 1202 |
#if defined(AMIROOS_CFG_MAIN_LOOP_HOOK_0_ARGS) |
1203 | 1203 |
AMIROOS_CFG_MAIN_LOOP_HOOK_0(AMIROOS_CFG_MAIN_LOOP_HOOK_0_ARGS); |
1204 |
#else |
|
1204 |
#else /* defined(AMIROOS_CFG_MAIN_LOOP_HOOK_0_ARGS) */
|
|
1205 | 1205 |
AMIROOS_CFG_MAIN_LOOP_HOOK_0(); |
1206 |
#endif |
|
1207 |
#endif |
|
1206 |
#endif /* defined(AMIROOS_CFG_MAIN_LOOP_HOOK_0_ARGS) */
|
|
1207 |
#endif /* defined(AMIROOS_CFG_MAIN_LOOP_HOOK_0) */
|
|
1208 | 1208 |
|
1209 | 1209 |
switch (eventmask) { |
1210 | 1210 |
// if this was an I/O event |
... | ... | |
1217 | 1217 |
shutdown = AOS_SHUTDOWN_PASSIVE; |
1218 | 1218 |
} |
1219 | 1219 |
// all other events |
1220 |
#ifdef MODULE_MAIN_LOOP_IO_EVENT
|
|
1220 |
#if defined(MODULE_MAIN_LOOP_IO_EVENT)
|
|
1221 | 1221 |
else { |
1222 | 1222 |
MODULE_MAIN_LOOP_IO_EVENT(eventflags); |
1223 | 1223 |
} |
1224 |
#endif |
|
1225 |
#else /* AMIROOS_CFG_SSSP_ENABLE == false */
|
|
1226 |
#ifdef MODULE_MAIN_LOOP_IO_EVENT
|
|
1224 |
#endif /* defined(MODULE_MAIN_LOOP_IO_EVENT) */
|
|
1225 |
#else /* (AMIROOS_CFG_SSSP_ENABLE == true) */
|
|
1226 |
#if defined(MODULE_MAIN_LOOP_IO_EVENT)
|
|
1227 | 1227 |
MODULE_MAIN_LOOP_IO_EVENT(eventflags); |
1228 |
#endif |
|
1229 |
#endif /* AMIROOS_CFG_SSSP_ENABLE */
|
|
1228 |
#endif /* defined(MODULE_MAIN_LOOP_IO_EVENT) */
|
|
1229 |
#endif /* (AMIROOS_CFG_SSSP_ENABLE == true) */
|
|
1230 | 1230 |
break; |
1231 | 1231 |
|
1232 | 1232 |
// if this was an OS event |
... | ... | |
1247 | 1247 |
case AOS_SYSTEM_EVENTFLAGS_RESTART: |
1248 | 1248 |
shutdown = AOS_SHUTDOWN_RESTART; |
1249 | 1249 |
break; |
1250 |
#else /* AMIROOS_CFG_SSSP_ENABLE == false */
|
|
1250 |
#else /* (AMIROOS_CFG_SSSP_ENABLE == true) */
|
|
1251 | 1251 |
case AOS_SYSTEM_EVENTFLAGS_SHUTDOWN: |
1252 | 1252 |
shutdown = AOS_SHUTDOWN_DEFAULT; |
1253 | 1253 |
break; |
1254 |
#endif /* AMIROOS_CFG_SSSP_ENABLE */
|
|
1254 |
#endif /* (AMIROOS_CFG_SSSP_ENABLE == true) */
|
|
1255 | 1255 |
default: |
1256 | 1256 |
_unexpectedEventError(eventmask, eventflags); |
1257 | 1257 |
break; |
... | ... | |
1263 | 1263 |
eventflags = 0; |
1264 | 1264 |
#if (AMIROOS_CFG_MAIN_LOOP_TIMEOUT == 0) |
1265 | 1265 |
_unexpectedEventError(eventmask, eventflags); |
1266 |
#endif |
|
1266 |
#endif /* (AMIROOS_CFG_MAIN_LOOP_TIMEOUT == 0) */
|
|
1267 | 1267 |
break; |
1268 | 1268 |
} |
1269 | 1269 |
|
1270 | 1270 |
#if defined(AMIROOS_CFG_MAIN_LOOP_HOOK_1) |
1271 | 1271 |
#if defined(AMIROOS_CFG_MAIN_LOOP_HOOK_1_ARGS) |
1272 | 1272 |
AMIROOS_CFG_MAIN_LOOP_HOOK_1(AMIROOS_CFG_MAIN_LOOP_HOOK_1_ARGS); |
1273 |
#else |
|
1273 |
#else /* defined(AMIROOS_CFG_MAIN_LOOP_HOOK_1_ARGS) */
|
|
1274 | 1274 |
AMIROOS_CFG_MAIN_LOOP_HOOK_1(); |
1275 |
#endif |
|
1276 |
#endif |
|
1275 |
#endif /* defined(AMIROOS_CFG_MAIN_LOOP_HOOK_1_ARGS) */
|
|
1276 |
#endif /* defined(AMIROOS_CFG_MAIN_LOOP_HOOK_1) */
|
|
1277 | 1277 |
} |
1278 | 1278 |
|
1279 | 1279 |
/* |
... | ... | |
1285 | 1285 |
#if defined(AMIROOS_CFG_MAIN_SHUTDOWN_HOOK_0) |
1286 | 1286 |
#if defined(AMIROOS_CFG_MAIN_SHUTDOWN_HOOK_0_ARGS) |
1287 | 1287 |
AMIROOS_CFG_MAIN_SHUTDOWN_HOOK_0(AMIROOS_CFG_MAIN_SHUTDOWN_HOOK_0_ARGS); |
1288 |
#else |
|
1288 |
#else /* defined(AMIROOS_CFG_MAIN_SHUTDOWN_HOOK_0_ARGS) */
|
|
1289 | 1289 |
AMIROOS_CFG_MAIN_SHUTDOWN_HOOK_0(); |
1290 |
#endif |
|
1291 |
#endif |
|
1290 |
#endif /* defined(AMIROOS_CFG_MAIN_SHUTDOWN_HOOK_0_ARGS) */
|
|
1291 |
#endif /* defined(AMIROOS_CFG_MAIN_SHUTDOWN_HOOK_0) */
|
|
1292 | 1292 |
|
1293 | 1293 |
// initialize/acknowledge shutdown |
1294 | 1294 |
aosSysShutdownInit(shutdown); |
... | ... | |
1296 | 1296 |
#if defined(AMIROOS_CFG_MAIN_SHUTDOWN_HOOK_1) |
1297 | 1297 |
#if defined(AMIROOS_CFG_MAIN_SHUTDOWN_HOOK_1_ARGS) |
1298 | 1298 |
AMIROOS_CFG_MAIN_SHUTDOWN_HOOK_1(AMIROOS_CFG_MAIN_SHUTDOWN_HOOK_1_ARGS); |
1299 |
#else |
|
1299 |
#else /* defined(AMIROOS_CFG_MAIN_SHUTDOWN_HOOK_1_ARGS) */
|
|
1300 | 1300 |
AMIROOS_CFG_MAIN_SHUTDOWN_HOOK_1(); |
1301 |
#endif |
|
1302 |
#endif |
|
1301 |
#endif /* defined(AMIROOS_CFG_MAIN_SHUTDOWN_HOOK_1_ARGS) */
|
|
1302 |
#endif /* defined(AMIROOS_CFG_MAIN_SHUTDOWN_HOOK_1) */
|
|
1303 | 1303 |
|
1304 | 1304 |
// stop system threads |
1305 | 1305 |
aosSysStop(); |
... | ... | |
1307 | 1307 |
#if defined(AMIROOS_CFG_MAIN_SHUTDOWN_HOOK_2) |
1308 | 1308 |
#if defined(AMIROOS_CFG_MAIN_SHUTDOWN_HOOK_2_ARGS) |
1309 | 1309 |
AMIROOS_CFG_MAIN_SHUTDOWN_HOOK_2(AMIROOS_CFG_MAIN_SHUTDOWN_HOOK_2_ARGS); |
1310 |
#else |
|
1310 |
#else /* defined(AMIROOS_CFG_MAIN_SHUTDOWN_HOOK_2_ARGS) */
|
|
1311 | 1311 |
AMIROOS_CFG_MAIN_SHUTDOWN_HOOK_2(); |
1312 |
#endif |
|
1313 |
#endif |
|
1312 |
#endif /* defined(AMIROOS_CFG_MAIN_SHUTDOWN_HOOK_2_ARGS) */
|
|
1313 |
#endif /* defined(AMIROOS_CFG_MAIN_SHUTDOWN_HOOK_2) */
|
|
1314 | 1314 |
|
1315 | 1315 |
// deinitialize system |
1316 | 1316 |
aosSysDeinit(); |
... | ... | |
1318 | 1318 |
#if defined(AMIROOS_CFG_MAIN_SHUTDOWN_HOOK_3) |
1319 | 1319 |
#if defined(AMIROOS_CFG_MAIN_SHUTDOWN_HOOK_3_ARGS) |
1320 | 1320 |
AMIROOS_CFG_MAIN_SHUTDOWN_HOOK_3(AMIROOS_CFG_MAIN_SHUTDOWN_HOOK_3_ARGS); |
1321 |
#else |
|
1321 |
#else /* defined(AMIROOS_CFG_MAIN_SHUTDOWN_HOOK_3_ARGS) */
|
|
1322 | 1322 |
AMIROOS_CFG_MAIN_SHUTDOWN_HOOK_3(); |
1323 |
#endif |
|
1324 |
#endif |
|
1323 |
#endif /* defined(AMIROOS_CFG_MAIN_SHUTDOWN_HOOK_3_ARGS) */
|
|
1324 |
#endif /* defined(AMIROOS_CFG_MAIN_SHUTDOWN_HOOK_3) */
|
|
1325 | 1325 |
|
1326 | 1326 |
/* stop all periphery communication */ |
1327 | 1327 |
#if (AMIROOS_CFG_SSSP_ENABLE == true) |
1328 | 1328 |
// CAN (mandatory) |
1329 | 1329 |
canStop(&MODULE_HAL_CAN); |
1330 |
#endif |
|
1331 |
#ifdef MODULE_SHUTDOWN_PERIPHERY_COMM
|
|
1330 |
#endif /* (AMIROOS_CFG_SSSP_ENABLE == true) */
|
|
1331 |
#if defined(MODULE_SHUTDOWN_PERIPHERY_COMM)
|
|
1332 | 1332 |
MODULE_SHUTDOWN_PERIPHERY_COMM(); |
1333 |
#endif |
|
1333 |
#endif /* defined(MODULE_SHUTDOWN_PERIPHERY_COMM) */
|
|
1334 | 1334 |
|
1335 | 1335 |
#if defined(AMIROOS_CFG_MAIN_SHUTDOWN_HOOK_4) |
1336 | 1336 |
#if defined(AMIROOS_CFG_MAIN_SHUTDOWN_HOOK_4_ARGS) |
1337 | 1337 |
AMIROOS_CFG_MAIN_SHUTDOWN_HOOK_4(AMIROOS_CFG_MAIN_SHUTDOWN_HOOK_4_ARGS); |
1338 |
#else |
|
1338 |
#else /* defined(AMIROOS_CFG_MAIN_SHUTDOWN_HOOK_4_ARGS) */
|
|
1339 | 1339 |
AMIROOS_CFG_MAIN_SHUTDOWN_HOOK_4(); |
1340 |
#endif |
|
1341 |
#endif |
|
1340 |
#endif /* defined(AMIROOS_CFG_MAIN_SHUTDOWN_HOOK_4_ARGS) */
|
|
1341 |
#endif /* defined(AMIROOS_CFG_MAIN_SHUTDOWN_HOOK_4) */
|
|
1342 | 1342 |
|
1343 | 1343 |
// finally hand over to bootloader |
1344 | 1344 |
aosSysShutdownFinal(shutdown); |
Also available in: Unified diff