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