Daiki Kato / Mbed OS GR-PEACH_HVC-P2_sample_client

Dependencies:   AsciiFont GR-PEACH_video GraphicsFramework LCD_shield_config R_BSP USBHost_custom easy-connect-gr-peach

Fork of mbed-os-example-client by mbed-os-examples

Committer:
dkato
Date:
Tue Mar 14 05:43:50 2017 +0000
Revision:
73:fbc0212c2eaf
Send the data of GR-PEACH_HVC-P2_sample to the cloud.

Who changed what in which revision?

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