@@ -525,7 +525,8 @@ 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 ) || \
529
+ DT_HAS_COMPAT_STATUS_OKAY (quectel_eg800q )
529
530
MODEM_CHAT_MATCH_DEFINE (connect_match , "CONNECT" , "" , NULL );
530
531
#endif
531
532
@@ -2022,6 +2023,54 @@ MODEM_CHAT_SCRIPT_DEFINE(quectel_eg25_g_periodic_chat_script,
2022
2023
modem_cellular_chat_callback_handler , 4 );
2023
2024
#endif
2024
2025
2026
+ #if DT_HAS_COMPAT_STATUS_OKAY (quectel_eg800q )
2027
+ MODEM_CHAT_SCRIPT_CMDS_DEFINE (quectel_eg800q_init_chat_script_cmds ,
2028
+ MODEM_CHAT_SCRIPT_CMD_RESP ("AT" , ok_match ),
2029
+ MODEM_CHAT_SCRIPT_CMD_RESP ("ATE0" , ok_match ),
2030
+ MODEM_CHAT_SCRIPT_CMD_RESP ("AT+CFUN?" , ok_match ),
2031
+ MODEM_CHAT_SCRIPT_CMD_RESP ("AT+CFUN=4" , ok_match ),
2032
+ MODEM_CHAT_SCRIPT_CMD_RESP ("AT+CMEE=1" , ok_match ),
2033
+ MODEM_CHAT_SCRIPT_CMD_RESP ("AT+CEREG=1" , ok_match ),
2034
+ MODEM_CHAT_SCRIPT_CMD_RESP ("AT+CEREG?" , ok_match ),
2035
+ MODEM_CHAT_SCRIPT_CMD_RESP ("AT+CGSN" , imei_match ),
2036
+ MODEM_CHAT_SCRIPT_CMD_RESP ("" , ok_match ),
2037
+ MODEM_CHAT_SCRIPT_CMD_RESP ("AT+CGMM" , cgmm_match ),
2038
+ MODEM_CHAT_SCRIPT_CMD_RESP ("" , ok_match ),
2039
+ MODEM_CHAT_SCRIPT_CMD_RESP ("AT+CGMI" , cgmi_match ),
2040
+ MODEM_CHAT_SCRIPT_CMD_RESP ("" , ok_match ),
2041
+ MODEM_CHAT_SCRIPT_CMD_RESP ("AT+CGMR" , cgmr_match ),
2042
+ MODEM_CHAT_SCRIPT_CMD_RESP ("" , ok_match ),
2043
+ MODEM_CHAT_SCRIPT_CMD_RESP ("AT+CIMI" , cimi_match ),
2044
+ MODEM_CHAT_SCRIPT_CMD_RESP ("" , ok_match ),
2045
+ MODEM_CHAT_SCRIPT_CMD_RESP ("AT+CMUX=0,0,5,127" , ok_match ));
2046
+
2047
+ MODEM_CHAT_SCRIPT_DEFINE (quectel_eg800q_init_chat_script , quectel_eg800q_init_chat_script_cmds ,
2048
+ abort_matches , modem_cellular_chat_callback_handler , 30 );
2049
+
2050
+ MODEM_CHAT_SCRIPT_CMDS_DEFINE (quectel_eg800q_dial_chat_script_cmds ,
2051
+ MODEM_CHAT_SCRIPT_CMD_RESP_MULT ("AT+CGACT=0,1" , allow_match ),
2052
+ MODEM_CHAT_SCRIPT_CMD_RESP ("AT+CGDCONT=1,\"IP\","
2053
+ "\"" CONFIG_MODEM_CELLULAR_APN "\"" ,
2054
+ ok_match ),
2055
+ MODEM_CHAT_SCRIPT_CMD_RESP ("AT+CFUN=1" , ok_match ),
2056
+ /* this at command is required as a small delay before performing
2057
+ * dialing, otherwise we get 'NO CARRIER' and abort
2058
+ */
2059
+ MODEM_CHAT_SCRIPT_CMD_RESP_NONE ("AT" , 500 ),
2060
+ MODEM_CHAT_SCRIPT_CMD_RESP ("ATD*99***1#" , connect_match ), );
2061
+
2062
+ MODEM_CHAT_SCRIPT_DEFINE (quectel_eg800q_dial_chat_script , quectel_eg800q_dial_chat_script_cmds ,
2063
+ dial_abort_matches , modem_cellular_chat_callback_handler , 10 );
2064
+
2065
+ MODEM_CHAT_SCRIPT_CMDS_DEFINE (quectel_eg800q_periodic_chat_script_cmds ,
2066
+ MODEM_CHAT_SCRIPT_CMD_RESP ("AT+CEREG?" , ok_match ),
2067
+ MODEM_CHAT_SCRIPT_CMD_RESP ("AT+CSQ" , csq_match ));
2068
+
2069
+ MODEM_CHAT_SCRIPT_DEFINE (quectel_eg800q_periodic_chat_script ,
2070
+ quectel_eg800q_periodic_chat_script_cmds , abort_matches ,
2071
+ modem_cellular_chat_callback_handler , 4 );
2072
+ #endif
2073
+
2025
2074
#if DT_HAS_COMPAT_STATUS_OKAY (simcom_sim7080 )
2026
2075
MODEM_CHAT_SCRIPT_CMDS_DEFINE (simcom_sim7080_init_chat_script_cmds ,
2027
2076
MODEM_CHAT_SCRIPT_CMD_RESP_NONE ("AT" , 100 ),
@@ -2551,6 +2600,25 @@ MODEM_CHAT_SCRIPT_DEFINE(sqn_gm02s_periodic_chat_script,
2551
2600
&quectel_eg25_g_dial_chat_script, \
2552
2601
&quectel_eg25_g_periodic_chat_script, NULL)
2553
2602
2603
+ #define MODEM_CELLULAR_DEVICE_QUECTEL_EG800Q (inst ) \
2604
+ MODEM_PPP_DEFINE(MODEM_CELLULAR_INST_NAME(ppp, inst), NULL, 98, 1500, 64); \
2605
+ \
2606
+ static struct modem_cellular_data MODEM_CELLULAR_INST_NAME(data, inst) = { \
2607
+ .chat_delimiter = "\r", \
2608
+ .chat_filter = "\n", \
2609
+ .ppp = &MODEM_CELLULAR_INST_NAME(ppp, inst), \
2610
+ }; \
2611
+ \
2612
+ MODEM_CELLULAR_DEFINE_AND_INIT_USER_PIPES(inst, \
2613
+ (user_pipe_0, 3), \
2614
+ (user_pipe_1, 4)) \
2615
+ \
2616
+ MODEM_CELLULAR_DEFINE_INSTANCE(inst, 1500, 500, 15000, 5000, false, \
2617
+ NULL, \
2618
+ &quectel_eg800q_init_chat_script, \
2619
+ &quectel_eg800q_dial_chat_script, \
2620
+ &quectel_eg800q_periodic_chat_script, NULL)
2621
+
2554
2622
#define MODEM_CELLULAR_DEVICE_SIMCOM_SIM7080 (inst ) \
2555
2623
MODEM_PPP_DEFINE(MODEM_CELLULAR_INST_NAME(ppp, inst), NULL, 98, 1500, 64); \
2556
2624
\
@@ -2729,6 +2797,10 @@ DT_INST_FOREACH_STATUS_OKAY(MODEM_CELLULAR_DEVICE_QUECTEL_BG95)
2729
2797
DT_INST_FOREACH_STATUS_OKAY (MODEM_CELLULAR_DEVICE_QUECTEL_EG25_G )
2730
2798
#undef DT_DRV_COMPAT
2731
2799
2800
+ #define DT_DRV_COMPAT quectel_eg800q
2801
+ DT_INST_FOREACH_STATUS_OKAY (MODEM_CELLULAR_DEVICE_QUECTEL_EG800Q )
2802
+ #undef DT_DRV_COMPAT
2803
+
2732
2804
#define DT_DRV_COMPAT simcom_sim7080
2733
2805
DT_INST_FOREACH_STATUS_OKAY (MODEM_CELLULAR_DEVICE_SIMCOM_SIM7080 )
2734
2806
#undef DT_DRV_COMPAT
0 commit comments