Sample to operate omron HVC-P2 on GR-PEACH.

Dependencies:   AsciiFont

Information

Please see here for Japanese version.
日本語版はこちらを参照ください。

What is this ?

This is a sample that runs OMRON HVC-P2 with GR-PEACH. In this sample, you can try following among the functions of HVC-P2 : Human Body Detection, Face Detection, Age Estimation, Gender Estimation, Expression Estimation and Face Recognition.
Both GR-PEACH and HVC-P2 use Renesas RZ/A1H included ARM® Cortex™-A9 processor.

/media/uploads/dkato/hvcp2_demo_img3.jpg

HVC-P2 (Human Vision Components B5T-007001) is a human-sensing component that recognizes people. It is an integrated module that is built into other device and provides both the OKAO Vision's ten types of image sensing and a camera module.
For details, please refer to the following link.

In the HVCApi folder of this sample, the code of the following link destination Sample Code "SampleCode_rev.2.0.2" is used. (You can download from "Product Information" -> "Sample Code" in the middle of the following page.)
http://www.omron.com/ecb/products/mobile/hvc_p2/

Constitution

  1. HVC-P2 x 1
  2. USBA-microUSB conversion cable x 2
  3. USBA-microUSB conversion adapter x 1
  4. GR-PEACH x 1
  5. 4.3inc LCD shield x 1

/media/uploads/dkato/composition_hvcp2_demo.jpg

/media/uploads/dkato/composition_hvcp2_demo_2.jpg

Please close JP3 of GR-PEACH.
/media/uploads/RyoheiHagimoto/usb.jpg

How to use

It starts when connecting the power supply USB cable. At startup, all functions are turned off. By pressing the button on the right of the screen you can switch the function on / off.

  • Function ON : orange or green
  • Function OFF : blue or gray

Only the FACE button changes to "FACE (blue) -> FACE (orange) -> RECOGNITION (green)". When FACE (blue), following buttons are gray and can not be operated : AGE, GENDER and EXPRESSION.
"Response time" at the bottom left of the screen indicates "image processing + USB transfer time". It is not pure image processing time.

Register Data (Face Recognition)

Set the FACE button to RECOGNITION (green), and touch the screen with one person on the screen to register the face. In this sample, face registration will record up to 10 people. Delete the old registrant when registering after 11 people. Registration information is stored in the RAM on the HVC-P2 side. It is discarded by power off and reset.

/media/uploads/dkato/hvcp2_demo_img2.jpg

Change parameters

When you press Config icon at the bottom right of the screen, the parameter setting screen is displayed. You can change threshold value, detection size and face angle parameters.

/media/uploads/dkato/hvcp2_demo_config_icon.jpg
/media/uploads/dkato/hvcp2_demo_config.jpg

Change transfer image size

By pressing USER_BUTTON0 on the back of the board, the image transfer size switches in the order of "160 x 120 -> 320 x 240 -> no image".
/media/uploads/dkato/gr-peach_switch2.jpg

Committer:
dkato
Date:
Wed Mar 08 07:43:42 2017 +0000
Revision:
3:0760680f06d8
Parent:
0:f5de229c9a00
Child:
4:55e0d1f4e55a
Fixed buffer size of character string .

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dkato 0:f5de229c9a00 1 /*---------------------------------------------------------------------------*/
dkato 0:f5de229c9a00 2 /* Copyright(C) 2017 OMRON Corporation */
dkato 0:f5de229c9a00 3 /* */
dkato 0:f5de229c9a00 4 /* Licensed under the Apache License, Version 2.0 (the "License"); */
dkato 0:f5de229c9a00 5 /* you may not use this file except in compliance with the License. */
dkato 0:f5de229c9a00 6 /* You may obtain a copy of the License at */
dkato 0:f5de229c9a00 7 /* */
dkato 0:f5de229c9a00 8 /* http://www.apache.org/licenses/LICENSE-2.0 */
dkato 0:f5de229c9a00 9 /* */
dkato 0:f5de229c9a00 10 /* Unless required by applicable law or agreed to in writing, software */
dkato 0:f5de229c9a00 11 /* distributed under the License is distributed on an "AS IS" BASIS, */
dkato 0:f5de229c9a00 12 /* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */
dkato 0:f5de229c9a00 13 /* See the License for the specific language governing permissions and */
dkato 0:f5de229c9a00 14 /* limitations under the License. */
dkato 0:f5de229c9a00 15 /*---------------------------------------------------------------------------*/
dkato 0:f5de229c9a00 16
dkato 0:f5de229c9a00 17 /*
dkato 0:f5de229c9a00 18 HVC Sample API
dkato 0:f5de229c9a00 19 */
dkato 0:f5de229c9a00 20
dkato 0:f5de229c9a00 21 #include <stdlib.h>
dkato 0:f5de229c9a00 22 #include "HVCApi.h"
dkato 0:f5de229c9a00 23 #include "HVCExtraUartFunc.h"
dkato 0:f5de229c9a00 24
dkato 0:f5de229c9a00 25 /*----------------------------------------------------------------------------*/
dkato 0:f5de229c9a00 26 /* Command number */
dkato 0:f5de229c9a00 27 /*----------------------------------------------------------------------------*/
dkato 0:f5de229c9a00 28 #define HVC_COM_GET_VERSION (UINT8)0x00
dkato 0:f5de229c9a00 29 #define HVC_COM_SET_CAMERA_ANGLE (UINT8)0x01
dkato 0:f5de229c9a00 30 #define HVC_COM_GET_CAMERA_ANGLE (UINT8)0x02
dkato 0:f5de229c9a00 31 #define HVC_COM_EXECUTE (UINT8)0x03
dkato 0:f5de229c9a00 32 #define HVC_COM_EXECUTEEX (UINT8)0x04
dkato 0:f5de229c9a00 33 #define HVC_COM_SET_THRESHOLD (UINT8)0x05
dkato 0:f5de229c9a00 34 #define HVC_COM_GET_THRESHOLD (UINT8)0x06
dkato 0:f5de229c9a00 35 #define HVC_COM_SET_SIZE_RANGE (UINT8)0x07
dkato 0:f5de229c9a00 36 #define HVC_COM_GET_SIZE_RANGE (UINT8)0x08
dkato 0:f5de229c9a00 37 #define HVC_COM_SET_DETECTION_ANGLE (UINT8)0x09
dkato 0:f5de229c9a00 38 #define HVC_COM_GET_DETECTION_ANGLE (UINT8)0x0A
dkato 0:f5de229c9a00 39 #define HVC_COM_SET_BAUDRATE (UINT8)0x0E
dkato 0:f5de229c9a00 40 #define HVC_COM_REGISTRATION (UINT8)0x10
dkato 0:f5de229c9a00 41 #define HVC_COM_DELETE_DATA (UINT8)0x11
dkato 0:f5de229c9a00 42 #define HVC_COM_DELETE_USER (UINT8)0x12
dkato 0:f5de229c9a00 43 #define HVC_COM_DELETE_ALL (UINT8)0x13
dkato 0:f5de229c9a00 44 #define HVC_COM_GET_PERSON_DATA (UINT8)0x15
dkato 0:f5de229c9a00 45 #define HVC_COM_SAVE_ALBUM (UINT8)0x20
dkato 0:f5de229c9a00 46 #define HVC_COM_LOAD_ALBUM (UINT8)0x21
dkato 0:f5de229c9a00 47 #define HVC_COM_WRITE_ALBUM (UINT8)0x22
dkato 0:f5de229c9a00 48
dkato 0:f5de229c9a00 49 /*----------------------------------------------------------------------------*/
dkato 0:f5de229c9a00 50 /* Header for send signal data */
dkato 0:f5de229c9a00 51 typedef enum {
dkato 0:f5de229c9a00 52 SEND_HEAD_SYNCBYTE = 0,
dkato 0:f5de229c9a00 53 SEND_HEAD_COMMANDNO,
dkato 0:f5de229c9a00 54 SEND_HEAD_DATALENGTHLSB,
dkato 0:f5de229c9a00 55 SEND_HEAD_DATALENGTHMSB,
dkato 0:f5de229c9a00 56 SEND_HEAD_NUM
dkato 0:f5de229c9a00 57 }SEND_HEADER;
dkato 0:f5de229c9a00 58 /*----------------------------------------------------------------------------*/
dkato 0:f5de229c9a00 59 /* Header for receive signal data */
dkato 0:f5de229c9a00 60 typedef enum {
dkato 0:f5de229c9a00 61 RECEIVE_HEAD_SYNCBYTE = 0,
dkato 0:f5de229c9a00 62 RECEIVE_HEAD_STATUS,
dkato 0:f5de229c9a00 63 RECEIVE_HEAD_DATALENLL,
dkato 0:f5de229c9a00 64 RECEIVE_HEAD_DATALENLM,
dkato 0:f5de229c9a00 65 RECEIVE_HEAD_DATALENML,
dkato 0:f5de229c9a00 66 RECEIVE_HEAD_DATALENMM,
dkato 0:f5de229c9a00 67 RECEIVE_HEAD_NUM
dkato 0:f5de229c9a00 68 }RECEIVE_HEADER;
dkato 0:f5de229c9a00 69
dkato 0:f5de229c9a00 70 /*----------------------------------------------------------------------------*/
dkato 0:f5de229c9a00 71 /* Send command signal */
dkato 0:f5de229c9a00 72 /* param : UINT8 inCommandNo command number */
dkato 0:f5de229c9a00 73 /* : INT32 inDataSize sending signal data size */
dkato 0:f5de229c9a00 74 /* : UINT8 *inData sending signal data */
dkato 0:f5de229c9a00 75 /* return : INT32 execution result error code */
dkato 0:f5de229c9a00 76 /* : 0...normal */
dkato 0:f5de229c9a00 77 /* : -10...timeout error */
dkato 0:f5de229c9a00 78 /*----------------------------------------------------------------------------*/
dkato 0:f5de229c9a00 79 static INT32 HVC_SendCommand(UINT8 inCommandNo, INT32 inDataSize, UINT8 *inData)
dkato 0:f5de229c9a00 80 {
dkato 0:f5de229c9a00 81 INT32 i;
dkato 0:f5de229c9a00 82 INT32 ret = 0;
dkato 0:f5de229c9a00 83 UINT8 sendData[32];
dkato 0:f5de229c9a00 84
dkato 0:f5de229c9a00 85 /* Create header */
dkato 0:f5de229c9a00 86 sendData[SEND_HEAD_SYNCBYTE] = (UINT8)0xFE;
dkato 0:f5de229c9a00 87 sendData[SEND_HEAD_COMMANDNO] = (UINT8)inCommandNo;
dkato 0:f5de229c9a00 88 sendData[SEND_HEAD_DATALENGTHLSB] = (UINT8)(inDataSize&0xff);
dkato 0:f5de229c9a00 89 sendData[SEND_HEAD_DATALENGTHMSB] = (UINT8)((inDataSize>>8)&0xff);
dkato 0:f5de229c9a00 90
dkato 0:f5de229c9a00 91 for(i = 0; i < inDataSize; i++){
dkato 0:f5de229c9a00 92 sendData[SEND_HEAD_NUM + i] = inData[i];
dkato 0:f5de229c9a00 93 }
dkato 0:f5de229c9a00 94
dkato 0:f5de229c9a00 95 /* Send command signal */
dkato 0:f5de229c9a00 96 ret = UART_SendData(SEND_HEAD_NUM+inDataSize, sendData);
dkato 0:f5de229c9a00 97 if(ret != SEND_HEAD_NUM+inDataSize){
dkato 0:f5de229c9a00 98 return HVC_ERROR_SEND_DATA;
dkato 0:f5de229c9a00 99 }
dkato 0:f5de229c9a00 100 return 0;
dkato 0:f5de229c9a00 101 }
dkato 0:f5de229c9a00 102
dkato 0:f5de229c9a00 103 /*----------------------------------------------------------------------------*/
dkato 0:f5de229c9a00 104 /* Send command signal of LoadAlbum */
dkato 0:f5de229c9a00 105 /* param : UINT8 inCommandNo command number */
dkato 0:f5de229c9a00 106 /* : INT32 inDataSize sending signal data size */
dkato 0:f5de229c9a00 107 /* : UINT8 *inData sending signal data */
dkato 0:f5de229c9a00 108 /* return : INT32 execution result error code */
dkato 0:f5de229c9a00 109 /* : 0...normal */
dkato 0:f5de229c9a00 110 /* : -10...timeout error */
dkato 0:f5de229c9a00 111 /*----------------------------------------------------------------------------*/
dkato 0:f5de229c9a00 112 static INT32 HVC_SendCommandOfLoadAlbum(UINT8 inCommandNo, INT32 inDataSize, UINT8 *inData)
dkato 0:f5de229c9a00 113 {
dkato 0:f5de229c9a00 114 INT32 i;
dkato 0:f5de229c9a00 115 INT32 ret = 0;
dkato 0:f5de229c9a00 116 UINT8 *pSendData = NULL;
dkato 0:f5de229c9a00 117
dkato 0:f5de229c9a00 118 pSendData = (UINT8*)malloc(SEND_HEAD_NUM + 4 + inDataSize);
dkato 0:f5de229c9a00 119
dkato 0:f5de229c9a00 120 /* Create header */
dkato 0:f5de229c9a00 121 pSendData[SEND_HEAD_SYNCBYTE] = (UINT8)0xFE;
dkato 0:f5de229c9a00 122 pSendData[SEND_HEAD_COMMANDNO] = (UINT8)inCommandNo;
dkato 0:f5de229c9a00 123 pSendData[SEND_HEAD_DATALENGTHLSB] = (UINT8)4;
dkato 0:f5de229c9a00 124 pSendData[SEND_HEAD_DATALENGTHMSB] = (UINT8)0;
dkato 0:f5de229c9a00 125
dkato 0:f5de229c9a00 126 pSendData[SEND_HEAD_NUM + 0] = (UINT8)(inDataSize & 0x000000ff);
dkato 0:f5de229c9a00 127 pSendData[SEND_HEAD_NUM + 1] = (UINT8)((inDataSize >> 8) & 0x000000ff);
dkato 0:f5de229c9a00 128 pSendData[SEND_HEAD_NUM + 2] = (UINT8)((inDataSize >> 16) & 0x000000ff);
dkato 0:f5de229c9a00 129 pSendData[SEND_HEAD_NUM + 3] = (UINT8)((inDataSize >> 24) & 0x000000ff);
dkato 0:f5de229c9a00 130
dkato 0:f5de229c9a00 131 for(i = 0; i < inDataSize; i++){
dkato 0:f5de229c9a00 132 pSendData[SEND_HEAD_NUM + 4 + i] = inData[i];
dkato 0:f5de229c9a00 133 }
dkato 0:f5de229c9a00 134
dkato 0:f5de229c9a00 135 /* Send command signal */
dkato 0:f5de229c9a00 136 ret = UART_SendData(SEND_HEAD_NUM+4+inDataSize, pSendData);
dkato 0:f5de229c9a00 137 if(ret != SEND_HEAD_NUM + 4 + inDataSize){
dkato 0:f5de229c9a00 138 ret = HVC_ERROR_SEND_DATA;
dkato 0:f5de229c9a00 139 }
dkato 0:f5de229c9a00 140 else{
dkato 0:f5de229c9a00 141 ret = 0;
dkato 0:f5de229c9a00 142 }
dkato 0:f5de229c9a00 143 free(pSendData);
dkato 0:f5de229c9a00 144
dkato 0:f5de229c9a00 145 return ret;
dkato 0:f5de229c9a00 146 }
dkato 0:f5de229c9a00 147
dkato 0:f5de229c9a00 148 /*----------------------------------------------------------------------------*/
dkato 0:f5de229c9a00 149 /* Receive header */
dkato 0:f5de229c9a00 150 /* param : INT32 inTimeOutTime timeout time */
dkato 0:f5de229c9a00 151 /* : INT32 *outDataSize receive signal data length */
dkato 0:f5de229c9a00 152 /* : UINT8 *outStatus status */
dkato 0:f5de229c9a00 153 /* return : INT32 execution result error code */
dkato 0:f5de229c9a00 154 /* : 0...normal */
dkato 0:f5de229c9a00 155 /* : -20...timeout error */
dkato 0:f5de229c9a00 156 /* : -21...invalid header error */
dkato 0:f5de229c9a00 157 /*----------------------------------------------------------------------------*/
dkato 0:f5de229c9a00 158 static INT32 HVC_ReceiveHeader(INT32 inTimeOutTime, INT32 *outDataSize, UINT8 *outStatus)
dkato 0:f5de229c9a00 159 {
dkato 0:f5de229c9a00 160 INT32 ret = 0;
dkato 0:f5de229c9a00 161 UINT8 headerData[32];
dkato 0:f5de229c9a00 162
dkato 0:f5de229c9a00 163 /* Get header part */
dkato 0:f5de229c9a00 164 ret = UART_ReceiveData(inTimeOutTime, RECEIVE_HEAD_NUM, headerData);
dkato 0:f5de229c9a00 165 if(ret != RECEIVE_HEAD_NUM){
dkato 0:f5de229c9a00 166 return HVC_ERROR_HEADER_TIMEOUT;
dkato 0:f5de229c9a00 167 }
dkato 0:f5de229c9a00 168 else if((UINT8)0xFE != headerData[RECEIVE_HEAD_SYNCBYTE]){
dkato 0:f5de229c9a00 169 /* Different value indicates an invalid result */
dkato 0:f5de229c9a00 170 return HVC_ERROR_HEADER_INVALID;
dkato 0:f5de229c9a00 171 }
dkato 0:f5de229c9a00 172
dkato 0:f5de229c9a00 173 /* Get data length */
dkato 0:f5de229c9a00 174 *outDataSize = headerData[RECEIVE_HEAD_DATALENLL] +
dkato 0:f5de229c9a00 175 (headerData[RECEIVE_HEAD_DATALENLM]<<8) +
dkato 0:f5de229c9a00 176 (headerData[RECEIVE_HEAD_DATALENML]<<16) +
dkato 0:f5de229c9a00 177 (headerData[RECEIVE_HEAD_DATALENMM]<<24);
dkato 0:f5de229c9a00 178
dkato 0:f5de229c9a00 179 /* Get command execution result */
dkato 0:f5de229c9a00 180 *outStatus = headerData[RECEIVE_HEAD_STATUS];
dkato 0:f5de229c9a00 181 return 0;
dkato 0:f5de229c9a00 182 }
dkato 0:f5de229c9a00 183
dkato 0:f5de229c9a00 184 /*----------------------------------------------------------------------------*/
dkato 0:f5de229c9a00 185 /* Receive data */
dkato 0:f5de229c9a00 186 /* param : INT32 inTimeOutTime timeout time */
dkato 0:f5de229c9a00 187 /* : INT32 inDataSize receive signal data size */
dkato 0:f5de229c9a00 188 /* : UINT8 *outResult receive signal data */
dkato 0:f5de229c9a00 189 /* return : INT32 execution result error code */
dkato 0:f5de229c9a00 190 /* : 0...normal */
dkato 0:f5de229c9a00 191 /* : -20...timeout error */
dkato 0:f5de229c9a00 192 /*----------------------------------------------------------------------------*/
dkato 0:f5de229c9a00 193 static INT32 HVC_ReceiveData(INT32 inTimeOutTime, INT32 inDataSize, UINT8 *outResult)
dkato 0:f5de229c9a00 194 {
dkato 0:f5de229c9a00 195 INT32 ret = 0;
dkato 0:f5de229c9a00 196
dkato 0:f5de229c9a00 197 if ( inDataSize <= 0 ) return 0;
dkato 0:f5de229c9a00 198
dkato 0:f5de229c9a00 199 /* Receive data */
dkato 0:f5de229c9a00 200 ret = UART_ReceiveData(inTimeOutTime, inDataSize, outResult);
dkato 0:f5de229c9a00 201 if(ret != inDataSize){
dkato 0:f5de229c9a00 202 return HVC_ERROR_DATA_TIMEOUT;
dkato 0:f5de229c9a00 203 }
dkato 0:f5de229c9a00 204 return 0;
dkato 0:f5de229c9a00 205 }
dkato 0:f5de229c9a00 206
dkato 0:f5de229c9a00 207 /*----------------------------------------------------------------------------*/
dkato 0:f5de229c9a00 208 /* HVC_GetVersion */
dkato 0:f5de229c9a00 209 /* param : INT32 inTimeOutTime timeout time (ms) */
dkato 0:f5de229c9a00 210 /* : HVC_VERSION *outVersion version data */
dkato 0:f5de229c9a00 211 /* : UINT8 *outStatus response code */
dkato 0:f5de229c9a00 212 /* return : INT32 execution result error code */
dkato 0:f5de229c9a00 213 /* : 0...normal */
dkato 0:f5de229c9a00 214 /* : -1...parameter error */
dkato 0:f5de229c9a00 215 /* : other...signal error */
dkato 0:f5de229c9a00 216 /*----------------------------------------------------------------------------*/
dkato 0:f5de229c9a00 217 INT32 HVC_GetVersion(INT32 inTimeOutTime, HVC_VERSION *outVersion, UINT8 *outStatus)
dkato 0:f5de229c9a00 218 {
dkato 0:f5de229c9a00 219 INT32 ret = 0;
dkato 0:f5de229c9a00 220 INT32 size = 0;
dkato 0:f5de229c9a00 221
dkato 0:f5de229c9a00 222 if((NULL == outVersion) || (NULL == outStatus)){
dkato 0:f5de229c9a00 223 return HVC_ERROR_PARAMETER;
dkato 0:f5de229c9a00 224 }
dkato 0:f5de229c9a00 225
dkato 0:f5de229c9a00 226 /* Send GetVersion command signal */
dkato 0:f5de229c9a00 227 ret = HVC_SendCommand(HVC_COM_GET_VERSION, 0, NULL);
dkato 0:f5de229c9a00 228 if ( ret != 0 ) return ret;
dkato 0:f5de229c9a00 229
dkato 0:f5de229c9a00 230 /* Receive header */
dkato 0:f5de229c9a00 231 ret = HVC_ReceiveHeader(inTimeOutTime, &size, outStatus);
dkato 0:f5de229c9a00 232 if ( ret != 0 ) return ret;
dkato 0:f5de229c9a00 233
dkato 0:f5de229c9a00 234 if ( size > (INT32)sizeof(HVC_VERSION) ) {
dkato 0:f5de229c9a00 235 size = sizeof(HVC_VERSION);
dkato 0:f5de229c9a00 236 }
dkato 0:f5de229c9a00 237
dkato 0:f5de229c9a00 238 /* Receive data */
dkato 0:f5de229c9a00 239 return HVC_ReceiveData(inTimeOutTime, size, (UINT8*)outVersion);
dkato 0:f5de229c9a00 240 }
dkato 0:f5de229c9a00 241
dkato 0:f5de229c9a00 242 /*----------------------------------------------------------------------------*/
dkato 0:f5de229c9a00 243 /* HVC_SetCameraAngle */
dkato 0:f5de229c9a00 244 /* param : INT32 inTimeOutTime timeout time (ms) */
dkato 0:f5de229c9a00 245 /* : INT32 inAngleNo camera angle number */
dkato 0:f5de229c9a00 246 /* : UINT8 *outStatus response code */
dkato 0:f5de229c9a00 247 /* return : INT32 execution result error code */
dkato 0:f5de229c9a00 248 /* : 0...normal */
dkato 0:f5de229c9a00 249 /* : -1...parameter error */
dkato 0:f5de229c9a00 250 /* : other...signal error */
dkato 0:f5de229c9a00 251 /*----------------------------------------------------------------------------*/
dkato 0:f5de229c9a00 252 INT32 HVC_SetCameraAngle(INT32 inTimeOutTime, INT32 inAngleNo, UINT8 *outStatus)
dkato 0:f5de229c9a00 253 {
dkato 0:f5de229c9a00 254 INT32 ret = 0;
dkato 0:f5de229c9a00 255 INT32 size = 0;
dkato 0:f5de229c9a00 256 UINT8 sendData[32];
dkato 0:f5de229c9a00 257
dkato 0:f5de229c9a00 258 if(NULL == outStatus){
dkato 0:f5de229c9a00 259 return HVC_ERROR_PARAMETER;
dkato 0:f5de229c9a00 260 }
dkato 0:f5de229c9a00 261
dkato 0:f5de229c9a00 262 sendData[0] = (UINT8)(inAngleNo&0xff);
dkato 0:f5de229c9a00 263 /* Send SetCameraAngle command signal */
dkato 0:f5de229c9a00 264 ret = HVC_SendCommand(HVC_COM_SET_CAMERA_ANGLE, sizeof(UINT8), sendData);
dkato 0:f5de229c9a00 265 if ( ret != 0 ) return ret;
dkato 0:f5de229c9a00 266
dkato 0:f5de229c9a00 267 /* Receive header */
dkato 0:f5de229c9a00 268 ret = HVC_ReceiveHeader(inTimeOutTime, &size, outStatus);
dkato 0:f5de229c9a00 269 if ( ret != 0 ) return ret;
dkato 0:f5de229c9a00 270 return 0;
dkato 0:f5de229c9a00 271 }
dkato 0:f5de229c9a00 272
dkato 0:f5de229c9a00 273 /*----------------------------------------------------------------------------*/
dkato 0:f5de229c9a00 274 /* HVC_GetCameraAngle */
dkato 0:f5de229c9a00 275 /* param : INT32 inTimeOutTime timeout time (ms) */
dkato 0:f5de229c9a00 276 /* : INT32 *outAngleNo camera angle number */
dkato 0:f5de229c9a00 277 /* : UINT8 *outStatus response code */
dkato 0:f5de229c9a00 278 /* return : INT32 execution result error code */
dkato 0:f5de229c9a00 279 /* : 0...normal */
dkato 0:f5de229c9a00 280 /* : -1...parameter error */
dkato 0:f5de229c9a00 281 /* : other...signal error */
dkato 0:f5de229c9a00 282 /*----------------------------------------------------------------------------*/
dkato 0:f5de229c9a00 283 INT32 HVC_GetCameraAngle(INT32 inTimeOutTime, INT32 *outAngleNo, UINT8 *outStatus)
dkato 0:f5de229c9a00 284 {
dkato 0:f5de229c9a00 285 INT32 ret = 0;
dkato 0:f5de229c9a00 286 INT32 size = 0;
dkato 0:f5de229c9a00 287 UINT8 recvData[32];
dkato 0:f5de229c9a00 288
dkato 0:f5de229c9a00 289 if((NULL == outAngleNo) || (NULL == outStatus)){
dkato 0:f5de229c9a00 290 return HVC_ERROR_PARAMETER;
dkato 0:f5de229c9a00 291 }
dkato 0:f5de229c9a00 292
dkato 0:f5de229c9a00 293 /* Send GetCameraAngle command signal */
dkato 0:f5de229c9a00 294 ret = HVC_SendCommand(HVC_COM_GET_CAMERA_ANGLE, 0, NULL);
dkato 0:f5de229c9a00 295 if ( ret != 0 ) return ret;
dkato 0:f5de229c9a00 296
dkato 0:f5de229c9a00 297 /* Receive header */
dkato 0:f5de229c9a00 298 ret = HVC_ReceiveHeader(inTimeOutTime, &size, outStatus);
dkato 0:f5de229c9a00 299 if ( ret != 0 ) return ret;
dkato 0:f5de229c9a00 300
dkato 0:f5de229c9a00 301 if ( size > (INT32)sizeof(UINT8) ) {
dkato 0:f5de229c9a00 302 size = sizeof(UINT8);
dkato 0:f5de229c9a00 303 }
dkato 0:f5de229c9a00 304
dkato 0:f5de229c9a00 305 /* Receive data */
dkato 0:f5de229c9a00 306 ret = HVC_ReceiveData(inTimeOutTime, size, recvData);
dkato 0:f5de229c9a00 307 *outAngleNo = recvData[0];
dkato 0:f5de229c9a00 308 return ret;
dkato 0:f5de229c9a00 309 }
dkato 0:f5de229c9a00 310
dkato 0:f5de229c9a00 311 /*----------------------------------------------------------------------------*/
dkato 0:f5de229c9a00 312 /* HVC_Execute */
dkato 0:f5de229c9a00 313 /* param : INT32 inTimeOutTime timeout time (ms) */
dkato 0:f5de229c9a00 314 /* : INT32 inExec executable function */
dkato 0:f5de229c9a00 315 /* : INT32 inImage image info */
dkato 0:f5de229c9a00 316 /* : HVC_RESULT *outHVCResult result data */
dkato 0:f5de229c9a00 317 /* : UINT8 *outStatus response code */
dkato 0:f5de229c9a00 318 /* return : INT32 execution result error code */
dkato 0:f5de229c9a00 319 /* : 0...normal */
dkato 0:f5de229c9a00 320 /* : -1...parameter error */
dkato 0:f5de229c9a00 321 /* : other...signal error */
dkato 0:f5de229c9a00 322 /*----------------------------------------------------------------------------*/
dkato 0:f5de229c9a00 323 INT32 HVC_Execute(INT32 inTimeOutTime, INT32 inExec, INT32 inImage, HVC_RESULT *outHVCResult, UINT8 *outStatus)
dkato 0:f5de229c9a00 324 {
dkato 0:f5de229c9a00 325 int i;
dkato 0:f5de229c9a00 326 INT32 ret = 0;
dkato 0:f5de229c9a00 327 INT32 size = 0;
dkato 0:f5de229c9a00 328 UINT8 sendData[32];
dkato 0:f5de229c9a00 329 UINT8 recvData[32];
dkato 0:f5de229c9a00 330
dkato 0:f5de229c9a00 331 if((NULL == outHVCResult) || (NULL == outStatus)){
dkato 0:f5de229c9a00 332 return HVC_ERROR_PARAMETER;
dkato 0:f5de229c9a00 333 }
dkato 0:f5de229c9a00 334
dkato 0:f5de229c9a00 335 /* Send Execute command signal */
dkato 0:f5de229c9a00 336 sendData[0] = (UINT8)(inExec&0xff);
dkato 0:f5de229c9a00 337 sendData[1] = (UINT8)((inExec>>8)&0xff);
dkato 0:f5de229c9a00 338 sendData[2] = (UINT8)(inImage&0xff);
dkato 0:f5de229c9a00 339 ret = HVC_SendCommand(HVC_COM_EXECUTE, sizeof(UINT8)*3, sendData);
dkato 0:f5de229c9a00 340 if ( ret != 0 ) return ret;
dkato 0:f5de229c9a00 341
dkato 0:f5de229c9a00 342 /* Receive header */
dkato 0:f5de229c9a00 343 ret = HVC_ReceiveHeader(inTimeOutTime, &size, outStatus);
dkato 0:f5de229c9a00 344 if ( ret != 0 ) return ret;
dkato 0:f5de229c9a00 345
dkato 0:f5de229c9a00 346 /* Receive result data */
dkato 0:f5de229c9a00 347 if ( size >= (INT32)sizeof(UINT8)*4 ) {
dkato 0:f5de229c9a00 348 outHVCResult->executedFunc = inExec;
dkato 0:f5de229c9a00 349 ret = HVC_ReceiveData(inTimeOutTime, sizeof(UINT8)*4, recvData);
dkato 0:f5de229c9a00 350 outHVCResult->bdResult.num = recvData[0];
dkato 0:f5de229c9a00 351 outHVCResult->hdResult.num = recvData[1];
dkato 0:f5de229c9a00 352 outHVCResult->fdResult.num = recvData[2];
dkato 0:f5de229c9a00 353 if ( ret != 0 ) return ret;
dkato 0:f5de229c9a00 354 size -= sizeof(UINT8)*4;
dkato 0:f5de229c9a00 355 }
dkato 0:f5de229c9a00 356
dkato 0:f5de229c9a00 357 /* Get Human Body Detection result */
dkato 0:f5de229c9a00 358 for(i = 0; i < outHVCResult->bdResult.num; i++){
dkato 0:f5de229c9a00 359 if ( size >= (INT32)sizeof(UINT8)*8 ) {
dkato 0:f5de229c9a00 360 ret = HVC_ReceiveData(inTimeOutTime, sizeof(UINT8)*8, recvData);
dkato 0:f5de229c9a00 361 outHVCResult->bdResult.bdResult[i].posX = (short)(recvData[0] + (recvData[1]<<8));
dkato 0:f5de229c9a00 362 outHVCResult->bdResult.bdResult[i].posY = (short)(recvData[2] + (recvData[3]<<8));
dkato 0:f5de229c9a00 363 outHVCResult->bdResult.bdResult[i].size = (short)(recvData[4] + (recvData[5]<<8));
dkato 0:f5de229c9a00 364 outHVCResult->bdResult.bdResult[i].confidence = (short)(recvData[6] + (recvData[7]<<8));
dkato 0:f5de229c9a00 365 if ( ret != 0 ) return ret;
dkato 0:f5de229c9a00 366 size -= sizeof(UINT8)*8;
dkato 0:f5de229c9a00 367 }
dkato 0:f5de229c9a00 368 }
dkato 0:f5de229c9a00 369
dkato 0:f5de229c9a00 370 /* Get Hand Detection result */
dkato 0:f5de229c9a00 371 for(i = 0; i < outHVCResult->hdResult.num; i++){
dkato 0:f5de229c9a00 372 if ( size >= (INT32)sizeof(UINT8)*8 ) {
dkato 0:f5de229c9a00 373 ret = HVC_ReceiveData(inTimeOutTime, sizeof(UINT8)*8, recvData);
dkato 0:f5de229c9a00 374 outHVCResult->hdResult.hdResult[i].posX = (short)(recvData[0] + (recvData[1]<<8));
dkato 0:f5de229c9a00 375 outHVCResult->hdResult.hdResult[i].posY = (short)(recvData[2] + (recvData[3]<<8));
dkato 0:f5de229c9a00 376 outHVCResult->hdResult.hdResult[i].size = (short)(recvData[4] + (recvData[5]<<8));
dkato 0:f5de229c9a00 377 outHVCResult->hdResult.hdResult[i].confidence = (short)(recvData[6] + (recvData[7]<<8));
dkato 0:f5de229c9a00 378 if ( ret != 0 ) return ret;
dkato 0:f5de229c9a00 379 size -= sizeof(UINT8)*8;
dkato 0:f5de229c9a00 380 }
dkato 0:f5de229c9a00 381 }
dkato 0:f5de229c9a00 382
dkato 0:f5de229c9a00 383 /* Face-related results */
dkato 0:f5de229c9a00 384 for(i = 0; i < outHVCResult->fdResult.num; i++){
dkato 0:f5de229c9a00 385 /* Face Detection result */
dkato 0:f5de229c9a00 386 if(0 != (outHVCResult->executedFunc & HVC_ACTIV_FACE_DETECTION)){
dkato 0:f5de229c9a00 387 if ( size >= (INT32)sizeof(UINT8)*8 ) {
dkato 0:f5de229c9a00 388 ret = HVC_ReceiveData(inTimeOutTime, sizeof(UINT8)*8, recvData);
dkato 0:f5de229c9a00 389 outHVCResult->fdResult.fcResult[i].dtResult.posX = (short)(recvData[0] + (recvData[1]<<8));
dkato 0:f5de229c9a00 390 outHVCResult->fdResult.fcResult[i].dtResult.posY = (short)(recvData[2] + (recvData[3]<<8));
dkato 0:f5de229c9a00 391 outHVCResult->fdResult.fcResult[i].dtResult.size = (short)(recvData[4] + (recvData[5]<<8));
dkato 0:f5de229c9a00 392 outHVCResult->fdResult.fcResult[i].dtResult.confidence = (short)(recvData[6] + (recvData[7]<<8));
dkato 0:f5de229c9a00 393 if ( ret != 0 ) return ret;
dkato 0:f5de229c9a00 394 size -= sizeof(UINT8)*8;
dkato 0:f5de229c9a00 395 }
dkato 0:f5de229c9a00 396 }
dkato 0:f5de229c9a00 397
dkato 0:f5de229c9a00 398 /* Face direction */
dkato 0:f5de229c9a00 399 if(0 != (outHVCResult->executedFunc & HVC_ACTIV_FACE_DIRECTION)){
dkato 0:f5de229c9a00 400 if ( size >= (INT32)sizeof(UINT8)*8 ) {
dkato 0:f5de229c9a00 401 ret = HVC_ReceiveData(inTimeOutTime, sizeof(UINT8)*8, recvData);
dkato 0:f5de229c9a00 402 outHVCResult->fdResult.fcResult[i].dirResult.yaw = (short)(recvData[0] + (recvData[1]<<8));
dkato 0:f5de229c9a00 403 outHVCResult->fdResult.fcResult[i].dirResult.pitch = (short)(recvData[2] + (recvData[3]<<8));
dkato 0:f5de229c9a00 404 outHVCResult->fdResult.fcResult[i].dirResult.roll = (short)(recvData[4] + (recvData[5]<<8));
dkato 0:f5de229c9a00 405 outHVCResult->fdResult.fcResult[i].dirResult.confidence = (short)(recvData[6] + (recvData[7]<<8));
dkato 0:f5de229c9a00 406 if ( ret != 0 ) return ret;
dkato 0:f5de229c9a00 407 size -= sizeof(UINT8)*8;
dkato 0:f5de229c9a00 408 }
dkato 0:f5de229c9a00 409 }
dkato 0:f5de229c9a00 410
dkato 0:f5de229c9a00 411 /* Age */
dkato 0:f5de229c9a00 412 if(0 != (outHVCResult->executedFunc & HVC_ACTIV_AGE_ESTIMATION)){
dkato 0:f5de229c9a00 413 if ( size >= (INT32)sizeof(UINT8)*3 ) {
dkato 0:f5de229c9a00 414 ret = HVC_ReceiveData(inTimeOutTime, sizeof(UINT8)*3, recvData);
dkato 0:f5de229c9a00 415 outHVCResult->fdResult.fcResult[i].ageResult.age = (char)(recvData[0]);
dkato 0:f5de229c9a00 416 outHVCResult->fdResult.fcResult[i].ageResult.confidence = (short)(recvData[1] + (recvData[2]<<8));
dkato 0:f5de229c9a00 417 if ( ret != 0 ) return ret;
dkato 0:f5de229c9a00 418 size -= sizeof(UINT8)*3;
dkato 0:f5de229c9a00 419 }
dkato 0:f5de229c9a00 420 }
dkato 0:f5de229c9a00 421
dkato 0:f5de229c9a00 422 /* Gender */
dkato 0:f5de229c9a00 423 if(0 != (outHVCResult->executedFunc & HVC_ACTIV_GENDER_ESTIMATION)){
dkato 0:f5de229c9a00 424 if ( size >= (INT32)sizeof(UINT8)*3 ) {
dkato 0:f5de229c9a00 425 ret = HVC_ReceiveData(inTimeOutTime, sizeof(UINT8)*3, recvData);
dkato 0:f5de229c9a00 426 outHVCResult->fdResult.fcResult[i].genderResult.gender = (char)(recvData[0]);
dkato 0:f5de229c9a00 427 outHVCResult->fdResult.fcResult[i].genderResult.confidence = (short)(recvData[1] + (recvData[2]<<8));
dkato 0:f5de229c9a00 428 if ( ret != 0 ) return ret;
dkato 0:f5de229c9a00 429 size -= sizeof(UINT8)*3;
dkato 0:f5de229c9a00 430 }
dkato 0:f5de229c9a00 431 }
dkato 0:f5de229c9a00 432
dkato 0:f5de229c9a00 433 /* Gaze */
dkato 0:f5de229c9a00 434 if(0 != (outHVCResult->executedFunc & HVC_ACTIV_GAZE_ESTIMATION)){
dkato 0:f5de229c9a00 435 if ( size >= (INT32)sizeof(UINT8)*2 ) {
dkato 0:f5de229c9a00 436 ret = HVC_ReceiveData(inTimeOutTime, sizeof(UINT8)*2, recvData);
dkato 0:f5de229c9a00 437 outHVCResult->fdResult.fcResult[i].gazeResult.gazeLR = (char)(recvData[0]);
dkato 0:f5de229c9a00 438 outHVCResult->fdResult.fcResult[i].gazeResult.gazeUD = (char)(recvData[1]);
dkato 0:f5de229c9a00 439 if ( ret != 0 ) return ret;
dkato 0:f5de229c9a00 440 size -= sizeof(UINT8)*2;
dkato 0:f5de229c9a00 441 }
dkato 0:f5de229c9a00 442 }
dkato 0:f5de229c9a00 443
dkato 0:f5de229c9a00 444 /* Blink */
dkato 0:f5de229c9a00 445 if(0 != (outHVCResult->executedFunc & HVC_ACTIV_BLINK_ESTIMATION)){
dkato 0:f5de229c9a00 446 if ( size >= (INT32)sizeof(UINT8)*4 ) {
dkato 0:f5de229c9a00 447 ret = HVC_ReceiveData(inTimeOutTime, sizeof(UINT8)*4, recvData);
dkato 0:f5de229c9a00 448 outHVCResult->fdResult.fcResult[i].blinkResult.ratioL = (short)(recvData[0] + (recvData[1]<<8));
dkato 0:f5de229c9a00 449 outHVCResult->fdResult.fcResult[i].blinkResult.ratioR = (short)(recvData[2] + (recvData[3]<<8));
dkato 0:f5de229c9a00 450 if ( ret != 0 ) return ret;
dkato 0:f5de229c9a00 451 size -= sizeof(UINT8)*4;
dkato 0:f5de229c9a00 452 }
dkato 0:f5de229c9a00 453 }
dkato 0:f5de229c9a00 454
dkato 0:f5de229c9a00 455 /* Expression */
dkato 0:f5de229c9a00 456 if(0 != (outHVCResult->executedFunc & HVC_ACTIV_EXPRESSION_ESTIMATION)){
dkato 0:f5de229c9a00 457 if ( size >= (INT32)sizeof(UINT8)*3 ) {
dkato 0:f5de229c9a00 458 ret = HVC_ReceiveData(inTimeOutTime, sizeof(UINT8)*3, recvData);
dkato 0:f5de229c9a00 459 outHVCResult->fdResult.fcResult[i].expressionResult.topExpression = (char)(recvData[0]);
dkato 0:f5de229c9a00 460 outHVCResult->fdResult.fcResult[i].expressionResult.topScore = (char)(recvData[1]);
dkato 0:f5de229c9a00 461 outHVCResult->fdResult.fcResult[i].expressionResult.degree = (char)(recvData[2]);
dkato 0:f5de229c9a00 462 if ( ret != 0 ) return ret;
dkato 0:f5de229c9a00 463 size -= sizeof(UINT8)*3;
dkato 0:f5de229c9a00 464 }
dkato 0:f5de229c9a00 465 }
dkato 0:f5de229c9a00 466
dkato 0:f5de229c9a00 467 /* Face Recognition */
dkato 0:f5de229c9a00 468 if(0 != (outHVCResult->executedFunc & HVC_ACTIV_FACE_RECOGNITION)){
dkato 0:f5de229c9a00 469 if ( size >= (INT32)sizeof(UINT8)*4 ) {
dkato 0:f5de229c9a00 470 ret = HVC_ReceiveData(inTimeOutTime, sizeof(UINT8)*4, recvData);
dkato 0:f5de229c9a00 471 outHVCResult->fdResult.fcResult[i].recognitionResult.uid = (short)(recvData[0] + (recvData[1]<<8));
dkato 0:f5de229c9a00 472 outHVCResult->fdResult.fcResult[i].recognitionResult.confidence = (short)(recvData[2] + (recvData[3]<<8));
dkato 0:f5de229c9a00 473 if ( ret != 0 ) return ret;
dkato 0:f5de229c9a00 474 size -= sizeof(UINT8)*4;
dkato 0:f5de229c9a00 475 }
dkato 0:f5de229c9a00 476 }
dkato 0:f5de229c9a00 477 }
dkato 0:f5de229c9a00 478
dkato 0:f5de229c9a00 479 if(HVC_EXECUTE_IMAGE_NONE != inImage){
dkato 0:f5de229c9a00 480 /* Image data */
dkato 0:f5de229c9a00 481 if ( size >= (INT32)sizeof(UINT8)*4 ) {
dkato 0:f5de229c9a00 482 ret = HVC_ReceiveData(inTimeOutTime, sizeof(UINT8)*4, recvData);
dkato 0:f5de229c9a00 483 outHVCResult->image.width = (short)(recvData[0] + (recvData[1]<<8));
dkato 0:f5de229c9a00 484 outHVCResult->image.height = (short)(recvData[2] + (recvData[3]<<8));
dkato 0:f5de229c9a00 485 if ( ret != 0 ) return ret;
dkato 0:f5de229c9a00 486 size -= sizeof(UINT8)*4;
dkato 0:f5de229c9a00 487 }
dkato 0:f5de229c9a00 488
dkato 0:f5de229c9a00 489 if ( size >= (INT32)sizeof(UINT8)*outHVCResult->image.width*outHVCResult->image.height ) {
dkato 0:f5de229c9a00 490 ret = HVC_ReceiveData(inTimeOutTime, sizeof(UINT8)*outHVCResult->image.width*outHVCResult->image.height, outHVCResult->image.image);
dkato 0:f5de229c9a00 491 if ( ret != 0 ) return ret;
dkato 0:f5de229c9a00 492 size -= sizeof(UINT8)*outHVCResult->image.width*outHVCResult->image.height;
dkato 0:f5de229c9a00 493 }
dkato 0:f5de229c9a00 494 }
dkato 0:f5de229c9a00 495 return 0;
dkato 0:f5de229c9a00 496 }
dkato 0:f5de229c9a00 497
dkato 0:f5de229c9a00 498 /*----------------------------------------------------------------------------*/
dkato 0:f5de229c9a00 499 /* HVC_ExecuteEx */
dkato 0:f5de229c9a00 500 /* param : INT32 inTimeOutTime timeout time (ms) */
dkato 0:f5de229c9a00 501 /* : INT32 inExec executable function */
dkato 0:f5de229c9a00 502 /* : INT32 inImage image info */
dkato 0:f5de229c9a00 503 /* : HVC_RESULT *outHVCResult result data */
dkato 0:f5de229c9a00 504 /* : UINT8 *outStatus response code */
dkato 0:f5de229c9a00 505 /* return : INT32 execution result error code */
dkato 0:f5de229c9a00 506 /* : 0...normal */
dkato 0:f5de229c9a00 507 /* : -1...parameter error */
dkato 0:f5de229c9a00 508 /* : other...signal error */
dkato 0:f5de229c9a00 509 /*----------------------------------------------------------------------------*/
dkato 0:f5de229c9a00 510 INT32 HVC_ExecuteEx(INT32 inTimeOutTime, INT32 inExec, INT32 inImage, HVC_RESULT *outHVCResult, UINT8 *outStatus)
dkato 0:f5de229c9a00 511 {
dkato 0:f5de229c9a00 512 int i, j;
dkato 0:f5de229c9a00 513 INT32 ret = 0;
dkato 0:f5de229c9a00 514 INT32 size = 0;
dkato 0:f5de229c9a00 515 UINT8 sendData[32];
dkato 0:f5de229c9a00 516 UINT8 recvData[32];
dkato 0:f5de229c9a00 517
dkato 0:f5de229c9a00 518 if((NULL == outHVCResult) || (NULL == outStatus)){
dkato 0:f5de229c9a00 519 return HVC_ERROR_PARAMETER;
dkato 0:f5de229c9a00 520 }
dkato 0:f5de229c9a00 521
dkato 0:f5de229c9a00 522 /* Send Execute command signal */
dkato 0:f5de229c9a00 523 sendData[0] = (UINT8)(inExec&0xff);
dkato 0:f5de229c9a00 524 sendData[1] = (UINT8)((inExec>>8)&0xff);
dkato 0:f5de229c9a00 525 sendData[2] = (UINT8)(inImage&0xff);
dkato 0:f5de229c9a00 526 ret = HVC_SendCommand(HVC_COM_EXECUTEEX, sizeof(UINT8)*3, sendData);
dkato 0:f5de229c9a00 527 if ( ret != 0 ) return ret;
dkato 0:f5de229c9a00 528
dkato 0:f5de229c9a00 529 /* Receive header */
dkato 0:f5de229c9a00 530 ret = HVC_ReceiveHeader(inTimeOutTime, &size, outStatus);
dkato 0:f5de229c9a00 531 if ( ret != 0 ) return ret;
dkato 0:f5de229c9a00 532
dkato 0:f5de229c9a00 533 /* Receive result data */
dkato 0:f5de229c9a00 534 if ( size >= (INT32)sizeof(UINT8)*4 ) {
dkato 0:f5de229c9a00 535 outHVCResult->executedFunc = inExec;
dkato 0:f5de229c9a00 536 ret = HVC_ReceiveData(inTimeOutTime, sizeof(UINT8)*4, recvData);
dkato 0:f5de229c9a00 537 outHVCResult->bdResult.num = recvData[0];
dkato 0:f5de229c9a00 538 outHVCResult->hdResult.num = recvData[1];
dkato 0:f5de229c9a00 539 outHVCResult->fdResult.num = recvData[2];
dkato 0:f5de229c9a00 540 if ( ret != 0 ) return ret;
dkato 0:f5de229c9a00 541 size -= sizeof(UINT8)*4;
dkato 0:f5de229c9a00 542 }
dkato 0:f5de229c9a00 543
dkato 0:f5de229c9a00 544 /* Get Human Body Detection result */
dkato 0:f5de229c9a00 545 for(i = 0; i < outHVCResult->bdResult.num; i++){
dkato 0:f5de229c9a00 546 if ( size >= (INT32)sizeof(UINT8)*8 ) {
dkato 0:f5de229c9a00 547 ret = HVC_ReceiveData(inTimeOutTime, sizeof(UINT8)*8, recvData);
dkato 0:f5de229c9a00 548 outHVCResult->bdResult.bdResult[i].posX = (short)(recvData[0] + (recvData[1]<<8));
dkato 0:f5de229c9a00 549 outHVCResult->bdResult.bdResult[i].posY = (short)(recvData[2] + (recvData[3]<<8));
dkato 0:f5de229c9a00 550 outHVCResult->bdResult.bdResult[i].size = (short)(recvData[4] + (recvData[5]<<8));
dkato 0:f5de229c9a00 551 outHVCResult->bdResult.bdResult[i].confidence = (short)(recvData[6] + (recvData[7]<<8));
dkato 0:f5de229c9a00 552 if ( ret != 0 ) return ret;
dkato 0:f5de229c9a00 553 size -= sizeof(UINT8)*8;
dkato 0:f5de229c9a00 554 }
dkato 0:f5de229c9a00 555 }
dkato 0:f5de229c9a00 556
dkato 0:f5de229c9a00 557 /* Get Hand Detection result */
dkato 0:f5de229c9a00 558 for(i = 0; i < outHVCResult->hdResult.num; i++){
dkato 0:f5de229c9a00 559 if ( size >= (INT32)sizeof(UINT8)*8 ) {
dkato 0:f5de229c9a00 560 ret = HVC_ReceiveData(inTimeOutTime, sizeof(UINT8)*8, recvData);
dkato 0:f5de229c9a00 561 outHVCResult->hdResult.hdResult[i].posX = (short)(recvData[0] + (recvData[1]<<8));
dkato 0:f5de229c9a00 562 outHVCResult->hdResult.hdResult[i].posY = (short)(recvData[2] + (recvData[3]<<8));
dkato 0:f5de229c9a00 563 outHVCResult->hdResult.hdResult[i].size = (short)(recvData[4] + (recvData[5]<<8));
dkato 0:f5de229c9a00 564 outHVCResult->hdResult.hdResult[i].confidence = (short)(recvData[6] + (recvData[7]<<8));
dkato 0:f5de229c9a00 565 if ( ret != 0 ) return ret;
dkato 0:f5de229c9a00 566 size -= sizeof(UINT8)*8;
dkato 0:f5de229c9a00 567 }
dkato 0:f5de229c9a00 568 }
dkato 0:f5de229c9a00 569
dkato 0:f5de229c9a00 570 /* Face-related results */
dkato 0:f5de229c9a00 571 for(i = 0; i < outHVCResult->fdResult.num; i++){
dkato 0:f5de229c9a00 572 /* Face Detection result */
dkato 0:f5de229c9a00 573 if(0 != (outHVCResult->executedFunc & HVC_ACTIV_FACE_DETECTION)){
dkato 0:f5de229c9a00 574 if ( size >= (INT32)sizeof(UINT8)*8 ) {
dkato 0:f5de229c9a00 575 ret = HVC_ReceiveData(inTimeOutTime, sizeof(UINT8)*8, recvData);
dkato 0:f5de229c9a00 576 outHVCResult->fdResult.fcResult[i].dtResult.posX = (short)(recvData[0] + (recvData[1]<<8));
dkato 0:f5de229c9a00 577 outHVCResult->fdResult.fcResult[i].dtResult.posY = (short)(recvData[2] + (recvData[3]<<8));
dkato 0:f5de229c9a00 578 outHVCResult->fdResult.fcResult[i].dtResult.size = (short)(recvData[4] + (recvData[5]<<8));
dkato 0:f5de229c9a00 579 outHVCResult->fdResult.fcResult[i].dtResult.confidence = (short)(recvData[6] + (recvData[7]<<8));
dkato 0:f5de229c9a00 580 if ( ret != 0 ) return ret;
dkato 0:f5de229c9a00 581 size -= sizeof(UINT8)*8;
dkato 0:f5de229c9a00 582 }
dkato 0:f5de229c9a00 583 }
dkato 0:f5de229c9a00 584
dkato 0:f5de229c9a00 585 /* Face direction */
dkato 0:f5de229c9a00 586 if(0 != (outHVCResult->executedFunc & HVC_ACTIV_FACE_DIRECTION)){
dkato 0:f5de229c9a00 587 if ( size >= (INT32)sizeof(UINT8)*8 ) {
dkato 0:f5de229c9a00 588 ret = HVC_ReceiveData(inTimeOutTime, sizeof(UINT8)*8, recvData);
dkato 0:f5de229c9a00 589 outHVCResult->fdResult.fcResult[i].dirResult.yaw = (short)(recvData[0] + (recvData[1]<<8));
dkato 0:f5de229c9a00 590 outHVCResult->fdResult.fcResult[i].dirResult.pitch = (short)(recvData[2] + (recvData[3]<<8));
dkato 0:f5de229c9a00 591 outHVCResult->fdResult.fcResult[i].dirResult.roll = (short)(recvData[4] + (recvData[5]<<8));
dkato 0:f5de229c9a00 592 outHVCResult->fdResult.fcResult[i].dirResult.confidence = (short)(recvData[6] + (recvData[7]<<8));
dkato 0:f5de229c9a00 593 if ( ret != 0 ) return ret;
dkato 0:f5de229c9a00 594 size -= sizeof(UINT8)*8;
dkato 0:f5de229c9a00 595 }
dkato 0:f5de229c9a00 596 }
dkato 0:f5de229c9a00 597
dkato 0:f5de229c9a00 598 /* Age */
dkato 0:f5de229c9a00 599 if(0 != (outHVCResult->executedFunc & HVC_ACTIV_AGE_ESTIMATION)){
dkato 0:f5de229c9a00 600 if ( size >= (INT32)sizeof(UINT8)*3 ) {
dkato 0:f5de229c9a00 601 ret = HVC_ReceiveData(inTimeOutTime, sizeof(UINT8)*3, recvData);
dkato 0:f5de229c9a00 602 outHVCResult->fdResult.fcResult[i].ageResult.age = (char)(recvData[0]);
dkato 0:f5de229c9a00 603 outHVCResult->fdResult.fcResult[i].ageResult.confidence = (short)(recvData[1] + (recvData[2]<<8));
dkato 0:f5de229c9a00 604 if ( ret != 0 ) return ret;
dkato 0:f5de229c9a00 605 size -= sizeof(UINT8)*3;
dkato 0:f5de229c9a00 606 }
dkato 0:f5de229c9a00 607 }
dkato 0:f5de229c9a00 608
dkato 0:f5de229c9a00 609 /* Gender */
dkato 0:f5de229c9a00 610 if(0 != (outHVCResult->executedFunc & HVC_ACTIV_GENDER_ESTIMATION)){
dkato 0:f5de229c9a00 611 if ( size >= (INT32)sizeof(UINT8)*3 ) {
dkato 0:f5de229c9a00 612 ret = HVC_ReceiveData(inTimeOutTime, sizeof(UINT8)*3, recvData);
dkato 0:f5de229c9a00 613 outHVCResult->fdResult.fcResult[i].genderResult.gender = (char)(recvData[0]);
dkato 0:f5de229c9a00 614 outHVCResult->fdResult.fcResult[i].genderResult.confidence = (short)(recvData[1] + (recvData[2]<<8));
dkato 0:f5de229c9a00 615 if ( ret != 0 ) return ret;
dkato 0:f5de229c9a00 616 size -= sizeof(UINT8)*3;
dkato 0:f5de229c9a00 617 }
dkato 0:f5de229c9a00 618 }
dkato 0:f5de229c9a00 619
dkato 0:f5de229c9a00 620 /* Gaze */
dkato 0:f5de229c9a00 621 if(0 != (outHVCResult->executedFunc & HVC_ACTIV_GAZE_ESTIMATION)){
dkato 0:f5de229c9a00 622 if ( size >= (INT32)sizeof(UINT8)*2 ) {
dkato 0:f5de229c9a00 623 ret = HVC_ReceiveData(inTimeOutTime, sizeof(UINT8)*2, recvData);
dkato 0:f5de229c9a00 624 outHVCResult->fdResult.fcResult[i].gazeResult.gazeLR = (char)(recvData[0]);
dkato 0:f5de229c9a00 625 outHVCResult->fdResult.fcResult[i].gazeResult.gazeUD = (char)(recvData[1]);
dkato 0:f5de229c9a00 626 if ( ret != 0 ) return ret;
dkato 0:f5de229c9a00 627 size -= sizeof(UINT8)*2;
dkato 0:f5de229c9a00 628 }
dkato 0:f5de229c9a00 629 }
dkato 0:f5de229c9a00 630
dkato 0:f5de229c9a00 631 /* Blink */
dkato 0:f5de229c9a00 632 if(0 != (outHVCResult->executedFunc & HVC_ACTIV_BLINK_ESTIMATION)){
dkato 0:f5de229c9a00 633 if ( size >= (INT32)sizeof(UINT8)*4 ) {
dkato 0:f5de229c9a00 634 ret = HVC_ReceiveData(inTimeOutTime, sizeof(UINT8)*4, recvData);
dkato 0:f5de229c9a00 635 outHVCResult->fdResult.fcResult[i].blinkResult.ratioL = (short)(recvData[0] + (recvData[1]<<8));
dkato 0:f5de229c9a00 636 outHVCResult->fdResult.fcResult[i].blinkResult.ratioR = (short)(recvData[2] + (recvData[3]<<8));
dkato 0:f5de229c9a00 637 if ( ret != 0 ) return ret;
dkato 0:f5de229c9a00 638 size -= sizeof(UINT8)*4;
dkato 0:f5de229c9a00 639 }
dkato 0:f5de229c9a00 640 }
dkato 0:f5de229c9a00 641
dkato 0:f5de229c9a00 642 /* Expression */
dkato 0:f5de229c9a00 643 if(0 != (outHVCResult->executedFunc & HVC_ACTIV_EXPRESSION_ESTIMATION)){
dkato 0:f5de229c9a00 644 if ( size >= (INT32)sizeof(UINT8)*6 ) {
dkato 0:f5de229c9a00 645 ret = HVC_ReceiveData(inTimeOutTime, sizeof(UINT8)*6, recvData);
dkato 0:f5de229c9a00 646 outHVCResult->fdResult.fcResult[i].expressionResult.topExpression = -128;
dkato 0:f5de229c9a00 647 outHVCResult->fdResult.fcResult[i].expressionResult.topScore = -128;
dkato 0:f5de229c9a00 648 for(j = 0; j < 5; j++){
dkato 0:f5de229c9a00 649 outHVCResult->fdResult.fcResult[i].expressionResult.score[j] = (char)(recvData[j]);
dkato 0:f5de229c9a00 650 if(outHVCResult->fdResult.fcResult[i].expressionResult.topScore < outHVCResult->fdResult.fcResult[i].expressionResult.score[j]){
dkato 0:f5de229c9a00 651 outHVCResult->fdResult.fcResult[i].expressionResult.topScore = outHVCResult->fdResult.fcResult[i].expressionResult.score[j];
dkato 0:f5de229c9a00 652 outHVCResult->fdResult.fcResult[i].expressionResult.topExpression = j + 1;
dkato 0:f5de229c9a00 653 }
dkato 0:f5de229c9a00 654 }
dkato 0:f5de229c9a00 655 outHVCResult->fdResult.fcResult[i].expressionResult.degree = (char)(recvData[5]);
dkato 0:f5de229c9a00 656 if ( ret != 0 ) return ret;
dkato 0:f5de229c9a00 657 size -= sizeof(UINT8)*6;
dkato 0:f5de229c9a00 658 }
dkato 0:f5de229c9a00 659 }
dkato 0:f5de229c9a00 660
dkato 0:f5de229c9a00 661 /* Face Recognition */
dkato 0:f5de229c9a00 662 if(0 != (outHVCResult->executedFunc & HVC_ACTIV_FACE_RECOGNITION)){
dkato 0:f5de229c9a00 663 if ( size >= (INT32)sizeof(UINT8)*4 ) {
dkato 0:f5de229c9a00 664 ret = HVC_ReceiveData(inTimeOutTime, sizeof(UINT8)*4, recvData);
dkato 0:f5de229c9a00 665 outHVCResult->fdResult.fcResult[i].recognitionResult.uid = (short)(recvData[0] + (recvData[1]<<8));
dkato 0:f5de229c9a00 666 outHVCResult->fdResult.fcResult[i].recognitionResult.confidence = (short)(recvData[2] + (recvData[3]<<8));
dkato 0:f5de229c9a00 667 if ( ret != 0 ) return ret;
dkato 0:f5de229c9a00 668 size -= sizeof(UINT8)*4;
dkato 0:f5de229c9a00 669 }
dkato 0:f5de229c9a00 670 }
dkato 0:f5de229c9a00 671 }
dkato 0:f5de229c9a00 672
dkato 0:f5de229c9a00 673 if(HVC_EXECUTE_IMAGE_NONE != inImage){
dkato 0:f5de229c9a00 674 /* Image data */
dkato 0:f5de229c9a00 675 if ( size >= (INT32)sizeof(UINT8)*4 ) {
dkato 0:f5de229c9a00 676 ret = HVC_ReceiveData(inTimeOutTime, sizeof(UINT8)*4, recvData);
dkato 0:f5de229c9a00 677 outHVCResult->image.width = (short)(recvData[0] + (recvData[1]<<8));
dkato 0:f5de229c9a00 678 outHVCResult->image.height = (short)(recvData[2] + (recvData[3]<<8));
dkato 0:f5de229c9a00 679 if ( ret != 0 ) return ret;
dkato 0:f5de229c9a00 680 size -= sizeof(UINT8)*4;
dkato 0:f5de229c9a00 681 }
dkato 0:f5de229c9a00 682
dkato 0:f5de229c9a00 683 if ( size >= (INT32)sizeof(UINT8)*outHVCResult->image.width*outHVCResult->image.height ) {
dkato 0:f5de229c9a00 684 ret = HVC_ReceiveData(inTimeOutTime, sizeof(UINT8)*outHVCResult->image.width*outHVCResult->image.height, outHVCResult->image.image);
dkato 0:f5de229c9a00 685 if ( ret != 0 ) return ret;
dkato 0:f5de229c9a00 686 size -= sizeof(UINT8)*outHVCResult->image.width*outHVCResult->image.height;
dkato 0:f5de229c9a00 687 }
dkato 0:f5de229c9a00 688 }
dkato 0:f5de229c9a00 689 return 0;
dkato 0:f5de229c9a00 690 }
dkato 0:f5de229c9a00 691
dkato 0:f5de229c9a00 692 /*----------------------------------------------------------------------------*/
dkato 0:f5de229c9a00 693 /* HVC_SetThreshold */
dkato 0:f5de229c9a00 694 /* param : INT32 inTimeOutTime timeout time (ms) */
dkato 0:f5de229c9a00 695 /* : HVC_THRESHOLD *inThreshold threshold values */
dkato 0:f5de229c9a00 696 /* : UINT8 *outStatus response code */
dkato 0:f5de229c9a00 697 /* return : INT32 execution result error code */
dkato 0:f5de229c9a00 698 /* : 0...normal */
dkato 0:f5de229c9a00 699 /* : -1...parameter error */
dkato 0:f5de229c9a00 700 /* : other...signal error */
dkato 0:f5de229c9a00 701 /*----------------------------------------------------------------------------*/
dkato 0:f5de229c9a00 702 INT32 HVC_SetThreshold(INT32 inTimeOutTime, HVC_THRESHOLD *inThreshold, UINT8 *outStatus)
dkato 0:f5de229c9a00 703 {
dkato 0:f5de229c9a00 704 INT32 ret = 0;
dkato 0:f5de229c9a00 705 INT32 size = 0;
dkato 0:f5de229c9a00 706 UINT8 sendData[32];
dkato 0:f5de229c9a00 707
dkato 0:f5de229c9a00 708 if((NULL == inThreshold) || (NULL == outStatus)){
dkato 0:f5de229c9a00 709 return HVC_ERROR_PARAMETER;
dkato 0:f5de229c9a00 710 }
dkato 0:f5de229c9a00 711
dkato 0:f5de229c9a00 712 sendData[0] = (UINT8)(inThreshold->bdThreshold&0xff);
dkato 0:f5de229c9a00 713 sendData[1] = (UINT8)((inThreshold->bdThreshold>>8)&0xff);
dkato 0:f5de229c9a00 714 sendData[2] = (UINT8)(inThreshold->hdThreshold&0xff);
dkato 0:f5de229c9a00 715 sendData[3] = (UINT8)((inThreshold->hdThreshold>>8)&0xff);
dkato 0:f5de229c9a00 716 sendData[4] = (UINT8)(inThreshold->dtThreshold&0xff);
dkato 0:f5de229c9a00 717 sendData[5] = (UINT8)((inThreshold->dtThreshold>>8)&0xff);
dkato 0:f5de229c9a00 718 sendData[6] = (UINT8)(inThreshold->rsThreshold&0xff);
dkato 0:f5de229c9a00 719 sendData[7] = (UINT8)((inThreshold->rsThreshold>>8)&0xff);
dkato 0:f5de229c9a00 720 /* Send SetThreshold command signal */
dkato 0:f5de229c9a00 721 ret = HVC_SendCommand(HVC_COM_SET_THRESHOLD, sizeof(UINT8)*8, sendData);
dkato 0:f5de229c9a00 722 if ( ret != 0 ) return ret;
dkato 0:f5de229c9a00 723
dkato 0:f5de229c9a00 724 /* Receive header */
dkato 0:f5de229c9a00 725 ret = HVC_ReceiveHeader(inTimeOutTime, &size, outStatus);
dkato 0:f5de229c9a00 726 if ( ret != 0 ) return ret;
dkato 0:f5de229c9a00 727 return 0;
dkato 0:f5de229c9a00 728 }
dkato 0:f5de229c9a00 729
dkato 0:f5de229c9a00 730 /*----------------------------------------------------------------------------*/
dkato 0:f5de229c9a00 731 /* HVC_GetThreshold */
dkato 0:f5de229c9a00 732 /* param : INT32 inTimeOutTime timeout time (ms) */
dkato 0:f5de229c9a00 733 /* : HVC_THRESHOLD *outThreshold threshold values */
dkato 0:f5de229c9a00 734 /* : UINT8 *outStatus response code */
dkato 0:f5de229c9a00 735 /* return : INT32 execution result error code */
dkato 0:f5de229c9a00 736 /* : 0...normal */
dkato 0:f5de229c9a00 737 /* : -1...parameter error */
dkato 0:f5de229c9a00 738 /* : other...signal error */
dkato 0:f5de229c9a00 739 /*----------------------------------------------------------------------------*/
dkato 0:f5de229c9a00 740 INT32 HVC_GetThreshold(INT32 inTimeOutTime, HVC_THRESHOLD *outThreshold, UINT8 *outStatus)
dkato 0:f5de229c9a00 741 {
dkato 0:f5de229c9a00 742 INT32 ret = 0;
dkato 0:f5de229c9a00 743 INT32 size = 0;
dkato 0:f5de229c9a00 744 UINT8 recvData[32];
dkato 0:f5de229c9a00 745
dkato 0:f5de229c9a00 746 if((NULL == outThreshold) || (NULL == outStatus)){
dkato 0:f5de229c9a00 747 return HVC_ERROR_PARAMETER;
dkato 0:f5de229c9a00 748 }
dkato 0:f5de229c9a00 749
dkato 0:f5de229c9a00 750 /* Send GetThreshold command signal */
dkato 0:f5de229c9a00 751 ret = HVC_SendCommand(HVC_COM_GET_THRESHOLD, 0, NULL);
dkato 0:f5de229c9a00 752 if ( ret != 0 ) return ret;
dkato 0:f5de229c9a00 753
dkato 0:f5de229c9a00 754 /* Receive header */
dkato 0:f5de229c9a00 755 ret = HVC_ReceiveHeader(inTimeOutTime, &size, outStatus);
dkato 0:f5de229c9a00 756 if ( ret != 0 ) return ret;
dkato 0:f5de229c9a00 757
dkato 0:f5de229c9a00 758 if ( size > (INT32)sizeof(UINT8)*8 ) {
dkato 0:f5de229c9a00 759 size = sizeof(UINT8)*8;
dkato 0:f5de229c9a00 760 }
dkato 0:f5de229c9a00 761
dkato 0:f5de229c9a00 762 /* Receive data */
dkato 0:f5de229c9a00 763 ret = HVC_ReceiveData(inTimeOutTime, size, recvData);
dkato 0:f5de229c9a00 764 outThreshold->bdThreshold = recvData[0] + (recvData[1]<<8);
dkato 0:f5de229c9a00 765 outThreshold->hdThreshold = recvData[2] + (recvData[3]<<8);
dkato 0:f5de229c9a00 766 outThreshold->dtThreshold = recvData[4] + (recvData[5]<<8);
dkato 0:f5de229c9a00 767 outThreshold->rsThreshold = recvData[6] + (recvData[7]<<8);
dkato 0:f5de229c9a00 768 return ret;
dkato 0:f5de229c9a00 769 }
dkato 0:f5de229c9a00 770
dkato 0:f5de229c9a00 771 /*----------------------------------------------------------------------------*/
dkato 0:f5de229c9a00 772 /* HVC_SetSizeRange */
dkato 0:f5de229c9a00 773 /* param : INT32 inTimeOutTime timeout time (ms) */
dkato 0:f5de229c9a00 774 /* : HVC_SIZERANGE *inSizeRange detection sizes */
dkato 0:f5de229c9a00 775 /* : UINT8 *outStatus response code */
dkato 0:f5de229c9a00 776 /* return : INT32 execution result error code */
dkato 0:f5de229c9a00 777 /* : 0...normal */
dkato 0:f5de229c9a00 778 /* : -1...parameter error */
dkato 0:f5de229c9a00 779 /* : other...signal error */
dkato 0:f5de229c9a00 780 /*----------------------------------------------------------------------------*/
dkato 0:f5de229c9a00 781 INT32 HVC_SetSizeRange(INT32 inTimeOutTime, HVC_SIZERANGE *inSizeRange, UINT8 *outStatus)
dkato 0:f5de229c9a00 782 {
dkato 0:f5de229c9a00 783 INT32 ret = 0;
dkato 0:f5de229c9a00 784 INT32 size = 0;
dkato 0:f5de229c9a00 785 UINT8 sendData[32];
dkato 0:f5de229c9a00 786
dkato 0:f5de229c9a00 787 if((NULL == inSizeRange) || (NULL == outStatus)){
dkato 0:f5de229c9a00 788 return HVC_ERROR_PARAMETER;
dkato 0:f5de229c9a00 789 }
dkato 0:f5de229c9a00 790
dkato 0:f5de229c9a00 791 sendData[0] = (UINT8)(inSizeRange->bdMinSize&0xff);
dkato 0:f5de229c9a00 792 sendData[1] = (UINT8)((inSizeRange->bdMinSize>>8)&0xff);
dkato 0:f5de229c9a00 793 sendData[2] = (UINT8)(inSizeRange->bdMaxSize&0xff);
dkato 0:f5de229c9a00 794 sendData[3] = (UINT8)((inSizeRange->bdMaxSize>>8)&0xff);
dkato 0:f5de229c9a00 795 sendData[4] = (UINT8)(inSizeRange->hdMinSize&0xff);
dkato 0:f5de229c9a00 796 sendData[5] = (UINT8)((inSizeRange->hdMinSize>>8)&0xff);
dkato 0:f5de229c9a00 797 sendData[6] = (UINT8)(inSizeRange->hdMaxSize&0xff);
dkato 0:f5de229c9a00 798 sendData[7] = (UINT8)((inSizeRange->hdMaxSize>>8)&0xff);
dkato 0:f5de229c9a00 799 sendData[8] = (UINT8)(inSizeRange->dtMinSize&0xff);
dkato 0:f5de229c9a00 800 sendData[9] = (UINT8)((inSizeRange->dtMinSize>>8)&0xff);
dkato 0:f5de229c9a00 801 sendData[10] = (UINT8)(inSizeRange->dtMaxSize&0xff);
dkato 0:f5de229c9a00 802 sendData[11] = (UINT8)((inSizeRange->dtMaxSize>>8)&0xff);
dkato 0:f5de229c9a00 803 /* Send SetSizeRange command signal */
dkato 0:f5de229c9a00 804 ret = HVC_SendCommand(HVC_COM_SET_SIZE_RANGE, sizeof(UINT8)*12, sendData);
dkato 0:f5de229c9a00 805 if ( ret != 0 ) return ret;
dkato 0:f5de229c9a00 806
dkato 0:f5de229c9a00 807 /* Receive header */
dkato 0:f5de229c9a00 808 ret = HVC_ReceiveHeader(inTimeOutTime, &size, outStatus);
dkato 0:f5de229c9a00 809 if ( ret != 0 ) return ret;
dkato 0:f5de229c9a00 810 return 0;
dkato 0:f5de229c9a00 811 }
dkato 0:f5de229c9a00 812
dkato 0:f5de229c9a00 813 /*----------------------------------------------------------------------------*/
dkato 0:f5de229c9a00 814 /* HVC_GetSizeRange */
dkato 0:f5de229c9a00 815 /* param : INT32 inTimeOutTime timeout time (ms) */
dkato 0:f5de229c9a00 816 /* : HVC_SIZERANGE *outSizeRange detection sizes */
dkato 0:f5de229c9a00 817 /* : UINT8 *outStatus response code */
dkato 0:f5de229c9a00 818 /* return : INT32 execution result error code */
dkato 0:f5de229c9a00 819 /* : 0...normal */
dkato 0:f5de229c9a00 820 /* : -1...parameter error */
dkato 0:f5de229c9a00 821 /* : other...signal error */
dkato 0:f5de229c9a00 822 /*----------------------------------------------------------------------------*/
dkato 0:f5de229c9a00 823 INT32 HVC_GetSizeRange(INT32 inTimeOutTime, HVC_SIZERANGE *outSizeRange, UINT8 *outStatus)
dkato 0:f5de229c9a00 824 {
dkato 0:f5de229c9a00 825 INT32 ret = 0;
dkato 0:f5de229c9a00 826 INT32 size = 0;
dkato 0:f5de229c9a00 827 UINT8 recvData[32];
dkato 0:f5de229c9a00 828
dkato 0:f5de229c9a00 829 if((NULL == outSizeRange) || (NULL == outStatus)){
dkato 0:f5de229c9a00 830 return HVC_ERROR_PARAMETER;
dkato 0:f5de229c9a00 831 }
dkato 0:f5de229c9a00 832
dkato 0:f5de229c9a00 833 /* Send GetSizeRange command signal */
dkato 0:f5de229c9a00 834 ret = HVC_SendCommand(HVC_COM_GET_SIZE_RANGE, 0, NULL);
dkato 0:f5de229c9a00 835 if ( ret != 0 ) return ret;
dkato 0:f5de229c9a00 836
dkato 0:f5de229c9a00 837 /* Receive header */
dkato 0:f5de229c9a00 838 ret = HVC_ReceiveHeader(inTimeOutTime, &size, outStatus);
dkato 0:f5de229c9a00 839 if ( ret != 0 ) return ret;
dkato 0:f5de229c9a00 840
dkato 0:f5de229c9a00 841 if ( size > (INT32)sizeof(UINT8)*12 ) {
dkato 0:f5de229c9a00 842 size = sizeof(UINT8)*12;
dkato 0:f5de229c9a00 843 }
dkato 0:f5de229c9a00 844
dkato 0:f5de229c9a00 845 /* Receive data */
dkato 0:f5de229c9a00 846 ret = HVC_ReceiveData(inTimeOutTime, size, recvData);
dkato 0:f5de229c9a00 847 outSizeRange->bdMinSize = recvData[0] + (recvData[1]<<8);
dkato 0:f5de229c9a00 848 outSizeRange->bdMaxSize = recvData[2] + (recvData[3]<<8);
dkato 0:f5de229c9a00 849 outSizeRange->hdMinSize = recvData[4] + (recvData[5]<<8);
dkato 0:f5de229c9a00 850 outSizeRange->hdMaxSize = recvData[6] + (recvData[7]<<8);
dkato 0:f5de229c9a00 851 outSizeRange->dtMinSize = recvData[8] + (recvData[9]<<8);
dkato 0:f5de229c9a00 852 outSizeRange->dtMaxSize = recvData[10] + (recvData[11]<<8);
dkato 0:f5de229c9a00 853 return ret;
dkato 0:f5de229c9a00 854 }
dkato 0:f5de229c9a00 855
dkato 0:f5de229c9a00 856 /*----------------------------------------------------------------------------*/
dkato 0:f5de229c9a00 857 /* HVC_SetFaceDetectionAngle */
dkato 0:f5de229c9a00 858 /* param : INT32 inTimeOutTime timeout time (ms) */
dkato 0:f5de229c9a00 859 /* : INT32 inPose Yaw angle range */
dkato 0:f5de229c9a00 860 /* : INT32 inAngle Roll angle range */
dkato 0:f5de229c9a00 861 /* : UINT8 *outStatus response code */
dkato 0:f5de229c9a00 862 /* return : INT32 execution result error code */
dkato 0:f5de229c9a00 863 /* : 0...normal */
dkato 0:f5de229c9a00 864 /* : -1...parameter error */
dkato 0:f5de229c9a00 865 /* : other...signal error */
dkato 0:f5de229c9a00 866 /*----------------------------------------------------------------------------*/
dkato 0:f5de229c9a00 867 INT32 HVC_SetFaceDetectionAngle(INT32 inTimeOutTime, INT32 inPose, INT32 inAngle, UINT8 *outStatus)
dkato 0:f5de229c9a00 868 {
dkato 0:f5de229c9a00 869 INT32 ret = 0;
dkato 0:f5de229c9a00 870 INT32 size = 0;
dkato 0:f5de229c9a00 871 UINT8 sendData[32];
dkato 0:f5de229c9a00 872
dkato 0:f5de229c9a00 873 if(NULL == outStatus){
dkato 0:f5de229c9a00 874 return HVC_ERROR_PARAMETER;
dkato 0:f5de229c9a00 875 }
dkato 0:f5de229c9a00 876
dkato 0:f5de229c9a00 877 sendData[0] = (UINT8)(inPose&0xff);
dkato 0:f5de229c9a00 878 sendData[1] = (UINT8)(inAngle&0xff);
dkato 0:f5de229c9a00 879 /* Send SetFaceDetectionAngle command signal */
dkato 0:f5de229c9a00 880 ret = HVC_SendCommand(HVC_COM_SET_DETECTION_ANGLE, sizeof(UINT8)*2, sendData);
dkato 0:f5de229c9a00 881 if ( ret != 0 ) return ret;
dkato 0:f5de229c9a00 882
dkato 0:f5de229c9a00 883 /* Receive header */
dkato 0:f5de229c9a00 884 ret = HVC_ReceiveHeader(inTimeOutTime, &size, outStatus);
dkato 0:f5de229c9a00 885 if ( ret != 0 ) return ret;
dkato 0:f5de229c9a00 886 return 0;
dkato 0:f5de229c9a00 887 }
dkato 0:f5de229c9a00 888
dkato 0:f5de229c9a00 889 /*----------------------------------------------------------------------------*/
dkato 0:f5de229c9a00 890 /* HVC_GetFaceDetectionAngle */
dkato 0:f5de229c9a00 891 /* param : INT32 inTimeOutTime timeout time (ms) */
dkato 0:f5de229c9a00 892 /* : INT32 *outPose Yaw angle range */
dkato 0:f5de229c9a00 893 /* : INT32 *outAngle Roll angle range */
dkato 0:f5de229c9a00 894 /* : UINT8 *outStatus response code */
dkato 0:f5de229c9a00 895 /* return : INT32 execution result error code */
dkato 0:f5de229c9a00 896 /* : 0...normal */
dkato 0:f5de229c9a00 897 /* : -1...parameter error */
dkato 0:f5de229c9a00 898 /* : other...signal error */
dkato 0:f5de229c9a00 899 /*----------------------------------------------------------------------------*/
dkato 0:f5de229c9a00 900 INT32 HVC_GetFaceDetectionAngle(INT32 inTimeOutTime, INT32 *outPose, INT32 *outAngle, UINT8 *outStatus)
dkato 0:f5de229c9a00 901 {
dkato 0:f5de229c9a00 902 INT32 ret = 0;
dkato 0:f5de229c9a00 903 INT32 size = 0;
dkato 0:f5de229c9a00 904 UINT8 recvData[32];
dkato 0:f5de229c9a00 905
dkato 0:f5de229c9a00 906 if((NULL == outPose) || (NULL == outAngle) || (NULL == outStatus)){
dkato 0:f5de229c9a00 907 return HVC_ERROR_PARAMETER;
dkato 0:f5de229c9a00 908 }
dkato 0:f5de229c9a00 909
dkato 0:f5de229c9a00 910 /* Send GetFaceDetectionAngle signal command */
dkato 0:f5de229c9a00 911 ret = HVC_SendCommand(HVC_COM_GET_DETECTION_ANGLE, 0, NULL);
dkato 0:f5de229c9a00 912 if ( ret != 0 ) return ret;
dkato 0:f5de229c9a00 913
dkato 0:f5de229c9a00 914 /* Receive header */
dkato 0:f5de229c9a00 915 ret = HVC_ReceiveHeader(inTimeOutTime, &size, outStatus);
dkato 0:f5de229c9a00 916 if ( ret != 0 ) return ret;
dkato 0:f5de229c9a00 917
dkato 0:f5de229c9a00 918 if ( size > (INT32)sizeof(UINT8)*2 ) {
dkato 0:f5de229c9a00 919 size = sizeof(UINT8)*2;
dkato 0:f5de229c9a00 920 }
dkato 0:f5de229c9a00 921
dkato 0:f5de229c9a00 922 /* Receive data */
dkato 0:f5de229c9a00 923 ret = HVC_ReceiveData(inTimeOutTime, size, recvData);
dkato 0:f5de229c9a00 924 *outPose = recvData[0];
dkato 0:f5de229c9a00 925 *outAngle = recvData[1];
dkato 0:f5de229c9a00 926 return ret;
dkato 0:f5de229c9a00 927 }
dkato 0:f5de229c9a00 928
dkato 0:f5de229c9a00 929 /*----------------------------------------------------------------------------*/
dkato 0:f5de229c9a00 930 /* HVC_SetBaudRate */
dkato 0:f5de229c9a00 931 /* param : INT32 inTimeOutTime timeout time (ms) */
dkato 0:f5de229c9a00 932 /* : INT32 inRate Baudrate */
dkato 0:f5de229c9a00 933 /* : UINT8 *outStatus response code */
dkato 0:f5de229c9a00 934 /* return : INT32 execution result error code */
dkato 0:f5de229c9a00 935 /* : 0...normal */
dkato 0:f5de229c9a00 936 /* : -1...parameter error */
dkato 0:f5de229c9a00 937 /* : other...signal error */
dkato 0:f5de229c9a00 938 /*----------------------------------------------------------------------------*/
dkato 0:f5de229c9a00 939 INT32 HVC_SetBaudRate(INT32 inTimeOutTime, INT32 inRate, UINT8 *outStatus)
dkato 0:f5de229c9a00 940 {
dkato 0:f5de229c9a00 941 INT32 ret = 0;
dkato 0:f5de229c9a00 942 INT32 size = 0;
dkato 0:f5de229c9a00 943 UINT8 sendData[32];
dkato 0:f5de229c9a00 944
dkato 0:f5de229c9a00 945 if(NULL == outStatus){
dkato 0:f5de229c9a00 946 return HVC_ERROR_PARAMETER;
dkato 0:f5de229c9a00 947 }
dkato 0:f5de229c9a00 948
dkato 0:f5de229c9a00 949 sendData[0] = (UINT8)(inRate&0xff);
dkato 0:f5de229c9a00 950 /* Send SetBaudRate command signal */
dkato 0:f5de229c9a00 951 ret = HVC_SendCommand(HVC_COM_SET_BAUDRATE, sizeof(UINT8), sendData);
dkato 0:f5de229c9a00 952 if ( ret != 0 ) return ret;
dkato 0:f5de229c9a00 953
dkato 0:f5de229c9a00 954 /* Receive header */
dkato 0:f5de229c9a00 955 ret = HVC_ReceiveHeader(inTimeOutTime, &size, outStatus);
dkato 0:f5de229c9a00 956 if ( ret != 0 ) return ret;
dkato 0:f5de229c9a00 957 return 0;
dkato 0:f5de229c9a00 958 }
dkato 0:f5de229c9a00 959
dkato 0:f5de229c9a00 960 /*----------------------------------------------------------------------------*/
dkato 0:f5de229c9a00 961 /* HVC_Registration */
dkato 0:f5de229c9a00 962 /* param : INT32 inTimeOutTime timeout time (ms) */
dkato 0:f5de229c9a00 963 /* : INT32 inUserID User ID (0-499) */
dkato 0:f5de229c9a00 964 /* : INT32 inDataID Data ID (0-9) */
dkato 0:f5de229c9a00 965 /* : HVC_IMAGE *outImage image info */
dkato 0:f5de229c9a00 966 /* : UINT8 *outStatus response code */
dkato 0:f5de229c9a00 967 /* return : INT32 execution result error code */
dkato 0:f5de229c9a00 968 /* : 0...normal */
dkato 0:f5de229c9a00 969 /* : -1...parameter error */
dkato 0:f5de229c9a00 970 /* : other...signal error */
dkato 0:f5de229c9a00 971 /*----------------------------------------------------------------------------*/
dkato 0:f5de229c9a00 972 INT32 HVC_Registration(INT32 inTimeOutTime, INT32 inUserID, INT32 inDataID, HVC_IMAGE *outImage, UINT8 *outStatus)
dkato 0:f5de229c9a00 973 {
dkato 0:f5de229c9a00 974 INT32 ret = 0;
dkato 0:f5de229c9a00 975 INT32 size = 0;
dkato 0:f5de229c9a00 976 UINT8 sendData[32];
dkato 0:f5de229c9a00 977 UINT8 recvData[32];
dkato 0:f5de229c9a00 978
dkato 0:f5de229c9a00 979 if((NULL == outImage) || (NULL == outStatus)){
dkato 0:f5de229c9a00 980 return HVC_ERROR_PARAMETER;
dkato 0:f5de229c9a00 981 }
dkato 0:f5de229c9a00 982
dkato 0:f5de229c9a00 983 /* Send Registration signal command */
dkato 0:f5de229c9a00 984 sendData[0] = (UINT8)(inUserID&0xff);
dkato 0:f5de229c9a00 985 sendData[1] = (UINT8)((inUserID>>8)&0xff);
dkato 0:f5de229c9a00 986 sendData[2] = (UINT8)(inDataID&0xff);
dkato 0:f5de229c9a00 987 ret = HVC_SendCommand(HVC_COM_REGISTRATION, sizeof(UINT8)*3, sendData);
dkato 0:f5de229c9a00 988 if ( ret != 0 ) return ret;
dkato 0:f5de229c9a00 989
dkato 0:f5de229c9a00 990 /* Receive header */
dkato 0:f5de229c9a00 991 ret = HVC_ReceiveHeader(inTimeOutTime, &size, outStatus);
dkato 0:f5de229c9a00 992 if ( ret != 0 ) return ret;
dkato 0:f5de229c9a00 993
dkato 0:f5de229c9a00 994 /* Receive data */
dkato 0:f5de229c9a00 995 if ( size >= (INT32)sizeof(UINT8)*4 ) {
dkato 0:f5de229c9a00 996 ret = HVC_ReceiveData(inTimeOutTime, sizeof(UINT8)*4, recvData);
dkato 0:f5de229c9a00 997 outImage->width = recvData[0] + (recvData[1]<<8);
dkato 0:f5de229c9a00 998 outImage->height = recvData[2] + (recvData[3]<<8);
dkato 0:f5de229c9a00 999 if ( ret != 0 ) return ret;
dkato 0:f5de229c9a00 1000 size -= sizeof(UINT8)*4;
dkato 0:f5de229c9a00 1001 }
dkato 0:f5de229c9a00 1002
dkato 0:f5de229c9a00 1003 /* Image data */
dkato 0:f5de229c9a00 1004 if ( size >= (INT32)sizeof(UINT8)*64*64 ) {
dkato 0:f5de229c9a00 1005 ret = HVC_ReceiveData(inTimeOutTime, sizeof(UINT8)*64*64, outImage->image);
dkato 0:f5de229c9a00 1006 if ( ret != 0 ) return ret;
dkato 0:f5de229c9a00 1007 size -= sizeof(UINT8)*64*64;
dkato 0:f5de229c9a00 1008 }
dkato 0:f5de229c9a00 1009 return 0;
dkato 0:f5de229c9a00 1010 }
dkato 0:f5de229c9a00 1011
dkato 0:f5de229c9a00 1012 /*----------------------------------------------------------------------------*/
dkato 0:f5de229c9a00 1013 /* HVC_DeleteData */
dkato 0:f5de229c9a00 1014 /* param : INT32 inTimeOutTime timeout time (ms) */
dkato 0:f5de229c9a00 1015 /* : INT32 inUserID User ID (0-499) */
dkato 0:f5de229c9a00 1016 /* : INT32 inDataID Data ID (0-9) */
dkato 0:f5de229c9a00 1017 /* : UINT8 *outStatus response code */
dkato 0:f5de229c9a00 1018 /* return : INT32 execution result error code */
dkato 0:f5de229c9a00 1019 /* : 0...normal */
dkato 0:f5de229c9a00 1020 /* : -1...parameter error */
dkato 0:f5de229c9a00 1021 /* : other...signal error */
dkato 0:f5de229c9a00 1022 /*----------------------------------------------------------------------------*/
dkato 0:f5de229c9a00 1023 INT32 HVC_DeleteData(INT32 inTimeOutTime, INT32 inUserID, INT32 inDataID, UINT8 *outStatus)
dkato 0:f5de229c9a00 1024 {
dkato 0:f5de229c9a00 1025 INT32 ret = 0;
dkato 0:f5de229c9a00 1026 INT32 size = 0;
dkato 0:f5de229c9a00 1027 UINT8 sendData[32];
dkato 0:f5de229c9a00 1028
dkato 0:f5de229c9a00 1029 if(NULL == outStatus){
dkato 0:f5de229c9a00 1030 return HVC_ERROR_PARAMETER;
dkato 0:f5de229c9a00 1031 }
dkato 0:f5de229c9a00 1032
dkato 0:f5de229c9a00 1033 /* Send Delete Data signal command */
dkato 0:f5de229c9a00 1034 sendData[0] = (UINT8)(inUserID&0xff);
dkato 0:f5de229c9a00 1035 sendData[1] = (UINT8)((inUserID>>8)&0xff);
dkato 0:f5de229c9a00 1036 sendData[2] = (UINT8)(inDataID&0xff);
dkato 0:f5de229c9a00 1037 ret = HVC_SendCommand(HVC_COM_DELETE_DATA, sizeof(UINT8)*3, sendData);
dkato 0:f5de229c9a00 1038 if ( ret != 0 ) return ret;
dkato 0:f5de229c9a00 1039
dkato 0:f5de229c9a00 1040 /* Receive header */
dkato 0:f5de229c9a00 1041 ret = HVC_ReceiveHeader(inTimeOutTime, &size, outStatus);
dkato 0:f5de229c9a00 1042 if ( ret != 0 ) return ret;
dkato 0:f5de229c9a00 1043 return 0;
dkato 0:f5de229c9a00 1044 }
dkato 0:f5de229c9a00 1045
dkato 0:f5de229c9a00 1046 /*----------------------------------------------------------------------------*/
dkato 0:f5de229c9a00 1047 /* HVC_DeleteUser */
dkato 0:f5de229c9a00 1048 /* param : INT32 inTimeOutTime timeout time (ms) */
dkato 0:f5de229c9a00 1049 /* : INT32 inUserID User ID (0-499) */
dkato 0:f5de229c9a00 1050 /* : UINT8 *outStatus response code */
dkato 0:f5de229c9a00 1051 /* return : INT32 execution result error code */
dkato 0:f5de229c9a00 1052 /* : 0...normal */
dkato 0:f5de229c9a00 1053 /* : -1...parameter error */
dkato 0:f5de229c9a00 1054 /* : other...signal error */
dkato 0:f5de229c9a00 1055 /*----------------------------------------------------------------------------*/
dkato 0:f5de229c9a00 1056 INT32 HVC_DeleteUser(INT32 inTimeOutTime, INT32 inUserID, UINT8 *outStatus)
dkato 0:f5de229c9a00 1057 {
dkato 0:f5de229c9a00 1058 INT32 ret = 0;
dkato 0:f5de229c9a00 1059 INT32 size = 0;
dkato 0:f5de229c9a00 1060 UINT8 sendData[32];
dkato 0:f5de229c9a00 1061
dkato 0:f5de229c9a00 1062 if(NULL == outStatus){
dkato 0:f5de229c9a00 1063 return HVC_ERROR_PARAMETER;
dkato 0:f5de229c9a00 1064 }
dkato 0:f5de229c9a00 1065
dkato 0:f5de229c9a00 1066 /* Send Delete User signal command */
dkato 0:f5de229c9a00 1067 sendData[0] = (UINT8)(inUserID&0xff);
dkato 0:f5de229c9a00 1068 sendData[1] = (UINT8)((inUserID>>8)&0xff);
dkato 0:f5de229c9a00 1069 ret = HVC_SendCommand(HVC_COM_DELETE_USER, sizeof(UINT8)*2, sendData);
dkato 0:f5de229c9a00 1070 if ( ret != 0 ) return ret;
dkato 0:f5de229c9a00 1071
dkato 0:f5de229c9a00 1072 /* Receive header */
dkato 0:f5de229c9a00 1073 ret = HVC_ReceiveHeader(inTimeOutTime, &size, outStatus);
dkato 0:f5de229c9a00 1074 if ( ret != 0 ) return ret;
dkato 0:f5de229c9a00 1075 return 0;
dkato 0:f5de229c9a00 1076 }
dkato 0:f5de229c9a00 1077
dkato 0:f5de229c9a00 1078 /*----------------------------------------------------------------------------*/
dkato 0:f5de229c9a00 1079 /* HVC_DeleteAll */
dkato 0:f5de229c9a00 1080 /* param : INT32 inTimeOutTime timeout time (ms) */
dkato 0:f5de229c9a00 1081 /* : UINT8 *outStatus response code */
dkato 0:f5de229c9a00 1082 /* return : INT32 execution result error code */
dkato 0:f5de229c9a00 1083 /* : 0...normal */
dkato 0:f5de229c9a00 1084 /* : -1...parameter error */
dkato 0:f5de229c9a00 1085 /* : other...signal error */
dkato 0:f5de229c9a00 1086 /*----------------------------------------------------------------------------*/
dkato 0:f5de229c9a00 1087 INT32 HVC_DeleteAll(INT32 inTimeOutTime, UINT8 *outStatus)
dkato 0:f5de229c9a00 1088 {
dkato 0:f5de229c9a00 1089 INT32 ret = 0;
dkato 0:f5de229c9a00 1090 INT32 size = 0;
dkato 0:f5de229c9a00 1091
dkato 0:f5de229c9a00 1092 if(NULL == outStatus){
dkato 0:f5de229c9a00 1093 return HVC_ERROR_PARAMETER;
dkato 0:f5de229c9a00 1094 }
dkato 0:f5de229c9a00 1095
dkato 0:f5de229c9a00 1096 /* Send Delete All signal command */
dkato 0:f5de229c9a00 1097 ret = HVC_SendCommand(HVC_COM_DELETE_ALL, 0, NULL);
dkato 0:f5de229c9a00 1098 if ( ret != 0 ) return ret;
dkato 0:f5de229c9a00 1099
dkato 0:f5de229c9a00 1100 /* Receive header */
dkato 0:f5de229c9a00 1101 ret = HVC_ReceiveHeader(inTimeOutTime, &size, outStatus);
dkato 0:f5de229c9a00 1102 if ( ret != 0 ) return ret;
dkato 0:f5de229c9a00 1103 return 0;
dkato 0:f5de229c9a00 1104 }
dkato 0:f5de229c9a00 1105
dkato 0:f5de229c9a00 1106 /*----------------------------------------------------------------------------*/
dkato 0:f5de229c9a00 1107 /* HVC_GetUserData */
dkato 0:f5de229c9a00 1108 /* param : INT32 inTimeOutTime timeout time (ms) */
dkato 0:f5de229c9a00 1109 /* : INT32 inUserID User ID (0-499) */
dkato 0:f5de229c9a00 1110 /* : INT32 *outDataNo Registration Info */
dkato 0:f5de229c9a00 1111 /* : UINT8 *outStatus response code */
dkato 0:f5de229c9a00 1112 /* return : INT32 execution result error code */
dkato 0:f5de229c9a00 1113 /* : 0...normal */
dkato 0:f5de229c9a00 1114 /* : -1...parameter error */
dkato 0:f5de229c9a00 1115 /* : other...signal error */
dkato 0:f5de229c9a00 1116 /*----------------------------------------------------------------------------*/
dkato 0:f5de229c9a00 1117 INT32 HVC_GetUserData(INT32 inTimeOutTime, INT32 inUserID, INT32 *outDataNo, UINT8 *outStatus)
dkato 0:f5de229c9a00 1118 {
dkato 0:f5de229c9a00 1119 INT32 ret = 0;
dkato 0:f5de229c9a00 1120 INT32 size = 0;
dkato 0:f5de229c9a00 1121 UINT8 sendData[8];
dkato 0:f5de229c9a00 1122 UINT8 recvData[8];
dkato 0:f5de229c9a00 1123
dkato 0:f5de229c9a00 1124 if((NULL == outDataNo) || (NULL == outStatus)){
dkato 0:f5de229c9a00 1125 return HVC_ERROR_PARAMETER;
dkato 0:f5de229c9a00 1126 }
dkato 0:f5de229c9a00 1127
dkato 0:f5de229c9a00 1128 /* Send Get Registration Info signal command */
dkato 0:f5de229c9a00 1129 sendData[0] = (UINT8)(inUserID&0xff);
dkato 0:f5de229c9a00 1130 sendData[1] = (UINT8)((inUserID>>8)&0xff);
dkato 0:f5de229c9a00 1131 ret = HVC_SendCommand(HVC_COM_GET_PERSON_DATA, sizeof(UINT8)*2, sendData);
dkato 0:f5de229c9a00 1132 if ( ret != 0 ) return ret;
dkato 0:f5de229c9a00 1133
dkato 0:f5de229c9a00 1134 /* Receive header */
dkato 0:f5de229c9a00 1135 ret = HVC_ReceiveHeader(inTimeOutTime, &size, outStatus);
dkato 0:f5de229c9a00 1136 if ( ret != 0 ) return ret;
dkato 0:f5de229c9a00 1137
dkato 0:f5de229c9a00 1138 if ( size > (INT32)sizeof(UINT8)*2 ) {
dkato 0:f5de229c9a00 1139 size = sizeof(UINT8)*2;
dkato 0:f5de229c9a00 1140 }
dkato 0:f5de229c9a00 1141
dkato 0:f5de229c9a00 1142 /* Receive data */
dkato 0:f5de229c9a00 1143 ret = HVC_ReceiveData(inTimeOutTime, size, recvData);
dkato 0:f5de229c9a00 1144 *outDataNo = recvData[0] + (recvData[1]<<8);
dkato 0:f5de229c9a00 1145 return ret;
dkato 0:f5de229c9a00 1146 }
dkato 0:f5de229c9a00 1147
dkato 0:f5de229c9a00 1148 /*----------------------------------------------------------------------------*/
dkato 0:f5de229c9a00 1149 /* HVC_SaveAlbum */
dkato 0:f5de229c9a00 1150 /* param : INT32 inTimeOutTime timeout time (ms) */
dkato 0:f5de229c9a00 1151 /* : UINT8 *outAlbumData Album data */
dkato 0:f5de229c9a00 1152 /* : INT32 *outAlbumDataSize Album data size */
dkato 0:f5de229c9a00 1153 /* : UINT8 *outStatus response code */
dkato 0:f5de229c9a00 1154 /* return : INT32 execution result error code */
dkato 0:f5de229c9a00 1155 /* : 0...normal */
dkato 0:f5de229c9a00 1156 /* : -1...parameter error */
dkato 0:f5de229c9a00 1157 /* : other...signal error */
dkato 0:f5de229c9a00 1158 /*----------------------------------------------------------------------------*/
dkato 0:f5de229c9a00 1159 INT32 HVC_SaveAlbum(INT32 inTimeOutTime, UINT8 *outAlbumData, INT32 *outAlbumDataSize, UINT8 *outStatus)
dkato 0:f5de229c9a00 1160 {
dkato 0:f5de229c9a00 1161 INT32 ret = 0;
dkato 0:f5de229c9a00 1162 INT32 size = 0;
dkato 0:f5de229c9a00 1163
dkato 0:f5de229c9a00 1164 UINT8 *tmpAlbumData = NULL;;
dkato 0:f5de229c9a00 1165
dkato 0:f5de229c9a00 1166 if((NULL == outAlbumData) || (NULL == outAlbumDataSize) || (NULL == outStatus)){
dkato 0:f5de229c9a00 1167 return HVC_ERROR_PARAMETER;
dkato 0:f5de229c9a00 1168 }
dkato 0:f5de229c9a00 1169
dkato 0:f5de229c9a00 1170 /* Send Save Album signal command */
dkato 0:f5de229c9a00 1171 ret = HVC_SendCommand(HVC_COM_SAVE_ALBUM, 0, NULL);
dkato 0:f5de229c9a00 1172 if ( ret != 0 ) return ret;
dkato 0:f5de229c9a00 1173
dkato 0:f5de229c9a00 1174 ret = HVC_ReceiveHeader(inTimeOutTime, &size, outStatus);
dkato 0:f5de229c9a00 1175 if ( ret != 0 ) return ret;
dkato 0:f5de229c9a00 1176
dkato 0:f5de229c9a00 1177 if ( size >= (INT32)sizeof(UINT8)*8 + HVC_ALBUM_SIZE_MIN ) {
dkato 0:f5de229c9a00 1178 *outAlbumDataSize = size;
dkato 0:f5de229c9a00 1179 tmpAlbumData = outAlbumData;
dkato 0:f5de229c9a00 1180
dkato 0:f5de229c9a00 1181 do{
dkato 0:f5de229c9a00 1182 ret = HVC_ReceiveData(inTimeOutTime, sizeof(UINT8)*4, tmpAlbumData);
dkato 0:f5de229c9a00 1183 if ( ret != 0 ) return ret;
dkato 0:f5de229c9a00 1184 tmpAlbumData += sizeof(UINT8)*4;
dkato 0:f5de229c9a00 1185
dkato 0:f5de229c9a00 1186 ret = HVC_ReceiveData(inTimeOutTime, sizeof(UINT8)*4, tmpAlbumData);
dkato 0:f5de229c9a00 1187 if ( ret != 0 ) return ret;
dkato 0:f5de229c9a00 1188 tmpAlbumData += sizeof(UINT8)*4;
dkato 0:f5de229c9a00 1189
dkato 0:f5de229c9a00 1190 ret = HVC_ReceiveData(inTimeOutTime, size - sizeof(UINT8)*8, tmpAlbumData);
dkato 0:f5de229c9a00 1191 if ( ret != 0 ) return ret;
dkato 0:f5de229c9a00 1192 }while(0);
dkato 0:f5de229c9a00 1193 }
dkato 0:f5de229c9a00 1194 return ret;
dkato 0:f5de229c9a00 1195 }
dkato 0:f5de229c9a00 1196
dkato 0:f5de229c9a00 1197
dkato 0:f5de229c9a00 1198 /*----------------------------------------------------------------------------*/
dkato 0:f5de229c9a00 1199 /* HVC_LoadAlbum */
dkato 0:f5de229c9a00 1200 /* param : INT32 inTimeOutTime timeout time (ms) */
dkato 0:f5de229c9a00 1201 /* : UINT8 *inAlbumData Album data */
dkato 0:f5de229c9a00 1202 /* : INT32 inAlbumDataSize Album data size */
dkato 0:f5de229c9a00 1203 /* : UINT8 *outStatus response code */
dkato 0:f5de229c9a00 1204 /* return : INT32 execution result error code */
dkato 0:f5de229c9a00 1205 /* : 0...normal */
dkato 0:f5de229c9a00 1206 /* : -1...parameter error */
dkato 0:f5de229c9a00 1207 /* : other...signal error */
dkato 0:f5de229c9a00 1208 /*----------------------------------------------------------------------------*/
dkato 0:f5de229c9a00 1209 INT32 HVC_LoadAlbum(INT32 inTimeOutTime, UINT8 *inAlbumData, INT32 inAlbumDataSize, UINT8 *outStatus)
dkato 0:f5de229c9a00 1210 {
dkato 0:f5de229c9a00 1211 INT32 ret = 0;
dkato 0:f5de229c9a00 1212 INT32 size = 0;
dkato 0:f5de229c9a00 1213
dkato 0:f5de229c9a00 1214 if((NULL == inAlbumData) || (NULL == outStatus)){
dkato 0:f5de229c9a00 1215 return HVC_ERROR_PARAMETER;
dkato 0:f5de229c9a00 1216 }
dkato 0:f5de229c9a00 1217
dkato 0:f5de229c9a00 1218 /* Send Save Album signal command */
dkato 0:f5de229c9a00 1219 ret = HVC_SendCommandOfLoadAlbum(HVC_COM_LOAD_ALBUM, inAlbumDataSize, inAlbumData);
dkato 0:f5de229c9a00 1220 if ( ret != 0 ) return ret;
dkato 0:f5de229c9a00 1221
dkato 0:f5de229c9a00 1222 /* Receive header */
dkato 0:f5de229c9a00 1223 ret = HVC_ReceiveHeader(inTimeOutTime, &size, outStatus);
dkato 0:f5de229c9a00 1224 if ( ret != 0 ) return ret;
dkato 0:f5de229c9a00 1225
dkato 0:f5de229c9a00 1226 return ret;
dkato 0:f5de229c9a00 1227 }
dkato 0:f5de229c9a00 1228
dkato 0:f5de229c9a00 1229 /*----------------------------------------------------------------------------*/
dkato 0:f5de229c9a00 1230 /* HVC_WriteAlbum */
dkato 0:f5de229c9a00 1231 /* param : INT32 inTimeOutTime timeout time (ms) */
dkato 0:f5de229c9a00 1232 /* : UINT8 *outStatus response code */
dkato 0:f5de229c9a00 1233 /* return : INT32 execution result error code */
dkato 0:f5de229c9a00 1234 /* : 0...normal */
dkato 0:f5de229c9a00 1235 /* : -1...parameter error */
dkato 0:f5de229c9a00 1236 /* : other...signal error */
dkato 0:f5de229c9a00 1237 /*----------------------------------------------------------------------------*/
dkato 0:f5de229c9a00 1238 INT32 HVC_WriteAlbum(INT32 inTimeOutTime, UINT8 *outStatus)
dkato 0:f5de229c9a00 1239 {
dkato 0:f5de229c9a00 1240 INT32 ret = 0;
dkato 0:f5de229c9a00 1241 INT32 size = 0;
dkato 0:f5de229c9a00 1242
dkato 0:f5de229c9a00 1243 if(NULL == outStatus){
dkato 0:f5de229c9a00 1244 return HVC_ERROR_PARAMETER;
dkato 0:f5de229c9a00 1245 }
dkato 0:f5de229c9a00 1246
dkato 0:f5de229c9a00 1247 /* Send Write Album signal command */
dkato 0:f5de229c9a00 1248 ret = HVC_SendCommand(HVC_COM_WRITE_ALBUM, 0, NULL);
dkato 0:f5de229c9a00 1249 if ( ret != 0 ) return ret;
dkato 0:f5de229c9a00 1250
dkato 0:f5de229c9a00 1251 /* Receive header */
dkato 0:f5de229c9a00 1252 ret = HVC_ReceiveHeader(inTimeOutTime, &size, outStatus);
dkato 0:f5de229c9a00 1253 if ( ret != 0 ) return ret;
dkato 0:f5de229c9a00 1254
dkato 0:f5de229c9a00 1255 return ret;
dkato 0:f5de229c9a00 1256 }
dkato 0:f5de229c9a00 1257