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.
Fork of C027_SupportTest by
Diff: main.cpp
- Revision:
- 2:b77151f111a9
- Parent:
- 0:4e3cb26f6019
- Child:
- 4:90ab1ec64b0e
diff -r 46f9e36be3fa -r b77151f111a9 main.cpp
--- a/main.cpp Thu Feb 27 07:39:06 2014 +0000
+++ b/main.cpp Tue Apr 08 12:16:23 2014 +0000
@@ -20,54 +20,149 @@
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
-#include "GPRSInterface.h"
#include "mbed.h"
+#include "C027.h"
+#include "GPS.h"
+#include "MDM.h"
-#if defined(TARGET_LPC11U24)//SEEEDUINO_ARCH
-#define PIN_TX P1_22
-#define PIN_RX P1_21
-#elif defined(TARGET_LPC1768)//SEEEDUINO_ARCH_PRO
-#define PIN_TX P0_0
-#define PIN_RX P0_1
-#else //please redefine the following pins
-#define PIN_TX
-#define PIN_RX
-#endif
+C027 c027;
-GPRSInterface gprsInterface(PIN_TX,PIN_RX,19200,"cmnet",NULL,NULL);
int main(void)
{
- // use DHCP
- gprsInterface.init();
+ int ret;
+ char buf[512] = "";
- // attempt DHCP
- while(false == gprsInterface.connect()) {
- wait(2);
- }
+ Serial pc(USBTX,USBRX);
+ pc.baud(115200);
+
+ printf("Modem Example\n");
+
+ c027.mdmPower(true);
+ wait(2);
- // successful DHCP
- printf("IP Address is %s\n", gprsInterface.getIPAddress());
+#if 0
+ c027.gpsPower(true);
+ GPSI2C gps; // use GPSI2C or GPSSerial class
+ while (1)
+ {
+ while ((ret = gps.getMessage(buf, sizeof(buf))) > 0)
+ {
+ int len = LENGTH(ret);
+ //printf("NMEA: %.*s\n", len-2, msg);
+ if ((PROTOCOL(ret) == NMEA) && (len > 6) && !strncmp("$GPGLL", buf, 6))
+ {
+ double la = 0, lo = 0;
+ char ch;
+ if (gps.getNmeaAngle(1,buf,len,la) &&
+ gps.getNmeaAngle(3,buf,len,lo) &&
+ gps.getNmeaItem(6,buf,len,ch) && ch == 'A')
+ {
+ printf("GPS: %.5f %.5f\n", la, lo);
+ }
+ }
+ }
+ wait_ms(100);
+ }
+#endif
- TCPSocketConnection sock;
- if(false == sock.connect("mbed.org", 80)) {
- return -1;
- }
+ MDMSerial mdm(MDMTXD, MDMRXD, MDMBAUD
+#if DEVICE_SERIAL_FC
+ ,MDMRTS,MDMCTS
+#endif
+ );
+
+ // initialize the modem
+ printf("Init\r\n");
+ mdm.init();
+
+ // wait until we are connected
+ printf("Network Check\r\n");
+ while (!mdm.checkNetStatus())
+ wait_ms(1000);
- char http_cmd[] = "GET /media/uploads/mbed_official/hello.txt HTTP/1.0\r\n\r\n";
- sock.send_all(http_cmd, sizeof(http_cmd)-1);
-
- char buffer[512];
- int ret;
- while (true) {
- ret = sock.receive(buffer, sizeof(buffer)-1);
- if (ret <= 0)
- break;
- buffer[ret] = '\0';
- printf("Recv %d bytes:\n%s\n",ret,buffer);
+ printf("Network Join\r\n");
+ // join the internet connection
+ if (mdm.join("gprs.swisscom.ch"))
+ {
+ printf("Socket Create\r\n");
+ int socket = mdm.socketSocket(MDMParser::IPPROTO_TCP);
+ if (socket >= 0)
+ {
+ printf("Socket Connect\r\n");
+ if (mdm.socketConnect(socket, "mbed.org", 80))
+ {
+ printf("Make a Http Post Request\r\n");
+ const char http[] = "GET /media/uploads/mbed_official/hello.txt HTTP/1.0\r\n\r\n";
+ printf("Socket Send\r\n");
+ mdm.socketSend(socket, http, sizeof(http)-1);
+
+ printf("Socket Recving\r\n");
+ while (true) {
+ ret = mdm.socketReadable(socket);
+ if (ret > 0)
+ ret = mdm.socketRecv(socket, buf, sizeof(buf)-1);
+ if (ret < 0)
+ break;
+ else if (ret > 0)
+ printf("Socket Recv \"%*s\"\r\n", ret, buf);
+ }
+ printf("Socket Close\r\n");
+ mdm.socketClose(socket);
+ }
+ printf("Socket Free\r\n");
+ mdm.socketFree(socket);
+ }
+
+ // disconnect
+ printf("Network Disconnect\r\n");
+ mdm.disconnect();
}
- sock.close();
- gprsInterface.disconnect();
-
+
+ const char* ussd = "*#134#";
+ printf("Send Ussd Command %s\r\n", ussd);
+ ret = mdm.ussdCommand(ussd, buf, sizeof(buf));
+ if (ret > 0)
+ printf("Got Ussd Answer: \"%*s\"\r\n", ret, buf);
+
+ printf("Checking SMS\r\n");
+ //int cnt = mdm.smsCount();
+ while (1) {
+ char num[32];
+ for (int ix = 0; ix < 16; ix ++) {
+ if (mdm.smsRead(ix, num, buf, sizeof(buf))) {
+ printf("Got SMS from \"%s\" with text \"%s\"\r\n", num, buf);
+ printf("Delete SMS at index %d\r\n", ix);
+ mdm.smsDelete(ix);
+ const char* reply = "Hello my friend";
+ printf("Send SMS reply \"%s\" to \"%s\"\r\n", reply, num);
+ mdm.smsSend(num, reply);
+ }
+ }
+ MDMParser::Status info;
+ if (mdm.checkNetStatus(&info))
+ {
+ printf("Network Status:\n");
+ const char* txtNet[] = { "Unknown", "Denied", "None", "Home", "Roaming" };
+ if (info.net < sizeof(txtNet)/sizeof(*txtNet) && (info.net != MDMParser::NET_UNKNOWN))
+ printf(" Network: %s\n", txtNet[info.net]);
+ const char* txtAct[] = { "Unknown", "GSM", "Edge", "3G", "CDMA" };
+ if (info.act < sizeof(txtAct)/sizeof(*txtAct) && (info.act != MDMParser::ACT_UNKNOWN))
+ printf(" Access Technology: %s\n", txtAct[info.act]);
+ if (info.rssi)
+ printf(" Signal Strength: %d dBm\r\n", info.rssi);
+ if (info.opr)
+ printf(" Operator: %s\n", info.opr);
+ if (info.num)
+ printf(" Phone Number: %s\n", info.num);
+ }
+ wait_ms(10000);
+ }
+
+ mdm.powerOff();
+ // now it is safe to switch off
+ c027.mdmPower(false);
+
return 0;
}
+
