/* * drv_ec800k.h * * Created on: Apr 6, 2025 * Author: wushufeng * * */ #ifndef _DRV_EC800K_H_ #define _DRV_EC800K_H_ #include "rtdef.h" #include "rttypes.h" #ifdef __cplusplus extern "C" { #endif #include #include #include #include #include #include #include "rtdevice.h" #define LTE_CMD_WAIT_NONE (10) #define LTE_CMD_WAIT_SHORT (100) #define LTE_CMD_WAIT_NORMAL (500) #define LTE_CMD_WAIT_LONG (3000) #define LTE_CMD_WAIT_LLONG (7000) #define DEFAULT_EXPECT "\r\nOK\r\n" #define DEFAULT_ERROR "ERROR" #define DEFAULT_RDY "READY" #define CGATT_OK "+CGATT: 1\r\n\r\nOK" #define CEREG_OK "+CEREG: 0,1\r\n\r\nOK" #define CONNECTE_OK "CONNECT" #define CLOSED "closed" #define SERVER_DISCONNECTED "SERVER DISCONNECTED:0" #define AT_SUCCESS "SUCCESS\r\n" #define TPOK ">" #define AT_FAILURE "FAILURE\r\n" #define NETOPEN_SUCCESS "+NETOPEN:SUCCESS" #define NETCLOSE_SUCCESS "\r\n+NETCLOSE:SUCCESS\r\n" #define NETCLOSE_FAILURE "\r\n+NETCLOSE:FAIL\r\n" #define CIPOPEN_SUCCESS "+CIPOPEN: SUCCESS" #define CIPOPEN_FAILURE " FAILURE," #define CIPRXGET_SUCCESS "+CIPRXGET:SUCCESS" #define CIPSEND_SUCCESS "+CIPSEND:SUCCESS," #define QIURC_SUCCESS "+QIURC: \"recv\",%d,%d\r\n" #define SOFT_RESET "AT+CFUN=1,1\r\n" #define AT_AT "AT\r\n" #define AT_ATE0 "ATE0\r\n" #define AT_ATI "ATI\r\n" #define AT_CPIN "AT+CPIN?\r\n" #define AT_ICCID "AT+ICCID\r\n" #define AT_IMEI "AT+CGSN\r\n" #define AT_CGATT "AT+CGATT?\r\n" #define AT_CGATT0 "AT+CGATT=0\r\n" #define AT_CGATT1 "AT+CGATT=1\r\n" #define AT_CGREG "AT+CGREG?\r\n" // GPRS REG 2G #define AT_CEREG "AT+CEREG?\r\n" // EPS REG 4G #define AT_CEREG0 "AT+CEREG=0\r\n" #define AT_CSQ "AT+CSQ\r\n" #define AT_CPSI "AT+CPSI?\r\n" #define AT_CIPMODE "AT+CIPMODE=1\r\n" #define AT_CCLK "AT+CCLK?\r\n" #define AT_GTPOS "AT+GTPOS?\r\n" #define AT_GTPOS0 "AT+GTPOS=0\r\n" // close #define AT_GTPOS1 "AT+GTPOS=1\r\n" // open #define AT_GTPOS2 "AT+GTPOS=2\r\n" // get // #define AT_CIPSTART "AT+CIPSTART=\"%s\",\"%s\",\"%s\"\r\n" // AT+CIPOPEN=1,"TCP","182.148.114.87",6600 #define AT_CIPOPEN \ "AT+CIPOPEN=0,\"%s\",\"%s\",%s\r\n" // ͸´«ģʽAT+CIPOPEN=0±ؐ뎪0 #define AT_CIPCLOSE "AT+CIPCLOSE=0\r\n" #define AT_CIPSHUT "AT+CIPSHUT\r\n" #define AT_TPCLOSE "+++\r\n" #define AT_CIPSEND "AT+CIPSEND=%d,%d\r\n" #define AT_QISEND "AT+QISEND=%d,%d\r\n" #define QI_SEND_OK "\r\nSEND OK\r\n" #define QI_SEND_FAIL "\r\nSEND FAIL\r\n" #define AT_CGMR "AT+CGMR\r\n" #define AT_BTPOWER_ON "AT+BTPOWER=1\r\n" #define AT_BTPOWER_OFF "AT+BTPOWER=0\r\n" #define AT_BTHOST "AT+BTHOST?\r\n" #define AT_BTHOST_ "AT+BTHOST=%s\r\n" #define AT_QIOPEN_TRANS \ "AT+QIOPEN=1,%d,\"%s\",\"%s\",%s,0,2\r\n" // transparent Mode #define AT_QIOPEN_FORW \ "AT+QIOPEN=1,%d,\"%s\",\"%s\",%s,0,1\r\n" // Immediate Forwarding Mode #define AT_QICLOSE "AT+QICLOSE=%d\r\n" #define AT_CREG "AT+CREG=0\r\n" // #define AT_QICSGP // "AT+QICSGP=1,1,\"cmnbiot\",\"web\",\"password\",0\r\n" #define AT_QICSGP_CMNET "AT+QICSGP=1,1,\"cmnet\",\"\",\"\"\r\n" /*韩国APN*/ #define AT_QICSGP_SK "AT+QICSGP=1,1,\"lte.sktelecom.com \",\"\",\"\"\r\n" /*泰国APN*/ #define AT_QICSGP_THAI "AT+QICSGP=1,1,\"internet\",\"\",\"\"\r\n" #define AT_QICSGP "AT+QICSGP=1,1,\"cmiot\",\"\",\"\",1\r\n" #define AT_NETOPEN "AT+NETOPEN\r\n" #define AT_NETCLOSE "AT+NETCLOSE\r\n" #define AT_QIACT1 "AT+QIACT=1\r\n" #define AT_QIACT "AT+QIACT?\r\n" #define AT_QIDEACT "AT+QIDEACT=1\r\n" #define AT_QIPOPEN "AT+QIPOPEN=1,0,\"%s\",\"%s\",%s,0,1\r\n" // // #define AT_MIPSTART "AT+MIPSTART=\"123.57.84.71\",1883,4\r\n" // #define AT_MPUBEX "AT+MPUBEX=\"%s\",0,0,2\r\n" #define AT_MUNSUB "AT+MUNSUB=\"%s\"\r\n" #define GREATER_THAN "\r\n>" // MQTT #define AT_MCONFIG "AT+MCONFIG=\"%s\",\"%s\",\"%s\"\r\n" #define AT_MIPSTART \ "AT+MIPSTART=\"%s\",%s,4\r\n" // 3 stands for mqtt version 3.1, 4 stands for // mqtt version 3.1.1. #define AT_MCONNECT "AT+MCONNECT=1,60\r\n" #define AT_MSUB "AT+MSUB=\"%s\",%d\r\n" // The maximum length of 512 #define AT_MPUB "AT+MPUB=\"%s\",0,0,\"%s\"\r\n" // AT+MPUBEX=,,, #define AT_MPUBEX \ "AT+MPUBEX=\"%s\",%d,0,%d\r\n" // The message content length. The maximum // length of65535. #define AT_MQTTSSL0 "AT+MQTTSSL=0\r\n" #define AT_MQTTSSL1 "AT+MQTTSSL=1\r\n" #define AT_MDISCONNECT "AT+MDISCONNECT\r\n" #define AT_MIPCLOSE "AT+MIPCLOSE\r\n" // MQTT ALI // #define AT_IMQTTAUTH "AT+IMQTTAUTH=\"%s\",\"%s\",\"%s\",\"%s\"\r\n" #define AT_IMQTTAUTH "AT+IMQTTAUTH=\"%s\",\"\",\"%s\",\"%s\"\r\n" #define AT_IMQTTCONN "AT+IMQTTCONN\r\n" #define AT_IMQTTSUB "AT+IMQTTSUB=\"/%s/%s/user/get\",0\r\n" // #define AT_IMQTTPUB // "AT+IMQTTPUB=\"/%s/%s/user/get\",%d,%s\r\n" #define AT_IMQTTPUB \ "AT+IMQTTPUB=\"%s\",%d,%s\r\n" // the max length is 960 bytes #define AT_IMQTTSTATE "AT+IMQTTSTATE?\r\n" #define AT_IMQTTDISCONN "AT+IMQTTDISCONN\r\n" #define AT_QISWTMD \ "AT+QISWTMD=%d,%d\r\n" // 切换模式,0-缓存模式 1-直吐模式 2-透传模式 #define PUB_SUCCESS "+MPUB: SUCCESS\r\n" #define PUB_FAILURE "+MPUB: FAILURE\r\n" #define PUBEX_SUCCESS "+MPUBEX: SUCCESS\r\n" #define PUBEX_FAILURE "+MPUBEX: FAILURE\r\n" #define SUB_SUCCESS "+MSUB: SUCCESS\r\n" #define SUB_FAILURE "+NSUB: FAILURE\r\n" #define AT_IMQTTDISCONNECT "AT+IMQTTDISCONN\r\n" // HTTP #define HTTPERROR "HTTPERROR" #define AT_HTTPOPEN "AT$HTTPOPEN\r\n" #define AT_HTTPPARA "AT$HTTPPARA=%s,%d,%d,0\r\n" #define AT_HTTPRQH_CONTENTLEN "AT$HTTPRQH=Content-Length,%d\r\n" #define AT_HTTPRQH_CONTENTTYPE "AT$HTTPRQH=Content-Type,%s\r\n" #define AT_HTTPRQH_CONNECTION "AT$HTTPRQH=Connection,keep-alive\r\n" #define AT_HTTPTYPE "AT$HTTPTYPE=%d\r\n" // #define AT_HTTPTYPE_1 "AT$HTTPTYPE=1\r\n" #define AT_HTTPACTION "AT$HTTPACTION=%d\r\n" // #define AT_HTTPACTION0 "AT$HTTPACTION=0\r\n" #define AT_HTTP_READ_SIZE "AT+HTTPREAD=1\r\n" #define AT_HTTP_READ_STEP "AT+HTTPREAD=%d,%d\r\n" #define AT_HTTPRQH "AT$HTTPRQH=Range,bytes=%d-%d\r\n" #define AT_HTTPSEND "AT$HTTPSEND\r\n" #define AT_HTTPDATA "AT$HTTPDATA=%d\r\n" #define AT_HTTPCLOSE "AT$HTTPCLOSE\r\n" #define HTTP_200 "200 OK" #define HTTP_400 ",400," // FILESYSTEM #define AT_MFSLS "AT+MFSLS\r\n" #define AT_MFSATTRI "AT+MFSATTRI=\"%s\"\r\n" #define AT_MFSREAD "AT+MFSREAD=\"%s\",%d,%d\r\n" //AT CFG #define AT_CFG_TRANS_SIZE "AT+QICFG=\"transpktsize\",512\r\n" #define AT_CFG_TRANS_WAITTM "AT+QICFG=\"transwaittm\",0\r\n" // #define GSM_BT_LIVE 5*60*1000 // 5min typedef struct _connect_state { bool connected; int16_t error_cnt; // bool is_net_closed; } connect_state_t; typedef struct _lte_base_station_ifno { int mcc; int mnc; int lac; int cellid; } __attribute__((packed)) lte_base_station_info_t; typedef struct { bool valid; char mode[4]; // char domain_name[128]; char ip[50]; char port[16]; bool connect_sta; unsigned char connect_ID; unsigned char error_cnt; } Cclient_t; typedef struct { char hard_ver[32]; char imei[32]; bool sim_inserted; char iccid[32]; uint8_t eps_sta; int8_t csq; uint8_t contextID; // 场景ID。范围:1~15。 bool config_sta; Cclient_t *client1; bool deviceEnable; rt_device_t com_dev; rt_sem_t com_dev_rx_sem; rt_uint8_t at_buf[256]; rt_thread_t tid1; rt_thread_t tid2; bool reset_flag; } CLte_dev_t; extern CLte_dev_t lte_dev; enum { DTU_CF_NO_NEED_RESET = 0, DTU_CF_NEED_RESET = 1, }; ////////////////////////////////////////////////////////////////////////////////////////// bool isICCIDValid(char *str); bool isIMEIValid(char *str); int8_t BSP_LTE_GetCPSI(void); void BSP_L505_WaitReady(uint16_t second); void BSP_LTE_WaitReady(uint16_t second); void BSP_LTE_PwrOn(void); void BSP_LTE_PwrOff(void); void BSP_LTE_ResetByKey(void); void BSP_LTE_SendData(uint8_t *pdata, uint32_t length); int16_t BSP_LTE_SendDataAT(uint8_t *pdata, uint32_t length); void BSP_LTE_Config(void); void BSP_LTE_GetICCID(char *pICCID); int16_t BSP_LTE_GetBsInfo(int *lte_mcc, int *lte_mnc, int *lte_lac, int *lte_cellid); int8_t BSP_LTE_GetCSQ(void); uint32_t BSP_LTE_GetTimeMs(void); int16_t BSP_LTE_GetGTPOS_GET(int *lon, int *lat); void BSP_LTE_TCP_Close(void); int16_t BSP_LTE_SendCmd(const char *cmd, const char *expect, const char *error, uint32_t waittime); int16_t BSP_LTE_TCP_Connect(const char *mode, const char *ipAddr, const char *port); void BSP_LTE_MQTT_Close(void); void BSP_LET_Register_Com(rt_device_t com_dev); int16_t BSP_LTE_Send_Cmd_HTTPRead(const char *cmd, uint16_t len, int32_t waittime); int16_t BSP_LTE_Send_Cmd_FileRead(const char *cmd, uint16_t len, int32_t waittime); void tcp_connect_test(void); void hw_printf(const char *fmt, ...); // void test_ec800k_ota(void); #ifdef __cplusplus } #endif #endif //------------------End of File----------------------------