Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Revision 4:9dad457a2e48, committed 2019-09-23
- Comitter:
- vikshin
- Date:
- Mon Sep 23 06:14:12 2019 +0000
- Parent:
- 3:98c9694fec26
- Commit message:
- Initial Release;
Changed in this revision
| main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/main.cpp Fri Mar 22 07:27:52 2019 +0000
+++ b/main.cpp Mon Sep 23 06:14:12 2019 +0000
@@ -32,21 +32,21 @@
#define MAX_BUF_SIZE 1024
-#define BG96_APN_PROTOCOL_IPv4 1
-#define BG96_APN_PROTOCOL_IPv6 2
-#define BG96_DEFAULT_TIMEOUT 1000
-#define BG96_CONNECT_TIMEOUT 15000
-#define BG96_SEND_TIMEOUT 500
-#define BG96_RECV_TIMEOUT 500
+#define AMM592_APN_PROTOCOL_IPv4 1
+#define AMM592_APN_PROTOCOL_IPv6 2
+#define AMM592_DEFAULT_TIMEOUT 1000
+#define AMM592_CONNECT_TIMEOUT 15000
+#define AMM592_SEND_TIMEOUT 500
+#define AMM592_RECV_TIMEOUT 500
-#define BG96_APN_PROTOCOL BG96_APN_PROTOCOL_IPv6
-#define BG96_DEFAULT_BAUD_RATE 115200
-#define BG96_PARSER_DELIMITER "\r\n"
+#define AMM592_APN_PROTOCOL AMM592_APN_PROTOCOL_IPv6
+#define AMM592_DEFAULT_BAUD_RATE 115200
+#define AMM592_PARSER_DELIMITER "\r\n"
#define CATM1_APN_SKT "lte-internet.sktelecom.com"
-#define CATM1_DEVICE_NAME_BG96 "BG96"
-#define DEVNAME CATM1_DEVICE_NAME_BG96
+#define CATM1_DEVICE_NAME_AMM592 "AMM592"
+#define DEVNAME CATM1_DEVICE_NAME_AMM592
#define devlog(f_, ...) if(CATM1_DEVICE_DEBUG == DEBUG_ENABLE) { pc.printf("\r\n[%s] ", DEVNAME); pc.printf((f_), ##__VA_ARGS__); }
#define myprintf(f_, ...) {pc.printf("\r\n[MAIN] "); pc.printf((f_), ##__VA_ARGS__);}
@@ -63,7 +63,7 @@
#define MBED_CONF_IOTSHIELD_SENSOR_TEMP A1
/* Debug message settings */
-#define BG96_PARSER_DEBUG DEBUG_DISABLE
+#define AMM592_PARSER_DEBUG DEBUG_DISABLE
#define CATM1_DEVICE_DEBUG DEBUG_ENABLE
/* HTTP */
@@ -75,25 +75,24 @@
// Functions: Module Status
void waitCatM1Ready(void);
-int8_t setEchoStatus_BG96(bool onoff);
-int8_t getUsimStatus_BG96(void);
-int8_t getNetworkStatus_BG96(void);
-int8_t checknSetApn_BG96(const char * apn);
-int8_t getFirmwareVersion_BG96(char * version);
+int8_t setEchoStatus_AMM592(int onoff);
+int8_t getUsimStatus_AMM592(void);
+int8_t getNetworkStatus_AMM592(void);
+int8_t checknSetApn_AMM592(const char * apn);
+
// Functions: HTTP send & recv
-int8_t setHttpRequest_BG96(char * url, int len);
-int8_t sendHttpRequest_BG96(int timeout, int * rsp_code, int * content_len);
-int8_t getHttpResponse_BG96(int timeout, char * buf, int len);
-void dumpHttpRespones_BG96(char * buf);
+int8_t setHttpRequest_AMM592(char * url, int len);
+int8_t sendHttpRequest_AMM592(int method, int ssl_enable, int hex_mode, char * url);
+int8_t getHttpResponse_AMM592(void);
Serial pc(USBTX, USBRX); // USB debug
UARTSerial *_serial; // Cat.M1 module
ATCmdParser *_parser;
-DigitalOut _RESET_BG96(MBED_CONF_IOTSHIELD_CATM1_RESET);
-DigitalOut _PWRKEY_BG96(MBED_CONF_IOTSHIELD_CATM1_PWRKEY);
+DigitalOut _RESET_AMM592(MBED_CONF_IOTSHIELD_CATM1_RESET);
+DigitalOut _PWRKEY_AMM592(MBED_CONF_IOTSHIELD_CATM1_PWRKEY);
void serialPcInit(void)
{
@@ -111,30 +110,30 @@
_parser = new ATCmdParser(_serial);
_parser->debug_on(debug_en);
_parser->set_delimiter(delimiter);
- _parser->set_timeout(BG96_DEFAULT_TIMEOUT);
+ _parser->set_timeout(AMM592_DEFAULT_TIMEOUT);
}
void catm1DeviceInit(void)
{
serialDeviceInit( MBED_CONF_IOTSHIELD_CATM1_TX,
MBED_CONF_IOTSHIELD_CATM1_RX,
- BG96_DEFAULT_BAUD_RATE);
+ AMM592_DEFAULT_BAUD_RATE);
- serialAtParserInit( BG96_PARSER_DELIMITER,
- BG96_PARSER_DEBUG);
+ serialAtParserInit( AMM592_PARSER_DELIMITER,
+ AMM592_PARSER_DEBUG);
}
-void catm1DeviceReset_BG96(void)
+void catm1DeviceReset_AMM592(void)
{
- _RESET_BG96 = 1;
- _PWRKEY_BG96 = 1;
+ _RESET_AMM592 = 1;
+ _PWRKEY_AMM592 = 1;
wait_ms(300);
- _RESET_BG96 = 0;
- _PWRKEY_BG96 = 0;
+ _RESET_AMM592 = 0;
+ _PWRKEY_AMM592 = 0;
wait_ms(400);
- _RESET_BG96 = 1;
+ _RESET_AMM592 = 1;
wait_ms(1000);
}
@@ -150,7 +149,7 @@
myprintf("Waiting for Cat.M1 Module Ready...\r\n");
- catm1DeviceReset_BG96();
+ catm1DeviceReset_AMM592();
waitCatM1Ready();
@@ -161,45 +160,29 @@
myprintf("WIZnet IoT Shield for Arm MBED");
myprintf("LTE Cat.M1 Version");
myprintf("=================================================");
- myprintf(">> Target Board: WIoT-QC01 (Quectel BG96)");
+ myprintf(">> Target Board: WIoT-AM01 (AM Telecom AMM592)");
myprintf(">> Sample Code: HTTP Send & Recv");
myprintf("=================================================\r\n");
- setEchoStatus_BG96(OFF);
+ setEchoStatus_AMM592(0);
- getUsimStatus_BG96();
+ getUsimStatus_AMM592();
- getNetworkStatus_BG96();
+ getNetworkStatus_AMM592();
+
+ checknSetApn_AMM592(CATM1_APN_SKT);
- checknSetApn_BG96(CATM1_APN_SKT);
-
- // Set HTTP request URL
- if(setHttpRequest_BG96(request_url, strlen(request_url)-1) != RET_OK) {
- myprintf("[HTTP] setHttpRequest failed\r\n");
- while(1){;}
+ if(sendHttpRequest_AMM592(0,0,0, request_url)) {
+ myprintf("[HTTP] sendHttpRequest success\r\n");
+ if (getHttpResponse_AMM592() == RET_OK){
+ myprintf("[HTTP] getHttpResponse success\r\n");
+ } else {
+ myprintf("[HTTP] sendHttpRequest failed");
+ }
+ } else {
+ myprintf("[HTTP] sendHttpRequest fail\r\n");
}
- int http_response_code = 0;
- int http_response_len = 0;
-
- if(sendHttpRequest_BG96(20, &http_response_code, &http_response_len)) {
- if(http_response_code == HTTP_STATUS_CODE_OK) {
- myprintf("[HTTP] 200 OK, Response content length: %d\r\n", http_response_len);
-
- char * http_buf;
- http_buf = (char*)calloc(http_response_len+2, sizeof(char)); // memory allocation
-
- if(getHttpResponse_BG96(20, http_buf, http_response_len+2)) {
- dumpHttpRespones_BG96(http_buf);
- }
-
- free(http_buf); // release
-
- myprintf("[HTTP] getHttpResponse success\r\n");
- } else {
- myprintf("[HTTP] sendHttpRequest failed - HTTP response code: %d\r\n", http_response_code);
- }
- }
}
@@ -208,23 +191,23 @@
// ----------------------------------------------------------------
void waitCatM1Ready(void)
-{
+{
while(1)
{
- if(_parser->recv("RDY"))
+ if(_parser->recv("@NOTI:34,AMT_BOOT_ALERT") && _parser->recv("@NETSTI:3") )
{
- myprintf("BG96 ready\r\n");
+ myprintf("AM592 ready\r\n");
return ;
}
else if(_parser->send("AT") && _parser->recv("OK"))
{
- myprintf("BG96 already available\r\n");
+ myprintf("AM592 already available\r\n");
return ;
}
- }
+ }
}
-int8_t setEchoStatus_BG96(bool onoff)
+int8_t setEchoStatus_AMM592(int onoff)
{
int8_t ret = RET_NOK;
char _buf[10];
@@ -240,7 +223,7 @@
return ret;
}
-int8_t getUsimStatus_BG96(void)
+int8_t getUsimStatus_AMM592(void)
{
int8_t ret = RET_NOK;
@@ -254,79 +237,55 @@
return ret;
}
-int8_t getNetworkStatus_BG96(void)
+int8_t getNetworkStatus_AMM592(void)
{
int8_t ret = RET_NOK;
+ bool cereg = false, nsi = false;
+ int n, stat;
+
+ if(_parser->send("AT+CEREG?") && _parser->recv("+CEREG: %d, %d", &n, &stat) && _parser->recv("OK")){
+ if ((n==0 || n==1) && stat==1){
+ cereg = true;
+ }
+ }
- if(_parser->send("AT+QCDS") && _parser->recv("+QCDS: \"SRV\"") && _parser->recv("OK")) {
+ if(_parser->send("AT@NSI") && _parser->recv("@NSI:%d,\"IN SRV\"") && _parser->recv("OK")) {
devlog("Network Status: attached\r\n");
- ret = RET_OK;
- } else if (_parser->send("AT+QCDS") && _parser->recv("+QCDS: \"LIMITED\"") && _parser->recv("OK")) {
+ nsi = true;
+ } else if (_parser->send("AT@NSI") && _parser->recv("@NSI: \"LIMITED\"") && _parser->recv("OK")) {
devlog("Network Status: limited\r\n");
- ret = RET_OK;
+ nsi = true;
} else {
devlog("Network Status: Error\r\n");
}
+
+ if (cereg && nsi){
+ ret = RET_OK;
+ }
return ret;
}
-int8_t checknSetApn_BG96(const char * apn) // Configure Parameters of a TCP/IP Context
+int8_t checknSetApn_AMM592(const char * apn) // Configure Parameters of a TCP/IP Context
{
- char resp_str[100];
-
- uint16_t i = 0;
- char * search_pt;
-
- memset(resp_str, 0, sizeof(resp_str));
+ bool cgdccont = false, cgatt = false;
+ int8_t ret = RET_NOK;
devlog("Checking APN...\r\n");
-
- _parser->send("AT+QICSGP=1");
-
- while(1)
- {
- _parser->read(&resp_str[i++], 1);
- search_pt = strstr(resp_str, "OK\r\n");
- if (search_pt != 0)
- {
- break;
- }
+ //APN setting
+ if (_parser->send("AT+CGDCONT=1,\"IPV4V6\",\"%s\"", apn) && _parser->recv("OK")){
+ cgdccont = true;
}
-
- search_pt = strstr(resp_str, apn);
- if (search_pt == 0)
- {
- devlog("Mismatched APN: %s\r\n", resp_str);
- devlog("Storing APN %s...\r\n", apn);
- if(!(_parser->send("AT+QICSGP=1,%d,\"%s\",\"\",\"\",0", BG96_APN_PROTOCOL, apn) && _parser->recv("OK")))
- {
- return RET_NOK; // failed
- }
- }
+ //Attach setting
+ if (_parser->send("AT+CGATT?") && _parser->recv("+CGATT: 1") &&_parser->recv("OK")){
+ cgatt = true;
+ }
+
+ if (cgdccont && cgatt){
+ ret = RET_OK;
+ }
+
devlog("APN Check Done\r\n");
- return RET_OK;
-}
-
-int8_t getFirmwareVersion_BG96(char * version)
-{
- int8_t ret = RET_NOK;
-
- if(_parser->send("AT+QGMR") && _parser->recv("%s\n", version) && _parser->recv("OK"))
- {
- ret = RET_OK;
- }
- return ret;
-}
-
-int8_t getImeiNumber_BG96(char * imei)
-{
- int8_t ret = RET_NOK;
-
- if(_parser->send("AT+CGSN") && _parser->recv("%s\n", imei) && _parser->recv("OK"))
- {
- ret = RET_OK;
- }
return ret;
}
@@ -334,68 +293,50 @@
// Functions: Cat.M1 HTTP send & recv
// ----------------------------------------------------------------
-int8_t setHttpRequest_BG96(char * req, int len)
+int8_t sendHttpRequest_AMM592(int method, int ssl_enable, int hex_mode, char * url)
{
- int8_t ret = RET_NOK;
- bool done = false;
+ int8_t ret = RET_NOK;
- _parser->set_timeout(BG96_CONNECT_TIMEOUT);
+ _parser->set_timeout(AMM592_DEFAULT_TIMEOUT + (4 * 1000));
- _parser->send("AT+QHTTPURL=%d,%d", len, 5);
- if( !done && _parser->recv("CONNECT\r\n") )
- done = (_parser->write(req, len) <= 0);
-
- if( !done ) {
- done = (_parser->recv("OK"));
- if(done) {
- devlog("Set HTTP request URL success: %s\r\n", req);
- ret = RET_OK;
- }
- }
- _parser->set_timeout(BG96_DEFAULT_TIMEOUT);
+ if( _parser->send("AT@HTTPSND=%d,%d,%d,%s", method, ssl_enable, hex_mode, url)
+ && _parser->recv("OK")
+ && _parser->recv("@HTTPSND:0")
+ )
+ {
+ devlog("The HTTP request is sent successfully\r\n");
+ ret = RET_OK;
+ }
+ _parser->set_timeout(AMM592_DEFAULT_TIMEOUT);
return ret;
}
-int8_t sendHttpRequest_BG96(int timeout, int * rsp_code, int * content_len)
+int8_t getHttpResponse_AMM592(void)
{
int8_t ret = RET_NOK;
- int err;
-
- _parser->set_timeout(BG96_DEFAULT_TIMEOUT + (timeout * 1000));
-
- if( _parser->send("AT+QHTTPGET=%d", timeout)
- && _parser->recv("+QHTTPGET: %d,%d,%d\r\n", &err, rsp_code, content_len)
- && (err == 0))
- {
- devlog("The HTTP request is sent and the response is successful\r\n");
- ret = RET_OK;
- }
- _parser->set_timeout(BG96_DEFAULT_TIMEOUT);
-
+
+ int bufsize = 0;
+
+ Timer t;
+
+ _parser->set_timeout((1000 * 4));
+
+ if(_parser->recv("@HTTPRCV:%d", &bufsize ))
+ {
+ t.start();
+
+ while(t.read_ms() < (1000 * 4))
+ {
+ pc.printf("%c", _parser->getc());
+ }
+
+ ret = RET_OK;
+ }
+
+ _parser->set_timeout(AMM592_DEFAULT_TIMEOUT);
+ _parser->flush();
+
return ret;
}
-
-
-int8_t getHttpResponse_BG96(int timeout, char * buf, int len)
-{
- int8_t ret = RET_NOK;
- bool done = false;
-
- if( _parser->send("AT+QHTTPREAD=%d", timeout) && _parser->recv("CONNECT\r\n")) {
- done = _parser->read(buf, len);
- }
-
- if(done) {
- if( _parser->recv("OK") && _parser->recv("+QHTTPREAD: 0")) {
- ret = RET_OK;
- }
- }
- return ret;
-}
-
-void dumpHttpRespones_BG96(char * buf)
-{
- myprintf("%s", buf);
-}