tes

Dependencies:   NetServices mbed C027_Supports mbed-rpcx

Committer:
aldoao
Date:
Wed Sep 11 06:32:20 2019 +0000
Revision:
1:f7d9b0530b73
Parent:
0:64967b7043c2
tipe,1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
irsanjul 0:64967b7043c2 1 #include "MDM.h"
irsanjul 0:64967b7043c2 2 #include "mbed.h"
irsanjul 0:64967b7043c2 3 #include "Modem.h"
irsanjul 0:64967b7043c2 4 #include <sstream>
irsanjul 0:64967b7043c2 5
irsanjul 0:64967b7043c2 6 extern Serial dbg;
irsanjul 0:64967b7043c2 7
irsanjul 0:64967b7043c2 8 void SetModem(MDMSerial &mdm)
irsanjul 0:64967b7043c2 9 {
irsanjul 0:64967b7043c2 10 MDMParser::DevStatus devStatus = {};
irsanjul 0:64967b7043c2 11 MDMParser::NetStatus netStatus = {};
irsanjul 0:64967b7043c2 12 bool mdmOk = mdm.init(SIMPIN, &devStatus);
irsanjul 0:64967b7043c2 13 mdm.dumpDevStatus(&devStatus);
irsanjul 0:64967b7043c2 14 if (mdmOk) {
irsanjul 0:64967b7043c2 15 mdmOk = mdm.registerNet(&netStatus);
irsanjul 0:64967b7043c2 16 mdm.dumpNetStatus(&netStatus);
irsanjul 0:64967b7043c2 17 }
irsanjul 0:64967b7043c2 18 if (mdmOk)
irsanjul 0:64967b7043c2 19 {
irsanjul 0:64967b7043c2 20 MDMParser::IP ip = mdm.join(APN,USERNAME,PASSWORD);
irsanjul 0:64967b7043c2 21 if (ip != NOIP)
irsanjul 0:64967b7043c2 22 {
irsanjul 0:64967b7043c2 23 mdm.dumpIp(ip);
irsanjul 0:64967b7043c2 24 dbg.printf("\r\n<Modem Connected>");
irsanjul 0:64967b7043c2 25 }
irsanjul 0:64967b7043c2 26 }
irsanjul 0:64967b7043c2 27 }
irsanjul 0:64967b7043c2 28
irsanjul 0:64967b7043c2 29 std::string Convertint(int data)
irsanjul 0:64967b7043c2 30 {
irsanjul 0:64967b7043c2 31 std::stringstream c;
irsanjul 0:64967b7043c2 32 c << data;
irsanjul 0:64967b7043c2 33
irsanjul 0:64967b7043c2 34 return c.str();
irsanjul 0:64967b7043c2 35 }
irsanjul 0:64967b7043c2 36
irsanjul 0:64967b7043c2 37 std::string Convert(double data)
irsanjul 0:64967b7043c2 38 {
irsanjul 0:64967b7043c2 39 std::stringstream c;
irsanjul 0:64967b7043c2 40 c << data;
irsanjul 0:64967b7043c2 41
irsanjul 0:64967b7043c2 42 return c.str();
irsanjul 0:64967b7043c2 43 }
irsanjul 0:64967b7043c2 44
irsanjul 0:64967b7043c2 45 bool PostData(MDMSerial &mdm, const int &identifier_, const std::vector<int> &input, bool mode)
irsanjul 0:64967b7043c2 46 {
irsanjul 0:64967b7043c2 47 char buf[512] = "";
irsanjul 0:64967b7043c2 48 int ret;
irsanjul 0:64967b7043c2 49 bool res = false;
irsanjul 0:64967b7043c2 50 int socket = mdm.socketSocket(MDMParser::IPPROTO_TCP);
irsanjul 0:64967b7043c2 51
irsanjul 0:64967b7043c2 52 std::string body;
irsanjul 0:64967b7043c2 53 body += "{\"val\":\"";
irsanjul 0:64967b7043c2 54 body += identifier_;
irsanjul 0:64967b7043c2 55 body += std::string(input.begin(), input.end());
irsanjul 0:64967b7043c2 56 body += "\"}";
irsanjul 0:64967b7043c2 57
irsanjul 0:64967b7043c2 58 std::string http;
irsanjul 0:64967b7043c2 59 if(mode == SKADA)
irsanjul 0:64967b7043c2 60 {
irsanjul 0:64967b7043c2 61 http += "PUT /todo/api/v1.0/scadas/1 HTTP/1.1\r\n";
irsanjul 0:64967b7043c2 62 }
irsanjul 0:64967b7043c2 63 else if(mode == TASK)
irsanjul 0:64967b7043c2 64 {
irsanjul 0:64967b7043c2 65 http += "POST /todo/api/v1.0/tasks HTTP/1.1\r\n";
irsanjul 0:64967b7043c2 66 }
irsanjul 0:64967b7043c2 67 http += "Host: 182.23.67.168:5000\r\n";
irsanjul 0:64967b7043c2 68 http += "Authorization: Basic am9objpoZWxsbw==\r\n";
irsanjul 0:64967b7043c2 69 http += "Connection: close\r\n";
irsanjul 0:64967b7043c2 70 http += "Content-Type: application/json\r\n";
irsanjul 0:64967b7043c2 71 http += "Content-Length: ";
irsanjul 0:64967b7043c2 72 http += Convertint((int)body.size());
irsanjul 0:64967b7043c2 73 http += "\r\n\r\n";
irsanjul 0:64967b7043c2 74 http += body;
irsanjul 0:64967b7043c2 75 http += "\r\n\r\n";
irsanjul 0:64967b7043c2 76
irsanjul 0:64967b7043c2 77 dbg.printf("Request:\r\n%s",http.c_str());
irsanjul 0:64967b7043c2 78
irsanjul 0:64967b7043c2 79 dbg.printf("Ready to post\r\n");
irsanjul 0:64967b7043c2 80 mdm.socketSetBlocking(socket, 10000);
irsanjul 0:64967b7043c2 81 if (mdm.socketConnect(socket, "182.23.67.168", 5000))
irsanjul 0:64967b7043c2 82 {
irsanjul 0:64967b7043c2 83 dbg.printf("Sending request\r\n");
irsanjul 0:64967b7043c2 84 mdm.socketSend(socket, http.c_str(), http.size());
irsanjul 0:64967b7043c2 85
irsanjul 0:64967b7043c2 86 ret = mdm.socketRecv(socket, buf, sizeof(buf)-1);
irsanjul 0:64967b7043c2 87 if (ret > 0)
irsanjul 0:64967b7043c2 88 {
irsanjul 0:64967b7043c2 89 dbg.printf("Socket Recv \"%*s\"\r\n", ret, buf);
irsanjul 0:64967b7043c2 90 if(strstr(buf, "HTTP/1.0 200") || strstr(buf, "HTTP/1.0 201"))
irsanjul 0:64967b7043c2 91 {
irsanjul 0:64967b7043c2 92 res = true;
irsanjul 0:64967b7043c2 93 }
irsanjul 0:64967b7043c2 94 else
irsanjul 0:64967b7043c2 95 {
irsanjul 0:64967b7043c2 96 res = false;
irsanjul 0:64967b7043c2 97 }
irsanjul 0:64967b7043c2 98 }
irsanjul 0:64967b7043c2 99 else
irsanjul 0:64967b7043c2 100 {
irsanjul 0:64967b7043c2 101 dbg.printf("return 0\r\n");
irsanjul 0:64967b7043c2 102 res = false;
irsanjul 0:64967b7043c2 103 }
irsanjul 0:64967b7043c2 104
irsanjul 0:64967b7043c2 105 mdm.socketClose(socket);
irsanjul 0:64967b7043c2 106 mdm.socketFree(socket);
irsanjul 0:64967b7043c2 107 }
irsanjul 0:64967b7043c2 108 else
irsanjul 0:64967b7043c2 109 {
irsanjul 0:64967b7043c2 110 mdm.socketSetBlocking(socket, 10000);
irsanjul 0:64967b7043c2 111 mdm.socketConnect(socket, "182.23.67.168", 5000);
irsanjul 0:64967b7043c2 112 res = false;
irsanjul 0:64967b7043c2 113 }
irsanjul 0:64967b7043c2 114 return res;
irsanjul 0:64967b7043c2 115 }
irsanjul 0:64967b7043c2 116
irsanjul 0:64967b7043c2 117 bool chekConect(MDMSerial &mdm)
irsanjul 0:64967b7043c2 118 {
irsanjul 0:64967b7043c2 119 bool stat = mdm.CheckCon();
irsanjul 0:64967b7043c2 120 if(!stat)
irsanjul 0:64967b7043c2 121 {
irsanjul 0:64967b7043c2 122 MDMParser::IP ip = mdm.join(APN,USERNAME,PASSWORD);
irsanjul 0:64967b7043c2 123 if (ip != NOIP)
irsanjul 0:64967b7043c2 124 {
irsanjul 0:64967b7043c2 125 mdm.dumpIp(ip);
irsanjul 0:64967b7043c2 126 return true;
irsanjul 0:64967b7043c2 127 }
irsanjul 0:64967b7043c2 128 else
irsanjul 0:64967b7043c2 129 {
irsanjul 0:64967b7043c2 130 mdm.join(APN,USERNAME,PASSWORD);
irsanjul 0:64967b7043c2 131 return false;
irsanjul 0:64967b7043c2 132 }
irsanjul 0:64967b7043c2 133 }
irsanjul 0:64967b7043c2 134 else
irsanjul 0:64967b7043c2 135 return true;
irsanjul 0:64967b7043c2 136 }