FIAP (IEEE1888) library

Dependents:   Fetch_IEEE1888_Storage IEEE1888_MULTI_SENSOR_GW

Fork of FiapV2 by Yasushi TAUCHI

Committer:
yueee_yt
Date:
Mon Aug 20 00:40:00 2012 +0000
Revision:
0:d34a9148b19e
Child:
2:2ba00be13585
Ver2.0?beeta

Who changed what in which revision?

UserRevisionLine numberNew contents of line
yueee_yt 0:d34a9148b19e 1 #include "fiap.h"
yueee_yt 0:d34a9148b19e 2 #include "mbed.h"
yueee_yt 0:d34a9148b19e 3 #include "stdio.h"
yueee_yt 0:d34a9148b19e 4 #include "spdomparser.hpp"
yueee_yt 0:d34a9148b19e 5 #include "spxmlnode.hpp"
yueee_yt 0:d34a9148b19e 6 #include "spxmlhandle.hpp"
yueee_yt 0:d34a9148b19e 7
yueee_yt 0:d34a9148b19e 8 char outBuffer[1500+1]={0};
yueee_yt 0:d34a9148b19e 9 // HTTPClient http;
yueee_yt 0:d34a9148b19e 10
yueee_yt 0:d34a9148b19e 11 //HTTPText InData("text/html", 800);
yueee_yt 0:d34a9148b19e 12 // HTTPStream stream;
yueee_yt 0:d34a9148b19e 13
yueee_yt 0:d34a9148b19e 14 char _soap_text[800];
yueee_yt 0:d34a9148b19e 15 char uuid[37];
yueee_yt 0:d34a9148b19e 16 //char str[50];
yueee_yt 0:d34a9148b19e 17 //int yy,mo,dd,hh,mm,ss;
yueee_yt 0:d34a9148b19e 18 //char requestBuffer[50];
yueee_yt 0:d34a9148b19e 19 //int i,ii,ll;
yueee_yt 0:d34a9148b19e 20 //HTTPResult r;
yueee_yt 0:d34a9148b19e 21 //FIAP::FIAP(string Storage,string PointSetId) {
yueee_yt 0:d34a9148b19e 22 FIAP::FIAP(char Storage[],char PointSetId[]) {
yueee_yt 0:d34a9148b19e 23 debug_mode=false;
yueee_yt 0:d34a9148b19e 24 strcpy(_fiap_storage,Storage);
yueee_yt 0:d34a9148b19e 25 strcpy(_fiap_id_prefix,PointSetId);
yueee_yt 0:d34a9148b19e 26
yueee_yt 0:d34a9148b19e 27 strcpy(_soap_header,"<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
yueee_yt 0:d34a9148b19e 28 strcat(_soap_header ,"<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\">");
yueee_yt 0:d34a9148b19e 29 strcat(_soap_header , "<soapenv:Body>");
yueee_yt 0:d34a9148b19e 30 strcat(_soap_header , "<ns2:dataRQ xmlns:ns2=\"http://soap.fiap.org/\">");
yueee_yt 0:d34a9148b19e 31 strcat(_soap_header , "<transport xmlns=\"http://gutp.jp/fiap/2009/11/\">");
yueee_yt 0:d34a9148b19e 32 strcat(_soap_header , "<body>");
yueee_yt 0:d34a9148b19e 33 strcat(_soap_header , "<pointSet id=\"");
yueee_yt 0:d34a9148b19e 34 strcat(_soap_header , _fiap_id_prefix);
yueee_yt 0:d34a9148b19e 35 strcat(_soap_header , "\">");
yueee_yt 0:d34a9148b19e 36
yueee_yt 0:d34a9148b19e 37 strcpy(_soap_footer,"</pointSet>");
yueee_yt 0:d34a9148b19e 38 strcat(_soap_footer ,"</body>");
yueee_yt 0:d34a9148b19e 39 strcat(_soap_footer ,"</transport>");
yueee_yt 0:d34a9148b19e 40 strcat(_soap_footer,"</ns2:dataRQ>");
yueee_yt 0:d34a9148b19e 41 strcat(_soap_footer,"</soapenv:Body>");
yueee_yt 0:d34a9148b19e 42 strcat(_soap_footer,"</soapenv:Envelope>");
yueee_yt 0:d34a9148b19e 43 strcat(_soap_footer,"\r\n\r\n");
yueee_yt 0:d34a9148b19e 44
yueee_yt 0:d34a9148b19e 45 strcpy(_soap_action,"\"http://soap.fiap.org/data\"");
yueee_yt 0:d34a9148b19e 46 }
yueee_yt 0:d34a9148b19e 47
yueee_yt 0:d34a9148b19e 48 FIAP::FIAP(char Storage[]) {
yueee_yt 0:d34a9148b19e 49 //printf("start-fiap(fetch)\r\n");
yueee_yt 0:d34a9148b19e 50 debug_mode=false;
yueee_yt 0:d34a9148b19e 51 //printf(Storage);
yueee_yt 0:d34a9148b19e 52 strcpy(_fiap_storage,Storage);
yueee_yt 0:d34a9148b19e 53 strcpy(_soap_header,"<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
yueee_yt 0:d34a9148b19e 54 strcat(_soap_header , "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\">");
yueee_yt 0:d34a9148b19e 55 strcat(_soap_header , "<soapenv:Body>");
yueee_yt 0:d34a9148b19e 56 strcat(_soap_header , "<ns2:queryRQ xmlns:ns2=\"http://soap.fiap.org/\">");
yueee_yt 0:d34a9148b19e 57 strcat(_soap_header , "<transport xmlns=\"http://gutp.jp/fiap/2009/11/\">");
yueee_yt 0:d34a9148b19e 58 strcat(_soap_header , "<header>");
yueee_yt 0:d34a9148b19e 59 //printf("start-fiap(fetch)2\r\n");
yueee_yt 0:d34a9148b19e 60
yueee_yt 0:d34a9148b19e 61 strcpy(_soap_footer,"</header>");
yueee_yt 0:d34a9148b19e 62 strcat(_soap_footer,"</transport>");
yueee_yt 0:d34a9148b19e 63 strcat(_soap_footer,"</ns2:queryRQ>");
yueee_yt 0:d34a9148b19e 64 strcat(_soap_footer,"</soapenv:Body>");
yueee_yt 0:d34a9148b19e 65 strcat(_soap_footer,"</soapenv:Envelope>");
yueee_yt 0:d34a9148b19e 66 strcat(_soap_footer,"\r\n\r\n");
yueee_yt 0:d34a9148b19e 67 strcpy(_soap_action,"\"http://soap.fiap.org/query\"");
yueee_yt 0:d34a9148b19e 68 // printf("start-fiap(fetch)-define-end\r\n");
yueee_yt 0:d34a9148b19e 69 }
yueee_yt 0:d34a9148b19e 70
yueee_yt 0:d34a9148b19e 71 int FIAP::fetch_last_data(struct fiap_element* v,unsigned int esize) {
yueee_yt 0:d34a9148b19e 72 HTTPClient http;
yueee_yt 0:d34a9148b19e 73 int i,ii,ll;
yueee_yt 0:d34a9148b19e 74 // char uuid[37];
yueee_yt 0:d34a9148b19e 75 // char _soap_text[800];
yueee_yt 0:d34a9148b19e 76 strcpy( _soap_text, _soap_header);
yueee_yt 0:d34a9148b19e 77
yueee_yt 0:d34a9148b19e 78 sprintf(uuid,"%04x%04x-%04x-%04x-%04x-%04x%04x%04x",rand()%0x10000,rand()%0x10000,rand()%0x10000,rand()%1000|0x4000,rand()%0x1000|0x8000,rand()%0x10000,rand()%10000,(rand()+1)%0x10000);
yueee_yt 0:d34a9148b19e 79 //sprintf(uuid,"0a90f1fa-bdb4-48ff-87d3-661d2af6ff4c");
yueee_yt 0:d34a9148b19e 80
yueee_yt 0:d34a9148b19e 81 strcat( _soap_text , "<query id=\"");
yueee_yt 0:d34a9148b19e 82 strcat( _soap_text , uuid);
yueee_yt 0:d34a9148b19e 83 strcat( _soap_text , "\" type=\"storage\">");
yueee_yt 0:d34a9148b19e 84 for (i=0; i<esize; i++) {
yueee_yt 0:d34a9148b19e 85 strcat(_soap_text , "<key id=\"");
yueee_yt 0:d34a9148b19e 86 strcat(_soap_text , v[i].cid);
yueee_yt 0:d34a9148b19e 87 strcat(_soap_text , "\" attrName=\"time\" select=\"maximum\"/>");
yueee_yt 0:d34a9148b19e 88 }
yueee_yt 0:d34a9148b19e 89 strcat(_soap_text , "</query>");
yueee_yt 0:d34a9148b19e 90 strcat(_soap_text , _soap_footer);
yueee_yt 0:d34a9148b19e 91 if (debug_mode) {
yueee_yt 0:d34a9148b19e 92 printf(_fiap_storage);
yueee_yt 0:d34a9148b19e 93 printf("\r\n");
yueee_yt 0:d34a9148b19e 94 printf(_soap_text);
yueee_yt 0:d34a9148b19e 95 printf("<<< Request(end)\n");
yueee_yt 0:d34a9148b19e 96 }
yueee_yt 0:d34a9148b19e 97 http.setRequestHeader("Content-Type","text/xml; charset=UTF-8");
yueee_yt 0:d34a9148b19e 98 // http.setRequestHeader("SOAPAction","query");
yueee_yt 0:d34a9148b19e 99 http.setRequestHeader("SOAPAction","\"http://soap.fiap.org/query\"");
yueee_yt 0:d34a9148b19e 100 HTTPText InData("text/html", 800);
yueee_yt 0:d34a9148b19e 101 InData.set(_soap_text);
yueee_yt 0:d34a9148b19e 102 // HTTPText OutData("text/html", 2048);
yueee_yt 0:d34a9148b19e 103 HTTPStream stream;
yueee_yt 0:d34a9148b19e 104 // char outBuffer[1500+1]={0};
yueee_yt 0:d34a9148b19e 105 stream.readNext((byte*)outBuffer,1500);
yueee_yt 0:d34a9148b19e 106 printf("post.start \n\r");
yueee_yt 0:d34a9148b19e 107 // HTTPResult r = http.post(_fiap_storage,InData,&OutData);
yueee_yt 0:d34a9148b19e 108 HTTPResult r = http.post(_fiap_storage,InData,&stream);
yueee_yt 0:d34a9148b19e 109 printf("post.end \n\r");
yueee_yt 0:d34a9148b19e 110 if (r==HTTP_PROCESSING) {
yueee_yt 0:d34a9148b19e 111 if (debug_mode)printf("Processing \n");
yueee_yt 0:d34a9148b19e 112 return -1;
yueee_yt 0:d34a9148b19e 113 }
yueee_yt 0:d34a9148b19e 114 if (r==HTTP_PARSE) {
yueee_yt 0:d34a9148b19e 115 if (debug_mode) printf("URI Parse error \n");
yueee_yt 0:d34a9148b19e 116 return -1;
yueee_yt 0:d34a9148b19e 117 }
yueee_yt 0:d34a9148b19e 118 if (r==HTTP_DNS) {
yueee_yt 0:d34a9148b19e 119 if (debug_mode) printf("Could not resolve name\n");
yueee_yt 0:d34a9148b19e 120 return -1;
yueee_yt 0:d34a9148b19e 121 }
yueee_yt 0:d34a9148b19e 122 if (r==HTTP_PRTCL) {
yueee_yt 0:d34a9148b19e 123 if (debug_mode)printf("Protocol error\n");
yueee_yt 0:d34a9148b19e 124 return -1;
yueee_yt 0:d34a9148b19e 125 }
yueee_yt 0:d34a9148b19e 126 if (r==HTTP_NOTFOUND) {
yueee_yt 0:d34a9148b19e 127 if (debug_mode)printf("HTTP 404 Error\n");
yueee_yt 0:d34a9148b19e 128 return -1;
yueee_yt 0:d34a9148b19e 129 }
yueee_yt 0:d34a9148b19e 130 if (r==HTTP_REFUSED) {
yueee_yt 0:d34a9148b19e 131 if (debug_mode) printf("HTTP 403 Error \n");
yueee_yt 0:d34a9148b19e 132 return -1;
yueee_yt 0:d34a9148b19e 133 }
yueee_yt 0:d34a9148b19e 134 if (r==HTTP_ERROR) {
yueee_yt 0:d34a9148b19e 135 if (debug_mode)printf("HTTP xxx error %d \n ",r);
yueee_yt 0:d34a9148b19e 136 return -1;
yueee_yt 0:d34a9148b19e 137 }
yueee_yt 0:d34a9148b19e 138 if (r==HTTP_TIMEOUT) {
yueee_yt 0:d34a9148b19e 139 if (debug_mode)printf("Connection timeout\n");
yueee_yt 0:d34a9148b19e 140 return -1;
yueee_yt 0:d34a9148b19e 141 }
yueee_yt 0:d34a9148b19e 142 if (r==HTTP_CONN) {
yueee_yt 0:d34a9148b19e 143 if (debug_mode)printf("Connection error\n");
yueee_yt 0:d34a9148b19e 144 return -1;
yueee_yt 0:d34a9148b19e 145 }
yueee_yt 0:d34a9148b19e 146 // printf("Responce(start)>>>\n");
yueee_yt 0:d34a9148b19e 147 // printf(OutData.gets());
yueee_yt 0:d34a9148b19e 148 // printf("<<< Response(end)\n");
yueee_yt 0:d34a9148b19e 149 // return;
yueee_yt 0:d34a9148b19e 150 SP_XmlNodeList * points;
yueee_yt 0:d34a9148b19e 151 if (stream.readable()) {
yueee_yt 0:d34a9148b19e 152 if (debug_mode)printf("\n\r data Get Ok\n\r");
yueee_yt 0:d34a9148b19e 153 SP_XmlDomParser parser;
yueee_yt 0:d34a9148b19e 154 outBuffer[stream.readLen()]=0;
yueee_yt 0:d34a9148b19e 155 parser.append(outBuffer,strlen(outBuffer));
yueee_yt 0:d34a9148b19e 156 //stream.readNext((byte*)outBuffer,4096);
yueee_yt 0:d34a9148b19e 157 SP_XmlHandle rootHandle(parser.getDocument()->getRootElement());
yueee_yt 0:d34a9148b19e 158 SP_XmlHandle transport = rootHandle.getChild(0).getChild(0).getChild(0);
yueee_yt 0:d34a9148b19e 159 SP_XmlElementNode * fiapError = transport.getChild("header").getChild("error").toElement();
yueee_yt 0:d34a9148b19e 160 int yy,mo,dd,hh,mm,ss;
yueee_yt 0:d34a9148b19e 161
yueee_yt 0:d34a9148b19e 162 char str[50];
yueee_yt 0:d34a9148b19e 163 printf ("%s \n",transport.toElement()->getName());
yueee_yt 0:d34a9148b19e 164 if (fiapError==NULL) {
yueee_yt 0:d34a9148b19e 165 SP_XmlElementNode * values =transport.getChild("body").toElement();
yueee_yt 0:d34a9148b19e 166 points=(SP_XmlNodeList *)values->getChildren() ;
yueee_yt 0:d34a9148b19e 167 // points=values->getChildren();
yueee_yt 0:d34a9148b19e 168 int j=points->getLength();
yueee_yt 0:d34a9148b19e 169 if (debug_mode) printf("GetValues of No %d \n\r",j);
yueee_yt 0:d34a9148b19e 170 SP_XmlElementNode *data_point_node,*data_value_node;
yueee_yt 0:d34a9148b19e 171 SP_XmlCDataNode *data_value_cnode;
yueee_yt 0:d34a9148b19e 172 for (i=0; i<j; i++) {
yueee_yt 0:d34a9148b19e 173 SP_XmlHandle data_handle(points->get(i));//Point
yueee_yt 0:d34a9148b19e 174 data_point_node=data_handle.toElement();
yueee_yt 0:d34a9148b19e 175 data_value_node=data_handle.getChild("value").toElement();
yueee_yt 0:d34a9148b19e 176 data_value_cnode=data_handle.getChild("value").getChild(0).toCData();
yueee_yt 0:d34a9148b19e 177 if (debug_mode) printf("PointID=%s \r\n",data_point_node->getAttrValue("id"));
yueee_yt 0:d34a9148b19e 178 if (debug_mode) printf("date=%s \r\n",data_value_node->getAttrValue("time"));
yueee_yt 0:d34a9148b19e 179 if (debug_mode) printf("data=%s \r\n",data_value_cnode->getText());
yueee_yt 0:d34a9148b19e 180 //time_t second[50]={0};
yueee_yt 0:d34a9148b19e 181 for (ii=0; ii<esize; ii++) {
yueee_yt 0:d34a9148b19e 182 if (strcmp(v[ii].cid,data_point_node->getAttrValue("id"))==0) {
yueee_yt 0:d34a9148b19e 183 sprintf(str,"%s",data_value_node->getAttrValue("time"));
yueee_yt 0:d34a9148b19e 184 ll=sscanf(str,"%d-%d-%dT%d:%d:%d.",&yy,&mo,&dd,&hh,&mm,&ss);
yueee_yt 0:d34a9148b19e 185 if (debug_mode)printf("date convert no %d (%d/%d/%d %d:%d:%d) \r\n",ll,yy,mo,dd,hh,mm,ss);
yueee_yt 0:d34a9148b19e 186 v[ii].year=yy;
yueee_yt 0:d34a9148b19e 187 v[ii].month=mo;
yueee_yt 0:d34a9148b19e 188 v[ii].day=dd;
yueee_yt 0:d34a9148b19e 189 v[ii].hour=hh;
yueee_yt 0:d34a9148b19e 190 v[ii].minute=mm;
yueee_yt 0:d34a9148b19e 191 v[ii].second=ss;
yueee_yt 0:d34a9148b19e 192 sprintf(v[ii].value,"%s",data_value_cnode->getText());
yueee_yt 0:d34a9148b19e 193 }
yueee_yt 0:d34a9148b19e 194 }
yueee_yt 0:d34a9148b19e 195 }
yueee_yt 0:d34a9148b19e 196 } else {
yueee_yt 0:d34a9148b19e 197 printf("ERROR\n\r");
yueee_yt 0:d34a9148b19e 198 }
yueee_yt 0:d34a9148b19e 199 } else {
yueee_yt 0:d34a9148b19e 200 if (debug_mode)printf("error\n\r");
yueee_yt 0:d34a9148b19e 201 }
yueee_yt 0:d34a9148b19e 202
yueee_yt 0:d34a9148b19e 203 return 0;
yueee_yt 0:d34a9148b19e 204 }
yueee_yt 0:d34a9148b19e 205 int FIAP::fetch_last_data(struct fiap_element *v) {
yueee_yt 0:d34a9148b19e 206 HTTPClient http;
yueee_yt 0:d34a9148b19e 207 int ll;
yueee_yt 0:d34a9148b19e 208 // char uuid[37];
yueee_yt 0:d34a9148b19e 209 // char _soap_text[800];
yueee_yt 0:d34a9148b19e 210 strcpy(_soap_text, _soap_header);
yueee_yt 0:d34a9148b19e 211
yueee_yt 0:d34a9148b19e 212 sprintf(uuid,"%04x%04x-%04x-%04x-%04x-%04x%04x%04x",rand()%0x10000,rand()%0x10000,rand()%0x10000,rand()%1000|0x4000,rand()%0x1000|0x8000,rand()%0x10000,rand()%10000,(rand()+1)%0x10000);
yueee_yt 0:d34a9148b19e 213 //sprintf(uuid,"0a90f1fa-bdb4-48ff-87d3-661d2af6ff4c");
yueee_yt 0:d34a9148b19e 214 strcat(_soap_text , "<query id=\"");
yueee_yt 0:d34a9148b19e 215 strcat(_soap_text , uuid);
yueee_yt 0:d34a9148b19e 216 strcat(_soap_text , "\" type=\"storage\">");
yueee_yt 0:d34a9148b19e 217 strcat(_soap_text , "<key id=\"");
yueee_yt 0:d34a9148b19e 218 strcat(_soap_text , v->cid);
yueee_yt 0:d34a9148b19e 219 strcat(_soap_text , "\" attrName=\"time\" select=\"maximum\"/>");
yueee_yt 0:d34a9148b19e 220 strcat(_soap_text , "</query>");
yueee_yt 0:d34a9148b19e 221 strcat(_soap_text , _soap_footer);
yueee_yt 0:d34a9148b19e 222 if (debug_mode) {
yueee_yt 0:d34a9148b19e 223 printf("\r\n");
yueee_yt 0:d34a9148b19e 224 printf(_fiap_storage);
yueee_yt 0:d34a9148b19e 225 printf("\r\n");
yueee_yt 0:d34a9148b19e 226 printf(_soap_text);
yueee_yt 0:d34a9148b19e 227 printf("<<< Request(end)\n");
yueee_yt 0:d34a9148b19e 228 }
yueee_yt 0:d34a9148b19e 229 http.setRequestHeader("Content-Type","text/xml; charset=UTF-8");
yueee_yt 0:d34a9148b19e 230 // http.setRequestHeader("SOAPAction","query");
yueee_yt 0:d34a9148b19e 231 http.setRequestHeader("SOAPAction","\"http://soap.fiap.org/query\"");
yueee_yt 0:d34a9148b19e 232 HTTPText InData;
yueee_yt 0:d34a9148b19e 233 InData.set(_soap_text);
yueee_yt 0:d34a9148b19e 234 //HTTPText OutData("text/html", 2000);
yueee_yt 0:d34a9148b19e 235 // HTTPText OutData;
yueee_yt 0:d34a9148b19e 236 HTTPStream stream;
yueee_yt 0:d34a9148b19e 237 // char outBuffer[1500+1];
yueee_yt 0:d34a9148b19e 238 stream.readNext((byte*)outBuffer,strlen(outBuffer));
yueee_yt 0:d34a9148b19e 239 printf("post.start \n\r");
yueee_yt 0:d34a9148b19e 240 //HTTPResult r = http.post(_fiap_storage,InData,&OutData);
yueee_yt 0:d34a9148b19e 241 HTTPResult r = http.post(_fiap_storage,InData,&stream);
yueee_yt 0:d34a9148b19e 242 printf("post.end \n\r");
yueee_yt 0:d34a9148b19e 243 if (r==HTTP_PROCESSING) {
yueee_yt 0:d34a9148b19e 244 if (debug_mode)printf("Processing \n");
yueee_yt 0:d34a9148b19e 245 return -1;
yueee_yt 0:d34a9148b19e 246 }
yueee_yt 0:d34a9148b19e 247 if (r==HTTP_PARSE) {
yueee_yt 0:d34a9148b19e 248 if (debug_mode) printf("URI Parse error \n");
yueee_yt 0:d34a9148b19e 249 return -1;
yueee_yt 0:d34a9148b19e 250 }
yueee_yt 0:d34a9148b19e 251 if (r==HTTP_DNS) {
yueee_yt 0:d34a9148b19e 252 if (debug_mode) printf("Could not resolve name\n");
yueee_yt 0:d34a9148b19e 253 return -1;
yueee_yt 0:d34a9148b19e 254 }
yueee_yt 0:d34a9148b19e 255 if (r==HTTP_PRTCL) {
yueee_yt 0:d34a9148b19e 256 if (debug_mode)printf("Protocol error\n");
yueee_yt 0:d34a9148b19e 257 return -1;
yueee_yt 0:d34a9148b19e 258 }
yueee_yt 0:d34a9148b19e 259 if (r==HTTP_NOTFOUND) {
yueee_yt 0:d34a9148b19e 260 if (debug_mode)printf("HTTP 404 Error\n");
yueee_yt 0:d34a9148b19e 261 return -1;
yueee_yt 0:d34a9148b19e 262 }
yueee_yt 0:d34a9148b19e 263 if (r==HTTP_REFUSED) {
yueee_yt 0:d34a9148b19e 264 if (debug_mode) printf("HTTP 403 Error \n");
yueee_yt 0:d34a9148b19e 265 return -1;
yueee_yt 0:d34a9148b19e 266 }
yueee_yt 0:d34a9148b19e 267 if (r==HTTP_ERROR) {
yueee_yt 0:d34a9148b19e 268 if (debug_mode)printf("HTTP xxx error %d \n ",r);
yueee_yt 0:d34a9148b19e 269 return -1;
yueee_yt 0:d34a9148b19e 270 }
yueee_yt 0:d34a9148b19e 271 if (r==HTTP_TIMEOUT) {
yueee_yt 0:d34a9148b19e 272 if (debug_mode)printf("Connection timeout\n");
yueee_yt 0:d34a9148b19e 273 return -1;
yueee_yt 0:d34a9148b19e 274 }
yueee_yt 0:d34a9148b19e 275 if (r==HTTP_CONN) {
yueee_yt 0:d34a9148b19e 276 if (debug_mode)printf("Connection error\n");
yueee_yt 0:d34a9148b19e 277 return -1;
yueee_yt 0:d34a9148b19e 278 }
yueee_yt 0:d34a9148b19e 279 // printf("Responce(start)>>>\n");
yueee_yt 0:d34a9148b19e 280 // printf(OutData.gets());
yueee_yt 0:d34a9148b19e 281 // printf("<<< Response(end)\n");
yueee_yt 0:d34a9148b19e 282 // return;
yueee_yt 0:d34a9148b19e 283
yueee_yt 0:d34a9148b19e 284 SP_XmlNodeList * points;
yueee_yt 0:d34a9148b19e 285 if (stream.readable()) {
yueee_yt 0:d34a9148b19e 286 if (debug_mode)printf("\n\r data Get Ok\n\r");
yueee_yt 0:d34a9148b19e 287 SP_XmlDomParser parser;
yueee_yt 0:d34a9148b19e 288 if (debug_mode)printf("stream readlen = %d \n\r",stream.readLen());
yueee_yt 0:d34a9148b19e 289
yueee_yt 0:d34a9148b19e 290 outBuffer[stream.readLen()]=0;
yueee_yt 0:d34a9148b19e 291 printf("check0\n\r");
yueee_yt 0:d34a9148b19e 292 parser.append(outBuffer,strlen(outBuffer));
yueee_yt 0:d34a9148b19e 293 printf("check1\n\r");
yueee_yt 0:d34a9148b19e 294
yueee_yt 0:d34a9148b19e 295 //stream.readNext((byte*)outBuffer,4096);
yueee_yt 0:d34a9148b19e 296 SP_XmlHandle rootHandle(parser.getDocument()->getRootElement());
yueee_yt 0:d34a9148b19e 297 SP_XmlHandle transport = rootHandle.getChild(0).getChild(0).getChild(0);
yueee_yt 0:d34a9148b19e 298 SP_XmlElementNode * fiapError = transport.getChild("header").getChild("error").toElement();
yueee_yt 0:d34a9148b19e 299 int yy,mo,dd,hh,mm,ss;
yueee_yt 0:d34a9148b19e 300
yueee_yt 0:d34a9148b19e 301 char str[50];
yueee_yt 0:d34a9148b19e 302 printf ("%s \n\r",transport.toElement()->getName());
yueee_yt 0:d34a9148b19e 303 if (fiapError==NULL) {
yueee_yt 0:d34a9148b19e 304 SP_XmlElementNode * values =transport.getChild("body").toElement();
yueee_yt 0:d34a9148b19e 305 points=(SP_XmlNodeList *)values->getChildren() ;
yueee_yt 0:d34a9148b19e 306 // points=values->getChildren();
yueee_yt 0:d34a9148b19e 307 int j=points->getLength();
yueee_yt 0:d34a9148b19e 308 if (debug_mode) printf("GetValues of No %d \n\r",j);
yueee_yt 0:d34a9148b19e 309 SP_XmlElementNode *data_point_node,*data_value_node;
yueee_yt 0:d34a9148b19e 310 SP_XmlCDataNode *data_value_cnode;
yueee_yt 0:d34a9148b19e 311 SP_XmlHandle data_handle(points->get(0));//Point
yueee_yt 0:d34a9148b19e 312 data_point_node=data_handle.toElement();
yueee_yt 0:d34a9148b19e 313 data_value_node=data_handle.getChild("value").toElement();
yueee_yt 0:d34a9148b19e 314 data_value_cnode=data_handle.getChild("value").getChild(0).toCData();
yueee_yt 0:d34a9148b19e 315 if (debug_mode) printf("PointID=%s \r\n",data_point_node->getAttrValue("id"));
yueee_yt 0:d34a9148b19e 316 if (debug_mode) printf("date=%s \r\n",data_value_node->getAttrValue("time"));
yueee_yt 0:d34a9148b19e 317 if (debug_mode) printf("data=%s \r\n",data_value_cnode->getText());
yueee_yt 0:d34a9148b19e 318 sprintf(str,"%s",data_value_node->getAttrValue("time"));
yueee_yt 0:d34a9148b19e 319 ll=sscanf(str,"%d-%d-%dT%d:%d:%d.",&yy,&mo,&dd,&hh,&mm,&ss);
yueee_yt 0:d34a9148b19e 320 if (debug_mode)printf("date convert no %d (%d/%d/%d %d:%d:%d) \r\n",ll,yy,mo,dd,hh,mm,ss);
yueee_yt 0:d34a9148b19e 321 v->year=yy;
yueee_yt 0:d34a9148b19e 322 v->month=mo;
yueee_yt 0:d34a9148b19e 323 v->day=dd;
yueee_yt 0:d34a9148b19e 324 v->hour=hh;
yueee_yt 0:d34a9148b19e 325 v->minute=mm;
yueee_yt 0:d34a9148b19e 326 v->second=ss;
yueee_yt 0:d34a9148b19e 327 sprintf(v->value,"%s", data_value_cnode->getText());
yueee_yt 0:d34a9148b19e 328 } else {
yueee_yt 0:d34a9148b19e 329 printf("ERROR\n\r");
yueee_yt 0:d34a9148b19e 330 }
yueee_yt 0:d34a9148b19e 331 } else {
yueee_yt 0:d34a9148b19e 332 if (debug_mode)printf("error\n\r");
yueee_yt 0:d34a9148b19e 333 }
yueee_yt 0:d34a9148b19e 334
yueee_yt 0:d34a9148b19e 335 return 0;
yueee_yt 0:d34a9148b19e 336
yueee_yt 0:d34a9148b19e 337 }
yueee_yt 0:d34a9148b19e 338
yueee_yt 0:d34a9148b19e 339 int FIAP::post(struct fiap_element* v, unsigned int esize) {
yueee_yt 0:d34a9148b19e 340 HTTPClient http;
yueee_yt 0:d34a9148b19e 341 int i;
yueee_yt 0:d34a9148b19e 342 char requestBuffer[50];
yueee_yt 0:d34a9148b19e 343 // char _soap_text[800];
yueee_yt 0:d34a9148b19e 344 strcpy(_soap_header,_soap_text);
yueee_yt 0:d34a9148b19e 345 for (i=0; i<esize; i++) {
yueee_yt 0:d34a9148b19e 346 sprintf(requestBuffer,"%04d-%02d-%02dT%02d:%02d:%02d.0000000",v[i].year,v[i].month,v[i].day,v[i].hour,v[i].minute,v[i].second);
yueee_yt 0:d34a9148b19e 347 strcat(_soap_text , "<point id=\"");
yueee_yt 0:d34a9148b19e 348 strcat(_soap_text , _fiap_id_prefix);
yueee_yt 0:d34a9148b19e 349 strcat( _soap_text , v[i].cid);
yueee_yt 0:d34a9148b19e 350 strcat( _soap_text, "\">");
yueee_yt 0:d34a9148b19e 351 strcat( _soap_text , "<value time=\"");
yueee_yt 0:d34a9148b19e 352 strcat( _soap_text , requestBuffer);
yueee_yt 0:d34a9148b19e 353 strcat( _soap_text , v[i].timezone);
yueee_yt 0:d34a9148b19e 354 strcat( _soap_text , "\">");
yueee_yt 0:d34a9148b19e 355 strcat( _soap_text , v[i].value);
yueee_yt 0:d34a9148b19e 356 strcat( _soap_text , "</value>");
yueee_yt 0:d34a9148b19e 357 strcat( _soap_text , "</point>");
yueee_yt 0:d34a9148b19e 358 }
yueee_yt 0:d34a9148b19e 359 strcat( _soap_text , _soap_footer);
yueee_yt 0:d34a9148b19e 360 if (debug_mode) {
yueee_yt 0:d34a9148b19e 361 printf(_soap_text);
yueee_yt 0:d34a9148b19e 362 printf("<<< Request(end)\n");
yueee_yt 0:d34a9148b19e 363 }
yueee_yt 0:d34a9148b19e 364 http.setRequestHeader("Content-Type","text/xml; charset=UTF-8");
yueee_yt 0:d34a9148b19e 365 http.setRequestHeader("SOAPAction","\"http://soap.fiap.org/data\"");
yueee_yt 0:d34a9148b19e 366 // InData=new HTTPText();
yueee_yt 0:d34a9148b19e 367 HTTPText InData;
yueee_yt 0:d34a9148b19e 368 InData.set(_soap_text);
yueee_yt 0:d34a9148b19e 369 HTTPText OutData;
yueee_yt 0:d34a9148b19e 370 HTTPResult r = http.post(_fiap_storage,InData,&OutData);
yueee_yt 0:d34a9148b19e 371 if (r==HTTP_PROCESSING) {
yueee_yt 0:d34a9148b19e 372 if (debug_mode)printf("Processing \n");
yueee_yt 0:d34a9148b19e 373 return -1;
yueee_yt 0:d34a9148b19e 374 }
yueee_yt 0:d34a9148b19e 375 if (r==HTTP_PARSE) {
yueee_yt 0:d34a9148b19e 376 if (debug_mode) printf("URI Parse error \n");
yueee_yt 0:d34a9148b19e 377 return -1;
yueee_yt 0:d34a9148b19e 378 }
yueee_yt 0:d34a9148b19e 379 if (r==HTTP_DNS) {
yueee_yt 0:d34a9148b19e 380 if (debug_mode) printf("Could not resolve name\n");
yueee_yt 0:d34a9148b19e 381 return -1;
yueee_yt 0:d34a9148b19e 382 }
yueee_yt 0:d34a9148b19e 383 if (r==HTTP_PRTCL) {
yueee_yt 0:d34a9148b19e 384 if (debug_mode)printf("Protocol error\n");
yueee_yt 0:d34a9148b19e 385 return -1;
yueee_yt 0:d34a9148b19e 386 }
yueee_yt 0:d34a9148b19e 387 if (r==HTTP_NOTFOUND) {
yueee_yt 0:d34a9148b19e 388 if (debug_mode)printf("HTTP 404 Error\n");
yueee_yt 0:d34a9148b19e 389 return -1;
yueee_yt 0:d34a9148b19e 390 }
yueee_yt 0:d34a9148b19e 391 if (r==HTTP_REFUSED) {
yueee_yt 0:d34a9148b19e 392 if (debug_mode) printf("HTTP 403 Error \n");
yueee_yt 0:d34a9148b19e 393 return -1;
yueee_yt 0:d34a9148b19e 394 }
yueee_yt 0:d34a9148b19e 395 if (r==HTTP_ERROR) {
yueee_yt 0:d34a9148b19e 396 if (debug_mode)printf("HTTP xxx error \n");
yueee_yt 0:d34a9148b19e 397 return -1;
yueee_yt 0:d34a9148b19e 398 }
yueee_yt 0:d34a9148b19e 399 if (r==HTTP_TIMEOUT) {
yueee_yt 0:d34a9148b19e 400 if (debug_mode)printf("Connection timeout\n");
yueee_yt 0:d34a9148b19e 401 return -1;
yueee_yt 0:d34a9148b19e 402 }
yueee_yt 0:d34a9148b19e 403 if (r==HTTP_CONN) {
yueee_yt 0:d34a9148b19e 404 if (debug_mode)printf("Connection error\n");
yueee_yt 0:d34a9148b19e 405 return -1;
yueee_yt 0:d34a9148b19e 406 }
yueee_yt 0:d34a9148b19e 407
yueee_yt 0:d34a9148b19e 408 return 0;
yueee_yt 0:d34a9148b19e 409 }