@@ -261,10 +261,6 @@ static void am_ao_debug_stub(const struct am_ao *ao, const struct am_event *e) {
261261}
262262
263263void am_ao_state_ctor (const struct am_ao_state_cfg * cfg ) {
264- AM_ASSERT (cfg );
265- AM_ASSERT (cfg -> crit_enter );
266- AM_ASSERT (cfg -> crit_exit );
267-
268264 struct am_ao_state * me = & am_ao_state_ ;
269265 memset (me , 0 , sizeof (* me ));
270266
@@ -274,27 +270,27 @@ void am_ao_state_ctor(const struct am_ao_state_cfg *cfg) {
274270
275271 AM_ATOMIC_STORE_N (& me -> startup_complete , false);
276272
277- me -> debug = cfg -> debug ;
273+ me -> debug = cfg ? cfg -> debug : NULL ;
278274 if (!me -> debug ) {
279275 me -> debug = am_ao_debug_stub ;
280276 }
281- me -> crit_enter = cfg -> crit_enter ;
282- me -> crit_exit = cfg -> crit_exit ;
283- me -> on_idle = cfg -> on_idle ;
277+ me -> crit_enter = cfg ? cfg -> crit_enter : am_pal_crit_enter ;
278+ me -> crit_exit = cfg ? cfg -> crit_exit : am_pal_crit_exit ;
279+ me -> on_idle = cfg ? cfg -> on_idle : am_pal_on_idle ;
284280
285281 me -> running_ao_prio = AM_AO_PRIO_INVALID ;
286282
287283 struct am_event_state_cfg cfg_event = {
288- .crit_enter = cfg -> crit_enter ,
289- .crit_exit = cfg -> crit_exit ,
284+ .crit_enter = me -> crit_enter ,
285+ .crit_exit = me -> crit_exit ,
290286 };
291287 am_event_state_ctor (& cfg_event );
292288
293289 struct am_timer_state_cfg cfg_timer = {
294290 .post_unsafe = (am_timer_post_unsafe_fn )am_ao_post_fifo_unsafe ,
295291 .publish = (am_timer_publish_fn )am_ao_publish ,
296- .crit_enter = cfg -> crit_enter ,
297- .crit_exit = cfg -> crit_exit ,
292+ .crit_enter = me -> crit_enter ,
293+ .crit_exit = me -> crit_exit ,
298294 };
299295 am_timer_state_ctor (& cfg_timer );
300296}
0 commit comments