Change to wifi AP mode. SSID "GR-PEACH_1", PSK "12345"

Dependencies:   DhcpServer EthernetInterface FATFileSystem GR-PEACH_WlanBP3595AP GR-PEACH_video GraphicsFramework HttpServer_snapshot R_BSP mbed-rpc mbed-rtos mbed

Fork of GR-Boards_WebCamera by Renesas

Files at this revision

API Documentation at this revision

Comitter:
dkato
Date:
Thu Dec 03 08:10:53 2015 +0000
Parent:
6:7ec90cc47dc4
Child:
8:3711d702305e
Commit message:
Supports GCC ARM.
; Change optimization options of "main.cpp".
; Modify Setting by I2C function.
;

Changed in this revision

FATFileSystem.lib Show annotated file Show diff for this revision Revisions of this file
GR-PEACH_video.lib Show annotated file Show diff for this revision Revisions of this file
GraphicsFramework.lib Show annotated file Show diff for this revision Revisions of this file
HttpServer_snapshot.lib Show annotated file Show diff for this revision Revisions of this file
i2c_setting.cpp Show annotated file Show diff for this revision Revisions of this file
i2c_setting.h 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
mbed-rtos.lib Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- a/FATFileSystem.lib	Mon Nov 02 01:11:12 2015 +0000
+++ b/FATFileSystem.lib	Thu Dec 03 08:10:53 2015 +0000
@@ -1,1 +1,1 @@
-http://developer.mbed.org/teams/mbed-official/code/FATFileSystem/#b3b3370574cf
+http://developer.mbed.org/teams/mbed-official/code/FATFileSystem/#a5fcdbf92056
--- a/GR-PEACH_video.lib	Mon Nov 02 01:11:12 2015 +0000
+++ b/GR-PEACH_video.lib	Thu Dec 03 08:10:53 2015 +0000
@@ -1,1 +1,1 @@
-http://developer.mbed.org/teams/Renesas/code/GR-PEACH_video/#fe90cfd5fe25
+http://developer.mbed.org/teams/Renesas/code/GR-PEACH_video/#3149baf7925b
--- a/GraphicsFramework.lib	Mon Nov 02 01:11:12 2015 +0000
+++ b/GraphicsFramework.lib	Thu Dec 03 08:10:53 2015 +0000
@@ -1,1 +1,1 @@
-http://developer.mbed.org/teams/Renesas/code/GraphicsFramework/#7b90e31adc5b
+http://developer.mbed.org/teams/Renesas/code/GraphicsFramework/#f3c5d5e6e5ef
--- a/HttpServer_snapshot.lib	Mon Nov 02 01:11:12 2015 +0000
+++ b/HttpServer_snapshot.lib	Thu Dec 03 08:10:53 2015 +0000
@@ -1,1 +1,1 @@
-https://developer.mbed.org/teams/Renesas/code/HttpServer_snapshot/#a9fb8fe9b8a3
+https://developer.mbed.org/teams/Renesas/code/HttpServer_snapshot/#d117d5f84994
--- a/i2c_setting.cpp	Mon Nov 02 01:11:12 2015 +0000
+++ b/i2c_setting.cpp	Thu Dec 03 08:10:53 2015 +0000
@@ -21,16 +21,34 @@
 #include "mbed.h"
 #include "i2c_setting.h"
 
-I2C i2c(I2C_SDA, I2C_SCL);
-Serial terminal(USBTX, USBRX);
+#define REG_REQ_BUF_SIZE        (7)
+#define DATA_MAX_SIZE           (32)
+#define ARG_MAX_NUM             (DATA_MAX_SIZE + 3)      // Reqest, I2C addr, len, data1, data2, data3, ...
+#define ARG_MAX_SIZE            (2)                      // upper bit + lower bit
+#define NULL_SIZE               (1)
+#define CODE_NULL               (0x00)
+#define NUM_STR_TO_HEX          (0x30)
+#define BIG_STR_TO_HEX          (0x37)
+#define SMA_STR_TO_HEX          (0x57)
+#define MASK_HEX10              (0x10)
 
-static char recv_term_buffer[RECV_BUF_SIZE];
-static char reg_req_buffer[REG_REQ_BUF_SIZE];
-static char reg_arg_buf[ARG_MAX_NUM];
-static char wr_data[DATA_MAX_SIZE];
-static char rd_data[DATA_MAX_SIZE];
-static char recv_data;
-static int32_t term_buf_offset = 0;
+#define OFS_REQ                 (0)
+#define OFS_I2C_ADDR            (1)
+#define OFS_DATA_SIZE           (2)
+#define OFS_DATA                (3)
+
+#define STR_WR                  "Wr:"
+#define STR_RD                  "Rd:"
+#define STR_WR_NO_P             "WrNoP:"
+#define STR_RD_NO_P             "RdNoP:"
+
+#define REQ_NONE                (0)
+#define REQ_WR                  (1)
+#define REQ_RD                  (2)
+#define REQ_WR_NO_P             (3)
+#define REQ_RD_NO_P             (4)
+
+I2C i2c(I2C_SDA, I2C_SCL);
 
 static char hex_to_char_tbl[] = {
     '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
@@ -65,7 +83,7 @@
 
 static void char_to_16char(char * pdestbuf, char * psrcbuf, int length) {
     if ((pdestbuf != NULL) && (psrcbuf != NULL)) {
-        while(length != 0) {
+        while (1) {
             *pdestbuf = hex_to_char_tbl[((int32_t)*psrcbuf) / MASK_HEX10];
             pdestbuf++;
             *pdestbuf = hex_to_char_tbl[((int32_t)*psrcbuf) % MASK_HEX10];
@@ -73,150 +91,155 @@
 
             psrcbuf++;
             length--;
+            if (length != 0) {
+                *pdestbuf = ',';
+                pdestbuf++;
+            } else {
+                break;
+            }
         }
         *pdestbuf = CODE_NULL;
     }
 }
-static int receive_term(void) {
-    int ret = false;
+
+static int analysis_cmd(char * buf, char * p_reg_arg_buf) {
+    int  arg_cnt = 0;
+    int  byte_cnt = 0;
+    int  retval;
+    char * psrcbuf = buf;
+    int  ret;
 
-    recv_data = terminal.getc();
-    /* echo back */
-    printf("%c", recv_data);
-    switch ((int32_t)recv_data) {
-        case 0x0A :
-            recv_term_buffer[term_buf_offset] = CODE_NULL;
-            term_buf_offset = 0;
-            ret = true;
-        break;
-        case 0x0D :
-            /* Do Nothing */
-        break;
-        default :
-            /* check data_buffer size  */
-            if (term_buf_offset < RECV_BUF_SIZE) {
-                recv_term_buffer[term_buf_offset] = recv_data;
-                term_buf_offset++;
-            }
-        break;
+    if (strncmp(psrcbuf, STR_WR, sizeof(STR_WR) - 1) == 0) {
+        ret = REQ_WR;
+        psrcbuf += sizeof(STR_WR) - 1;
+    } else if (strncmp(psrcbuf, STR_RD, sizeof(STR_RD) - 1) == 0) {
+        ret = REQ_RD;
+        psrcbuf += sizeof(STR_RD) - 1;
+    } else if (strncmp(psrcbuf, STR_WR_NO_P, sizeof(STR_WR_NO_P) - 1) == 0) {
+        ret = REQ_WR_NO_P;
+        psrcbuf += sizeof(STR_WR_NO_P) - 1;
+    } else if (strncmp(psrcbuf, STR_RD_NO_P, sizeof(STR_RD_NO_P) - 1) == 0) {
+        ret = REQ_RD_NO_P;
+        psrcbuf += sizeof(STR_RD_NO_P) - 1;
+    } else {
+        ret = REQ_NONE;
     }
 
-    return ret;
-
-}
-
-static int analysis_cmd(char * buf) {
-    int  arg_cnt;
-    int  byte_cnt;
-    int  retval;
-    char * psrcbuf;
-    char * pdestbuf;
-
-    arg_cnt = 0;
-    byte_cnt = 0;
-    /* get reg req */
-    memset(&reg_req_buffer[0], 0, REG_REQ_BUF_SIZE);
-    psrcbuf  = buf;
-    pdestbuf = &reg_req_buffer[0];
-    while (((int32_t)*psrcbuf) != ':') {
-        if (byte_cnt >= REG_REQ_BUF_SIZE) {
-            arg_cnt = DATA_ANALY_ERROR;
-            goto err_out;
-        } else {
-            *pdestbuf = *psrcbuf;
-            byte_cnt++;
-            pdestbuf++;
-            psrcbuf++;
-        }
-    }
-    *pdestbuf = *psrcbuf;
-    if ((strncmp(&reg_req_buffer[0], "Wr:", REG_REQ_BUF_SIZE) == 0) || (strncmp(&reg_req_buffer[0], "Rd:", REG_REQ_BUF_SIZE) == 0) ||
-        (strncmp(&reg_req_buffer[0], "WrNoP:", REG_REQ_BUF_SIZE) == 0) || (strncmp(&reg_req_buffer[0], "RdNoP:", REG_REQ_BUF_SIZE) == 0)) {
-        /* get argument(I2C addr, len, data1, data2, data3, ...) */
+    if (ret != REQ_NONE) {
+        /* get argument(Reqest, I2C addr, len, data1, data2, data3, ...) */
+        p_reg_arg_buf[arg_cnt] = ret;
+        arg_cnt++;
         byte_cnt = 0;
-        memset(&reg_arg_buf[0], 0, sizeof(reg_arg_buf));
-        psrcbuf++;
         while (((int32_t)*psrcbuf) != CODE_NULL) {
-            retval = str_to_hex(psrcbuf, &reg_arg_buf[arg_cnt], byte_cnt);
-            if (retval == true) {
+            retval = str_to_hex(psrcbuf, &p_reg_arg_buf[arg_cnt], byte_cnt);
+            if (retval != false) {
                 byte_cnt++;
-                psrcbuf++;
                 if (byte_cnt >= ARG_MAX_SIZE) {
                     if ((arg_cnt + 1) >= ARG_MAX_NUM) {
-                        arg_cnt = DATA_ANALY_ERROR;
-                        goto err_out;
+                        ret = REQ_NONE;
+                        break;
                     } else {
                         arg_cnt++;
                         byte_cnt = 0;
                     }
                 }
-            } else {
-                psrcbuf++;
             }
+            psrcbuf++;
         }
-    } else {
-        arg_cnt = DATA_ANALY_ERROR;
-        goto err_out;
     }
-    
-err_out:
 
-    return arg_cnt;
+    return ret;
 }
 
-static void execute_cmd(void) {
-    char convert_data[(DATA_MAX_SIZE * 2) + NULL_SIZE];
+static void execute_cmd(char * buf, char * p_reg_arg_buf) {
+    int ret;
+    size_t len;
+    int stop = 0;
 
-    /* check length */
-    if (reg_arg_buf[1] >= DATA_MAX_SIZE) {
-        reg_arg_buf[1] = DATA_MAX_SIZE;
-    }
     /* check request */
-    if (strncmp(&reg_req_buffer[0], "Wr:", REG_REQ_BUF_SIZE) == 0) {
-        /* write */
-        memcpy(&wr_data[0], &reg_arg_buf[2], reg_arg_buf[1]);
-        (void)i2c.write(reg_arg_buf[0], wr_data, reg_arg_buf[1], 0);    // write(I2C Addr, write data, len, restart flg(=0))
-    } else if (strncmp(&reg_req_buffer[0], "Rd:", REG_REQ_BUF_SIZE) == 0) {
-        /* read */
-        memset(&rd_data[0], 0, reg_arg_buf[1]);
-        (void)i2c.read(reg_arg_buf[0], rd_data, reg_arg_buf[1], 0);     // read(I2C Addr, read data, len, restart flg(=0))
+    if ((p_reg_arg_buf[OFS_REQ] == REQ_WR_NO_P) || (p_reg_arg_buf[OFS_REQ] == REQ_RD_NO_P)) {
+        stop = 1;
+    }
 
-        char_to_16char(&convert_data[0], &rd_data[0], reg_arg_buf[1]);
-        DEBUGPRINT("    Read Data is %s\r\n", &convert_data[0]);
-    } else if (strncmp(&reg_req_buffer[0], "WrNoP:", REG_REQ_BUF_SIZE) == 0) {
-        /* write(non stop condition) */
-        memcpy(&wr_data[0], &reg_arg_buf[2], reg_arg_buf[1]);
-        (void)i2c.write(reg_arg_buf[0], wr_data, reg_arg_buf[1], 1);    // write(I2C Addr, write data, len, restart flg(=1))
-    } else if (strncmp(&reg_req_buffer[0], "RdNoP:", REG_REQ_BUF_SIZE) == 0) {
-        /* read(non stop condition) */
-        memset(&rd_data[0], 0, reg_arg_buf[1]);
-        (void)i2c.read(reg_arg_buf[0], rd_data, reg_arg_buf[1], 1);     // read(I2C Addr, read data, len, restart flg(=1))
-
-        char_to_16char(&convert_data[0], &rd_data[0], reg_arg_buf[1]);
-        DEBUGPRINT("    Read Data is %s\r\n", &convert_data[0]);
+    switch (p_reg_arg_buf[OFS_REQ]) {
+        case REQ_WR:
+        case REQ_WR_NO_P:
+            ret = i2c.write(p_reg_arg_buf[OFS_I2C_ADDR], &p_reg_arg_buf[OFS_DATA], p_reg_arg_buf[OFS_DATA_SIZE], stop);
+            if (ret == 0) {
+                sprintf(buf, "OK");
+            }
+        break;
+        case REQ_RD:
+        case REQ_RD_NO_P:
+            ret = i2c.read(p_reg_arg_buf[OFS_I2C_ADDR], &p_reg_arg_buf[OFS_DATA], p_reg_arg_buf[OFS_DATA_SIZE], stop);
+            if (ret == 0) {
+                sprintf(buf, "OK ");
+                len = strlen(buf);
+                char_to_16char(&buf[len], &p_reg_arg_buf[OFS_DATA], p_reg_arg_buf[OFS_DATA_SIZE]);
+            }
+        break;
+        default:
+        case REQ_NONE:
+            ret = -1;
+        break;
+    }
+    if (ret != 0) {
+        sprintf(buf, "NG");
     }
 }
 
-void analy_and_exe(char * buf) {
+bool i2c_setting_exe(char * buf) {
     int reg_arg_cnt;
+    char reg_arg_buf[ARG_MAX_NUM] = {0};
 
     /* analysis command */
-    reg_arg_cnt = analysis_cmd(buf);
-    if (reg_arg_cnt != DATA_ANALY_ERROR) {
+    reg_arg_cnt = analysis_cmd(buf, reg_arg_buf);
+    if (reg_arg_cnt != REQ_NONE) {
+        /* check length */
+        if (reg_arg_buf[OFS_DATA_SIZE] >= DATA_MAX_SIZE) {
+            reg_arg_buf[OFS_DATA_SIZE] = DATA_MAX_SIZE;
+        }
         /* execute command */
-        execute_cmd();
+        execute_cmd(buf, reg_arg_buf);
+        return true;
     }
+
+    return false;
 }
 
+#if(0) /* Please enable this line when performing the setting from the Terminal side. */
+Serial terminal(USBTX, USBRX);
+static char recv_term_buffer[I2C_SETTING_STR_BUF_SIZE];
+
 void SetI2CfromTerm(void const *argument) {
-    int ret;
+    int32_t term_buf_offset = 0;
+    char recv_data;
 
     while (1) {
-        ret = receive_term();
-        if (ret == true) {
-            /* command analysis and execute */
-            analy_and_exe(&recv_term_buffer[0]);
+        recv_data = terminal.getc();
+        /* echo back */
+        printf("%c", recv_data);
+        switch ((int32_t)recv_data) {
+            case 0x0A :
+                recv_term_buffer[term_buf_offset] = CODE_NULL;
+                term_buf_offset = 0;
+                /* command analysis and execute */
+                if (i2c_setting_exe(recv_term_buffer) != false) {
+                    terminal.puts(recv_term_buffer);
+                }
+            break;
+            case 0x0D :
+                /* Do Nothing */
+            break;
+            default :
+                /* check data_buffer size  */
+                if (term_buf_offset < I2C_SETTING_STR_BUF_SIZE) {
+                    recv_term_buffer[term_buf_offset] = recv_data;
+                    term_buf_offset++;
+                }
+            break;
         }
     }
 }
+#endif
 
--- a/i2c_setting.h	Mon Nov 02 01:11:12 2015 +0000
+++ b/i2c_setting.h	Thu Dec 03 08:10:53 2015 +0000
@@ -21,29 +21,8 @@
 #ifndef I2C_SETTING_H
 #define I2C_SETTING_H
 
-//#define DEBUGPRINT_CFG
-
-#ifdef  DEBUGPRINT_CFG
-#define DEBUGPRINT              printf
-#else
-#define DEBUGPRINT
-#endif
-
+#define I2C_SETTING_STR_BUF_SIZE   (150)
 
-#define RECV_BUF_SIZE           (1024)
-#define DATA_ANALY_ERROR        (-1)
-#define REG_REQ_BUF_SIZE        (7)
-#define DATA_MAX_SIZE           (32)
-#define ARG_MAX_NUM             (DATA_MAX_SIZE + 2)      // I2C addr, len, data1, data2, data3, ...
-#define ARG_MAX_SIZE            (2)                      // upper bit + lower bit
-#define NULL_SIZE               (1)
-#define CODE_NULL               (0x00)
-#define NUM_STR_TO_HEX          (0x30)
-#define BIG_STR_TO_HEX          (0x37)
-#define SMA_STR_TO_HEX          (0x57)
-#define MASK_HEX10              (0x10)
-
-extern void analy_and_exe(char * buf);
-extern void SetI2CfromTerm(void const *argument);
+extern bool i2c_setting_exe(char * buf);
 
 #endif
--- a/main.cpp	Mon Nov 02 01:11:12 2015 +0000
+++ b/main.cpp	Thu Dec 03 08:10:53 2015 +0000
@@ -1,6 +1,3 @@
-#if defined(__CC_ARM)
-#pragma O0
-#endif
 #include "mbed.h"
 #include "DisplayBace.h"
 #include "rtos.h"
@@ -63,8 +60,7 @@
 static int jcu_buf_index_write_done = 0;
 static int jcu_buf_index_read = 0;
 static int jcu_encoding = 0;
-static char recv_web_buffer[RECV_BUF_SIZE];
-static int32_t web_buf_offset;
+static char i2c_setting_str_buf[I2C_SETTING_STR_BUF_SIZE];
 
 static void JcuEncodeCallBackFunc(JPEG_Converter::jpeg_conv_error_t err_code) {
     jcu_buf_index_write_done = jcu_buf_index_write;
@@ -316,27 +312,12 @@
 }
 
 static void SetI2CfromWeb(Arguments* arg, Reply* r) {
-    size_t len_arg[2];
-
     if (*(arg->argv[0]) != 0) {
-        if (*(arg->argv[1]) != 0) {
-            DEBUGPRINT("%s,%s\n", arg->argv[0], arg->argv[1]);
-        } else {
-            DEBUGPRINT("%s\n", arg->argv[0]);
+        sprintf(i2c_setting_str_buf, "%s,%s", arg->argv[0], arg->argv[1]);
+        /* command analysis and execute */
+        if (i2c_setting_exe(i2c_setting_str_buf) != false) {
+            r->putData<const char*>(i2c_setting_str_buf);
         }
-
-        len_arg[0] = strlen(arg->argv[0]);
-        len_arg[1] = strlen(arg->argv[1]);
-
-        web_buf_offset = 0;
-        memcpy(&recv_web_buffer[0], arg->argv[0], len_arg[0]);
-        web_buf_offset = len_arg[0];
-        memset(&recv_web_buffer[web_buf_offset], ',', 1);
-        web_buf_offset++;
-        memcpy(&recv_web_buffer[web_buf_offset], arg->argv[1], len_arg[1]);
-        web_buf_offset += len_arg[1];
-        /* command analysis and execute */
-        analy_and_exe(&recv_web_buffer[0]);
     }
 }
 
--- a/mbed-rtos.lib	Mon Nov 02 01:11:12 2015 +0000
+++ b/mbed-rtos.lib	Thu Dec 03 08:10:53 2015 +0000
@@ -1,1 +1,1 @@
-http://developer.mbed.org/users/mbed_official/code/mbed-rtos/#12552ef4e980
+http://developer.mbed.org/users/mbed_official/code/mbed-rtos/#6c35e082773a
--- a/mbed.bld	Mon Nov 02 01:11:12 2015 +0000
+++ b/mbed.bld	Thu Dec 03 08:10:53 2015 +0000
@@ -1,1 +1,1 @@
-http://mbed.org/users/mbed_official/code/mbed/builds/34e6b704fe68
\ No newline at end of file
+http://mbed.org/users/mbed_official/code/mbed/builds/165afa46840b
\ No newline at end of file