FIAP (IEEE1888) library

Dependents:   Fetch_IEEE1888_Storage IEEE1888_MULTI_SENSOR_GW

Fork of FiapV2 by Yasushi TAUCHI

Committer:
strysd
Date:
Sun Feb 24 05:53:20 2013 +0000
Revision:
13:13cceccf6bfb
Parent:
12:f4e59ab2bab0
Child:
14:a9ec0e6e22c8
add compiler flag in order to reduce binary size if use only write mode

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