Adafruit thermal receipt printer connected to a Vodafone K3770 dongle.

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #define __DEBUG__ 4 //Maximum verbosity
00002 #ifndef __MODULE__
00003 #define __MODULE__ "net_3g_basic_http_test.cpp"
00004 #endif
00005 
00006 #include "core/fwk.h"
00007 #include "mbed.h"
00008 
00009 #include "rtos.h"
00010 
00011 #include "if/VodafoneK3770.h"
00012 #include "HTTPClient.h"
00013 #include "AdafruitThermal.h"
00014 
00015 DigitalOut led1(LED1);
00016 DigitalOut led2(LED2);
00017 DigitalOut led3(LED3);
00018 DigitalOut led4(LED4);
00019 void setLeds(bool a, bool b, bool c, bool d) {
00020   led1 = a;
00021   led2 = b;
00022   led3 = c;
00023   led4 = d;
00024 }
00025 
00026 extern "C" void HardFault_Handler() {
00027   error("Hard Fault!\n");
00028 }
00029 
00030 void test(void const*) {
00031   VodafoneK3770 modem;
00032   HTTPClient http;
00033   AdafruitThermal printer(p13,p14);
00034   printer.begin();
00035 
00036   char str[512];
00037   char numBuffer[20];
00038   char msgBuffer[256];
00039 
00040   //int ret = modem.connect("pp.vodafone.co.uk", "web", "web");
00041   //int ret = modem.connect("internet", "web", "web");
00042   int ret = OK;
00043   if(ret != OK)
00044     return;
00045   
00046   size_t numSMS;
00047   
00048   //modem.sendSM("07825608771","this is a test");
00049   
00050   while(true) {
00051     DBG("Checking SM count");
00052     
00053     if(modem.getSMCount(&numSMS)==OK) {
00054        DBG("getSMCount success");
00055        DBG("numSMS: %d",numSMS);
00056        if(numSMS>0) {
00057          DBG("SM count > 0");
00058          if(modem.getSM(numBuffer,msgBuffer,256)==OK) {
00059            DBG("message received");
00060            DBG("num: %s",numBuffer);
00061            DBG("msg: %s",msgBuffer);
00062            
00063            printer.print(msgBuffer);
00064            printer.feed(1);           
00065          }
00066        }
00067        
00068     }
00069     Thread::wait(5000);
00070     
00071   }
00072   
00073   //
00074     
00075   DBG("Trying to fetch page...");
00076   ret = http.get("http://mbed.org/media/uploads/donatien/hello.txt", str, 128);
00077   if (ret == OK) {
00078     DBG("Page fetched successfully - read %d characters", strlen(str));
00079     DBG("Result: %s", str);
00080   } else {
00081     WARN("Error - ret = %d - HTTP return code = %d", ret, http.getHTTPResponseCode());
00082   }
00083 
00084   HTTPMap map;
00085   HTTPText text(str, 512);
00086   map.put("Hello", "World");
00087   map.put("test", "1234");
00088   DBG("Trying to post data...");
00089   ret = http.post("http://httpbin.org/post", map, &text);
00090   if (ret == OK) {
00091     DBG("Executed POST successfully - read %d characters", strlen(str));
00092     DBG("Result: %s", str);
00093   } else {
00094     WARN("Error - ret = %d - HTTP return code = %d", ret, http.getHTTPResponseCode());
00095   }
00096   
00097   
00098   modem.disconnect();
00099   DBG("Disconnected");
00100 
00101   while (1) {
00102     Thread::wait(100);
00103   }
00104 }
00105 
00106 void keepAlive(void const*) {
00107   while (1) {
00108     led1 = !led1;
00109     Thread::wait(500);
00110   }
00111 }
00112 
00113 int main() {
00114 
00115   DBG_INIT();
00116   /*
00117   VodafoneK3770 threeg;
00118   int ret = threeg.connect("pp.vodafone.co.uk", "web", "web");
00119   if(ret==OK) {
00120     DBG("connection OK");
00121   }
00122   */
00123 
00124   Thread testTask(test, NULL, osPriorityNormal, 1024 * 4);
00125   keepAlive(NULL);
00126 
00127   return 0;
00128 }