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.
Dependencies: MbedJSONValue_copy WIZnetInterface mbed
Fork of WIZwiki-REST_mc by
main.cpp
00001 #include "mbed.h" 00002 #include "HTTPServer.h" 00003 #include "RequestHandler.h" 00004 #include "EthernetInterface.h" 00005 #include "MbedJSONValue.h" 00006 00007 #define SERVER_PORT 80 00008 00009 #define DHCP 00010 00011 //#define DEBUG 00012 00013 EthernetInterface eth; 00014 HTTPServer WIZwikiWebSvr; 00015 MbedJSONValue WIZwikiREST; 00016 00017 // Enter a MAC address for your controller below. 00018 uint8_t mac_addr[6] = {0x00, 0x08, 0xDC, 0x00, 0x01, 0xFE}; 00019 char mac_str[20]; 00020 char ip_addr[] = "192.168.100.100"; 00021 char subnet_mask[] = "255.255.255.0"; 00022 char gateway_addr[] = "192.168.100.1"; 00023 00024 GetRequestHandler myGetReq; 00025 PostRequestHandler myPostReq; 00026 00027 DigitalOut LED_1(PA_1); 00028 DigitalOut LED_2(PA_2); 00029 00030 DigitalInOut GP05(P5); 00031 DigitalInOut GP06(P6); 00032 DigitalInOut GP07(P7); 00033 DigitalInOut GP08(P8); 00034 DigitalInOut GP09(P9); 00035 DigitalInOut GP10(P10); 00036 DigitalInOut GP11(P11); 00037 DigitalInOut GP12(P12); 00038 DigitalInOut GP13(P13); 00039 DigitalInOut GP14(P14); 00040 DigitalInOut GP15(P15); 00041 DigitalInOut GP16(P16); 00042 DigitalInOut GP17(P17); 00043 DigitalInOut GP18(P18); 00044 DigitalInOut GP19(P19); 00045 DigitalInOut GP20(P20); 00046 DigitalInOut GP21(P21); 00047 DigitalInOut GP22(P22); 00048 DigitalInOut GP23(P23); 00049 DigitalInOut GP24(P24); 00050 DigitalInOut GP25(P25); 00051 DigitalInOut GP26(P26); 00052 DigitalInOut GP27(P27); 00053 DigitalInOut GP28(P28); 00054 DigitalInOut GP29(P29); 00055 DigitalInOut GP30(P30); 00056 DigitalInOut GP31(P31); 00057 DigitalInOut GP32(P32); 00058 00059 00060 bool gpio_all(void* param) 00061 { 00062 if(!param) return false; 00063 GP05.write(*(int*)param); 00064 GP06.write(*(int*)param); 00065 GP07.write(*(int*)param); 00066 GP08.write(*(int*)param); 00067 GP09.write(*(int*)param); 00068 GP10.write(*(int*)param); 00069 GP11.write(*(int*)param); 00070 GP12.write(*(int*)param); 00071 GP13.write(*(int*)param); 00072 GP14.write(*(int*)param); 00073 GP15.write(*(int*)param); 00074 GP16.write(*(int*)param); 00075 GP17.write(*(int*)param); 00076 GP18.write(*(int*)param); 00077 GP19.write(*(int*)param); 00078 GP20.write(*(int*)param); 00079 GP21.write(*(int*)param); 00080 GP22.write(*(int*)param); 00081 GP23.write(*(int*)param); 00082 GP24.write(*(int*)param); 00083 GP25.write(*(int*)param); 00084 GP26.write(*(int*)param); 00085 GP27.write(*(int*)param); 00086 GP28.write(*(int*)param); 00087 GP29.write(*(int*)param); 00088 return true; 00089 } 00090 00091 00092 bool p5_set(void* param) 00093 { 00094 if(!param) return false; 00095 GP05.write(*(int*)param); 00096 return true; 00097 } 00098 bool p6_set(void* param) 00099 { 00100 if(!param) return false; 00101 GP06.write(*(int*)param); 00102 return true; 00103 } 00104 bool p7_set(void* param) 00105 { 00106 if(!param) return false; 00107 GP07.write(*(int*)param); 00108 return true; 00109 } 00110 bool p8_set(void* param) 00111 { 00112 if(!param) return false; 00113 GP08.write(*(int*)param); 00114 return true; 00115 } 00116 bool p9_set(void* param) 00117 { 00118 if(!param) return false; 00119 GP09.write(*(int*)param); 00120 return true; 00121 } 00122 bool p10_set(void* param) 00123 { 00124 if(!param) return false; 00125 GP10.write(*(int*)param); 00126 return true; 00127 } 00128 bool p11_set(void* param) 00129 { 00130 if(!param) return false; 00131 GP11.write(*(int*)param); 00132 return true; 00133 } 00134 bool p12_set(void* param) 00135 { 00136 if(!param) return false; 00137 GP12.write(*(int*)param); 00138 return true; 00139 } 00140 bool p13_set(void* param) 00141 { 00142 if(!param) return false; 00143 GP13.write(*(int*)param); 00144 return true; 00145 } 00146 bool p14_set(void* param) 00147 { 00148 if(!param) return false; 00149 GP14.write(*(int*)param); 00150 return true; 00151 } 00152 bool p15_set(void* param) 00153 { 00154 if(!param) return false; 00155 GP15.write(*(int*)param); 00156 return true; 00157 } 00158 bool p16_set(void* param) 00159 { 00160 if(!param) return false; 00161 GP16.write(*(int*)param); 00162 return true; 00163 } 00164 bool p17_set(void* param) 00165 { 00166 if(!param) return false; 00167 GP17.write(*(int*)param); 00168 return true; 00169 } 00170 bool p18_set(void* param) 00171 { 00172 if(!param) return false; 00173 GP18.write(*(int*)param); 00174 return true; 00175 } 00176 bool p19_set(void* param) 00177 { 00178 if(!param) return false; 00179 GP19.write(*(int*)param); 00180 return true; 00181 } 00182 bool p20_set(void* param) 00183 { 00184 if(!param) return false; 00185 GP20.write(*(int*)param); 00186 return true; 00187 } 00188 bool p21_set(void* param) 00189 { 00190 if(!param) return false; 00191 GP21.write(*(int*)param); 00192 return true; 00193 } 00194 bool p22_set(void* param) 00195 { 00196 if(!param) return false; 00197 GP22.write(*(int*)param); 00198 return true; 00199 } 00200 bool p23_set(void* param) 00201 { 00202 if(!param) return false; 00203 GP23.write(*(int*)param); 00204 return true; 00205 } 00206 bool p24_set(void* param) 00207 { 00208 if(!param) return false; 00209 GP24.write(*(int*)param); 00210 return true; 00211 } 00212 bool p25_set(void* param) 00213 { 00214 if(!param) return false; 00215 GP25.write(*(int*)param); 00216 return true; 00217 } 00218 bool p26_set(void* param) 00219 { 00220 if(!param) return false; 00221 GP26.write(*(int*)param); 00222 return true; 00223 } 00224 bool p27_set(void* param) 00225 { 00226 if(!param) return false; 00227 GP27.write(*(int*)param); 00228 return true; 00229 } 00230 bool p28_set(void* param) 00231 { 00232 if(!param) return false; 00233 GP28.write(*(int*)param); 00234 return true; 00235 } 00236 bool p29_set(void* param) 00237 { 00238 if(!param) return false; 00239 GP29.write(*(int*)param); 00240 return true; 00241 } 00242 bool p30_set(void* param) 00243 { 00244 if(!param) return false; 00245 GP30.write(*(int*)param); 00246 return true; 00247 } 00248 bool p31_set(void* param) 00249 { 00250 if(!param) return false; 00251 GP31.write(*(int*)param); 00252 return true; 00253 } 00254 bool p32_set(void* param) 00255 { 00256 if(!param) return false; 00257 GP32.write(*(int*)param); 00258 return true; 00259 } 00260 00261 void debug_info() 00262 { 00263 printf("SP:0x%X\r\n",__current_sp()); 00264 __heapstats((__heapprt)fprintf,stderr); 00265 #ifdef DEBUG 00266 __heapvalid((__heapprt)fprintf,stderr, 1); 00267 #endif 00268 printf("\r\n"); 00269 } 00270 00271 void WIZwiki_REST_init(); 00272 00273 int main(void) 00274 { 00275 #ifdef DEBUG 00276 debug_info(); 00277 #endif 00278 sprintf(mac_str, "%02X:%02X:%02X:%02X:%02X:%02X",mac_addr[0],mac_addr[1],mac_addr[2],mac_addr[3],mac_addr[4],mac_addr[5]); 00279 00280 //GPIO Set 00281 GP05.output(); 00282 GP05.write(1); 00283 GP06.output(); 00284 GP06.write(1); 00285 GP07.output(); 00286 GP07.write(1); 00287 GP08.output(); 00288 GP08.write(1); 00289 GP09.output(); 00290 GP09.write(1); 00291 GP10.output(); 00292 GP10.write(1); 00293 GP11.output(); 00294 GP11.write(1); 00295 GP12.output(); 00296 GP12.write(1); 00297 GP13.output(); 00298 GP13.write(1); 00299 GP14.output(); 00300 GP14.write(1); 00301 GP15.output(); 00302 GP15.write(1); 00303 GP16.output(); 00304 GP16.write(1); 00305 GP17.output(); 00306 GP17.write(1); 00307 GP18.output(); 00308 GP18.write(1); 00309 GP19.output(); 00310 GP19.write(1); 00311 GP20.output(); 00312 GP20.write(1); 00313 GP21.output(); 00314 GP21.write(1); 00315 GP22.output(); 00316 GP22.write(1); 00317 GP23.output(); 00318 GP23.write(1); 00319 GP24.output(); 00320 GP24.write(1); 00321 GP25.output(); 00322 GP25.write(1); 00323 GP26.output(); 00324 GP26.write(1); 00325 GP27.output(); 00326 GP27.write(1); 00327 GP28.output(); 00328 GP28.write(1); 00329 GP29.output(); 00330 GP29.write(1); 00331 00332 //LED Setbit 00333 //LED_1.write(0); // LED On 00334 //LED_2.write(1); // LED Off 00335 printf("START \r\n"); 00336 printf("sizeof(MbedJSONValue)=%d\r\n",sizeof(MbedJSONValue)); 00337 printf("sizeof(vector)=%d\r\n",sizeof(std::vector<string*>)); 00338 printf("sizeof(string)=%d\r\n",sizeof(std::string)); 00339 #ifdef DEBUG 00340 debug_info(); 00341 #endif 00342 00343 WIZwiki_REST_init(); 00344 00345 #ifdef DEBUG 00346 debug_info(); 00347 #endif 00348 00349 // Serialize it into a JSON string 00350 printf("-------------------------WIZwikiREST--------------------------- \r\n"); 00351 printf("\r\n%s\r\n", WIZwikiREST.serialize().c_str()); 00352 printf("--------------------------------------------------------------- \r\n"); 00353 00354 WIZwikiWebSvr.add_request_handler("GET", &myGetReq); 00355 WIZwikiWebSvr.add_request_handler("POST", &myPostReq); 00356 //WIZwikiWebSvr.add_request_handler("DELETE", new PostRequestHandler()); 00357 //WIZwikiWebSvr.add_request_handler("PUT", new PutRequestHandler()); 00358 00359 #ifdef DHCP 00360 eth.init(mac_addr); //Use DHCP 00361 #else 00362 eth.init(mac_addr, ip_addr, subnet_mask, gateway_addr); //Not Use DHCP 00363 #endif 00364 00365 00366 printf("Check Ethernet Link\r\n"); 00367 00368 do{ 00369 printf(" Link - Wait... \r\n"); 00370 wait(1); 00371 }while(!eth.ethernet_link()); 00372 printf("-- Ethetnet PHY Link - Done -- \r\n"); 00373 00374 if (eth.connect() < 0 ) 00375 printf("-- EThernet Connect - Fail -- \r\n"); 00376 else 00377 { 00378 printf("-- Assigned Network Information -- \r\n"); 00379 printf(" IP : %s\r\n\r\n", eth.getIPAddress()); 00380 printf(" MASK : %s\r\n\r\n", eth.getNetworkMask()); 00381 printf(" GW : %s\r\n\r\n", eth.getGateway()); 00382 } 00383 00384 printf("Link up\r\n"); 00385 printf("IP Address is %s\r\n", eth.getIPAddress()); 00386 #ifdef DEBUG 00387 debug_info(); 00388 #endif 00389 00390 if(!WIZwikiWebSvr.init(SERVER_PORT)) 00391 { 00392 eth.disconnect(); 00393 return -1; 00394 } 00395 00396 while(1) 00397 { 00398 WIZwikiWebSvr.run(); 00399 } 00400 } 00401 00402 void WIZwiki_REST_init(void) 00403 { 00404 //Fill the object 00405 WIZwikiREST["Name"] = "WIZwiki-RESTful-01"; 00406 WIZwikiREST["Name"].accessible = false; 00407 #ifdef DEBUG 00408 debug_info(); 00409 #endif 00410 00411 //Network 00412 WIZwikiREST["Network"]["MAC"] = mac_str; 00413 WIZwikiREST["Network"]["IP"] = ip_addr; 00414 WIZwikiREST["Network"]["IP"].accessible = true; 00415 WIZwikiREST["Network"]["SN"] = subnet_mask; 00416 WIZwikiREST["Network"]["SN"].accessible = true; 00417 WIZwikiREST["Network"]["GW"] = gateway_addr; 00418 WIZwikiREST["Network"]["GW"].accessible = true; 00419 00420 //LEDs 00421 //WIZwikiREST["LED1"] = (LED_1.read() ? "Off" : "On"); 00422 //WIZwikiREST["LED1"].accessible = true; 00423 //WIZwikiREST["LED2"] = (LED_2.read() ? "Off" : "On"); 00424 //WIZwikiREST["LED2"].accessible = true; 00425 00426 // GPIOs 00427 WIZwikiREST["GPIOs"]["all"].accessible = true; 00428 WIZwikiREST["GPIOs"]["all"].cb_action = gpio_all; 00429 WIZwikiREST["GPIOs"]["P05"] = GP05.read(); 00430 WIZwikiREST["GPIOs"]["P05"].accessible = true; 00431 WIZwikiREST["GPIOs"]["P05"].cb_action = p5_set; 00432 WIZwikiREST["GPIOs"]["P06"] = GP06.read(); 00433 WIZwikiREST["GPIOs"]["P06"].accessible = true; 00434 WIZwikiREST["GPIOs"]["P06"].cb_action = p6_set; 00435 WIZwikiREST["GPIOs"]["P07"] = GP07.read(); 00436 WIZwikiREST["GPIOs"]["P07"].accessible = true; 00437 WIZwikiREST["GPIOs"]["P07"].cb_action = p7_set; 00438 WIZwikiREST["GPIOs"]["P08"] = GP08.read(); 00439 WIZwikiREST["GPIOs"]["P08"].accessible = true; 00440 WIZwikiREST["GPIOs"]["P08"].cb_action = p8_set; 00441 WIZwikiREST["GPIOs"]["P09"] = GP09.read(); 00442 WIZwikiREST["GPIOs"]["P09"].accessible = true; 00443 WIZwikiREST["GPIOs"]["P09"].cb_action = p9_set; 00444 WIZwikiREST["GPIOs"]["P10"] = GP10.read(); 00445 WIZwikiREST["GPIOs"]["P10"].accessible = true; 00446 WIZwikiREST["GPIOs"]["P10"].cb_action = p10_set; 00447 WIZwikiREST["GPIOs"]["P11"] = GP11.read(); 00448 WIZwikiREST["GPIOs"]["P11"].accessible = true; 00449 WIZwikiREST["GPIOs"]["P11"].cb_action = p11_set; 00450 WIZwikiREST["GPIOs"]["P12"] = GP12.read(); 00451 WIZwikiREST["GPIOs"]["P12"].accessible = true; 00452 WIZwikiREST["GPIOs"]["P12"].cb_action = p12_set; 00453 WIZwikiREST["GPIOs"]["P13"] = GP13.read(); 00454 WIZwikiREST["GPIOs"]["P13"].accessible = true; 00455 WIZwikiREST["GPIOs"]["P13"].cb_action = p13_set; 00456 WIZwikiREST["GPIOs"]["P14"] = GP14.read(); 00457 WIZwikiREST["GPIOs"]["P14"].accessible = true; 00458 WIZwikiREST["GPIOs"]["P14"].cb_action = p14_set; 00459 WIZwikiREST["GPIOs"]["P15"] = GP15.read(); 00460 WIZwikiREST["GPIOs"]["P15"].accessible = true; 00461 WIZwikiREST["GPIOs"]["P15"].cb_action = p15_set; 00462 WIZwikiREST["GPIOs"]["P16"] = GP16.read(); 00463 WIZwikiREST["GPIOs"]["P16"].accessible = true; 00464 WIZwikiREST["GPIOs"]["P16"].cb_action = p16_set; 00465 WIZwikiREST["GPIOs"]["P17"] = GP17.read(); 00466 WIZwikiREST["GPIOs"]["P17"].accessible = true; 00467 WIZwikiREST["GPIOs"]["P17"].cb_action = p17_set; 00468 WIZwikiREST["GPIOs"]["P18"] = GP18.read(); 00469 WIZwikiREST["GPIOs"]["P18"].accessible = true; 00470 WIZwikiREST["GPIOs"]["P18"].cb_action = p18_set; 00471 WIZwikiREST["GPIOs"]["P19"] = GP19.read(); 00472 WIZwikiREST["GPIOs"]["P19"].accessible = true; 00473 WIZwikiREST["GPIOs"]["P19"].cb_action = p19_set; 00474 WIZwikiREST["GPIOs"]["P20"] = GP20.read(); 00475 WIZwikiREST["GPIOs"]["P20"].accessible = true; 00476 WIZwikiREST["GPIOs"]["P20"].cb_action = p20_set; 00477 WIZwikiREST["GPIOs"]["P21"] = GP21.read(); 00478 WIZwikiREST["GPIOs"]["P21"].accessible = true; 00479 WIZwikiREST["GPIOs"]["P21"].cb_action = p21_set; 00480 WIZwikiREST["GPIOs"]["P22"] = GP22.read(); 00481 WIZwikiREST["GPIOs"]["P22"].accessible = true; 00482 WIZwikiREST["GPIOs"]["P22"].cb_action = p22_set; 00483 WIZwikiREST["GPIOs"]["P23"] = GP23.read(); 00484 WIZwikiREST["GPIOs"]["P23"].accessible = true; 00485 WIZwikiREST["GPIOs"]["P23"].cb_action = p23_set; 00486 WIZwikiREST["GPIOs"]["P24"] = GP24.read(); 00487 WIZwikiREST["GPIOs"]["P24"].accessible = true; 00488 WIZwikiREST["GPIOs"]["P24"].cb_action = p24_set; 00489 WIZwikiREST["GPIOs"]["P25"] = GP25.read(); 00490 WIZwikiREST["GPIOs"]["P25"].accessible = true; 00491 WIZwikiREST["GPIOs"]["P25"].cb_action = p25_set; 00492 WIZwikiREST["GPIOs"]["P26"] = GP26.read(); 00493 WIZwikiREST["GPIOs"]["P26"].accessible = true; 00494 WIZwikiREST["GPIOs"]["P26"].cb_action = p26_set; 00495 WIZwikiREST["GPIOs"]["P27"] = GP27.read(); 00496 WIZwikiREST["GPIOs"]["P27"].accessible = true; 00497 WIZwikiREST["GPIOs"]["P27"].cb_action = p27_set; 00498 WIZwikiREST["GPIOs"]["P28"] = GP28.read(); 00499 WIZwikiREST["GPIOs"]["P28"].accessible = true; 00500 WIZwikiREST["GPIOs"]["P28"].cb_action = p28_set; 00501 WIZwikiREST["GPIOs"]["P29"] = GP29.read(); 00502 WIZwikiREST["GPIOs"]["P29"].accessible = true; 00503 WIZwikiREST["GPIOs"]["P29"].cb_action = p29_set; 00504 00505 #ifdef DEBUG 00506 debug_info(); 00507 #endif 00508 }
Generated on Thu Jul 14 2022 06:34:35 by
1.7.2
