4G module EC200A TCP connection

This commit is contained in:
xuyanghang 2024-01-09 14:50:37 +08:00
parent 618ca9d872
commit 49259b08a3
3 changed files with 66 additions and 16 deletions

View File

@ -128,8 +128,8 @@ int Adapter4GTest(void)
#ifdef ADAPTER_EC200A
/* Using Public TCP server to test 4G Socket connection */
uint8 server_addr[64] = "120.76.100.197";
uint8 server_port[64] = "10002";
uint8 server_addr[64] = "xyheqmx.e3.luyouxia.net";
uint8 server_port[64] = "13333";
adapter->socket.socket_id = 0;

View File

@ -24,12 +24,13 @@
#define EC200A_AT_MODE_CMD "+++"
#define EC200A_GET_QCCID_CMD "AT+QCCID\r\n"
#define EC200A_GET_CPIN_CMD "AT+CPIN?\r\n"
#define EC200A_GET_CEREG_CMD "AT+CEREG?\r\n"
#define EC200A_OPEN_SOCKET_CMD "AT+QIOPEN=1,%u"
#define EC200A_CLOSE_SOCKET_CMD "AT+QICLOSE=%u\r\n"
#define EC200A_GET_CREG_CMD "AT+CREG?\r\n"
#define EC200A_CFG_TCP_CMD "AT+QICSGP"
#define EC200A_ACTIVE_PDP_CMD "AT+QIACT=1\r\n"
#define EC200A_DEACTIVE_PDP_CMD "AT+QIDEACT=1\r\n"
#define EC200A_CFG_TCP_CMD "AT+QICSGP"
#define EC200A_OPEN_SOCKET_CMD "AT+QIOPEN=1,%u"
#define EC200A_CLOSE_SOCKET_CMD "AT+QICLOSE=%u\r\n"
#define EC200A_CLOSE "AT+QPOWD"
#define EC200A_OK_REPLY "OK"
#define EC200A_READY_REPLY "READY"
@ -60,12 +61,12 @@ static void Ec200aPowerSet(void)
struct PinStat pin_stat;
pin_stat.pin = ADAPTER_EC200A_PWRKEY;
pin_stat.val = GPIO_HIGH;
pin_stat.val = GPIO_LOW; //put power key at low-level state
PrivWrite(pin_fd, &pin_stat, 1);
PrivTaskDelay(600); //at least 500ms
PrivTaskDelay(2500); //wait at least 2s
pin_stat.val = GPIO_LOW;
pin_stat.val = GPIO_HIGH; //put power key at high-level state
PrivWrite(pin_fd, &pin_stat, 1);
PrivClose(pin_fd);
@ -133,11 +134,12 @@ static int Ec200aClose(struct Adapter *adapter)
}
out:
/*step4: close ec200a serial port*/
PrivClose(adapter->fd);
/*step4: power down ec200a*/
ret = AtCmdConfigAndCheck(adapter->agent, EC200A_CLOSE, EC200A_OK_REPLY);
PrivTaskDelay(12500); //wait at least 12s
/*step5: power down ec200a*/
Ec200aPowerSet();
/*step5: close ec200a serial port*/
PrivClose(adapter->fd);
return ret;
}
@ -196,7 +198,9 @@ static int Ec200aConnect(struct Adapter *adapter, enum NetRoleType net_role, con
AtSetReplyEndChar(adapter->agent, 0x4F, 0x4B);
/*step1: serial write "+++", quit transparent mode*/
PrivTaskDelay(1500); //before +++ command, wait at least 1s
ATOrderSend(adapter->agent, REPLY_TIME_OUT, NULL, "+++");
PrivTaskDelay(1500); //after +++ command, wait at least 1s
/*step2: serial write "AT+CCID", get SIM ID*/
for(try = 0; try < TRY_TIMES; try++){
@ -221,8 +225,10 @@ static int Ec200aConnect(struct Adapter *adapter, enum NetRoleType net_role, con
}
/*step4: serial write "AT+CREG?", check whether registered to GSM net*/
PrivTaskDelay(1000); //before CREG command, wait 1s
for(try = 0; try < TRY_TIMES; try++){
ret = AtCmdConfigAndCheck(adapter->agent, EC200A_GET_CEREG_CMD, EC200A_CREG_REPLY);
ret = AtCmdConfigAndCheck(adapter->agent, EC200A_GET_CREG_CMD, EC200A_CREG_REPLY);
if (ret == 0) {
break;
}
@ -312,7 +318,7 @@ static int Ec200aConnect(struct Adapter *adapter, enum NetRoleType net_role, con
out:
ADAPTER_DEBUG("Ec200a connect TCP failed. Power down\n");
Ec200aPowerSet();
ret = AtCmdConfigAndCheck(adapter->agent, EC200A_CLOSE, EC200A_OK_REPLY);
return -1;
}
@ -345,7 +351,9 @@ static int Ec200aDisconnect(struct Adapter *adapter)
AtSetReplyEndChar(adapter->agent, 0x4F, 0x4B);
/*step1: serial write "+++", quit transparent mode*/
PrivTaskDelay(1500); //before +++ command, wait at least 1s
ATOrderSend(adapter->agent, REPLY_TIME_OUT, NULL, "+++");
PrivTaskDelay(1500); //after +++ command, wait at least 1s
/*step2: serial write "AT+QICLOSE", close socket connect before open socket*/
memset(ec200a_cmd, 0, sizeof(ec200a_cmd));
@ -361,7 +369,7 @@ static int Ec200aDisconnect(struct Adapter *adapter)
out:
ADAPTER_DEBUG("Ec200a disconnect TCP failed. Power down\n");
Ec200aPowerSet();
ret = AtCmdConfigAndCheck(adapter->agent, EC200A_CLOSE, EC200A_OK_REPLY);
return -1;
}

View File

@ -0,0 +1,42 @@
/*
* Copyright (c) 2020 AIIT XUOS Lab
* XiUOS is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
* http://license.coscl.org.cn/MulanPSL2
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
*/
/**
* @file ec200a.c
* @brief Implement the connection 4G adapter function, using EC200A device
* @version 3.0
* @author AIIT XUOS Lab
* @date 2024.1.5
*/
static int Ec200aMqttOpen() {
}
static int Ec200aMqttClose() {
}
static int Ec200aMqttConnect() {
}
static int Ec200aMqttSend() {
}
static int Ec200aMqttRecv() {
}