FIAP (IEEE1888) library

Dependents:   Fetch_IEEE1888_Storage IEEE1888_MULTI_SENSOR_GW

Fork of FiapV2 by Yasushi TAUCHI

Committer:
yueee_yt
Date:
Mon Aug 20 00:40:00 2012 +0000
Revision:
0:d34a9148b19e
Child:
1:87095f0753a9
Ver2.0?beeta

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