Add ADC

Dependencies:   Adafruit_GFX MbedJSONValue_v102 WIZnetInterface mbed

Fork of WIZwiki-REST-io_v101 by Lawrence Lee

Committer:
joon874
Date:
Fri Jul 29 08:15:34 2016 +0000
Revision:
7:64db444b21f4
Parent:
6:2974bbc94e7a
Add ADC

Who changed what in which revision?

UserRevisionLine numberNew contents of line
joon874 0:5886f525a4ad 1 #include <stdio.h>
joon874 0:5886f525a4ad 2 #include <stdlib.h>
joon874 0:5886f525a4ad 3 #include <string.h>
joon874 0:5886f525a4ad 4 #include "RequestHandler.h"
joon874 0:5886f525a4ad 5 #include "MbedJSONValue.h"
joon874 0:5886f525a4ad 6
joon874 0:5886f525a4ad 7 extern MbedJSONValue WIZwikiREST;
joon874 0:5886f525a4ad 8
joon874 4:0b5a199e91f3 9 MbedJSONValue* pDataJson = 0;
joon874 4:0b5a199e91f3 10
joon874 4:0b5a199e91f3 11 void GetRequestHandler::handle(char* rest_uri, char* request_data, char *reply)
joon874 0:5886f525a4ad 12 {
joon874 0:5886f525a4ad 13 MbedJSONValue* tmpJson;
joon874 0:5886f525a4ad 14
joon874 0:5886f525a4ad 15 char* tok;
joon874 0:5886f525a4ad 16 char* last;
joon874 2:ca36ecca24c2 17 const char * pchar = 0;
joon874 2:ca36ecca24c2 18 #ifdef DEBUG_HTTPREQ
joon874 0:5886f525a4ad 19 printf("GetRequestHandler():%s\r\n",rest_uri);
joon874 2:ca36ecca24c2 20 #endif
joon874 4:0b5a199e91f3 21 if(!strcmp(rest_uri, "/")){
joon874 2:ca36ecca24c2 22 tmpJson = &WIZwikiREST;
joon874 0:5886f525a4ad 23 }
joon874 4:0b5a199e91f3 24 else{
joon874 4:0b5a199e91f3 25 tok = strtok_r(rest_uri+1, "/", &last);
joon874 0:5886f525a4ad 26 tmpJson = &WIZwikiREST;
joon874 2:ca36ecca24c2 27
joon874 2:ca36ecca24c2 28 char* name = 0;
joon874 2:ca36ecca24c2 29 while(tok)
joon874 2:ca36ecca24c2 30 {
joon874 2:ca36ecca24c2 31 #ifdef DEBUG_HTTPREQ
joon874 4:0b5a199e91f3 32 printf("tok = %s \r\n", tok);
joon874 2:ca36ecca24c2 33 #endif
joon874 4:0b5a199e91f3 34 if(tmpJson->hasMember(tok)){
joon874 2:ca36ecca24c2 35 tmpJson = &((*tmpJson)[tok]);
joon874 6:2974bbc94e7a 36 //if(!tmpJson->accessible) tmpJson->cb_action(tmpJson);
joon874 2:ca36ecca24c2 37 name = tok;
joon874 2:ca36ecca24c2 38 tok = strtok_r(0, "/", &last);
joon874 2:ca36ecca24c2 39 }
joon874 4:0b5a199e91f3 40 else{
joon874 6:2974bbc94e7a 41 #ifndef DEBUG_HTTPREQ
joon874 2:ca36ecca24c2 42 printf("No Member\r\n");
joon874 2:ca36ecca24c2 43 #endif
joon874 2:ca36ecca24c2 44 break;
joon874 2:ca36ecca24c2 45 }
joon874 2:ca36ecca24c2 46 }
joon874 4:0b5a199e91f3 47 if(name){
joon874 6:2974bbc94e7a 48 if(tok)
joon874 6:2974bbc94e7a 49 {
joon874 4:0b5a199e91f3 50 if(tmpJson->accessible){
joon874 2:ca36ecca24c2 51 #ifdef DEBUG_HTTPREQ
joon874 2:ca36ecca24c2 52 printf("accessible : tmpJson->size()=%d\r\n",tmpJson->size());
joon874 2:ca36ecca24c2 53 #endif
joon874 2:ca36ecca24c2 54
joon874 4:0b5a199e91f3 55 if(tmpJson->size() > 0){
joon874 2:ca36ecca24c2 56 *tmpJson = std::string(tok);
joon874 2:ca36ecca24c2 57 tmpJson->cb_action((void*)tok);
joon874 2:ca36ecca24c2 58 #ifdef DEBUG_HTTPREQ
joon874 2:ca36ecca24c2 59 printf("set string:%s\r\n",tok);
joon874 2:ca36ecca24c2 60 #endif
joon874 2:ca36ecca24c2 61 }
joon874 4:0b5a199e91f3 62 else{
joon874 2:ca36ecca24c2 63 *tmpJson = atoi(tok);
joon874 2:ca36ecca24c2 64 tmpJson->cb_action(&tmpJson->_value);
joon874 2:ca36ecca24c2 65 #ifdef DEBUG_HTTPREQ
joon874 2:ca36ecca24c2 66 printf("set int:%d\r\n",atoi(tok));
joon874 2:ca36ecca24c2 67 #endif
joon874 2:ca36ecca24c2 68 }
joon874 2:ca36ecca24c2 69 }
joon874 4:0b5a199e91f3 70 else{
joon874 2:ca36ecca24c2 71 strcpy (reply, "HTTP/1.1 403 OK\r\n");
joon874 2:ca36ecca24c2 72 strcat (reply, "Sever: WIZwiki-REST\r\n");
joon874 2:ca36ecca24c2 73 strcat (reply, "content-Type: text/json\r\n");
joon874 2:ca36ecca24c2 74 sprintf(reply + strlen(reply), "Content-Length: %d\r\n\r\n", 26+4);
joon874 2:ca36ecca24c2 75 strcat(reply, "{\"Result : No Accessible\"}");
joon874 2:ca36ecca24c2 76 strcat (reply, "\r\n\r\n");
joon874 2:ca36ecca24c2 77 return;
joon874 2:ca36ecca24c2 78 }
joon874 2:ca36ecca24c2 79 }
MidnightCow 1:728e5b5c8dae 80 }
joon874 4:0b5a199e91f3 81 else{
joon874 2:ca36ecca24c2 82 strcpy (reply, "HTTP/1.1 404 OK\r\n");
joon874 2:ca36ecca24c2 83 strcat (reply, "Sever: WIZwiki-REST\r\n");
joon874 2:ca36ecca24c2 84 strcat (reply, "content-Type: text/json\r\n");
joon874 2:ca36ecca24c2 85 sprintf(reply + strlen(reply), "Content-Length: %d\r\n\r\n", 33+4);
joon874 2:ca36ecca24c2 86 strcat(reply, "{\"Result\" : \"No defined Resource\"}");
joon874 2:ca36ecca24c2 87 strcat (reply, "\r\n\r\n");
joon874 2:ca36ecca24c2 88 return;
joon874 0:5886f525a4ad 89 }
MidnightCow 1:728e5b5c8dae 90 }
joon874 2:ca36ecca24c2 91 pchar = (*tmpJson).serialize().c_str();
joon874 2:ca36ecca24c2 92 strcpy (reply, "HTTP/1.1 200 OK\r\n");
joon874 2:ca36ecca24c2 93 strcat (reply, "Sever: WIZwiki-REST\r\n");
joon874 2:ca36ecca24c2 94 strcat (reply, "content-Type: text/json\r\n");
joon874 2:ca36ecca24c2 95 sprintf(reply + strlen(reply), "Content-Length: %d\r\n\r\n", strlen(pchar)+4);
joon874 2:ca36ecca24c2 96 strcat (reply, pchar);
joon874 2:ca36ecca24c2 97 strcat (reply, "\r\n\r\n");
joon874 2:ca36ecca24c2 98
MidnightCow 1:728e5b5c8dae 99 return;
joon874 0:5886f525a4ad 100 }
joon874 0:5886f525a4ad 101
joon874 4:0b5a199e91f3 102 void PostRequestHandler::handle(char* rest_uri, char* request_data, char *reply)
joon874 4:0b5a199e91f3 103 {
joon874 4:0b5a199e91f3 104 MbedJSONValue* tmpJson;
joon874 4:0b5a199e91f3 105 char* tok;
joon874 4:0b5a199e91f3 106 char* last;
joon874 4:0b5a199e91f3 107 int errnum = 200;
joon874 4:0b5a199e91f3 108
joon874 4:0b5a199e91f3 109 #ifdef DEBUG_HTTPREQ
joon874 4:0b5a199e91f3 110 printf("PostRequestHandler():%s\r\n",request_data+4);
joon874 4:0b5a199e91f3 111 #endif
joon874 4:0b5a199e91f3 112 if(!pDataJson){
joon874 4:0b5a199e91f3 113 pDataJson = new MbedJSONValue();
joon874 4:0b5a199e91f3 114 }
joon874 4:0b5a199e91f3 115 #ifdef DEBUG_HTTPREQ
joon874 4:0b5a199e91f3 116 printf("Before Parse\r\n");
joon874 4:0b5a199e91f3 117 debug_info();
joon874 4:0b5a199e91f3 118 #endif
joon874 4:0b5a199e91f3 119 parse(*pDataJson,(const char*)request_data);
joon874 4:0b5a199e91f3 120 #ifdef DEBUG_HTTPREQ
joon874 4:0b5a199e91f3 121 printf("After Parse\r\n");
joon874 4:0b5a199e91f3 122 debug_info();
joon874 4:0b5a199e91f3 123 printf("DataJson._type=%d\r\n",pDataJson->_type);
joon874 4:0b5a199e91f3 124 printf("DataJson=%s\r\n",pDataJson->serialize().c_str());
joon874 4:0b5a199e91f3 125 printf("DataJson.size()=%d\r\n",pDataJson->size());
joon874 4:0b5a199e91f3 126 printf("DataJason.type=%d\r\n",pDataJson->_type);
joon874 4:0b5a199e91f3 127 #endif
joon874 4:0b5a199e91f3 128
joon874 4:0b5a199e91f3 129 if(!strcmp(rest_uri, "/")){
joon874 4:0b5a199e91f3 130 tmpJson = &WIZwikiREST;
joon874 4:0b5a199e91f3 131 }
joon874 4:0b5a199e91f3 132 else{
joon874 4:0b5a199e91f3 133 tok = strtok_r(rest_uri+1, "/", &last);
joon874 4:0b5a199e91f3 134 tmpJson = &WIZwikiREST;
joon874 4:0b5a199e91f3 135
joon874 4:0b5a199e91f3 136 char* name = 0;
joon874 4:0b5a199e91f3 137 while(tok)
joon874 4:0b5a199e91f3 138 {
joon874 4:0b5a199e91f3 139 #ifdef DEBUG_HTTPREQ
joon874 4:0b5a199e91f3 140 printf("tok = %s \r\n", tok);
joon874 4:0b5a199e91f3 141 #endif
joon874 4:0b5a199e91f3 142 if(tmpJson->hasMember(tok)){
joon874 4:0b5a199e91f3 143 tmpJson = &((*tmpJson)[tok]);
joon874 4:0b5a199e91f3 144 name = tok;
joon874 4:0b5a199e91f3 145 tok = strtok_r(0, "/", &last);
joon874 4:0b5a199e91f3 146 }
joon874 4:0b5a199e91f3 147 else{
joon874 4:0b5a199e91f3 148 #ifdef DEBUG_HTTPREQ
joon874 4:0b5a199e91f3 149 printf("No Member\r\n");
joon874 4:0b5a199e91f3 150 #endif
joon874 4:0b5a199e91f3 151 break;
joon874 4:0b5a199e91f3 152 }
joon874 4:0b5a199e91f3 153 }
joon874 4:0b5a199e91f3 154 if(name){
joon874 4:0b5a199e91f3 155 #ifdef DEBUG_HTTPREQ
joon874 4:0b5a199e91f3 156 printf("Token_name=%s\r\n",name);
joon874 4:0b5a199e91f3 157 #endif
joon874 4:0b5a199e91f3 158 if(tok){
joon874 4:0b5a199e91f3 159 #ifdef DEBUG_HTTPREQ
joon874 4:0b5a199e91f3 160 printf("It should be no parameters : tok=%s\r\n",tok);
joon874 4:0b5a199e91f3 161 #endif
joon874 4:0b5a199e91f3 162 errnum = 403;
joon874 4:0b5a199e91f3 163 }
joon874 4:0b5a199e91f3 164 }
joon874 4:0b5a199e91f3 165 else{
joon874 4:0b5a199e91f3 166 errnum = 404;
joon874 4:0b5a199e91f3 167 }
joon874 4:0b5a199e91f3 168 }
joon874 4:0b5a199e91f3 169 if(errnum != 0){
joon874 4:0b5a199e91f3 170 switch(pDataJson->_type)
joon874 4:0b5a199e91f3 171 {
joon874 4:0b5a199e91f3 172 case MbedJSONValue::TypeInt:
joon874 4:0b5a199e91f3 173 if(tmpJson->accessible){
joon874 4:0b5a199e91f3 174 *tmpJson = pDataJson->_value.asInt;
joon874 4:0b5a199e91f3 175 tmpJson->cb_action(&tmpJson->_value);
joon874 4:0b5a199e91f3 176 #ifdef DEBUG_HTTPREQ
joon874 4:0b5a199e91f3 177 printf("set int:%d\r\n",atoi(tok));
joon874 4:0b5a199e91f3 178 #endif
joon874 4:0b5a199e91f3 179 }
joon874 4:0b5a199e91f3 180 else{
joon874 4:0b5a199e91f3 181 errnum = 403;
joon874 4:0b5a199e91f3 182 }
joon874 4:0b5a199e91f3 183 break;
joon874 4:0b5a199e91f3 184
joon874 4:0b5a199e91f3 185 case MbedJSONValue::TypeString:
joon874 4:0b5a199e91f3 186 if(tmpJson->accessible){
joon874 4:0b5a199e91f3 187 *tmpJson = pDataJson->_value.asString;
joon874 5:473a66ae9596 188 tmpJson->cb_action((void*)tmpJson->_value.asString->c_str());
joon874 4:0b5a199e91f3 189 }
joon874 4:0b5a199e91f3 190 else{
joon874 4:0b5a199e91f3 191 errnum = 403;
joon874 4:0b5a199e91f3 192 }
joon874 4:0b5a199e91f3 193 break;
joon874 4:0b5a199e91f3 194
joon874 4:0b5a199e91f3 195 case MbedJSONValue::TypeObject:
joon874 4:0b5a199e91f3 196 for(int i = 0; i < pDataJson->index_token; i++)
joon874 4:0b5a199e91f3 197 {
joon874 4:0b5a199e91f3 198 tok = (char*)pDataJson->token_name[i]->c_str();
joon874 4:0b5a199e91f3 199 #ifdef DEBUG_HTTPREQ
joon874 4:0b5a199e91f3 200 printf("pDataJson.token_name[%d]->c_str()=%s\r\n",i,tok);
joon874 4:0b5a199e91f3 201 #endif
joon874 4:0b5a199e91f3 202 if(tmpJson->hasMember(tok)){
joon874 4:0b5a199e91f3 203 if((*tmpJson)[tok].accessible){
joon874 4:0b5a199e91f3 204 errnum = 200;
joon874 4:0b5a199e91f3 205 if((*pDataJson)[i].size() > 0){
joon874 5:473a66ae9596 206 //(*tmpJson)[tok] = (*pDataJson)[i]._value.asString;
joon874 5:473a66ae9596 207 (*tmpJson)[tok] = (*pDataJson)[i]._value.asString->c_str();
joon874 5:473a66ae9596 208
joon874 5:473a66ae9596 209 //(*tmpJson)[tok].cb_action((void*)&((*pDataJson)[i]._value.asInt));
joon874 5:473a66ae9596 210 (*tmpJson)[tok].cb_action((void*)((*pDataJson)[i]._value.asString->c_str()));
joon874 4:0b5a199e91f3 211 #ifdef DEBUG_HTTPREQ
joon874 4:0b5a199e91f3 212 printf("String Updated: %s : %s\r\n", tok,(*tmpJson)[tok].get<std::string>().c_str());
joon874 4:0b5a199e91f3 213 #endif
joon874 4:0b5a199e91f3 214 }
joon874 4:0b5a199e91f3 215 else{
joon874 4:0b5a199e91f3 216 (*tmpJson)[tok] = (*pDataJson)[i]._value.asInt;
joon874 4:0b5a199e91f3 217 (*tmpJson)[tok].cb_action((void*)&((*pDataJson)[i]._value.asInt));
joon874 4:0b5a199e91f3 218 #ifdef DEBUG_HTTPREQ
joon874 4:0b5a199e91f3 219 printf("Int Updated: %s : %d\r\n", tok,(*tmpJson)[tok].get<int>());
joon874 4:0b5a199e91f3 220 #endif
joon874 4:0b5a199e91f3 221 }
joon874 4:0b5a199e91f3 222 }
joon874 4:0b5a199e91f3 223 else{
joon874 4:0b5a199e91f3 224 errnum = 403; break;
joon874 4:0b5a199e91f3 225 }
joon874 4:0b5a199e91f3 226 }
joon874 4:0b5a199e91f3 227 else{
joon874 4:0b5a199e91f3 228 errnum = 404; break;
joon874 4:0b5a199e91f3 229 }
joon874 4:0b5a199e91f3 230 }
joon874 4:0b5a199e91f3 231 break;
joon874 4:0b5a199e91f3 232
joon874 4:0b5a199e91f3 233 default:
joon874 4:0b5a199e91f3 234 errnum = 403; break;
joon874 4:0b5a199e91f3 235 }
joon874 4:0b5a199e91f3 236 }
joon874 4:0b5a199e91f3 237
joon874 4:0b5a199e91f3 238 switch(errnum)
joon874 4:0b5a199e91f3 239 {
joon874 4:0b5a199e91f3 240 case 403:
joon874 4:0b5a199e91f3 241 strcpy (reply, "HTTP/1.1 403 OK\r\n");
joon874 4:0b5a199e91f3 242 strcat (reply, "Sever: WIZwiki-REST\r\n");
joon874 4:0b5a199e91f3 243 strcat (reply, "content-Type: text/json\r\n");
joon874 4:0b5a199e91f3 244 sprintf(reply + strlen(reply), "Content-Length: %d\r\n\r\n", 26+4);
joon874 4:0b5a199e91f3 245 strcat(reply, "{\"Result : No Accessible\"}");
joon874 4:0b5a199e91f3 246 strcat (reply, "\r\n\r\n");
joon874 4:0b5a199e91f3 247 break;
joon874 4:0b5a199e91f3 248
joon874 4:0b5a199e91f3 249 case 404:
joon874 4:0b5a199e91f3 250 strcpy (reply, "HTTP/1.1 404 OK\r\n");
joon874 4:0b5a199e91f3 251 strcat (reply, "Sever: WIZwiki-REST\r\n");
joon874 4:0b5a199e91f3 252 strcat (reply, "content-Type: text/json\r\n");
joon874 4:0b5a199e91f3 253 sprintf(reply + strlen(reply), "Content-Length: %d\r\n\r\n", 33+4);
joon874 4:0b5a199e91f3 254 strcat(reply, "{\"Result\" : \"No defined Resource\"}");
joon874 4:0b5a199e91f3 255 strcat (reply, "\r\n\r\n");
joon874 4:0b5a199e91f3 256 break;
joon874 4:0b5a199e91f3 257
joon874 4:0b5a199e91f3 258 case 200:
joon874 4:0b5a199e91f3 259 strcpy (reply, "HTTP/1.1 200 OK\r\n");
joon874 4:0b5a199e91f3 260 strcat (reply, "Sever: WIZwiki-REST\r\n");
joon874 4:0b5a199e91f3 261 strcat (reply, "content-Type: text/json\r\n");
joon874 4:0b5a199e91f3 262 sprintf(reply + strlen(reply), "Content-Length: %d\r\n\r\n", 15+4);
joon874 4:0b5a199e91f3 263 strcat (reply, "{\"Result\":\"OK\"}");
joon874 4:0b5a199e91f3 264 strcat (reply, "\r\n\r\n");
joon874 4:0b5a199e91f3 265 break;
joon874 4:0b5a199e91f3 266 }
joon874 4:0b5a199e91f3 267
joon874 4:0b5a199e91f3 268 #ifdef DEBUG_HTTPREQ
joon874 4:0b5a199e91f3 269 printf("Before Delete\r\n");
joon874 4:0b5a199e91f3 270 debug_info();
joon874 4:0b5a199e91f3 271 #endif
joon874 4:0b5a199e91f3 272 if(pDataJson){
joon874 4:0b5a199e91f3 273 #ifdef DEBUG_HTTPREQ
joon874 4:0b5a199e91f3 274 printf("type;%d, pDataJson->index_token=%d\r\n",pDataJson->_type,pDataJson->index_token);
joon874 4:0b5a199e91f3 275 #endif
joon874 4:0b5a199e91f3 276 delete pDataJson;
joon874 4:0b5a199e91f3 277 pDataJson = 0;
joon874 4:0b5a199e91f3 278 }
joon874 4:0b5a199e91f3 279 #ifdef DEBUG_HTTPREQ
joon874 4:0b5a199e91f3 280 printf("After Delete\r\n");
joon874 4:0b5a199e91f3 281 debug_info();
joon874 4:0b5a199e91f3 282 #endif
joon874 4:0b5a199e91f3 283 }
joon874 4:0b5a199e91f3 284
joon874 4:0b5a199e91f3 285 /*
joon874 4:0b5a199e91f3 286 void PutRequestHandler::handle(char* rest_uri, char* request_data, char *reply)
joon874 0:5886f525a4ad 287 {
joon874 0:5886f525a4ad 288 }
joon874 0:5886f525a4ad 289
joon874 4:0b5a199e91f3 290 void DeleteRequestHandler::handle(char* rest_uri, char* request_data, char *reply)
joon874 0:5886f525a4ad 291 {
joon874 0:5886f525a4ad 292 }
joon874 4:0b5a199e91f3 293 */