@ -525,8 +525,10 @@ MODEM_CHAT_MATCHES_DEFINE(dial_abort_matches,
@@ -525,8 +525,10 @@ MODEM_CHAT_MATCHES_DEFINE(dial_abort_matches,
MODEM_CHAT_MATCH ( " NO CARRIER " , " " , NULL ) ,
MODEM_CHAT_MATCH ( " NO DIALTONE " , " " , NULL ) ) ;
# if DT_HAS_COMPAT_STATUS_OKAY(swir_hl7800) || DT_HAS_COMPAT_STATUS_OKAY(sqn_gm02s) || \
DT_HAS_COMPAT_STATUS_OKAY ( quectel_eg800q )
# if DT_HAS_COMPAT_STATUS_OKAY(swir_hl7800) || \
DT_HAS_COMPAT_STATUS_OKAY ( sqn_gm02s ) | | \
DT_HAS_COMPAT_STATUS_OKAY ( quectel_eg800q ) | | \
DT_HAS_COMPAT_STATUS_OKAY ( simcom_a76xx )
MODEM_CHAT_MATCH_DEFINE ( connect_match , " CONNECT " , " " , NULL ) ;
# endif
@ -2116,6 +2118,64 @@ MODEM_CHAT_SCRIPT_DEFINE(simcom_sim7080_periodic_chat_script,
@@ -2116,6 +2118,64 @@ MODEM_CHAT_SCRIPT_DEFINE(simcom_sim7080_periodic_chat_script,
modem_cellular_chat_callback_handler , 4 ) ;
# endif
# if DT_HAS_COMPAT_STATUS_OKAY(simcom_a76xx)
MODEM_CHAT_SCRIPT_CMDS_DEFINE ( simcom_a76xx_init_chat_script_cmds ,
MODEM_CHAT_SCRIPT_CMD_RESP_NONE ( " AT " , 100 ) ,
MODEM_CHAT_SCRIPT_CMD_RESP_NONE ( " AT " , 100 ) ,
MODEM_CHAT_SCRIPT_CMD_RESP_NONE ( " AT " , 100 ) ,
MODEM_CHAT_SCRIPT_CMD_RESP_NONE ( " AT " , 100 ) ,
MODEM_CHAT_SCRIPT_CMD_RESP ( " ATE0 " , ok_match ) ,
/* Power on the GNSS module.
* We need to do this early , otherwise it does not work when
* doing it later ( e . g . from a user pipe ) .
*/
MODEM_CHAT_SCRIPT_CMD_RESP_MULT ( " AT+CGNSSPWR=1 " , allow_match ) ,
MODEM_CHAT_SCRIPT_CMD_RESP ( " AT+CFUN=4 " , ok_match ) ,
MODEM_CHAT_SCRIPT_CMD_RESP ( " AT+CMEE=1 " , ok_match ) ,
MODEM_CHAT_SCRIPT_CMD_RESP ( " AT+CREG=1 " , ok_match ) ,
MODEM_CHAT_SCRIPT_CMD_RESP ( " AT+CGREG=1 " , ok_match ) ,
MODEM_CHAT_SCRIPT_CMD_RESP ( " AT+CEREG=1 " , ok_match ) ,
MODEM_CHAT_SCRIPT_CMD_RESP ( " AT+CREG? " , ok_match ) ,
MODEM_CHAT_SCRIPT_CMD_RESP ( " AT+CEREG? " , ok_match ) ,
MODEM_CHAT_SCRIPT_CMD_RESP ( " AT+CGREG? " , ok_match ) ,
MODEM_CHAT_SCRIPT_CMD_RESP ( " AT+CGSN " , imei_match ) ,
MODEM_CHAT_SCRIPT_CMD_RESP ( " " , ok_match ) ,
MODEM_CHAT_SCRIPT_CMD_RESP ( " AT+CGMM " , cgmm_match ) ,
MODEM_CHAT_SCRIPT_CMD_RESP ( " " , ok_match ) ,
MODEM_CHAT_SCRIPT_CMD_RESP_NONE ( " AT+CMUX=0,0,5,127 " , 300 ) ) ;
MODEM_CHAT_SCRIPT_DEFINE ( simcom_a76xx_init_chat_script , simcom_a76xx_init_chat_script_cmds ,
abort_matches , modem_cellular_chat_callback_handler , 10 ) ;
MODEM_CHAT_SCRIPT_CMDS_DEFINE ( simcom_a76xx_dial_chat_script_cmds ,
MODEM_CHAT_SCRIPT_CMD_RESP ( " AT+CGDCONT=1, \" IP \" , "
" \" " CONFIG_MODEM_CELLULAR_APN " \" " ,
ok_match ) ,
MODEM_CHAT_SCRIPT_CMD_RESP_MULT ( " AT+CGACT=0,1 " , allow_match ) ,
MODEM_CHAT_SCRIPT_CMD_RESP ( " AT+CFUN=1 " , ok_match ) ,
MODEM_CHAT_SCRIPT_CMD_RESP ( " ATD*99***1# " , connect_match ) , ) ;
MODEM_CHAT_SCRIPT_DEFINE ( simcom_a76xx_dial_chat_script , simcom_a76xx_dial_chat_script_cmds ,
dial_abort_matches , modem_cellular_chat_callback_handler , 10 ) ;
MODEM_CHAT_SCRIPT_CMDS_DEFINE ( simcom_a76xx_periodic_chat_script_cmds ,
MODEM_CHAT_SCRIPT_CMD_RESP ( " AT+CREG? " , ok_match ) ,
MODEM_CHAT_SCRIPT_CMD_RESP ( " AT+CEREG? " , ok_match ) ,
MODEM_CHAT_SCRIPT_CMD_RESP ( " AT+CGREG? " , ok_match ) ) ;
MODEM_CHAT_SCRIPT_DEFINE ( simcom_a76xx_periodic_chat_script ,
simcom_a76xx_periodic_chat_script_cmds , abort_matches ,
modem_cellular_chat_callback_handler , 4 ) ;
MODEM_CHAT_SCRIPT_CMDS_DEFINE ( simcom_a76xx_shutdown_chat_script_cmds ,
MODEM_CHAT_SCRIPT_CMD_RESP ( " AT+CPOF " , ok_match ) ) ;
MODEM_CHAT_SCRIPT_DEFINE ( simcom_a76xx_shutdown_chat_script ,
simcom_a76xx_shutdown_chat_script_cmds , abort_matches ,
modem_cellular_chat_callback_handler , 15 ) ;
# endif
# if DT_HAS_COMPAT_STATUS_OKAY(u_blox_sara_r4)
MODEM_CHAT_SCRIPT_CMDS_DEFINE ( u_blox_sara_r4_init_chat_script_cmds ,
MODEM_CHAT_SCRIPT_CMD_RESP_NONE ( " AT " , 100 ) ,
@ -2638,6 +2698,26 @@ MODEM_CHAT_SCRIPT_DEFINE(sqn_gm02s_periodic_chat_script,
@@ -2638,6 +2698,26 @@ MODEM_CHAT_SCRIPT_DEFINE(sqn_gm02s_periodic_chat_script,
& simcom_sim7080_dial_chat_script , \
& simcom_sim7080_periodic_chat_script , NULL )
# define MODEM_CELLULAR_DEVICE_SIMCOM_A76XX(inst) \
MODEM_PPP_DEFINE ( MODEM_CELLULAR_INST_NAME ( ppp , inst ) , NULL , 98 , 1500 , 64 ) ; \
\
static struct modem_cellular_data MODEM_CELLULAR_INST_NAME ( data , inst ) = { \
. chat_delimiter = " \r " , \
. chat_filter = " \n " , \
. ppp = & MODEM_CELLULAR_INST_NAME ( ppp , inst ) , \
} ; \
\
MODEM_CELLULAR_DEFINE_AND_INIT_USER_PIPES ( inst , \
( user_pipe_0 , 3 ) , \
( user_pipe_1 , 4 ) ) \
\
MODEM_CELLULAR_DEFINE_INSTANCE ( inst , 500 , 100 , 20000 , 5000 , false , \
NULL , \
& simcom_a76xx_init_chat_script , \
& simcom_a76xx_dial_chat_script , \
& simcom_a76xx_periodic_chat_script , \
& simcom_a76xx_shutdown_chat_script )
# define MODEM_CELLULAR_DEVICE_U_BLOX_SARA_R4(inst) \
MODEM_PPP_DEFINE ( MODEM_CELLULAR_INST_NAME ( ppp , inst ) , NULL , 98 , 1500 , 64 ) ; \
\
@ -2805,6 +2885,10 @@ DT_INST_FOREACH_STATUS_OKAY(MODEM_CELLULAR_DEVICE_QUECTEL_EG800Q)
@@ -2805,6 +2885,10 @@ DT_INST_FOREACH_STATUS_OKAY(MODEM_CELLULAR_DEVICE_QUECTEL_EG800Q)
DT_INST_FOREACH_STATUS_OKAY ( MODEM_CELLULAR_DEVICE_SIMCOM_SIM7080 )
# undef DT_DRV_COMPAT
# define DT_DRV_COMPAT simcom_a76xx
DT_INST_FOREACH_STATUS_OKAY ( MODEM_CELLULAR_DEVICE_SIMCOM_A76XX )
# undef DT_DRV_COMPAT
# define DT_DRV_COMPAT u_blox_sara_r4
DT_INST_FOREACH_STATUS_OKAY ( MODEM_CELLULAR_DEVICE_U_BLOX_SARA_R4 )
# undef DT_DRV_COMPAT