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