FIAP (IEEE1888) library

Dependents:   Fetch_IEEE1888_Storage IEEE1888_MULTI_SENSOR_GW

Fork of FiapV2 by Yasushi TAUCHI

Committer:
yueee_yt
Date:
Mon Aug 20 11:50:07 2012 +0000
Revision:
2:2ba00be13585
Parent:
1:87095f0753a9
Child:
9:02ae92c06e52
fixed
;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
yueee_yt 0:d34a9148b19e 1 // IEEE1888 / FIAP Uploader Library for Arduino
yueee_yt 0:d34a9148b19e 2 //
yueee_yt 0:d34a9148b19e 3 // 2011/09/19 ver.1 H.Inoue & H.Ochiai
yueee_yt 0:d34a9148b19e 4 // 2011/12/31 Ver.1 for mbed Y.Tauchi
yueee_yt 0:d34a9148b19e 5
yueee_yt 0:d34a9148b19e 6 // --------- FIAP.h ---------
yueee_yt 0:d34a9148b19e 7 #ifndef MBED_FIAP_H
yueee_yt 0:d34a9148b19e 8 #define MBED_FIAP_H
yueee_yt 0:d34a9148b19e 9
yueee_yt 0:d34a9148b19e 10 #include "mbed.h"
yueee_yt 0:d34a9148b19e 11 #include "HTTPClient.h"
yueee_yt 0:d34a9148b19e 12
yueee_yt 0:d34a9148b19e 13 // return code of post method
yueee_yt 0:d34a9148b19e 14 #define FIAP_UPLOAD_OK 0 // Succeeded
yueee_yt 0:d34a9148b19e 15 #define FIAP_UPLOAD_CONNFAIL 1 // Connection faild (Socket I/O error)
yueee_yt 0:d34a9148b19e 16 #define FIAP_UPLOAD_DNSERR 2 // DNS error
yueee_yt 0:d34a9148b19e 17 #define FIAP_UPLOAD_HTTPERR 3 // HTTP Server error (The response was not "200 OK")
yueee_yt 0:d34a9148b19e 18 #define FIAP_UPLOAD_FIAPERR 4 // FIAP Server error
yueee_yt 0:d34a9148b19e 19
yueee_yt 0:d34a9148b19e 20 // point element
yueee_yt 0:d34a9148b19e 21
yueee_yt 0:d34a9148b19e 22 /** fiap_element
yueee_yt 0:d34a9148b19e 23 *
yueee_yt 2:2ba00be13585 24 *@param const char* cid Point ID
yueee_yt 2:2ba00be13585 25 *@param char* value data
yueee_yt 2:2ba00be13585 26 *@param uint16_t year
yueee_yt 2:2ba00be13585 27 *@param uint8_t month 1-12
yueee_yt 2:2ba00be13585 28 *@param uint8_t day 1-31
yueee_yt 2:2ba00be13585 29 *@param uint8_t hour 0-23
yueee_yt 2:2ba00be13585 30 *@param uint8_t minute 0-59
yueee_yt 2:2ba00be13585 31 *@param uint8_t second 0-59
yueee_yt 2:2ba00be13585 32 *@param char* timezone Timezone ie JST="+09:00"
yueee_yt 0:d34a9148b19e 33 */
yueee_yt 0:d34a9148b19e 34 struct fiap_element {
yueee_yt 0:d34a9148b19e 35 const char* cid; // Set PointID
yueee_yt 0:d34a9148b19e 36 char* value; // Set Value
yueee_yt 0:d34a9148b19e 37 uint16_t year; // Year
yueee_yt 0:d34a9148b19e 38 uint8_t month; // Month 1 - 12
yueee_yt 0:d34a9148b19e 39 uint8_t day; // Day 1 - 31
yueee_yt 0:d34a9148b19e 40 uint8_t hour; // Hour 0 - 23
yueee_yt 0:d34a9148b19e 41 uint8_t minute; // Minute 0 - 59
yueee_yt 0:d34a9148b19e 42 uint8_t second; // Second 0 - 59
yueee_yt 0:d34a9148b19e 43 //struct tm *t; // Set DateTime
yueee_yt 0:d34a9148b19e 44 char* timezone; // Set Timezon JST="+09:00"
yueee_yt 0:d34a9148b19e 45 };
yueee_yt 0:d34a9148b19e 46
yueee_yt 0:d34a9148b19e 47 /** FIAP Class
yueee_yt 0:d34a9148b19e 48 *
yueee_yt 0:d34a9148b19e 49 * for mbed
yueee_yt 0:d34a9148b19e 50 *
yueee_yt 0:d34a9148b19e 51 *Example:
yueee_yt 0:d34a9148b19e 52 *@code
yueee_yt 0:d34a9148b19e 53 * #include "mbed.h"
yueee_yt 0:d34a9148b19e 54 * #include "EthernetNetIf.h"
yueee_yt 0:d34a9148b19e 55 * #include "NTPClient.h"
yueee_yt 0:d34a9148b19e 56 * #include "fiap.h"
yueee_yt 0:d34a9148b19e 57 *
yueee_yt 0:d34a9148b19e 58 * #define ntp_server "ntp server address"
yueee_yt 0:d34a9148b19e 59 *
yueee_yt 0:d34a9148b19e 60 * DigitalOut led1(LED1);
yueee_yt 0:d34a9148b19e 61 * DigitalOut led2(LED2);
yueee_yt 0:d34a9148b19e 62 * DigitalOut led3(LED3);
yueee_yt 0:d34a9148b19e 63 * DigitalOut led4(LED4);
yueee_yt 0:d34a9148b19e 64 *
yueee_yt 0:d34a9148b19e 65 * EthernetNetIf eth;
yueee_yt 0:d34a9148b19e 66 * NTPClient ntp;
yueee_yt 0:d34a9148b19e 67 * FIAP ieee1888("http://192.168.1.5/axis2/services/FIAPStorage","http://test.fiap.org/mbed_hello/");
yueee_yt 0:d34a9148b19e 68 *
yueee_yt 0:d34a9148b19e 69 * char timezone[] = "+09:00"; // JST
yueee_yt 0:d34a9148b19e 70 *
yueee_yt 0:d34a9148b19e 71 * struct fiap_element element[]={
yueee_yt 0:d34a9148b19e 72 * {"P1",NULL,NULL,timezone},
yueee_yt 0:d34a9148b19e 73 * {"P2",NULL,NULL,timezone},
yueee_yt 0:d34a9148b19e 74 * };
yueee_yt 0:d34a9148b19e 75 *
yueee_yt 0:d34a9148b19e 76 * int main() {
yueee_yt 0:d34a9148b19e 77 * led1=led2=led3=led4=0;
yueee_yt 0:d34a9148b19e 78 * ieee1888.debug_mode=true;
yueee_yt 0:d34a9148b19e 79 * //EthernetNetIf initialize
yueee_yt 0:d34a9148b19e 80 * EthernetErr ethErr = eth.setup();
yueee_yt 0:d34a9148b19e 81 * if (ethErr) {
yueee_yt 0:d34a9148b19e 82 * // lcd.locate(0,1);
yueee_yt 0:d34a9148b19e 83 * // lcd.printf("Error %d in setup.\n", ethErr);
yueee_yt 0:d34a9148b19e 84 * return -1;
yueee_yt 0:d34a9148b19e 85 * }
yueee_yt 0:d34a9148b19e 86 * led1=1;
yueee_yt 0:d34a9148b19e 87 * //NTPClient initia,lize
yueee_yt 0:d34a9148b19e 88 * Host server(IpAddr(), 123, ntp_server);
yueee_yt 0:d34a9148b19e 89 * NTPResult Ntpr=ntp.setTime(server);
yueee_yt 0:d34a9148b19e 90 * //UTC-->JST +9Hour(32400Sec)
yueee_yt 0:d34a9148b19e 91 * time_t ctTime;
yueee_yt 0:d34a9148b19e 92 * ctTime = time(NULL);
yueee_yt 0:d34a9148b19e 93 * ctTime+=32400;
yueee_yt 0:d34a9148b19e 94 * set_time(ctTime);
yueee_yt 0:d34a9148b19e 95 * led2=1;
yueee_yt 0:d34a9148b19e 96 *
yueee_yt 0:d34a9148b19e 97 * //post
yueee_yt 0:d34a9148b19e 98 * int i,j;
yueee_yt 0:d34a9148b19e 99 * for (j=0; j<10; j++) {
yueee_yt 0:d34a9148b19e 100 * //data initialize
yueee_yt 0:d34a9148b19e 101 * time_t seconds = time(NULL);
yueee_yt 0:d34a9148b19e 102 * for (i=0; i<2; i++) {
yueee_yt 0:d34a9148b19e 103 * char data[5];
yueee_yt 0:d34a9148b19e 104 * int s=j*pow((double)10,i);
yueee_yt 0:d34a9148b19e 105 * sprintf(data,"%03d",s);
yueee_yt 0:d34a9148b19e 106 * element[i].value=data;
yueee_yt 0:d34a9148b19e 107 * element[i].t=localtime(&seconds);
yueee_yt 0:d34a9148b19e 108 * }
yueee_yt 0:d34a9148b19e 109 * //do post
yueee_yt 0:d34a9148b19e 110 * int ret=ieee1888.post(element,2);
yueee_yt 0:d34a9148b19e 111 * if(ret!=0){
yueee_yt 0:d34a9148b19e 112 * while (1) {
yueee_yt 0:d34a9148b19e 113 * led3=!led3;
yueee_yt 0:d34a9148b19e 114 * wait(0.5);
yueee_yt 0:d34a9148b19e 115 * }
yueee_yt 0:d34a9148b19e 116 * return 0;
yueee_yt 0:d34a9148b19e 117 * }
yueee_yt 0:d34a9148b19e 118 * wait(1);
yueee_yt 0:d34a9148b19e 119 * }
yueee_yt 0:d34a9148b19e 120 * //finish
yueee_yt 0:d34a9148b19e 121 * while (1) {
yueee_yt 0:d34a9148b19e 122 * led4=!led4;
yueee_yt 0:d34a9148b19e 123 * wait(0.5);
yueee_yt 0:d34a9148b19e 124 * }
yueee_yt 0:d34a9148b19e 125 * }
yueee_yt 0:d34a9148b19e 126 *@endcode
yueee_yt 0:d34a9148b19e 127 */
yueee_yt 0:d34a9148b19e 128 class FIAP {
yueee_yt 0:d34a9148b19e 129 public:
yueee_yt 0:d34a9148b19e 130 /** Create fiap object(for WRITE)
yueee_yt 0:d34a9148b19e 131 * @param Storage FIAP Storage Addrees (ie. "http://fiap.org/axis2/services/FIAPStorage")
yueee_yt 0:d34a9148b19e 132 * @param PointSetId Point Set ID(ie. http://test.fiap.jp/bldg_1/3F/)
yueee_yt 0:d34a9148b19e 133 */
yueee_yt 0:d34a9148b19e 134 FIAP(char Storage[],char PointSetId[]);
yueee_yt 0:d34a9148b19e 135 /** Create fiap object(for FETCH)
yueee_yt 0:d34a9148b19e 136 * @param Storage FIAP Storage Addrees (ie. "http://fiap.org/axis2/services/FIAPStorage")
yueee_yt 0:d34a9148b19e 137 */
yueee_yt 0:d34a9148b19e 138 FIAP(char Storage[]);
yueee_yt 0:d34a9148b19e 139
yueee_yt 0:d34a9148b19e 140 /** post
yueee_yt 0:d34a9148b19e 141 * @param v data vaule
yueee_yt 0:d34a9148b19e 142 * @param esize number of data
yueee_yt 0:d34a9148b19e 143 */
yueee_yt 0:d34a9148b19e 144 int post(struct fiap_element* v, unsigned int esize);
yueee_yt 0:d34a9148b19e 145
yueee_yt 0:d34a9148b19e 146 /** fetch_maximum
yueee_yt 0:d34a9148b19e 147 * @param cid Point ID s
yueee_yt 0:d34a9148b19e 148 * @param v Return Values
yueee_yt 0:d34a9148b19e 149 * @param esize <=2
yueee_yt 0:d34a9148b19e 150 * @return network_error
yueee_yt 0:d34a9148b19e 151 */
yueee_yt 0:d34a9148b19e 152 int fetch_last_data(struct fiap_element* v,unsigned int esize);
yueee_yt 0:d34a9148b19e 153 int fetch_last_data(struct fiap_element * v);
yueee_yt 0:d34a9148b19e 154
yueee_yt 0:d34a9148b19e 155 /** debug_mode
yueee_yt 0:d34a9148b19e 156 * Output XML and Error
yueee_yt 0:d34a9148b19e 157 */
yueee_yt 0:d34a9148b19e 158 bool debug_mode;
yueee_yt 0:d34a9148b19e 159
yueee_yt 0:d34a9148b19e 160 private:
yueee_yt 0:d34a9148b19e 161 char _fiap_storage[100];
yueee_yt 0:d34a9148b19e 162 char _fiap_id_prefix[100];
yueee_yt 0:d34a9148b19e 163 char _soap_header[256];
yueee_yt 0:d34a9148b19e 164 char _soap_footer[256];
yueee_yt 0:d34a9148b19e 165 char _soap_action[100];
yueee_yt 2:2ba00be13585 166 void post_xml_initialize(void);
yueee_yt 2:2ba00be13585 167 void fetch_xml_initialize(void);
yueee_yt 0:d34a9148b19e 168 };
yueee_yt 0:d34a9148b19e 169
yueee_yt 0:d34a9148b19e 170 #endif