Renesas GR PEACH Contest 2017

Dependencies:   GR-PEACH_video GraphicsFramework HttpServer_snapshot_mbed-os LWIPBP3595Interface_STA_for_mbed-os R_BSP RomRamBlockDevice mbed-rpc

Committer:
fxanhkhoa
Date:
Sat Sep 30 08:40:38 2017 +0000
Revision:
1:95d6a59176fd
Parent:
0:1bccf2cddb03
Renesas GR PEACH Contest 2017

Who changed what in which revision?

UserRevisionLine numberNew contents of line
fxanhkhoa 0:1bccf2cddb03 1 #include "mbed.h"
fxanhkhoa 0:1bccf2cddb03 2 #include "DisplayBace.h"
fxanhkhoa 0:1bccf2cddb03 3 #include "rtos.h"
fxanhkhoa 0:1bccf2cddb03 4 #include "JPEG_Converter.h"
fxanhkhoa 0:1bccf2cddb03 5 #include "HTTPServer.h"
fxanhkhoa 0:1bccf2cddb03 6 #include "mbed_rpc.h"
fxanhkhoa 0:1bccf2cddb03 7 #include "FATFileSystem.h"
fxanhkhoa 0:1bccf2cddb03 8 #include "RomRamBlockDevice.h"
fxanhkhoa 0:1bccf2cddb03 9 #include "file_table.h" //Binary data of web pages
fxanhkhoa 0:1bccf2cddb03 10 #include "i2c_setting.h"
fxanhkhoa 0:1bccf2cddb03 11 #include "Thread.h"
fxanhkhoa 0:1bccf2cddb03 12 #include "string.h"
fxanhkhoa 0:1bccf2cddb03 13 #include <stdlib.h>
fxanhkhoa 0:1bccf2cddb03 14 #include <math.h>
fxanhkhoa 0:1bccf2cddb03 15
fxanhkhoa 0:1bccf2cddb03 16 /* Define Value **********************************************/
fxanhkhoa 0:1bccf2cddb03 17 #define MAX_DAMGE 25
fxanhkhoa 0:1bccf2cddb03 18 #define MAX_HP 100
fxanhkhoa 0:1bccf2cddb03 19 #define stop_pos 21
fxanhkhoa 0:1bccf2cddb03 20 #define pass_pos 8
fxanhkhoa 0:1bccf2cddb03 21
fxanhkhoa 0:1bccf2cddb03 22 #define Encrypt_mode 1
fxanhkhoa 0:1bccf2cddb03 23
fxanhkhoa 0:1bccf2cddb03 24 /* Peripheral Import *****************************************/
fxanhkhoa 0:1bccf2cddb03 25 Serial Serial_Com(D9,D8); // USART through Pin D0, D1
fxanhkhoa 0:1bccf2cddb03 26 Serial pc(USBTX, USBRX);
fxanhkhoa 0:1bccf2cddb03 27
fxanhkhoa 0:1bccf2cddb03 28 /* Variables Import ******************************************/
fxanhkhoa 0:1bccf2cddb03 29 char buffer[50] ="";
fxanhkhoa 0:1bccf2cddb03 30 int pos = 0;
fxanhkhoa 0:1bccf2cddb03 31 int CurrentID; // ID of Sent Wearable device
fxanhkhoa 0:1bccf2cddb03 32 uint8_t PercentageDamge; // Damge deal
fxanhkhoa 0:1bccf2cddb03 33 char Amount; // Amount of RSSI found (just found wearble device)
fxanhkhoa 0:1bccf2cddb03 34 int *ID = new int[3];
fxanhkhoa 0:1bccf2cddb03 35 int *RSSI = new int[3];
fxanhkhoa 0:1bccf2cddb03 36 float hp[2] = {MAX_HP, MAX_HP};
fxanhkhoa 0:1bccf2cddb03 37 char mode = 0;
fxanhkhoa 0:1bccf2cddb03 38
fxanhkhoa 0:1bccf2cddb03 39 /* Function Define *******************************************/
fxanhkhoa 0:1bccf2cddb03 40 void Encrypt(char []);
fxanhkhoa 0:1bccf2cddb03 41 void calculate();
fxanhkhoa 0:1bccf2cddb03 42 float damge_real(int, int);
fxanhkhoa 0:1bccf2cddb03 43
fxanhkhoa 0:1bccf2cddb03 44 void callback(){
fxanhkhoa 0:1bccf2cddb03 45 //Serial_Com.scanf("%s", &buffer);
fxanhkhoa 0:1bccf2cddb03 46 buffer[pos] = Serial_Com.getc();
fxanhkhoa 0:1bccf2cddb03 47 pos ++;
fxanhkhoa 0:1bccf2cddb03 48 pc.putc(buffer[pos - 1]);
fxanhkhoa 0:1bccf2cddb03 49 if (pos == 30) pos = 0;
fxanhkhoa 0:1bccf2cddb03 50 if ((buffer[pos - 1] == '\n'))
fxanhkhoa 0:1bccf2cddb03 51 {
fxanhkhoa 0:1bccf2cddb03 52 if ((buffer[0] == 'C') &&
fxanhkhoa 0:1bccf2cddb03 53 (buffer[1] == 'U') &&
fxanhkhoa 0:1bccf2cddb03 54 (buffer[2] == '+') &&
fxanhkhoa 0:1bccf2cddb03 55 (buffer[3] == 'R') &&
fxanhkhoa 0:1bccf2cddb03 56 (buffer[4] == 'E') &&
fxanhkhoa 0:1bccf2cddb03 57 (buffer[5] == 'C') &&
fxanhkhoa 0:1bccf2cddb03 58 (buffer[6] == 'V') &&
fxanhkhoa 0:1bccf2cddb03 59 (buffer[7] == '+'))
fxanhkhoa 0:1bccf2cddb03 60 {
fxanhkhoa 0:1bccf2cddb03 61 //pc.printf("got recv\n");
fxanhkhoa 0:1bccf2cddb03 62 mode = Encrypt_mode;
fxanhkhoa 0:1bccf2cddb03 63 Encrypt(buffer);
fxanhkhoa 0:1bccf2cddb03 64 }
fxanhkhoa 0:1bccf2cddb03 65 pos = 0;
fxanhkhoa 0:1bccf2cddb03 66 strcpy(buffer,"");
fxanhkhoa 0:1bccf2cddb03 67 }
fxanhkhoa 0:1bccf2cddb03 68 }
fxanhkhoa 0:1bccf2cddb03 69
fxanhkhoa 0:1bccf2cddb03 70 #define VIDEO_CVBS (0) /* Analog Video Signal */
fxanhkhoa 0:1bccf2cddb03 71 #define VIDEO_CMOS_CAMERA (1) /* Digital Video Signal */
fxanhkhoa 0:1bccf2cddb03 72 #define VIDEO_YCBCR422 (0)
fxanhkhoa 0:1bccf2cddb03 73 #define VIDEO_RGB888 (1)
fxanhkhoa 0:1bccf2cddb03 74 #define VIDEO_RGB565 (2)
fxanhkhoa 0:1bccf2cddb03 75
fxanhkhoa 0:1bccf2cddb03 76 /**** User Selection *********/
fxanhkhoa 0:1bccf2cddb03 77 /** Network setting **/
fxanhkhoa 0:1bccf2cddb03 78 #define USE_DHCP (1) /* Select 0(static configuration) or 1(use DHCP) */
fxanhkhoa 0:1bccf2cddb03 79 #if (USE_DHCP == 0)
fxanhkhoa 0:1bccf2cddb03 80 #define IP_ADDRESS ("192.168.0.2") /* IP address */
fxanhkhoa 0:1bccf2cddb03 81 #define SUBNET_MASK ("255.255.255.0") /* Subnet mask */
fxanhkhoa 0:1bccf2cddb03 82 #define DEFAULT_GATEWAY ("192.168.0.3") /* Default gateway */
fxanhkhoa 0:1bccf2cddb03 83 #endif
fxanhkhoa 0:1bccf2cddb03 84 #define NETWORK_TYPE (0) /* Select 0(EthernetInterface) or 1(GR_PEACH_WlanBP3595) */
fxanhkhoa 0:1bccf2cddb03 85 #if (NETWORK_TYPE == 1)
fxanhkhoa 0:1bccf2cddb03 86 #define SCAN_NETWORK (1) /* Select 0(Use WLAN_SSID, WLAN_PSK, WLAN_SECURITY) or 1(To select a network using the terminal.) */
fxanhkhoa 0:1bccf2cddb03 87 #define WLAN_SSID ("SSIDofYourAP") /* SSID */
fxanhkhoa 0:1bccf2cddb03 88 #define WLAN_PSK ("PSKofYourAP") /* PSK(Pre-Shared Key) */
fxanhkhoa 0:1bccf2cddb03 89 #define WLAN_SECURITY NSAPI_SECURITY_WPA_WPA2 /* NSAPI_SECURITY_NONE, NSAPI_SECURITY_WEP, NSAPI_SECURITY_WPA, NSAPI_SECURITY_WPA2 or NSAPI_SECURITY_WPA_WPA2 */
fxanhkhoa 0:1bccf2cddb03 90 #endif
fxanhkhoa 0:1bccf2cddb03 91 /** Camera setting **/
fxanhkhoa 0:1bccf2cddb03 92 #define VIDEO_INPUT_METHOD (VIDEO_CMOS_CAMERA) /* Select VIDEO_CVBS or VIDEO_CMOS_CAMERA */
fxanhkhoa 0:1bccf2cddb03 93 #define VIDEO_INPUT_FORMAT (VIDEO_YCBCR422) /* Select VIDEO_YCBCR422 or VIDEO_RGB888 or VIDEO_RGB565 */
fxanhkhoa 0:1bccf2cddb03 94 #define USE_VIDEO_CH (0) /* Select 0 or 1 If selecting VIDEO_CMOS_CAMERA, should be 0.) */
fxanhkhoa 0:1bccf2cddb03 95 #define VIDEO_PAL (0) /* Select 0(NTSC) or 1(PAL) If selecting VIDEO_CVBS, this parameter is not referenced.) */
fxanhkhoa 0:1bccf2cddb03 96 /*****************************/
fxanhkhoa 0:1bccf2cddb03 97
fxanhkhoa 0:1bccf2cddb03 98 #if USE_VIDEO_CH == (0)
fxanhkhoa 0:1bccf2cddb03 99 #define VIDEO_INPUT_CH (DisplayBase::VIDEO_INPUT_CHANNEL_0)
fxanhkhoa 0:1bccf2cddb03 100 #define VIDEO_INT_TYPE (DisplayBase::INT_TYPE_S0_VFIELD)
fxanhkhoa 0:1bccf2cddb03 101 #else
fxanhkhoa 0:1bccf2cddb03 102 #define VIDEO_INPUT_CH (DisplayBase::VIDEO_INPUT_CHANNEL_1)
fxanhkhoa 0:1bccf2cddb03 103 #define VIDEO_INT_TYPE (DisplayBase::INT_TYPE_S1_VFIELD)
fxanhkhoa 0:1bccf2cddb03 104 #endif
fxanhkhoa 0:1bccf2cddb03 105
fxanhkhoa 0:1bccf2cddb03 106 #if ( VIDEO_INPUT_FORMAT == VIDEO_YCBCR422 || VIDEO_INPUT_FORMAT == VIDEO_RGB565 )
fxanhkhoa 0:1bccf2cddb03 107 #define DATA_SIZE_PER_PIC (2u)
fxanhkhoa 0:1bccf2cddb03 108 #else
fxanhkhoa 0:1bccf2cddb03 109 #define DATA_SIZE_PER_PIC (4u)
fxanhkhoa 0:1bccf2cddb03 110 #endif
fxanhkhoa 0:1bccf2cddb03 111
fxanhkhoa 0:1bccf2cddb03 112 /*! Frame buffer stride: Frame buffer stride should be set to a multiple of 32 or 128
fxanhkhoa 0:1bccf2cddb03 113 in accordance with the frame buffer burst transfer mode. */
fxanhkhoa 0:1bccf2cddb03 114 #define PIXEL_HW (320u) /* QVGA */
fxanhkhoa 0:1bccf2cddb03 115 #define PIXEL_VW (240u) /* QVGA */
fxanhkhoa 0:1bccf2cddb03 116
fxanhkhoa 0:1bccf2cddb03 117 #define VIDEO_BUFFER_STRIDE (((PIXEL_HW * DATA_SIZE_PER_PIC) + 31u) & ~31u)
fxanhkhoa 0:1bccf2cddb03 118 #define VIDEO_BUFFER_HEIGHT (PIXEL_VW)
fxanhkhoa 0:1bccf2cddb03 119
fxanhkhoa 0:1bccf2cddb03 120 #if (NETWORK_TYPE == 0)
fxanhkhoa 0:1bccf2cddb03 121 #include "EthernetInterface.h"
fxanhkhoa 0:1bccf2cddb03 122 EthernetInterface network;
fxanhkhoa 0:1bccf2cddb03 123 #elif (NETWORK_TYPE == 1)
fxanhkhoa 0:1bccf2cddb03 124 #include "LWIPBP3595Interface.h"
fxanhkhoa 0:1bccf2cddb03 125 LWIPBP3595Interface network;
fxanhkhoa 0:1bccf2cddb03 126 DigitalOut usb1en(P3_8);
fxanhkhoa 0:1bccf2cddb03 127 #else
fxanhkhoa 0:1bccf2cddb03 128 #error NETWORK_TYPE error
fxanhkhoa 0:1bccf2cddb03 129 #endif /* NETWORK_TYPE */
fxanhkhoa 0:1bccf2cddb03 130 FATFileSystem fs("storage");
fxanhkhoa 0:1bccf2cddb03 131 RomRamBlockDevice romram_bd(512000, 512);
fxanhkhoa 0:1bccf2cddb03 132
fxanhkhoa 0:1bccf2cddb03 133
fxanhkhoa 0:1bccf2cddb03 134 #if defined(__ICCARM__)
fxanhkhoa 0:1bccf2cddb03 135 #pragma data_alignment=16
fxanhkhoa 0:1bccf2cddb03 136 static uint8_t FrameBuffer_Video[VIDEO_BUFFER_STRIDE * VIDEO_BUFFER_HEIGHT]@ ".mirrorram"; //16 bytes aligned!;
fxanhkhoa 0:1bccf2cddb03 137 #pragma data_alignment=4
fxanhkhoa 0:1bccf2cddb03 138 #else
fxanhkhoa 0:1bccf2cddb03 139 static uint8_t FrameBuffer_Video[VIDEO_BUFFER_STRIDE * VIDEO_BUFFER_HEIGHT]__attribute((section("NC_BSS"),aligned(16))); //16 bytes aligned!;
fxanhkhoa 0:1bccf2cddb03 140 #endif
fxanhkhoa 0:1bccf2cddb03 141 static volatile int32_t vsync_count = 0;
fxanhkhoa 0:1bccf2cddb03 142 #if VIDEO_INPUT_METHOD == VIDEO_CVBS
fxanhkhoa 0:1bccf2cddb03 143 static volatile int32_t vfield_count = 1;
fxanhkhoa 0:1bccf2cddb03 144 #endif
fxanhkhoa 0:1bccf2cddb03 145 #if defined(__ICCARM__)
fxanhkhoa 0:1bccf2cddb03 146 #pragma data_alignment=8
fxanhkhoa 0:1bccf2cddb03 147 static uint8_t JpegBuffer[2][1024 * 50]@ ".mirrorram"; //8 bytes aligned!;
fxanhkhoa 0:1bccf2cddb03 148 #pragma data_alignment=4
fxanhkhoa 0:1bccf2cddb03 149 #else
fxanhkhoa 0:1bccf2cddb03 150 static uint8_t JpegBuffer[2][1024 * 50]__attribute((section("NC_BSS"),aligned(8))); //8 bytes aligned!;
fxanhkhoa 0:1bccf2cddb03 151 #endif
fxanhkhoa 0:1bccf2cddb03 152 static size_t jcu_encode_size[2];
fxanhkhoa 0:1bccf2cddb03 153 static int image_change = 0;
fxanhkhoa 0:1bccf2cddb03 154 JPEG_Converter Jcu;
fxanhkhoa 0:1bccf2cddb03 155 static int jcu_buf_index_write = 0;
fxanhkhoa 0:1bccf2cddb03 156 static int jcu_buf_index_write_done = 0;
fxanhkhoa 0:1bccf2cddb03 157 static int jcu_buf_index_read = 0;
fxanhkhoa 0:1bccf2cddb03 158 static int jcu_encoding = 0;
fxanhkhoa 0:1bccf2cddb03 159 static char i2c_setting_str_buf[I2C_SETTING_STR_BUF_SIZE];
fxanhkhoa 0:1bccf2cddb03 160
fxanhkhoa 0:1bccf2cddb03 161 static void JcuEncodeCallBackFunc(JPEG_Converter::jpeg_conv_error_t err_code) {
fxanhkhoa 0:1bccf2cddb03 162 jcu_buf_index_write_done = jcu_buf_index_write;
fxanhkhoa 0:1bccf2cddb03 163 image_change = 1;
fxanhkhoa 0:1bccf2cddb03 164 jcu_encoding = 0;
fxanhkhoa 0:1bccf2cddb03 165 }
fxanhkhoa 0:1bccf2cddb03 166
fxanhkhoa 0:1bccf2cddb03 167 static void IntCallbackFunc_Vfield(DisplayBase::int_type_t int_type) {
fxanhkhoa 0:1bccf2cddb03 168 //Interrupt callback function
fxanhkhoa 0:1bccf2cddb03 169 #if VIDEO_INPUT_METHOD == VIDEO_CVBS
fxanhkhoa 0:1bccf2cddb03 170 if (vfield_count != 0) {
fxanhkhoa 0:1bccf2cddb03 171 vfield_count = 0;
fxanhkhoa 0:1bccf2cddb03 172 } else {
fxanhkhoa 0:1bccf2cddb03 173 vfield_count = 1;
fxanhkhoa 0:1bccf2cddb03 174 #else
fxanhkhoa 0:1bccf2cddb03 175 {
fxanhkhoa 0:1bccf2cddb03 176 #endif
fxanhkhoa 0:1bccf2cddb03 177 JPEG_Converter::bitmap_buff_info_t bitmap_buff_info;
fxanhkhoa 0:1bccf2cddb03 178 JPEG_Converter::encode_options_t encode_options;
fxanhkhoa 0:1bccf2cddb03 179
fxanhkhoa 0:1bccf2cddb03 180 bitmap_buff_info.width = PIXEL_HW;
fxanhkhoa 0:1bccf2cddb03 181 bitmap_buff_info.height = PIXEL_VW;
fxanhkhoa 0:1bccf2cddb03 182 bitmap_buff_info.format = JPEG_Converter::WR_RD_YCbCr422;
fxanhkhoa 0:1bccf2cddb03 183 bitmap_buff_info.buffer_address = (void *)FrameBuffer_Video;
fxanhkhoa 0:1bccf2cddb03 184
fxanhkhoa 0:1bccf2cddb03 185 encode_options.encode_buff_size = sizeof(JpegBuffer[0]);
fxanhkhoa 0:1bccf2cddb03 186 encode_options.p_EncodeCallBackFunc = &JcuEncodeCallBackFunc;
fxanhkhoa 0:1bccf2cddb03 187
fxanhkhoa 0:1bccf2cddb03 188 jcu_encoding = 1;
fxanhkhoa 0:1bccf2cddb03 189 if (jcu_buf_index_read == jcu_buf_index_write) {
fxanhkhoa 0:1bccf2cddb03 190 if (jcu_buf_index_write != 0) {
fxanhkhoa 0:1bccf2cddb03 191 jcu_buf_index_write = 0;
fxanhkhoa 0:1bccf2cddb03 192 } else {
fxanhkhoa 0:1bccf2cddb03 193 jcu_buf_index_write = 1;
fxanhkhoa 0:1bccf2cddb03 194 }
fxanhkhoa 0:1bccf2cddb03 195 }
fxanhkhoa 0:1bccf2cddb03 196 jcu_encode_size[jcu_buf_index_write] = 0;
fxanhkhoa 0:1bccf2cddb03 197 if (Jcu.encode(&bitmap_buff_info, JpegBuffer[jcu_buf_index_write], &jcu_encode_size[jcu_buf_index_write], &encode_options) != JPEG_Converter::JPEG_CONV_OK) {
fxanhkhoa 0:1bccf2cddb03 198 jcu_encode_size[jcu_buf_index_write] = 0;
fxanhkhoa 0:1bccf2cddb03 199 jcu_encoding = 0;
fxanhkhoa 0:1bccf2cddb03 200 }
fxanhkhoa 0:1bccf2cddb03 201 }
fxanhkhoa 0:1bccf2cddb03 202 }
fxanhkhoa 0:1bccf2cddb03 203
fxanhkhoa 0:1bccf2cddb03 204 static void IntCallbackFunc_Vsync(DisplayBase::int_type_t int_type) {
fxanhkhoa 0:1bccf2cddb03 205 //Interrupt callback function for Vsync interruption
fxanhkhoa 0:1bccf2cddb03 206 if (vsync_count > 0) {
fxanhkhoa 0:1bccf2cddb03 207 vsync_count--;
fxanhkhoa 0:1bccf2cddb03 208 }
fxanhkhoa 0:1bccf2cddb03 209 }
fxanhkhoa 0:1bccf2cddb03 210
fxanhkhoa 0:1bccf2cddb03 211 static void WaitVsync(const int32_t wait_count) {
fxanhkhoa 0:1bccf2cddb03 212 //Wait for the specified number of times Vsync occurs
fxanhkhoa 0:1bccf2cddb03 213 vsync_count = wait_count;
fxanhkhoa 0:1bccf2cddb03 214 while (vsync_count > 0) {
fxanhkhoa 0:1bccf2cddb03 215 /* Do nothing */
fxanhkhoa 0:1bccf2cddb03 216 }
fxanhkhoa 0:1bccf2cddb03 217 }
fxanhkhoa 0:1bccf2cddb03 218
fxanhkhoa 0:1bccf2cddb03 219 static void camera_start(void) {
fxanhkhoa 0:1bccf2cddb03 220 DisplayBase::graphics_error_t error;
fxanhkhoa 0:1bccf2cddb03 221
fxanhkhoa 0:1bccf2cddb03 222 #if VIDEO_INPUT_METHOD == VIDEO_CMOS_CAMERA
fxanhkhoa 0:1bccf2cddb03 223 DisplayBase::video_ext_in_config_t ext_in_config;
fxanhkhoa 0:1bccf2cddb03 224 PinName cmos_camera_pin[11] = {
fxanhkhoa 0:1bccf2cddb03 225 /* data pin */
fxanhkhoa 0:1bccf2cddb03 226 P2_7, P2_6, P2_5, P2_4, P2_3, P2_2, P2_1, P2_0,
fxanhkhoa 0:1bccf2cddb03 227 /* control pin */
fxanhkhoa 0:1bccf2cddb03 228 P10_0, /* DV0_CLK */
fxanhkhoa 0:1bccf2cddb03 229 P1_0, /* DV0_Vsync */
fxanhkhoa 0:1bccf2cddb03 230 P1_1 /* DV0_Hsync */
fxanhkhoa 0:1bccf2cddb03 231 };
fxanhkhoa 0:1bccf2cddb03 232 #endif
fxanhkhoa 0:1bccf2cddb03 233
fxanhkhoa 0:1bccf2cddb03 234 /* Create DisplayBase object */
fxanhkhoa 0:1bccf2cddb03 235 DisplayBase Display;
fxanhkhoa 0:1bccf2cddb03 236
fxanhkhoa 0:1bccf2cddb03 237 /* Graphics initialization process */
fxanhkhoa 0:1bccf2cddb03 238 error = Display.Graphics_init(NULL);
fxanhkhoa 0:1bccf2cddb03 239 if (error != DisplayBase::GRAPHICS_OK) {
fxanhkhoa 0:1bccf2cddb03 240 printf("Line %d, error %d\n", __LINE__, error);
fxanhkhoa 0:1bccf2cddb03 241 while (1);
fxanhkhoa 0:1bccf2cddb03 242 }
fxanhkhoa 0:1bccf2cddb03 243
fxanhkhoa 0:1bccf2cddb03 244 #if VIDEO_INPUT_METHOD == VIDEO_CVBS
fxanhkhoa 0:1bccf2cddb03 245 error = Display.Graphics_Video_init( DisplayBase::INPUT_SEL_VDEC, NULL);
fxanhkhoa 0:1bccf2cddb03 246 if( error != DisplayBase::GRAPHICS_OK ) {
fxanhkhoa 0:1bccf2cddb03 247 printf("Line %d, error %d\n", __LINE__, error);
fxanhkhoa 0:1bccf2cddb03 248 while(1);
fxanhkhoa 0:1bccf2cddb03 249 }
fxanhkhoa 0:1bccf2cddb03 250
fxanhkhoa 0:1bccf2cddb03 251 #elif VIDEO_INPUT_METHOD == VIDEO_CMOS_CAMERA
fxanhkhoa 0:1bccf2cddb03 252 /* MT9V111 camera input config */
fxanhkhoa 0:1bccf2cddb03 253 ext_in_config.inp_format = DisplayBase::VIDEO_EXTIN_FORMAT_BT601; /* BT601 8bit YCbCr format */
fxanhkhoa 0:1bccf2cddb03 254 ext_in_config.inp_pxd_edge = DisplayBase::EDGE_RISING; /* Clock edge select for capturing data */
fxanhkhoa 0:1bccf2cddb03 255 ext_in_config.inp_vs_edge = DisplayBase::EDGE_RISING; /* Clock edge select for capturing Vsync signals */
fxanhkhoa 0:1bccf2cddb03 256 ext_in_config.inp_hs_edge = DisplayBase::EDGE_RISING; /* Clock edge select for capturing Hsync signals */
fxanhkhoa 0:1bccf2cddb03 257 ext_in_config.inp_endian_on = DisplayBase::OFF; /* External input bit endian change on/off */
fxanhkhoa 0:1bccf2cddb03 258 ext_in_config.inp_swap_on = DisplayBase::OFF; /* External input B/R signal swap on/off */
fxanhkhoa 0:1bccf2cddb03 259 ext_in_config.inp_vs_inv = DisplayBase::SIG_POL_NOT_INVERTED; /* External input DV_VSYNC inversion control */
fxanhkhoa 0:1bccf2cddb03 260 ext_in_config.inp_hs_inv = DisplayBase::SIG_POL_INVERTED; /* External input DV_HSYNC inversion control */
fxanhkhoa 0:1bccf2cddb03 261 ext_in_config.inp_f525_625 = DisplayBase::EXTIN_LINE_525; /* Number of lines for BT.656 external input */
fxanhkhoa 0:1bccf2cddb03 262 ext_in_config.inp_h_pos = DisplayBase::EXTIN_H_POS_CRYCBY; /* Y/Cb/Y/Cr data string start timing to Hsync reference */
fxanhkhoa 0:1bccf2cddb03 263 ext_in_config.cap_vs_pos = 6; /* Capture start position from Vsync */
fxanhkhoa 0:1bccf2cddb03 264 ext_in_config.cap_hs_pos = 150; /* Capture start position form Hsync */
fxanhkhoa 0:1bccf2cddb03 265 ext_in_config.cap_width = 640; /* Capture width */
fxanhkhoa 0:1bccf2cddb03 266 ext_in_config.cap_height = 468u; /* Capture height Max 468[line]
fxanhkhoa 0:1bccf2cddb03 267 Due to CMOS(MT9V111) output signal timing and VDC5 specification */
fxanhkhoa 0:1bccf2cddb03 268 error = Display.Graphics_Video_init( DisplayBase::INPUT_SEL_EXT, &ext_in_config);
fxanhkhoa 0:1bccf2cddb03 269 if( error != DisplayBase::GRAPHICS_OK ) {
fxanhkhoa 0:1bccf2cddb03 270 printf("Line %d, error %d\n", __LINE__, error);
fxanhkhoa 0:1bccf2cddb03 271 while(1);
fxanhkhoa 0:1bccf2cddb03 272 }
fxanhkhoa 0:1bccf2cddb03 273
fxanhkhoa 0:1bccf2cddb03 274 /* MT9V111 camera input port setting */
fxanhkhoa 0:1bccf2cddb03 275 error = Display.Graphics_Dvinput_Port_Init(cmos_camera_pin, 11);
fxanhkhoa 0:1bccf2cddb03 276 if( error != DisplayBase::GRAPHICS_OK ) {
fxanhkhoa 0:1bccf2cddb03 277 printf("Line %d, error %d\n", __LINE__, error);
fxanhkhoa 0:1bccf2cddb03 278 while (1);
fxanhkhoa 0:1bccf2cddb03 279 }
fxanhkhoa 0:1bccf2cddb03 280 #endif
fxanhkhoa 0:1bccf2cddb03 281
fxanhkhoa 0:1bccf2cddb03 282 /* Interrupt callback function setting (Vsync signal input to scaler 0) */
fxanhkhoa 0:1bccf2cddb03 283 error = Display.Graphics_Irq_Handler_Set(DisplayBase::INT_TYPE_S0_VI_VSYNC, 0, IntCallbackFunc_Vsync);
fxanhkhoa 0:1bccf2cddb03 284 if (error != DisplayBase::GRAPHICS_OK) {
fxanhkhoa 0:1bccf2cddb03 285 printf("Line %d, error %d\n", __LINE__, error);
fxanhkhoa 0:1bccf2cddb03 286 while (1);
fxanhkhoa 0:1bccf2cddb03 287 }
fxanhkhoa 0:1bccf2cddb03 288 /* Video capture setting (progressive form fixed) */
fxanhkhoa 0:1bccf2cddb03 289 error = Display.Video_Write_Setting(
fxanhkhoa 0:1bccf2cddb03 290 VIDEO_INPUT_CH,
fxanhkhoa 0:1bccf2cddb03 291 #if VIDEO_PAL == 0
fxanhkhoa 0:1bccf2cddb03 292 DisplayBase::COL_SYS_NTSC_358,
fxanhkhoa 0:1bccf2cddb03 293 #else
fxanhkhoa 0:1bccf2cddb03 294 DisplayBase::COL_SYS_PAL_443,
fxanhkhoa 0:1bccf2cddb03 295 #endif
fxanhkhoa 0:1bccf2cddb03 296 FrameBuffer_Video,
fxanhkhoa 0:1bccf2cddb03 297 VIDEO_BUFFER_STRIDE,
fxanhkhoa 0:1bccf2cddb03 298 #if VIDEO_INPUT_FORMAT == VIDEO_YCBCR422
fxanhkhoa 0:1bccf2cddb03 299 DisplayBase::VIDEO_FORMAT_YCBCR422,
fxanhkhoa 0:1bccf2cddb03 300 DisplayBase::WR_RD_WRSWA_NON,
fxanhkhoa 0:1bccf2cddb03 301 #elif VIDEO_INPUT_FORMAT == VIDEO_RGB565
fxanhkhoa 0:1bccf2cddb03 302 DisplayBase::VIDEO_FORMAT_RGB565,
fxanhkhoa 0:1bccf2cddb03 303 DisplayBase::WR_RD_WRSWA_32_16BIT,
fxanhkhoa 0:1bccf2cddb03 304 #else
fxanhkhoa 0:1bccf2cddb03 305 DisplayBase::VIDEO_FORMAT_RGB888,
fxanhkhoa 0:1bccf2cddb03 306 DisplayBase::WR_RD_WRSWA_32BIT,
fxanhkhoa 0:1bccf2cddb03 307 #endif
fxanhkhoa 0:1bccf2cddb03 308 PIXEL_VW,
fxanhkhoa 0:1bccf2cddb03 309 PIXEL_HW
fxanhkhoa 0:1bccf2cddb03 310 );
fxanhkhoa 0:1bccf2cddb03 311 if (error != DisplayBase::GRAPHICS_OK) {
fxanhkhoa 0:1bccf2cddb03 312 printf("Line %d, error %d\n", __LINE__, error);
fxanhkhoa 0:1bccf2cddb03 313 while (1);
fxanhkhoa 0:1bccf2cddb03 314 }
fxanhkhoa 0:1bccf2cddb03 315
fxanhkhoa 0:1bccf2cddb03 316 /* Interrupt callback function setting (Field end signal for recording function in scaler 0) */
fxanhkhoa 0:1bccf2cddb03 317 error = Display.Graphics_Irq_Handler_Set(VIDEO_INT_TYPE, 0, IntCallbackFunc_Vfield);
fxanhkhoa 0:1bccf2cddb03 318 if (error != DisplayBase::GRAPHICS_OK) {
fxanhkhoa 0:1bccf2cddb03 319 printf("Line %d, error %d\n", __LINE__, error);
fxanhkhoa 0:1bccf2cddb03 320 while (1);
fxanhkhoa 0:1bccf2cddb03 321 }
fxanhkhoa 0:1bccf2cddb03 322
fxanhkhoa 0:1bccf2cddb03 323 /* Video write process start */
fxanhkhoa 0:1bccf2cddb03 324 error = Display.Video_Start (VIDEO_INPUT_CH);
fxanhkhoa 0:1bccf2cddb03 325 if (error != DisplayBase::GRAPHICS_OK) {
fxanhkhoa 0:1bccf2cddb03 326 printf("Line %d, error %d\n", __LINE__, error);
fxanhkhoa 0:1bccf2cddb03 327 while (1);
fxanhkhoa 0:1bccf2cddb03 328 }
fxanhkhoa 0:1bccf2cddb03 329
fxanhkhoa 0:1bccf2cddb03 330 /* Video write process stop */
fxanhkhoa 0:1bccf2cddb03 331 error = Display.Video_Stop (VIDEO_INPUT_CH);
fxanhkhoa 0:1bccf2cddb03 332 if (error != DisplayBase::GRAPHICS_OK) {
fxanhkhoa 0:1bccf2cddb03 333 printf("Line %d, error %d\n", __LINE__, error);
fxanhkhoa 0:1bccf2cddb03 334 while (1);
fxanhkhoa 0:1bccf2cddb03 335 }
fxanhkhoa 0:1bccf2cddb03 336
fxanhkhoa 0:1bccf2cddb03 337 /* Video write process start */
fxanhkhoa 0:1bccf2cddb03 338 error = Display.Video_Start (VIDEO_INPUT_CH);
fxanhkhoa 0:1bccf2cddb03 339 if (error != DisplayBase::GRAPHICS_OK) {
fxanhkhoa 0:1bccf2cddb03 340 printf("Line %d, error %d\n", __LINE__, error);
fxanhkhoa 0:1bccf2cddb03 341 while (1);
fxanhkhoa 0:1bccf2cddb03 342 }
fxanhkhoa 0:1bccf2cddb03 343
fxanhkhoa 0:1bccf2cddb03 344 /* Wait vsync to update resister */
fxanhkhoa 0:1bccf2cddb03 345 WaitVsync(1);
fxanhkhoa 0:1bccf2cddb03 346 }
fxanhkhoa 0:1bccf2cddb03 347
fxanhkhoa 0:1bccf2cddb03 348 static int snapshot_req(const char ** pp_data) {
fxanhkhoa 0:1bccf2cddb03 349 int encode_size;
fxanhkhoa 0:1bccf2cddb03 350
fxanhkhoa 0:1bccf2cddb03 351 while ((jcu_encoding == 1) || (image_change == 0)) {
fxanhkhoa 0:1bccf2cddb03 352 Thread::wait(1);
fxanhkhoa 0:1bccf2cddb03 353 }
fxanhkhoa 0:1bccf2cddb03 354 jcu_buf_index_read = jcu_buf_index_write_done;
fxanhkhoa 0:1bccf2cddb03 355 image_change = 0;
fxanhkhoa 0:1bccf2cddb03 356
fxanhkhoa 0:1bccf2cddb03 357 *pp_data = (const char *)JpegBuffer[jcu_buf_index_read];
fxanhkhoa 0:1bccf2cddb03 358 encode_size = (int)jcu_encode_size[jcu_buf_index_read];
fxanhkhoa 0:1bccf2cddb03 359
fxanhkhoa 0:1bccf2cddb03 360 return encode_size;
fxanhkhoa 0:1bccf2cddb03 361 }
fxanhkhoa 0:1bccf2cddb03 362
fxanhkhoa 0:1bccf2cddb03 363 static void TerminalWrite(Arguments* arg, Reply* r) {
fxanhkhoa 0:1bccf2cddb03 364 if ((arg != NULL) && (r != NULL)) {
fxanhkhoa 0:1bccf2cddb03 365 for (int i = 0; i < arg->argc; i++) {
fxanhkhoa 0:1bccf2cddb03 366 if (arg->argv[i] != NULL) {
fxanhkhoa 0:1bccf2cddb03 367 printf("%s", arg->argv[i]);
fxanhkhoa 0:1bccf2cddb03 368 }
fxanhkhoa 0:1bccf2cddb03 369 }
fxanhkhoa 0:1bccf2cddb03 370 printf("\n");
fxanhkhoa 0:1bccf2cddb03 371 r->putData<const char*>("ok");
fxanhkhoa 0:1bccf2cddb03 372 }
fxanhkhoa 0:1bccf2cddb03 373 }
fxanhkhoa 0:1bccf2cddb03 374
fxanhkhoa 0:1bccf2cddb03 375 static void mount_romramfs(void) {
fxanhkhoa 0:1bccf2cddb03 376 FILE * fp;
fxanhkhoa 0:1bccf2cddb03 377
fxanhkhoa 0:1bccf2cddb03 378 romram_bd.SetRomAddr(0x18000000, 0x1FFFFFFF);
fxanhkhoa 0:1bccf2cddb03 379 fs.format(&romram_bd, 512);
fxanhkhoa 0:1bccf2cddb03 380 fs.mount(&romram_bd);
fxanhkhoa 0:1bccf2cddb03 381
fxanhkhoa 0:1bccf2cddb03 382 //index.htm
fxanhkhoa 0:1bccf2cddb03 383 fp = fopen("/storage/index.htm", "w");
fxanhkhoa 0:1bccf2cddb03 384 fwrite(index_htm_tbl, sizeof(char), sizeof(index_htm_tbl), fp);
fxanhkhoa 0:1bccf2cddb03 385 fclose(fp);
fxanhkhoa 0:1bccf2cddb03 386
fxanhkhoa 0:1bccf2cddb03 387 //camera.js
fxanhkhoa 0:1bccf2cddb03 388 fp = fopen("/storage/camera.js", "w");
fxanhkhoa 0:1bccf2cddb03 389 fwrite(camaera_js_tbl, sizeof(char), sizeof(camaera_js_tbl), fp);
fxanhkhoa 0:1bccf2cddb03 390 fclose(fp);
fxanhkhoa 0:1bccf2cddb03 391
fxanhkhoa 0:1bccf2cddb03 392 //camera.htm
fxanhkhoa 0:1bccf2cddb03 393 fp = fopen("/storage/camera.htm", "w");
fxanhkhoa 0:1bccf2cddb03 394 fwrite(camera_htm_tbl, sizeof(char), sizeof(camera_htm_tbl), fp);
fxanhkhoa 0:1bccf2cddb03 395 fclose(fp);
fxanhkhoa 0:1bccf2cddb03 396
fxanhkhoa 0:1bccf2cddb03 397 //mbedrpc.js
fxanhkhoa 0:1bccf2cddb03 398 fp = fopen("/storage/mbedrpc.js", "w");
fxanhkhoa 0:1bccf2cddb03 399 fwrite(mbedrpc_js_tbl, sizeof(char), sizeof(mbedrpc_js_tbl), fp);
fxanhkhoa 0:1bccf2cddb03 400 fclose(fp);
fxanhkhoa 0:1bccf2cddb03 401
fxanhkhoa 0:1bccf2cddb03 402 //led.htm
fxanhkhoa 0:1bccf2cddb03 403 fp = fopen("/storage/led.htm", "w");
fxanhkhoa 0:1bccf2cddb03 404 fwrite(led_htm_tbl, sizeof(char), sizeof(led_htm_tbl), fp);
fxanhkhoa 0:1bccf2cddb03 405 fclose(fp);
fxanhkhoa 0:1bccf2cddb03 406
fxanhkhoa 0:1bccf2cddb03 407 //i2c_set.htm
fxanhkhoa 0:1bccf2cddb03 408 fp = fopen("/storage/i2c_set.htm", "w");
fxanhkhoa 0:1bccf2cddb03 409 fwrite(i2c_set_htm_tbl, sizeof(char), sizeof(i2c_set_htm_tbl), fp);
fxanhkhoa 0:1bccf2cddb03 410 fclose(fp);
fxanhkhoa 0:1bccf2cddb03 411
fxanhkhoa 0:1bccf2cddb03 412 //web_top.htm
fxanhkhoa 0:1bccf2cddb03 413 fp = fopen("/storage/web_top.htm", "w");
fxanhkhoa 0:1bccf2cddb03 414 fwrite(web_top_htm_tbl, sizeof(char), sizeof(web_top_htm_tbl), fp);
fxanhkhoa 0:1bccf2cddb03 415 fclose(fp);
fxanhkhoa 0:1bccf2cddb03 416
fxanhkhoa 0:1bccf2cddb03 417 //menu.htm
fxanhkhoa 0:1bccf2cddb03 418 fp = fopen("/storage/menu.htm", "w");
fxanhkhoa 0:1bccf2cddb03 419 fwrite(menu_htm_tbl, sizeof(char), sizeof(menu_htm_tbl), fp);
fxanhkhoa 0:1bccf2cddb03 420 fclose(fp);
fxanhkhoa 0:1bccf2cddb03 421
fxanhkhoa 0:1bccf2cddb03 422 //window.htm
fxanhkhoa 0:1bccf2cddb03 423 fp = fopen("/storage/window.htm", "w");
fxanhkhoa 0:1bccf2cddb03 424 fwrite(window_htm_tbl, sizeof(char), sizeof(window_htm_tbl), fp);
fxanhkhoa 0:1bccf2cddb03 425 fclose(fp);
fxanhkhoa 0:1bccf2cddb03 426
fxanhkhoa 0:1bccf2cddb03 427 //show.js
fxanhkhoa 0:1bccf2cddb03 428 fp = fopen("/storage/Show.js", "w");
fxanhkhoa 0:1bccf2cddb03 429 fwrite(show_js_tbl, sizeof(char), sizeof(show_js_tbl), fp);
fxanhkhoa 0:1bccf2cddb03 430 fclose(fp);
fxanhkhoa 0:1bccf2cddb03 431 }
fxanhkhoa 0:1bccf2cddb03 432
fxanhkhoa 0:1bccf2cddb03 433 static void SetI2CfromWeb(Arguments* arg, Reply* r) {
fxanhkhoa 0:1bccf2cddb03 434 int result = 0;
fxanhkhoa 0:1bccf2cddb03 435
fxanhkhoa 0:1bccf2cddb03 436 if (arg != NULL) {
fxanhkhoa 0:1bccf2cddb03 437 if (arg->argc >= 2) {
fxanhkhoa 0:1bccf2cddb03 438 if ((arg->argv[0] != NULL) && (arg->argv[1] != NULL)) {
fxanhkhoa 0:1bccf2cddb03 439 sprintf(i2c_setting_str_buf, "%s,%s", arg->argv[0], arg->argv[1]);
fxanhkhoa 0:1bccf2cddb03 440 result = 1;
fxanhkhoa 0:1bccf2cddb03 441 }
fxanhkhoa 0:1bccf2cddb03 442 } else if (arg->argc == 1) {
fxanhkhoa 0:1bccf2cddb03 443 if (arg->argv[0] != NULL) {
fxanhkhoa 0:1bccf2cddb03 444 sprintf(i2c_setting_str_buf, "%s", arg->argv[0]);
fxanhkhoa 0:1bccf2cddb03 445 result = 1;
fxanhkhoa 0:1bccf2cddb03 446 }
fxanhkhoa 0:1bccf2cddb03 447 } else {
fxanhkhoa 0:1bccf2cddb03 448 /* Do nothing */
fxanhkhoa 0:1bccf2cddb03 449 }
fxanhkhoa 0:1bccf2cddb03 450 /* command analysis and execute */
fxanhkhoa 0:1bccf2cddb03 451 if (result != 0) {
fxanhkhoa 0:1bccf2cddb03 452 if (i2c_setting_exe(i2c_setting_str_buf) != false) {
fxanhkhoa 0:1bccf2cddb03 453 r->putData<const char*>(i2c_setting_str_buf);
fxanhkhoa 0:1bccf2cddb03 454 }
fxanhkhoa 0:1bccf2cddb03 455 }
fxanhkhoa 0:1bccf2cddb03 456 }
fxanhkhoa 0:1bccf2cddb03 457 }
fxanhkhoa 0:1bccf2cddb03 458
fxanhkhoa 0:1bccf2cddb03 459 #if (SCAN_NETWORK == 1)
fxanhkhoa 0:1bccf2cddb03 460 static const char *sec2str(nsapi_security_t sec) {
fxanhkhoa 0:1bccf2cddb03 461 switch (sec) {
fxanhkhoa 0:1bccf2cddb03 462 case NSAPI_SECURITY_NONE:
fxanhkhoa 0:1bccf2cddb03 463 return "None";
fxanhkhoa 0:1bccf2cddb03 464 case NSAPI_SECURITY_WEP:
fxanhkhoa 0:1bccf2cddb03 465 return "WEP";
fxanhkhoa 0:1bccf2cddb03 466 case NSAPI_SECURITY_WPA:
fxanhkhoa 0:1bccf2cddb03 467 return "WPA";
fxanhkhoa 0:1bccf2cddb03 468 case NSAPI_SECURITY_WPA2:
fxanhkhoa 0:1bccf2cddb03 469 return "WPA2";
fxanhkhoa 0:1bccf2cddb03 470 case NSAPI_SECURITY_WPA_WPA2:
fxanhkhoa 0:1bccf2cddb03 471 return "WPA/WPA2";
fxanhkhoa 0:1bccf2cddb03 472 case NSAPI_SECURITY_UNKNOWN:
fxanhkhoa 0:1bccf2cddb03 473 default:
fxanhkhoa 0:1bccf2cddb03 474 return "Unknown";
fxanhkhoa 0:1bccf2cddb03 475 }
fxanhkhoa 0:1bccf2cddb03 476 }
fxanhkhoa 0:1bccf2cddb03 477
fxanhkhoa 0:1bccf2cddb03 478 static bool scan_network(WiFiInterface *wifi) {
fxanhkhoa 0:1bccf2cddb03 479 WiFiAccessPoint *ap;
fxanhkhoa 0:1bccf2cddb03 480 bool ret = false;
fxanhkhoa 0:1bccf2cddb03 481 int i;
fxanhkhoa 0:1bccf2cddb03 482 int count = 8; /* Limit number of network arbitrary to 8 */
fxanhkhoa 0:1bccf2cddb03 483
fxanhkhoa 0:1bccf2cddb03 484 printf("Scan:\r\n");
fxanhkhoa 0:1bccf2cddb03 485 ap = new WiFiAccessPoint[count];
fxanhkhoa 0:1bccf2cddb03 486 count = wifi->scan(ap, count);
fxanhkhoa 0:1bccf2cddb03 487 for (i = 0; i < count; i++) {
fxanhkhoa 0:1bccf2cddb03 488 printf("No.%d Network: %s secured: %s BSSID: %hhX:%hhX:%hhX:%hhx:%hhx:%hhx RSSI: %hhd Ch: %hhd\r\n", i, ap[i].get_ssid(),
fxanhkhoa 0:1bccf2cddb03 489 sec2str(ap[i].get_security()), ap[i].get_bssid()[0], ap[i].get_bssid()[1], ap[i].get_bssid()[2],
fxanhkhoa 0:1bccf2cddb03 490 ap[i].get_bssid()[3], ap[i].get_bssid()[4], ap[i].get_bssid()[5], ap[i].get_rssi(), ap[i].get_channel());
fxanhkhoa 0:1bccf2cddb03 491 }
fxanhkhoa 0:1bccf2cddb03 492 printf("%d networks available.\r\n", count);
fxanhkhoa 0:1bccf2cddb03 493
fxanhkhoa 0:1bccf2cddb03 494 if (count > 0) {
fxanhkhoa 0:1bccf2cddb03 495 char c;
fxanhkhoa 0:1bccf2cddb03 496 char pass[64];
fxanhkhoa 0:1bccf2cddb03 497 int select_no;
fxanhkhoa 0:1bccf2cddb03 498 bool loop_break = false;;
fxanhkhoa 0:1bccf2cddb03 499
fxanhkhoa 0:1bccf2cddb03 500 printf("\nPlease enter the number of the network you want to connect.\r\n");
fxanhkhoa 0:1bccf2cddb03 501 printf("Enter key:[0]-[%d], (If inputting the other key, it's scanned again.)\r\n", count - 1);
fxanhkhoa 0:1bccf2cddb03 502 c = (uint8_t)pc.getc();
fxanhkhoa 0:1bccf2cddb03 503 select_no = c - 0x30;
fxanhkhoa 0:1bccf2cddb03 504 if ((select_no >= 0) && (select_no < count)) {
fxanhkhoa 0:1bccf2cddb03 505 printf("[%s] is selected.\r\n", ap[select_no].get_ssid());
fxanhkhoa 0:1bccf2cddb03 506 printf("Please enter the PSK.\r\n");
fxanhkhoa 0:1bccf2cddb03 507 i = 0;
fxanhkhoa 0:1bccf2cddb03 508 while (loop_break == false) {
fxanhkhoa 0:1bccf2cddb03 509 c = (uint8_t)pc.getc();
fxanhkhoa 0:1bccf2cddb03 510 switch (c) {
fxanhkhoa 0:1bccf2cddb03 511 case 0x0D:
fxanhkhoa 0:1bccf2cddb03 512 pass[i] = '\0';
fxanhkhoa 0:1bccf2cddb03 513 pc.puts("\r\n");
fxanhkhoa 0:1bccf2cddb03 514 loop_break = true;
fxanhkhoa 0:1bccf2cddb03 515 break;
fxanhkhoa 0:1bccf2cddb03 516 case 0x08:
fxanhkhoa 0:1bccf2cddb03 517 if (i > 0) {
fxanhkhoa 0:1bccf2cddb03 518 pc.puts("\b \b");
fxanhkhoa 0:1bccf2cddb03 519 i--;
fxanhkhoa 0:1bccf2cddb03 520 }
fxanhkhoa 0:1bccf2cddb03 521 break;
fxanhkhoa 0:1bccf2cddb03 522 case 0x0A:
fxanhkhoa 0:1bccf2cddb03 523 break;
fxanhkhoa 0:1bccf2cddb03 524 default:
fxanhkhoa 0:1bccf2cddb03 525 if ((i + 1) < sizeof(pass)) {
fxanhkhoa 0:1bccf2cddb03 526 pass[i] = c;
fxanhkhoa 0:1bccf2cddb03 527 i++;
fxanhkhoa 0:1bccf2cddb03 528 pc.putc(c);
fxanhkhoa 0:1bccf2cddb03 529 }
fxanhkhoa 0:1bccf2cddb03 530 break;
fxanhkhoa 0:1bccf2cddb03 531 }
fxanhkhoa 0:1bccf2cddb03 532 }
fxanhkhoa 0:1bccf2cddb03 533 printf("connecting...\r\n");
fxanhkhoa 0:1bccf2cddb03 534 wifi->set_credentials(ap[select_no].get_ssid(), pass, ap[select_no].get_security());
fxanhkhoa 0:1bccf2cddb03 535 ret = true;
fxanhkhoa 0:1bccf2cddb03 536 }
fxanhkhoa 0:1bccf2cddb03 537 }
fxanhkhoa 0:1bccf2cddb03 538
fxanhkhoa 0:1bccf2cddb03 539 delete[] ap;
fxanhkhoa 0:1bccf2cddb03 540
fxanhkhoa 0:1bccf2cddb03 541 return ret;
fxanhkhoa 0:1bccf2cddb03 542 }
fxanhkhoa 0:1bccf2cddb03 543 #endif
fxanhkhoa 0:1bccf2cddb03 544
fxanhkhoa 0:1bccf2cddb03 545 float Request = 80;
fxanhkhoa 0:1bccf2cddb03 546 RPCVariable<float> RPCRequest(&Request, "Request");
fxanhkhoa 0:1bccf2cddb03 547 Thread thread, thread_HTTP;
fxanhkhoa 0:1bccf2cddb03 548
fxanhkhoa 0:1bccf2cddb03 549 void HTTP()
fxanhkhoa 0:1bccf2cddb03 550 {
fxanhkhoa 0:1bccf2cddb03 551 HTTPServerStart(&network, 80);
fxanhkhoa 0:1bccf2cddb03 552 while (true)
fxanhkhoa 0:1bccf2cddb03 553 {
fxanhkhoa 0:1bccf2cddb03 554 printf("HTTP thread\n");
fxanhkhoa 0:1bccf2cddb03 555 Thread::wait(100);
fxanhkhoa 0:1bccf2cddb03 556 }
fxanhkhoa 0:1bccf2cddb03 557 }
fxanhkhoa 0:1bccf2cddb03 558
fxanhkhoa 0:1bccf2cddb03 559 void test()
fxanhkhoa 0:1bccf2cddb03 560 {
fxanhkhoa 0:1bccf2cddb03 561 while (true)
fxanhkhoa 0:1bccf2cddb03 562 {
fxanhkhoa 0:1bccf2cddb03 563
fxanhkhoa 0:1bccf2cddb03 564 //Request++;
fxanhkhoa 0:1bccf2cddb03 565 //printf("abcd");
fxanhkhoa 0:1bccf2cddb03 566 /*if (Request == 0)
fxanhkhoa 0:1bccf2cddb03 567 {
fxanhkhoa 0:1bccf2cddb03 568 printf("0");
fxanhkhoa 0:1bccf2cddb03 569 Request = 1;
fxanhkhoa 0:1bccf2cddb03 570 }
fxanhkhoa 0:1bccf2cddb03 571 else if (Request == 1)
fxanhkhoa 0:1bccf2cddb03 572 {
fxanhkhoa 0:1bccf2cddb03 573 printf("1");
fxanhkhoa 0:1bccf2cddb03 574 Request = 2;
fxanhkhoa 0:1bccf2cddb03 575 }*/
fxanhkhoa 0:1bccf2cddb03 576 if (mode == Encrypt_mode)
fxanhkhoa 0:1bccf2cddb03 577 {
fxanhkhoa 0:1bccf2cddb03 578 Encrypt(buffer);
fxanhkhoa 0:1bccf2cddb03 579 mode = 0;
fxanhkhoa 0:1bccf2cddb03 580 }
fxanhkhoa 0:1bccf2cddb03 581 printf("thread test \n");
fxanhkhoa 0:1bccf2cddb03 582 Thread::wait(100);
fxanhkhoa 0:1bccf2cddb03 583 }
fxanhkhoa 0:1bccf2cddb03 584 }
fxanhkhoa 0:1bccf2cddb03 585
fxanhkhoa 0:1bccf2cddb03 586 int main(void) {
fxanhkhoa 0:1bccf2cddb03 587 pc.baud(115200);
fxanhkhoa 0:1bccf2cddb03 588 Serial_Com.baud(115200);
fxanhkhoa 0:1bccf2cddb03 589 //strcpy(buffer,"CU+RECV+#010000102-72\n");
fxanhkhoa 0:1bccf2cddb03 590 Serial_Com.attach(&callback);
fxanhkhoa 0:1bccf2cddb03 591 //pc.printf("go go \n");
fxanhkhoa 0:1bccf2cddb03 592 //Serial_Com.printf("go go \n");
fxanhkhoa 0:1bccf2cddb03 593 //Serial_Com.putc('a');
fxanhkhoa 0:1bccf2cddb03 594 printf("********* PROGRAM START ***********\r\n");
fxanhkhoa 0:1bccf2cddb03 595
fxanhkhoa 0:1bccf2cddb03 596 /* Please enable this line when performing the setting from the Terminal side. */
fxanhkhoa 0:1bccf2cddb03 597 // Thread thread(SetI2CfromTerm, NULL, osPriorityBelowNormal, DEFAULT_STACK_SIZE);
fxanhkhoa 0:1bccf2cddb03 598
fxanhkhoa 0:1bccf2cddb03 599 mount_romramfs(); //RomRamFileSystem Mount
fxanhkhoa 0:1bccf2cddb03 600 camera_start(); //Camera Start
fxanhkhoa 0:1bccf2cddb03 601
fxanhkhoa 0:1bccf2cddb03 602 RPC::add_rpc_class<RpcDigitalOut>();
fxanhkhoa 0:1bccf2cddb03 603 RPC::construct<RpcDigitalOut, PinName, const char*>(LED1, "led1");
fxanhkhoa 0:1bccf2cddb03 604 RPC::construct<RpcDigitalOut, PinName, const char*>(LED2, "led2");
fxanhkhoa 0:1bccf2cddb03 605 RPC::construct<RpcDigitalOut, PinName, const char*>(LED3, "led3");
fxanhkhoa 0:1bccf2cddb03 606
fxanhkhoa 0:1bccf2cddb03 607 RPCFunction rpcFunc(TerminalWrite, "TerminalWrite");
fxanhkhoa 0:1bccf2cddb03 608 RPCFunction rpcSetI2C(SetI2CfromWeb, "SetI2CfromWeb");
fxanhkhoa 0:1bccf2cddb03 609
fxanhkhoa 0:1bccf2cddb03 610 #if (NETWORK_TYPE == 1)
fxanhkhoa 0:1bccf2cddb03 611 //Audio Camera Shield USB1 enable for WlanBP3595
fxanhkhoa 0:1bccf2cddb03 612 usb1en = 1; //Outputs high level
fxanhkhoa 0:1bccf2cddb03 613 Thread::wait(5);
fxanhkhoa 0:1bccf2cddb03 614 usb1en = 0; //Outputs low level
fxanhkhoa 0:1bccf2cddb03 615 Thread::wait(5);
fxanhkhoa 0:1bccf2cddb03 616 #endif
fxanhkhoa 0:1bccf2cddb03 617
fxanhkhoa 0:1bccf2cddb03 618 printf("Network Setting up...\r\n");
fxanhkhoa 0:1bccf2cddb03 619 #if (USE_DHCP == 0)
fxanhkhoa 0:1bccf2cddb03 620 network.set_dhcp(false);
fxanhkhoa 0:1bccf2cddb03 621 if (network.set_network(IP_ADDRESS, SUBNET_MASK, DEFAULT_GATEWAY) != 0) { //for Static IP Address (IPAddress, NetMasks, Gateway)
fxanhkhoa 0:1bccf2cddb03 622 printf("Network Set Network Error \r\n");
fxanhkhoa 0:1bccf2cddb03 623 return -1;
fxanhkhoa 0:1bccf2cddb03 624 }
fxanhkhoa 0:1bccf2cddb03 625 #endif
fxanhkhoa 0:1bccf2cddb03 626 #if (NETWORK_TYPE == 1)
fxanhkhoa 0:1bccf2cddb03 627 #if (SCAN_NETWORK == 1)
fxanhkhoa 0:1bccf2cddb03 628 while (!scan_network(&network));
fxanhkhoa 0:1bccf2cddb03 629 #else
fxanhkhoa 0:1bccf2cddb03 630 network.set_credentials(WLAN_SSID, WLAN_PSK, WLAN_SECURITY);
fxanhkhoa 0:1bccf2cddb03 631 #endif
fxanhkhoa 0:1bccf2cddb03 632 #endif
fxanhkhoa 0:1bccf2cddb03 633 if (network.connect() != 0) {
fxanhkhoa 0:1bccf2cddb03 634 printf("Network Connect Error \r\n");
fxanhkhoa 0:1bccf2cddb03 635 return -1;
fxanhkhoa 0:1bccf2cddb03 636 }
fxanhkhoa 0:1bccf2cddb03 637 printf("MAC Address is %s\r\n", network.get_mac_address());
fxanhkhoa 0:1bccf2cddb03 638 printf("IP Address is %s\r\n", network.get_ip_address());
fxanhkhoa 0:1bccf2cddb03 639 printf("NetMask is %s\r\n", network.get_netmask());
fxanhkhoa 0:1bccf2cddb03 640 printf("Gateway Address is %s\r\n", network.get_gateway());
fxanhkhoa 0:1bccf2cddb03 641 printf("Network Setup OK\r\n");
fxanhkhoa 0:1bccf2cddb03 642
fxanhkhoa 0:1bccf2cddb03 643 thread.start(test);
fxanhkhoa 0:1bccf2cddb03 644
fxanhkhoa 0:1bccf2cddb03 645 SnapshotHandler::attach_req(&snapshot_req);
fxanhkhoa 0:1bccf2cddb03 646 HTTPServerAddHandler<SnapshotHandler>("/camera"); //Camera
fxanhkhoa 0:1bccf2cddb03 647 FSHandler::mount("/storage", "/");
fxanhkhoa 0:1bccf2cddb03 648 HTTPServerAddHandler<FSHandler>("/");
fxanhkhoa 0:1bccf2cddb03 649 HTTPServerAddHandler<RPCHandler>("/rpc");
fxanhkhoa 0:1bccf2cddb03 650 printf("Network Setting up...\r\n");
fxanhkhoa 0:1bccf2cddb03 651 HTTPServerStart(&network, 80);
fxanhkhoa 0:1bccf2cddb03 652 thread_HTTP.start(HTTP);
fxanhkhoa 0:1bccf2cddb03 653 printf("Network Setting up...\r\n");
fxanhkhoa 0:1bccf2cddb03 654 }
fxanhkhoa 0:1bccf2cddb03 655
fxanhkhoa 0:1bccf2cddb03 656 void Encrypt(char s[])
fxanhkhoa 0:1bccf2cddb03 657 {
fxanhkhoa 0:1bccf2cddb03 658 char *temp;
fxanhkhoa 0:1bccf2cddb03 659 // Get Sent wearable device's ID
fxanhkhoa 0:1bccf2cddb03 660 temp = new char[2];
fxanhkhoa 0:1bccf2cddb03 661 strcpy(temp,"");
fxanhkhoa 0:1bccf2cddb03 662 temp[0] = s[1 + pass_pos];
fxanhkhoa 0:1bccf2cddb03 663 temp[1] = s[2 + pass_pos];
fxanhkhoa 0:1bccf2cddb03 664 CurrentID = atoi(temp);
fxanhkhoa 0:1bccf2cddb03 665 pc.printf("current id: %d \n", CurrentID);
fxanhkhoa 0:1bccf2cddb03 666 delete temp;
fxanhkhoa 0:1bccf2cddb03 667
fxanhkhoa 0:1bccf2cddb03 668 // Get Damge deal in Percentage
fxanhkhoa 0:1bccf2cddb03 669 temp = new char[3];
fxanhkhoa 0:1bccf2cddb03 670 strcpy(temp,"");
fxanhkhoa 0:1bccf2cddb03 671 temp[0] = s[3 + pass_pos];
fxanhkhoa 0:1bccf2cddb03 672 temp[1] = s[4 + pass_pos];
fxanhkhoa 0:1bccf2cddb03 673 temp[2] = s[5 + pass_pos];
fxanhkhoa 0:1bccf2cddb03 674 PercentageDamge = atoi(temp);
fxanhkhoa 0:1bccf2cddb03 675 pc.printf("percentage :%d \n", PercentageDamge);
fxanhkhoa 0:1bccf2cddb03 676 delete temp;
fxanhkhoa 0:1bccf2cddb03 677
fxanhkhoa 0:1bccf2cddb03 678 // Read to amount, create new memory (ID, RSSI)
fxanhkhoa 0:1bccf2cddb03 679 temp = new char[2];
fxanhkhoa 0:1bccf2cddb03 680 strcpy(temp,"");
fxanhkhoa 0:1bccf2cddb03 681 temp[0] = s[6 + pass_pos];
fxanhkhoa 0:1bccf2cddb03 682 temp[1] = s[7 + pass_pos];
fxanhkhoa 0:1bccf2cddb03 683 Amount = atoi(temp);
fxanhkhoa 0:1bccf2cddb03 684 pc.printf("amount :%d \n", Amount);
fxanhkhoa 0:1bccf2cddb03 685 delete temp;
fxanhkhoa 0:1bccf2cddb03 686
fxanhkhoa 0:1bccf2cddb03 687 //ID = new int[Amount]; // Create memory for ID
fxanhkhoa 0:1bccf2cddb03 688 //RSSI = new int[Amount]; // Create memory for RSSI
fxanhkhoa 0:1bccf2cddb03 689
fxanhkhoa 0:1bccf2cddb03 690 // Read ID, RSSI with for loop based on Amount Read
fxanhkhoa 0:1bccf2cddb03 691 for (int i=0; i < Amount; i++)
fxanhkhoa 0:1bccf2cddb03 692 {
fxanhkhoa 0:1bccf2cddb03 693 // Read ID
fxanhkhoa 0:1bccf2cddb03 694 temp = new char[2];
fxanhkhoa 0:1bccf2cddb03 695 strcpy(temp,"");
fxanhkhoa 0:1bccf2cddb03 696 temp[0] = s[8 + (6*i) + pass_pos];
fxanhkhoa 0:1bccf2cddb03 697 temp[1] = s[8 + (6*i) + 1 + pass_pos];
fxanhkhoa 0:1bccf2cddb03 698 ID[i] = atoi(temp);
fxanhkhoa 0:1bccf2cddb03 699 pc.printf("ID: %d \n", ID[i]);
fxanhkhoa 0:1bccf2cddb03 700 delete temp;
fxanhkhoa 0:1bccf2cddb03 701
fxanhkhoa 0:1bccf2cddb03 702 //Read RSSI
fxanhkhoa 0:1bccf2cddb03 703 temp = new char[3];
fxanhkhoa 0:1bccf2cddb03 704 strcpy(temp,"");
fxanhkhoa 0:1bccf2cddb03 705 temp[0] = s[10 + (6*i) + pass_pos];
fxanhkhoa 0:1bccf2cddb03 706 temp[1] = s[10 + (6*i) +1 + pass_pos];
fxanhkhoa 0:1bccf2cddb03 707 temp[2] = s[10 + (6*i) +2 + pass_pos];
fxanhkhoa 0:1bccf2cddb03 708 //temp[3] = s[10 + (6*i) +3 + pass_pos];
fxanhkhoa 0:1bccf2cddb03 709 RSSI[ID[i] - 1] = atoi(temp);
fxanhkhoa 0:1bccf2cddb03 710 pc.printf("RSSI: %d \n", RSSI[ID[i] - 1]);
fxanhkhoa 0:1bccf2cddb03 711 delete temp;
fxanhkhoa 0:1bccf2cddb03 712 }
fxanhkhoa 0:1bccf2cddb03 713 delete temp;
fxanhkhoa 0:1bccf2cddb03 714 strcpy(buffer,"");
fxanhkhoa 0:1bccf2cddb03 715
fxanhkhoa 0:1bccf2cddb03 716 calculate();
fxanhkhoa 0:1bccf2cddb03 717 // Delete memory (ID, RSSI)
fxanhkhoa 0:1bccf2cddb03 718
fxanhkhoa 0:1bccf2cddb03 719 }
fxanhkhoa 0:1bccf2cddb03 720
fxanhkhoa 0:1bccf2cddb03 721 void calculate()
fxanhkhoa 0:1bccf2cddb03 722 {
fxanhkhoa 0:1bccf2cddb03 723 for (int i = 0; i < Amount; i++)
fxanhkhoa 0:1bccf2cddb03 724 {
fxanhkhoa 0:1bccf2cddb03 725 int temp = ID[i];
fxanhkhoa 0:1bccf2cddb03 726 hp[temp - 1] -= damge_real(PercentageDamge, RSSI[temp - 1]);
fxanhkhoa 0:1bccf2cddb03 727 pc.printf("damge: %f\n",damge_real(PercentageDamge, RSSI[temp - 1]));
fxanhkhoa 0:1bccf2cddb03 728 pc.printf("ID:%d HP:%f\n", ID[i], hp[ID[i] - 1]);
fxanhkhoa 0:1bccf2cddb03 729 Request = ID[i] * 100 + hp[ID[i] - 1];
fxanhkhoa 0:1bccf2cddb03 730 }
fxanhkhoa 0:1bccf2cddb03 731 }
fxanhkhoa 0:1bccf2cddb03 732
fxanhkhoa 0:1bccf2cddb03 733 float damge_real(int percentage, int RSSI)
fxanhkhoa 0:1bccf2cddb03 734 {
fxanhkhoa 0:1bccf2cddb03 735 return ((float((MAX_DAMGE * percentage)) / 100) * (abs(float(RSSI))/100));
fxanhkhoa 0:1bccf2cddb03 736 }