FIAP (IEEE1888) library
Dependents: Fetch_IEEE1888_Storage IEEE1888_MULTI_SENSOR_GW
Fork of FiapV2 by
fiap.cpp@3:7b144e1a52db, 2012-08-20 (annotated)
- Committer:
- yueee_yt
- Date:
- Mon Aug 20 12:47:43 2012 +0000
- Revision:
- 3:7b144e1a52db
- Parent:
- 2:2ba00be13585
- Child:
- 4:edbcc1833b58
fixed
Who changed what in which revision?
User | Revision | Line number | New 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 | 2:2ba00be13585 | 8 | char outBuffer[1500+1]= {0}; |
yueee_yt | 0:d34a9148b19e | 9 | char _soap_text[800]; |
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 | |
yueee_yt | 2:2ba00be13585 | 54 | FIAP::FIAP(char Storage[]) |
yueee_yt | 2:2ba00be13585 | 55 | { |
yueee_yt | 2:2ba00be13585 | 56 | debug_mode=false; |
yueee_yt | 2:2ba00be13585 | 57 | strcpy(_fiap_storage,Storage); |
yueee_yt | 2:2ba00be13585 | 58 | } |
yueee_yt | 2:2ba00be13585 | 59 | |
yueee_yt | 2:2ba00be13585 | 60 | int FIAP::fetch_last_data(struct fiap_element* v,unsigned int esize) |
yueee_yt | 2:2ba00be13585 | 61 | { |
yueee_yt | 0:d34a9148b19e | 62 | HTTPClient http; |
yueee_yt | 0:d34a9148b19e | 63 | int i,ii,ll; |
yueee_yt | 2:2ba00be13585 | 64 | fetch_xml_initialize(); |
yueee_yt | 0:d34a9148b19e | 65 | strcpy( _soap_text, _soap_header); |
yueee_yt | 0:d34a9148b19e | 66 | 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 | 67 | strcat( _soap_text , "<query id=\""); |
yueee_yt | 0:d34a9148b19e | 68 | strcat( _soap_text , uuid); |
yueee_yt | 0:d34a9148b19e | 69 | strcat( _soap_text , "\" type=\"storage\">"); |
yueee_yt | 0:d34a9148b19e | 70 | for (i=0; i<esize; i++) { |
yueee_yt | 0:d34a9148b19e | 71 | strcat(_soap_text , "<key id=\""); |
yueee_yt | 0:d34a9148b19e | 72 | strcat(_soap_text , v[i].cid); |
yueee_yt | 0:d34a9148b19e | 73 | strcat(_soap_text , "\" attrName=\"time\" select=\"maximum\"/>"); |
yueee_yt | 0:d34a9148b19e | 74 | } |
yueee_yt | 0:d34a9148b19e | 75 | strcat(_soap_text , "</query>"); |
yueee_yt | 0:d34a9148b19e | 76 | strcat(_soap_text , _soap_footer); |
yueee_yt | 0:d34a9148b19e | 77 | if (debug_mode) { |
yueee_yt | 0:d34a9148b19e | 78 | printf(_fiap_storage); |
yueee_yt | 0:d34a9148b19e | 79 | printf("\r\n"); |
yueee_yt | 0:d34a9148b19e | 80 | printf(_soap_text); |
yueee_yt | 0:d34a9148b19e | 81 | printf("<<< Request(end)\n"); |
yueee_yt | 0:d34a9148b19e | 82 | } |
yueee_yt | 2:2ba00be13585 | 83 | //HTTPText InData("text/html", 800); |
yueee_yt | 2:2ba00be13585 | 84 | //InData.set(_soap_text); |
yueee_yt | 2:2ba00be13585 | 85 | HTTPText InData(_soap_text); |
yueee_yt | 3:7b144e1a52db | 86 | char rstr[800]; |
yueee_yt | 3:7b144e1a52db | 87 | HTTPText stream(rstr,800); |
yueee_yt | 2:2ba00be13585 | 88 | //stream.readNext((byte*)outBuffer,1500); |
yueee_yt | 0:d34a9148b19e | 89 | printf("post.start \n\r"); |
yueee_yt | 2:2ba00be13585 | 90 | HTTPResult r = http.postXML(_fiap_storage,"http://soap.fiap.org/query",InData,&stream); |
yueee_yt | 0:d34a9148b19e | 91 | printf("post.end \n\r"); |
yueee_yt | 3:7b144e1a52db | 92 | if(!r) { |
yueee_yt | 3:7b144e1a52db | 93 | if (debug_mode)printf("Success \n"); |
yueee_yt | 3:7b144e1a52db | 94 | } else { |
yueee_yt | 3:7b144e1a52db | 95 | |
yueee_yt | 3:7b144e1a52db | 96 | if (r==HTTP_PROCESSING) { |
yueee_yt | 3:7b144e1a52db | 97 | if (debug_mode)printf("Processing \n"); |
yueee_yt | 3:7b144e1a52db | 98 | return -1; |
yueee_yt | 3:7b144e1a52db | 99 | } |
yueee_yt | 3:7b144e1a52db | 100 | if (r==HTTP_PARSE) { |
yueee_yt | 3:7b144e1a52db | 101 | if (debug_mode) printf("URI Parse error \n"); |
yueee_yt | 3:7b144e1a52db | 102 | return -1; |
yueee_yt | 3:7b144e1a52db | 103 | } |
yueee_yt | 3:7b144e1a52db | 104 | if (r==HTTP_DNS) { |
yueee_yt | 3:7b144e1a52db | 105 | if (debug_mode) printf("Could not resolve name\n"); |
yueee_yt | 3:7b144e1a52db | 106 | return -1; |
yueee_yt | 3:7b144e1a52db | 107 | } |
yueee_yt | 3:7b144e1a52db | 108 | if (r==HTTP_PRTCL) { |
yueee_yt | 3:7b144e1a52db | 109 | if (debug_mode)printf("Protocol error\n"); |
yueee_yt | 3:7b144e1a52db | 110 | return -1; |
yueee_yt | 3:7b144e1a52db | 111 | } |
yueee_yt | 3:7b144e1a52db | 112 | if (r==HTTP_NOTFOUND) { |
yueee_yt | 3:7b144e1a52db | 113 | if (debug_mode)printf("HTTP 404 Error\n"); |
yueee_yt | 3:7b144e1a52db | 114 | return -1; |
yueee_yt | 3:7b144e1a52db | 115 | } |
yueee_yt | 3:7b144e1a52db | 116 | if (r==HTTP_REFUSED) { |
yueee_yt | 3:7b144e1a52db | 117 | if (debug_mode) printf("HTTP 403 Error \n"); |
yueee_yt | 3:7b144e1a52db | 118 | return -1; |
yueee_yt | 3:7b144e1a52db | 119 | } |
yueee_yt | 3:7b144e1a52db | 120 | if (r==HTTP_ERROR) { |
yueee_yt | 3:7b144e1a52db | 121 | if (debug_mode)printf("HTTP xxx error %d \n ",r); |
yueee_yt | 3:7b144e1a52db | 122 | return -1; |
yueee_yt | 3:7b144e1a52db | 123 | } |
yueee_yt | 3:7b144e1a52db | 124 | if (r==HTTP_TIMEOUT) { |
yueee_yt | 3:7b144e1a52db | 125 | if (debug_mode)printf("Connection timeout\n"); |
yueee_yt | 3:7b144e1a52db | 126 | return -1; |
yueee_yt | 3:7b144e1a52db | 127 | } |
yueee_yt | 3:7b144e1a52db | 128 | if (r==HTTP_CONN) { |
yueee_yt | 3:7b144e1a52db | 129 | if (debug_mode)printf("Connection error\n"); |
yueee_yt | 3:7b144e1a52db | 130 | return -1; |
yueee_yt | 3:7b144e1a52db | 131 | } |
yueee_yt | 0:d34a9148b19e | 132 | } |
yueee_yt | 0:d34a9148b19e | 133 | SP_XmlNodeList * points; |
yueee_yt | 3:7b144e1a52db | 134 | if (strlen(rstr)>0) { |
yueee_yt | 0:d34a9148b19e | 135 | if (debug_mode)printf("\n\r data Get Ok\n\r"); |
yueee_yt | 0:d34a9148b19e | 136 | SP_XmlDomParser parser; |
yueee_yt | 3:7b144e1a52db | 137 | parser.append(rstr,strlen(rstr)); |
yueee_yt | 0:d34a9148b19e | 138 | //stream.readNext((byte*)outBuffer,4096); |
yueee_yt | 0:d34a9148b19e | 139 | SP_XmlHandle rootHandle(parser.getDocument()->getRootElement()); |
yueee_yt | 0:d34a9148b19e | 140 | SP_XmlHandle transport = rootHandle.getChild(0).getChild(0).getChild(0); |
yueee_yt | 0:d34a9148b19e | 141 | SP_XmlElementNode * fiapError = transport.getChild("header").getChild("error").toElement(); |
yueee_yt | 2:2ba00be13585 | 142 | int yy,mo,dd,hh,mm,ss; |
yueee_yt | 2:2ba00be13585 | 143 | char str[50]; |
yueee_yt | 2:2ba00be13585 | 144 | printf ("%s \n",transport.toElement()->getName()); |
yueee_yt | 2:2ba00be13585 | 145 | if (fiapError==NULL) { |
yueee_yt | 2:2ba00be13585 | 146 | SP_XmlElementNode * values =transport.getChild("body").toElement(); |
yueee_yt | 2:2ba00be13585 | 147 | points=(SP_XmlNodeList *)values->getChildren() ; |
yueee_yt | 2:2ba00be13585 | 148 | int j=points->getLength(); |
yueee_yt | 2:2ba00be13585 | 149 | if (debug_mode) printf("GetValues of No %d \n\r",j); |
yueee_yt | 2:2ba00be13585 | 150 | SP_XmlElementNode *data_point_node,*data_value_node; |
yueee_yt | 2:2ba00be13585 | 151 | SP_XmlCDataNode *data_value_cnode; |
yueee_yt | 2:2ba00be13585 | 152 | for (i=0; i<j; i++) { |
yueee_yt | 2:2ba00be13585 | 153 | SP_XmlHandle data_handle(points->get(i));//Point |
yueee_yt | 2:2ba00be13585 | 154 | data_point_node=data_handle.toElement(); |
yueee_yt | 2:2ba00be13585 | 155 | data_value_node=data_handle.getChild("value").toElement(); |
yueee_yt | 2:2ba00be13585 | 156 | data_value_cnode=data_handle.getChild("value").getChild(0).toCData(); |
yueee_yt | 2:2ba00be13585 | 157 | if (debug_mode) printf("PointID=%s \r\n",data_point_node->getAttrValue("id")); |
yueee_yt | 2:2ba00be13585 | 158 | if (debug_mode) printf("date=%s \r\n",data_value_node->getAttrValue("time")); |
yueee_yt | 2:2ba00be13585 | 159 | if (debug_mode) printf("data=%s \r\n",data_value_cnode->getText()); |
yueee_yt | 2:2ba00be13585 | 160 | for (ii=0; ii<esize; ii++) { |
yueee_yt | 2:2ba00be13585 | 161 | if (strcmp(v[ii].cid,data_point_node->getAttrValue("id"))==0) { |
yueee_yt | 2:2ba00be13585 | 162 | sprintf(str,"%s",data_value_node->getAttrValue("time")); |
yueee_yt | 2:2ba00be13585 | 163 | ll=sscanf(str,"%d-%d-%dT%d:%d:%d.",&yy,&mo,&dd,&hh,&mm,&ss); |
yueee_yt | 2:2ba00be13585 | 164 | 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 | 2:2ba00be13585 | 165 | v[ii].year=yy; |
yueee_yt | 2:2ba00be13585 | 166 | v[ii].month=mo; |
yueee_yt | 2:2ba00be13585 | 167 | v[ii].day=dd; |
yueee_yt | 2:2ba00be13585 | 168 | v[ii].hour=hh; |
yueee_yt | 2:2ba00be13585 | 169 | v[ii].minute=mm; |
yueee_yt | 2:2ba00be13585 | 170 | v[ii].second=ss; |
yueee_yt | 2:2ba00be13585 | 171 | sprintf(v[ii].value,"%s",data_value_cnode->getText()); |
yueee_yt | 2:2ba00be13585 | 172 | } |
yueee_yt | 2:2ba00be13585 | 173 | } |
yueee_yt | 2:2ba00be13585 | 174 | } |
yueee_yt | 2:2ba00be13585 | 175 | } else { |
yueee_yt | 2:2ba00be13585 | 176 | printf("ERROR\n\r"); |
yueee_yt | 2:2ba00be13585 | 177 | } |
yueee_yt | 2:2ba00be13585 | 178 | } else { |
yueee_yt | 2:2ba00be13585 | 179 | if (debug_mode)printf("error\n\r"); |
yueee_yt | 2:2ba00be13585 | 180 | } |
yueee_yt | 2:2ba00be13585 | 181 | return 0; |
yueee_yt | 2:2ba00be13585 | 182 | } |
yueee_yt | 0:d34a9148b19e | 183 | |
yueee_yt | 2:2ba00be13585 | 184 | int FIAP::fetch_last_data(struct fiap_element *v) |
yueee_yt | 2:2ba00be13585 | 185 | { |
yueee_yt | 2:2ba00be13585 | 186 | HTTPClient http; |
yueee_yt | 2:2ba00be13585 | 187 | int ll; |
yueee_yt | 3:7b144e1a52db | 188 | char rstr[800]; |
yueee_yt | 2:2ba00be13585 | 189 | fetch_xml_initialize(); |
yueee_yt | 2:2ba00be13585 | 190 | strcpy(_soap_text, _soap_header); |
yueee_yt | 2:2ba00be13585 | 191 | 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 | 192 | strcat(_soap_text , "<query id=\""); |
yueee_yt | 2:2ba00be13585 | 193 | strcat(_soap_text , uuid); |
yueee_yt | 2:2ba00be13585 | 194 | strcat(_soap_text , "\" type=\"storage\">"); |
yueee_yt | 2:2ba00be13585 | 195 | strcat(_soap_text , "<key id=\""); |
yueee_yt | 2:2ba00be13585 | 196 | strcat(_soap_text , v->cid); |
yueee_yt | 2:2ba00be13585 | 197 | strcat(_soap_text , "\" attrName=\"time\" select=\"maximum\"/>"); |
yueee_yt | 2:2ba00be13585 | 198 | strcat(_soap_text , "</query>"); |
yueee_yt | 2:2ba00be13585 | 199 | strcat(_soap_text , _soap_footer); |
yueee_yt | 2:2ba00be13585 | 200 | if (debug_mode) { |
yueee_yt | 2:2ba00be13585 | 201 | printf("\r\n"); |
yueee_yt | 2:2ba00be13585 | 202 | printf(_fiap_storage); |
yueee_yt | 2:2ba00be13585 | 203 | printf("\r\n"); |
yueee_yt | 2:2ba00be13585 | 204 | printf(_soap_text); |
yueee_yt | 2:2ba00be13585 | 205 | printf("<<< Request(end)\n"); |
yueee_yt | 2:2ba00be13585 | 206 | } |
yueee_yt | 2:2ba00be13585 | 207 | // http.setRequestHeader("Content-Type","text/xml; charset=UTF-8"); |
yueee_yt | 2:2ba00be13585 | 208 | // http.setRequestHeader("SOAPAction","\"http://soap.fiap.org/query\""); |
yueee_yt | 2:2ba00be13585 | 209 | HTTPText InData(_soap_text); |
yueee_yt | 3:7b144e1a52db | 210 | HTTPText stream(rstr,800); |
yueee_yt | 2:2ba00be13585 | 211 | // stream.readNext((byte*)outBuffer,strlen(outBuffer)); |
yueee_yt | 2:2ba00be13585 | 212 | printf("post.start \n\r"); |
yueee_yt | 2:2ba00be13585 | 213 | HTTPResult r = http.postXML(_fiap_storage,"http://soap.fiap.org/query",InData,&stream); |
yueee_yt | 2:2ba00be13585 | 214 | printf("post.end \n\r"); |
yueee_yt | 3:7b144e1a52db | 215 | if(!r) { |
yueee_yt | 3:7b144e1a52db | 216 | if (debug_mode)printf("Success \n"); |
yueee_yt | 3:7b144e1a52db | 217 | } else { |
yueee_yt | 3:7b144e1a52db | 218 | if (r==HTTP_PROCESSING) { |
yueee_yt | 3:7b144e1a52db | 219 | if (debug_mode)printf("Processing \n"); |
yueee_yt | 3:7b144e1a52db | 220 | return -1; |
yueee_yt | 3:7b144e1a52db | 221 | } |
yueee_yt | 3:7b144e1a52db | 222 | if (r==HTTP_PARSE) { |
yueee_yt | 3:7b144e1a52db | 223 | if (debug_mode) printf("URI Parse error \n"); |
yueee_yt | 3:7b144e1a52db | 224 | return -1; |
yueee_yt | 3:7b144e1a52db | 225 | } |
yueee_yt | 3:7b144e1a52db | 226 | if (r==HTTP_DNS) { |
yueee_yt | 3:7b144e1a52db | 227 | if (debug_mode) printf("Could not resolve name\n"); |
yueee_yt | 3:7b144e1a52db | 228 | return -1; |
yueee_yt | 3:7b144e1a52db | 229 | } |
yueee_yt | 3:7b144e1a52db | 230 | if (r==HTTP_PRTCL) { |
yueee_yt | 3:7b144e1a52db | 231 | if (debug_mode)printf("Protocol error\n"); |
yueee_yt | 3:7b144e1a52db | 232 | return -1; |
yueee_yt | 3:7b144e1a52db | 233 | } |
yueee_yt | 3:7b144e1a52db | 234 | if (r==HTTP_NOTFOUND) { |
yueee_yt | 3:7b144e1a52db | 235 | if (debug_mode)printf("HTTP 404 Error\n"); |
yueee_yt | 3:7b144e1a52db | 236 | return -1; |
yueee_yt | 3:7b144e1a52db | 237 | } |
yueee_yt | 3:7b144e1a52db | 238 | if (r==HTTP_REFUSED) { |
yueee_yt | 3:7b144e1a52db | 239 | if (debug_mode) printf("HTTP 403 Error \n"); |
yueee_yt | 3:7b144e1a52db | 240 | return -1; |
yueee_yt | 3:7b144e1a52db | 241 | } |
yueee_yt | 3:7b144e1a52db | 242 | if (r==HTTP_ERROR) { |
yueee_yt | 3:7b144e1a52db | 243 | if (debug_mode)printf("HTTP xxx error %d \n ",r); |
yueee_yt | 3:7b144e1a52db | 244 | return -1; |
yueee_yt | 3:7b144e1a52db | 245 | } |
yueee_yt | 3:7b144e1a52db | 246 | if (r==HTTP_TIMEOUT) { |
yueee_yt | 3:7b144e1a52db | 247 | if (debug_mode)printf("Connection timeout\n"); |
yueee_yt | 3:7b144e1a52db | 248 | return -1; |
yueee_yt | 3:7b144e1a52db | 249 | } |
yueee_yt | 3:7b144e1a52db | 250 | if (r==HTTP_CONN) { |
yueee_yt | 3:7b144e1a52db | 251 | if (debug_mode)printf("Connection error\n"); |
yueee_yt | 3:7b144e1a52db | 252 | return -1; |
yueee_yt | 3:7b144e1a52db | 253 | } |
yueee_yt | 2:2ba00be13585 | 254 | } |
yueee_yt | 2:2ba00be13585 | 255 | SP_XmlNodeList * points; |
yueee_yt | 3:7b144e1a52db | 256 | if (strlen(rstr)>0) { |
yueee_yt | 2:2ba00be13585 | 257 | if (debug_mode)printf("\n\r data Get Ok\n\r"); |
yueee_yt | 2:2ba00be13585 | 258 | SP_XmlDomParser parser; |
yueee_yt | 3:7b144e1a52db | 259 | // if (debug_mode)printf("stream readlen = %d \n\r",stream.readLen()); |
yueee_yt | 3:7b144e1a52db | 260 | // outBuffer[stream.readLen()]=0; |
yueee_yt | 2:2ba00be13585 | 261 | printf("check0\n\r"); |
yueee_yt | 3:7b144e1a52db | 262 | parser.append(rstr,strlen(rstr)); |
yueee_yt | 2:2ba00be13585 | 263 | printf("check1\n\r"); |
yueee_yt | 2:2ba00be13585 | 264 | SP_XmlHandle rootHandle(parser.getDocument()->getRootElement()); |
yueee_yt | 2:2ba00be13585 | 265 | SP_XmlHandle transport = rootHandle.getChild(0).getChild(0).getChild(0); |
yueee_yt | 2:2ba00be13585 | 266 | SP_XmlElementNode * fiapError = transport.getChild("header").getChild("error").toElement(); |
yueee_yt | 2:2ba00be13585 | 267 | int yy,mo,dd,hh,mm,ss; |
yueee_yt | 0:d34a9148b19e | 268 | char str[50]; |
yueee_yt | 0:d34a9148b19e | 269 | printf ("%s \n\r",transport.toElement()->getName()); |
yueee_yt | 0:d34a9148b19e | 270 | if (fiapError==NULL) { |
yueee_yt | 0:d34a9148b19e | 271 | SP_XmlElementNode * values =transport.getChild("body").toElement(); |
yueee_yt | 0:d34a9148b19e | 272 | points=(SP_XmlNodeList *)values->getChildren() ; |
yueee_yt | 0:d34a9148b19e | 273 | // points=values->getChildren(); |
yueee_yt | 0:d34a9148b19e | 274 | int j=points->getLength(); |
yueee_yt | 0:d34a9148b19e | 275 | if (debug_mode) printf("GetValues of No %d \n\r",j); |
yueee_yt | 0:d34a9148b19e | 276 | SP_XmlElementNode *data_point_node,*data_value_node; |
yueee_yt | 0:d34a9148b19e | 277 | SP_XmlCDataNode *data_value_cnode; |
yueee_yt | 0:d34a9148b19e | 278 | SP_XmlHandle data_handle(points->get(0));//Point |
yueee_yt | 0:d34a9148b19e | 279 | data_point_node=data_handle.toElement(); |
yueee_yt | 0:d34a9148b19e | 280 | data_value_node=data_handle.getChild("value").toElement(); |
yueee_yt | 0:d34a9148b19e | 281 | data_value_cnode=data_handle.getChild("value").getChild(0).toCData(); |
yueee_yt | 0:d34a9148b19e | 282 | if (debug_mode) printf("PointID=%s \r\n",data_point_node->getAttrValue("id")); |
yueee_yt | 0:d34a9148b19e | 283 | if (debug_mode) printf("date=%s \r\n",data_value_node->getAttrValue("time")); |
yueee_yt | 0:d34a9148b19e | 284 | if (debug_mode) printf("data=%s \r\n",data_value_cnode->getText()); |
yueee_yt | 0:d34a9148b19e | 285 | sprintf(str,"%s",data_value_node->getAttrValue("time")); |
yueee_yt | 0:d34a9148b19e | 286 | ll=sscanf(str,"%d-%d-%dT%d:%d:%d.",&yy,&mo,&dd,&hh,&mm,&ss); |
yueee_yt | 0:d34a9148b19e | 287 | 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 | 288 | v->year=yy; |
yueee_yt | 0:d34a9148b19e | 289 | v->month=mo; |
yueee_yt | 0:d34a9148b19e | 290 | v->day=dd; |
yueee_yt | 0:d34a9148b19e | 291 | v->hour=hh; |
yueee_yt | 0:d34a9148b19e | 292 | v->minute=mm; |
yueee_yt | 0:d34a9148b19e | 293 | v->second=ss; |
yueee_yt | 0:d34a9148b19e | 294 | sprintf(v->value,"%s", data_value_cnode->getText()); |
yueee_yt | 0:d34a9148b19e | 295 | } else { |
yueee_yt | 0:d34a9148b19e | 296 | printf("ERROR\n\r"); |
yueee_yt | 0:d34a9148b19e | 297 | } |
yueee_yt | 0:d34a9148b19e | 298 | } else { |
yueee_yt | 0:d34a9148b19e | 299 | if (debug_mode)printf("error\n\r"); |
yueee_yt | 0:d34a9148b19e | 300 | } |
yueee_yt | 0:d34a9148b19e | 301 | return 0; |
yueee_yt | 0:d34a9148b19e | 302 | } |
yueee_yt | 0:d34a9148b19e | 303 | |
yueee_yt | 2:2ba00be13585 | 304 | |
yueee_yt | 2:2ba00be13585 | 305 | |
yueee_yt | 2:2ba00be13585 | 306 | int FIAP::post(struct fiap_element* v, unsigned int esize) |
yueee_yt | 2:2ba00be13585 | 307 | { |
yueee_yt | 0:d34a9148b19e | 308 | HTTPClient http; |
yueee_yt | 0:d34a9148b19e | 309 | int i; |
yueee_yt | 2:2ba00be13585 | 310 | char str[800]; |
yueee_yt | 0:d34a9148b19e | 311 | char requestBuffer[50]; |
yueee_yt | 2:2ba00be13585 | 312 | post_xml_initialize(); |
yueee_yt | 2:2ba00be13585 | 313 | strcpy(_soap_text,_soap_header); |
yueee_yt | 0:d34a9148b19e | 314 | for (i=0; i<esize; i++) { |
yueee_yt | 0:d34a9148b19e | 315 | 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 | 316 | strcat(_soap_text , "<point id=\""); |
yueee_yt | 0:d34a9148b19e | 317 | strcat(_soap_text , _fiap_id_prefix); |
yueee_yt | 2:2ba00be13585 | 318 | strcat(_soap_text , v[i].cid); |
yueee_yt | 0:d34a9148b19e | 319 | strcat( _soap_text, "\">"); |
yueee_yt | 2:2ba00be13585 | 320 | strcat(_soap_text , "<value time=\""); |
yueee_yt | 2:2ba00be13585 | 321 | strcat(_soap_text , requestBuffer); |
yueee_yt | 2:2ba00be13585 | 322 | strcat(_soap_text , v[i].timezone); |
yueee_yt | 2:2ba00be13585 | 323 | strcat(_soap_text , "\">"); |
yueee_yt | 2:2ba00be13585 | 324 | strcat(_soap_text , v[i].value); |
yueee_yt | 2:2ba00be13585 | 325 | strcat(_soap_text , "</value>"); |
yueee_yt | 2:2ba00be13585 | 326 | strcat(_soap_text , "</point>"); |
yueee_yt | 0:d34a9148b19e | 327 | } |
yueee_yt | 2:2ba00be13585 | 328 | strcat(_soap_text , _soap_footer); |
yueee_yt | 0:d34a9148b19e | 329 | if (debug_mode) { |
yueee_yt | 0:d34a9148b19e | 330 | printf(_soap_text); |
yueee_yt | 0:d34a9148b19e | 331 | printf("<<< Request(end)\n"); |
yueee_yt | 0:d34a9148b19e | 332 | } |
yueee_yt | 2:2ba00be13585 | 333 | // http.setRequestHeader("Content-Type","text/xml; charset=UTF-8"); |
yueee_yt | 2:2ba00be13585 | 334 | // http.setRequestHeader("SOAPAction","\"http://soap.fiap.org/data\""); |
yueee_yt | 0:d34a9148b19e | 335 | // InData=new HTTPText(); |
yueee_yt | 2:2ba00be13585 | 336 | HTTPText InData(_soap_text); |
yueee_yt | 2:2ba00be13585 | 337 | HTTPText OutData(str,800); |
yueee_yt | 2:2ba00be13585 | 338 | HTTPResult r = http.postXML(_fiap_storage,"http://soap.fiap.org/data",InData,&OutData); |
yueee_yt | 3:7b144e1a52db | 339 | if(!r) { |
yueee_yt | 3:7b144e1a52db | 340 | if (debug_mode)printf("Success \n"); |
yueee_yt | 3:7b144e1a52db | 341 | } else { |
yueee_yt | 3:7b144e1a52db | 342 | if (r==HTTP_PROCESSING) { |
yueee_yt | 3:7b144e1a52db | 343 | if (debug_mode)printf("Processing \n"); |
yueee_yt | 3:7b144e1a52db | 344 | return -1; |
yueee_yt | 3:7b144e1a52db | 345 | } |
yueee_yt | 3:7b144e1a52db | 346 | if (r==HTTP_PARSE) { |
yueee_yt | 3:7b144e1a52db | 347 | if (debug_mode) printf("URI Parse error \n"); |
yueee_yt | 3:7b144e1a52db | 348 | return -1; |
yueee_yt | 3:7b144e1a52db | 349 | } |
yueee_yt | 3:7b144e1a52db | 350 | if (r==HTTP_DNS) { |
yueee_yt | 3:7b144e1a52db | 351 | if (debug_mode) printf("Could not resolve name\n"); |
yueee_yt | 3:7b144e1a52db | 352 | return -1; |
yueee_yt | 3:7b144e1a52db | 353 | } |
yueee_yt | 3:7b144e1a52db | 354 | if (r==HTTP_PRTCL) { |
yueee_yt | 3:7b144e1a52db | 355 | if (debug_mode)printf("Protocol error\n"); |
yueee_yt | 3:7b144e1a52db | 356 | return -1; |
yueee_yt | 3:7b144e1a52db | 357 | } |
yueee_yt | 3:7b144e1a52db | 358 | if (r==HTTP_NOTFOUND) { |
yueee_yt | 3:7b144e1a52db | 359 | if (debug_mode)printf("HTTP 404 Error\n"); |
yueee_yt | 3:7b144e1a52db | 360 | return -1; |
yueee_yt | 3:7b144e1a52db | 361 | } |
yueee_yt | 3:7b144e1a52db | 362 | if (r==HTTP_REFUSED) { |
yueee_yt | 3:7b144e1a52db | 363 | if (debug_mode) printf("HTTP 403 Error \n"); |
yueee_yt | 3:7b144e1a52db | 364 | return -1; |
yueee_yt | 3:7b144e1a52db | 365 | } |
yueee_yt | 3:7b144e1a52db | 366 | if (r==HTTP_ERROR) { |
yueee_yt | 3:7b144e1a52db | 367 | if (debug_mode)printf("HTTP xxx error \n"); |
yueee_yt | 3:7b144e1a52db | 368 | return -1; |
yueee_yt | 3:7b144e1a52db | 369 | } |
yueee_yt | 3:7b144e1a52db | 370 | if (r==HTTP_TIMEOUT) { |
yueee_yt | 3:7b144e1a52db | 371 | if (debug_mode)printf("Connection timeout\n"); |
yueee_yt | 3:7b144e1a52db | 372 | return -1; |
yueee_yt | 3:7b144e1a52db | 373 | } |
yueee_yt | 3:7b144e1a52db | 374 | if (r==HTTP_CONN) { |
yueee_yt | 3:7b144e1a52db | 375 | if (debug_mode)printf("Connection error\n"); |
yueee_yt | 3:7b144e1a52db | 376 | return -1; |
yueee_yt | 3:7b144e1a52db | 377 | } |
yueee_yt | 0:d34a9148b19e | 378 | } |
yueee_yt | 0:d34a9148b19e | 379 | return 0; |
yueee_yt | 0:d34a9148b19e | 380 | } |