@@ -525,7 +525,7 @@ MODEM_CHAT_MATCHES_DEFINE(dial_abort_matches,
525
525
MODEM_CHAT_MATCH ("NO CARRIER" , "" , NULL ),
526
526
MODEM_CHAT_MATCH ("NO DIALTONE" , "" , NULL ));
527
527
528
- #if DT_HAS_COMPAT_STATUS_OKAY (swir_hl7800 ) || DT_HAS_COMPAT_STATUS_OKAY (sqn_gm02s )
528
+ #if DT_HAS_COMPAT_STATUS_OKAY (swir_hl7800 ) || DT_HAS_COMPAT_STATUS_OKAY (sqn_gm02s ) || DT_HAS_COMPAT_STATUS_OKAY ( simcom_a76xx )
529
529
MODEM_CHAT_MATCH_DEFINE (connect_match , "CONNECT" , "" , NULL );
530
530
#endif
531
531
@@ -2064,6 +2064,51 @@ MODEM_CHAT_SCRIPT_DEFINE(simcom_sim7080_periodic_chat_script,
2064
2064
modem_cellular_chat_callback_handler , 4 );
2065
2065
#endif
2066
2066
2067
+ #if DT_HAS_COMPAT_STATUS_OKAY (simcom_a76xx )
2068
+ MODEM_CHAT_SCRIPT_CMDS_DEFINE (simcom_a76xx_init_chat_script_cmds ,
2069
+ MODEM_CHAT_SCRIPT_CMD_RESP_NONE ("AT" , 100 ),
2070
+ MODEM_CHAT_SCRIPT_CMD_RESP_NONE ("AT" , 100 ),
2071
+ MODEM_CHAT_SCRIPT_CMD_RESP_NONE ("AT" , 100 ),
2072
+ MODEM_CHAT_SCRIPT_CMD_RESP_NONE ("AT" , 100 ),
2073
+ MODEM_CHAT_SCRIPT_CMD_RESP ("ATE0" , ok_match ),
2074
+ MODEM_CHAT_SCRIPT_CMD_RESP ("AT+CFUN=4" , ok_match ),
2075
+ MODEM_CHAT_SCRIPT_CMD_RESP ("AT+CMEE=1" , ok_match ),
2076
+ MODEM_CHAT_SCRIPT_CMD_RESP ("AT+CREG=1" , ok_match ),
2077
+ MODEM_CHAT_SCRIPT_CMD_RESP ("AT+CGREG=1" , ok_match ),
2078
+ MODEM_CHAT_SCRIPT_CMD_RESP ("AT+CEREG=1" , ok_match ),
2079
+ MODEM_CHAT_SCRIPT_CMD_RESP ("AT+CREG?" , ok_match ),
2080
+ MODEM_CHAT_SCRIPT_CMD_RESP ("AT+CEREG?" , ok_match ),
2081
+ MODEM_CHAT_SCRIPT_CMD_RESP ("AT+CGREG?" , ok_match ),
2082
+ MODEM_CHAT_SCRIPT_CMD_RESP ("AT+CGSN" , imei_match ),
2083
+ MODEM_CHAT_SCRIPT_CMD_RESP ("" , ok_match ),
2084
+ MODEM_CHAT_SCRIPT_CMD_RESP ("AT+CGMM" , cgmm_match ),
2085
+ MODEM_CHAT_SCRIPT_CMD_RESP ("" , ok_match ),
2086
+ MODEM_CHAT_SCRIPT_CMD_RESP_NONE ("AT+CMUX=0,0,5,127" , 300 ));
2087
+
2088
+ MODEM_CHAT_SCRIPT_DEFINE (simcom_a76xx_init_chat_script , simcom_a76xx_init_chat_script_cmds ,
2089
+ abort_matches , modem_cellular_chat_callback_handler , 10 );
2090
+
2091
+ MODEM_CHAT_SCRIPT_CMDS_DEFINE (simcom_a76xx_dial_chat_script_cmds ,
2092
+ MODEM_CHAT_SCRIPT_CMD_RESP ("AT+CGDCONT=1,\"IP\","
2093
+ "\"" CONFIG_MODEM_CELLULAR_APN "\"" ,
2094
+ ok_match ),
2095
+ MODEM_CHAT_SCRIPT_CMD_RESP_MULT ("AT+CGACT=0,1" , allow_match ),
2096
+ MODEM_CHAT_SCRIPT_CMD_RESP ("AT+CFUN=1" , ok_match ),
2097
+ MODEM_CHAT_SCRIPT_CMD_RESP ("ATD*99***1#" , connect_match ), );
2098
+
2099
+ MODEM_CHAT_SCRIPT_DEFINE (simcom_a76xx_dial_chat_script , simcom_a76xx_dial_chat_script_cmds ,
2100
+ dial_abort_matches , modem_cellular_chat_callback_handler , 10 );
2101
+
2102
+ MODEM_CHAT_SCRIPT_CMDS_DEFINE (simcom_a76xx_periodic_chat_script_cmds ,
2103
+ MODEM_CHAT_SCRIPT_CMD_RESP ("AT+CREG?" , ok_match ),
2104
+ MODEM_CHAT_SCRIPT_CMD_RESP ("AT+CEREG?" , ok_match ),
2105
+ MODEM_CHAT_SCRIPT_CMD_RESP ("AT+CGREG?" , ok_match ));
2106
+
2107
+ MODEM_CHAT_SCRIPT_DEFINE (simcom_a76xx_periodic_chat_script ,
2108
+ simcom_a76xx_periodic_chat_script_cmds , abort_matches ,
2109
+ modem_cellular_chat_callback_handler , 4 );
2110
+ #endif
2111
+
2067
2112
#if DT_HAS_COMPAT_STATUS_OKAY (u_blox_sara_r4 )
2068
2113
MODEM_CHAT_SCRIPT_CMDS_DEFINE (u_blox_sara_r4_init_chat_script_cmds ,
2069
2114
MODEM_CHAT_SCRIPT_CMD_RESP_NONE ("AT" , 100 ),
@@ -2567,6 +2612,25 @@ MODEM_CHAT_SCRIPT_DEFINE(sqn_gm02s_periodic_chat_script,
2567
2612
&simcom_sim7080_dial_chat_script, \
2568
2613
&simcom_sim7080_periodic_chat_script, NULL)
2569
2614
2615
+ #define MODEM_CELLULAR_DEVICE_SIMCOM_A76XX (inst ) \
2616
+ MODEM_PPP_DEFINE(MODEM_CELLULAR_INST_NAME(ppp, inst), NULL, 98, 1500, 64); \
2617
+ \
2618
+ static struct modem_cellular_data MODEM_CELLULAR_INST_NAME(data, inst) = { \
2619
+ .chat_delimiter = "\r", \
2620
+ .chat_filter = "\n", \
2621
+ .ppp = &MODEM_CELLULAR_INST_NAME(ppp, inst), \
2622
+ }; \
2623
+ \
2624
+ MODEM_CELLULAR_DEFINE_AND_INIT_USER_PIPES(inst, \
2625
+ (user_pipe_0, 3), \
2626
+ (user_pipe_1, 4)) \
2627
+ \
2628
+ MODEM_CELLULAR_DEFINE_INSTANCE(inst, 1500, 100, 20000, 5000, false, \
2629
+ NULL, \
2630
+ &simcom_a76xx_init_chat_script, \
2631
+ &simcom_a76xx_dial_chat_script, \
2632
+ &simcom_a76xx_periodic_chat_script, NULL)
2633
+
2570
2634
#define MODEM_CELLULAR_DEVICE_U_BLOX_SARA_R4 (inst ) \
2571
2635
MODEM_PPP_DEFINE(MODEM_CELLULAR_INST_NAME(ppp, inst), NULL, 98, 1500, 64); \
2572
2636
\
@@ -2730,6 +2794,10 @@ DT_INST_FOREACH_STATUS_OKAY(MODEM_CELLULAR_DEVICE_QUECTEL_EG25_G)
2730
2794
DT_INST_FOREACH_STATUS_OKAY (MODEM_CELLULAR_DEVICE_SIMCOM_SIM7080 )
2731
2795
#undef DT_DRV_COMPAT
2732
2796
2797
+ #define DT_DRV_COMPAT simcom_a76xx
2798
+ DT_INST_FOREACH_STATUS_OKAY (MODEM_CELLULAR_DEVICE_SIMCOM_A76XX )
2799
+ #undef DT_DRV_COMPAT
2800
+
2733
2801
#define DT_DRV_COMPAT u_blox_sara_r4
2734
2802
DT_INST_FOREACH_STATUS_OKAY (MODEM_CELLULAR_DEVICE_U_BLOX_SARA_R4 )
2735
2803
#undef DT_DRV_COMPAT
0 commit comments