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
Revision 7:c45ecff1b44d, committed 2015-12-03
- 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
--- 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(®_req_buffer[0], 0, REG_REQ_BUF_SIZE);
- psrcbuf = buf;
- pdestbuf = ®_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(®_req_buffer[0], "Wr:", REG_REQ_BUF_SIZE) == 0) || (strncmp(®_req_buffer[0], "Rd:", REG_REQ_BUF_SIZE) == 0) ||
- (strncmp(®_req_buffer[0], "WrNoP:", REG_REQ_BUF_SIZE) == 0) || (strncmp(®_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(®_arg_buf[0], 0, sizeof(reg_arg_buf));
- psrcbuf++;
while (((int32_t)*psrcbuf) != CODE_NULL) {
- retval = str_to_hex(psrcbuf, ®_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(®_req_buffer[0], "Wr:", REG_REQ_BUF_SIZE) == 0) {
- /* write */
- memcpy(&wr_data[0], ®_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(®_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(®_req_buffer[0], "WrNoP:", REG_REQ_BUF_SIZE) == 0) {
- /* write(non stop condition) */
- memcpy(&wr_data[0], ®_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(®_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
