Revision 41fc7088 core/src/aos_system.c
core/src/aos_system.c | ||
---|---|---|
1075 | 1075 |
aos.sssp.stage = AOS_SSSP_SHUTDOWN_1_3; |
1076 | 1076 |
#endif |
1077 | 1077 |
|
1078 |
// call bootloader callback depending on arguments |
|
1079 |
switch (shutdown) { |
|
1080 |
case AOS_SHUTDOWN_PASSIVE: |
|
1081 |
BL_CALLBACK_TABLE_ADDRESS->cbHandleShutdownRequest(); |
|
1082 |
break; |
|
1083 |
case AOS_SHUTDOWN_HIBERNATE: |
|
1084 |
BL_CALLBACK_TABLE_ADDRESS->cbShutdownHibernate(); |
|
1085 |
break; |
|
1086 |
case AOS_SHUTDOWN_DEEPSLEEP: |
|
1087 |
BL_CALLBACK_TABLE_ADDRESS->cbShutdownDeepsleep(); |
|
1088 |
break; |
|
1089 |
case AOS_SHUTDOWN_TRANSPORTATION: |
|
1090 |
BL_CALLBACK_TABLE_ADDRESS->cbShutdownTransportation(); |
|
1091 |
break; |
|
1092 |
case AOS_SHUTDOWN_RESTART: |
|
1093 |
BL_CALLBACK_TABLE_ADDRESS->cbShutdownRestart(); |
|
1094 |
break; |
|
1095 |
// must never occur |
|
1096 |
case AOS_SHUTDOWN_NONE: |
|
1097 |
default: |
|
1098 |
break; |
|
1078 |
// validate bootloader |
|
1079 |
if ((BL_CALLBACK_TABLE_ADDRESS->magicNumber == BL_MAGIC_NUMBER) && |
|
1080 |
(BL_CALLBACK_TABLE_ADDRESS->vBootloader.major == BL_VERSION_MAJOR) && |
|
1081 |
(BL_CALLBACK_TABLE_ADDRESS->vBootloader.minor >= BL_VERSION_MINOR)) { |
|
1082 |
// call bootloader callback depending on arguments |
|
1083 |
switch (shutdown) { |
|
1084 |
case AOS_SHUTDOWN_PASSIVE: |
|
1085 |
BL_CALLBACK_TABLE_ADDRESS->cbHandleShutdownRequest(); |
|
1086 |
break; |
|
1087 |
case AOS_SHUTDOWN_HIBERNATE: |
|
1088 |
BL_CALLBACK_TABLE_ADDRESS->cbShutdownHibernate(); |
|
1089 |
break; |
|
1090 |
case AOS_SHUTDOWN_DEEPSLEEP: |
|
1091 |
BL_CALLBACK_TABLE_ADDRESS->cbShutdownDeepsleep(); |
|
1092 |
break; |
|
1093 |
case AOS_SHUTDOWN_TRANSPORTATION: |
|
1094 |
BL_CALLBACK_TABLE_ADDRESS->cbShutdownTransportation(); |
|
1095 |
break; |
|
1096 |
case AOS_SHUTDOWN_RESTART: |
|
1097 |
BL_CALLBACK_TABLE_ADDRESS->cbShutdownRestart(); |
|
1098 |
break; |
|
1099 |
// must never occur |
|
1100 |
case AOS_SHUTDOWN_NONE: |
|
1101 |
default: |
|
1102 |
break; |
|
1103 |
} |
|
1104 |
} else { |
|
1105 |
// fallback if bootloader was found to be invalid |
|
1106 |
aosprintf("Bootloader incompatible or not available!\n"); |
|
1107 |
chThdSleep(TIME_INFINITE); |
|
1099 | 1108 |
} |
1100 | 1109 |
|
1101 | 1110 |
return; |
Also available in: Unified diff