Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: temp_FIAP temp_FIAP_fetch tepco_demand BlueUSB_f_IEEE1888 ... more
Revision 2:2ba00be13585, committed 2012-08-20
- Comitter:
- yueee_yt
- Date:
- Mon Aug 20 11:50:07 2012 +0000
- Parent:
- 1:87095f0753a9
- Child:
- 3:7b144e1a52db
- Commit message:
- fixed
;
Changed in this revision
| fiap.cpp | Show annotated file Show diff for this revision Revisions of this file |
| fiap.h | Show annotated file Show diff for this revision Revisions of this file |
--- a/fiap.cpp Mon Aug 20 02:20:35 2012 +0000
+++ b/fiap.cpp Mon Aug 20 11:50:07 2012 +0000
@@ -5,59 +5,43 @@
#include "spxmlnode.hpp"
#include "spxmlhandle.hpp"
-char outBuffer[1500+1]={0};
-// HTTPClient http;
-
-//HTTPText InData("text/html", 800);
-// HTTPStream stream;
-
+char outBuffer[1500+1]= {0};
char _soap_text[800];
char uuid[37];
+// HTTPClient http;
+// HTTPText InData("text/html", 800);
+// HTTPStream stream;
//char str[50];
//int yy,mo,dd,hh,mm,ss;
//char requestBuffer[50];
//int i,ii,ll;
//HTTPResult r;
//FIAP::FIAP(string Storage,string PointSetId) {
-FIAP::FIAP(char Storage[],char PointSetId[]) {
- debug_mode=false;
- strcpy(_fiap_storage,Storage);
- strcpy(_fiap_id_prefix,PointSetId);
+void FIAP::post_xml_initialize(void)
+{
strcpy(_soap_header,"<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
- strcat(_soap_header ,"<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\">");
- strcat(_soap_header , "<soapenv:Body>");
- strcat(_soap_header , "<ns2:dataRQ xmlns:ns2=\"http://soap.fiap.org/\">");
- strcat(_soap_header , "<transport xmlns=\"http://gutp.jp/fiap/2009/11/\">");
- strcat(_soap_header , "<body>");
- strcat(_soap_header , "<pointSet id=\"");
- strcat(_soap_header , _fiap_id_prefix);
- strcat(_soap_header , "\">");
-
- strcpy(_soap_footer,"</pointSet>");
- strcat(_soap_footer ,"</body>");
- strcat(_soap_footer ,"</transport>");
+ strcat(_soap_header,"<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\">");
+ strcat(_soap_header,"<soapenv:Body>");
+ strcat(_soap_header,"<ns2:dataRQ xmlns:ns2=\"http://soap.fiap.org/\">");
+ strcat(_soap_header,"<transport xmlns=\"http://gutp.jp/fiap/2009/11/\">");
+ strcat(_soap_header,"<body>");
+ strcpy(_soap_footer,"</body>");
+ strcat(_soap_footer,"</transport>");
strcat(_soap_footer,"</ns2:dataRQ>");
strcat(_soap_footer,"</soapenv:Body>");
strcat(_soap_footer,"</soapenv:Envelope>");
strcat(_soap_footer,"\r\n\r\n");
-
strcpy(_soap_action,"\"http://soap.fiap.org/data\"");
}
-
-FIAP::FIAP(char Storage[]) {
-//printf("start-fiap(fetch)\r\n");
- debug_mode=false;
- //printf(Storage);
- strcpy(_fiap_storage,Storage);
+void FIAP::fetch_xml_initialize(void)
+{
strcpy(_soap_header,"<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
- strcat(_soap_header , "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\">");
- strcat(_soap_header , "<soapenv:Body>");
- strcat(_soap_header , "<ns2:queryRQ xmlns:ns2=\"http://soap.fiap.org/\">");
- strcat(_soap_header , "<transport xmlns=\"http://gutp.jp/fiap/2009/11/\">");
- strcat(_soap_header , "<header>");
-//printf("start-fiap(fetch)2\r\n");
-
+ strcat(_soap_header,"<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\">");
+ strcat(_soap_header,"<soapenv:Body>");
+ strcat(_soap_header,"<ns2:queryRQ xmlns:ns2=\"http://soap.fiap.org/\">");
+ strcat(_soap_header,"<transport xmlns=\"http://gutp.jp/fiap/2009/11/\">");
+ strcat(_soap_header,"<header>");
strcpy(_soap_footer,"</header>");
strcat(_soap_footer,"</transport>");
strcat(_soap_footer,"</ns2:queryRQ>");
@@ -65,19 +49,21 @@
strcat(_soap_footer,"</soapenv:Envelope>");
strcat(_soap_footer,"\r\n\r\n");
strcpy(_soap_action,"\"http://soap.fiap.org/query\"");
-// printf("start-fiap(fetch)-define-end\r\n");
}
-int FIAP::fetch_last_data(struct fiap_element* v,unsigned int esize) {
+FIAP::FIAP(char Storage[])
+{
+ debug_mode=false;
+ strcpy(_fiap_storage,Storage);
+}
+
+int FIAP::fetch_last_data(struct fiap_element* v,unsigned int esize)
+{
HTTPClient http;
int i,ii,ll;
- // char uuid[37];
- // char _soap_text[800];
+ fetch_xml_initialize();
strcpy( _soap_text, _soap_header);
-
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);
-//sprintf(uuid,"0a90f1fa-bdb4-48ff-87d3-661d2af6ff4c");
-
strcat( _soap_text , "<query id=\"");
strcat( _soap_text , uuid);
strcat( _soap_text , "\" type=\"storage\">");
@@ -94,151 +80,14 @@
printf(_soap_text);
printf("<<< Request(end)\n");
}
- http.setRequestHeader("Content-Type","text/xml; charset=UTF-8");
-// http.setRequestHeader("SOAPAction","query");
- http.setRequestHeader("SOAPAction","\"http://soap.fiap.org/query\"");
- HTTPText InData("text/html", 800);
- InData.set(_soap_text);
-// HTTPText OutData("text/html", 2048);
- HTTPStream stream;
- // char outBuffer[1500+1]={0};
- stream.readNext((byte*)outBuffer,1500);
-printf("post.start \n\r");
- // HTTPResult r = http.post(_fiap_storage,InData,&OutData);
- HTTPResult r = http.post(_fiap_storage,InData,&stream);
-printf("post.end \n\r");
- if (r==HTTP_PROCESSING) {
- if (debug_mode)printf("Processing \n");
- return -1;
- }
- if (r==HTTP_PARSE) {
- if (debug_mode) printf("URI Parse error \n");
- return -1;
- }
- if (r==HTTP_DNS) {
- if (debug_mode) printf("Could not resolve name\n");
- return -1;
- }
- if (r==HTTP_PRTCL) {
- if (debug_mode)printf("Protocol error\n");
- return -1;
- }
- if (r==HTTP_NOTFOUND) {
- if (debug_mode)printf("HTTP 404 Error\n");
- return -1;
- }
- if (r==HTTP_REFUSED) {
- if (debug_mode) printf("HTTP 403 Error \n");
- return -1;
- }
- if (r==HTTP_ERROR) {
- if (debug_mode)printf("HTTP xxx error %d \n ",r);
- return -1;
- }
- if (r==HTTP_TIMEOUT) {
- if (debug_mode)printf("Connection timeout\n");
- return -1;
- }
- if (r==HTTP_CONN) {
- if (debug_mode)printf("Connection error\n");
- return -1;
- }
- // printf("Responce(start)>>>\n");
- // printf(OutData.gets());
- // printf("<<< Response(end)\n");
- // return;
- SP_XmlNodeList * points;
- if (stream.readable()) {
- if (debug_mode)printf("\n\r data Get Ok\n\r");
- SP_XmlDomParser parser;
- outBuffer[stream.readLen()]=0;
- parser.append(outBuffer,strlen(outBuffer));
- //stream.readNext((byte*)outBuffer,4096);
- SP_XmlHandle rootHandle(parser.getDocument()->getRootElement());
- SP_XmlHandle transport = rootHandle.getChild(0).getChild(0).getChild(0);
- SP_XmlElementNode * fiapError = transport.getChild("header").getChild("error").toElement();
- int yy,mo,dd,hh,mm,ss;
-
- char str[50];
- printf ("%s \n",transport.toElement()->getName());
- if (fiapError==NULL) {
- SP_XmlElementNode * values =transport.getChild("body").toElement();
- points=(SP_XmlNodeList *)values->getChildren() ;
- // points=values->getChildren();
- int j=points->getLength();
- if (debug_mode) printf("GetValues of No %d \n\r",j);
- SP_XmlElementNode *data_point_node,*data_value_node;
- SP_XmlCDataNode *data_value_cnode;
- for (i=0; i<j; i++) {
- SP_XmlHandle data_handle(points->get(i));//Point
- data_point_node=data_handle.toElement();
- data_value_node=data_handle.getChild("value").toElement();
- data_value_cnode=data_handle.getChild("value").getChild(0).toCData();
- if (debug_mode) printf("PointID=%s \r\n",data_point_node->getAttrValue("id"));
- if (debug_mode) printf("date=%s \r\n",data_value_node->getAttrValue("time"));
- if (debug_mode) printf("data=%s \r\n",data_value_cnode->getText());
- //time_t second[50]={0};
- for (ii=0; ii<esize; ii++) {
- if (strcmp(v[ii].cid,data_point_node->getAttrValue("id"))==0) {
- sprintf(str,"%s",data_value_node->getAttrValue("time"));
- ll=sscanf(str,"%d-%d-%dT%d:%d:%d.",&yy,&mo,&dd,&hh,&mm,&ss);
- if (debug_mode)printf("date convert no %d (%d/%d/%d %d:%d:%d) \r\n",ll,yy,mo,dd,hh,mm,ss);
- v[ii].year=yy;
- v[ii].month=mo;
- v[ii].day=dd;
- v[ii].hour=hh;
- v[ii].minute=mm;
- v[ii].second=ss;
- sprintf(v[ii].value,"%s",data_value_cnode->getText());
- }
- }
- }
- } else {
- printf("ERROR\n\r");
- }
- } else {
- if (debug_mode)printf("error\n\r");
- }
-
- return 0;
-}
-int FIAP::fetch_last_data(struct fiap_element *v) {
- HTTPClient http;
- int ll;
- // char uuid[37];
- // char _soap_text[800];
- strcpy(_soap_text, _soap_header);
-
- 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);
-//sprintf(uuid,"0a90f1fa-bdb4-48ff-87d3-661d2af6ff4c");
- strcat(_soap_text , "<query id=\"");
- strcat(_soap_text , uuid);
- strcat(_soap_text , "\" type=\"storage\">");
- strcat(_soap_text , "<key id=\"");
- strcat(_soap_text , v->cid);
- strcat(_soap_text , "\" attrName=\"time\" select=\"maximum\"/>");
- strcat(_soap_text , "</query>");
- strcat(_soap_text , _soap_footer);
- if (debug_mode) {
- printf("\r\n");
- printf(_fiap_storage);
- printf("\r\n");
- printf(_soap_text);
- printf("<<< Request(end)\n");
- }
- http.setRequestHeader("Content-Type","text/xml; charset=UTF-8");
-// http.setRequestHeader("SOAPAction","query");
- http.setRequestHeader("SOAPAction","\"http://soap.fiap.org/query\"");
- HTTPText InData;
- InData.set(_soap_text);
- //HTTPText OutData("text/html", 2000);
- // HTTPText OutData;
- HTTPStream stream;
- // char outBuffer[1500+1];
- stream.readNext((byte*)outBuffer,strlen(outBuffer));
+ //HTTPText InData("text/html", 800);
+ //InData.set(_soap_text);
+ HTTPText InData(_soap_text);
+ char str[800];
+ HTTPText stream(str,800);
+ //stream.readNext((byte*)outBuffer,1500);
printf("post.start \n\r");
- //HTTPResult r = http.post(_fiap_storage,InData,&OutData);
- HTTPResult r = http.post(_fiap_storage,InData,&stream);
+ HTTPResult r = http.postXML(_fiap_storage,"http://soap.fiap.org/query",InData,&stream);
printf("post.end \n\r");
if (r==HTTP_PROCESSING) {
if (debug_mode)printf("Processing \n");
@@ -276,28 +125,138 @@
if (debug_mode)printf("Connection error\n");
return -1;
}
- // printf("Responce(start)>>>\n");
- // printf(OutData.gets());
- // printf("<<< Response(end)\n");
- // return;
-
SP_XmlNodeList * points;
- if (stream.readable()) {
+ if (strlen(str)>0) {
if (debug_mode)printf("\n\r data Get Ok\n\r");
SP_XmlDomParser parser;
- if (debug_mode)printf("stream readlen = %d \n\r",stream.readLen());
-
- outBuffer[stream.readLen()]=0;
- printf("check0\n\r");
- parser.append(outBuffer,strlen(outBuffer));
- printf("check1\n\r");
-
+ parser.append(str,strlen(str));
//stream.readNext((byte*)outBuffer,4096);
SP_XmlHandle rootHandle(parser.getDocument()->getRootElement());
SP_XmlHandle transport = rootHandle.getChild(0).getChild(0).getChild(0);
SP_XmlElementNode * fiapError = transport.getChild("header").getChild("error").toElement();
- int yy,mo,dd,hh,mm,ss;
+ int yy,mo,dd,hh,mm,ss;
+ char str[50];
+ printf ("%s \n",transport.toElement()->getName());
+ if (fiapError==NULL) {
+ SP_XmlElementNode * values =transport.getChild("body").toElement();
+ points=(SP_XmlNodeList *)values->getChildren() ;
+ int j=points->getLength();
+ if (debug_mode) printf("GetValues of No %d \n\r",j);
+ SP_XmlElementNode *data_point_node,*data_value_node;
+ SP_XmlCDataNode *data_value_cnode;
+ for (i=0; i<j; i++) {
+ SP_XmlHandle data_handle(points->get(i));//Point
+ data_point_node=data_handle.toElement();
+ data_value_node=data_handle.getChild("value").toElement();
+ data_value_cnode=data_handle.getChild("value").getChild(0).toCData();
+ if (debug_mode) printf("PointID=%s \r\n",data_point_node->getAttrValue("id"));
+ if (debug_mode) printf("date=%s \r\n",data_value_node->getAttrValue("time"));
+ if (debug_mode) printf("data=%s \r\n",data_value_cnode->getText());
+ //time_t second[50]={0};
+ for (ii=0; ii<esize; ii++) {
+ if (strcmp(v[ii].cid,data_point_node->getAttrValue("id"))==0) {
+ sprintf(str,"%s",data_value_node->getAttrValue("time"));
+ ll=sscanf(str,"%d-%d-%dT%d:%d:%d.",&yy,&mo,&dd,&hh,&mm,&ss);
+ if (debug_mode)printf("date convert no %d (%d/%d/%d %d:%d:%d) \r\n",ll,yy,mo,dd,hh,mm,ss);
+ v[ii].year=yy;
+ v[ii].month=mo;
+ v[ii].day=dd;
+ v[ii].hour=hh;
+ v[ii].minute=mm;
+ v[ii].second=ss;
+ sprintf(v[ii].value,"%s",data_value_cnode->getText());
+ }
+ }
+ }
+ } else {
+ printf("ERROR\n\r");
+ }
+ } else {
+ if (debug_mode)printf("error\n\r");
+ }
+ return 0;
+}
+int FIAP::fetch_last_data(struct fiap_element *v)
+{
+ HTTPClient http;
+ int ll;
+ char str[800];
+ fetch_xml_initialize();
+ strcpy(_soap_text, _soap_header);
+ 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);
+ strcat(_soap_text , "<query id=\"");
+ strcat(_soap_text , uuid);
+ strcat(_soap_text , "\" type=\"storage\">");
+ strcat(_soap_text , "<key id=\"");
+ strcat(_soap_text , v->cid);
+ strcat(_soap_text , "\" attrName=\"time\" select=\"maximum\"/>");
+ strcat(_soap_text , "</query>");
+ strcat(_soap_text , _soap_footer);
+ if (debug_mode) {
+ printf("\r\n");
+ printf(_fiap_storage);
+ printf("\r\n");
+ printf(_soap_text);
+ printf("<<< Request(end)\n");
+ }
+// http.setRequestHeader("Content-Type","text/xml; charset=UTF-8");
+// http.setRequestHeader("SOAPAction","\"http://soap.fiap.org/query\"");
+ HTTPText InData(_soap_text);
+ HTTPText stream(str,800);
+// stream.readNext((byte*)outBuffer,strlen(outBuffer));
+ printf("post.start \n\r");
+ HTTPResult r = http.postXML(_fiap_storage,"http://soap.fiap.org/query",InData,&stream);
+ printf("post.end \n\r");
+ if (r==HTTP_PROCESSING) {
+ if (debug_mode)printf("Processing \n");
+ return -1;
+ }
+ if (r==HTTP_PARSE) {
+ if (debug_mode) printf("URI Parse error \n");
+ return -1;
+ }
+ if (r==HTTP_DNS) {
+ if (debug_mode) printf("Could not resolve name\n");
+ return -1;
+ }
+ if (r==HTTP_PRTCL) {
+ if (debug_mode)printf("Protocol error\n");
+ return -1;
+ }
+ if (r==HTTP_NOTFOUND) {
+ if (debug_mode)printf("HTTP 404 Error\n");
+ return -1;
+ }
+ if (r==HTTP_REFUSED) {
+ if (debug_mode) printf("HTTP 403 Error \n");
+ return -1;
+ }
+ if (r==HTTP_ERROR) {
+ if (debug_mode)printf("HTTP xxx error %d \n ",r);
+ return -1;
+ }
+ if (r==HTTP_TIMEOUT) {
+ if (debug_mode)printf("Connection timeout\n");
+ return -1;
+ }
+ if (r==HTTP_CONN) {
+ if (debug_mode)printf("Connection error\n");
+ return -1;
+ }
+ SP_XmlNodeList * points;
+ if (strlen(str)>0) {
+ if (debug_mode)printf("\n\r data Get Ok\n\r");
+ SP_XmlDomParser parser;
+ // if (debug_mode)printf("stream readlen = %d \n\r",stream.readLen());
+ // outBuffer[stream.readLen()]=0;
+ printf("check0\n\r");
+ parser.append(str,strlen(str));
+ printf("check1\n\r");
+ SP_XmlHandle rootHandle(parser.getDocument()->getRootElement());
+ SP_XmlHandle transport = rootHandle.getChild(0).getChild(0).getChild(0);
+ SP_XmlElementNode * fiapError = transport.getChild("header").getChild("error").toElement();
+ int yy,mo,dd,hh,mm,ss;
char str[50];
printf ("%s \n\r",transport.toElement()->getName());
if (fiapError==NULL) {
@@ -331,43 +290,44 @@
} else {
if (debug_mode)printf("error\n\r");
}
-
return 0;
-
}
-int FIAP::post(struct fiap_element* v, unsigned int esize) {
+
+
+int FIAP::post(struct fiap_element* v, unsigned int esize)
+{
HTTPClient http;
int i;
+ char str[800];
char requestBuffer[50];
- // char _soap_text[800];
- strcpy(_soap_header,_soap_text);
+ post_xml_initialize();
+ strcpy(_soap_text,_soap_header);
for (i=0; i<esize; i++) {
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);
strcat(_soap_text , "<point id=\"");
strcat(_soap_text , _fiap_id_prefix);
- strcat( _soap_text , v[i].cid);
+ strcat(_soap_text , v[i].cid);
strcat( _soap_text, "\">");
- strcat( _soap_text , "<value time=\"");
- strcat( _soap_text , requestBuffer);
- strcat( _soap_text , v[i].timezone);
- strcat( _soap_text , "\">");
- strcat( _soap_text , v[i].value);
- strcat( _soap_text , "</value>");
- strcat( _soap_text , "</point>");
+ strcat(_soap_text , "<value time=\"");
+ strcat(_soap_text , requestBuffer);
+ strcat(_soap_text , v[i].timezone);
+ strcat(_soap_text , "\">");
+ strcat(_soap_text , v[i].value);
+ strcat(_soap_text , "</value>");
+ strcat(_soap_text , "</point>");
}
- strcat( _soap_text , _soap_footer);
+ strcat(_soap_text , _soap_footer);
if (debug_mode) {
printf(_soap_text);
printf("<<< Request(end)\n");
}
- http.setRequestHeader("Content-Type","text/xml; charset=UTF-8");
- http.setRequestHeader("SOAPAction","\"http://soap.fiap.org/data\"");
+// http.setRequestHeader("Content-Type","text/xml; charset=UTF-8");
+// http.setRequestHeader("SOAPAction","\"http://soap.fiap.org/data\"");
// InData=new HTTPText();
- HTTPText InData;
- InData.set(_soap_text);
- HTTPText OutData;
- HTTPResult r = http.post(_fiap_storage,InData,&OutData);
+ HTTPText InData(_soap_text);
+ HTTPText OutData(str,800);
+ HTTPResult r = http.postXML(_fiap_storage,"http://soap.fiap.org/data",InData,&OutData);
if (r==HTTP_PROCESSING) {
if (debug_mode)printf("Processing \n");
return -1;
@@ -404,6 +364,5 @@
if (debug_mode)printf("Connection error\n");
return -1;
}
-
return 0;
}
\ No newline at end of file
--- a/fiap.h Mon Aug 20 02:20:35 2012 +0000
+++ b/fiap.h Mon Aug 20 11:50:07 2012 +0000
@@ -21,15 +21,15 @@
/** fiap_element
*
- *@param const char* Point ID(cid)
- *@param char* Data(value)
- *@param uint16_t Year
- *@param uint8_t Month 1-12
- *@param uint8_t Day 1-31
- *@param uint8_t Hour 0-23
- *@param uint8_t Minute 0-59
- *@param uint8_t Second 0-59
- *@param timezone Timezone ie JST="+09:00"
+ *@param const char* cid Point ID
+ *@param char* value data
+ *@param uint16_t year
+ *@param uint8_t month 1-12
+ *@param uint8_t day 1-31
+ *@param uint8_t hour 0-23
+ *@param uint8_t minute 0-59
+ *@param uint8_t second 0-59
+ *@param char* timezone Timezone ie JST="+09:00"
*/
struct fiap_element {
const char* cid; // Set PointID
@@ -163,6 +163,8 @@
char _soap_header[256];
char _soap_footer[256];
char _soap_action[100];
+ void post_xml_initialize(void);
+ void fetch_xml_initialize(void);
};
#endif