drivers: modem: gsm_ppp: Add support for Quectel modems
Add support for Quectel modem in gsm_ppp modem driver. The CMUX cmd is based on MUX application notes v1.0(2020-09-22) for BG95, BG77 and BG600L. Tested and working on EC21e. As the gsm_ppp doesn't do power control, it is required to power on the modem manually in the application. Signed-off-by: Yong Cong Sin <yongcong.sin@gmail.com>
This commit is contained in:
parent
36451e6b54
commit
6083b89553
3 changed files with 20 additions and 0 deletions
|
@ -60,6 +60,7 @@ config GSM_MUX_PENDING_CMD_MAX
|
||||||
config GSM_MUX_MRU_DEFAULT_LEN
|
config GSM_MUX_MRU_DEFAULT_LEN
|
||||||
int "Default size of received user data (MRU)"
|
int "Default size of received user data (MRU)"
|
||||||
default 127 if MODEM_GSM_SIMCOM
|
default 127 if MODEM_GSM_SIMCOM
|
||||||
|
default 127 if MODEM_GSM_QUECTEL
|
||||||
default 31
|
default 31
|
||||||
range 1 1509
|
range 1 1509
|
||||||
depends on GSM_MUX
|
depends on GSM_MUX
|
||||||
|
|
|
@ -27,6 +27,11 @@ config MODEM_GSM_SIMCOM
|
||||||
help
|
help
|
||||||
Use this if you have SIMCOM based modem like SIM800 etc.
|
Use this if you have SIMCOM based modem like SIM800 etc.
|
||||||
|
|
||||||
|
config MODEM_GSM_QUECTEL
|
||||||
|
bool "Quectel modem"
|
||||||
|
help
|
||||||
|
Use this if you have Quectel based modem like EC2X etc.
|
||||||
|
|
||||||
endchoice
|
endchoice
|
||||||
|
|
||||||
config MODEM_GSM_RX_STACK_SIZE
|
config MODEM_GSM_RX_STACK_SIZE
|
||||||
|
|
|
@ -769,6 +769,20 @@ static int mux_enable(struct gsm_modem *gsm)
|
||||||
STRINGIFY(CONFIG_GSM_MUX_MRU_DEFAULT_LEN),
|
STRINGIFY(CONFIG_GSM_MUX_MRU_DEFAULT_LEN),
|
||||||
&gsm->sem_response,
|
&gsm->sem_response,
|
||||||
GSM_CMD_AT_TIMEOUT);
|
GSM_CMD_AT_TIMEOUT);
|
||||||
|
} else if (IS_ENABLED(CONFIG_MODEM_GSM_QUECTEL)) {
|
||||||
|
ret = modem_cmd_send_nolock(&gsm->context.iface,
|
||||||
|
&gsm->context.cmd_handler,
|
||||||
|
&response_cmds[0],
|
||||||
|
ARRAY_SIZE(response_cmds),
|
||||||
|
"AT+CMUX=0,0,5,"
|
||||||
|
STRINGIFY(CONFIG_GSM_MUX_MRU_DEFAULT_LEN),
|
||||||
|
&gsm->sem_response,
|
||||||
|
GSM_CMD_AT_TIMEOUT);
|
||||||
|
|
||||||
|
/* Arbitrary delay for Quectel modems to initialize the CMUX,
|
||||||
|
* without this the AT cmd will fail.
|
||||||
|
*/
|
||||||
|
k_sleep(K_SECONDS(1));
|
||||||
} else {
|
} else {
|
||||||
/* Generic GSM modem */
|
/* Generic GSM modem */
|
||||||
ret = modem_cmd_send_nolock(&gsm->context.iface,
|
ret = modem_cmd_send_nolock(&gsm->context.iface,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue