1st Released

Dependencies:   MbedJSONValue WIZnetInterface mbed

Fork of WIZwiki-REST by Lawrence Lee

Files at this revision

API Documentation at this revision

Comitter:
MidnightCow
Date:
Tue Apr 05 11:40:33 2016 +0000
Parent:
0:5886f525a4ad
Commit message:
1st Released

Changed in this revision

HTTPServer.h Show annotated file Show diff for this revision Revisions of this file
MbedJSONValue.lib Show annotated file Show diff for this revision Revisions of this file
RequestHandler.cpp Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
diff -r 5886f525a4ad -r 728e5b5c8dae HTTPServer.h
--- a/HTTPServer.h	Wed Mar 02 03:28:08 2016 +0000
+++ b/HTTPServer.h	Tue Apr 05 11:40:33 2016 +0000
@@ -17,8 +17,8 @@
 }HTTP_RESULT;
 
 
-static  char HTTPBUF[1024] ={0,};
-static  char rest_result[1024] = {0,};
+static  char HTTPBUF[512] ={0,};
+static  char rest_result[512] = {0,};
 
 class HTTPServer
 {
diff -r 5886f525a4ad -r 728e5b5c8dae MbedJSONValue.lib
--- a/MbedJSONValue.lib	Wed Mar 02 03:28:08 2016 +0000
+++ b/MbedJSONValue.lib	Tue Apr 05 11:40:33 2016 +0000
@@ -1,1 +1,1 @@
-https://developer.mbed.org/users/joon874/code/MbedJSONValue/#e15fd7be9e74
+https://developer.mbed.org/users/MidnightCow/code/MbedJSONValue/#f8bec9cada34
diff -r 5886f525a4ad -r 728e5b5c8dae RequestHandler.cpp
--- a/RequestHandler.cpp	Wed Mar 02 03:28:08 2016 +0000
+++ b/RequestHandler.cpp	Tue Apr 05 11:40:33 2016 +0000
@@ -23,26 +23,75 @@
         tok = strtok_r(rest_uri+1, "/", &last);             // 20160226
         tmpJson = &WIZwikiREST;
     
+    char depth = 0;
+    char* name = 0;
     while(tok)
     {
-            printf("tok = %s \r\n", tok);               // Name
-              if(tmpJson->size() > 0)       tmpJson = &((*tmpJson)[tok]);
-        else
-                {
-             tmpJson = 0;
-                     break;
-                }
-                tok = strtok_r(0, "/", &last);              // 20160226             
-    }
-        if(tmpJson && tmpJson->size() > 0)
+        printf("tok = %s \r\n", tok);               // Name
+        if(tmpJson->hasMember(tok))
         {
-             strcpy(reply, (*tmpJson).serialize().c_str());
-        }   
+            tmpJson = &((*tmpJson)[tok]);
+            name = tok;
+            tok = strtok_r(0, "/", &last);
+            depth++;
+        }
         else
         {
-            strcpy(reply, "{\"Result\" : \"No defined Resource\"}");
+            printf("No Member\r\n");
+            break;
         }
+    }
+    /*    
+    if(tmpJson && tmpJson->size() > 0)
+    {
+        strcpy(reply, (*tmpJson).serialize().c_str());
+    }   
+    else 
+    {
+        strcpy(reply, "{\"Result\" : \"No defined Resource\"}");
+    }
+    */
+    /*
+    if(name)
+    {
+        printf("name=%s, tok=%s\r\n",name,tok);
+        if(tok)
+        {
+            if(depth == 2)
+            {
+                if(!strcmp(name, "MAC"))
+                    strcpy(reply, "{\"Result\" : \"No Accessible\"}");
+                else
+                {
+                    if(tmpJson->size() > 0) *tmpJson = std::string(tok);
+                    else                    *tmpJson = atoi(tok);
+                    strcpy(reply, (*tmpJson).serialize().c_str());
+                }
+            }
+            else if(depth == 1) strcpy(reply, "{\"Result : No Accessible\"}");
+        }
+        else strcpy(reply, (*tmpJson).serialize().c_str());
         return;
+    }
+    strcpy(reply, "{\"Result\" : \"No defined Resource\"}");
+    */
+    if(name)
+    {
+        if(tok)
+        {
+            if(tmpJson->accessible)
+            {
+                printf("accessible : tmpJson->size()=%d\r\n",tmpJson->size());
+                if(tmpJson->size() > 0) {*tmpJson = std::string(tok); tmpJson->cb_action((void*)tok); printf("set string:%s\r\n",tok);}
+                else                    {*tmpJson = atoi(tok); tmpJson->cb_action(&tmpJson->_value); printf("set int:%d\r\n",atoi(tok));}
+                strcpy(reply, (*tmpJson).serialize().c_str());
+            }
+            else strcpy(reply, "{\"Result : No Accessible\"}");
+        }
+        else strcpy(reply, (*tmpJson).serialize().c_str());
+    }
+    else strcpy(reply, "{\"Result\" : \"No defined Resource\"}");
+    return;
 }
 
 void PutRequestHandler::handle(char* rest_uri, char *reply)
diff -r 5886f525a4ad -r 728e5b5c8dae main.cpp
--- a/main.cpp	Wed Mar 02 03:28:08 2016 +0000
+++ b/main.cpp	Tue Apr 05 11:40:33 2016 +0000
@@ -20,27 +20,236 @@
 DigitalOut LED_1(PA_1);
 DigitalOut LED_2(PA_2);
 
-DigitalInOut P05(P5);
-DigitalInOut P06(P6);
+DigitalInOut GP05(P5);
+DigitalInOut GP06(P6);
+DigitalInOut GP07(P7);
+DigitalInOut GP08(P8);
+DigitalInOut GP09(P9);
+DigitalInOut GP10(P10);
+DigitalInOut GP11(P11);
+DigitalInOut GP12(P12);
+DigitalInOut GP13(P13);
+DigitalInOut GP14(P14);
+DigitalInOut GP15(P15);
+DigitalInOut GP16(P16);
+DigitalInOut GP17(P17);
+DigitalInOut GP18(P18);
+DigitalInOut GP19(P19);
+DigitalInOut GP20(P20);
+DigitalInOut GP21(P21);
+DigitalInOut GP22(P22);
+DigitalInOut GP23(P23);
+DigitalInOut GP24(P24);
+DigitalInOut GP25(P25);
+DigitalInOut GP26(P26);
+DigitalInOut GP27(P27);
+DigitalInOut GP28(P28);
+DigitalInOut GP29(P29);
+DigitalInOut GP30(P30);
+DigitalInOut GP31(P31);
+DigitalInOut GP32(P32);
 
+bool p5_set(void* param)
+{
+    if(!param) return false;
+    GP05.write(*(int*)param);
+    return true;
+}
+bool p6_set(void* param)
+{
+    if(!param) return false;
+    GP06.write(*(int*)param);
+    return true;
+}
+bool p7_set(void* param)
+{
+    if(!param) return false;
+    GP07.write(*(int*)param);
+    return true;
+}
+bool p8_set(void* param)
+{
+    if(!param) return false;
+    GP08.write(*(int*)param);
+    return true;
+}
+bool p9_set(void* param)
+{
+    if(!param) return false;
+    GP09.write(*(int*)param);
+    return true;
+}
+bool p10_set(void* param)
+{
+    if(!param) return false;
+    GP10.write(*(int*)param);
+    return true;
+}
+bool p11_set(void* param)
+{
+    if(!param) return false;
+    GP11.write(*(int*)param);
+    return true;
+}
+bool p12_set(void* param)
+{
+    if(!param) return false;
+    GP12.write(*(int*)param);
+    return true;
+}
+bool p13_set(void* param)
+{
+    if(!param) return false;
+    GP13.write(*(int*)param);
+    return true;
+}
+bool p14_set(void* param)
+{
+    if(!param) return false;
+    GP14.write(*(int*)param);
+    return true;
+}
+bool p15_set(void* param)
+{
+    if(!param) return false;
+    GP15.write(*(int*)param);
+    return true;
+}
+bool p16_set(void* param)
+{
+    if(!param) return false;
+    GP16.write(*(int*)param);
+    return true;
+}
+bool p17_set(void* param)
+{
+    if(!param) return false;
+    GP17.write(*(int*)param);
+    return true;
+}
+bool p18_set(void* param)
+{
+    if(!param) return false;
+    GP18.write(*(int*)param);
+    return true;
+}
+bool p19_set(void* param)
+{
+    if(!param) return false;
+    GP19.write(*(int*)param);
+    return true;
+}
+bool p20_set(void* param)
+{
+    if(!param) return false;
+    GP20.write(*(int*)param);
+    return true;
+}
+bool p21_set(void* param)
+{
+    if(!param) return false;
+    GP21.write(*(int*)param);
+    return true;
+}
+bool p22_set(void* param)
+{
+    if(!param) return false;
+    GP22.write(*(int*)param);
+    return true;
+}
+bool p23_set(void* param)
+{
+    if(!param) return false;
+    GP23.write(*(int*)param);
+    return true;
+}
+bool p24_set(void* param)
+{
+    if(!param) return false;
+    GP24.write(*(int*)param);
+    return true;
+}
+bool p25_set(void* param)
+{
+    if(!param) return false;
+    GP25.write(*(int*)param);
+    return true;
+}
+bool p26_set(void* param)
+{
+    if(!param) return false;
+    GP26.write(*(int*)param);
+    return true;
+}
+bool p27_set(void* param)
+{
+    if(!param) return false;
+    GP27.write(*(int*)param);
+    return true;
+}
+bool p28_set(void* param)
+{
+    if(!param) return false;
+    GP28.write(*(int*)param);
+    return true;
+}
+bool p29_set(void* param)
+{
+    if(!param) return false;
+    GP29.write(*(int*)param);
+    return true;
+}
+bool p30_set(void* param)
+{
+    if(!param) return false;
+    GP30.write(*(int*)param);
+    return true;
+}
+bool p31_set(void* param)
+{
+    if(!param) return false;
+    GP31.write(*(int*)param);
+    return true;
+}
+bool p32_set(void* param)
+{
+    if(!param) return false;
+    GP32.write(*(int*)param);
+    return true;
+}
+
+void debug_info()
+{
+    printf("SP:0x%X\r\n",__current_sp());
+    __heapstats((__heapprt)fprintf,stderr);
+    printf("\r\n");
+}    
 void WIZwiki_REST_init();
 
 int main(void)
 {
+    
     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]);
     //GPIO Set
-    P05.output();
-    P05.write(1);
-    P06.input();
-    
+    GP05.output();
+    GP05.write(0);
+    GP06.input();
+
     //LED Setbit
     LED_1.write(0); // LED On
     LED_2.write(1); // LED Off
+    printf("START \r\n");    
+    printf("sizeof(MbedJSONValue)=%d\r\n",sizeof(MbedJSONValue));
+    printf("sizeof(vector)=%d\r\n",sizeof(std::vector<string*>));
+    printf("sizeof(string)=%d\r\n",sizeof(std::string));
+    debug_info();
 
     WIZwiki_REST_init();
-                
+
+    debug_info();
+                    
     // Serialize it into a JSON string
     printf("\r\n");
     printf("-------------------------WIZwikiREST--------------------------- \r\n");
@@ -83,71 +292,117 @@
 void WIZwiki_REST_init(void)
 {
     //Fill the object
-    WIZwikiREST["Name"] = "WIZwiki-REST-01";
+    WIZwikiREST["Name"] = "WIZwiki-RESTful-01";
+    WIZwikiREST["Name"].accessible = false;
+    debug_info();
+    
     //Network
+
     WIZwikiREST["Network"]["MAC"] = mac_str;
+    debug_info();
     WIZwikiREST["Network"]["IP"] = ip_addr; 
+    WIZwikiREST["Network"]["IP"].accessible = true; 
+    debug_info();
     WIZwikiREST["Network"]["SN"] = subnet_mask;  
+    WIZwikiREST["Network"]["SN"].accessible = true;  
+    debug_info();
     WIZwikiREST["Network"]["GW"] = gateway_addr;
+    WIZwikiREST["Network"]["GW"].accessible = true;
+    debug_info();
+
     //LEDs
-    WIZwikiREST["LEDs"]["LED_1"]["Value"] = (LED_1.read() ? "Off" : "On");
-    WIZwikiREST["LEDs"]["LED_2"]["Value"] = (LED_2.read() ? "Off" : "On");
-    
+    WIZwikiREST["LED1"] = (LED_1.read() ? "Off" : "On");
+    WIZwikiREST["LED1"].accessible = true;
+    debug_info();    
+    WIZwikiREST["LED2"] = (LED_2.read() ? "Off" : "On");
+    WIZwikiREST["LED2"].accessible = true;
+    debug_info();
     // GPIOs
-    WIZwikiREST["GPIOs"]["P05"]["Mode"] = ((GPIOA->OUTENSET&GPIO_Pin_5) ? "Output" : "Input");
-    WIZwikiREST["GPIOs"]["P05"]["Value"] = (P05.read() ? "1" : "0");
-    WIZwikiREST["GPIOs"]["P06"]["Mode"] = ((GPIOA->OUTENSET&GPIO_Pin_6) ? "Output" : "Input");
-    WIZwikiREST["GPIOs"]["P06"]["Value"] = (P06.read() ? "1" : "0");
-//  WIZwikiREST["GPIOs"]["P07"]["Mode"] = ((GPIOA->OUTENSET&GPIO_Pin_7) ? "Output" : "Input");
-//  WIZwikiREST["GPIOs"]["P07"]["Value"] = (P07.read() ? "1" : "0");
-//  WIZwikiREST["GPIOs"]["P08"]["Mode"] = ((GPIOA->OUTENSET&GPIO_Pin_8) ? "Output" : "Input");
-//  WIZwikiREST["GPIOs"]["P08"]["Value"] = (P08.read() ? "1" : "0");
-//  WIZwikiREST["GPIOs"]["P09"]["Mode"] = ((GPIOA->OUTENSET&GPIO_Pin_9) ? "Output" : "Input");
-//  WIZwikiREST["GPIOs"]["P09"]["Value"] = (P09.read() ? "1" : "0");
-//  WIZwikiREST["GPIOs"]["P10"]["Mode"] = ((GPIOA->OUTENSET&GPIO_Pin_10) ? "Output" : "Input");
-//  WIZwikiREST["GPIOs"]["P10"]["Value"] = (P10.read() ? "1" : "0");
-//  WIZwikiREST["GPIOs"]["P11"]["Mode"] = ((GPIOA->OUTENSET&GPIO_Pin_11) ? "Output" : "Input");
-//  WIZwikiREST["GPIOs"]["P11"]["Value"] = (P11.read() ? "1" : "0");
-//  WIZwikiREST["GPIOs"]["P12"]["Mode"] = ((GPIOA->OUTENSET&GPIO_Pin_12) ? "Output" : "Input");
-//  WIZwikiREST["GPIOs"]["P12"]["Value"] = (P12.read() ? "1" : "0");
-//  WIZwikiREST["GPIOs"]["P13"]["Mode"] = ((GPIOA->OUTENSET&GPIO_Pin_13) ? "Output" : "Input");
-//  WIZwikiREST["GPIOs"]["P13"]["Value"] = (P13.read() ? "1" : "0");
-//  WIZwikiREST["GPIOs"]["P14"]["Mode"] = ((GPIOA->OUTENSET&GPIO_Pin_14) ? "Output" : "Input");
-//  WIZwikiREST["GPIOs"]["P14"]["Value"] = (P14.read() ? "1" : "0");
-//  WIZwikiREST["GPIOs"]["P15"]["Mode"] = ((GPIOB->OUTENSET&GPIO_Pin_0) ? "Output" : "Input");
-//  WIZwikiREST["GPIOs"]["P15"]["Value"] = (P15.read() ? "1" : "0");
-//  WIZwikiREST["GPIOs"]["P16"]["Mode"] = ((GPIOB->OUTENSET&GPIO_Pin_1) ? "Output" : "Input");
-//  WIZwikiREST["GPIOs"]["P16"]["Value"] = (P16.read() ? "1" : "0");
-//  WIZwikiREST["GPIOs"]["P17"]["Mode"] = ((GPIOB->OUTENSET&GPIO_Pin_2) ? "Output" : "Input");
-//  WIZwikiREST["GPIOs"]["P17"]["Value"] = (P17.read() ? "1" : "0");
-//  WIZwikiREST["GPIOs"]["P18"]["Mode"] = ((GPIOB->OUTENSET&GPIO_Pin_3) ? "Output" : "Input");
-//  WIZwikiREST["GPIOs"]["P18"]["Value"] = (P18.read() ? "1" : "0");
-//  WIZwikiREST["GPIOs"]["P19"]["Mode"] = ((GPIOC->OUTENSET&GPIO_Pin_8) ? "Output" : "Input");
-//  WIZwikiREST["GPIOs"]["P19"]["Value"] = (P19.read() ? "1" : "0");
-//  WIZwikiREST["GPIOs"]["P20"]["Mode"] = ((GPIOC->OUTENSET&GPIO_Pin_4) ? "Output" : "Input");
-//  WIZwikiREST["GPIOs"]["P20"]["Value"] = (P20.read() ? "1" : "0");
-//  WIZwikiREST["GPIOs"]["P21"]["Mode"] = ((GPIOC->OUTENSET&GPIO_Pin_0) ? "Output" : "Input");
-//  WIZwikiREST["GPIOs"]["P21"]["Value"] = (P21.read() ? "1" : "0");
-//  WIZwikiREST["GPIOs"]["P22"]["Mode"] = ((GPIOC->OUTENSET&GPIO_Pin_1) ? "Output" : "Input");
-//  WIZwikiREST["GPIOs"]["P22"]["Value"] = (P22.read() ? "1" : "0");
-//  WIZwikiREST["GPIOs"]["P23"]["Mode"] = ((GPIOC->OUTENSET&GPIO_Pin_2) ? "Output" : "Input");
-//  WIZwikiREST["GPIOs"]["P23"]["Value"] = (P23.read() ? "1" : "0");
-//  WIZwikiREST["GPIOs"]["P24"]["Mode"] = ((GPIOC->OUTENSET&GPIO_Pin_3) ? "Output" : "Input");
-//  WIZwikiREST["GPIOs"]["P24"]["Value"] = (P24.read() ? "1" : "0");
-//  WIZwikiREST["GPIOs"]["P25"]["Mode"] = ((GPIOC->OUTENSET&GPIO_Pin_9) ? "Output" : "Input");
-//  WIZwikiREST["GPIOs"]["P25"]["Value"] = (P25.read() ? "1" : "0");
-//  WIZwikiREST["GPIOs"]["P26"]["Mode"] = ((GPIOC->OUTENSET&GPIO_Pin_5) ? "Output" : "Input");
-//  WIZwikiREST["GPIOs"]["P26"]["Value"] = (P26.read() ? "1" : "0");
-//  WIZwikiREST["GPIOs"]["P27"]["Mode"] = ((GPIOC->OUTENSET&GPIO_Pin_12) ? "Output" : "Input");
-//  WIZwikiREST["GPIOs"]["P27"]["Value"] = (P27.read() ? "1" : "0");
-//  WIZwikiREST["GPIOs"]["P28"]["Mode"] = ((GPIOC->OUTENSET&GPIO_Pin_13) ? "Output" : "Input");
-//  WIZwikiREST["GPIOs"]["P28"]["Value"] = (P28.read() ? "1" : "0");
-//  WIZwikiREST["GPIOs"]["P29"]["Mode"] = ((GPIOC->OUTENSET&GPIO_Pin_14) ? "Output" : "Input");
-//  WIZwikiREST["GPIOs"]["P29"]["Value"] = (P29.read() ? "1" : "0");
-//  WIZwikiREST["GPIOs"]["P30"]["Mode"] = ((GPIOC->OUTENSET&GPIO_Pin_15) ? "Output" : "Input");
-//  WIZwikiREST["GPIOs"]["P30"]["Value"] = (P30.read() ? "1" : "0");
-//  WIZwikiREST["GPIOs"]["P31"]["Mode"] = ((GPIOC->OUTENSET&GPIO_Pin_6) ? "Output" : "Input");
-//  WIZwikiREST["GPIOs"]["P31"]["Value"] = (P31.read() ? "1" : "0");
-//  WIZwikiREST["GPIOs"]["P32"]["Mode"] = ((GPIOC->OUTENSET&GPIO_Pin_7) ? "Output" : "Input");
-//  WIZwikiREST["GPIOs"]["P32"]["Value"] = (P32.read() ? "1" : "0");
+    WIZwikiREST["GPIOs"]["P05"] = GP05.read();
+    WIZwikiREST["GPIOs"]["P05"].accessible = true;
+    WIZwikiREST["GPIOs"]["P05"].cb_action = p5_set;
+    WIZwikiREST["GPIOs"]["P06"] = GP06.read();
+    WIZwikiREST["GPIOs"]["P06"].accessible = true;
+    WIZwikiREST["GPIOs"]["P06"].cb_action = p6_set;
+    WIZwikiREST["GPIOs"]["P07"] = GP07.read();
+    WIZwikiREST["GPIOs"]["P07"].accessible = true;
+    WIZwikiREST["GPIOs"]["P07"].cb_action = p7_set;
+    WIZwikiREST["GPIOs"]["P08"] = GP08.read();
+    WIZwikiREST["GPIOs"]["P08"].accessible = true;
+    WIZwikiREST["GPIOs"]["P08"].cb_action = p8_set;
+    WIZwikiREST["GPIOs"]["P09"] = GP09.read();
+    WIZwikiREST["GPIOs"]["P09"].accessible = true;
+    WIZwikiREST["GPIOs"]["P09"].cb_action = p9_set;
+    WIZwikiREST["GPIOs"]["P10"] = GP10.read();
+    WIZwikiREST["GPIOs"]["P10"].accessible = true;
+    WIZwikiREST["GPIOs"]["P10"].cb_action = p10_set;
+    WIZwikiREST["GPIOs"]["P11"] = GP11.read();
+    WIZwikiREST["GPIOs"]["P11"].accessible = true;
+    WIZwikiREST["GPIOs"]["P11"].cb_action = p11_set;
+    WIZwikiREST["GPIOs"]["P12"] = GP12.read();
+    WIZwikiREST["GPIOs"]["P12"].accessible = true;
+    WIZwikiREST["GPIOs"]["P12"].cb_action = p12_set;
+    WIZwikiREST["GPIOs"]["P13"] = GP13.read();
+    WIZwikiREST["GPIOs"]["P13"].accessible = true;
+    WIZwikiREST["GPIOs"]["P13"].cb_action = p13_set;
+    WIZwikiREST["GPIOs"]["P14"] = GP14.read();
+    WIZwikiREST["GPIOs"]["P14"].accessible = true;
+    WIZwikiREST["GPIOs"]["P14"].cb_action = p14_set;
+    WIZwikiREST["GPIOs"]["P15"] = GP15.read();
+    WIZwikiREST["GPIOs"]["P15"].accessible = true;
+    WIZwikiREST["GPIOs"]["P15"].cb_action = p15_set;
+    WIZwikiREST["GPIOs"]["P16"] = GP16.read();
+    WIZwikiREST["GPIOs"]["P16"].accessible = true;
+    WIZwikiREST["GPIOs"]["P16"].cb_action = p16_set;
+    WIZwikiREST["GPIOs"]["P17"] = GP17.read();
+    WIZwikiREST["GPIOs"]["P17"].accessible = true;
+    WIZwikiREST["GPIOs"]["P17"].cb_action = p17_set;
+    WIZwikiREST["GPIOs"]["P18"] = GP18.read();
+    WIZwikiREST["GPIOs"]["P18"].accessible = true;
+    WIZwikiREST["GPIOs"]["P18"].cb_action = p18_set;
+    WIZwikiREST["GPIOs"]["P19"] = GP19.read();
+    WIZwikiREST["GPIOs"]["P19"].accessible = true;
+    WIZwikiREST["GPIOs"]["P19"].cb_action = p19_set;
+    WIZwikiREST["GPIOs"]["P20"] = GP20.read();
+    WIZwikiREST["GPIOs"]["P20"].accessible = true;
+    WIZwikiREST["GPIOs"]["P20"].cb_action = p20_set;
+    WIZwikiREST["GPIOs"]["P21"] = GP21.read();
+    WIZwikiREST["GPIOs"]["P21"].accessible = true;
+    WIZwikiREST["GPIOs"]["P21"].cb_action = p21_set;
+    WIZwikiREST["GPIOs"]["P22"] = GP22.read();
+    WIZwikiREST["GPIOs"]["P22"].accessible = true;
+    WIZwikiREST["GPIOs"]["P22"].cb_action = p22_set;
+    
+    WIZwikiREST["GPIOs"]["P23"] = GP23.read();
+    WIZwikiREST["GPIOs"]["P23"].accessible = true;
+    WIZwikiREST["GPIOs"]["P23"].cb_action = p23_set;
+    WIZwikiREST["GPIOs"]["P24"] = GP24.read();
+    WIZwikiREST["GPIOs"]["P24"].accessible = true;
+    WIZwikiREST["GPIOs"]["P24"].cb_action = p24_set;
+    WIZwikiREST["GPIOs"]["P25"] = GP25.read();
+    WIZwikiREST["GPIOs"]["P25"].accessible = true;
+    WIZwikiREST["GPIOs"]["P25"].cb_action = p25_set;
+    WIZwikiREST["GPIOs"]["P26"] = GP26.read();
+    WIZwikiREST["GPIOs"]["P26"].accessible = true;
+    WIZwikiREST["GPIOs"]["P26"].cb_action = p26_set;
+    WIZwikiREST["GPIOs"]["P27"] = GP27.read();
+    WIZwikiREST["GPIOs"]["P27"].accessible = true;
+    WIZwikiREST["GPIOs"]["P27"].cb_action = p27_set;
+    WIZwikiREST["GPIOs"]["P28"] = GP28.read();
+    WIZwikiREST["GPIOs"]["P28"].accessible = true;
+    WIZwikiREST["GPIOs"]["P28"].cb_action = p28_set;
+    WIZwikiREST["GPIOs"]["P29"] = GP29.read();
+    WIZwikiREST["GPIOs"]["P29"].accessible = true;
+    WIZwikiREST["GPIOs"]["P29"].cb_action = p29_set;
+    WIZwikiREST["GPIOs"]["P30"] = GP30.read();
+    WIZwikiREST["GPIOs"]["P30"].accessible = true;
+    WIZwikiREST["GPIOs"]["P30"].cb_action = p30_set;
+    WIZwikiREST["GPIOs"]["P31"] = GP31.read();
+    WIZwikiREST["GPIOs"]["P31"].accessible = true;
+    WIZwikiREST["GPIOs"]["P31"].cb_action = p31_set;
+    WIZwikiREST["GPIOs"]["P32"] = GP32.read();
+    WIZwikiREST["GPIOs"]["P32"].accessible = true;
+    WIZwikiREST["GPIOs"]["P32"].cb_action = p32_set;
+
+    debug_info();
 }