IEEE1888(FIAP)のライブラリです まだWRITEプロトコルしかサポートしていません。 EthernetNetIf,HTTPClientライブラリが必要です。

Committer:
yueee_yt
Date:
Sun Jan 01 14:31:16 2012 +0000
Revision:
0:819284d7b7d9

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
yueee_yt 0:819284d7b7d9 1 #include "fiap.h"
yueee_yt 0:819284d7b7d9 2 #include "mbed.h"
yueee_yt 0:819284d7b7d9 3 FIAP::FIAP(string Storage,string PointSetId) {
yueee_yt 0:819284d7b7d9 4 debug_mode=false;
yueee_yt 0:819284d7b7d9 5 _fiap_storage=Storage;
yueee_yt 0:819284d7b7d9 6 _fiap_id_prefix=PointSetId;
yueee_yt 0:819284d7b7d9 7
yueee_yt 0:819284d7b7d9 8 _soap_header ="<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
yueee_yt 0:819284d7b7d9 9 _soap_header += "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\">";
yueee_yt 0:819284d7b7d9 10 _soap_header += "<soapenv:Body>";
yueee_yt 0:819284d7b7d9 11 _soap_header += "<ns2:dataRQ xmlns:ns2=\"http://soap.fiap.org/\">";
yueee_yt 0:819284d7b7d9 12 _soap_header += "<transport xmlns=\"http://gutp.jp/fiap/2009/11/\">";
yueee_yt 0:819284d7b7d9 13 _soap_header += "<body>";
yueee_yt 0:819284d7b7d9 14 _soap_header += "<pointSet id=\"" + _fiap_id_prefix +"\">";
yueee_yt 0:819284d7b7d9 15
yueee_yt 0:819284d7b7d9 16 _soap_footer ="</pointSet>";
yueee_yt 0:819284d7b7d9 17 _soap_footer+="</body>";
yueee_yt 0:819284d7b7d9 18 _soap_footer+="</transport>";
yueee_yt 0:819284d7b7d9 19 _soap_footer+="</ns2:dataRQ>";
yueee_yt 0:819284d7b7d9 20 _soap_footer+="</soapenv:Body>";
yueee_yt 0:819284d7b7d9 21 _soap_footer+="</soapenv:Envelope>";
yueee_yt 0:819284d7b7d9 22 _soap_footer+="\r\n\r\n";
yueee_yt 0:819284d7b7d9 23 }
yueee_yt 0:819284d7b7d9 24
yueee_yt 0:819284d7b7d9 25 int FIAP::post(struct fiap_element* v, unsigned int esize) {
yueee_yt 0:819284d7b7d9 26 HTTPClient http;
yueee_yt 0:819284d7b7d9 27 int i;
yueee_yt 0:819284d7b7d9 28 char requestBuffer[50];
yueee_yt 0:819284d7b7d9 29 string _date_time;
yueee_yt 0:819284d7b7d9 30 string _soap_text=_soap_header;
yueee_yt 0:819284d7b7d9 31 for (i=0; i<esize; i++) {
yueee_yt 0:819284d7b7d9 32 strftime(&requestBuffer[0],50,"%Y-%m-%dT%H:%M:%S.0000000",v[i].t);
yueee_yt 0:819284d7b7d9 33 _soap_text += "<point id=\"";
yueee_yt 0:819284d7b7d9 34 _soap_text += _fiap_id_prefix;
yueee_yt 0:819284d7b7d9 35 _soap_text += v[i].cid;
yueee_yt 0:819284d7b7d9 36 _soap_text += "\">";
yueee_yt 0:819284d7b7d9 37 _soap_text += "<value time=\"";
yueee_yt 0:819284d7b7d9 38 _soap_text += requestBuffer;
yueee_yt 0:819284d7b7d9 39 _soap_text += v[i].timezone;
yueee_yt 0:819284d7b7d9 40 _soap_text += "\">";
yueee_yt 0:819284d7b7d9 41 _soap_text += v[i].value;
yueee_yt 0:819284d7b7d9 42 _soap_text += "</value>";
yueee_yt 0:819284d7b7d9 43 _soap_text += "</point>";
yueee_yt 0:819284d7b7d9 44 }
yueee_yt 0:819284d7b7d9 45 _soap_text += _soap_footer;
yueee_yt 0:819284d7b7d9 46 if(debug_mode){
yueee_yt 0:819284d7b7d9 47 printf(_soap_text.c_str());
yueee_yt 0:819284d7b7d9 48 printf("<<< Request(end)\n");
yueee_yt 0:819284d7b7d9 49 }
yueee_yt 0:819284d7b7d9 50 http.setRequestHeader("Content-Type","text/xml; charset=UTF-8");
yueee_yt 0:819284d7b7d9 51 http.setRequestHeader("SOAPAction","\"http://soap.fiap.org/data\"");
yueee_yt 0:819284d7b7d9 52 HTTPText InData;
yueee_yt 0:819284d7b7d9 53 InData.set(_soap_text.c_str());
yueee_yt 0:819284d7b7d9 54 HTTPText OutData;
yueee_yt 0:819284d7b7d9 55 HTTPResult r = http.post(_fiap_storage.c_str(),InData,&OutData);
yueee_yt 0:819284d7b7d9 56 if (r==HTTP_PROCESSING) {
yueee_yt 0:819284d7b7d9 57 if (debug_mode)printf("Processing \n");
yueee_yt 0:819284d7b7d9 58 return -1;
yueee_yt 0:819284d7b7d9 59 }
yueee_yt 0:819284d7b7d9 60 if (r==HTTP_PARSE) {
yueee_yt 0:819284d7b7d9 61 if (debug_mode) printf("URI Parse error \n");
yueee_yt 0:819284d7b7d9 62 return -1;
yueee_yt 0:819284d7b7d9 63 }
yueee_yt 0:819284d7b7d9 64 if (r==HTTP_DNS) {
yueee_yt 0:819284d7b7d9 65 if (debug_mode) printf("Could not resolve name\n");
yueee_yt 0:819284d7b7d9 66 return -1;
yueee_yt 0:819284d7b7d9 67 }
yueee_yt 0:819284d7b7d9 68 if (r==HTTP_PRTCL) {
yueee_yt 0:819284d7b7d9 69 if (debug_mode)printf("Protocol error\n");
yueee_yt 0:819284d7b7d9 70 return -1;
yueee_yt 0:819284d7b7d9 71 }
yueee_yt 0:819284d7b7d9 72 if (r==HTTP_NOTFOUND) {
yueee_yt 0:819284d7b7d9 73 if (debug_mode)printf("HTTP 404 Error\n");
yueee_yt 0:819284d7b7d9 74 return -1;
yueee_yt 0:819284d7b7d9 75 }
yueee_yt 0:819284d7b7d9 76 if (r==HTTP_REFUSED) {
yueee_yt 0:819284d7b7d9 77 if (debug_mode) printf("HTTP 403 Error \n");
yueee_yt 0:819284d7b7d9 78 return -1;
yueee_yt 0:819284d7b7d9 79 }
yueee_yt 0:819284d7b7d9 80 if (r==HTTP_ERROR) {
yueee_yt 0:819284d7b7d9 81 if (debug_mode)printf("HTTP xxx error \n");
yueee_yt 0:819284d7b7d9 82 return -1;
yueee_yt 0:819284d7b7d9 83 }
yueee_yt 0:819284d7b7d9 84 if (r==HTTP_TIMEOUT) {
yueee_yt 0:819284d7b7d9 85 if (debug_mode)printf("Connection timeout\n");
yueee_yt 0:819284d7b7d9 86 return -1;
yueee_yt 0:819284d7b7d9 87 }
yueee_yt 0:819284d7b7d9 88 if (r==HTTP_CONN) {
yueee_yt 0:819284d7b7d9 89 if (debug_mode)printf("Connection error\n");
yueee_yt 0:819284d7b7d9 90 return -1;
yueee_yt 0:819284d7b7d9 91 }
yueee_yt 0:819284d7b7d9 92
yueee_yt 0:819284d7b7d9 93 return 0;
yueee_yt 0:819284d7b7d9 94 }