@@ -61,35 +61,28 @@ static void on_modem_lib_init(int ret, void *ctx)
6161}
6262
6363#if defined(CONFIG_NRF_MODEM_LIB_ON_FAULT_APPLICATION_SPECIFIC )
64- static void on_modem_failure_shutdown (struct k_work * item );
65- static void on_modem_failure_reinit (struct k_work * item );
64+ static struct nrf_modem_fault_info modem_fault_info ;
6665
67- K_WORK_DELAYABLE_DEFINE (modem_failure_shutdown_work , on_modem_failure_shutdown );
68- K_WORK_DELAYABLE_DEFINE (modem_failure_reinit_work , on_modem_failure_reinit );
69-
70- void nrf_modem_fault_handler (struct nrf_modem_fault_info * fault_info )
66+ static void on_modem_failure (struct k_work * )
7167{
72- rsp_send ("\r\n#XMODEM: FAULT,0x%x,0x%x\r\n" , fault_info -> reason ,
73- fault_info -> program_counter );
74- /* For now we wait 10 ms to give the trace handler time to process trace data. */
75- k_work_reschedule (& modem_failure_shutdown_work , K_MSEC (10 ));
76- }
68+ int ret ;
7769
78- static void on_modem_failure_shutdown (struct k_work * work )
79- {
80- int ret = nrf_modem_lib_shutdown ();
70+ rsp_send ("\r\n#XMODEM: FAULT,0x%x,0x%x\r\n" , modem_fault_info .reason ,
71+ modem_fault_info .program_counter );
8172
82- ARG_UNUSED ( work );
73+ ret = nrf_modem_lib_shutdown ( );
8374 rsp_send ("\r\n#XMODEM: SHUTDOWN,%d\r\n" , ret );
84- k_work_reschedule (& modem_failure_reinit_work , K_MSEC (10 ));
75+
76+ ret = nrf_modem_lib_init ();
77+ rsp_send ("\r\n#XMODEM: INIT,%d\r\n" , ret );
8578}
79+ K_WORK_DEFINE (modem_failure_work , on_modem_failure );
8680
87- static void on_modem_failure_reinit (struct k_work * work )
81+ void nrf_modem_fault_handler (struct nrf_modem_fault_info * fault_info )
8882{
89- int ret = nrf_modem_lib_init () ;
83+ modem_fault_info = * fault_info ;
9084
91- ARG_UNUSED (work );
92- rsp_send ("\r\n#XMODEM: INIT,%d\r\n" , ret );
85+ k_work_submit (& modem_failure_work );
9386}
9487#endif /* CONFIG_NRF_MODEM_LIB_ON_FAULT_APPLICATION_SPECIFIC */
9588
0 commit comments