Skip to content

Commit 5156de7

Browse files
committed
drivers: modem: hl78xx: add AT command timeout event and handlers
Add MODEM_HL78XX_EVENT_AT_CMD_TIMEOUT event to distinguish chat scripts timeouts from other script failures. The chat callback now maps MODEM_CHAT_SCRIPT_RESULT_TIMEOUT to this new event. Update state handlers so AT command timeouts trigger the init fail diagnostic script during startup, and fall back to the power-on pulse in the init-fail state, similar to existing timeout handling. This improves error classification and enables more accurate recovery logic for long-running or stalled AT command exchanges. Signed-off-by: Zafer SEN <zafersn93@gmail.com>
1 parent d9b5b3c commit 5156de7

File tree

2 files changed

+9
-0
lines changed

2 files changed

+9
-0
lines changed

drivers/modem/hl78xx/hl78xx.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,8 @@ static const char *hl78xx_event_str(enum hl78xx_event event)
176176
#endif /* CONFIG_MODEM_HL78XX_AIRVANTAGE */
177177
case MODEM_HL78XX_EVENT_MDM_RESTART:
178178
return "modem unexpected restart";
179+
case MODEM_HL78XX_EVENT_AT_CMD_TIMEOUT:
180+
return "AT command timeout";
179181
default:
180182
return "unknown event";
181183
}
@@ -1022,6 +1024,10 @@ static void hl78xx_await_power_on_event_handler(struct hl78xx_data *data, enum h
10221024
hl78xx_enter_state(data, MODEM_HL78XX_STATE_RUN_INIT_SCRIPT);
10231025
break;
10241026

1027+
case MODEM_HL78XX_EVENT_AT_CMD_TIMEOUT:
1028+
hl78xx_enter_state(data, MODEM_HL78XX_STATE_RUN_INIT_FAIL_DIAGNOSTIC_SCRIPT);
1029+
break;
1030+
10251031
default:
10261032
break;
10271033
}
@@ -1077,6 +1083,7 @@ static void hl78xx_run_init_fail_script_event_handler(struct hl78xx_data *data,
10771083
}
10781084
break;
10791085
case MODEM_HL78XX_EVENT_TIMEOUT:
1086+
case MODEM_HL78XX_EVENT_AT_CMD_TIMEOUT:
10801087
if (hl78xx_gpio_is_enabled(&config->mdm_gpio_pwr_on)) {
10811088
hl78xx_enter_state(data, MODEM_HL78XX_STATE_POWER_ON_PULSE);
10821089
break;

drivers/modem/hl78xx/hl78xx_chat.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -325,6 +325,8 @@ void hl78xx_chat_callback_handler(struct modem_chat *chat, enum modem_chat_scrip
325325

326326
if (result == MODEM_CHAT_SCRIPT_RESULT_SUCCESS) {
327327
hl78xx_delegate_event(data, MODEM_HL78XX_EVENT_SCRIPT_SUCCESS);
328+
} else if (result == MODEM_CHAT_SCRIPT_RESULT_TIMEOUT) {
329+
hl78xx_delegate_event(data, MODEM_HL78XX_EVENT_AT_CMD_TIMEOUT);
328330
} else {
329331
hl78xx_delegate_event(data, MODEM_HL78XX_EVENT_SCRIPT_FAILED);
330332
}

0 commit comments

Comments
 (0)