SDCard version
Fork of gr-peach-opencv-project-sd-card by
define.h@167:2ee3e82cb6f5, 2017-07-21 (annotated)
- Committer:
- thedo
- Date:
- Fri Jul 21 01:26:54 2017 +0000
- Revision:
- 167:2ee3e82cb6f5
- Parent:
- 166:240bc5a0f42a
gr-peach-opencv-project-sd-card
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
thedo | 166:240bc5a0f42a | 1 | #ifndef DEFINE_H |
thedo | 166:240bc5a0f42a | 2 | #define DEFINE_H |
thedo | 166:240bc5a0f42a | 3 | |
thedo | 166:240bc5a0f42a | 4 | #define VIDEO_CVBS (0) /* Analog Video Signal */ |
thedo | 166:240bc5a0f42a | 5 | #define VIDEO_CMOS_CAMERA (1) /* Digital Video Signal */ |
thedo | 166:240bc5a0f42a | 6 | #define VIDEO_YCBCR422 (0) |
thedo | 166:240bc5a0f42a | 7 | #define VIDEO_RGB888 (1) |
thedo | 166:240bc5a0f42a | 8 | #define VIDEO_RGB565 (2) |
thedo | 166:240bc5a0f42a | 9 | |
thedo | 166:240bc5a0f42a | 10 | /**** User Selection *********/ |
thedo | 166:240bc5a0f42a | 11 | /** Camera setting **/ |
thedo | 166:240bc5a0f42a | 12 | #define VIDEO_INPUT_METHOD (VIDEO_CMOS_CAMERA) /* Select VIDEO_CVBS or VIDEO_CMOS_CAMERA */ |
thedo | 166:240bc5a0f42a | 13 | #define VIDEO_INPUT_FORMAT (VIDEO_RGB565 ) /* Select VIDEO_YCBCR422 or VIDEO_RGB888 or VIDEO_RGB565 */ |
thedo | 166:240bc5a0f42a | 14 | #define USE_VIDEO_CH (0) /* Select 0 or 1 If selecting VIDEO_CMOS_CAMERA, should be 0.) */ |
thedo | 166:240bc5a0f42a | 15 | #define VIDEO_PAL (0) /* Select 0(NTSC) or 1(PAL) If selecting VIDEO_CVBS, this parameter is not referenced.) */ |
thedo | 166:240bc5a0f42a | 16 | /** LCD setting **/ |
thedo | 166:240bc5a0f42a | 17 | #define LCD_TYPE (0) /* Select 0(4.3inch) or 1(7.1inch) */ |
thedo | 166:240bc5a0f42a | 18 | /*****************************/ |
thedo | 166:240bc5a0f42a | 19 | |
thedo | 166:240bc5a0f42a | 20 | /** LCD shield config **/ |
thedo | 166:240bc5a0f42a | 21 | #if (LCD_TYPE == 0) |
thedo | 166:240bc5a0f42a | 22 | #include "LCD_shield_config_4_3inch.h" |
thedo | 166:240bc5a0f42a | 23 | #else |
thedo | 166:240bc5a0f42a | 24 | #include "LCD_shield_config_7_1inch.h" |
thedo | 166:240bc5a0f42a | 25 | #endif |
thedo | 166:240bc5a0f42a | 26 | |
thedo | 166:240bc5a0f42a | 27 | /** Video and Grapics (GRAPHICS_LAYER_0) parameter **/ |
thedo | 166:240bc5a0f42a | 28 | /* video input */ |
thedo | 166:240bc5a0f42a | 29 | #if USE_VIDEO_CH == (0) |
thedo | 166:240bc5a0f42a | 30 | #define VIDEO_INPUT_CH (DisplayBase::VIDEO_INPUT_CHANNEL_0) |
thedo | 166:240bc5a0f42a | 31 | #define VIDEO_INT_TYPE (DisplayBase::INT_TYPE_S0_VFIELD) |
thedo | 166:240bc5a0f42a | 32 | #else |
thedo | 166:240bc5a0f42a | 33 | #define VIDEO_INPUT_CH (DisplayBase::VIDEO_INPUT_CHANNEL_1) |
thedo | 166:240bc5a0f42a | 34 | #define VIDEO_INT_TYPE (DisplayBase::INT_TYPE_S1_VFIELD) |
thedo | 166:240bc5a0f42a | 35 | #endif |
thedo | 166:240bc5a0f42a | 36 | |
thedo | 166:240bc5a0f42a | 37 | /* NTSC or PAL */ |
thedo | 166:240bc5a0f42a | 38 | #if VIDEO_PAL == 0 |
thedo | 166:240bc5a0f42a | 39 | #define COL_SYS (DisplayBase::COL_SYS_NTSC_358) |
thedo | 166:240bc5a0f42a | 40 | #else |
thedo | 166:240bc5a0f42a | 41 | #define COL_SYS (DisplayBase::COL_SYS_PAL_443) |
thedo | 166:240bc5a0f42a | 42 | #endif |
thedo | 166:240bc5a0f42a | 43 | |
thedo | 166:240bc5a0f42a | 44 | /* Video input and LCD layer 0 output */ |
thedo | 166:240bc5a0f42a | 45 | #if VIDEO_INPUT_FORMAT == VIDEO_YCBCR422 |
thedo | 166:240bc5a0f42a | 46 | #define VIDEO_FORMAT (DisplayBase::VIDEO_FORMAT_YCBCR422) |
thedo | 166:240bc5a0f42a | 47 | #define GRAPHICS_FORMAT (DisplayBase::GRAPHICS_FORMAT_YCBCR422) |
thedo | 166:240bc5a0f42a | 48 | #define WR_RD_WRSWA (DisplayBase::WR_RD_WRSWA_NON) |
thedo | 166:240bc5a0f42a | 49 | #elif VIDEO_INPUT_FORMAT == VIDEO_RGB565 |
thedo | 166:240bc5a0f42a | 50 | #define VIDEO_FORMAT (DisplayBase::VIDEO_FORMAT_RGB565) |
thedo | 166:240bc5a0f42a | 51 | #define GRAPHICS_FORMAT (DisplayBase::GRAPHICS_FORMAT_RGB565) |
thedo | 166:240bc5a0f42a | 52 | #define WR_RD_WRSWA (DisplayBase::WR_RD_WRSWA_32_16BIT) |
thedo | 166:240bc5a0f42a | 53 | #else |
thedo | 166:240bc5a0f42a | 54 | #define VIDEO_FORMAT (DisplayBase::VIDEO_FORMAT_RGB888) |
thedo | 166:240bc5a0f42a | 55 | #define GRAPHICS_FORMAT (DisplayBase::GRAPHICS_FORMAT_RGB888) |
thedo | 166:240bc5a0f42a | 56 | #define WR_RD_WRSWA (DisplayBase::WR_RD_WRSWA_32BIT) |
thedo | 166:240bc5a0f42a | 57 | #endif |
thedo | 166:240bc5a0f42a | 58 | |
thedo | 166:240bc5a0f42a | 59 | /* The size of the video input is adjusted to the LCD size. */ |
thedo | 166:240bc5a0f42a | 60 | #define VIDEO_PIXEL_HW LCD_PIXEL_WIDTH |
thedo | 166:240bc5a0f42a | 61 | #define VIDEO_PIXEL_VW LCD_PIXEL_HEIGHT |
thedo | 166:240bc5a0f42a | 62 | |
thedo | 166:240bc5a0f42a | 63 | /*! Frame buffer stride: Frame buffer stride should be set to a multiple of 32 or 128 |
thedo | 166:240bc5a0f42a | 64 | in accordance with the frame buffer burst transfer mode. */ |
thedo | 166:240bc5a0f42a | 65 | /* FRAME BUFFER Parameter GRAPHICS_LAYER_0 */ |
thedo | 166:240bc5a0f42a | 66 | #define FRAME_BUFFER_NUM (3u) |
thedo | 166:240bc5a0f42a | 67 | #if ( VIDEO_INPUT_FORMAT == VIDEO_YCBCR422 || VIDEO_INPUT_FORMAT == VIDEO_RGB565 ) |
thedo | 166:240bc5a0f42a | 68 | #define FRAME_BUFFER_BYTE_PER_PIXEL (2u) |
thedo | 166:240bc5a0f42a | 69 | #else |
thedo | 166:240bc5a0f42a | 70 | #define FRAME_BUFFER_BYTE_PER_PIXEL (4u) |
thedo | 166:240bc5a0f42a | 71 | #endif |
thedo | 166:240bc5a0f42a | 72 | #define FRAME_BUFFER_STRIDE (((LCD_PIXEL_WIDTH * FRAME_BUFFER_BYTE_PER_PIXEL) + 31u) & ~31u) |
thedo | 166:240bc5a0f42a | 73 | |
thedo | 166:240bc5a0f42a | 74 | /* DRAW BUFFER Parameter GRAPHICS_LAYER_1 */ |
thedo | 166:240bc5a0f42a | 75 | #define DRAW_BUFFER_BYTE_PER_PIXEL (2u) |
thedo | 166:240bc5a0f42a | 76 | #define DRAW_BUFFER_STRIDE (((LCD_PIXEL_WIDTH * DRAW_BUFFER_BYTE_PER_PIXEL) + 31u) & ~31u) |
thedo | 166:240bc5a0f42a | 77 | |
thedo | 166:240bc5a0f42a | 78 | /* Draw panel parameter */ |
thedo | 166:240bc5a0f42a | 79 | #define DRAW_POINT (1u) |
thedo | 166:240bc5a0f42a | 80 | |
thedo | 166:240bc5a0f42a | 81 | /* IMAGE DOWN SAMPLE*/ |
thedo | 166:240bc5a0f42a | 82 | #define IMG_DOWN_SAMPLE (2u) |
thedo | 166:240bc5a0f42a | 83 | |
thedo | 166:240bc5a0f42a | 84 | /* Touch number point */ |
thedo | 166:240bc5a0f42a | 85 | #define TOUCH_NUM (1u) |
thedo | 166:240bc5a0f42a | 86 | |
thedo | 166:240bc5a0f42a | 87 | #define SDCARD_NAME "SD" |
thedo | 166:240bc5a0f42a | 88 | #define SDCARD_PATH "/SD" |
thedo | 166:240bc5a0f42a | 89 | |
thedo | 166:240bc5a0f42a | 90 | #define MODE_BTN_X 16 |
thedo | 166:240bc5a0f42a | 91 | #define MODE_BTN_Y 235 |
thedo | 166:240bc5a0f42a | 92 | |
thedo | 166:240bc5a0f42a | 93 | #define REGIS_FACE_BTN_X 5 |
thedo | 166:240bc5a0f42a | 94 | #define REGIS_FACE_BTN_Y 130 |
thedo | 166:240bc5a0f42a | 95 | |
thedo | 166:240bc5a0f42a | 96 | #define FACE_REG_ID_MENU_X 100 |
thedo | 166:240bc5a0f42a | 97 | #define FACE_REG_ID_MENU_Y 50 |
thedo | 166:240bc5a0f42a | 98 | |
thedo | 166:240bc5a0f42a | 99 | #define FACE_REG_ACT_MENU_X 410 |
thedo | 166:240bc5a0f42a | 100 | #define FACE_REG_ACT_MENU_Y 80 |
thedo | 166:240bc5a0f42a | 101 | |
thedo | 166:240bc5a0f42a | 102 | #define GESTURE_SAMPLING_BTN_X 410 |
thedo | 166:240bc5a0f42a | 103 | #define GESTURE_SAMPLING_BTN_Y 110 |
thedo | 166:240bc5a0f42a | 104 | |
thedo | 166:240bc5a0f42a | 105 | #define M_PI (3.14159) |
thedo | 166:240bc5a0f42a | 106 | |
thedo | 166:240bc5a0f42a | 107 | |
thedo | 166:240bc5a0f42a | 108 | |
thedo | 166:240bc5a0f42a | 109 | enum APP_MODE{ |
thedo | 166:240bc5a0f42a | 110 | FACE_DETECTION = 0, |
thedo | 166:240bc5a0f42a | 111 | MOTION_DETECTION, |
thedo | 166:240bc5a0f42a | 112 | FACE_RECOGNITION, |
thedo | 166:240bc5a0f42a | 113 | GUESTURE_RECOGNITION, |
thedo | 166:240bc5a0f42a | 114 | MODE_UNKNOWN |
thedo | 166:240bc5a0f42a | 115 | }; |
thedo | 166:240bc5a0f42a | 116 | |
thedo | 166:240bc5a0f42a | 117 | /*enum FACE_REG_ACTION{ |
thedo | 166:240bc5a0f42a | 118 | ACT_UNKNOWN, |
thedo | 166:240bc5a0f42a | 119 | ACT_CHANGE_ID, |
thedo | 166:240bc5a0f42a | 120 | ACT_ADD, |
thedo | 166:240bc5a0f42a | 121 | ACT_IGNORE, |
thedo | 166:240bc5a0f42a | 122 | ACT_DRAW_REGISTER, |
thedo | 166:240bc5a0f42a | 123 | ACT_REGISTING_FACE, |
thedo | 166:240bc5a0f42a | 124 | };*/ |
thedo | 166:240bc5a0f42a | 125 | |
thedo | 166:240bc5a0f42a | 126 | enum CLICKED_CODE |
thedo | 166:240bc5a0f42a | 127 | { |
thedo | 166:240bc5a0f42a | 128 | CLICKED_UNKNOWN = 0, |
thedo | 166:240bc5a0f42a | 129 | CLICKED_REGIS_FACE, |
thedo | 166:240bc5a0f42a | 130 | CLICKED_CHANGE_ID, |
thedo | 166:240bc5a0f42a | 131 | CLICKED_ADD, |
thedo | 166:240bc5a0f42a | 132 | CLICKED_IGNORE, |
thedo | 166:240bc5a0f42a | 133 | CLICKED_HAND_SAMPLING |
thedo | 166:240bc5a0f42a | 134 | }; |
thedo | 166:240bc5a0f42a | 135 | |
thedo | 166:240bc5a0f42a | 136 | #define MAX_COUNTOURS (500) |
thedo | 166:240bc5a0f42a | 137 | |
thedo | 166:240bc5a0f42a | 138 | #if defined(__ICCARM__) |
thedo | 166:240bc5a0f42a | 139 | /* 32 bytes aligned */ |
thedo | 166:240bc5a0f42a | 140 | #pragma data_alignment=32 |
thedo | 166:240bc5a0f42a | 141 | static uint8_t user_frame_buffer0[FRAME_BUFFER_STRIDE * LCD_PIXEL_HEIGHT]; |
thedo | 166:240bc5a0f42a | 142 | #pragma data_alignment=32 |
thedo | 166:240bc5a0f42a | 143 | static uint8_t user_frame_buffer1[FRAME_BUFFER_STRIDE * LCD_PIXEL_HEIGHT]; |
thedo | 166:240bc5a0f42a | 144 | #pragma data_alignment=32 |
thedo | 166:240bc5a0f42a | 145 | static uint8_t user_frame_buffer2[FRAME_BUFFER_STRIDE * LCD_PIXEL_HEIGHT]; |
thedo | 166:240bc5a0f42a | 146 | #else |
thedo | 166:240bc5a0f42a | 147 | /* 32 bytes aligned */ |
thedo | 166:240bc5a0f42a | 148 | static uint8_t user_frame_buffer0[FRAME_BUFFER_STRIDE * LCD_PIXEL_HEIGHT]__attribute((aligned(32))); |
thedo | 166:240bc5a0f42a | 149 | static uint8_t user_frame_buffer1[FRAME_BUFFER_STRIDE * LCD_PIXEL_HEIGHT]__attribute((aligned(32))); |
thedo | 166:240bc5a0f42a | 150 | static uint8_t user_frame_buffer2[FRAME_BUFFER_STRIDE * LCD_PIXEL_HEIGHT]__attribute((aligned(32))); |
thedo | 166:240bc5a0f42a | 151 | static uint8_t user_frame_buffer_draw[DRAW_BUFFER_STRIDE * LCD_PIXEL_HEIGHT]__attribute((aligned(32))); |
thedo | 166:240bc5a0f42a | 152 | static uint8_t user_frame_buffer_draw_action[DRAW_BUFFER_STRIDE * LCD_PIXEL_HEIGHT]__attribute((aligned(32))); |
thedo | 166:240bc5a0f42a | 153 | static uint8_t user_frame_buffer_draw_button[DRAW_BUFFER_STRIDE * LCD_PIXEL_HEIGHT]__attribute((aligned(32))); |
thedo | 166:240bc5a0f42a | 154 | static uint8_t my_frame[FRAME_BUFFER_STRIDE * LCD_PIXEL_HEIGHT]__attribute((aligned(32))); |
thedo | 166:240bc5a0f42a | 155 | #endif |
thedo | 166:240bc5a0f42a | 156 | static uint8_t * FrameBufferTbl[FRAME_BUFFER_NUM] = {user_frame_buffer0, user_frame_buffer1, user_frame_buffer2}; |
thedo | 166:240bc5a0f42a | 157 | #if VIDEO_INPUT_METHOD == VIDEO_CVBS |
thedo | 166:240bc5a0f42a | 158 | static volatile int32_t vfield_count = 0; |
thedo | 166:240bc5a0f42a | 159 | #endif |
thedo | 166:240bc5a0f42a | 160 | |
thedo | 166:240bc5a0f42a | 161 | #endif //DEFINE_H |