Sample program for communicating with Fujitsuu IoT Platform using HTTP

Dependencies:   AsciiFont GR-PEACH_video GraphicsFramework LCD_shield_config R_BSP USBHost_custom easy-connect-gr-peach mbed-http picojson BM1383GLV KX022 rohm-sensor-hal rohm-bh1745

Overview

This sample program shows how to send the cognitive data and sensing data gathered by Omron HVC-P2 and Rohm Sensor Shield respectively to IoT Platform managed by FUJITSU ( http://jp.fujitsu.com/solutions/cloud/k5/function/paas/iot-platform/ ).

Required Hardware

Application Setup

  1. Configure the connection type. For details, please refer to the following link:
    https://developer.mbed.org/teams/Renesas/code/GR-PEACH_IoT_Platform_HTTP_sample/wiki/Connection-Type
  2. Configure Ethernet settings. For details, please refer to the following link:
    https://developer.mbed.org/teams/Renesas/code/GR-PEACH_IoT_Platform_HTTP_sample/wiki/Ethernet-settings
  3. Set up the Access Code of resource where the gathered data would be stored. For details on Access Code, please refer to the following links:
    https://iot-docs.jp-east-1.paas.cloud.global.fujitsu.com/en/manual/userguide_en.pdf
    https://iot-docs.jp-east-1.paas.cloud.global.fujitsu.com/en/manual/apireference_en.pdf
    https://iot-docs.jp-east-1.paas.cloud.global.fujitsu.com/en/manual/portalmanual_en.pdf
  4. Set up URI for the resource where the gathered data would be stored. For details, please refer to the following link:
    https://iot-docs.jp-east-1.paas.cloud.global.fujitsu.com/en/manual/userguide_en.pdf
    https://iot-docs.jp-east-1.paas.cloud.global.fujitsu.com/en/manual/apireference_en.pdf

Building Example

  1. Import this sample program onto mbed Compiler
  2. Configure the program in accordance with the description of Application Setup above
  3. Compile the sample program
  4. Plug the Ethernet cable into GR-PEACH if you would like Ethernet mode
  5. Plug micro-USB cable into the OpenSDA port which lies on the next to the RESET button
  6. Copy the binary previously downloaded to your PC to GR-PEACH in order to flash this program. When the copy is successfully completed, the drive named MBED should be re-mounted automatically
  7. Press the RESET button on the board to run the sample application

Data Format sent to IoT Platform

In this sample program, the cognitive data and sensing data are serialized into the following JSON format using picojson (https://developer.mbed.org/users/mimil/code/picojson/):

  • Face detection data

{
    "RecordType": "HVC-P2(face)",
    "id": "<GR-PEACH ID>-<Sensor ID>",
    "Age": xxx,
    "FaceRectangle": {
        "Height": xxx,
        "Left": xxx,
        "Top": xxx,
        "Width": xxx
    },
    "Gender": xxx,
    "Scores": {
        "Anger": xxx,
        "Happiness": xxx,
        "Neutral": xxx,
        "Sadness": xxx,
        "Surprise": xxx
    }
}
  • Body detection data

{
    "RecodeType": "HVC-P2(body)",
    "id": "<GR-PEACH ID>-<Sensor ID>",
    "BodyRectangle": {
        "Height": xxx,
        "Left": xxx,
        "Top": xxx,
        "Width": xxx
    }
}
  • Accelerometer data

{
    "RecodeType": "Accelerometer",
    "id": "<GR-PEACH ID>-<Sensor ID>",
    "data": [ acceleratoin(x-direction), acceleration(y-direction), acceleration(z-direction), null, null, null ]
}

Note that data[0], data[1] and data[2] are filled with the acceleration data in x, y and z direction respectively, and the remaining elements are filled with null.

  • Atmosphere data

{
    "RecodeType": "Atmosphere",
    "id": "<GR-PEACH ID>-<Sensor ID>",
    "data": [ atmosphere data, null, null, null, null, null ]
}

Note that data[0] is filled with atmosphere data, and the remaining elements are filled with null.

  • Color sensor data

{
    "RecodeType": "Color",
    "id": "<GR-PEACH ID>-<Sensor ID>",
    "data": [ Red, Green, Blue, Alpha, null, null]
}

Note that data[0], data[1], data[2] and data[3] are filled with Red, Green, Blue and Alpha elements of color respectively, and the remaining elements are filled with null.

  • Temperature data

{
    "RecodeType": "Temperature",
    "id": "<GR-PEACH ID>-<Sensor ID>",
    "data": [ Temperature, null, null, null, null, null ]
}

Note that data[0] is filled with temperature data, the remaining elements are filled with null.

  • Geomagnetism

{
    "RecodeType": "Geomagnetism",
    "id": "<GR-PEACH ID>-<Sensor ID>",
    "data": [ geomagnetism(x-direction), geomagnetism(y-direction), geomagnetism(z-direction), null, null, null]
}

Note that data[0], data[1] and data[2] are filled with the geomagnetism data in x, y and z direction respectively, and the remaining elements are filled with null.

Committer:
Osamu Nakamura
Date:
Thu Apr 12 19:04:23 2018 +0900
Revision:
7:9ae73f85dc04
Parent:
0:8373b6833bde
Update BM1422AGMV driver so that it can be compiled by ARMCC

Who changed what in which revision?

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