FIAP (IEEE1888) library

Dependents:   Fetch_IEEE1888_Storage IEEE1888_MULTI_SENSOR_GW

Fork of FiapV2 by Yasushi TAUCHI

Committer:
strysd
Date:
Wed Feb 20 16:12:27 2013 +0000
Revision:
9:02ae92c06e52
Parent:
8:0b203716e92b
Child:
10:b355957e01f4
make storage url to set with setStorage function, without constructor.

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