aboutsummaryrefslogtreecommitdiff
path: root/libraries/GSM/examples/Tools/TestGPRS
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/GSM/examples/Tools/TestGPRS')
-rw-r--r--libraries/GSM/examples/Tools/TestGPRS/TestGPRS.ino204
1 files changed, 204 insertions, 0 deletions
diff --git a/libraries/GSM/examples/Tools/TestGPRS/TestGPRS.ino b/libraries/GSM/examples/Tools/TestGPRS/TestGPRS.ino
new file mode 100644
index 0000000..ab4a2be
--- /dev/null
+++ b/libraries/GSM/examples/Tools/TestGPRS/TestGPRS.ino
@@ -0,0 +1,204 @@
+/*
+
+ This sketch test the GSM shield's ability to connect to a
+ GPERS network. It asks for APN information through the
+ serial monitor and tries to connect to arduino.cc.
+
+ Circuit:
+ * GSM shield attached
+ * SIM card with data plan
+
+ Created 18 Jun 2012
+ by David del Peral
+
+ This example code is part of the public domain
+
+ http://arduino.cc/en/Tutorial/GSMToolsTestGPRS
+
+ */
+
+// libraries
+#include <GSM.h>
+
+// PIN Number
+#define PINNUMBER ""
+
+// initialize the library instance
+GSM gsmAccess; // GSM access: include a 'true' parameter for debug enabled
+GPRS gprsAccess; // GPRS access
+GSMClient client; // Client service for TCP connection
+
+// messages for serial monitor response
+String oktext = "OK";
+String errortext = "ERROR";
+
+// URL and path (for example: arduino.cc)
+char url[] = "arduino.cc";
+char urlproxy[] = "http://arduino.cc";
+char path[] = "/";
+
+// variable for save response obtained
+String response = "";
+
+// use a proxy
+boolean use_proxy = false;
+
+void setup()
+{
+ // initialize serial communications and wait for port to open:
+ Serial.begin(9600);
+ while (!Serial) {
+ ; // wait for serial port to connect. Needed for Leonardo only
+ }
+}
+
+void loop()
+{
+ use_proxy = false;
+
+ // start GSM shield
+ // if your SIM has PIN, pass it as a parameter of begin() in quotes
+ Serial.print("Connecting GSM network...");
+ if(gsmAccess.begin(PINNUMBER)!=GSM_READY)
+ {
+ Serial.println(errortext);
+ while(true);
+ }
+ Serial.println(oktext);
+
+ // read APN introduced by user
+ char apn[50];
+ Serial.print("Enter your APN: ");
+ readSerial(apn);
+ Serial.println(apn);
+
+ // Read APN login introduced by user
+ char login[50];
+ Serial.print("Now, enter your login: ");
+ readSerial(login);
+ Serial.println(login);
+
+ // read APN password introduced by user
+ char password[20];
+ Serial.print("Finally, enter your password: ");
+ readSerial(password);
+
+ // attach GPRS
+ Serial.println("Attaching to GPRS with your APN...");
+ if(gprsAccess.attachGPRS(apn, login, password)!=GPRS_READY)
+ {
+ Serial.println(errortext);
+ }
+ else{
+
+ Serial.println(oktext);
+
+ // read proxy introduced by user
+ char proxy[100];
+ Serial.print("If your carrier uses a proxy, enter it, if not press enter: ");
+ readSerial(proxy);
+ Serial.println(proxy);
+
+ // if user introduced a proxy, asks him for proxy port
+ int pport;
+ if(proxy[0] != '\0'){
+ // read proxy port introduced by user
+ char proxyport[10];
+ Serial.print("Enter the proxy port: ");
+ readSerial(proxyport);
+ // cast proxy port introduced to integer
+ pport = (int) proxyport;
+ use_proxy = true;
+ Serial.println(proxyport);
+ }
+
+ // connection with arduino.cc and realize HTTP request
+ Serial.print("Connecting and sending GET request to arduino.cc...");
+ int res_connect;
+
+ // if use a proxy, connect with it
+ if(use_proxy)
+ res_connect = client.connect(proxy, pport);
+ else
+ res_connect = client.connect(url, 80);
+
+ if (res_connect)
+ {
+ // make a HTTP 1.0 GET request (client sends the request)
+ client.print("GET ");
+
+ // if use a proxy, the path is arduino.cc URL
+ if(use_proxy)
+ client.print(urlproxy);
+ else
+ client.print(path);
+
+ client.println(" HTTP/1.0");
+ client.println();
+ Serial.println(oktext);
+ }
+ else
+ {
+ // if you didn't get a connection to the server
+ Serial.println(errortext);
+ }
+ Serial.print("Receiving response...");
+
+ boolean test = true;
+ while(test)
+ {
+ // if there are incoming bytes available
+ // from the server, read and check them
+ if (client.available())
+ {
+ char c = client.read();
+ response += c;
+
+ // cast response obtained from string to char array
+ char responsechar[response.length()+1];
+ response.toCharArray(responsechar, response.length()+1);
+
+ // if response includes a "200 OK" substring
+ if(strstr(responsechar, "200 OK") != NULL){
+ Serial.println(oktext);
+ Serial.println("TEST COMPLETE!");
+ test = false;
+ }
+ }
+
+ // if the server's disconnected, stop the client:
+ if (!client.connected())
+ {
+ Serial.println();
+ Serial.println("disconnecting.");
+ client.stop();
+ test = false;
+ }
+ }
+ }
+}
+
+/*
+ Read input serial
+ */
+int readSerial(char result[])
+{
+ int i = 0;
+ while(1)
+ {
+ while (Serial.available() > 0)
+ {
+ char inChar = Serial.read();
+ if (inChar == '\n')
+ {
+ result[i] = '\0';
+ return 0;
+ }
+ if(inChar!='\r')
+ {
+ result[i] = inChar;
+ i++;
+ }
+ }
+ }
+}