@@ -61,35 +61,28 @@ static void on_modem_lib_init(int ret, void *ctx)
61
61
}
62
62
63
63
#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 ;
66
65
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 * )
71
67
{
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 ;
77
69
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 );
81
72
82
- ARG_UNUSED ( work );
73
+ ret = nrf_modem_lib_shutdown ( );
83
74
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 );
85
78
}
79
+ K_WORK_DEFINE (modem_failure_work , on_modem_failure );
86
80
87
- static void on_modem_failure_reinit (struct k_work * work )
81
+ void nrf_modem_fault_handler (struct nrf_modem_fault_info * fault_info )
88
82
{
89
- int ret = nrf_modem_lib_init () ;
83
+ modem_fault_info = * fault_info ;
90
84
91
- ARG_UNUSED (work );
92
- rsp_send ("\r\n#XMODEM: INIT,%d\r\n" , ret );
85
+ k_work_submit (& modem_failure_work );
93
86
}
94
87
#endif /* CONFIG_NRF_MODEM_LIB_ON_FAULT_APPLICATION_SPECIFIC */
95
88
0 commit comments