Revision 9ebb11a9 core/src/aos_main.cpp
| core/src/aos_main.cpp | ||
|---|---|---|
| 61 | 61 |
*/ |
| 62 | 62 |
#define DELAYEVENT_MASK EVENT_MASK(4) |
| 63 | 63 |
|
| 64 |
#if (AMIROOS_CFG_SSSP_ENABLE == true) || defined(__DOXYGEN__) |
|
| 65 |
|
|
| 64 | 66 |
/** |
| 65 | 67 |
* @brief CAN message identifier for initialization of the SSSP stack initialization sequence. |
| 66 | 68 |
*/ |
| ... | ... | |
| 76 | 78 |
*/ |
| 77 | 79 |
#define SSSP_STACKINIT_CANMSGID_ABORT 0x001 |
| 78 | 80 |
|
| 81 |
#endif /* AMIROOS_CFG_SSSP_ENABLE == true */ |
|
| 82 |
|
|
| 79 | 83 |
/** |
| 80 | 84 |
* @brief CAN message identifier for calender synchronization message. |
| 81 | 85 |
*/ |
| ... | ... | |
| 129 | 133 |
return; |
| 130 | 134 |
} |
| 131 | 135 |
|
| 136 |
#if (AMIROOS_CFG_SSSP_ENABLE == true) || defined(__DOXYGEN__) |
|
| 132 | 137 |
/** |
| 133 | 138 |
* @brief Callback function to be used during SSSP stack initialization sequence. |
| 134 | 139 |
* |
| ... | ... | |
| 144 | 149 |
|
| 145 | 150 |
return; |
| 146 | 151 |
} |
| 152 |
#endif /* AMIROOS_CFG_SSSP_ENABLE == true */ |
|
| 147 | 153 |
|
| 148 | 154 |
/** |
| 149 | 155 |
* @brief Helper function to serialize data. |
| ... | ... | |
| 242 | 248 |
return; |
| 243 | 249 |
} |
| 244 | 250 |
|
| 251 |
#if (AMIROOS_CFG_SSSP_ENABLE == true) || defined(__DOXYGEN__) |
|
| 245 | 252 |
/** |
| 246 | 253 |
* @brief Implementation of the SSSP module stack initialization sequence (startup phase 3). |
| 247 | 254 |
* |
| ... | ... | |
| 404 | 411 |
aosDbgPrintf("PD evt\n");
|
| 405 | 412 |
// deactivate S and UP |
| 406 | 413 |
apalControlGpioSet(&moduleSsspGpioSync, APAL_GPIO_OFF); |
| 407 |
#if (AMIROOS_CFG_SSSP_STACK_END != true)
|
|
| 414 |
#if (AMIROOS_CFG_SSSP_STACK_END != true) |
|
| 408 | 415 |
apalControlGpioSet(&moduleSsspGpioUp, APAL_GPIO_OFF); |
| 409 |
#endif
|
|
| 416 |
#endif |
|
| 410 | 417 |
// set shutdown flag and exit the loop |
| 411 | 418 |
shutdown = AOS_SHUTDOWN_PASSIVE; |
| 412 | 419 |
break; |
| ... | ... | |
| 837 | 844 |
|
| 838 | 845 |
return shutdown; |
| 839 | 846 |
} |
| 847 |
#endif /* AMIROOS_CFG_SSSP_ENABLE == true */ |
|
| 840 | 848 |
|
| 841 | 849 |
/** |
| 842 | 850 |
* @brief Application entry point. |
| ... | ... | |
| 929 | 937 |
#endif |
| 930 | 938 |
|
| 931 | 939 |
/* event associations */ |
| 940 |
#if (AMIROOS_CFG_SSSP_ENABLE == true) |
|
| 932 | 941 |
#if (AMIROOS_CFG_SSSP_STACK_START == true) && (AMIROOS_CFG_SSSP_STACK_END == true) |
| 933 | 942 |
chEvtRegisterMaskWithFlags(&aos.events.io, &_eventListenerIO, IOEVENT_MASK, MODULE_SSSP_EVENTFLAGS_PD | MODULE_SSSP_EVENTFLAGS_SYNC); |
| 934 | 943 |
#elif (AMIROOS_CFG_SSSP_STACK_START == true) |
| ... | ... | |
| 938 | 947 |
#else |
| 939 | 948 |
chEvtRegisterMaskWithFlags(&aos.events.io, &_eventListenerIO, IOEVENT_MASK, MODULE_SSSP_EVENTFLAGS_PD | MODULE_SSSP_EVENTFLAGS_SYNC | MODULE_SSSP_EVENTFLAGS_DN | MODULE_SSSP_EVENTFLAGS_UP); |
| 940 | 949 |
#endif |
| 950 |
#endif /* AMIROOS_CFG_SSSP_ENABLE == true */ |
|
| 941 | 951 |
chEvtRegisterMask(&aos.events.os, &_eventListenerOS, OSEVENT_MASK); |
| 942 | 952 |
|
| 943 | 953 |
#if defined(AMIROOS_CFG_MAIN_INIT_HOOK_5) |
| ... | ... | |
| 1001 | 1011 |
#endif |
| 1002 | 1012 |
#endif |
| 1003 | 1013 |
|
| 1014 |
#if (AMIROOS_CFG_SSSP_ENABLE == true) |
|
| 1004 | 1015 |
/* SSSP startup OS synchronization phase (end of startup stage 2) */ |
| 1005 | 1016 |
while ((shutdown == AOS_SHUTDOWN_NONE) && (eventmask = aosSysSsspStartupOsInitSyncCheck(&_eventListenerIO)) != 0) {
|
| 1006 | 1017 |
/* |
| ... | ... | |
| 1040 | 1051 |
if (shutdown == AOS_SHUTDOWN_NONE) {
|
| 1041 | 1052 |
shutdown = _ssspModuleStackInitialization(); |
| 1042 | 1053 |
} |
| 1054 |
#endif /* AMIROOS_CFG_SSSP_ENABLE == true */ |
|
| 1043 | 1055 |
|
| 1044 | 1056 |
/* |
| 1045 | 1057 |
* There must be no delays at this point, thus no hook is allowed. |
| 1046 | 1058 |
*/ |
| 1047 | 1059 |
|
| 1048 |
/* snychronize calendars */ |
|
| 1060 |
#if (AMIROOS_CFG_SSSP_ENABLE == true) |
|
| 1061 |
/* synchronize calendars */ |
|
| 1049 | 1062 |
if (shutdown == AOS_SHUTDOWN_NONE) {
|
| 1050 | 1063 |
#if (AMIROOS_CFG_SSSP_MASTER == true) |
| 1051 | 1064 |
CANTxFrame frame; |
| ... | ... | |
| 1068 | 1081 |
canTransmitTimeout(&MODULE_HAL_CAN, CAN_ANY_MAILBOX, &frame, TIME_IMMEDIATE); |
| 1069 | 1082 |
|
| 1070 | 1083 |
aosDbgPrintf("done\n");
|
| 1071 |
#else |
|
| 1084 |
#else /* AMIROOS_CFG_SSSP_MASTER == false */
|
|
| 1072 | 1085 |
CANRxFrame frame; |
| 1073 | 1086 |
uint64_t encoded; |
| 1074 | 1087 |
struct tm t; |
| ... | ... | |
| 1094 | 1107 |
} else {
|
| 1095 | 1108 |
aosDbgPrintf("fail (timeout)\n");
|
| 1096 | 1109 |
} |
| 1097 |
#endif |
|
| 1110 |
#endif /* AMIROOS_CFG_SSSP_MASTER == false */
|
|
| 1098 | 1111 |
aosDbgPrintf("\n");
|
| 1099 | 1112 |
} |
| 1113 |
#endif /* AMIROOS_CFG_SSSP_ENABLE == true */ |
|
| 1100 | 1114 |
|
| 1101 | 1115 |
#if defined(AMIROOS_CFG_MAIN_INIT_HOOK_8) |
| 1102 | 1116 |
#if defined(AMIROOS_CFG_MAIN_INIT_HOOK_8_ARGS) |
| ... | ... | |
| 1147 | 1161 |
case IOEVENT_MASK: |
| 1148 | 1162 |
// evaluate flags |
| 1149 | 1163 |
eventflags = chEvtGetAndClearFlags(&_eventListenerIO); |
| 1164 |
#if (AMIROOS_CFG_SSSP_ENABLE == true) |
|
| 1150 | 1165 |
// PD event |
| 1151 | 1166 |
if (eventflags & MODULE_SSSP_EVENTFLAGS_PD) {
|
| 1152 | 1167 |
shutdown = AOS_SHUTDOWN_PASSIVE; |
| 1153 | 1168 |
} |
| 1169 |
#endif |
|
| 1154 | 1170 |
// all other events |
| 1155 | 1171 |
#ifdef MODULE_MAIN_LOOP_IO_EVENT |
| 1156 | 1172 |
else {
|
Also available in: Unified diff