Send the data of GR-PEACH_HVC-P2_sample to the cloud.

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

Note at the time of sample import

Please not check the "Update all libraries to the latest version" at the time of import.

Warning!

When exporting and using it, increase the following stack size.

mbed-os/features/FEATURE_LWIP/lwip-interface/lwipopts.h

#define TCPIP_THREAD_STACKSIZE      1024
->
#define TCPIP_THREAD_STACKSIZE      2048

Overview

This is a sample to send the analysis result of GR-PEACH_HVC-P2_sample to the cloud using mbed-client. Please refer to following for operation of HVC-P2.

Import programGR-PEACH_HVC-P2_sample

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


Required hardware

Application setup

Client credentials

To register the application to mbed Device Connector, you need to create and set the client side certificate.

  1. Go to https://connector.mbed.com/ and log in with your mbed account
  2. On mbed Device Connector, go to https://connector.mbed.com/#credentials and click the Get my device security credentials button to get new credentials for your device.
  3. Replace the contents in security.h of this example with content copied above.

Ethernet settings

This sample uses Ethernet as the default connection type. To change the connection type, set WIFI_BP3595 in mbed_app.json:

mbed_app.json

"network-interface":{
    "help": "Options are ETHERNET, WIFI_ESP8266, WIFI_BP3595",
    "value": "ETHERNET"
},


To specify MAC address, add fllowing function to main.cpp. (When using Wifi, setting of MAC address is not necessary.)

Specify MAC address

// set mac address
void mbed_mac_address(char *mac) {
    mac[0] = 0x00;
    mac[1] = 0x02;
    mac[2] = 0xF7;
    mac[3] = 0xF0;
    mac[4] = 0x00;
    mac[5] = 0x00;
}


Wifi settings

This example can use BP3595 Wifi Interface for managing the wireless connectivity. To run this example using Wifi, you need:

  1. A BP3595 Wifi module ( https://developer.mbed.org/components/BP3595-for-GR-PEACH/ )
  2. Mount BP3595 onto GR-PEACH
  3. Close GR-PEACH's JP21 (https://developer.mbed.org/teams/Renesas/wiki/Jumper-settings-of-GR-PEACH)
  4. In the mbed_app.json file, change

mbed_app.json

"network-interface":{
    "help": "Options are ETHERNET, WIFI_ESP8266, WIFI_BP3595",
    "value": "WIFI_BP3595"
},


Provide your Wifi SSID and password here and leave \" in the beginning and end of your SSID and password as shown in the example below:

mbed_app.json

"wifi-ssid": {
    "help": "WiFi SSID",
    "value": "\"SSID\""
},
"wifi-password": {
    "help": "WIFI Password",
    "value": "\"Password\""
}


Specify the security type for connection to be used. When the security type is WPA2, you need to specify NSAPI_SECURITY_WAP as follows:

mbed_app.json

"wifi-security":{
    "help": "Options are NSAPI_SECURITY_WEP, NSAPI_SECURITY_WPA, NSAPI_SECURITY_WPA2, NSAPI_SECURITY_WPA_WPA2",
    "value": "NSAPI_SECURITY_WEP"
},

By default, NSAPI_SECURITY_WPA_WPA2 is specified here.

Application resources

This example exposes four resources listed below:

  1. 3202/0/5700. Recognition result from HVC-P2 (GET).
  2. 3201/0/5850. Blink function, blinks LED when executed (POST).
  3. 3201/0/5853. Blink pattern, used by the blink function to determine how to blink. In the format of 1000:500:1000:500:1000:500 (PUT).
  4. 3201/0/5855. Blink color, used by the blink function. Any of red, green, blue, cyan, yellow and magenta is acceptable (PUT).

For more info on how to get notifications when resource 1 changes, or how to use resource 2, 3 and 4, please look at

Import programGR-PEACH_mbed-connector-ZXingSample-node

Node.js based Web Application for mbed Device Connector specific to GR-PEACH_mbed-os-client-ZXingSample

# This is a Web Application for GR-PEACH_mbed-os-client-ZXingSample, but it can also be used for this sample.

Committer:
dkato
Date:
Tue Mar 14 05:59:09 2017 +0000
Revision:
74:bf6d9bd511bd
Parent:
73:fbc0212c2eaf
Changed initial setting of mbed_app.json to ETHERNET.

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