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