From 0a15dac30820b410f36f98706b9b84fbc3c5cd78 Mon Sep 17 00:00:00 2001 From: Takashi Kakiuchi Date: Mon, 4 Nov 2019 21:13:45 +0000 Subject: [PATCH 01/17] b5t007001: initial implementation of Omron Human Vision Component HVC-P2 Signed-off-by: Takashi Kakiuchi --- examples/c++/b5t007001_register | Bin 0 -> 49136 bytes examples/c++/b5t007001_register.cxx | 1143 +++++++++++ examples/c++/b5t007001_sample.cxx | 1623 +++++++++++++++ src/b5t007001/CMakeLists.txt | 11 + src/b5t007001/b5t007001 | Bin 0 -> 104924 bytes src/b5t007001/b5t007001.cxx | 1750 +++++++++++++++++ src/b5t007001/b5t007001.hpp | 852 ++++++++ src/b5t007001/b5t007001.i | 19 + src/b5t007001/b5t007001.json | 28 + src/b5t007001/stblib/CMakeCache.txt | 317 +++ .../CMakeFiles/3.7.2/CMakeCCompiler.cmake | 68 + .../CMakeFiles/3.7.2/CMakeCXXCompiler.cmake | 69 + .../3.7.2/CMakeDetermineCompilerABI_C.bin | Bin 0 -> 8304 bytes .../3.7.2/CMakeDetermineCompilerABI_CXX.bin | Bin 0 -> 8332 bytes .../stblib/CMakeFiles/3.7.2/CMakeSystem.cmake | 15 + .../3.7.2/CompilerIdC/CMakeCCompilerId.c | 561 ++++++ .../stblib/CMakeFiles/3.7.2/CompilerIdC/a.out | Bin 0 -> 8316 bytes .../CompilerIdCXX/CMakeCXXCompilerId.cpp | 533 +++++ .../CMakeFiles/3.7.2/CompilerIdCXX/a.out | Bin 0 -> 8460 bytes .../CMakeDirectoryInformation.cmake | 16 + .../stblib/CMakeFiles/CMakeOutput.log | 542 +++++ .../stblib/CMakeFiles/Makefile.cmake | 115 ++ src/b5t007001/stblib/CMakeFiles/Makefile2 | 108 + .../stblib/CMakeFiles/TargetDirectories.txt | 3 + .../stblib/CMakeFiles/cmake.check_cache | 1 + .../stblib/CMakeFiles/feature_tests.bin | Bin 0 -> 12384 bytes .../stblib/CMakeFiles/feature_tests.c | 34 + .../stblib/CMakeFiles/feature_tests.cxx | 405 ++++ .../stblib/CMakeFiles/progress.marks | 1 + .../CMakeFiles/stblib.dir/C.includecache | 288 +++ .../CMakeFiles/stblib.dir/DependInfo.cmake | 38 + .../stblib/CMakeFiles/stblib.dir/build.make | 573 ++++++ .../CMakeFiles/stblib.dir/cmake_clean.cmake | 27 + .../stblib.dir/cmake_clean_target.cmake | 3 + .../CMakeFiles/stblib.dir/depend.internal | 189 ++ .../stblib/CMakeFiles/stblib.dir/depend.make | 189 ++ .../stblib/CMakeFiles/stblib.dir/flags.make | 10 + .../stblib/CMakeFiles/stblib.dir/link.txt | 2 + .../CMakeFiles/stblib.dir/progress.make | 20 + src/b5t007001/stblib/CMakeLists.txt | 63 + src/b5t007001/stblib/Makefile | 472 +++++ src/b5t007001/stblib/cmake_install.cmake | 44 + src/b5t007001/stblib/libstblib.a | Bin 0 -> 112824 bytes src/b5t007001/stblib/src/STB/Interface.c | 1002 ++++++++++ src/b5t007001/stblib/src/STB/Interface.h | 68 + src/b5t007001/stblib/src/STB/STBAPI.c | 112 ++ src/b5t007001/stblib/src/STB/STBAPI.h | 74 + src/b5t007001/stblib/src/STB/STBFaceInfo.c | 450 +++++ src/b5t007001/stblib/src/STB/STBMakeResult.c | 119 ++ src/b5t007001/stblib/src/STB/STBTracking.c | 138 ++ src/b5t007001/stblib/src/STB/STBValidValue.c | 138 ++ src/b5t007001/stblib/src/STB/STBValidValue.h | 94 + .../src/STB_FaceRecognition/FrInterface.c | 509 +++++ .../src/STB_FaceRecognition/FrInterface.h | 121 ++ .../stblib/src/STB_FaceRecognition/STBFrAPI.c | 326 +++ .../stblib/src/STB_FaceRecognition/STBFrAPI.h | 22 + .../src/STB_FaceRecognition/STBFrValidValue.c | 51 + .../src/STB_FaceRecognition/STBFrValidValue.h | 97 + .../stblib/src/STB_FaceRecognition/SdkSTBFr.c | 87 + .../stblib/src/STB_FaceRecognition/SdkSTBFr.h | 44 + .../stblib/src/STB_Property/PeInterface.c | 574 ++++++ .../stblib/src/STB_Property/PeInterface.h | 111 ++ .../stblib/src/STB_Property/STBPeAPI.c | 647 ++++++ .../stblib/src/STB_Property/STBPeAPI.h | 22 + .../stblib/src/STB_Property/STBPeValidValue.c | 103 + .../stblib/src/STB_Property/STBPeValidValue.h | 96 + .../stblib/src/STB_Property/SdkSTBPe.c | 80 + .../stblib/src/STB_Property/SdkSTBPe.h | 41 + .../stblib/src/STB_Tracker/STBTrAPI.c | 469 +++++ .../stblib/src/STB_Tracker/STBTrAPI.h | 29 + .../stblib/src/STB_Tracker/STBTrValidValue.c | 59 + .../stblib/src/STB_Tracker/STBTrValidValue.h | 92 + .../stblib/src/STB_Tracker/SdkSTBTr.c | 68 + .../stblib/src/STB_Tracker/SdkSTBTr.h | 41 + .../stblib/src/STB_Tracker/TrInterface.c | 603 ++++++ .../stblib/src/STB_Tracker/TrInterface.h | 128 ++ .../stblib/src/include/STBCommonDef.h | 52 + .../stblib/src/include/STBCommonType.h | 41 + .../stblib/src/include/STBFaceInfo.h | 29 + .../stblib/src/include/STBFrTypedef.h | 65 + src/b5t007001/stblib/src/include/STBHandle.h | 103 + .../stblib/src/include/STBMakeResult.h | 25 + .../stblib/src/include/STBPeTypedef.h | 79 + .../stblib/src/include/STBTrTypedef.h | 73 + .../stblib/src/include/STBTracking.h | 31 + .../stblib/src/include/STBTypedefInput.h | 131 ++ .../stblib/src/include/STBTypedefOutput.h | 119 ++ src/b5t007001/stblib/src/include/STB_Debug.h | 27 + src/b5t007001/stblib/src/include/SdkSTBFr.h | 43 + src/b5t007001/stblib/src/include/SdkSTBPe.h | 41 + src/b5t007001/stblib/src/include/SdkSTBTr.h | 42 + src/b5t007001/stblib/usr_include/STBAPI.h | 76 + .../stblib/usr_include/STBCommonDef.h | 52 + src/b5t007001/stblib/usr_include/STBTypedef.h | 227 +++ 94 files changed, 18003 insertions(+) create mode 100755 examples/c++/b5t007001_register create mode 100644 examples/c++/b5t007001_register.cxx create mode 100644 examples/c++/b5t007001_sample.cxx create mode 100644 src/b5t007001/CMakeLists.txt create mode 100644 src/b5t007001/b5t007001 create mode 100644 src/b5t007001/b5t007001.cxx create mode 100644 src/b5t007001/b5t007001.hpp create mode 100644 src/b5t007001/b5t007001.i create mode 100644 src/b5t007001/b5t007001.json create mode 100644 src/b5t007001/stblib/CMakeCache.txt create mode 100644 src/b5t007001/stblib/CMakeFiles/3.7.2/CMakeCCompiler.cmake create mode 100644 src/b5t007001/stblib/CMakeFiles/3.7.2/CMakeCXXCompiler.cmake create mode 100755 src/b5t007001/stblib/CMakeFiles/3.7.2/CMakeDetermineCompilerABI_C.bin create mode 100755 src/b5t007001/stblib/CMakeFiles/3.7.2/CMakeDetermineCompilerABI_CXX.bin create mode 100644 src/b5t007001/stblib/CMakeFiles/3.7.2/CMakeSystem.cmake create mode 100644 src/b5t007001/stblib/CMakeFiles/3.7.2/CompilerIdC/CMakeCCompilerId.c create mode 100755 src/b5t007001/stblib/CMakeFiles/3.7.2/CompilerIdC/a.out create mode 100644 src/b5t007001/stblib/CMakeFiles/3.7.2/CompilerIdCXX/CMakeCXXCompilerId.cpp create mode 100755 src/b5t007001/stblib/CMakeFiles/3.7.2/CompilerIdCXX/a.out create mode 100644 src/b5t007001/stblib/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 src/b5t007001/stblib/CMakeFiles/CMakeOutput.log create mode 100644 src/b5t007001/stblib/CMakeFiles/Makefile.cmake create mode 100644 src/b5t007001/stblib/CMakeFiles/Makefile2 create mode 100644 src/b5t007001/stblib/CMakeFiles/TargetDirectories.txt create mode 100644 src/b5t007001/stblib/CMakeFiles/cmake.check_cache create mode 100755 src/b5t007001/stblib/CMakeFiles/feature_tests.bin create mode 100644 src/b5t007001/stblib/CMakeFiles/feature_tests.c create mode 100644 src/b5t007001/stblib/CMakeFiles/feature_tests.cxx create mode 100644 src/b5t007001/stblib/CMakeFiles/progress.marks create mode 100644 src/b5t007001/stblib/CMakeFiles/stblib.dir/C.includecache create mode 100644 src/b5t007001/stblib/CMakeFiles/stblib.dir/DependInfo.cmake create mode 100644 src/b5t007001/stblib/CMakeFiles/stblib.dir/build.make create mode 100644 src/b5t007001/stblib/CMakeFiles/stblib.dir/cmake_clean.cmake create mode 100644 src/b5t007001/stblib/CMakeFiles/stblib.dir/cmake_clean_target.cmake create mode 100644 src/b5t007001/stblib/CMakeFiles/stblib.dir/depend.internal create mode 100644 src/b5t007001/stblib/CMakeFiles/stblib.dir/depend.make create mode 100644 src/b5t007001/stblib/CMakeFiles/stblib.dir/flags.make create mode 100644 src/b5t007001/stblib/CMakeFiles/stblib.dir/link.txt create mode 100644 src/b5t007001/stblib/CMakeFiles/stblib.dir/progress.make create mode 100644 src/b5t007001/stblib/CMakeLists.txt create mode 100644 src/b5t007001/stblib/Makefile create mode 100644 src/b5t007001/stblib/cmake_install.cmake create mode 100644 src/b5t007001/stblib/libstblib.a create mode 100644 src/b5t007001/stblib/src/STB/Interface.c create mode 100644 src/b5t007001/stblib/src/STB/Interface.h create mode 100644 src/b5t007001/stblib/src/STB/STBAPI.c create mode 100644 src/b5t007001/stblib/src/STB/STBAPI.h create mode 100644 src/b5t007001/stblib/src/STB/STBFaceInfo.c create mode 100644 src/b5t007001/stblib/src/STB/STBMakeResult.c create mode 100644 src/b5t007001/stblib/src/STB/STBTracking.c create mode 100644 src/b5t007001/stblib/src/STB/STBValidValue.c create mode 100644 src/b5t007001/stblib/src/STB/STBValidValue.h create mode 100644 src/b5t007001/stblib/src/STB_FaceRecognition/FrInterface.c create mode 100644 src/b5t007001/stblib/src/STB_FaceRecognition/FrInterface.h create mode 100644 src/b5t007001/stblib/src/STB_FaceRecognition/STBFrAPI.c create mode 100644 src/b5t007001/stblib/src/STB_FaceRecognition/STBFrAPI.h create mode 100644 src/b5t007001/stblib/src/STB_FaceRecognition/STBFrValidValue.c create mode 100644 src/b5t007001/stblib/src/STB_FaceRecognition/STBFrValidValue.h create mode 100644 src/b5t007001/stblib/src/STB_FaceRecognition/SdkSTBFr.c create mode 100644 src/b5t007001/stblib/src/STB_FaceRecognition/SdkSTBFr.h create mode 100644 src/b5t007001/stblib/src/STB_Property/PeInterface.c create mode 100644 src/b5t007001/stblib/src/STB_Property/PeInterface.h create mode 100644 src/b5t007001/stblib/src/STB_Property/STBPeAPI.c create mode 100644 src/b5t007001/stblib/src/STB_Property/STBPeAPI.h create mode 100644 src/b5t007001/stblib/src/STB_Property/STBPeValidValue.c create mode 100644 src/b5t007001/stblib/src/STB_Property/STBPeValidValue.h create mode 100644 src/b5t007001/stblib/src/STB_Property/SdkSTBPe.c create mode 100644 src/b5t007001/stblib/src/STB_Property/SdkSTBPe.h create mode 100644 src/b5t007001/stblib/src/STB_Tracker/STBTrAPI.c create mode 100644 src/b5t007001/stblib/src/STB_Tracker/STBTrAPI.h create mode 100644 src/b5t007001/stblib/src/STB_Tracker/STBTrValidValue.c create mode 100644 src/b5t007001/stblib/src/STB_Tracker/STBTrValidValue.h create mode 100644 src/b5t007001/stblib/src/STB_Tracker/SdkSTBTr.c create mode 100644 src/b5t007001/stblib/src/STB_Tracker/SdkSTBTr.h create mode 100644 src/b5t007001/stblib/src/STB_Tracker/TrInterface.c create mode 100644 src/b5t007001/stblib/src/STB_Tracker/TrInterface.h create mode 100644 src/b5t007001/stblib/src/include/STBCommonDef.h create mode 100644 src/b5t007001/stblib/src/include/STBCommonType.h create mode 100644 src/b5t007001/stblib/src/include/STBFaceInfo.h create mode 100644 src/b5t007001/stblib/src/include/STBFrTypedef.h create mode 100644 src/b5t007001/stblib/src/include/STBHandle.h create mode 100644 src/b5t007001/stblib/src/include/STBMakeResult.h create mode 100644 src/b5t007001/stblib/src/include/STBPeTypedef.h create mode 100644 src/b5t007001/stblib/src/include/STBTrTypedef.h create mode 100644 src/b5t007001/stblib/src/include/STBTracking.h create mode 100644 src/b5t007001/stblib/src/include/STBTypedefInput.h create mode 100644 src/b5t007001/stblib/src/include/STBTypedefOutput.h create mode 100644 src/b5t007001/stblib/src/include/STB_Debug.h create mode 100644 src/b5t007001/stblib/src/include/SdkSTBFr.h create mode 100644 src/b5t007001/stblib/src/include/SdkSTBPe.h create mode 100644 src/b5t007001/stblib/src/include/SdkSTBTr.h create mode 100644 src/b5t007001/stblib/usr_include/STBAPI.h create mode 100644 src/b5t007001/stblib/usr_include/STBCommonDef.h create mode 100644 src/b5t007001/stblib/usr_include/STBTypedef.h diff --git a/examples/c++/b5t007001_register b/examples/c++/b5t007001_register new file mode 100755 index 0000000000000000000000000000000000000000..a4024e249ae6ece4b14b0d2b5b7a20a46aeb0a6a GIT binary patch literal 49136 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 literal 0 HcmV?d00001 diff --git a/examples/c++/b5t007001_register.cxx b/examples/c++/b5t007001_register.cxx new file mode 100644 index 00000000..afa23532 --- /dev/null +++ b/examples/c++/b5t007001_register.cxx @@ -0,0 +1,1143 @@ +/* +* Author: Takashi Kakiuchi +* Copyright (c) 2019 Omron Electronic Components - Americas +* +* Permission is hereby granted, free of charge, to any person obtaining a copy of +* this software and associated documentation files (the "Software"), to deal in +* the Software without restriction, including without limitation the rights to +* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +* the Software, and to permit persons to whom the Software is furnished to do so, +* subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in all +* copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +/* headers */ +#include +#include +#include +#include +#include +#include +#include + +/* omron sensor header */ +#include "b5t007001.hpp" + +/* Define */ +#define CLEAR_SCREEN "\033[2J\033[1;1H" /* Clear screen */ +//#define USE_LIBRARY_TIMEOUT /* Enable to use library timeout */ + +#define ADD_USER 1 +#define MODIFY_DELETE_USER 2 +#define LIST_USER 3 +#define SETTINGS 4 + +#define UART_SETTING_TIMEOUT 1000 /* HVC setting command signal timeout period */ +#define UART_DETECT_EXECUTE_TIMEOUT 6000 /* HVC Face Detection command signal timeout period */ +#define UART_REGIST_EXECUTE_TIMEOUT 7000 /* HVC registration command signal timeout period */ +#define LIBRARY_TIMEOUT -1 /* Library timeout */ + +using namespace upm; +using namespace std; + +volatile sig_atomic_t flag = true; +UINT8 isCinWaitState = 0; //State for cin is waiting for input or not. + +void +sig_handler(INT32 signum) +{ + // Check for Interrupt signal + if (signum == SIGINT || signum == SIGTERM){ + cout << "exit" << endl; + flag = false; + if(isCinWaitState == 1){ + std::cin.setstate(std::ios_base::badbit); + } + } +} + +UINT8 +takeSelectedInput(STRING str, UINT32 &value, UINT32 startIndex, UINT32 endIndex){// Take input + + isCinWaitState = 1; + + try{ + cin.exceptions(std::ios_base::badbit); + + do{ + cout << str; + cin >> value; + + // Clear and ignor bad input + if(isdigit(value) != true){ + cin.clear(); // reset badbit + cin.ignore(std::numeric_limits::max(), '\n'); //skip bad input + } + + // Check start index and end index with input value + if(value < startIndex || value > endIndex){ + cout << "*************************************************************" << endl; + cout << "Invalid choice. Please select from " << std::dec << startIndex << " to " << endIndex << "." << endl; + cout << "*************************************************************" << endl; + }else{ + isCinWaitState = 0; + return true; + } + + }while((value < startIndex || value > endIndex) && flag); + + }catch (std::ios_base::failure& fail){ + + isCinWaitState = 0; + return false; + } + + isCinWaitState = 0; + return false; +} + +INT32 +main(INT32 argc, INT8** argv) +{ + + signal(SIGINT, sig_handler); + + // Variable initialize + UINT32 choice,sub_choice,input,sub_input; + UINT32 loop,i,tmpDataId,tmplen; + UINT8 ret; + + #ifdef USE_LIBRARY_TIMEOUT + INT32 timeout = LIBRARY_TIMEOUT; + #else + INT32 timeout = UART_SETTING_TIMEOUT; + #endif + + HVC_VERSION version; + HVC_IMAGE image; + B5T_STATUS_T returnStatus; + + HVC_UART_BAUD_RATE_T baudRate; + UINT8 cameraAngle; + HVC_THRESHOLD threshold; + HVC_SIZERANGE sizeRange; + INT32 pose, angle; + + UINT8 *pAlbumData = NULL; + INT32 albumDataSize = 0; + string inFileName; + + fstream pFile; + + vector userId; + vector userDataId; + + // Print baudrates for selection + cout << "*************************************************************" << endl; + cout << "*************************************************************" << endl; + cout << " BaudRates " << endl; + cout << "*************************************************************" << endl; + cout << "*************************************************************" << endl; + cout << "1. 9600 " << endl; + cout << "2. 38400 " << endl; + cout << "3. 115200 " << endl; + cout << "4. 230400 " << endl; + cout << "5. 460800 " << endl; + cout << "6. 921600 " << endl; + cout << "*************************************************************" << endl; + + ret = takeSelectedInput("Select from the list of BaudRates : ", input, 1,6); + + if(ret != true){ + return 0; + } + + switch(input){// Baudrate variable update as per input + + case 1: // 9600 + baudRate = HVC_UART_BAUD_RATE_9600; + break; + + case 2: // 38400 + baudRate = HVC_UART_BAUD_RATE_38400; + break; + + case 3: // 115200 + baudRate = HVC_UART_BAUD_RATE_115200; + break; + + case 4: // 230400 + baudRate = HVC_UART_BAUD_RATE_230400; + break; + + case 5: // 460800 + baudRate = HVC_UART_BAUD_RATE_460800; + break; + + case 6: // 921600 + baudRate = HVC_UART_BAUD_RATE_921600; + break; + + default: + break; + + }//end input switch + + // Instantiate a B5T007001 sensor on UART. + B5T007001 sensor(DEFAULT_UART_NUM, baudRate); + + // Get the sensor version + returnStatus = sensor.getVersion(timeout,version); + + if(returnStatus != B5T_STATUS_SUCCESS){ + cout << "Failed to get Version with error code : " << returnStatus << endl; + return 0; + } + + // String re-size + string tmpstring((INT8*)version.string, sizeof(version.string)); + + // Album data Allocatoion + pAlbumData = (UINT8*)malloc(sizeof(UINT8) * (HVC_ALBUM_SIZE_MAX + 8)); + + if (pAlbumData == NULL){ + cout << "Album data memeory allocation error." << endl; + return 0; + } + + while(flag) + { + cout << CLEAR_SCREEN; + cout << "*************************************************************" << endl; + cout << " HVC Version : " // Print HVC version + << tmpstring + << (unsigned) version.major << "." + << (unsigned) version.minor << "." + << (unsigned) version.relese << "." + << (unsigned) (version.revision[0] + + (version.revision[1] << 8) + + (version.revision[2] << 16) + + (version.revision[3] << 24)) << endl; + // Print main menu for selection + cout << "*************************************************************" << endl; + cout << "*************************************************************" << endl; + cout << " MAIN MENU " << endl; + cout << "*************************************************************" << endl; + cout << "*************************************************************" << endl; + cout << "1. Add user " << endl; + cout << "2. Modify/Delete user " << endl; + cout << "3. List user " << endl; + cout << "4. Settings " << endl; + cout << "*************************************************************" << endl; + + ret = takeSelectedInput("Select from main menu : ", choice, 1, 4); + + if(ret != true){ + break; + } + + switch(choice){ + + case ADD_USER: + + // Get register user ids and data ids + returnStatus = sensor.getRegisteredUsersInfo(timeout,userId,userDataId); + + if(returnStatus != B5T_STATUS_SUCCESS){ + cout << "Failed to get registered user info with error code : " << returnStatus << endl; + break; + } + + if(userId.size() > 0) // Check registered user ids size + { + for(loop = 0; loop < userId.size(); loop++){ + if(userId[loop] != loop){ + break; + } + } + }else{ + // Init 0 for non-registered user application + loop = 0; + } + + #ifndef USE_LIBRARY_TIMEOUT + // Update timeout variable + timeout = UART_REGIST_EXECUTE_TIMEOUT; + #endif + + if(loop > 99){// Check total number of register user id + cout << "Maximum user id registration number reached." << endl; + break; + } + + tmpDataId = 0; + + // Add user + returnStatus = sensor.addUser(timeout,loop,tmpDataId,image); + + #ifndef USE_LIBRARY_TIMEOUT + // Update timeout variable + timeout = UART_SETTING_TIMEOUT; + #endif + + if(returnStatus != B5T_STATUS_SUCCESS){// Check return status + cout << "Failed to add user with error code : " << returnStatus << endl; + break; + } + + // Print message with registered user id and data id + cout << "User added successfully with user id : " << loop << " ,and data id : " << tmpDataId << "." << endl; + + break; + + case MODIFY_DELETE_USER: + + // Get register user ids and data ids + returnStatus = sensor.getRegisteredUsersInfo(timeout,userId,userDataId); + + if(returnStatus != B5T_STATUS_SUCCESS){// Check return status + cout << "Failed to get Registered User Info with error code : " << returnStatus << endl; + cin.ignore(); + break; + } + + // Print for selection of modify and delete user + cout << "*************************************************************" << endl; + cout << "*************************************************************" << endl; + cout << " Modify or Delete Users ID " << endl; + cout << "*************************************************************" << endl; + cout << "*************************************************************" << endl; + cout << "1. Modify user " << endl; + cout << "2. Delete user " << endl; + cout << "*************************************************************" << endl; + + ret = takeSelectedInput("Select modify user or delete user : ",sub_choice,1,2); + + if(ret != true){ + break; + } + + if(sub_choice == 1){// Modify user + + if(userId.size() > 0){// Check registered user ids size + for(loop = 0; loop < userId.size(); loop++){ + cout << (loop+1) << "." << "User ID : " << unsigned(userId[loop]) << endl; + } + }else{ + cout << "Users id list is empty. Please add user and try again." << endl; + break; + } + + ret = takeSelectedInput("Select from the list of user ID : ",sub_choice,1,userId.size()); + + if(ret != true){ + break; + } + + // Print for selection of modify and delete data ids + cout << "*************************************************************" << endl; + cout << "*************************************************************" << endl; + cout << " Modify/Delete Data IDs " << endl; + cout << "*************************************************************" << endl; + cout << "*************************************************************" << endl; + cout << "1. Add/Modify Data ID " << endl; + cout << "2. Delete Data ID " << endl; + cout << "*************************************************************" << endl; + + ret = takeSelectedInput("Select from the list : ",input,1,2); + + if(ret != true){ + break; + } + + if(input == 1){ + + // Print registered data ids + cout << "*************************************************************" << endl; + cout << "*************************************************************" << endl; + cout << " Data IDs " << endl; + cout << "*************************************************************" << endl; + cout << "*************************************************************" << endl; + cout << "Registered Data IDs." << endl; + + tmpDataId = 0; + tmplen = 0; + + for(loop=0, i=0x01; i < 0x400; loop++, i<<=1){// Check and print registered data ids + + if ((userDataId[sub_choice-1] & i) == 0 ){ + if(tmplen < __builtin_popcountll(userDataId[sub_choice-1])){ + tmpDataId++; + continue; + }else{ + break; + } + } + cout << "Data ID : " << tmpDataId << endl; + tmplen++; + tmpDataId++; + } + + // Check registration number + if ( tmpDataId >= 10 ){ + cout << "Maximum data id registration number reached." << endl; + cin.ignore(); + break; + } + + // Print for input from user for add/modify data id + ret = takeSelectedInput("Select data id(0 to 9) for add/modify : ",input,0,9); + + if(ret != true){ + break; + } + + // Check user input + if((input >= 0) && (input <= 9)){ + + #ifndef USE_LIBRARY_TIMEOUT + // Update timeout variable + timeout = UART_REGIST_EXECUTE_TIMEOUT; + #endif + + // Add user + returnStatus = sensor.addUser(timeout,userId[sub_choice-1],input,image); + + #ifndef USE_LIBRARY_TIMEOUT + // Update timeout variable + timeout = UART_SETTING_TIMEOUT; + #endif + + if(returnStatus != B5T_STATUS_SUCCESS){ + cout << "Failed to modify user with error code : " << returnStatus << endl; + break; + } + + cout << "Data id "<< input << " of user id " << (unsigned)userId[sub_choice-1] << " add/modify successfully." << endl; + break; + } + + }else if(input == 2){//Delete Data Id + + cout << "*************************************************************" << endl; + cout << "*************************************************************" << endl; + cout << " Data IDs " << endl; + cout << "*************************************************************" << endl; + cout << "*************************************************************" << endl; + + tmpDataId = 0; + tmplen = 0; + + for(loop=0,i=0x01; i < 0x400; loop++, i<<=1){// Check and print registered data ids + + if ((userDataId[sub_choice-1] & i) == 0 ){ + if(tmplen < __builtin_popcountll(userDataId[sub_choice-1])){ + tmpDataId++; + continue; + }else{ + break; + } + } + cout << "Data ID : " << tmpDataId << endl; + tmplen++; + tmpDataId++; + } + + ret = takeSelectedInput("Select data ID for delete : ",sub_input,0,9); + + if(ret != true){ + break; + } + + if((sub_input >= 0) && (sub_input <= (tmpDataId+1))){// Check input + + #ifndef USE_LIBRARY_TIMEOUT + // Update timeout variable + timeout = UART_REGIST_EXECUTE_TIMEOUT; + #endif + + // Delete user data id + returnStatus = sensor.deleteUserData(timeout,userId[sub_choice-1], sub_input); + + #ifndef USE_LIBRARY_TIMEOUT + // Update timeout variable + timeout = UART_SETTING_TIMEOUT; + #endif + + if(returnStatus != B5T_STATUS_SUCCESS){ + cout << "Failed to modify user with error code : " << returnStatus << endl; + break; + } + + cout << "Data id "<< sub_input << " of user id " << unsigned(userId[sub_choice-1]) << " deleted Successfully." << endl; + break; + } + + }else{ + + cout << "Invalid input." << endl; + } + }else if(sub_choice == 2){// Delete user + + // Print for delete users + cout << "*************************************************************" << endl; + cout << "*************************************************************" << endl; + cout << " Delete Users " << endl; + cout << "*************************************************************" << endl; + cout << "*************************************************************" << endl; + cout << "1. Delete specific user id " << endl; + cout << "2. Delete all user id " << endl; + cout << "*************************************************************" << endl; + + // Print for input from user + ret = takeSelectedInput("Select from the list of Delete user : ",input,1,2); + + if(ret != true){ + break; + } + + if(input == 2){// Delete all user + + if(userId.size() > 0){// Check registered user ids size + + sensor.deleteUserAll(timeout); + cout << "All user id delete successfully." << endl; + + }else{ + cout << "Users id list is empty. Please add user and try again." << endl; + } + + }else if(input == 1){// Delete specific user id + + if(userId.size() > 0){// Check registered user ids size + + for(loop = 0; loop < userId.size(); loop++){ + cout << (loop+1) << "." << "User ID : " << unsigned(userId[loop]) << endl; + } + + }else{ + + cout << "Users id list is empty. Please add user and try again." << endl; + break; + } + + // Take a input choice from user + ret = takeSelectedInput("Select from the list of user ID : ",input,1,userId.size()); + + if(ret != true){ + break; + } + + // Delete user id + returnStatus = sensor.deleteUser(timeout,userId[input-1]); + + if(returnStatus != B5T_STATUS_SUCCESS){ + cout << "Failed to modify user with error code : " << returnStatus << endl; + cin.ignore(); + break; + } + cout << "User id " << unsigned(userId[input-1]) << " deteled successfully." << endl; + } + } + + break; + + case LIST_USER: + + // Get register user ids and data ids + returnStatus = sensor.getRegisteredUsersInfo(timeout,userId,userDataId); + + if(returnStatus != B5T_STATUS_SUCCESS){ + cout << "Failed to get Registered User Info with error code : " << returnStatus << endl; + break; + } + + cout << "*************************************************************" << endl; + cout << "*************************************************************" << endl; + cout << " Users ID " << endl; + cout << "*************************************************************" << endl; + cout << "*************************************************************" << endl; + + if(userId.size() > 0){// Check registered user ids size + + for(loop = 0; loop < userId.size(); loop++){ + + cout << (loop+1) << "." << "User ID : " << unsigned(userId[loop]) << endl; + } + }else{ + + cout << "Users id list is empty. Please add user and try again." << endl; + break; + } + + ret = takeSelectedInput("Select from the list of user ID : ",sub_choice,1,userId.size()); + + if(ret != true){ + break; + } + + tmplen = 0; + + if((sub_choice > 0) && (sub_choice <= userId.size())){// Check input + + for(loop=0,i=0x01; i < 0x400; loop++, i<<=1){// Check and print registered data ids + + if ((userDataId[sub_choice-1] & i) == 0 ){ + + if(tmplen < __builtin_popcountll(userDataId[sub_choice-1])){ + continue; + }else{ + break; + } + } + + cout << "Data ID : " << loop << endl; + tmplen++; + } + break; + } + + break; + + case SETTINGS: + + // Print settings + cout << "*************************************************************" << endl; + cout << "*************************************************************" << endl; + cout << " Settings " << endl; + cout << "*************************************************************" << endl; + cout << "*************************************************************" << endl; + cout << "1. Get camera angle " << endl; + cout << "2. Set camera angle " << endl; + cout << "3. Get threshold value " << endl; + cout << "4. Set threshold value " << endl; + cout << "5. Get detection size " << endl; + cout << "6. Set detection size " << endl; + cout << "7. Get face angle " << endl; + cout << "8. Set face angle " << endl; + cout << "9. Set uart forwarding rate " << endl; + cout << "10. Save Album from HVC Device to Host " << endl; + cout << "11. Load Album from Host to HVC Device RAM " << endl; + cout << "12. Save Album from HVC Device RAM to HVC device ROM " << endl; + cout << "*************************************************************" << endl; + + ret = takeSelectedInput("Select from the list of settings : ",sub_choice,1,12); + + if(ret != true){ + break; + } + + switch(sub_choice){ + + case 1: // Get camera angle + + returnStatus = sensor.getCameraAngle(timeout, cameraAngle); + + if(returnStatus != B5T_STATUS_SUCCESS){ + cout << "Failed to get camera Angle with error code : " << returnStatus << endl; + break; + } + + switch(cameraAngle){ + + case 0: // 0 + cout << "Camera Angle is 0 degree." << endl; + break; + + case 1: // 90 + cout << "Camera Angle is 90 degree." << endl; + break; + + case 2: // 180 + cout << "Camera Angle is 180 degree." << endl; + break; + + case 3: // 270 + cout << "Camera Angle is 270 degree." << endl; + break; + + default: + cout << "Invalid Camera Angle Received." << endl; + + }//end switch getCameraAngle + + break; + + case 2: // Set camera angle + + cout << "*************************************************************" << endl; + cout << "*************************************************************" << endl; + cout << " Camera Angles " << endl; + cout << "*************************************************************" << endl; + cout << "*************************************************************" << endl; + cout << "1. 0 degree " << endl; + cout << "2. 90 degree " << endl; + cout << "3. 180 degree " << endl; + cout << "4. 270 degree " << endl; + cout << "*************************************************************" << endl; + + ret = takeSelectedInput("Select from the list of Camera Angles : ",input,1,4); + + if(ret != true){ + break; + } + + // Set Camera angle + returnStatus = sensor.setCameraAngle(timeout,cameraAngle); + + if(returnStatus != B5T_STATUS_SUCCESS){ + cout << "Failed to set camera angle with error code : " << returnStatus << endl; + break; + } + + if(cameraAngle == 0){ + cout << "Camera Angle : 0 set successfully" << endl; + }else if(cameraAngle == 1){ + cout << "Camera Angle : 90 set successfully" << endl; + }else if(cameraAngle == 2){ + cout << "Camera Angle : 180 set successfully" << endl; + }else if(cameraAngle == 3){ + cout << "Camera Angle : 270 set successfully" << endl; + }else{ + cout << "Invalid Camera Angle set." << endl; + } + + break; + + case 3: // Get threshold value + + returnStatus = sensor.getThreshold(timeout, threshold); + + if(returnStatus != B5T_STATUS_SUCCESS){ + cout << "Failed to get Threshold value with error code : " << returnStatus << endl; + break; + } + + cout << "Threshold Value of Human Body Detection is : " << threshold.bdThreshold << endl; + cout << "Threshold Value of Hand Detection is : " << threshold.hdThreshold << endl; + cout << "Threshold Value of Face Detection is : " << threshold.dtThreshold << endl; + cout << "Threshold Value of Face Recognition is : " << threshold.rsThreshold << endl; + + break; + + case 4: // Set threshold value + + // Human Body Detection + ret = takeSelectedInput("Input Threshold value for Human Body Detection : ",input,1,1000); + + if(ret != true){ + break; + } + + threshold.bdThreshold = input; + + // Hand Detection + ret = takeSelectedInput("Input Threshold value for Hand Detection : ",input,1,1000); + + if(ret != true){ + break; + } + + threshold.hdThreshold = input; + + // Face Detection + ret = takeSelectedInput("Input Threshold value for Face Detection : ",input,1,1000); + + if(ret != true){ + break; + } + + threshold.dtThreshold = input; + + // Face Recognition + ret = takeSelectedInput("Input Threshold value for Face Recognition : ",input,1,1000); + + if(ret != true){ + break; + } + + threshold.rsThreshold = input; + + returnStatus = sensor.setThreshold(timeout,threshold); + + if(returnStatus != B5T_STATUS_SUCCESS){ + cout << "Failed to set threshold value with error code : " << returnStatus << endl; + break; + } + + cout << "Threshold values set successfully." << endl; + + break; + + case 5: // Get detection size + + returnStatus = sensor.getSizeRange(timeout,sizeRange); + + if(returnStatus != B5T_STATUS_SUCCESS){ + cout << "Failed to get detection size with error code : " << returnStatus << endl; + break; + } + + cout << "Minimum detection size of Human Body Detection is : " << sizeRange.bdMinSize << endl; + cout << "Maximum detection size of Human Body Detection is : " << sizeRange.bdMaxSize << endl; + cout << "Minimum detection size of Hand Detection is : " << sizeRange.hdMinSize << endl; + cout << "Maximum detection size of Hand Detection is : " << sizeRange.hdMaxSize << endl; + cout << "Minimum detection size of Face Detection is : " << sizeRange.dtMinSize << endl; + cout << "Maximum detection size of Face Detection is : " << sizeRange.dtMaxSize << endl; + + break; + + case 6: // Set detection size + + ret = takeSelectedInput("Minimum detection size of Human Body Detection : ",input,20,8192); + + if(ret != true){ + break; + } + + sizeRange.bdMinSize = input; + + ret = takeSelectedInput("Maximum detection size of Human Body Detection : ",input,20,8192); + + if(ret != true){ + break; + } + + sizeRange.bdMaxSize = input; + + ret = takeSelectedInput("Minimum detection size of Hand Detection : ",input,20,8192); + + if(ret != true){ + break; + } + + sizeRange.hdMinSize = input; + + ret = takeSelectedInput("Maximum detection size of Hand Detection : ",input,20,8192); + + if(ret != true){ + break; + } + + sizeRange.hdMaxSize = input; + + ret = takeSelectedInput("Minimum detection size of Face Detection : ",input,20,8192); + + if(ret != true){ + break; + } + + sizeRange.dtMinSize = input; + + ret = takeSelectedInput("Maximum detection size of Face Detection : ",input,20,8192); + + if(ret != true){ + break; + } + + sizeRange.dtMaxSize = input; + + returnStatus = sensor.setSizeRange(timeout,sizeRange); + + if(returnStatus != B5T_STATUS_SUCCESS){ + cout << "Failed to set detection size with error code : " << returnStatus << endl; + break; + } + + cout << "Detection size set successfully." << endl; + + break; + + case 7: // Get face angle + + returnStatus = sensor.getFaceDetectionAngle(timeout,pose,angle); + + if(returnStatus != B5T_STATUS_SUCCESS){ + cout << "Failed to get Face Detetion Angle with error code : " << returnStatus << endl; + break; + } + + if(pose == 0){ + cout << "Face Detection pose is : 30 degree" << endl; + }else if(pose == 1){ + cout << "Face Detection pose is : 60 degree" << endl; + }else if(pose == 2){ + cout << "Face Detection pose is : 90 degree" << endl; + }else{ + cout << "Invalid Face Detection pose." << endl; + } + + if(angle == 0){ + cout << "Face Detection angle is : 15 degree" << endl; + }else if(angle == 1){ + cout << "Face Detection angle is : 45 degre" << endl; + }else{ + cout << "Invalid Face Detection angle." << endl; + } + + break; + + case 8: // Set face angle + + //Pose + cout << "*************************************************************" << endl; + cout << "*************************************************************" << endl; + cout << " Pose " << endl; + cout << "*************************************************************" << endl; + cout << "*************************************************************" << endl; + cout << "1. 30 degree " << endl; + cout << "2. 60 degree " << endl; + cout << "3. 90 degree " << endl; + cout << "*************************************************************" << endl; + + ret = takeSelectedInput("Select from the list of Pose : ",input,1,3); + + if(ret != true){ + break; + } + + pose = (input - 1); + + //Angle + cout << "*************************************************************" << endl; + cout << "*************************************************************" << endl; + cout << " Angle " << endl; + cout << "*************************************************************" << endl; + cout << "*************************************************************" << endl; + cout << "1. 15 degree " << endl; + cout << "2. 45 degree " << endl; + cout << "*************************************************************" << endl; + + ret = takeSelectedInput("Select from the list of Angle : ",input,1,2); + + if(ret != true){ + break; + } + + angle = (input - 1); + + returnStatus = sensor.setFaceDetectionAngle(timeout,pose,angle); + + if(returnStatus != B5T_STATUS_SUCCESS){ + cout << "Failed to set face detection angle with error code : " << returnStatus << endl; + break; + } + + cout << "Face Detection Angle set Successfully." << endl; + + break; + + case 9: // Set uart forwarding rate + + cout << "*************************************************************" << endl; + cout << "*************************************************************" << endl; + cout << " BaudRates " << endl; + cout << "*************************************************************" << endl; + cout << "*************************************************************" << endl; + cout << "1. 9600 " << endl; + cout << "2. 38400 " << endl; + cout << "3. 115200 " << endl; + cout << "4. 230400 " << endl; + cout << "5. 460800 " << endl; + cout << "6. 921600 " << endl; + cout << "*************************************************************" << endl; + + ret = takeSelectedInput("Select from the list of BaudRates : ",input,1,6); + + if(ret != true){ + break; + } + + switch(input){ + + case 1: // 9600 + baudRate = HVC_UART_BAUD_RATE_9600; + break; + + case 2: // 38400 + baudRate = HVC_UART_BAUD_RATE_38400; + break; + + case 3: // 115200 + baudRate = HVC_UART_BAUD_RATE_115200; + break; + + case 4: // 230400 + baudRate = HVC_UART_BAUD_RATE_230400; + break; + + case 5: // 460800 + baudRate = HVC_UART_BAUD_RATE_460800; + break; + + case 6: // 921600 + baudRate = HVC_UART_BAUD_RATE_921600; + break; + + default: + cout << "Invalid choice. Please Select from 1 to 6." << endl; + + }//end input switch set baudrate + + // Set Baudrate + returnStatus = sensor.setBaudRate(timeout,baudRate); + + if(returnStatus != B5T_STATUS_SUCCESS){ + cout << "Failed to set BaudRate with error code : " << returnStatus << endl; + break; + } + + cout << "BaudRate " << baudRate << " set successfully." << endl; + + break; + + case 10: // Save Album from HVC Device to Host + + #ifndef USE_LIBRARY_TIMEOUT + // Update timeout variable + timeout = UART_SAVE_ALBUM_TIMEOUT; + #endif + + // Save Album to host + returnStatus = sensor.saveAlbumToHost(timeout, pAlbumData, albumDataSize); + + #ifndef USE_LIBRARY_TIMEOUT + // Update timeout variable + timeout = UART_SETTING_TIMEOUT; + #endif + + if(returnStatus != B5T_STATUS_SUCCESS){ + cout << "Failed to Save Album Data with error code : " << returnStatus << endl; + break; + } + + do{ + cout << "Input File Path for save Album : "; + + // Set path of file + + getline(cin, inFileName,'\n'); + + // Open file + pFile.open(inFileName.c_str(), fstream::out); + + if(!pFile){// Check file or path exists + cout << "*************************************************************" << endl; + cout << "Invalid Path." << endl; + cout << "*************************************************************" << endl; + } + + }while(!pFile && flag); + + // Write data in file + pFile.write((INT8*)pAlbumData,albumDataSize); + + // Close file + pFile.close(); + + cout << "Save Album Data successfully." << endl; + + break; + + case 11: // Load Album from Host to HVC Device RAM + + #ifndef USE_LIBRARY_TIMEOUT + // Update timeout variable + timeout = UART_LOAD_ALBUM_TIMEOUT; + #endif + + do{ + + cout << "Input File Path from load Album : "; + + // Set path of file + getline(cin, inFileName,'\n'); + + // Open file + pFile.open(inFileName.c_str(), fstream::out | fstream::in); + + if(!pFile){// Check file or path exists + cout << "*************************************************************" << endl; + cout << "Invalid Path." << endl; + cout << "*************************************************************" << endl; + } + + }while(!pFile && flag); + + // Calculate size of ablbum data + pFile.seekg (0, pFile.end); + albumDataSize = pFile.tellg(); + pFile.seekg (0, pFile.beg); + + // Read album data + pFile.read((INT8*)pAlbumData,albumDataSize); + + // Close file + pFile.close(); + + // Load album + returnStatus = sensor.loadAlbumFromHost(timeout, pAlbumData,albumDataSize); + + #ifndef USE_LIBRARY_TIMEOUT + // Update timeout variable + timeout = UART_SETTING_TIMEOUT; + #endif + + if(returnStatus != B5T_STATUS_SUCCESS){ + cout << "Failed to load album data with error code : " << returnStatus << endl; + break; + } + + cout << "Load album data successfully." << endl; + + break; + + case 12: // Save Album from HVC Device RAM to HVC device ROM + + // Save album into ROM + returnStatus = sensor.saveAlbumToROM(timeout); + + if(returnStatus != B5T_STATUS_SUCCESS){ + cout << "Failed to aave album to ROM memory with error code : " << returnStatus << endl; + break; + } + + cout << "Save album to ROM memory successfully." << endl; + + break; + + default: + cout << "Invalid choice. Please select from 1 to 12." << endl; + + }//end sub_choice switch + + break; + + default: + cout << "Invalid choice. Please select from 1 to 4." << endl; + + }//end choice switch + + if(flag){ + cout << "Press enter to continue..."; + //cin.ignore(); + cin.get(); + } + } + + // Free album data + if(pAlbumData != NULL){ + free(pAlbumData); + } + + return 0; +} diff --git a/examples/c++/b5t007001_sample.cxx b/examples/c++/b5t007001_sample.cxx new file mode 100644 index 00000000..f94c0ccc --- /dev/null +++ b/examples/c++/b5t007001_sample.cxx @@ -0,0 +1,1623 @@ +/* +* Author: Takashi Kakiuchi +* Copyright (c) 2019 Omron Electronic Components - Americas +* +* Permission is hereby granted, free of charge, to any person obtaining a copy of +* this software and associated documentation files (the "Software"), to deal in +* the Software without restriction, including without limitation the rights to +* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +* the Software, and to permit persons to whom the Software is furnished to do so, +* subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in all +* copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +/* headers */ +#include +#include +#include +#include +#include +#include +#include +#include + +/* omron sensor header */ +#include "b5t007001.hpp" + +/* Define */ +#define CLEAR_SCREEN "\033[2J\033[1;1H" + +#define HUMAN_BODY_DETECT 1 +#define HAND_DETECT 2 +#define FACE_DETECT 3 +#define AGE_ESTIMATE 4 +#define FACE_DIRECTION 5 +#define GENDER_ESTIMATE 6 +#define GAZE_ESTIMATE 7 +#define BLINK_ESTIMATE 8 +#define EXPRESSION_ESTIMATE 9 +#define FACE_RECOGNITION 10 +#define ALL 11 +#define SETTINGS 12 + +#define DEBUG_PRINT 0 +using namespace upm; +using namespace std; + +volatile sig_atomic_t exitFlag = 0; +UINT8 isCinWaitState = 0; //State for cin is waiting for input or not. + +void +sig_handler(int signum) +{ + // Check for Interrupt signal + if (signum == SIGINT || signum == SIGTERM){ + exitFlag++; + } + if(exitFlag == 2){ + if(isCinWaitState == 1){ + std::cin.setstate(std::ios_base::badbit); + } + } + cout << "\r\nPress enter to continue or press ctrl + c again to exit from application." << endl; +} + +bool isNumberWithSpaces(string s) +{ + if(s.size() == 0) + { + return false; + } + for (UINT32 i = 0; i < s.length(); i++){ + if (s[i] != ' ' && isdigit(s[i]) == false){ + return false; + } + } + return true; +} + +bool isNumber(string s) +{ + if(s.size() == 0) + { + return false; + } + for (UINT32 i = 0; i < s.length(); i++){ + if (s[i] != '-' && isdigit(s[i]) == false){ + return false; + } + } + return true; +} + +void getNumbersFromString(string tmpStr, vector &outNumbers){ + UINT32 found=0, foundNext = 0; + outNumbers.clear(); + found = tmpStr.find(' ', found); + outNumbers.push_back(stoi(tmpStr.substr(0, found))); + found = 0; + for(UINT32 i=0;i< tmpStr.size();i++){ + found = tmpStr.find(' ', found+1); + if ((found != string::npos) && (found < tmpStr.size()-1)){ + foundNext = tmpStr.find(' ', found+1); +#if DEBUG_PRINT + cout << "DEBUG: foundNext =" << foundNext << endl; +#endif + if(foundNext == string::npos) { + foundNext = tmpStr.size() - found; + } + else + { + foundNext = foundNext - found; + } +#if DEBUG_PRINT + cout << "DEBUG: foundNext =" << foundNext << endl; + cout << "DEBUG: First occurrence is " << stoi(tmpStr.substr(found+1, foundNext)) << endl; +#endif + outNumbers.push_back(stoi(tmpStr.substr(found+1, foundNext))); + } + else + { + break; + } + } +} +UINT8 takeDigitInput(string printMsg, STB_INT32 &inputValue){ + string tmpStr; + isCinWaitState = 1; + try{ + cin.exceptions(std::ios_base::badbit); + do{ + exitFlag = 0; + cout << printMsg; + getline(cin, tmpStr); + if(isNumber(tmpStr)){ + inputValue = stoi(tmpStr); + break; + } + else + { + cout << "Invalid input. Please try again." << endl; + } + + }while(1); + }catch (std::ios_base::failure& fail){ + isCinWaitState = 0; + return false; + } + isCinWaitState = 0; + return true; +} +void takeEnterInput(){ + cout << "Press enter to continue..."; + isCinWaitState = 1; + try{ + exitFlag = 0; + cin.clear(); // reset badbit + cin.exceptions(std::ios_base::badbit); + while(1){ + if(cin.get() == '\n'){ + break; + } + } + }catch (std::ios_base::failure& fail){ + } + isCinWaitState = 0; +} + +UINT8 +takeSelectedMultiChoiceInput(STRING str, std::vector &value, INT32 startIndex, INT32 endIndex){// Take input + + isCinWaitState = 1; + std::string tmpStr; + UINT8 takeInput = 1; + try{ + cin.exceptions(std::ios_base::badbit); + + do{ + cout << str; + getline(cin,tmpStr); + + exitFlag = 0; + if(!isNumberWithSpaces(tmpStr)){ + cout << "*************************************************************" << endl; + cout << "Invalid choice. Please select from " << std::dec << startIndex << " to " << endIndex << "." << endl; + cout << "*************************************************************" << endl; + continue; + } + + getNumbersFromString(tmpStr, value); + + takeInput = 0; + // Check start index and end index with input value + for(UINT8 i=0;i < value.size();i++){ + #if DEBUG_PRINT + std::cout << "DEBUG: Processing values " << value[i] << std::endl; + #endif + + if(!(value[i] <= endIndex && value[i] >= startIndex)){ + cout << "*************************************************************" << endl; + cout << "Invalid choice. Please select from " << std::dec << startIndex << " to " << endIndex << "." << endl; + cout << "*************************************************************" << endl; + takeInput = 1; + break; + } + } + }while(takeInput); + + }catch (std::ios_base::failure& fail){ + isCinWaitState = 0; + return false; + } + isCinWaitState = 0; + return true; +} + + +UINT8 +takeSelectedInput(STRING str, INT32 &value, INT32 startIndex, INT32 endIndex){// Take input + + isCinWaitState = 1; + + try{ + cin.exceptions(std::ios_base::badbit); + + do{ + cout << str; + cin >> value; + + // Clear and ignor bad input + if(isdigit(value) != true){ + cin.clear(); // reset badbit + cin.ignore(std::numeric_limits::max(), '\n'); //skip bad input + } + + exitFlag = 0; + // Check start index and end index with input value + if(value < startIndex || value > endIndex){ + cout << "*************************************************************" << endl; + cout << "Invalid choice. Please select from " << std::dec << startIndex << " to " << endIndex << "." << endl; + cout << "*************************************************************" << endl; + }else{ + isCinWaitState = 0; + return true; + } + + }while((value < startIndex || value > endIndex) && exitFlag < 2); + + }catch (std::ios_base::failure& fail){ + isCinWaitState = 0; + return false; + } + isCinWaitState = 0; + return false; +} +string printSTBStatus(STB_STATUS status){ + + if(status == STB_STATUS_NO_DATA){ + return "No data"; + }else if(status == STB_STATUS_CALCULATING){ + return "Calculating"; + }else if(status == STB_STATUS_COMPLETE){ + return "Complete"; + }else if(status == STB_STATUS_FIXED){ + return "Fixed"; + } + return "Invalid status"; +} + +UINT8 getSTBFaceIndex(STB_INT32 nDetectID, STB_FACE *outSTBFaceResult, INT32 outSTBFaceCount, INT32 &nIndex){ + INT32 count = 0; + + for(count = 0; count < outSTBFaceCount; count++){ + if(outSTBFaceResult[count].nDetectID == nDetectID){ + nIndex = count; + return true; + } + } + + return false; +} + +int +main(int argc, char** argv) +{ + signal(SIGINT, sig_handler); + + int sub_choice,input; + int loop; + INT32 timeout = UART_EXECUTE_TIMEOUT; + HVC_VERSION version; + B5T_STATUS_T returnStatus; + + HVC_UART_BAUD_RATE_T baudRate; + UINT8 cameraAngle; + HVC_THRESHOLD threshold; + HVC_SIZERANGE sizeRange; + INT32 pose, angle; + + HVC_RESULT hvcResult; + INT32 execFlag; + INT32 imageNum = HVC_EXECUTE_IMAGE_QVGA_HALF; + + EXPRESSION exEnum; + INT32 stbStatus = 0; + + INT32 outSTBFaceCount; + STB_FACE *outSTBFaceResult; + INT32 outSTBBodyCount; + STB_BODY *outSTBBodyResult; + string tmpStr; + UINT32 i; + std::vector digitValues; + uint32_t sleep_time = 1000; + STB_INT8 majorVersion = 0, minorVersion = 0; + STB_INT32 maxRetryCount=0; + STB_INT32 posSteadinessParam, sizeSteadinessParam; + STB_INT32 thresholdValue; + STB_INT32 udAngleMin, udAngleMax, lrAngleMin,lrAngleMax; + STB_INT32 frameCount; + STB_INT32 minRatio; + + // Data and Time + INT8 dateAndTime[30]; + struct timeval value; + time_t curtime; + + UINT8 displaySamples = 1; + UINT8 ret= true; + INT32 nIndex; + + cout << "*************************************************************" << endl; + cout << "*************************************************************" << endl; + cout << " BaudRates " << endl; + cout << "*************************************************************" << endl; + cout << "*************************************************************" << endl; + cout << "1. 9600 " << endl; + cout << "2. 38400 " << endl; + cout << "3. 115200 " << endl; + cout << "4. 230400 " << endl; + cout << "5. 460800 " << endl; + cout << "6. 921600 " << endl; + cout << "*************************************************************" << endl; + + ret = takeSelectedInput("Select from the list of BaudRates : ",input,1,6); + + if(ret != true){ + return 0; + } + + switch(input){ + + case 1: // 9600 + baudRate = HVC_UART_BAUD_RATE_9600; + break; + case 2: // 38400 + baudRate = HVC_UART_BAUD_RATE_38400; + break; + case 3: // 115200 + baudRate = HVC_UART_BAUD_RATE_115200; + break; + case 4: // 230400 + baudRate = HVC_UART_BAUD_RATE_230400; + break; + case 5: // 460800 + baudRate = HVC_UART_BAUD_RATE_460800; + break; + case 6: // 921600 + baudRate = HVC_UART_BAUD_RATE_921600; + break; + default: + cout << "Invalid choice. Please select from 1 to 6." << endl; + break; + + }//end input switch + + // Instantiate a B5T007001 sensor on UART. + B5T007001 sensor(DEFAULT_UART_NUM, baudRate); + + // Get the sensor version + returnStatus = sensor.getVersion(timeout,version); + + if(returnStatus != B5T_STATUS_SUCCESS){ + cout << "Failed to get Version with error code : " << returnStatus << endl; + return 0; + } + + // String re-size + string tmpstring((char*)version.string, sizeof(version.string)); + do{ + cout << CLEAR_SCREEN; + cout << "*************************************************************" << endl; + cout << " HVC Version : " + << tmpstring + << (unsigned) version.major << "." + << (unsigned) version.minor << "." + << (unsigned) version.relese << "." + << (unsigned) (version.revision[0] + + (version.revision[1] << 8) + + (version.revision[2] << 16) + + (version.revision[3] << 24)) << endl; + cout << "*************************************************************" << endl; + cout << "*************************************************************" << endl; + cout << " MAIN MENU " << endl; + cout << "*************************************************************" << endl; + cout << "*************************************************************" << endl; + cout << "1. Human body detection " << endl; + cout << "2. Hand detection " << endl; + cout << "3. Face detection " << endl; + cout << "4. Age estimation " << endl; + cout << "5. Face direction estimation " << endl; + cout << "6. Gender estimation " << endl; + cout << "7. Gaze estimation " << endl; + cout << "8. Blink estimation " << endl; + cout << "9. Expression estimation " << endl; + cout << "10. Face recognition " << endl; + cout << "11. All (1 to 10) " << endl; + cout << "12. Settings " << endl; + cout << "*************************************************************" << endl; + ret = takeSelectedMultiChoiceInput("select values separated by spaces if multi choice for 1-12: ",digitValues,1,12); + + if(ret != true){ + break; + } + + execFlag = 0; + displaySamples = 1; + for(i=0;i < digitValues.size();i++){ + switch(digitValues[i]){ + case HUMAN_BODY_DETECT: + execFlag |= HVC_ACTIV_BODY_DETECTION; + break; + case HAND_DETECT: + execFlag |= HVC_ACTIV_HAND_DETECTION; + break; + case FACE_DETECT: + execFlag |= HVC_ACTIV_FACE_DETECTION; + break; + case AGE_ESTIMATE: + execFlag |= HVC_ACTIV_AGE_ESTIMATION; + break; + case FACE_DIRECTION: + execFlag |= HVC_ACTIV_FACE_DIRECTION; + break; + case GENDER_ESTIMATE: + execFlag |= HVC_ACTIV_GENDER_ESTIMATION; + break; + case GAZE_ESTIMATE: + execFlag |= HVC_ACTIV_GAZE_ESTIMATION; + break; + case BLINK_ESTIMATE: + execFlag |= HVC_ACTIV_BLINK_ESTIMATION; + break; + case EXPRESSION_ESTIMATE: + execFlag |= HVC_ACTIV_EXPRESSION_ESTIMATION; + break; + case FACE_RECOGNITION: + execFlag |= HVC_ACTIV_FACE_RECOGNITION; + break; + case ALL: + // Update all flags + execFlag |= HVC_ACTIV_BODY_DETECTION | HVC_ACTIV_HAND_DETECTION | HVC_ACTIV_FACE_DETECTION | HVC_ACTIV_FACE_DIRECTION | + HVC_ACTIV_AGE_ESTIMATION | HVC_ACTIV_GENDER_ESTIMATION | HVC_ACTIV_GAZE_ESTIMATION | HVC_ACTIV_BLINK_ESTIMATION | + HVC_ACTIV_EXPRESSION_ESTIMATION | HVC_ACTIV_FACE_RECOGNITION; + break; + case SETTINGS: + cout << "*************************************************************" << endl; + cout << "*************************************************************" << endl; + cout << " Settings " << endl; + cout << "*************************************************************" << endl; + cout << "*************************************************************" << endl; + cout << "1. Get camera angle " << endl; + cout << "2. Set camera angle " << endl; + cout << "3. Get threshold value " << endl; + cout << "4. Set threshold value " << endl; + cout << "5. Get detection size " << endl; + cout << "6. Set detection size " << endl; + cout << "7. Get face angle " << endl; + cout << "8. Set face angle " << endl; + cout << "9. Set uart forwarding rate " << endl; + cout << "10. Get stb library status " << endl; + cout << "11. Set stb library status " << endl; + cout << "12. Get stb version " << endl; + cout << "13. Set stb maximum retry count(TR) " << endl; + cout << "14. Get stb maximum retry count(TR) " << endl; + cout << "15. Set stb rectangle steadiness parameter(TR) " << endl; + cout << "16. Get stb rectangle steadiness parameter(TR) " << endl; + cout << "17. Set stb estimation result stabilizing threshold value(PE)" << endl; + cout << "18. Get stb estimation result stabilizing threshold value(PE)" << endl; + cout << "19. Set stb estimation result stabilizing angle(PE) " << endl; + cout << "20. Get stb estimation result stabilizing angle(PE) " << endl; + cout << "21. Set stb age/gender estimation complete frame count(PE) " << endl; + cout << "22. Get stb age/gender estimation complete frame count(PE) " << endl; + cout << "23. Set stb recognition stabilizing threshold value(FR) " << endl; + cout << "24. Get stb recognition stabilizing threshold value(FR) " << endl; + cout << "25. Set stb recognition stabilizing angle(FR) " << endl; + cout << "26. Get stb recognition stabilizing angle(FR) " << endl; + cout << "27. Set stb recognition stabilizing complete frame count(FR) " << endl; + cout << "28. Get stb recognition stabilizing complete frame count(FR) " << endl; + cout << "29. Set stb recognition minimum account ratio(FR) " << endl; + cout << "30. Get stb recognition minimum account ratio(FR) " << endl; + cout << "31. Clear stb frame result " << endl; + cout << "*************************************************************" << endl; + + displaySamples = 0; + ret = takeSelectedInput("Select from the list of settings : ",sub_choice,1,31); + + if(ret != true){ + break; + } + + switch(sub_choice){ + case 1: // Get camera angle + returnStatus = sensor.getCameraAngle(timeout, cameraAngle); + + if(returnStatus != B5T_STATUS_SUCCESS){ + cout << "Failed to get camera Angle with error code : " << returnStatus << endl; + break; + } + + switch(cameraAngle){ + + case 0: // 0 + cout << "Camera Angle is 0 degree." << endl; + break; + case 1: // 90 + cout << "Camera Angle is 90 degree." << endl; + break; + case 2: // 180 + cout << "Camera Angle is 180 degree." << endl; + break; + case 3: // 270 + cout << "Camera Angle is 270 degree." << endl; + break; + default: + cout << "Invalid Camera Angle Received." << endl; + + }//end switch getCameraAngle + + break; + case 2: // Set camera angle + + cout << "*************************************************************" << endl; + cout << "*************************************************************" << endl; + cout << " Camera Angles " << endl; + cout << "*************************************************************" << endl; + cout << "*************************************************************" << endl; + cout << "1. 0 degree " << endl; + cout << "2. 90 degree " << endl; + cout << "3. 180 degree " << endl; + cout << "4. 270 degree " << endl; + cout << "*************************************************************" << endl; + + ret = takeSelectedInput("Select from the list of Camera Angles :",input,1,4); + + if(ret != true){ + break; + } + + cameraAngle = (input - 1); + + returnStatus = sensor.setCameraAngle(timeout,cameraAngle); + + if(returnStatus != B5T_STATUS_SUCCESS){ + cout << "Failed to set camera angle with error code : " << returnStatus << endl; + break; + } + + if(cameraAngle == 0){ + cout << "Camera Angle : 0 set successfully" << endl; + }else if(cameraAngle == 1){ + cout << "Camera Angle : 90 set successfully" << endl; + }else if(cameraAngle == 2){ + cout << "Camera Angle : 180 set successfully" << endl; + }else if(cameraAngle == 3){ + cout << "Camera Angle : 270 set successfully" << endl; + }else{ + cout << "Invalid Camera Angle set." << endl; + } + + break; + case 3: // Get threshold value + + returnStatus = sensor.getThreshold(timeout, threshold); + + if(returnStatus != B5T_STATUS_SUCCESS){ + cout << "Failed to get Threshold value with error code : " << returnStatus << endl; + break; + } + + cout << "Threshold Value of Human Body Detection is : " << threshold.bdThreshold << endl; + cout << "Threshold Value of Hand Detection is : " << threshold.hdThreshold << endl; + cout << "Threshold Value of Face Detection is : " << threshold.dtThreshold << endl; + cout << "Threshold Value of Face Recognition is : " << threshold.rsThreshold << endl; + + break; + + case 4: // Set threshold value + + // Human Body Detection + ret = takeSelectedInput("Input Threshold value for Human Body Detection : ",input,1,1000); + + if(ret != true){ + break; + } + + threshold.bdThreshold = input; + + // Hand Detection + ret = takeSelectedInput("Input Threshold value for Hand Detection : ",input,1,1000); + + if(ret != true){ + break; + } + + threshold.hdThreshold = input; + + // Face Detection + ret = takeSelectedInput("Input Threshold value for Face Detection : ",input,1,1000); + + if(ret != true){ + break; + } + + threshold.dtThreshold = input; + + // Face Recognition + ret = takeSelectedInput("Input Threshold value for Face Recognition : ",input,1,1000); + + if(ret != true){ + break; + } + + threshold.rsThreshold = input; + + returnStatus = sensor.setThreshold(timeout,threshold); + + if(returnStatus != B5T_STATUS_SUCCESS){ + cout << "Failed to set threshold value with error code : " << returnStatus << endl; + break; + } + + cout << "Threshold values set successfully." << endl; + + break; + + case 5: // Get detection size + + returnStatus = sensor.getSizeRange(timeout,sizeRange); + + if(returnStatus != B5T_STATUS_SUCCESS){ + cout << "Failed to get detection size with error code : " << returnStatus << endl; + break; + } + + cout << "Minimum detection size of Human Body Detection is : " << sizeRange.bdMinSize << endl; + cout << "Maximum detection size of Human Body Detection is : " << sizeRange.bdMaxSize << endl; + cout << "Minimum detection size of Hand Detection is : " << sizeRange.hdMinSize << endl; + cout << "Maximum detection size of Hand Detection is : " << sizeRange.hdMaxSize << endl; + cout << "Minimum detection size of Face Detection is : " << sizeRange.dtMinSize << endl; + cout << "Maximum detection size of Face Detection is : " << sizeRange.dtMaxSize << endl; + + break; + + case 6: // Set detection size + + ret = takeSelectedInput("Minimum detection size of Human Body Detection : ",input,20,8192); + + if(ret != true){ + break; + } + + sizeRange.bdMinSize = input; + + ret = takeSelectedInput("Maximum detection size of Human Body Detection : ",input,20,8192); + + if(ret != true){ + break; + } + + sizeRange.bdMaxSize = input; + + ret = takeSelectedInput("Minimum detection size of Hand Detection : ",input,20,8192); + + if(ret != true){ + break; + } + + sizeRange.hdMinSize = input; + + ret = takeSelectedInput("Maximum detection size of Hand Detection : ",input,20,8192); + + if(ret != true){ + break; + } + + sizeRange.hdMaxSize = input; + + ret = takeSelectedInput("Minimum detection size of Face Detection : ",input,20,8192); + + if(ret != true){ + break; + } + + sizeRange.dtMinSize = input; + + ret = takeSelectedInput("Maximum detection size of Face Detection : ",input,20,8192); + + if(ret != true){ + break; + } + + sizeRange.dtMaxSize = input; + + returnStatus = sensor.setSizeRange(timeout,sizeRange); + + if(returnStatus != B5T_STATUS_SUCCESS){ + cout << "Failed to set detection size with error code : " << returnStatus << endl; + break; + } + + cout << "Detection size set successfully." << endl; + + break; + + case 7: // Get face angle + + returnStatus = sensor.getFaceDetectionAngle(timeout,pose,angle); + + if(returnStatus != B5T_STATUS_SUCCESS){ + cout << "Failed to get Face Detetion Angle with error code : " << returnStatus << endl; + break; + } + + if(pose == 0) cout << "Face Detection pose is : 30 degree" << endl; + else if(pose == 1) cout << "Face Detection pose is : 60 degree" << endl; + else if(pose == 2) cout << "Face Detection pose is : 90 degree" << endl; + else cout << "Invalid Face Detection pose." << endl; + + if(angle == 0) cout << "Face Detection angle is : 15 degree" << endl; + else if(angle == 1) cout << "Face Detection angle is : 45 degre" << endl; + else cout << "Invalid Face Detection angle." << endl; + + break; + case 8: // Set face angle + + //Pose + cout << "*************************************************************" << endl; + cout << "*************************************************************" << endl; + cout << " Pose " << endl; + cout << "*************************************************************" << endl; + cout << "*************************************************************" << endl; + cout << "1. 30 degree " << endl; + cout << "2. 60 degree " << endl; + cout << "3. 90 degree " << endl; + cout << "*************************************************************" << endl; + + ret = takeSelectedInput("Select from the list of Pose : ",input,1,3); + + if(ret != true){ + break; + } + + pose = (input - 1); + + //Angle + cout << "*************************************************************" << endl; + cout << "*************************************************************" << endl; + cout << " Angle " << endl; + cout << "*************************************************************" << endl; + cout << "*************************************************************" << endl; + cout << "1. 15 degree " << endl; + cout << "2. 45 degree " << endl; + cout << "*************************************************************" << endl; + + ret = takeSelectedInput("Select from the list of Angle : ",input,1,2); + + if(ret != true){ + break; + } + + angle = (input - 1); + + returnStatus = sensor.setFaceDetectionAngle(timeout,pose,angle); + + if(returnStatus != B5T_STATUS_SUCCESS){ + cout << "Failed to set face detection angle with error code : " << returnStatus << endl; + break; + } + + cout << "Face Detection Angle set Successfully." << endl; + + break; + + case 9: // Set uart forwarding rate + + cout << "*************************************************************" << endl; + cout << "*************************************************************" << endl; + cout << " BaudRates " << endl; + cout << "*************************************************************" << endl; + cout << "*************************************************************" << endl; + cout << "1. 9600 " << endl; + cout << "2. 38400 " << endl; + cout << "3. 115200 " << endl; + cout << "4. 230400 " << endl; + cout << "5. 460800 " << endl; + cout << "6. 921600 " << endl; + cout << "*************************************************************" << endl; + + ret = takeSelectedInput("Select from the list of BaudRates : ",input,1,6); + + if(ret != true){ + break; + } + + switch(input){ + + case 1: // 9600 + baudRate = HVC_UART_BAUD_RATE_9600; + break; + + case 2: // 38400 + baudRate = HVC_UART_BAUD_RATE_38400; + break; + + case 3: // 115200 + baudRate = HVC_UART_BAUD_RATE_115200; + break; + + case 4: // 230400 + baudRate = HVC_UART_BAUD_RATE_230400; + break; + + case 5: // 460800 + baudRate = HVC_UART_BAUD_RATE_460800; + break; + + case 6: // 921600 + baudRate = HVC_UART_BAUD_RATE_921600; + break; + + default: + cout << "Invalid choice. Please select from 1 to 6." << endl; + + }//end input switch set baudrate + + returnStatus = sensor.setBaudRate(timeout,baudRate); + + if(returnStatus != B5T_STATUS_SUCCESS){ + cout << "Failed to set BaudRate with error code : " << returnStatus << endl; + break; + } + + cout << "BaudRate " << baudRate << " set successfully." << endl; + + break; + + case 10: // Get stb library status + + returnStatus = sensor.getSTBStatus(stbStatus); + + if(returnStatus != B5T_STATUS_SUCCESS){ + cout << "Failed to get stablization library status with error code : " << returnStatus << endl; + break; + } + + if(stbStatus == 0){ + cout << "STB Library status is : OFF" << endl; + }else if(stbStatus){ + cout << "STB Library status is : ON" << endl; + } + + break; + + case 11: // Set stb library status + cout << "*************************************************************" << endl; + cout << "*************************************************************" << endl; + cout << " STB Library Status " << endl; + cout << "*************************************************************" << endl; + cout << "*************************************************************" << endl; + cout << "1. Body Tracking " << endl; + cout << "2. Face Tracking " << endl; + cout << "3. Face Direction " << endl; + cout << "4. Age Estimation " << endl; + cout << "5. Gender Estimation " << endl; + cout << "6. Gaze Estimation " << endl; + cout << "7. Blink Estimation " << endl; + cout << "8. Expression Estimation " << endl; + cout << "9. Face Recognition " << endl; + cout << "10. All " << endl; + cout << "11. Disable " << endl; + cout << "*************************************************************" << endl; + ret = takeSelectedMultiChoiceInput("select values separated by spaces if multi choice : ",digitValues,1,11); + + if(ret != true){ + break; + } + stbStatus = 0; + for(i=0;i < digitValues.size();i++){ +#if DEBUG_PRINT + std::cout << "DEBUG: Processing values " << digitValues[i] << std::endl; +#endif + switch(digitValues[i]){ + case 1: // Body Tracking + stbStatus |= STB_FUNC_BD; + break; + case 2: // Face Tracking + stbStatus |= STB_FUNC_DT; + break; + case 3: // Face Direction + stbStatus |= STB_FUNC_PT; + break; + case 4: // Age Estimation + stbStatus |= STB_FUNC_AG; + break; + case 5: // Gender Estimation + stbStatus |= STB_FUNC_GN; + break; + case 6: // Gaze Estimation + stbStatus |= STB_FUNC_GZ; + break; + case 7: // Blink Estimation + stbStatus |= STB_FUNC_BL; + break; + case 8: // Expression Estimation + stbStatus |= STB_FUNC_EX; + break; + case 9: // Face Recognition + stbStatus |= STB_FUNC_FR; + break; + case 10: // All + stbStatus |= STB_FUNC_BD | STB_FUNC_DT | STB_FUNC_PT | STB_FUNC_AG | STB_FUNC_GN | STB_FUNC_GZ | STB_FUNC_BL | STB_FUNC_EX | STB_FUNC_FR; + break; + case 11: // Disable + stbStatus = 0; + break; + default: + cout << "Invalid choice. Please select from 1 to 11." << endl; + break; + }//end input switch set baudrate + }//End of for loop + returnStatus = sensor.setSTBStatus(stbStatus); + + if(returnStatus != B5T_STATUS_SUCCESS){ + cout << "Failed to set STB library status with error code : " << returnStatus << endl; + break; + } + + cout << "STB library status set successfully." << endl; + break; + case 12:// Get stb version + returnStatus = sensor.stbGetVersion(&majorVersion, &minorVersion); + if(returnStatus != B5T_STATUS_SUCCESS){ + break; + } + cout << "STB version:" << unsigned(majorVersion) << "." << unsigned(minorVersion) << endl; + break; + case 13:// Set stb maximum retry count(TR) + ret = takeDigitInput("Enter value of maximum retry count: ", maxRetryCount); + if(ret != true){ + break; + } + returnStatus = sensor.stbSetTrRetryCount(maxRetryCount); + if(returnStatus != B5T_STATUS_SUCCESS){ + cout << "Failed to set stb maximum retry count(TR)" << endl; + break; + } + cout << "Stb maximum retry count(TR) set successfully" << endl; + break; + case 14:// Get stb maximum retry count(TR) + returnStatus = sensor.stbGetTrRetryCount(&maxRetryCount); + if(returnStatus != B5T_STATUS_SUCCESS){ + cout << "Failed to get stb maximum retry count(TR)" << endl; + break; + } + cout << "Stb maximum retry count(TR) = " << maxRetryCount << endl; + break; + case 15:// Set stb rectangle steadiness parameter(TR) + ret = takeDigitInput("Enter value of Rectangle position steadiness parameter: ", posSteadinessParam); + if(ret != true){ + break; + } + ret = takeDigitInput("Enter value of Rectangle size steadiness parameter: ", sizeSteadinessParam); + if(ret != true){ + break; + } + returnStatus = sensor.stbSetTrSteadinessParam(posSteadinessParam,sizeSteadinessParam); + if(returnStatus != B5T_STATUS_SUCCESS){ + cout << "Failed to set stb rectangle steadiness parameter(TR)" << endl; + break; + } + cout << "Stb rectangle steadiness parameter(TR) set successfully." << endl; + break; + case 16:// Get stb rectangle steadiness parameter(TR) + returnStatus = sensor.stbGetTrSteadinessParam(&posSteadinessParam, &sizeSteadinessParam); + if(returnStatus != B5T_STATUS_SUCCESS){ + cout << "Failed to get stb rectangle steadiness parameter(TR)" << endl; + break; + } + cout << "Rectangle position steadiness = " << posSteadinessParam << endl; + cout << "Rectangle size steadiness = " << sizeSteadinessParam << endl; + break; + case 17:// Set stb estimation result stabilizing threshold value(PE) + ret = takeDigitInput("Enter threshold value : ", thresholdValue); + if(ret != true){ + break; + } + returnStatus = sensor.stbSetPeThresholdUse(thresholdValue); + if(returnStatus != B5T_STATUS_SUCCESS){ + cout << "Failed to set stb estimation result stabilizing threshold value(PE)" << endl; + break; + } + cout << "Stb estimation result stabilizing threshold value(PE) set successfully." << endl; + break; + case 18:// Get stb estimation result stabilizing threshold value(PE) + returnStatus = sensor.stbGetPeThresholdUse(&thresholdValue); + if(returnStatus != B5T_STATUS_SUCCESS){ + cout << "Failed to get stb estimation result stabilizing threshold value(PE)" << endl; + break; + } + cout << "Stb estimation result stabilizing threshold value(PE) =" << thresholdValue; + break; + case 19:// Set stb estimation result stabilizing angle(PE) + ret = takeDigitInput("Enter Minimum up-down angle of face: ",udAngleMin); + if(ret != true){ + break; + } + ret = takeDigitInput("Enter Maximum up-down angle of face: ",udAngleMax); + if(ret != true){ + break; + } + ret = takeDigitInput("Enter Minimum left-right angle of face: ",lrAngleMin); + if(ret != true){ + break; + } + ret = takeDigitInput("Enter Maximum left-right angle of face: ",lrAngleMax); + if(ret != true){ + break; + } + returnStatus = sensor.stbSetPeAngleUse(udAngleMin, udAngleMax, lrAngleMin, lrAngleMax); + if(returnStatus != B5T_STATUS_SUCCESS){ + cout << "Failed to set stb estimation result stabilizing angle(PE)" << endl; + break; + } + cout << "Stb estimation result stabilizing angle(PE) set successfully" << endl; + break; + case 20:// Get stb estimation result stabilizing angle(PE) + returnStatus = sensor.stbGetPeAngleUse(&udAngleMin,&udAngleMax, &lrAngleMin, &lrAngleMax); + if(returnStatus != B5T_STATUS_SUCCESS){ + cout << "Failed to get stb estimation result stabilizing angle(PE)" << endl; + break; + } + cout << "Minimum up-down angle of face = " << udAngleMin << endl; + cout << "Maximum up-down angle of face = " << udAngleMax << endl; + cout << "Minimum left-right angle of face = " << lrAngleMin << endl; + cout << "Maximum left-right angle of face = " << lrAngleMax << endl; + break; + case 21:// Set stb age/gender estimation complete frame count(PE) + ret = takeDigitInput("Enter frame count : ",frameCount); + if(ret != true){ + break; + } + returnStatus = sensor.stbSetPeCompleteFrameCount(frameCount); + if(returnStatus != B5T_STATUS_SUCCESS){ + cout << "Failed to set stb age/gender estimation complete frame count(PE)" << endl; + break; + } + cout << "Stb age/gender estimation complete frame count(PE) set successfully." << endl; + break; + case 22:// Get stb age/gender estimation complete frame count(PE) + returnStatus = sensor.stbGetPeCompleteFrameCount(&frameCount); + if(returnStatus != B5T_STATUS_SUCCESS){ + cout << "Failed to get stb age/gender estimation complete frame count(PE)" << endl; + break; + } + cout << "Stb age/gender estimation complete frame count(PE) = " << frameCount << endl; + break; + case 23:// Set stb recognition stabilizing threshold value(FR) + ret = takeDigitInput("Enter threshold value : ",thresholdValue); + if(ret != true){ + break; + } + returnStatus = sensor.stbSetFrThresholdUse(thresholdValue); + if(returnStatus != B5T_STATUS_SUCCESS){ + cout << "Failed to set stb recognition stabilizing threshold value(FR)" << endl; + break; + } + cout << "Stb recognition stabilizing threshold value(FR) set successfully." << endl; + break; + case 24:// Get stb recognition stabilizing threshold value(FR) + returnStatus = sensor.stbGetFrThresholdUse(&thresholdValue); + if(returnStatus != B5T_STATUS_SUCCESS){ + cout << "Failed to get stb recognition stabilizing threshold value(FR)" << endl; + break; + } + cout << "Threshold value = " << thresholdValue << endl; + break; + case 25:// Set stb recognition stabilizing angle(FR) + ret = takeDigitInput("Enter Minimum up-down angle of face: ",udAngleMin); + if(ret != true){ + break; + } + ret = takeDigitInput("Enter Maximum up-down angle of face: ",udAngleMax); + if(ret != true){ + break; + } + ret = takeDigitInput("Enter Minimum left-right angle of face: ",lrAngleMin); + if(ret != true){ + break; + } + ret = takeDigitInput("Enter Maximum left-right angle of face: ",lrAngleMax); + if(ret != true){ + break; + } + returnStatus = sensor.stbSetFrAngleUse(udAngleMin, udAngleMax, lrAngleMin, lrAngleMax); + if(returnStatus != B5T_STATUS_SUCCESS){ + cout << "Failed to set stb recognition stabilizing angle(FR)" << endl; + break; + } + cout << "Stb recognition stabilizing angle(FR) set successfully." << endl; + break; + case 26:// Get stb recognition stabilizing angle(FR) + returnStatus = sensor.stbGetFrAngleUse(&udAngleMin,&udAngleMax, &lrAngleMin, &lrAngleMax); + if(returnStatus != B5T_STATUS_SUCCESS){ + cout << "Failed to get stb estimation result stabilizing angle(PE)" << endl; + break; + } + cout << "Minimum up-down angle of face = " << udAngleMin << endl; + cout << "Maximum up-down angle of face = " << udAngleMax << endl; + cout << "Minimum left-right angle of face = " << lrAngleMin << endl; + cout << "Maximum left-right angle of face = " << lrAngleMax << endl; + break; + case 27:// Set stb recognition stabilizing complete frame count(FR) + ret = takeDigitInput("Enter frame count : ",frameCount); + if(ret != true){ + break; + } + returnStatus = sensor.stbSetFrCompleteFrameCount(frameCount); + if(returnStatus != B5T_STATUS_SUCCESS){ + cout << "Failed to set stb age/gender estimation complete frame count(PE)" << endl; + break; + } + cout << "Stb recognition stabilizing complete frame count(FR) set successfully." << endl; + break; + case 28:// Get stb recognition stabilizing complete frame count(FR) + returnStatus = sensor.stbGetFrCompleteFrameCount(&frameCount); + if(returnStatus != B5T_STATUS_SUCCESS){ + cout << "Failed to get stb recognition stabilizing complete frame count(FR)" << endl; + break; + } + cout << "Frame count = " << frameCount << endl; + break; + case 29:// Set stb recognition minimum account ratio(FR) + ret = takeDigitInput("Enter minimum account ratio : ", minRatio); + if(ret != true){ + break; + } + returnStatus = sensor.stbSetFrMinRatio(minRatio); + if(returnStatus != B5T_STATUS_SUCCESS){ + cout << "Failed to set stb recognition minimum account ratio(FR)" << endl; + break; + } + cout << "Stb recognition minimum account ratio(FR) set successfully" << endl; + break; + case 30:// Get stb recognition minimum account ratio(FR) + returnStatus = sensor.stbGetFrMinRatio(&minRatio); + if(returnStatus != B5T_STATUS_SUCCESS){ + cout << "Failed to get stb recognition minimum account ratio(FR)" << endl; + break; + } + cout << "Account ratio = " << minRatio << endl; + break; + case 31:// Clear stb frame result + returnStatus = sensor.stbClear(); + if(returnStatus != B5T_STATUS_SUCCESS){ + cout << "Failed to clear stb frame result" << endl; + break; + } + cout << "Stb frame result cleared successfully." << endl; + break; + }//end sub_choice switch + if(ret == true){ + takeEnterInput(); + } + }// end choice switch + }//End of for + + if(displaySamples){ + cout << "************************************************************\r\n"; + cout << "Please enter display time in ms \r\n"; + cout << "************************************************************\r\n"; + + try{ + isCinWaitState = 1; + // Update sleep time variable + cin.clear(); // reset badbit + cin.exceptions(std::ios_base::badbit); + cin >> sleep_time; + }catch (std::ios_base::failure& fail){ +#if DEBUG_PRINT + std::cout << "Exception called display time" << std::endl; +#endif + } + isCinWaitState = 0; + //exitFlag = 0; + //Check STB current status + stbStatus = 0; + returnStatus = sensor.getSTBStatus(stbStatus); + if((stbStatus & STB_FUNC_DT) && (stbStatus & STB_FUNC_PT)){ + stbStatus = stbStatus | STB_FUNC_AG | STB_FUNC_GN | STB_FUNC_GZ | STB_FUNC_BL | STB_FUNC_EX | STB_FUNC_FR; + } + if(returnStatus != B5T_STATUS_SUCCESS){ + cout << "Failed to get stablization library status with error code : " << returnStatus << endl; + //break; + } +#if DEBUG_PRINT + std::cout << "DEBUG: stbStatus = " << stbStatus << std::endl; +#endif + while(exitFlag < 2){ + if(exitFlag == 1){ + try{ + isCinWaitState = 1; + cin.exceptions(std::ios_base::badbit); + std::cin.ignore(1000,'\n'); + cin.clear(); + cout << "Press enter to continue Main menu or press ctrl + c to exit from application." << endl; + cin.get(); + exitFlag = 0; + }catch (std::ios_base::failure& fail){ +#if DEBUG_PRINT + std::cout << "Exception called" << std::endl; +#endif + } + isCinWaitState = 0; + break; + } + cout << "*************************************************************" << endl; + cout << "Detecting user. Please pay attention to camera, and wait for sometime." << endl; + cout << "*************************************************************" << endl; + cout << "Timestamp : "; + // Get date and time + gettimeofday(&value, NULL); + curtime=value.tv_sec; + strftime(dateAndTime,30,"[%F %T.",localtime(&curtime)); + cout << dateAndTime << std::setfill('0') << std::setw(3) << std::dec << value.tv_usec/1000 << "] " << endl; + cout << "*************************************************************" << endl; + + // Call exececute detection API based on STB init status + if(stbStatus == 0){ + returnStatus = sensor.executeDetection(timeout, execFlag, imageNum, hvcResult); + } + else{ + returnStatus = sensor.executeDetection(timeout, execFlag, imageNum, hvcResult, &outSTBFaceCount, &outSTBFaceResult, &outSTBBodyCount, &outSTBBodyResult); + INT32 i; + // Assign STB results + if(returnStatus == B5T_STATUS_SUCCESS){ +#if DEBUG_PRINT + std::cout << "DEBUG: outSTBBodyCount= " << outSTBBodyCount << std::endl; + std::cout << "DEBUG: outSTBFaceCount= " << outSTBFaceCount << std::endl; +#endif + if((execFlag & HVC_ACTIV_BODY_DETECTION) && (stbStatus & STB_FUNC_BD)){ + for(i = 0; i < outSTBBodyCount; i++ ){ + if ( hvcResult.bdResult.num <= i ) break; + nIndex = outSTBBodyResult[i].nDetectID; + hvcResult.bdResult.bdResult[nIndex].posX = (short)outSTBBodyResult[i].center.x; + hvcResult.bdResult.bdResult[nIndex].posY = (short)outSTBBodyResult[i].center.y; + hvcResult.bdResult.bdResult[nIndex].size = outSTBBodyResult[i].nSize; + } + } + for(i = 0; i < outSTBFaceCount; i++ ){ + if ( hvcResult.fdResult.num <= i ) break; + nIndex = outSTBFaceResult[i].nDetectID; +#if DEBUG_PRINT + std::cout << "DEBUG: outSTBFaceResult[i].nDetectID= " << outSTBFaceResult[i].nDetectID << std::endl; + std::cout << "DEBUG: outSTBFaceResult[i].nTrackingID= " << outSTBFaceResult[i].nTrackingID << std::endl; +#endif + if((execFlag & HVC_ACTIV_FACE_DETECTION) && (stbStatus & STB_FUNC_DT)){ +#if DEBUG_PRINT + std::cout << "outSTBFaceResult[i].center.x = " << outSTBFaceResult[i].center.x<< std::endl; + std::cout << "outSTBFaceResult[i].center.y = " << outSTBFaceResult[i].center.y<< std::endl; + std::cout << "outSTBFaceResult[i].nSize = " << outSTBFaceResult[i].nSize << std::endl; +#endif + hvcResult.fdResult.fcResult[nIndex].dtResult.posX = (short)outSTBFaceResult[i].center.x; + hvcResult.fdResult.fcResult[nIndex].dtResult.posY = (short)outSTBFaceResult[i].center.y; + hvcResult.fdResult.fcResult[nIndex].dtResult.size = outSTBFaceResult[i].nSize; + } + if((execFlag & HVC_ACTIV_FACE_DIRECTION) && (stbStatus & STB_FUNC_PT) && (outSTBFaceResult[i].direction.status >= STB_STATUS_COMPLETE)){ +#if DEBUG_PRINT + std::cout << "outSTBFaceResult[i].direction.yaw = "<< outSTBFaceResult[i].direction.yaw << std::endl; + std::cout << "outSTBFaceResult[i].direction.pitch = "<< outSTBFaceResult[i].direction.pitch << std::endl; + std::cout << "outSTBFaceResult[i].direction.roll = "<< outSTBFaceResult[i].direction.roll << std::endl; + std::cout << "outSTBFaceResult[i].direction.confidence = "<< outSTBFaceResult[i].direction.conf << std::endl; +#endif + hvcResult.fdResult.fcResult[nIndex].dirResult.yaw = outSTBFaceResult[i].direction.yaw; + hvcResult.fdResult.fcResult[nIndex].dirResult.pitch = outSTBFaceResult[i].direction.pitch; + hvcResult.fdResult.fcResult[nIndex].dirResult.roll = outSTBFaceResult[i].direction.roll; + hvcResult.fdResult.fcResult[nIndex].dirResult.confidence = outSTBFaceResult[i].direction.conf; + } + if((execFlag & HVC_ACTIV_AGE_ESTIMATION) && (stbStatus & STB_FUNC_AG) && (outSTBFaceResult[i].age.status >= STB_STATUS_COMPLETE)){ + hvcResult.fdResult.fcResult[nIndex].ageResult.confidence += 10000; // During + if ( outSTBFaceResult[i].age.status >= STB_STATUS_COMPLETE ) { +#if DEBUG_PRINT + std::cout << "outSTBFaceResult[i].age.value = " << outSTBFaceResult[i].age.value << std::endl; +#endif + hvcResult.fdResult.fcResult[nIndex].ageResult.age = outSTBFaceResult[i].age.value; + hvcResult.fdResult.fcResult[nIndex].ageResult.confidence += 10000; // Complete + } + } + if((execFlag & HVC_ACTIV_GENDER_ESTIMATION) && (stbStatus & STB_FUNC_GZ) && (outSTBFaceResult[i].gender.status >= STB_STATUS_COMPLETE)){ + hvcResult.fdResult.fcResult[nIndex].genderResult.confidence += 10000; // During + if ( outSTBFaceResult[i].gender.status >= STB_STATUS_COMPLETE ) { +#if DEBUG_PRINT + std::cout << "outSTBFaceResult[i].gender.value"<< outSTBFaceResult[i].gender.value <= 20000){ + cout << " Confidence : " << hvcResult.fdResult.fcResult[loop].ageResult.confidence - 20000 << " (*)"<< endl; + }else if(hvcResult.fdResult.fcResult[loop].ageResult.confidence >= 10000){ + cout << " Confidence : " << hvcResult.fdResult.fcResult[loop].ageResult.confidence - 10000 << " (-)"<< endl; + }else{ + cout << " Confidence : " << hvcResult.fdResult.fcResult[loop].ageResult.confidence << " (x)"<= 20000){ + cout << " Confidence : " << hvcResult.fdResult.fcResult[loop].genderResult.confidence - 20000 << " (*)"<< endl; + }else if(hvcResult.fdResult.fcResult[loop].genderResult.confidence >= 10000){ + cout << " Confidence : " << hvcResult.fdResult.fcResult[loop].genderResult.confidence - 10000 << " (-)" <= 20000){ + cout << " Confidence : " << hvcResult.fdResult.fcResult[loop].recognitionResult.confidence - 20000 << endl; + }else if(hvcResult.fdResult.fcResult[loop].recognitionResult.confidence >= 10000){ + cout << " Confidence : " << hvcResult.fdResult.fcResult[loop].recognitionResult.confidence - 10000 << endl; + }else{ + cout << " Confidence : " << hvcResult.fdResult.fcResult[loop].recognitionResult.confidence << endl; + } + }else{ + cout << " Confidence : " << hvcResult.fdResult.fcResult[loop].recognitionResult.confidence << endl; + } + } + } + }//face count for loop + usleep(sleep_time); + }//end while + + }//End of if displaySample + }while((exitFlag < 2)); + + return 0; + +}//end main + + diff --git a/src/b5t007001/CMakeLists.txt b/src/b5t007001/CMakeLists.txt new file mode 100644 index 00000000..74f39097 --- /dev/null +++ b/src/b5t007001/CMakeLists.txt @@ -0,0 +1,11 @@ +set (libname "b5t007001") +set (libdescription "B5T HVC Sensor") + +add_subdirectory(stblib) + +set (module_src ${libname}.cxx) +set (module_hpp ${libname}.hpp stblib/usr_include/STBAPI.h stblib/usr_include/STBCommonDef.h stblib/usr_include/STBTypedef.h) + +include_directories("stblib/src/include/") +include_directories("stblib/usr_include") +upm_module_init(stblib) diff --git a/src/b5t007001/b5t007001 b/src/b5t007001/b5t007001 new file mode 100644 index 0000000000000000000000000000000000000000..5f757ceb1864ed232be02196723cb13312cfdacf GIT binary patch literal 104924 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

dsym5X9pWO!mZ%#EIK`f?2U%;EBX7~e%w9={L| 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 DrA?+p literal 0 HcmV?d00001 diff --git a/src/b5t007001/b5t007001.cxx b/src/b5t007001/b5t007001.cxx new file mode 100644 index 00000000..f9a1eb27 --- /dev/null +++ b/src/b5t007001/b5t007001.cxx @@ -0,0 +1,1750 @@ +/* +* Author: Takashi Kakiuchi +* Copyright (c) 2019 Omron Electronic Components - Americas +* +* Permission is hereby granted, free of charge, to any person obtaining a copy of +* this software and associated documentation files (the "Software"), to deal in +* the Software without restriction, including without limitation the rights to +* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +* the Software, and to permit persons to whom the Software is furnished to do so, +* subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in all +* copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#include "b5t007001.hpp" +#include +#include + +using namespace upm; + +/** + * Command number + */ +#define HVC_COM_GET_VERSION (UINT8)0x00 +#define HVC_COM_SET_CAMERA_ANGLE (UINT8)0x01 +#define HVC_COM_GET_CAMERA_ANGLE (UINT8)0x02 +#define HVC_COM_EXECUTE (UINT8)0x03 +#define HVC_COM_EXECUTEEX (UINT8)0x04 +#define HVC_COM_SET_THRESHOLD (UINT8)0x05 +#define HVC_COM_GET_THRESHOLD (UINT8)0x06 +#define HVC_COM_SET_SIZE_RANGE (UINT8)0x07 +#define HVC_COM_GET_SIZE_RANGE (UINT8)0x08 +#define HVC_COM_SET_DETECTION_ANGLE (UINT8)0x09 +#define HVC_COM_GET_DETECTION_ANGLE (UINT8)0x0A +#define HVC_COM_SET_BAUDRATE (UINT8)0x0E +#define HVC_COM_REGISTRATION (UINT8)0x10 +#define HVC_COM_DELETE_DATA (UINT8)0x11 +#define HVC_COM_DELETE_USER (UINT8)0x12 +#define HVC_COM_DELETE_ALL (UINT8)0x13 +#define HVC_COM_GET_PERSON_DATA (UINT8)0x15 +#define HVC_COM_SAVE_ALBUM (UINT8)0x20 +#define HVC_COM_LOAD_ALBUM (UINT8)0x21 +#define HVC_COM_WRITE_ALBUM (UINT8)0x22 + +/** + * HVC frame buffer + */ +#define HVC_UART_FRAME_SIZE 32 + +/** + * RX ignore temp buffer size + */ +#define RX_IGNORE_TEMP_BUF_SIZE 10000 + +/** + * Debug print macro + */ +#define DEBUG_PRINT 0 + +/** + * Header for send signal data + */ +typedef enum { + SEND_HEAD_SYNCBYTE = 0, + SEND_HEAD_COMMANDNO, + SEND_HEAD_DATALENGTHLSB, + SEND_HEAD_DATALENGTHMSB, + SEND_HEAD_NUM +}SEND_HEADER; + +/** + * Header for receive signal data + */ +typedef enum { + RECEIVE_HEAD_SYNCBYTE = 0, + RECEIVE_HEAD_STATUS, + RECEIVE_HEAD_DATALENLL, + RECEIVE_HEAD_DATALENLM, + RECEIVE_HEAD_DATALENML, + RECEIVE_HEAD_DATALENMM, + RECEIVE_HEAD_NUM +}RECEIVE_HEADER; + + + +B5T007001::B5T007001(UINT8 uart,HVC_UART_BAUD_RATE_T inRate){ + //Create UART object + mUart = new mraa::Uart(uart); + mraa::Result returnValue; + + //Check for UART object created well or not + if(mUart == NULL){ + throw std::invalid_argument(std::string(__FUNCTION__) + ": Failed to initialize UART"); + } + //Update baudrate for connected UART + returnValue = mUart->setBaudRate(inRate); + if(returnValue != mraa::SUCCESS){ + throw std::runtime_error(std::string(__FUNCTION__) + + ": failed to set baudrate" ); + } + //STB default disabled + mStbStatus = 0; + + // Init STB Handle + mSTBHandle = NULL; + + //Set default timeout for UART + returnValue = mUart->setTimeout(UART_SETTING_TIMEOUT, UART_SETTING_TIMEOUT, UART_SETTING_TIMEOUT); + if(returnValue != mraa::SUCCESS){ + throw std::runtime_error(std::string(__FUNCTION__) + + ": failed to set timeout" ); + } +} + +B5T007001::~B5T007001() { + //Delete UART instance + delete mUart; + //Deinit SBI library + stbDeInit(); +} + +B5T_STATUS_T B5T007001::UARTSendData(INT32 inDataSize, const UINT8 *inData){ + INT32 outWriteCount; + + if(NULL == inData){ + return B5T_STATUS_INVALID_INPUT; + } + if(inData[0] == 0xFE){ + //Ignore all character on rx line + UARTRxIgnoreAllData(); + } + + //UART write + outWriteCount = mUart->write((const INT8*)inData, inDataSize); + + //Handle error cases + if(-1 == outWriteCount){ + std::cerr << std::string(__FUNCTION__) << ": Write failed with error code =" << outWriteCount << std::endl; + return B5T_STATUS_WRITE_FAILED; + } + else if(inDataSize != outWriteCount){ + std::cerr << std::string(__FUNCTION__) << ": Write failed with un-sufficient data write. Exepected count= " << inDataSize << "And Actual count " << outWriteCount << std::endl; + return B5T_STATUS_WRITE_FAILED; + } + return B5T_STATUS_SUCCESS; +} + +B5T_STATUS_T B5T007001::UARTReceiveData(INT32 inTimeOutTime, INT32 inDataSize, UINT8 *outResult, UINT8 isSyncRequired){ + INT32 tmpReadCount = 0; + INT32 totalReadCount = 0; + INT32 syncIndex=0, count=0; + totalReadCount = 0; + while(1){ + // Wait for data available on UART +#if DEBUG_PRINT + std::cout << "DEBUG: Before dataAvail" << std::endl; +#endif + if (!mUart->dataAvailable(inTimeOutTime)) + { + std::cerr << __FUNCTION__ << ": Execution interrupted or timeout occurs for response" << std::endl; + return B5T_STATUS_READ_TIMEOUT; + } + // Read data +#if DEBUG_PRINT + std::cout << "DEBUG: Befor read inDataSize =" << inDataSize << "totalReadCount =" << totalReadCount << std::endl; +#endif + tmpReadCount = mUart->read((INT8*)(outResult + totalReadCount), inDataSize - totalReadCount); + if(-1 == tmpReadCount){ + std::cerr << __FUNCTION__ << ": Read failed" << std::endl; + return B5T_STATUS_READ_FAILED; + } + totalReadCount = totalReadCount + tmpReadCount; + if((isSyncRequired == 1) && (outResult[0] != (UINT8)0xFE)){ + syncIndex = 0; + //Remove all bytes before syncbyte +#if DEBUG_PRINT + std::cout << "DEBUG: inDataSize = " << inDataSize << "tmpReadCount = " << tmpReadCount << "totalReadCount = " << totalReadCount << std::endl; + std::cerr << "DEBUG: re-read data as sync byte not received" << std::endl; +#endif + for(count = 0;count < totalReadCount; count++){ + if(outResult[count] == (UINT8)0xFE){ + syncIndex = count; + break; + } + } + if(syncIndex == 0){ +#if DEBUG_PRINT + std::cout << "DEBUG: Ignorring all read count = " << totalReadCount <read((INT8*)tmpBuf, RX_IGNORE_TEMP_BUF_SIZE); + if(-1 == tmpReadCount){ + break; + } +#if DEBUG_PRINT + std::cout << "DEBUG: Deleted data count = " << tmpReadCount << std::endl; +#endif + sleep(1); //Sleep for 1sec as need to receive all data + maxTry++; + } + return B5T_STATUS_SUCCESS; +} + +B5T_STATUS_T B5T007001::HVCSendCommand(UINT8 inCommandNo, INT32 inDataSize, UINT8 *inData){ + INT32 count; + B5T_STATUS_T ret; + UINT8 sendData[HVC_UART_FRAME_SIZE]; + + //Create header + sendData[SEND_HEAD_SYNCBYTE] = (UINT8)0xFE; + sendData[SEND_HEAD_COMMANDNO] = (UINT8)inCommandNo; + sendData[SEND_HEAD_DATALENGTHLSB] = (UINT8)(inDataSize&0xff); + sendData[SEND_HEAD_DATALENGTHMSB] = (UINT8)((inDataSize>>8)&0xff); + + for(count = 0; count < inDataSize; count++){ + sendData[SEND_HEAD_NUM + count] = inData[count]; + } + + //Send command signal + ret = UARTSendData(SEND_HEAD_NUM+inDataSize, sendData); + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code =" << ret << std::endl; + return ret; + } + return B5T_STATUS_SUCCESS; +} + +B5T_STATUS_T B5T007001::HVCReceiveData(INT32 inTimeOutTime, INT32 inDataSize, UINT8 *outResult){ + B5T_STATUS_T ret; + //Check for invalid read size + if(inDataSize <= 0){ + std::cerr << std::string(__FUNCTION__) << ": Invalid input" << std::endl; + return B5T_STATUS_INVALID_INPUT; + } + //Receive data + ret = UARTReceiveData(inTimeOutTime, inDataSize, outResult); + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code =" << ret << std::endl; + return ret; + } + return ret; +} + +B5T_STATUS_T B5T007001::HVCReceiveHeader(INT32 inTimeOutTime, INT32 &outDataSize){ + B5T_STATUS_T ret; + UINT8 headerData[HVC_UART_FRAME_SIZE]; + UINT8 outStatus= 0; + + // Get header part + ret = UARTReceiveData(inTimeOutTime, RECEIVE_HEAD_NUM, headerData, 1); + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return ret; + } + if((UINT8)0xFE != headerData[RECEIVE_HEAD_SYNCBYTE]){ + std::cerr << std::string(__FUNCTION__) << ": Header invalid data" << std::endl; + return B5T_STATUS_HEADER_INVALID; + } + + // Get data length + outDataSize = headerData[RECEIVE_HEAD_DATALENLL] + + (headerData[RECEIVE_HEAD_DATALENLM]<<8) + + (headerData[RECEIVE_HEAD_DATALENML]<<16) + + (headerData[RECEIVE_HEAD_DATALENMM]<<24); + + //Get command execution result + outStatus = headerData[RECEIVE_HEAD_STATUS]; + + //Check status code + if(0 != outStatus){ + std::cerr << std::string(__FUNCTION__) << ": failed with firmware response code =" << unsigned(outStatus) <>8)&0xff); + sendData[2] = (UINT8)(inDataID&0xff); + ret = HVCSendCommand(HVC_COM_REGISTRATION, sizeof(UINT8)*3, sendData); + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return ret; + } + + // Receive header + ret = HVCReceiveHeader(inTimeOutTime, size); + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return ret; + } + + // Receive data + if ( size >= (INT32)sizeof(UINT8)*4 ) { + ret = HVCReceiveData(inTimeOutTime, sizeof(UINT8)*4, recvData); + outImage.width = recvData[0] + (recvData[1]<<8); + outImage.height = recvData[2] + (recvData[3]<<8); + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return ret; + } + size -= sizeof(UINT8)*4; + } + + // Image data + if ( size >= (INT32)sizeof(UINT8)*64*64 ) { + ret = HVCReceiveData(inTimeOutTime, sizeof(UINT8)*64*64, outImage.image); + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return ret; + } + size -= sizeof(UINT8)*64*64; + } + return ret; +} + +B5T_STATUS_T B5T007001::getVersion(INT32 inTimeOutTime, HVC_VERSION &outVersion){ + B5T_STATUS_T ret; + INT32 size = 0; + if(inTimeOutTime < 0){ + inTimeOutTime = UART_SETTING_TIMEOUT; + } + //Send GetVersion command signal + ret = HVCSendCommand(HVC_COM_GET_VERSION, 0, NULL); + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return ret; + } + + //Receive header + ret = HVCReceiveHeader(inTimeOutTime, size); + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return ret; + } + + if(size > (INT32)sizeof(HVC_VERSION) ) { + size = sizeof(HVC_VERSION); + } + + // Receive data + ret = HVCReceiveData(inTimeOutTime, size, (UINT8*)&outVersion); + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return ret; + } + + return ret; +} + +B5T_STATUS_T B5T007001::setCameraAngle(INT32 inTimeOutTime, UINT8 inAngleNo){ + B5T_STATUS_T ret; + INT32 size = 0; + UINT8 sendData[HVC_UART_FRAME_SIZE]; + if(inTimeOutTime < 0){ + inTimeOutTime = UART_SETTING_TIMEOUT; + } + + sendData[0] = (UINT8)(inAngleNo&0xff); + //Send SetCameraAngle command signal + ret = HVCSendCommand(HVC_COM_SET_CAMERA_ANGLE, sizeof(UINT8), sendData); + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return ret; + } + + //Receive header + ret = HVCReceiveHeader(inTimeOutTime, size); + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return ret; + } + + return ret; +} + +B5T_STATUS_T B5T007001::getCameraAngle(INT32 inTimeOutTime, UINT8 &outAngleNo){ + B5T_STATUS_T ret; + INT32 size = 0; + UINT8 recvData[HVC_UART_FRAME_SIZE]; + if(inTimeOutTime < 0){ + inTimeOutTime = UART_SETTING_TIMEOUT; + } + + //Send GetCameraAngle command signal + ret = HVCSendCommand(HVC_COM_GET_CAMERA_ANGLE, 0, NULL); + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return ret; + } + + //Receive header + ret = HVCReceiveHeader(inTimeOutTime, size); + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return ret; + } + + if ( size > (INT32)sizeof(UINT8) ) { + size = sizeof(UINT8); + } + + //Receive data + ret = HVCReceiveData(inTimeOutTime, size, recvData); + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return ret; + } + outAngleNo = recvData[0]; + + return ret; +} + +B5T_STATUS_T B5T007001::executeDetection(INT32 inTimeOutTime, INT32 inExec, INT32 inImageInfo, HVC_RESULT &outHVCResult,INT32 *outSTBFaceCount, STB_FACE **outSTBFaceResult,INT32 *outSTBBodyCount,STB_BODY **outSTBBodyResult){ + B5T_STATUS_T ret=B5T_STATUS_SUCCESS; +#if DEBUG_PRINT + std::cout << "DEBUG: mStbStatus = " << mStbStatus << std::endl; +#endif + if(inTimeOutTime < 0){ + inTimeOutTime = UART_EXECUTE_TIMEOUT; + } + ret = executeDetection(inTimeOutTime, inExec, inImageInfo, outHVCResult); + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return ret; + } + if(mStbStatus == 0){ + return ret; + } +#if DEBUG_PRINT + std::cout << "DEBUG: calling STB " << std::endl; +#endif + ret = stbExec(inExec, outHVCResult, outSTBFaceCount, outSTBFaceResult, outSTBBodyCount, outSTBBodyResult); +#if DEBUG_PRINT + std::cout << "DEBUG: calling STB retStatus" << ret << std::endl; +#endif + return ret; +} + +B5T_STATUS_T B5T007001::executeDetection(INT32 inTimeOutTime, INT32 inExec, INT32 inImageInfo, HVC_RESULT &outHVCResult){ + B5T_STATUS_T ret=B5T_STATUS_SUCCESS; + INT32 i, j; + INT32 size = 0; + UINT8 sendData[HVC_UART_FRAME_SIZE]; + UINT8 recvData[HVC_UART_FRAME_SIZE]; + if(inTimeOutTime < 0){ + inTimeOutTime = UART_EXECUTE_TIMEOUT; + } + + // Send Execute command signal + sendData[0] = (UINT8)(inExec&0xff); + sendData[1] = (UINT8)((inExec>>8)&0xff); + sendData[2] = (UINT8)(inImageInfo&0xff); + ret = HVCSendCommand(HVC_COM_EXECUTEEX, sizeof(UINT8)*3, sendData); + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return ret; + } + + // Receive header + ret = HVCReceiveHeader(inTimeOutTime, size); + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return ret; + } + + // Receive result data + if ( size >= (INT32)sizeof(UINT8)*4 ) { + outHVCResult.executedFunc = inExec; + ret = HVCReceiveData(inTimeOutTime, sizeof(UINT8)*4, recvData); + outHVCResult.bdResult.num = recvData[0]; + outHVCResult.hdResult.num = recvData[1]; + outHVCResult.fdResult.num = recvData[2]; + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return ret; + } + size -= sizeof(UINT8)*4; + } + + // Get Human Body Detection result + for(i = 0; i < outHVCResult.bdResult.num; i++){ + if ( size >= (INT32)sizeof(UINT8)*8 ) { + ret = HVCReceiveData(inTimeOutTime, sizeof(UINT8)*8, recvData); + outHVCResult.bdResult.bdResult[i].posX = (short)(recvData[0] + (recvData[1]<<8)); + outHVCResult.bdResult.bdResult[i].posY = (short)(recvData[2] + (recvData[3]<<8)); + outHVCResult.bdResult.bdResult[i].size = (short)(recvData[4] + (recvData[5]<<8)); + outHVCResult.bdResult.bdResult[i].confidence = (short)(recvData[6] + (recvData[7]<<8)); + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return ret; + } + size -= sizeof(UINT8)*8; + } + } + + // Get Hand Detection result + for(i = 0; i < outHVCResult.hdResult.num; i++){ + if ( size >= (INT32)sizeof(UINT8)*8 ) { + ret = HVCReceiveData(inTimeOutTime, sizeof(UINT8)*8, recvData); + outHVCResult.hdResult.hdResult[i].posX = (short)(recvData[0] + (recvData[1]<<8)); + outHVCResult.hdResult.hdResult[i].posY = (short)(recvData[2] + (recvData[3]<<8)); + outHVCResult.hdResult.hdResult[i].size = (short)(recvData[4] + (recvData[5]<<8)); + outHVCResult.hdResult.hdResult[i].confidence = (short)(recvData[6] + (recvData[7]<<8)); + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return ret; + } + size -= sizeof(UINT8)*8; + } + } + + // Face-related results + for(i = 0; i < outHVCResult.fdResult.num; i++){ + // Face Detection result + if(0 != (outHVCResult.executedFunc & HVC_ACTIV_FACE_DETECTION)){ + if ( size >= (INT32)sizeof(UINT8)*8 ) { + ret = HVCReceiveData(inTimeOutTime, sizeof(UINT8)*8, recvData); + outHVCResult.fdResult.fcResult[i].dtResult.posX = (short)(recvData[0] + (recvData[1]<<8)); + outHVCResult.fdResult.fcResult[i].dtResult.posY = (short)(recvData[2] + (recvData[3]<<8)); + outHVCResult.fdResult.fcResult[i].dtResult.size = (short)(recvData[4] + (recvData[5]<<8)); + outHVCResult.fdResult.fcResult[i].dtResult.confidence = (short)(recvData[6] + (recvData[7]<<8)); + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return ret; + } + size -= sizeof(UINT8)*8; + } + } + + // Face direction + if(0 != (outHVCResult.executedFunc & HVC_ACTIV_FACE_DIRECTION)){ + if ( size >= (INT32)sizeof(UINT8)*8 ) { + ret = HVCReceiveData(inTimeOutTime, sizeof(UINT8)*8, recvData); + outHVCResult.fdResult.fcResult[i].dirResult.yaw = (short)(recvData[0] + (recvData[1]<<8)); + outHVCResult.fdResult.fcResult[i].dirResult.pitch = (short)(recvData[2] + (recvData[3]<<8)); + outHVCResult.fdResult.fcResult[i].dirResult.roll = (short)(recvData[4] + (recvData[5]<<8)); + outHVCResult.fdResult.fcResult[i].dirResult.confidence = (short)(recvData[6] + (recvData[7]<<8)); + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return ret; + } + size -= sizeof(UINT8)*8; + } + } + + // Age + if(0 != (outHVCResult.executedFunc & HVC_ACTIV_AGE_ESTIMATION)){ + if ( size >= (INT32)sizeof(UINT8)*3 ) { + ret = HVCReceiveData(inTimeOutTime, sizeof(UINT8)*3, recvData); + outHVCResult.fdResult.fcResult[i].ageResult.age = (char)(recvData[0]); + outHVCResult.fdResult.fcResult[i].ageResult.confidence = (short)(recvData[1] + (recvData[2]<<8)); + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return ret; + } + size -= sizeof(UINT8)*3; + } + } + + // Gender + if(0 != (outHVCResult.executedFunc & HVC_ACTIV_GENDER_ESTIMATION)){ + if ( size >= (INT32)sizeof(UINT8)*3 ) { + ret = HVCReceiveData(inTimeOutTime, sizeof(UINT8)*3, recvData); + outHVCResult.fdResult.fcResult[i].genderResult.gender = (char)(recvData[0]); + outHVCResult.fdResult.fcResult[i].genderResult.confidence = (short)(recvData[1] + (recvData[2]<<8)); + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return ret; + } + size -= sizeof(UINT8)*3; + } + } + + // Gaze + if(0 != (outHVCResult.executedFunc & HVC_ACTIV_GAZE_ESTIMATION)){ + if ( size >= (INT32)sizeof(UINT8)*2 ) { + ret = HVCReceiveData(inTimeOutTime, sizeof(UINT8)*2, recvData); + outHVCResult.fdResult.fcResult[i].gazeResult.gazeLR = (char)(recvData[0]); + outHVCResult.fdResult.fcResult[i].gazeResult.gazeUD = (char)(recvData[1]); + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return ret; + } + size -= sizeof(UINT8)*2; + } + } + + // Blink + if(0 != (outHVCResult.executedFunc & HVC_ACTIV_BLINK_ESTIMATION)){ + if ( size >= (INT32)sizeof(UINT8)*4 ) { + ret = HVCReceiveData(inTimeOutTime, sizeof(UINT8)*4, recvData); + outHVCResult.fdResult.fcResult[i].blinkResult.ratioL = (short)(recvData[0] + (recvData[1]<<8)); + outHVCResult.fdResult.fcResult[i].blinkResult.ratioR = (short)(recvData[2] + (recvData[3]<<8)); + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return ret; + } + size -= sizeof(UINT8)*4; + } + } + + // Expression + if(0 != (outHVCResult.executedFunc & HVC_ACTIV_EXPRESSION_ESTIMATION)){ + if ( size >= (INT32)sizeof(UINT8)*6 ) { + ret = HVCReceiveData(inTimeOutTime, sizeof(UINT8)*6, recvData); + outHVCResult.fdResult.fcResult[i].expressionResult.topExpression = -128; + outHVCResult.fdResult.fcResult[i].expressionResult.topScore = -128; + for(j = 0; j < 5; j++){ + outHVCResult.fdResult.fcResult[i].expressionResult.score[j] = (char)(recvData[j]); + if(outHVCResult.fdResult.fcResult[i].expressionResult.topScore < outHVCResult.fdResult.fcResult[i].expressionResult.score[j]){ + outHVCResult.fdResult.fcResult[i].expressionResult.topScore = outHVCResult.fdResult.fcResult[i].expressionResult.score[j]; + outHVCResult.fdResult.fcResult[i].expressionResult.topExpression = j + 1; + } + } + outHVCResult.fdResult.fcResult[i].expressionResult.degree = (char)(recvData[5]); + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return ret; + } + size -= sizeof(UINT8)*6; + } + } + + // Face Recognition + if(0 != (outHVCResult.executedFunc & HVC_ACTIV_FACE_RECOGNITION)){ + if ( size >= (INT32)sizeof(UINT8)*4 ) { + ret = HVCReceiveData(inTimeOutTime, sizeof(UINT8)*4, recvData); + outHVCResult.fdResult.fcResult[i].recognitionResult.uid = (short)(recvData[0] + (recvData[1]<<8)); + outHVCResult.fdResult.fcResult[i].recognitionResult.confidence = (short)(recvData[2] + (recvData[3]<<8)); + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return ret; + } + size -= sizeof(UINT8)*4; + } + } + } + + if(HVC_EXECUTE_IMAGE_NONE != inImageInfo){ + // Image data + if ( size >= (INT32)sizeof(UINT8)*4 ) { + ret = HVCReceiveData(inTimeOutTime, sizeof(UINT8)*4, recvData); + outHVCResult.image.width = (short)(recvData[0] + (recvData[1]<<8)); + outHVCResult.image.height = (short)(recvData[2] + (recvData[3]<<8)); + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return ret; + } + size -= sizeof(UINT8)*4; + } + + if ( size >= (INT32)sizeof(UINT8)*outHVCResult.image.width*outHVCResult.image.height ) { + ret = HVCReceiveData(inTimeOutTime, sizeof(UINT8)*outHVCResult.image.width*outHVCResult.image.height, outHVCResult.image.image); + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return ret; + } + size -= sizeof(UINT8)*outHVCResult.image.width*outHVCResult.image.height; + } + } + return ret; +} + +B5T_STATUS_T B5T007001::setThreshold(INT32 inTimeOutTime, HVC_THRESHOLD inThreshold){ + B5T_STATUS_T ret; + INT32 size = 0; + UINT8 sendData[HVC_UART_FRAME_SIZE]; + if(inTimeOutTime < 0){ + inTimeOutTime = UART_SETTING_TIMEOUT; + } + + sendData[0] = (UINT8)(inThreshold.bdThreshold&0xff); + sendData[1] = (UINT8)((inThreshold.bdThreshold>>8)&0xff); + sendData[2] = (UINT8)(inThreshold.hdThreshold&0xff); + sendData[3] = (UINT8)((inThreshold.hdThreshold>>8)&0xff); + sendData[4] = (UINT8)(inThreshold.dtThreshold&0xff); + sendData[5] = (UINT8)((inThreshold.dtThreshold>>8)&0xff); + sendData[6] = (UINT8)(inThreshold.rsThreshold&0xff); + sendData[7] = (UINT8)((inThreshold.rsThreshold>>8)&0xff); + + //Send SetThreshold command signal + ret = HVCSendCommand(HVC_COM_SET_THRESHOLD, sizeof(UINT8)*8, sendData); + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return ret; + } + + //Receive header + ret = HVCReceiveHeader(inTimeOutTime, size); + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return ret; + } + + return ret; +} + +B5T_STATUS_T B5T007001::getThreshold(INT32 inTimeOutTime, HVC_THRESHOLD &outThreshold){ + B5T_STATUS_T ret; + INT32 size = 0; + UINT8 recvData[HVC_UART_FRAME_SIZE]; + if(inTimeOutTime < 0){ + inTimeOutTime = UART_SETTING_TIMEOUT; + } + + //Send GetThreshold command signal + ret = HVCSendCommand(HVC_COM_GET_THRESHOLD, 0, NULL); + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return ret; + } + + //Receive header + ret = HVCReceiveHeader(inTimeOutTime, size); + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return ret; + } + + if ( size > (INT32)sizeof(UINT8)*8 ) { + size = sizeof(UINT8)*8; + } + + //Receive data + ret = HVCReceiveData(inTimeOutTime, size, recvData); + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return ret; + } + outThreshold.bdThreshold = recvData[0] + (recvData[1]<<8); + outThreshold.hdThreshold = recvData[2] + (recvData[3]<<8); + outThreshold.dtThreshold = recvData[4] + (recvData[5]<<8); + outThreshold.rsThreshold = recvData[6] + (recvData[7]<<8); + + return ret; +} + +B5T_STATUS_T B5T007001::setSizeRange(INT32 inTimeOutTime, HVC_SIZERANGE inSizeRange){ + B5T_STATUS_T ret; + INT32 size = 0; + UINT8 sendData[HVC_UART_FRAME_SIZE]; + if(inTimeOutTime < 0){ + inTimeOutTime = UART_SETTING_TIMEOUT; + } + + sendData[0] = (UINT8)(inSizeRange.bdMinSize&0xff); + sendData[1] = (UINT8)((inSizeRange.bdMinSize>>8)&0xff); + sendData[2] = (UINT8)(inSizeRange.bdMaxSize&0xff); + sendData[3] = (UINT8)((inSizeRange.bdMaxSize>>8)&0xff); + sendData[4] = (UINT8)(inSizeRange.hdMinSize&0xff); + sendData[5] = (UINT8)((inSizeRange.hdMinSize>>8)&0xff); + sendData[6] = (UINT8)(inSizeRange.hdMaxSize&0xff); + sendData[7] = (UINT8)((inSizeRange.hdMaxSize>>8)&0xff); + sendData[8] = (UINT8)(inSizeRange.dtMinSize&0xff); + sendData[9] = (UINT8)((inSizeRange.dtMinSize>>8)&0xff); + sendData[10] = (UINT8)(inSizeRange.dtMaxSize&0xff); + sendData[11] = (UINT8)((inSizeRange.dtMaxSize>>8)&0xff); + //Send SetSizeRange command signal + ret = HVCSendCommand(HVC_COM_SET_SIZE_RANGE, sizeof(UINT8)*12, sendData); + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return ret; + } + + //Receive header + ret = HVCReceiveHeader(inTimeOutTime, size); + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return ret; + } + + return ret; +} + +B5T_STATUS_T B5T007001::getSizeRange(INT32 inTimeOutTime, HVC_SIZERANGE &outSizeRange){ + B5T_STATUS_T ret; + INT32 size = 0; + UINT8 recvData[HVC_UART_FRAME_SIZE]; + if(inTimeOutTime < 0){ + inTimeOutTime = UART_SETTING_TIMEOUT; + } + + //Send GetSizeRange command signal + ret = HVCSendCommand(HVC_COM_GET_SIZE_RANGE, 0, NULL); + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return ret; + } + + //Receive header + ret = HVCReceiveHeader(inTimeOutTime, size); + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return ret; + } + + if ( size > (INT32)sizeof(UINT8)*12 ) { + size = sizeof(UINT8)*12; + } + + //Receive data + ret = HVCReceiveData(inTimeOutTime, size, recvData); + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return ret; + } + outSizeRange.bdMinSize = recvData[0] + (recvData[1]<<8); + outSizeRange.bdMaxSize = recvData[2] + (recvData[3]<<8); + outSizeRange.hdMinSize = recvData[4] + (recvData[5]<<8); + outSizeRange.hdMaxSize = recvData[6] + (recvData[7]<<8); + outSizeRange.dtMinSize = recvData[8] + (recvData[9]<<8); + outSizeRange.dtMaxSize = recvData[10] + (recvData[11]<<8); + + return ret; +} + +B5T_STATUS_T B5T007001::setFaceDetectionAngle(INT32 inTimeOutTime, INT32 inPose, INT32 inAngle){ + B5T_STATUS_T ret; + INT32 size = 0; + UINT8 sendData[HVC_UART_FRAME_SIZE]; + + if(inTimeOutTime < 0){ + inTimeOutTime = UART_SETTING_TIMEOUT; + } + + sendData[0] = (UINT8)(inPose&0xff); + sendData[1] = (UINT8)(inAngle&0xff); + // Send SetFaceDetectionAngle command signal + ret = HVCSendCommand(HVC_COM_SET_DETECTION_ANGLE, sizeof(UINT8)*2, sendData); + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return ret; + } + + // Receive header + ret = HVCReceiveHeader(inTimeOutTime, size); + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return ret; + } + + return ret; +} + +B5T_STATUS_T B5T007001::getFaceDetectionAngle(INT32 inTimeOutTime, INT32 &outPose, INT32 &outAngle){ + B5T_STATUS_T ret; + INT32 size = 0; + UINT8 recvData[HVC_UART_FRAME_SIZE]; + if(inTimeOutTime < 0){ + inTimeOutTime = UART_SETTING_TIMEOUT; + } + + // Send GetFaceDetectionAngle signal command + ret = HVCSendCommand(HVC_COM_GET_DETECTION_ANGLE, 0, NULL); + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return ret; + } + + // Receive header + ret = HVCReceiveHeader(inTimeOutTime, size); + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return ret; + } + + if ( size > (INT32)sizeof(UINT8)*2 ) { + size = sizeof(UINT8)*2; + } + + // Receive data + ret = HVCReceiveData(inTimeOutTime, size, recvData); + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return ret; + } + outPose = recvData[0]; + outAngle = recvData[1]; + + return ret; +} + +B5T_STATUS_T B5T007001::setBaudRate(INT32 inTimeOutTime, HVC_UART_BAUD_RATE_T inRate){ + B5T_STATUS_T ret; + INT32 size = 0; + UINT8 sendData[HVC_UART_FRAME_SIZE]; + mraa::Result returnValue; + if(inTimeOutTime < 0){ + inTimeOutTime = UART_SETTING_TIMEOUT; + } + + switch(inRate){ + case HVC_UART_BAUD_RATE_9600: + sendData[0] = (UINT8)(0x00); + break; + case HVC_UART_BAUD_RATE_38400: + sendData[0] = (UINT8)(0x01); + break; + case HVC_UART_BAUD_RATE_115200: + sendData[0] = (UINT8)(0x02); + break; + case HVC_UART_BAUD_RATE_230400: + sendData[0] = (UINT8)(0x03); + break; + case HVC_UART_BAUD_RATE_460800: + sendData[0] = (UINT8)(0x04); + break; + case HVC_UART_BAUD_RATE_921600: + sendData[0] = (UINT8)(0x05); + break; + default: + return B5T_STATUS_INVALID_INPUT; + } + + //Send SetBaudRate command signal + ret = HVCSendCommand(HVC_COM_SET_BAUDRATE, sizeof(UINT8), sendData); + if(ret != B5T_STATUS_SUCCESS){ + throw std::runtime_error(std::string(__FUNCTION__) + + ": failed to set baudrate" ); + } + + //Receive header + ret = HVCReceiveHeader(inTimeOutTime, size); + if(ret != B5T_STATUS_SUCCESS){ + throw std::runtime_error(std::string(__FUNCTION__) + + ": failed to set baudrate" ); + } + //Update baudrate for connected UART + returnValue = mUart->setBaudRate(inRate); + if(returnValue != mraa::SUCCESS){ + throw std::runtime_error(std::string(__FUNCTION__) + + ": failed to set baudrate" ); + } + return ret; +} + +B5T_STATUS_T B5T007001::getRegisteredUsersInfo(INT32 inTimeOutTime, std::vector &outUserList, std::vector &outDataList){ + B5T_STATUS_T ret; + UINT8 userID = 0; + UINT8 dataID = 0; + if(inTimeOutTime < 0){ + inTimeOutTime = UART_SETTING_TIMEOUT; + } + + //Clear output data if exist + outUserList.clear(); + outDataList.clear(); + + for(userID=0; userID < MAX_USER_NUM; userID++){ + ret = getUserData(inTimeOutTime, userID, dataID); + //printf("DEBUG: HVCGetUserData userID=(%d) dataID=(%d) status = (%d)\n", userID, dataID); + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return ret; + } + if(dataID != 0){ + //printf("Adding userId = (%d) dataId = (%d)\n", userID, dataID); + outUserList.push_back(userID); + outDataList.push_back(dataID); + } + } + return B5T_STATUS_SUCCESS; +} + +B5T_STATUS_T B5T007001::addUser(INT32 inTimeOutTime, UINT8 inUserID, UINT8 inDataID, HVC_IMAGE &outImage){ + B5T_STATUS_T ret; + UINT8 tmpDataID; + + if(inTimeOutTime < 0){ + inTimeOutTime = UART_SETTING_TIMEOUT; + } + //Add or Modify user + ret = HVCRegistration(inTimeOutTime, inUserID, inDataID, outImage); + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return ret; + } + //Check for successful user add + ret = getUserData(inTimeOutTime, inUserID, tmpDataID); + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return ret; + } + + if(!(tmpDataID & (1 << inDataID))){ + std::cerr << std::string(__FUNCTION__) << ": failed for userID = " << inUserID << "And dataID = " << inDataID << std::endl; + return B5T_STATUS_USER_ADD_FAILED; + } + return ret; +} + +B5T_STATUS_T B5T007001::getUserData(INT32 inTimeOutTime, UINT8 inUserID, UINT8 &outDataNo){ + B5T_STATUS_T ret; + INT32 size = 0; + UINT8 sendData[8]; + UINT8 recvData[8]; + if(inTimeOutTime < 0){ + inTimeOutTime = UART_SETTING_TIMEOUT; + } + + //Send Get Registration Info signal command + sendData[0] = (UINT8)(inUserID&0xff); + sendData[1] = (UINT8)((inUserID>>8)&0xff); + ret = HVCSendCommand(HVC_COM_GET_PERSON_DATA, sizeof(UINT8)*2, sendData); + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return ret; + } + //Receive header + ret = HVCReceiveHeader(inTimeOutTime, size); + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return ret; + } + if (size > (INT32)sizeof(UINT8)*2 ) { + size = sizeof(UINT8)*2; + } + + // Receive data + ret = HVCReceiveData(inTimeOutTime, size, recvData); + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return ret; + } + outDataNo = recvData[0] + (recvData[1]<<8); + return ret; + +} +B5T_STATUS_T B5T007001::saveAlbumToHost(INT32 inTimeOutTime, UINT8 *outAlbumData, INT32 &outAlbumDataSize){ + B5T_STATUS_T ret; + INT32 size = 0; + + UINT8 *tmpAlbumData = NULL;; + if(NULL == outAlbumData){ + std::cerr << std::string(__FUNCTION__) << ": Invalid input" << std::endl; + return B5T_STATUS_INVALID_INPUT; + } + if(inTimeOutTime < 0){ + inTimeOutTime = UART_SAVE_ALBUM_TIMEOUT; + } + //Send Save Album signal command + ret = HVCSendCommand(HVC_COM_SAVE_ALBUM, 0, NULL); + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return ret; + } + + ret = HVCReceiveHeader(inTimeOutTime, size); + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return ret; + } + + if ( size >= (INT32)sizeof(UINT8)*8 + HVC_ALBUM_SIZE_MIN ) { + outAlbumDataSize = size; + tmpAlbumData = outAlbumData; + + do{ + ret = HVCReceiveData(inTimeOutTime, sizeof(UINT8)*4, tmpAlbumData); + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return ret; + } + tmpAlbumData += sizeof(UINT8)*4; + + ret = HVCReceiveData(inTimeOutTime, sizeof(UINT8)*4, tmpAlbumData); + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return ret; + } + tmpAlbumData += sizeof(UINT8)*4; + + ret = HVCReceiveData(inTimeOutTime, size - sizeof(UINT8)*8, tmpAlbumData); + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return ret; + } + }while(0); + } + return ret; +} + +B5T_STATUS_T B5T007001::loadAlbumFromHost(INT32 inTimeOutTime, UINT8 *inAlbumData, INT32 inAlbumDataSize){ + B5T_STATUS_T ret; + INT32 i; + INT32 size = 0; + + if((NULL == inAlbumData) || (0 == inAlbumDataSize)){ + std::cerr << std::string(__FUNCTION__) << ": Invalid input" << std::endl; + return B5T_STATUS_INVALID_INPUT; + } + if(inTimeOutTime < 0){ + inTimeOutTime = UART_LOAD_ALBUM_TIMEOUT; + } + UINT8 *pSendData = NULL; + pSendData = (UINT8*)malloc(SEND_HEAD_NUM + 4 + inAlbumDataSize); + + // Send Save Album signal command + // Create header + pSendData[SEND_HEAD_SYNCBYTE] = (UINT8)0xFE; + pSendData[SEND_HEAD_COMMANDNO] = (UINT8)HVC_COM_LOAD_ALBUM; + pSendData[SEND_HEAD_DATALENGTHLSB] = (UINT8)4; + pSendData[SEND_HEAD_DATALENGTHMSB] = (UINT8)0; + + pSendData[SEND_HEAD_NUM + 0] = (UINT8)(inAlbumDataSize & 0x000000ff); + pSendData[SEND_HEAD_NUM + 1] = (UINT8)((inAlbumDataSize >> 8) & 0x000000ff); + pSendData[SEND_HEAD_NUM + 2] = (UINT8)((inAlbumDataSize >> 16) & 0x000000ff); + pSendData[SEND_HEAD_NUM + 3] = (UINT8)((inAlbumDataSize >> 24) & 0x000000ff); + + for(i = 0; i < inAlbumDataSize; i++){ + pSendData[SEND_HEAD_NUM + 4 + i] = inAlbumData[i]; + } + // Send command signal + ret = UARTSendData(SEND_HEAD_NUM+4+inAlbumDataSize, pSendData); + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code =" << ret << std::endl; + free(pSendData); + return ret; + } + free(pSendData); + // Receive header + ret = HVCReceiveHeader(inTimeOutTime, size); + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return ret; + } + + return ret; +} + +B5T_STATUS_T B5T007001::saveAlbumToROM(INT32 inTimeOutTime){ + B5T_STATUS_T ret; + INT32 size = 0; + if(inTimeOutTime < 0){ + inTimeOutTime = UART_SAVE_ALBUM_ROM_TIMEOUT; + } + + //Send Write Album signal command + ret = HVCSendCommand(HVC_COM_WRITE_ALBUM, 0, NULL); + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return ret; + } + + //Receive header + ret = HVCReceiveHeader(inTimeOutTime, size); + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return ret; + } + + return ret; +} + +B5T_STATUS_T B5T007001::deleteUserData(INT32 inTimeOutTime, UINT8 inUserID, UINT8 inDataID){ + B5T_STATUS_T ret; + INT32 size = 0; + UINT8 sendData[HVC_UART_FRAME_SIZE]; + if(inTimeOutTime < 0){ + inTimeOutTime = UART_SETTING_TIMEOUT; + } + + // Send Delete Data signal command + sendData[0] = (UINT8)(inUserID&0xff); + sendData[1] = (UINT8)((inUserID>>8)&0xff); + sendData[2] = (UINT8)(inDataID&0xff); + ret = HVCSendCommand(HVC_COM_DELETE_DATA, sizeof(UINT8)*3, sendData); + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return ret; + } + + //Receive header + ret = HVCReceiveHeader(inTimeOutTime, size); + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return ret; + } + return ret; +} + +B5T_STATUS_T B5T007001::deleteUser(INT32 inTimeOutTime, UINT8 inUserID){ + B5T_STATUS_T ret; + INT32 size = 0; + UINT8 sendData[HVC_UART_FRAME_SIZE]; + if(inTimeOutTime < 0){ + inTimeOutTime = UART_SETTING_TIMEOUT; + } + + // Send Delete User signal command + sendData[0] = (UINT8)(inUserID&0xff); + sendData[1] = (UINT8)((inUserID>>8)&0xff); + ret = HVCSendCommand(HVC_COM_DELETE_USER, sizeof(UINT8)*2, sendData); + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return ret; + } + + // Receive header + ret = HVCReceiveHeader(inTimeOutTime, size); + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return ret; + } + return ret; +} + +B5T_STATUS_T B5T007001::deleteUserAll(INT32 inTimeOutTime){ + B5T_STATUS_T ret; + INT32 size = 0; + if(inTimeOutTime < 0){ + inTimeOutTime = UART_SETTING_TIMEOUT; + } + + // Send Delete All signal command + ret = HVCSendCommand(HVC_COM_DELETE_ALL, 0, NULL); + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return ret; + } + + // Receive header + ret = HVCReceiveHeader(inTimeOutTime, size); + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return ret; + } + return B5T_STATUS_SUCCESS; +} + +B5T_STATUS_T B5T007001::setSTBStatus(STB_UINT32 inFlag){ + B5T_STATUS_T ret= B5T_STATUS_SUCCESS; + + //Flag 0 means disable STB + if(inFlag == 0){ + stbDeInit(); + mStbStatus = 0; + return ret; + } +#if DEBUG_PRINT + std::cout << "DEBUG: inFlag" << unsigned(inFlag) << std::endl; +#endif + ret = stbInit(inFlag); + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return ret; + } + ret = stbSetTrRetryCount(STB_RETRYCOUNT_DEFAULT); + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return ret; + } + ret = stbSetTrSteadinessParam(STB_POSSTEADINESS_DEFAULT, STB_SIZESTEADINESS_DEFAULT); + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return ret; + } + ret = stbSetPeThresholdUse(STB_PE_THRESHOLD_DEFAULT); + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return ret; + } + ret = stbSetPeAngleUse(STB_PE_ANGLEUDMIN_DEFAULT, STB_PE_ANGLEUDMAX_DEFAULT, STB_PE_ANGLELRMIN_DEFAULT, STB_PE_ANGLELRMAX_DEFAULT); + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return ret; + } + ret = stbSetPeCompleteFrameCount(STB_PE_FRAME_DEFAULT); + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return ret; + } + + ret = stbSetFrThresholdUse(STB_FR_THRESHOLD_DEFAULT); + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return ret; + } + + ret = stbSetFrAngleUse(STB_FR_ANGLEUDMIN_DEFAULT, STB_FR_ANGLEUDMAX_DEFAULT, STB_FR_ANGLELRMIN_DEFAULT, STB_FR_ANGLELRMAX_DEFAULT); + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return ret; + } + + ret = stbSetFrCompleteFrameCount(STB_FR_FRAME_DEFAULT); + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return ret; + } + + ret = stbSetFrMinRatio(STB_FR_RATIO_DEFAULT); + if(ret != B5T_STATUS_SUCCESS){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return ret; + } + + mStbStatus = inFlag; + return ret; +} + +B5T_STATUS_T B5T007001::getSTBStatus(STB_INT32 &outStatus){ + B5T_STATUS_T ret= B5T_STATUS_SUCCESS; + outStatus = mStbStatus; + return ret; +} + +B5T_STATUS_T B5T007001::stbInit(STB_UINT32 inFuncFlag) +{ + if(NULL != mSTBHandle){ + STB_DeleteHandle(mSTBHandle); + mSTBHandle = NULL; + } + + mSTBHandle = STB_CreateHandle(inFuncFlag); + if(NULL == mSTBHandle){ + return B5T_STATUS_STB_ERR_INITIALIZE; + } + return B5T_STATUS_SUCCESS; +} + +void B5T007001::stbDeInit(void) +{ + if(NULL != mSTBHandle){ + STB_DeleteHandle(mSTBHandle); + mSTBHandle = NULL; + } +} + +B5T_STATUS_T B5T007001::stbExec(STB_INT32 inActiveFunc, HVC_RESULT inResult, STB_INT32 *outSTBFaceCount, STB_FACE **outSTBFaceResult, STB_INT32 *outSTBBodyCount, STB_BODY **outSTBBodyResult) +{ + STB_INT32 ret; + B5T_STATUS_T retStatus=B5T_STATUS_SUCCESS; + STB_FRAME_RESULT frameRes; + + mFaceCount = 0; + mBodyCount = 0; + stbGetFrameResult(inActiveFunc, inResult, &frameRes); + do{ + // Set frame information (Detection Result) + ret = STB_SetFrameResult(mSTBHandle, &frameRes); + if(STB_NORMAL != ret){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + retStatus = B5T_STATUS_STB_FAILURE; + break; + } + + // STB Execution + ret = STB_Execute(mSTBHandle); + if(STB_NORMAL != ret){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + retStatus = B5T_STATUS_STB_FAILURE; + break; + } + + // Get STB Result + ret = STB_GetFaces(mSTBHandle, (STB_UINT32 *)&mFaceCount, mFace); + if(STB_NORMAL != ret){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + retStatus = B5T_STATUS_STB_FAILURE; + break; + } + + ret = STB_GetBodies(mSTBHandle, (STB_UINT32 *)&mBodyCount, mBody); + if(STB_NORMAL != ret){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + retStatus = B5T_STATUS_STB_FAILURE; + break; + } + }while(0); + if(retStatus == B5T_STATUS_SUCCESS){ + *outSTBFaceCount = mFaceCount; + *outSTBFaceResult = mFace; + *outSTBBodyCount = mBodyCount; + *outSTBBodyResult = mBody; + } + return retStatus; +} + +B5T_STATUS_T B5T007001::stbClear(void) +{ + STB_INT32 ret; + ret = STB_ClearFrameResults(mSTBHandle); + if(ret != STB_NORMAL){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return B5T_STATUS_STB_FAILURE; + } + return B5T_STATUS_SUCCESS; +} + +B5T_STATUS_T B5T007001::stbSetTrRetryCount(STB_INT32 inMaxRetryCount){ + STB_INT32 ret; + ret = STB_SetTrRetryCount(mSTBHandle, inMaxRetryCount); + if(STB_NORMAL != ret){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return B5T_STATUS_STB_FAILURE; + } + return B5T_STATUS_SUCCESS; +} + +B5T_STATUS_T B5T007001::stbGetTrRetryCount(STB_INT32 *outMaxRetryCount){ + STB_INT32 ret; + ret = STB_GetTrRetryCount(mSTBHandle, outMaxRetryCount); + if(STB_NORMAL != ret){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return B5T_STATUS_STB_FAILURE; + } + return B5T_STATUS_SUCCESS; +} + +B5T_STATUS_T B5T007001::stbSetTrSteadinessParam(STB_INT32 inPosSteadinessParam, STB_INT32 inSizeSteadinessParam){ + STB_INT32 ret; + ret = STB_SetTrSteadinessParam(mSTBHandle, inPosSteadinessParam, inSizeSteadinessParam); + if(STB_NORMAL != ret){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return B5T_STATUS_STB_FAILURE; + } + return B5T_STATUS_SUCCESS; +} + +B5T_STATUS_T B5T007001::stbGetTrSteadinessParam(STB_INT32 *outPosSteadinessParam, STB_INT32 *outSizeSteadinessParam){ + STB_INT32 ret; + ret = STB_GetTrSteadinessParam(mSTBHandle, outPosSteadinessParam, outSizeSteadinessParam); + if(STB_NORMAL != ret){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return B5T_STATUS_STB_FAILURE; + } + return B5T_STATUS_SUCCESS; +} + +B5T_STATUS_T B5T007001::stbSetPeThresholdUse(STB_INT32 inThreshold){ + STB_INT32 ret; + ret = STB_SetPeThresholdUse(mSTBHandle, inThreshold); + if(STB_NORMAL != ret){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return B5T_STATUS_STB_FAILURE; + } + return B5T_STATUS_SUCCESS; +} + +B5T_STATUS_T B5T007001::stbGetPeThresholdUse(STB_INT32 *outThreshold){ + STB_INT32 ret; + ret = STB_GetPeThresholdUse(mSTBHandle, outThreshold); + if(STB_NORMAL != ret){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return B5T_STATUS_STB_FAILURE; + } + return B5T_STATUS_SUCCESS; +} + +B5T_STATUS_T B5T007001::stbSetPeAngleUse(STB_INT32 inMinUDAngle, STB_INT32 inMaxUDAngle, STB_INT32 inMinLRAngle, STB_INT32 inMaxLRAngle){ + STB_INT32 ret; + ret = STB_SetPeAngleUse(mSTBHandle, inMinUDAngle, inMaxUDAngle, inMinLRAngle, inMaxLRAngle); + if(STB_NORMAL != ret){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return B5T_STATUS_STB_FAILURE; + } + return B5T_STATUS_SUCCESS; +} + +B5T_STATUS_T B5T007001::stbGetPeAngleUse(STB_INT32 *outMinUDAngle, STB_INT32 *outMaxUDAngle, STB_INT32 *outMinLRAngle, STB_INT32 *outMaxLRAngle){ + STB_INT32 ret; + ret = STB_GetPeAngleUse(mSTBHandle, outMinUDAngle, outMaxUDAngle, outMinLRAngle, outMaxLRAngle); + if(STB_NORMAL != ret){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return B5T_STATUS_STB_FAILURE; + } + return B5T_STATUS_SUCCESS; +} + +B5T_STATUS_T B5T007001::stbSetPeCompleteFrameCount(STB_INT32 inCompCount){ + STB_INT32 ret; + ret = STB_SetPeCompleteFrameCount(mSTBHandle, inCompCount); + if(STB_NORMAL != ret){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return B5T_STATUS_STB_FAILURE; + } + return B5T_STATUS_SUCCESS; +} + +B5T_STATUS_T B5T007001::stbGetPeCompleteFrameCount(STB_INT32 *outCompCount){ + STB_INT32 ret; + ret = STB_GetPeCompleteFrameCount(mSTBHandle, outCompCount); + if(STB_NORMAL != ret){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return B5T_STATUS_STB_FAILURE; + } + return B5T_STATUS_SUCCESS; +} + +B5T_STATUS_T B5T007001::stbSetFrThresholdUse(STB_INT32 inThreshold){ + STB_INT32 ret; + ret = STB_SetFrThresholdUse(mSTBHandle, inThreshold); + if(STB_NORMAL != ret){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return B5T_STATUS_STB_FAILURE; + } + return B5T_STATUS_SUCCESS; +} + +B5T_STATUS_T B5T007001::stbGetFrThresholdUse(STB_INT32 *outThreshold){ + STB_INT32 ret; + ret = STB_GetFrThresholdUse(mSTBHandle, outThreshold); + if(STB_NORMAL != ret){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return B5T_STATUS_STB_FAILURE; + } + return B5T_STATUS_SUCCESS; +} + +B5T_STATUS_T B5T007001::stbSetFrAngleUse(STB_INT32 inMinUDAngle, STB_INT32 inMaxUDAngle, STB_INT32 inMinLRAngle, STB_INT32 inMaxLRAngle){ + STB_INT32 ret; + ret = STB_SetFrAngleUse(mSTBHandle, inMinUDAngle, inMaxUDAngle, inMinLRAngle, inMaxLRAngle); + if(STB_NORMAL != ret){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return B5T_STATUS_STB_FAILURE; + } + return B5T_STATUS_SUCCESS; +} + +B5T_STATUS_T B5T007001::stbGetFrAngleUse(STB_INT32 *outMinUDAngle, STB_INT32 *outMaxUDAngle, STB_INT32 *outMinLRAngle, STB_INT32 *outMaxLRAngle){ + STB_INT32 ret; + ret = STB_GetFrAngleUse(mSTBHandle, outMinUDAngle, outMaxUDAngle, outMinLRAngle, outMaxLRAngle); + if(STB_NORMAL != ret){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return B5T_STATUS_STB_FAILURE; + } + return B5T_STATUS_SUCCESS; +} + +B5T_STATUS_T B5T007001::stbSetFrCompleteFrameCount(STB_INT32 inFrameCount){ + STB_INT32 ret; + ret = STB_SetFrCompleteFrameCount(mSTBHandle, inFrameCount); + if(STB_NORMAL != ret){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return B5T_STATUS_STB_FAILURE; + } + return B5T_STATUS_SUCCESS; +} + +B5T_STATUS_T B5T007001::stbGetFrCompleteFrameCount(STB_INT32 *outFrameCount){ + STB_INT32 ret; + ret = STB_GetFrCompleteFrameCount(mSTBHandle, outFrameCount); + if(STB_NORMAL != ret){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return B5T_STATUS_STB_FAILURE; + } + return B5T_STATUS_SUCCESS; +} + +B5T_STATUS_T B5T007001::stbSetFrMinRatio(STB_INT32 inMinRatio){ + STB_INT32 ret; + ret = STB_SetFrMinRatio(mSTBHandle, inMinRatio); + if(STB_NORMAL != ret){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return B5T_STATUS_STB_FAILURE; + } + return B5T_STATUS_SUCCESS; +} + +B5T_STATUS_T B5T007001::stbGetFrMinRatio(STB_INT32 *outMinRatio){ + STB_INT32 ret; + ret = STB_GetFrMinRatio(mSTBHandle, outMinRatio); + if(STB_NORMAL != ret){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return B5T_STATUS_STB_FAILURE; + } + return B5T_STATUS_SUCCESS; +} + +B5T_STATUS_T B5T007001::stbGetFrameResult(STB_INT32 inActiveFunc, const HVC_RESULT inResult, STB_FRAME_RESULT *outFrameResult){ + UINT8 i; + + // Body Detection + outFrameResult->bodys.nCount = inResult.bdResult.num; + if(inActiveFunc & HVC_ACTIV_BODY_DETECTION){ + for(i = 0; i < inResult.bdResult.num; i++){ + DETECT_RESULT dtRes = inResult.bdResult.bdResult[i]; + outFrameResult->bodys.body[i].center.nX = dtRes.posX; + outFrameResult->bodys.body[i].center.nY = dtRes.posY; + outFrameResult->bodys.body[i].nSize = dtRes.size; + outFrameResult->bodys.body[i].nConfidence = dtRes.confidence; + } + } + + outFrameResult->faces.nCount = inResult.fdResult.num; + for(i = 0; i < inResult.fdResult.num; i++){ + // Face Detection + if(inActiveFunc & HVC_ACTIV_FACE_DETECTION){ + DETECT_RESULT dtRes = inResult.fdResult.fcResult[i].dtResult; + outFrameResult->faces.face[i].center.nX = dtRes.posX; + outFrameResult->faces.face[i].center.nY = dtRes.posY; + outFrameResult->faces.face[i].nSize = dtRes.size; + outFrameResult->faces.face[i].nConfidence = dtRes.confidence; + } + // Face Direction + if(inActiveFunc & HVC_ACTIV_FACE_DIRECTION){ + DIR_RESULT dirRes = inResult.fdResult.fcResult[i].dirResult; + outFrameResult->faces.face[i].direction.nUD = dirRes.pitch; + outFrameResult->faces.face[i].direction.nLR = dirRes.yaw; + outFrameResult->faces.face[i].direction.nRoll = dirRes.roll; + outFrameResult->faces.face[i].direction.nConfidence = dirRes.confidence; + } + else { + outFrameResult->faces.face[i].direction.nUD = 0; + outFrameResult->faces.face[i].direction.nLR = 0; + outFrameResult->faces.face[i].direction.nRoll = 0; + outFrameResult->faces.face[i].direction.nConfidence = 0; + } + + // Age + if(inActiveFunc & HVC_ACTIV_AGE_ESTIMATION){ + AGE_RESULT ageRes = inResult.fdResult.fcResult[i].ageResult; + outFrameResult->faces.face[i].age.nAge = ageRes.age; + outFrameResult->faces.face[i].age.nConfidence = ageRes.confidence; + } + else { + outFrameResult->faces.face[i].age.nAge = -128; + outFrameResult->faces.face[i].age.nConfidence = -128; + } + + // Gender + if(inActiveFunc & HVC_ACTIV_GENDER_ESTIMATION){ + GENDER_RESULT genderRes = inResult.fdResult.fcResult[i].genderResult; + outFrameResult->faces.face[i].gender.nGender = genderRes.gender; + outFrameResult->faces.face[i].gender.nConfidence = genderRes.confidence; + } + else { + outFrameResult->faces.face[i].gender.nGender = -128; + outFrameResult->faces.face[i].gender.nConfidence = -128; + } + + // Face recognition + if(inActiveFunc & HVC_ACTIV_FACE_RECOGNITION){ + RECOGNITION_RESULT recogRes = inResult.fdResult.fcResult[i].recognitionResult; + outFrameResult->faces.face[i].recognition.nUID = recogRes.uid; + outFrameResult->faces.face[i].recognition.nScore = recogRes.confidence; + } + else { + outFrameResult->faces.face[i].recognition.nUID = -128; + outFrameResult->faces.face[i].recognition.nScore = -128; + } + // Gaze + if(inActiveFunc & HVC_ACTIV_GAZE_ESTIMATION){ + GAZE_RESULT gazeRes = inResult.fdResult.fcResult[i].gazeResult; + outFrameResult->faces.face[i].gaze.nLR = gazeRes.gazeLR; + outFrameResult->faces.face[i].gaze.nUD = gazeRes.gazeUD; + } + else{ + outFrameResult->faces.face[i].gaze.nLR = -128; + outFrameResult->faces.face[i].gaze.nUD = -128; + } + // Blink + if(inActiveFunc & HVC_ACTIV_BLINK_ESTIMATION){ + BLINK_RESULT blinkRes = inResult.fdResult.fcResult[i].blinkResult; + outFrameResult->faces.face[i].blink.nLeftEye = blinkRes.ratioL; + outFrameResult->faces.face[i].blink.nRightEye = blinkRes.ratioR; + } + else{ + outFrameResult->faces.face[i].blink.nLeftEye = -128; + outFrameResult->faces.face[i].blink.nRightEye = -128; + } + // Expression + if(inActiveFunc & HVC_ACTIV_EXPRESSION_ESTIMATION){ + UINT8 count=0; + EXPRESSION_RESULT exprRes = inResult.fdResult.fcResult[i].expressionResult; + for(count=0; count < 5;count++){ + outFrameResult->faces.face[i].expression.anScore[count]= exprRes.score[count]; + } + outFrameResult->faces.face[i].expression.nDegree = exprRes.degree; + } + else{ + outFrameResult->faces.face[i].expression.anScore[0]= -128; + outFrameResult->faces.face[i].expression.nDegree = -128; + } + } + return B5T_STATUS_SUCCESS; +} + +B5T_STATUS_T B5T007001::stbGetVersion(STB_INT8* outMajorVersion, STB_INT8* outMinorVersion){ + STB_INT32 ret; + ret = STB_GetVersion(outMajorVersion, outMinorVersion); + if(STB_NORMAL != ret){ + std::cerr << std::string(__FUNCTION__) << ": failed with error code:" << ret << std::endl; + return B5T_STATUS_STB_FAILURE; + } + return B5T_STATUS_SUCCESS; +} diff --git a/src/b5t007001/b5t007001.hpp b/src/b5t007001/b5t007001.hpp new file mode 100644 index 00000000..a77b9e16 --- /dev/null +++ b/src/b5t007001/b5t007001.hpp @@ -0,0 +1,852 @@ +/* +* Author: Takashi Kakiuchi +* Copyright (c) 2019 Omron Electronic Components - Americas +* +* Permission is hereby granted, free of charge, to any person obtaining a copy of +* this software and associated documentation files (the "Software"), to deal in +* the Software without restriction, including without limitation the rights to +* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +* the Software, and to permit persons to whom the Software is furnished to do so, +* subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in all +* copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#pragma once + + +#include //Required for c++ standard IO +#include // Required for string +#include //Required for UART +#include //Required for vector +#include "STBAPI.h" //Required for STB +#include "STBCommonDef.h" //Required for STB + +/** + * MACROS and enum + */ +#define HVC_ALBUM_SIZE_MIN 32 +#define HVC_ALBUM_SIZE_MAX 816032 + +/** + * Execute detection flags + */ +#define HVC_ACTIV_BODY_DETECTION 0x00000001 +#define HVC_ACTIV_HAND_DETECTION 0x00000002 +#define HVC_ACTIV_FACE_DETECTION 0x00000004 +#define HVC_ACTIV_FACE_DIRECTION 0x00000008 +#define HVC_ACTIV_AGE_ESTIMATION 0x00000010 +#define HVC_ACTIV_GENDER_ESTIMATION 0x00000020 +#define HVC_ACTIV_GAZE_ESTIMATION 0x00000040 +#define HVC_ACTIV_BLINK_ESTIMATION 0x00000080 +#define HVC_ACTIV_EXPRESSION_ESTIMATION 0x00000100 +#define HVC_ACTIV_FACE_RECOGNITION 0x00000200 + +#define HVC_EXECUTE_IMAGE_NONE 0x00000000 +#define HVC_EXECUTE_IMAGE_QVGA 0x00000001 +#define HVC_EXECUTE_IMAGE_QVGA_HALF 0x00000002 + +#define DEFAULT_UART_NUM 0 //This can be overwritten by application for custom number in constructure. +#define MAX_USER_NUM 100 //Maximum user number +#define UART_SETTING_TIMEOUT 1000 //HVC setting command signal timeout period +#define UART_EXECUTE_TIMEOUT ((10+10+6+3+15+15+1+1+15+10)*1000) +#define UART_SAVE_ALBUM_TIMEOUT 860000 // HVC save album command signal timeout period +#define UART_LOAD_ALBUM_TIMEOUT 860000 // HVC load album command signal timeout period +#define UART_SAVE_ALBUM_ROM_TIMEOUT 150000 // HVC save album to ROM command timeout period +#define STB_MAX_NUM 35 + +typedef unsigned char UINT8; // 8 bit Unsigned Integer +typedef int INT32; //32 bit Signed Integer +typedef unsigned int UINT32; //32 bit Signed Integer +typedef char INT8; //32 bit Signed Integer +typedef std::string STRING; //String + +#define STB_RETRYCOUNT_DEFAULT 2 //Retry Count for STB +#define STB_POSSTEADINESS_DEFAULT 30 //Position Steadiness for STB +#define STB_SIZESTEADINESS_DEFAULT 30 //Size Steadiness for STB +#define STB_PE_FRAME_DEFAULT 10 //Complete Frame Count for property estimation in STB +#define STB_PE_ANGLEUDMIN_DEFAULT -15 //Up/Down face angle minimum value for property estimation in STB +#define STB_PE_ANGLEUDMAX_DEFAULT 20 //Up/Down face angle maximum value for property estimation in STB +#define STB_PE_ANGLELRMIN_DEFAULT -20 //Left/Right face angle minimum value for property estimation in STB +#define STB_PE_ANGLELRMAX_DEFAULT 20 //Left/Right face angle maximum value for property estimation in STB +#define STB_PE_THRESHOLD_DEFAULT 1 //Threshold for property estimation in STB +#define STB_FR_FRAME_DEFAULT 5 //Complete Frame Count for recognition in STB +#define STB_FR_RATIO_DEFAULT 60 //Account Ratio for recognition in STB +#define STB_FR_ANGLEUDMIN_DEFAULT -15 //Up/Down face angle minimum value for recognition in STB +#define STB_FR_ANGLEUDMAX_DEFAULT 20 //Up/Down face angle maximum value for recognition in STB +#define STB_FR_ANGLELRMIN_DEFAULT -20 //Left/Right face angle maximum value for recognition in STB +#define STB_FR_ANGLELRMAX_DEFAULT 20 //Left/Right face angle minimum value for recognition in STB +#define STB_FR_THRESHOLD_DEFAULT 1 //Threshold for recognition in STB + + + +/** + * B5T_STATUS enum + * An Enum contains status code of operations + */ +typedef enum B5T_STATUS{ +B5T_STATUS_SUCCESS =0, // Success +B5T_STATUS_WRITE_FAILED, // MRAA library UART write failed +B5T_STATUS_READ_FAILED, // MRAA library UART read failed +B5T_STATUS_READ_TIMEOUT, // MRAA library UART read timeour occurs +B5T_STATUS_HEADER_INVALID, // Sensor FW returned invalid header +B5T_STATUS_INVALID_INPUT, // Invalid input +B5T_STATUS_FW_INTERNAL_ERROR, // HVC firmware error +B5T_STATUS_USER_ADD_FAILED, // User add failed +B5T_STATUS_STB_FAILURE, // STB failure +B5T_STATUS_STB_ERR_INITIALIZE, // STB library init failed +}B5T_STATUS_T; + + +/** + * HVC_UART_BAUD_RATE_T enum + * An enum contains values of supported UART baud rate + */ +typedef enum{ +HVC_UART_BAUD_RATE_9600 = 9600, +HVC_UART_BAUD_RATE_38400 = 38400, +HVC_UART_BAUD_RATE_115200 = 115200, +HVC_UART_BAUD_RATE_230400 = 230400, +HVC_UART_BAUD_RATE_460800 = 460800, +HVC_UART_BAUD_RATE_921600 = 921600, +}HVC_UART_BAUD_RATE_T; + + +/** + * Expression + */ +typedef enum { + EX_NEUTRAL = 1, + EX_HAPPINESS, + EX_SURPRISE, + EX_ANGER, + EX_SADNESS +}EXPRESSION; + +/** + *Struct Device model and version info + */ +typedef struct { + UINT8 string[12]; + UINT8 major; + UINT8 minor; + UINT8 relese; + UINT8 revision[4]; +}HVC_VERSION; + +/** + *Detection result + */ +typedef struct{ + INT32 posX; //Center x-coordinate + INT32 posY; //Center y-coordinate + INT32 size; //Size + INT32 confidence; //Degree of confidence +}DETECT_RESULT; + +/** + *Face direction + */ +typedef struct{ + INT32 yaw; //Yaw angle + INT32 pitch; //Pitch angle + INT32 roll; //Roll angle + INT32 confidence; //Degree of confidence +}DIR_RESULT; + +/** + *Age + */ +typedef struct{ + INT32 age; //Age + INT32 confidence; //Degree of confidence +}AGE_RESULT; + +/** + * Gender + */ +typedef struct{ + INT32 gender; //Gender + INT32 confidence; //Degree of confidence +}GENDER_RESULT; + +/** + *Gaze + */ +typedef struct{ + INT32 gazeLR; //Yaw angle + INT32 gazeUD; //Pitch angle +}GAZE_RESULT; + +/** + *Blink + */ +typedef struct{ + INT32 ratioL; //Left eye blink result + INT32 ratioR; //Right eye blink result +}BLINK_RESULT; + +/** + *Expression + */ +typedef struct{ + INT32 topExpression; //Top expression + INT32 topScore; //Top score + INT32 score[5]; //Score of 5 expression + INT32 degree; //Negative-positive degree +}EXPRESSION_RESULT; + +/** + *Face Recognition + */ +typedef struct{ + INT32 uid; //User ID + INT32 confidence; //Degree of confidence +}RECOGNITION_RESULT; + +/** + *Face Detection & Estimations result + */ +typedef struct{ + DETECT_RESULT dtResult; //Face detection result + DIR_RESULT dirResult; //Face direction estimation result + AGE_RESULT ageResult; //Age Estimation result + GENDER_RESULT genderResult; //Gender Estimation result + GAZE_RESULT gazeResult; //Gaze Estimation result + BLINK_RESULT blinkResult; //Blink Estimation result + EXPRESSION_RESULT expressionResult; //Expression Estimation result + RECOGNITION_RESULT recognitionResult; //Face Recognition result +}FACE_RESULT; + +/** + *Human Body Detection results + */ +typedef struct{ + UINT8 num; //Number of Detection + DETECT_RESULT bdResult[35]; //Detection result +}BD_RESULT; + +/** + *Hand Detection results + */ +typedef struct{ + UINT8 num; //Number of Detection + DETECT_RESULT hdResult[35]; //Detection result +}HD_RESULT; + +/** + *Face Detection & Estimations results + */ +typedef struct{ + UINT8 num; //Number of Detection + FACE_RESULT fcResult[35]; //Detection & Estimations result +}FD_RESULT; + +/** + *Image data + */ +typedef struct{ + INT32 width; + INT32 height; + UINT8 image[320*240]; +}HVC_IMAGE; + +/** + * Result data of Execute command + */ +typedef struct{ + INT32 executedFunc; //Execution flag + BD_RESULT bdResult; //Human Body Detection results + HD_RESULT hdResult; //Hand Detection results + FD_RESULT fdResult; //Face Detection & Estimations results + HVC_IMAGE image; //Image data +}HVC_RESULT; + +/** + *Threshold of confidence + */ +typedef struct{ + INT32 bdThreshold; //Threshold of confidence of Human Body Detection + INT32 hdThreshold; //Threshold of confidence of Hand Detection + INT32 dtThreshold; //Threshold of confidence of Face Detection + INT32 rsThreshold; //Threshold of confidence of Face Recognition +}HVC_THRESHOLD; + +/** + *Detection size + */ +typedef struct{ + INT32 bdMinSize; //Minimum detection size of Human Body Detection + INT32 bdMaxSize; //Maximum detection size of Human Body Detection + INT32 hdMinSize; //Minimum detection size of Hand Detection + INT32 hdMaxSize; //Maximum detection size of Hand Detection + INT32 dtMinSize; //Minimum detection size of Face Detection + INT32 dtMaxSize; //Maximum detection size of Face Detection +}HVC_SIZERANGE; + + +/*=========================================================================*/ + +namespace upm { + /** + * @brief Mems HVC Sensors + * @defgroup b5t007001 libupm-b5t007001 + * @ingroup --add group + */ + /** + * @library b5t007001 + * @sensor b5t007001 + * @comname Omron HVC sensors + * @type --add type + * @man omron + * @con UART + * @web --add weblink + * + * @brief API for the Omron B5T007001 HVC sensors interface + * + * It is connected via a UART Interface. + * + * @snippet b5t007001.cxx Interesting + */ + class B5T007001{ + public : + /** + * B5T007001 object constructor + * + * @param uart UART to use. Default value is DEFAULT_UART_NUM whenver not specified manually. + * @param inRate UART baudrate. Default value is HVC_UART_BAUD_RATE_9600 whenever not specified manually. + */ + B5T007001(UINT8 uart=DEFAULT_UART_NUM, HVC_UART_BAUD_RATE_T inRate=HVC_UART_BAUD_RATE_9600); + + /** + * B5T007001 object destructure + * + */ + ~B5T007001(); + + /** + * Get HVC version information + * + * @param inTimeOutTime Timeout time (ms). If negative, recommended default timeout is used. + * @param outVersion Version data + * @return One of the D6T_STATUS_T values + */ + B5T_STATUS_T getVersion(INT32 inTimeOutTime, HVC_VERSION &outVersion); + + /** + * Set HVC camera angle + * + * @param inTimeOutTime Timeout time (ms). If negative, recommended default timeout is used. + * @param inAngleNo Camera angle number + * @return One of the B5T_STATUS_T values + */ + B5T_STATUS_T setCameraAngle(INT32 inTimeOutTime, UINT8 inAngleNo); + + /** + * Get HVC camera angle + * + * @param inTimeOutTime Timeout time (ms). If negative, recommended default timeout is used. + * @param outAngleNo Camera angle number + * @return One of the B5T_STATUS_T values + */ + B5T_STATUS_T getCameraAngle(INT32 inTimeOutTime, UINT8 &outAngleNo); + + /** + * Execute Detection for given parameters + * + * @param inTimeOutTime Timeout time (ms). If negative, recommended default timeout is used. + * @param inExec Execution parameter for face detection or hand detection etc + * @param inImageInfo Output image designation + * @param outHVCResult Result data + * @return One of the B5T_STATUS_T values + */ + B5T_STATUS_T executeDetection(INT32 inTimeOutTime, INT32 inExec, INT32 inImageInfo, HVC_RESULT &outHVCResult); + + /** + * Execute Detection for given parameters and return information with STB results + * + * @param inTimeOutTime Timeout time (ms). If negative, recommended default timeout is used. + * @param inExec Execution parameter for face detection or hand detection etc + * @param inImageInfo Output image designation + * @param outHVCResult Result data + * @param outSTBFaceCount STB Face count + * @param outSTBFaceResult STB Face result + * @param outSTBBodyCount STB Body count + * @param outSTBBodyResult STB Body result + * @return One of the B5T_STATUS_T values + */ + B5T_STATUS_T executeDetection(INT32 inTimeOutTime, INT32 inExec, INT32 inImageInfo, HVC_RESULT &outHVCResult,INT32 *outSTBFaceCount, STB_FACE **outSTBFaceResult,INT32 *outSTBBodyCount,STB_BODY **outSTBBodyResult); + + /** + * Set the threshold value for Human Body Detection, Hand Detection, Face Detection and/or Face Recognition + * + * @param inTimeOutTime Timeout time (ms). If negative, recommended default timeout is used. + * @param inThreshold Threshold value + * @return One of the B5T_STATUS_T values + */ + B5T_STATUS_T setThreshold(INT32 inTimeOutTime, HVC_THRESHOLD inThreshold); + + /** + * Get the threshold value for Human Body Detection, Hand Detection, Face Detection and/or Face Recognition + * + * @param inTimeOutTime Timeout time (ms). If negative, recommended default timeout is used. + * @param outThreshold Threshold value + * @return One of the B5T_STATUS_T values + */ + B5T_STATUS_T getThreshold(INT32 inTimeOutTime, HVC_THRESHOLD &outThreshold); + + /** + * Set the detection size of Human Body Detection, Hand Detection, Face Detection + * + * @param inTimeOutTime Timeout time (ms). If negative, recommended default timeout is used. + * @param inSizeRange SizeRange value + * @return One of the B5T_STATUS_T values + */ + B5T_STATUS_T setSizeRange(INT32 inTimeOutTime, HVC_SIZERANGE inSizeRange); + + /** + * Get the detection size of Human Body Detection, Hand Detection, Face Detection + * + * @param inTimeOutTime Timeout time (ms). If negative, recommended default timeout is used. + * @param outSizeRange SizeRange value + * @return One of the B5T_STATUS_T values + */ + B5T_STATUS_T getSizeRange(INT32 inTimeOutTime, HVC_SIZERANGE &outSizeRange); + + /** + * Set the face angle for Face Detection, i.e. the yaw and roll angle range to be detected + * + * @param inTimeOutTime Timeout time (ms). If negative, recommended default timeout is used. + * @param inPose Yaw angle range + * @param inAngle Roll angle range + * @return One of the B5T_STATUS_T values + */ + B5T_STATUS_T setFaceDetectionAngle(INT32 inTimeOutTime, INT32 inPose, INT32 inAngle); + + /** + * Get the face angle for Face Detection + * + * @param inTimeOutTime Timeout time (ms). If negative, recommended default timeout is used. + * @param outPose Yaw angle range + * @param outAngle Roll angle range + * @return One of the B5T_STATUS_T values + */ + B5T_STATUS_T getFaceDetectionAngle(INT32 inTimeOutTime, INT32 &outPose, INT32 &outAngle); + + /** + * Set the UART baudrate + * + * @param inTimeOutTime Timeout time (ms). If negative, recommended default timeout is used. + * @param inRate UART baud rate + * @return One of the B5T_STATUS_T values + */ + B5T_STATUS_T setBaudRate(INT32 inTimeOutTime, HVC_UART_BAUD_RATE_T inRate); + + /** + * Get registered userIDs and dataIDs + * + * @param inTimeOutTime Timeout time (ms). If negative, recommended default timeout is used. + * @param outUserList User ID list + * @param outDataList Data ID list + * @return One of the B5T_STATUS_T values + */ + B5T_STATUS_T getRegisteredUsersInfo(INT32 inTimeOutTime, std::vector &outUserList, std::vector &outDataList); + /** + * Add/Register new user + * + * @param inTimeOutTime Timeout time (ms). If negative, recommended default timeout is used. + * @param inUserID User ID (0-99) + * @param inDataID Data ID (0-9) + * @param outImage Image info + * @return One of the B5T_STATUS_T values + */ + B5T_STATUS_T addUser(INT32 inTimeOutTime, UINT8 inUserID, UINT8 inDataID, HVC_IMAGE &outImage); + + /** + * Delete specific user data for specific user id + * + * @param inTimeOutTime Timeout time (ms). If negative, recommended default timeout is used. + * @param inUserID User ID (0-99) + * @param inDataID Data ID (0-9) + * @return One of the B5T_STATUS_T values + */ + B5T_STATUS_T deleteUserData(INT32 inTimeOutTime, UINT8 inUserID, UINT8 inDataID); + + /** + * Delete specific user + * + * @param inTimeOutTime Timeout time (ms). If negative, recommended default timeout is used. + * @param inUserID User ID (0-99) + * @return One of the B5T_STATUS_T values + */ + B5T_STATUS_T deleteUser(INT32 inTimeOutTime, UINT8 inUserID); + + /** + * Delete all users + * + * @param inTimeOutTime Timeout time (ms). If negative, recommended default timeout is used. + * @return One of the B5T_STATUS_T values + */ + B5T_STATUS_T deleteUserAll(INT32 inTimeOutTime); + + /** + * Get Registration Info (Face Recognition) + * + * @param inTimeOutTime Timeout time (ms). If negative, recommended default timeout is used. + * @param inUserID User ID (0-99) + * @param outDataNo Registration Info + * @return One of the B5T_STATUS_T values + */ + B5T_STATUS_T getUserData(INT32 inTimeOutTime, UINT8 inUserID, UINT8 &outDataNo); + + /** + * Save Album from HVC device to Host + * + * @param inTimeOutTime Timeout time (ms). If negative, recommended default timeout is used. + * @param outAlbumData Album data + * @param outAlbumDataSize Album data size + * @return One of the B5T_STATUS_T values + */ + B5T_STATUS_T saveAlbumToHost(INT32 inTimeOutTime, UINT8 *outAlbumData, INT32 &outAlbumDataSize); + + /** + * Load Album from Host to HVC device + * + * @param inTimeOutTime Timeout time (ms). If negative, recommended default timeout is used. + * @param inAlbumData Album data + * @param inAlbumDataSize Album data size + * @return One of the B5T_STATUS_T values + */ + B5T_STATUS_T loadAlbumFromHost(INT32 inTimeOutTime, UINT8 *inAlbumData, INT32 inAlbumDataSize); + + /** + * Save Album from HVC RAM to ROM memory + * + * @param inTimeOutTime Timeout time (ms). If negative, recommended default timeout is used. + * @return One of the B5T_STATUS_T values + */ + B5T_STATUS_T saveAlbumToROM(INT32 inTimeOutTime); + + /** + * Set Stabilization status + * + * @param inFlag STB init flags + * @return One of the B5T_STATUS_T values + */ + B5T_STATUS_T setSTBStatus(STB_UINT32 inFlag); + + /** + * Get stabilization status + * + * @param outStatus Enable/Disable status + * @return One of the B5T_STATUS_T values + */ + B5T_STATUS_T getSTBStatus(STB_INT32 &outStatus); + + /** + * Clear stabilization frame results + * + * @return One of the B5T_STATUS_T values + */ + B5T_STATUS_T stbClear(void); + + /** + * Set maximum retry count for STB results + * + * @param inMaxRetryCount Maximum retry count + * @return One of the B5T_STATUS_T values + */ + B5T_STATUS_T stbSetTrRetryCount(STB_INT32 inMaxRetryCount); + + /** + * Get maximum retry count for STB results + * + * @param outMaxRetryCount Maximum retry count + * @return One of the B5T_STATUS_T values + */ + B5T_STATUS_T stbGetTrRetryCount(STB_INT32 *outMaxRetryCount); + + /** + * Set rectangle steadiness tracking parameter + * + * @param inPosSteadinessParam Rectangle position steadiness parameter + * @param inSizeSteadinessParam Rectangle size steadiness parameter + * @return One of the B5T_STATUS_T values + */ + B5T_STATUS_T stbSetTrSteadinessParam(STB_INT32 inPosSteadinessParam, STB_INT32 inSizeSteadinessParam); + + /** + * Get rectangle steadiness tracking parameter + * + * @param outPosSteadinessParam Rectangle position steadiness parameter + * @param outSizeSteadinessParam Rectangle size steadiness parameter + * @return One of the B5T_STATUS_T values + */ + B5T_STATUS_T stbGetTrSteadinessParam(STB_INT32 *outPosSteadinessParam, STB_INT32 *outSizeSteadinessParam); + + /** + * Set estimation result stabilizing threshold value + * + * @param inThreshold Face direction confidence threshold value + * @return One of the B5T_STATUS_T values + */ + B5T_STATUS_T stbSetPeThresholdUse(STB_INT32 inThreshold); + + /** + * Get estimation result stabilizing threshold value + * + * @param inThreshold Face direction confidence threshold value + * @return One of the B5T_STATUS_T values + */ + B5T_STATUS_T stbGetPeThresholdUse(STB_INT32 *outThreshold); + + /** + * Set estimation result stablizing angle + * + * @param inMinUDAngle Minimum up-down angle of face + * @param inMaxUDAngle Maximum up-down angle of face + * @param inMinLRAngle Minimum left-right angle of face + * @param inMaxLRAngle Maximum left-right angle of face + * @return One of the B5T_STATUS_T values + */ + B5T_STATUS_T stbSetPeAngleUse(STB_INT32 inMinUDAngle, STB_INT32 inMaxUDAngle, STB_INT32 inMinLRAngle, STB_INT32 inMaxLRAngle); + + /** + * Get estimation result stablizing angle + * + * @param outMinUDAngle Minimum up-down angle of face + * @param outMaxUDAngle Maximum up-down angle of face + * @param outMinLRAngle Minimum left-right angle of face + * @param outMaxLRAngle Maximum left-right angle of face + * @return One of the B5T_STATUS_T values + */ + B5T_STATUS_T stbGetPeAngleUse(STB_INT32 *outMinUDAngle, STB_INT32 *outMaxUDAngle, STB_INT32 *outMinLRAngle, STB_INT32 *outMaxLRAngle); + + /** + * Get age/gender esitmation complete frame count + * + * @param inCompCount The number of previous frames applying to fix the result + * @return One of the B5T_STATUS_T values + */ + B5T_STATUS_T stbSetPeCompleteFrameCount(STB_INT32 inCompCount); + + /** + * Set age/gender esitmation complete frame count + * + * @param outCompCount The number of previous frames applying to fix the result + * @return One of the B5T_STATUS_T values + */ + B5T_STATUS_T stbGetPeCompleteFrameCount(STB_INT32 *outCompCount); + + /** + * Set recognition stabilizing threshold value + * + * @param inThreshold Face direction confidence threshold value + * @return One of the B5T_STATUS_T values + */ + B5T_STATUS_T stbSetFrThresholdUse(STB_INT32 inThreshold); + + /** + * Get recognition stabilizing threshold value + * + * @param outThreshold Face direction confidence threshold value + * @return One of the B5T_STATUS_T values + */ + B5T_STATUS_T stbGetFrThresholdUse(STB_INT32 *outThreshold); + + /** + * Get recognition stabilizing angle + * + * @param inMinUDAngle Minimum up-down angle of face + * @param inMaxUDAngle Maximum up-down angle of face + * @param inMinLRAngle Minimum left-right angle of face + * @param inMaxLRAngle Maximum left-right angle of face + * @return One of the B5T_STATUS_T values + */ + B5T_STATUS_T stbSetFrAngleUse(STB_INT32 inMinUDAngle, STB_INT32 inMaxUDAngle, STB_INT32 inMinLRAngle, STB_INT32 inMaxLRAngle); + + /** + * Set recognition stabilizing angle + * + * @param outMinUDAngle Minimum up-down angle of face + * @param outMaxUDAngle Maximum up-down angle of face + * @param outMinLRAngle Minimum left-right angle of face + * @param outMaxLRAngle Maximum left-right angle of face + * @return One of the B5T_STATUS_T values + */ + B5T_STATUS_T stbGetFrAngleUse(STB_INT32 *outMinUDAngle, STB_INT32 *outMaxUDAngle, STB_INT32 *outMinLRAngle, STB_INT32 *outMaxLRAngle); + + /** + * Get recognition stablizing complete frame count + * + * @param inFrameCount The number of previous frames applying to fix the result + * @return One of the B5T_STATUS_T values + */ + B5T_STATUS_T stbSetFrCompleteFrameCount(STB_INT32 inFrameCount); + + /** + * Set recognition stablizing complete frame count + * + * @param outFrameCount The number of previous frames applying to fix the result + * @return One of the B5T_STATUS_T values + */ + B5T_STATUS_T stbGetFrCompleteFrameCount(STB_INT32 *outFrameCount); + + /** + * Get recognition minimum account ratio + * + * @param inMinRatio Recognition minimum account ratio + * @return One of the B5T_STATUS_T values + */ + B5T_STATUS_T stbSetFrMinRatio(STB_INT32 inMinRatio); + + /** + * Set recognition minimum account ratio + * + * @param outMinRatio Recognition minimum account ratio + * @return One of the B5T_STATUS_T values + */ + B5T_STATUS_T stbGetFrMinRatio(STB_INT32 *outMinRatio); + + /** + * Get Stb version + * + * @param outMajorVersion Major version number + * @param outMinorVersion Minor version number + * @return One of the B5T_STATUS_T values + */ + B5T_STATUS_T stbGetVersion(STB_INT8* outMajorVersion, STB_INT8* outMinorVersion); + + private: + mraa::Uart* mUart; + INT32 mStbStatus; + HSTB mSTBHandle; + int mFaceCount; + STB_FACE mFace[STB_MAX_NUM]; + int mBodyCount; + STB_BODY mBody[STB_MAX_NUM]; + + /** + * UART send command + * + * @param inDataSize Data Size + * @param inData Data + * @return One of the B5T_STATUS_T values + */ + B5T_STATUS_T UARTSendData(INT32 inDataSize, const UINT8 *inData); + + /** + * UART Receive Data + * + * @param inTimeOutTime Timeout time (ms). If negative, recommended default timeout is used. + * @param inDataSize Data Size + * @param outResult Received Data + * @param isSyncRequired Check for sync byte + * @return One of the B5T_STATUS_T values + */ + B5T_STATUS_T UARTReceiveData(INT32 inTimeOutTime, INT32 inDataSize, UINT8 *outResult, UINT8 isSyncRequired=0); + + /** + * HVC send command + * + * @param inCommandNo Command Number + * @param inDataSize Data Size + * @param inData Data + * @return One of the B5T_STATUS_T values + */ + B5T_STATUS_T HVCSendCommand(UINT8 inCommandNo, INT32 inDataSize, UINT8 *inData); + + /** + * HVC Receive Data + * + * @param inTimeOutTime Timeout time (ms). If negative, recommended default timeout is used. + * @param inDataSize Data Size + * @param outResult Received Data + * @param inCommandNo Command Number + * @return One of the B5T_STATUS_T values + */ + B5T_STATUS_T HVCReceiveData(INT32 inTimeOutTime, INT32 inDataSize, UINT8 *outResult); + + /** + * HVC Receive Header + * + * @param inTimeOutTime Timeout time (ms). If negative, recommended default timeout is used. + * @param outDataSize Data Size + * @return One of the B5T_STATUS_T values + */ + B5T_STATUS_T HVCReceiveHeader(INT32 inTimeOutTime, INT32 &outDataSize); + + /** + * HVC registration + * + * @param inTimeOutTime Timeout time (ms). If negative, recommended default timeout is used. + * @param inUserID User ID + * @param inDataID Data ID + * @param outImage Out image data + * @return One of the B5T_STATUS_T values + */ + B5T_STATUS_T HVCRegistration(INT32 inTimeOutTime, INT32 inUserID, INT32 inDataID, HVC_IMAGE &outImage); + + /** + * Clear data on RX line of UART + * + * @return One of the B5T_STATUS_T values + */ + B5T_STATUS_T UARTRxIgnoreAllData(void); + + /** + * Init stabilization library + * + * @param inFuncFlag init flag + * @return One of the B5T_STATUS_T values + */ + B5T_STATUS_T stbInit(STB_UINT32 inFuncFlag); + + /** + * Deinit stabilization library + * + * @return One of the B5T_STATUS_T values + */ + void stbDeInit(void); + + /** + * Execute stabilization + * + * @param inActiveFunc Active functions + * @param inResult HVC_RESULT info for stabilization + * @param outSTBFaceCount STB face count + * @param outSTBFaceResult STB face results + * @param outSTBBodyCount STB body count + * @param outSTBBodyResult STB body results + * @return One of the B5T_STATUS_T values + */ + B5T_STATUS_T stbExec(STB_INT32 inActiveFunc, HVC_RESULT inResult, STB_INT32 *outSTBFaceCount, STB_FACE **outSTBFaceResult, STB_INT32 *outSTBBodyCount, STB_BODY **outSTBBodyResult); + /** + * Get stabilization frame result + * + * @param inActiveFunc Active functions + * @param inResult HVC_RESULT info for stabilization + * @param outFrameResult Stabilization frame results + * @return One of the B5T_STATUS_T values + */ + B5T_STATUS_T stbGetFrameResult(STB_INT32 inActiveFunc, HVC_RESULT inResult, STB_FRAME_RESULT *outFrameResult); + + /* + * Copy Constructor + */ + B5T007001(const B5T007001&); + + /** + * Operator Overloading + */ + B5T007001& operator=(const B5T007001&); + }; +} diff --git a/src/b5t007001/b5t007001.i b/src/b5t007001/b5t007001.i new file mode 100644 index 00000000..6f869a4e --- /dev/null +++ b/src/b5t007001/b5t007001.i @@ -0,0 +1,19 @@ +#ifdef SWIGPYTHON +%module (package="upm") b5t007001 +#endif + +%include "../common_top.i" + +/* BEGIN Java syntax ------------------------------------------------------- */ +#ifdef SWIGJAVA +JAVA_JNI_LOADLIBRARY(javaupm_b5t007001) +#endif +/* END Java syntax */ + +/* BEGIN Common SWIG syntax ------------------------------------------------- */ +%{ +#include "b5t007001.hpp" +%} + +%include "b5t007001.hpp" +/* END Common SWIG syntax * \ No newline at end of file diff --git a/src/b5t007001/b5t007001.json b/src/b5t007001/b5t007001.json new file mode 100644 index 00000000..f0a6690f --- /dev/null +++ b/src/b5t007001/b5t007001.json @@ -0,0 +1,28 @@ +{ + "Library": "b5t007001", + "Description": "Omron B5T Human Vision Component (HVC-P2)", + "Sensor Class": { + "B5T007001": { + "Name": "API for B5T007001 Sensor Module", + "Description": "This is the UPM Module for the Omron Human Vision Component", + "Aliases": ["HVC-P2"], + "Categories": ["USB"], + "Connections": ["USB and UART"], + "Project Type": ["sensor"], + "Manufacturers": ["Omron"], + "Examples": { + "C++": ["b5t007001_register.cxx"] + "C++": ["b5t007001_sample.cxx"] + }, + "Platforms": { + "Intel Edison": { + "Notes": ["Might need omron human vision component sensor HVC-P2"] + } + }, + "Urls": { + "Product Pages": ["https://www.components.omron.com/mobile/hvc_p2"], + "Datasheets": ["https://omronfs.omron.com/en_US/ecb/products/pdf/en-b5t.pdf"] + } + } + } +} \ No newline at end of file diff --git a/src/b5t007001/stblib/CMakeCache.txt b/src/b5t007001/stblib/CMakeCache.txt new file mode 100644 index 00000000..47052dc9 --- /dev/null +++ b/src/b5t007001/stblib/CMakeCache.txt @@ -0,0 +1,317 @@ +# This is the CMakeCache file. +# For build in directory: /home/pi/upm/src/b5t007001/stblib +# It was generated by CMake: /usr/bin/cmake +# You can edit this file to change values found and used by cmake. +# If you do not want to change any of the values, simply exit the editor. +# If you do want to change a value, simply edit, save, and exit the editor. +# The syntax for the file is as follows: +# KEY:TYPE=VALUE +# KEY is the name of a variable in the cache. +# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!. +# VALUE is the current value for the KEY. + +######################## +# EXTERNAL cache entries +######################## + +//Path to a program. +CMAKE_AR:FILEPATH=/usr/bin/ar + +//For backwards compatibility, what version of CMake commands and +// syntax should this version of CMake try to support. +CMAKE_BACKWARDS_COMPATIBILITY:STRING=2.4 + +//Choose the type of build, options are: None(CMAKE_CXX_FLAGS or +// CMAKE_C_FLAGS used) Debug Release RelWithDebInfo MinSizeRel. +CMAKE_BUILD_TYPE:STRING= + +//Enable/Disable color output during build. +CMAKE_COLOR_MAKEFILE:BOOL=ON + +//CXX compiler +CMAKE_CXX_COMPILER:FILEPATH=/usr/bin/c++ + +//Flags used by the compiler during all build types. +CMAKE_CXX_FLAGS:STRING= + +//Flags used by the compiler during debug builds. +CMAKE_CXX_FLAGS_DEBUG:STRING=-g + +//Flags used by the compiler during release builds for minimum +// size. +CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG + +//Flags used by the compiler during release builds. +CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUG + +//Flags used by the compiler during release builds with debug info. +CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG + +//C compiler +CMAKE_C_COMPILER:FILEPATH=/usr/bin/cc + +//Flags used by the compiler during all build types. +CMAKE_C_FLAGS:STRING= + +//Flags used by the compiler during debug builds. +CMAKE_C_FLAGS_DEBUG:STRING=-g + +//Flags used by the compiler during release builds for minimum +// size. +CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG + +//Flags used by the compiler during release builds. +CMAKE_C_FLAGS_RELEASE:STRING=-O3 -DNDEBUG + +//Flags used by the compiler during release builds with debug info. +CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG + +//Flags used by the linker. +CMAKE_EXE_LINKER_FLAGS:STRING= + +//Flags used by the linker during debug builds. +CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during release minsize builds. +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during release builds. +CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during Release with Debug Info builds. +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Enable/Disable output of compile commands during generation. +CMAKE_EXPORT_COMPILE_COMMANDS:BOOL=OFF + +//Install path prefix, prepended onto install directories. +CMAKE_INSTALL_PREFIX:PATH=/usr/local + +//Path to a program. +CMAKE_LINKER:FILEPATH=/usr/bin/ld + +//Path to a program. +CMAKE_MAKE_PROGRAM:FILEPATH=/usr/bin/make + +//Flags used by the linker during the creation of modules. +CMAKE_MODULE_LINKER_FLAGS:STRING= + +//Flags used by the linker during debug builds. +CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during release minsize builds. +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during release builds. +CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during Release with Debug Info builds. +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Path to a program. +CMAKE_NM:FILEPATH=/usr/bin/nm + +//Path to a program. +CMAKE_OBJCOPY:FILEPATH=/usr/bin/objcopy + +//Path to a program. +CMAKE_OBJDUMP:FILEPATH=/usr/bin/objdump + +//Value Computed by CMake +CMAKE_PROJECT_NAME:STATIC=Project + +//Path to a program. +CMAKE_RANLIB:FILEPATH=/usr/bin/ranlib + +//Flags used by the linker during the creation of dll's. +CMAKE_SHARED_LINKER_FLAGS:STRING= + +//Flags used by the linker during debug builds. +CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during release minsize builds. +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during release builds. +CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during Release with Debug Info builds. +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//If set, runtime paths are not added when installing shared libraries, +// but are added when building. +CMAKE_SKIP_INSTALL_RPATH:BOOL=NO + +//If set, runtime paths are not added when using shared libraries. +CMAKE_SKIP_RPATH:BOOL=NO + +//Flags used by the linker during the creation of static libraries. +CMAKE_STATIC_LINKER_FLAGS:STRING= + +//Flags used by the linker during debug builds. +CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during release minsize builds. +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during release builds. +CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during Release with Debug Info builds. +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Path to a program. +CMAKE_STRIP:FILEPATH=/usr/bin/strip + +//If this value is on, makefiles will be generated without the +// .SILENT directive, and all commands will be echoed to the console +// during the make. This is useful for debugging only. With Visual +// Studio IDE projects all commands are done without /nologo. +CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE + +//Single output directory for building all executables. +EXECUTABLE_OUTPUT_PATH:PATH= + +//Single output directory for building all libraries. +LIBRARY_OUTPUT_PATH:PATH= + +//Value Computed by CMake +Project_BINARY_DIR:STATIC=/home/pi/upm/src/b5t007001/stblib + +//Value Computed by CMake +Project_SOURCE_DIR:STATIC=/home/pi/upm/src/b5t007001/stblib + +//Dependencies for target +stblib_LIB_DEPENDS:STATIC= + + +######################## +# INTERNAL cache entries +######################## + +//ADVANCED property for variable: CMAKE_AR +CMAKE_AR-ADVANCED:INTERNAL=1 +//This is the directory where this CMakeCache.txt was created +CMAKE_CACHEFILE_DIR:INTERNAL=/home/pi/upm/src/b5t007001/stblib +//Major version of cmake used to create the current loaded cache +CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3 +//Minor version of cmake used to create the current loaded cache +CMAKE_CACHE_MINOR_VERSION:INTERNAL=7 +//Patch version of cmake used to create the current loaded cache +CMAKE_CACHE_PATCH_VERSION:INTERNAL=2 +//ADVANCED property for variable: CMAKE_COLOR_MAKEFILE +CMAKE_COLOR_MAKEFILE-ADVANCED:INTERNAL=1 +//Path to CMake executable. +CMAKE_COMMAND:INTERNAL=/usr/bin/cmake +//Path to cpack program executable. +CMAKE_CPACK_COMMAND:INTERNAL=/usr/bin/cpack +//Path to ctest program executable. +CMAKE_CTEST_COMMAND:INTERNAL=/usr/bin/ctest +//ADVANCED property for variable: CMAKE_CXX_COMPILER +CMAKE_CXX_COMPILER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS +CMAKE_CXX_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_DEBUG +CMAKE_CXX_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_MINSIZEREL +CMAKE_CXX_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELEASE +CMAKE_CXX_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELWITHDEBINFO +CMAKE_CXX_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_COMPILER +CMAKE_C_COMPILER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS +CMAKE_C_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG +CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL +CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE +CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO +CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//Executable file format +CMAKE_EXECUTABLE_FORMAT:INTERNAL=ELF +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS +CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG +CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE +CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXPORT_COMPILE_COMMANDS +CMAKE_EXPORT_COMPILE_COMMANDS-ADVANCED:INTERNAL=1 +//Name of external makefile project generator. +CMAKE_EXTRA_GENERATOR:INTERNAL= +//Name of generator. +CMAKE_GENERATOR:INTERNAL=Unix Makefiles +//Name of generator platform. +CMAKE_GENERATOR_PLATFORM:INTERNAL= +//Name of generator toolset. +CMAKE_GENERATOR_TOOLSET:INTERNAL= +//Source directory with the top level CMakeLists.txt file for this +// project +CMAKE_HOME_DIRECTORY:INTERNAL=/home/pi/upm/src/b5t007001/stblib +//Install .so files without execute permission. +CMAKE_INSTALL_SO_NO_EXE:INTERNAL=1 +//ADVANCED property for variable: CMAKE_LINKER +CMAKE_LINKER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MAKE_PROGRAM +CMAKE_MAKE_PROGRAM-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS +CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG +CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE +CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_NM +CMAKE_NM-ADVANCED:INTERNAL=1 +//number of local generators +CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=1 +//ADVANCED property for variable: CMAKE_OBJCOPY +CMAKE_OBJCOPY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_OBJDUMP +CMAKE_OBJDUMP-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_RANLIB +CMAKE_RANLIB-ADVANCED:INTERNAL=1 +//Path to CMake installation. +CMAKE_ROOT:INTERNAL=/usr/share/cmake-3.7 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS +CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG +CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE +CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH +CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_RPATH +CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS +CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG +CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE +CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STRIP +CMAKE_STRIP-ADVANCED:INTERNAL=1 +//uname command +CMAKE_UNAME:INTERNAL=/bin/uname +//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE +CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1 + diff --git a/src/b5t007001/stblib/CMakeFiles/3.7.2/CMakeCCompiler.cmake b/src/b5t007001/stblib/CMakeFiles/3.7.2/CMakeCCompiler.cmake new file mode 100644 index 00000000..ecea7569 --- /dev/null +++ b/src/b5t007001/stblib/CMakeFiles/3.7.2/CMakeCCompiler.cmake @@ -0,0 +1,68 @@ +set(CMAKE_C_COMPILER "/usr/bin/cc") +set(CMAKE_C_COMPILER_ARG1 "") +set(CMAKE_C_COMPILER_ID "GNU") +set(CMAKE_C_COMPILER_VERSION "6.3.0") +set(CMAKE_C_COMPILER_WRAPPER "") +set(CMAKE_C_STANDARD_COMPUTED_DEFAULT "11") +set(CMAKE_C_COMPILE_FEATURES "c_function_prototypes;c_restrict;c_variadic_macros;c_static_assert") +set(CMAKE_C90_COMPILE_FEATURES "c_function_prototypes") +set(CMAKE_C99_COMPILE_FEATURES "c_restrict;c_variadic_macros") +set(CMAKE_C11_COMPILE_FEATURES "c_static_assert") + +set(CMAKE_C_PLATFORM_ID "Linux") +set(CMAKE_C_SIMULATE_ID "") +set(CMAKE_C_SIMULATE_VERSION "") + +set(CMAKE_AR "/usr/bin/ar") +set(CMAKE_RANLIB "/usr/bin/ranlib") +set(CMAKE_LINKER "/usr/bin/ld") +set(CMAKE_COMPILER_IS_GNUCC 1) +set(CMAKE_C_COMPILER_LOADED 1) +set(CMAKE_C_COMPILER_WORKS TRUE) +set(CMAKE_C_ABI_COMPILED TRUE) +set(CMAKE_COMPILER_IS_MINGW ) +set(CMAKE_COMPILER_IS_CYGWIN ) +if(CMAKE_COMPILER_IS_CYGWIN) + set(CYGWIN 1) + set(UNIX 1) +endif() + +set(CMAKE_C_COMPILER_ENV_VAR "CC") + +if(CMAKE_COMPILER_IS_MINGW) + set(MINGW 1) +endif() +set(CMAKE_C_COMPILER_ID_RUN 1) +set(CMAKE_C_SOURCE_FILE_EXTENSIONS c;m) +set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC) +set(CMAKE_C_LINKER_PREFERENCE 10) + +# Save compiler ABI information. +set(CMAKE_C_SIZEOF_DATA_PTR "4") +set(CMAKE_C_COMPILER_ABI "ELF") +set(CMAKE_C_LIBRARY_ARCHITECTURE "arm-linux-gnueabihf") + +if(CMAKE_C_SIZEOF_DATA_PTR) + set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}") +endif() + +if(CMAKE_C_COMPILER_ABI) + set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}") +endif() + +if(CMAKE_C_LIBRARY_ARCHITECTURE) + set(CMAKE_LIBRARY_ARCHITECTURE "arm-linux-gnueabihf") +endif() + +set(CMAKE_C_CL_SHOWINCLUDES_PREFIX "") +if(CMAKE_C_CL_SHOWINCLUDES_PREFIX) + set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_C_CL_SHOWINCLUDES_PREFIX}") +endif() + + + + + +set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "c") +set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "/usr/lib/gcc/arm-linux-gnueabihf/6;/usr/lib/arm-linux-gnueabihf;/usr/lib;/lib/arm-linux-gnueabihf") +set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "") diff --git a/src/b5t007001/stblib/CMakeFiles/3.7.2/CMakeCXXCompiler.cmake b/src/b5t007001/stblib/CMakeFiles/3.7.2/CMakeCXXCompiler.cmake new file mode 100644 index 00000000..71d1bc5e --- /dev/null +++ b/src/b5t007001/stblib/CMakeFiles/3.7.2/CMakeCXXCompiler.cmake @@ -0,0 +1,69 @@ +set(CMAKE_CXX_COMPILER "/usr/bin/c++") +set(CMAKE_CXX_COMPILER_ARG1 "") +set(CMAKE_CXX_COMPILER_ID "GNU") +set(CMAKE_CXX_COMPILER_VERSION "6.3.0") +set(CMAKE_CXX_COMPILER_WRAPPER "") +set(CMAKE_CXX_STANDARD_COMPUTED_DEFAULT "14") +set(CMAKE_CXX_COMPILE_FEATURES "cxx_template_template_parameters;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates") +set(CMAKE_CXX98_COMPILE_FEATURES "cxx_template_template_parameters") +set(CMAKE_CXX11_COMPILE_FEATURES "cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates") +set(CMAKE_CXX14_COMPILE_FEATURES "cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates") + +set(CMAKE_CXX_PLATFORM_ID "Linux") +set(CMAKE_CXX_SIMULATE_ID "") +set(CMAKE_CXX_SIMULATE_VERSION "") + +set(CMAKE_AR "/usr/bin/ar") +set(CMAKE_RANLIB "/usr/bin/ranlib") +set(CMAKE_LINKER "/usr/bin/ld") +set(CMAKE_COMPILER_IS_GNUCXX 1) +set(CMAKE_CXX_COMPILER_LOADED 1) +set(CMAKE_CXX_COMPILER_WORKS TRUE) +set(CMAKE_CXX_ABI_COMPILED TRUE) +set(CMAKE_COMPILER_IS_MINGW ) +set(CMAKE_COMPILER_IS_CYGWIN ) +if(CMAKE_COMPILER_IS_CYGWIN) + set(CYGWIN 1) + set(UNIX 1) +endif() + +set(CMAKE_CXX_COMPILER_ENV_VAR "CXX") + +if(CMAKE_COMPILER_IS_MINGW) + set(MINGW 1) +endif() +set(CMAKE_CXX_COMPILER_ID_RUN 1) +set(CMAKE_CXX_IGNORE_EXTENSIONS inl;h;hpp;HPP;H;o;O;obj;OBJ;def;DEF;rc;RC) +set(CMAKE_CXX_SOURCE_FILE_EXTENSIONS C;M;c++;cc;cpp;cxx;mm;CPP) +set(CMAKE_CXX_LINKER_PREFERENCE 30) +set(CMAKE_CXX_LINKER_PREFERENCE_PROPAGATES 1) + +# Save compiler ABI information. +set(CMAKE_CXX_SIZEOF_DATA_PTR "4") +set(CMAKE_CXX_COMPILER_ABI "ELF") +set(CMAKE_CXX_LIBRARY_ARCHITECTURE "arm-linux-gnueabihf") + +if(CMAKE_CXX_SIZEOF_DATA_PTR) + set(CMAKE_SIZEOF_VOID_P "${CMAKE_CXX_SIZEOF_DATA_PTR}") +endif() + +if(CMAKE_CXX_COMPILER_ABI) + set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_CXX_COMPILER_ABI}") +endif() + +if(CMAKE_CXX_LIBRARY_ARCHITECTURE) + set(CMAKE_LIBRARY_ARCHITECTURE "arm-linux-gnueabihf") +endif() + +set(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX "") +if(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX) + set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_CXX_CL_SHOWINCLUDES_PREFIX}") +endif() + + + + + +set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "stdc++;m;c") +set(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "/usr/lib/gcc/arm-linux-gnueabihf/6;/usr/lib/arm-linux-gnueabihf;/usr/lib;/lib/arm-linux-gnueabihf") +set(CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "") diff --git a/src/b5t007001/stblib/CMakeFiles/3.7.2/CMakeDetermineCompilerABI_C.bin b/src/b5t007001/stblib/CMakeFiles/3.7.2/CMakeDetermineCompilerABI_C.bin new file mode 100755 index 0000000000000000000000000000000000000000..a67974bb923fd7fa717208101ceb9b5ed4b74fd0 GIT binary patch literal 8304 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 & 0x00FF) +# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) +# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF) + +#elif defined(__BORLANDC__) +# define COMPILER_ID "Borland" + /* __BORLANDC__ = 0xVRR */ +# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) +# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) + +#elif defined(__WATCOMC__) && __WATCOMC__ < 1200 +# define COMPILER_ID "Watcom" + /* __WATCOMC__ = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__WATCOMC__) +# define COMPILER_ID "OpenWatcom" + /* __WATCOMC__ = VVRP + 1100 */ +# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__SUNPRO_C) +# define COMPILER_ID "SunPro" +# if __SUNPRO_C >= 0x5100 + /* __SUNPRO_C = 0xVRRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>12) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) +# else + /* __SUNPRO_CC = 0xVRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>8) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) +# endif + +#elif defined(__HP_cc) +# define COMPILER_ID "HP" + /* __HP_cc = VVRRPP */ +# define COMPILER_VERSION_MAJOR DEC(__HP_cc/10000) +# define COMPILER_VERSION_MINOR DEC(__HP_cc/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__HP_cc % 100) + +#elif defined(__DECC) +# define COMPILER_ID "Compaq" + /* __DECC_VER = VVRRTPPPP */ +# define COMPILER_VERSION_MAJOR DEC(__DECC_VER/10000000) +# define COMPILER_VERSION_MINOR DEC(__DECC_VER/100000 % 100) +# define COMPILER_VERSION_PATCH DEC(__DECC_VER % 10000) + +#elif defined(__IBMC__) && defined(__COMPILER_VER__) +# define COMPILER_ID "zOS" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ >= 800 +# define COMPILER_ID "XL" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ < 800 +# define COMPILER_ID "VisualAge" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__PGI) +# define COMPILER_ID "PGI" +# define COMPILER_VERSION_MAJOR DEC(__PGIC__) +# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) +# if defined(__PGIC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) +# endif + +#elif defined(_CRAYC) +# define COMPILER_ID "Cray" +# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR) +# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) + +#elif defined(__TI_COMPILER_VERSION__) +# define COMPILER_ID "TI" + /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ +# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) +# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) +# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) + +#elif defined(__FUJITSU) || defined(__FCC_VERSION) || defined(__fcc_version) +# define COMPILER_ID "Fujitsu" + +#elif defined(__TINYC__) +# define COMPILER_ID "TinyCC" + +#elif defined(__BCC__) +# define COMPILER_ID "Bruce" + +#elif defined(__SCO_VERSION__) +# define COMPILER_ID "SCO" + +#elif defined(__clang__) && defined(__apple_build_version__) +# define COMPILER_ID "AppleClang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) + +#elif defined(__clang__) +# define COMPILER_ID "Clang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif + +#elif defined(__GNUC__) +# define COMPILER_ID "GNU" +# define COMPILER_VERSION_MAJOR DEC(__GNUC__) +# if defined(__GNUC_MINOR__) +# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(_MSC_VER) +# define COMPILER_ID "MSVC" + /* _MSC_VER = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) +# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) +# if defined(_MSC_FULL_VER) +# if _MSC_VER >= 1400 + /* _MSC_FULL_VER = VVRRPPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) +# else + /* _MSC_FULL_VER = VVRRPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) +# endif +# endif +# if defined(_MSC_BUILD) +# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) +# endif + +#elif defined(__VISUALDSPVERSION__) || defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__) +# define COMPILER_ID "ADSP" +#if defined(__VISUALDSPVERSION__) + /* __VISUALDSPVERSION__ = 0xVVRRPP00 */ +# define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24) +# define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8 & 0xFF) +#endif + +#elif defined(__IAR_SYSTEMS_ICC__ ) || defined(__IAR_SYSTEMS_ICC) +# define COMPILER_ID "IAR" + +#elif defined(__ARMCC_VERSION) +# define COMPILER_ID "ARMCC" +#if __ARMCC_VERSION >= 1000000 + /* __ARMCC_VERSION = VRRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#else + /* __ARMCC_VERSION = VRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#endif + + +#elif defined(SDCC) +# define COMPILER_ID "SDCC" + /* SDCC = VRP */ +# define COMPILER_VERSION_MAJOR DEC(SDCC/100) +# define COMPILER_VERSION_MINOR DEC(SDCC/10 % 10) +# define COMPILER_VERSION_PATCH DEC(SDCC % 10) + +#elif defined(_SGI_COMPILER_VERSION) || defined(_COMPILER_VERSION) +# define COMPILER_ID "MIPSpro" +# if defined(_SGI_COMPILER_VERSION) + /* _SGI_COMPILER_VERSION = VRP */ +# define COMPILER_VERSION_MAJOR DEC(_SGI_COMPILER_VERSION/100) +# define COMPILER_VERSION_MINOR DEC(_SGI_COMPILER_VERSION/10 % 10) +# define COMPILER_VERSION_PATCH DEC(_SGI_COMPILER_VERSION % 10) +# else + /* _COMPILER_VERSION = VRP */ +# define COMPILER_VERSION_MAJOR DEC(_COMPILER_VERSION/100) +# define COMPILER_VERSION_MINOR DEC(_COMPILER_VERSION/10 % 10) +# define COMPILER_VERSION_PATCH DEC(_COMPILER_VERSION % 10) +# endif + + +/* These compilers are either not known or too old to define an + identification macro. Try to identify the platform and guess that + it is the native compiler. */ +#elif defined(__sgi) +# define COMPILER_ID "MIPSpro" + +#elif defined(__hpux) || defined(__hpua) +# define COMPILER_ID "HP" + +#else /* unknown compiler */ +# define COMPILER_ID "" +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; +#ifdef SIMULATE_ID +char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; +#endif + +#ifdef __QNXNTO__ +char const* qnxnto = "INFO" ":" "qnxnto[]"; +#endif + +#if defined(__CRAYXE) || defined(__CRAYXC) +char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; +#endif + +#define STRINGIFY_HELPER(X) #X +#define STRINGIFY(X) STRINGIFY_HELPER(X) + +/* Identify known platforms by name. */ +#if defined(__linux) || defined(__linux__) || defined(linux) +# define PLATFORM_ID "Linux" + +#elif defined(__CYGWIN__) +# define PLATFORM_ID "Cygwin" + +#elif defined(__MINGW32__) +# define PLATFORM_ID "MinGW" + +#elif defined(__APPLE__) +# define PLATFORM_ID "Darwin" + +#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) +# define PLATFORM_ID "Windows" + +#elif defined(__FreeBSD__) || defined(__FreeBSD) +# define PLATFORM_ID "FreeBSD" + +#elif defined(__NetBSD__) || defined(__NetBSD) +# define PLATFORM_ID "NetBSD" + +#elif defined(__OpenBSD__) || defined(__OPENBSD) +# define PLATFORM_ID "OpenBSD" + +#elif defined(__sun) || defined(sun) +# define PLATFORM_ID "SunOS" + +#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) +# define PLATFORM_ID "AIX" + +#elif defined(__sgi) || defined(__sgi__) || defined(_SGI) +# define PLATFORM_ID "IRIX" + +#elif defined(__hpux) || defined(__hpux__) +# define PLATFORM_ID "HP-UX" + +#elif defined(__HAIKU__) +# define PLATFORM_ID "Haiku" + +#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) +# define PLATFORM_ID "BeOS" + +#elif defined(__QNX__) || defined(__QNXNTO__) +# define PLATFORM_ID "QNX" + +#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) +# define PLATFORM_ID "Tru64" + +#elif defined(__riscos) || defined(__riscos__) +# define PLATFORM_ID "RISCos" + +#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) +# define PLATFORM_ID "SINIX" + +#elif defined(__UNIX_SV__) +# define PLATFORM_ID "UNIX_SV" + +#elif defined(__bsdos__) +# define PLATFORM_ID "BSDOS" + +#elif defined(_MPRAS) || defined(MPRAS) +# define PLATFORM_ID "MP-RAS" + +#elif defined(__osf) || defined(__osf__) +# define PLATFORM_ID "OSF1" + +#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) +# define PLATFORM_ID "SCO_SV" + +#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) +# define PLATFORM_ID "ULTRIX" + +#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) +# define PLATFORM_ID "Xenix" + +#elif defined(__WATCOMC__) +# if defined(__LINUX__) +# define PLATFORM_ID "Linux" + +# elif defined(__DOS__) +# define PLATFORM_ID "DOS" + +# elif defined(__OS2__) +# define PLATFORM_ID "OS2" + +# elif defined(__WINDOWS__) +# define PLATFORM_ID "Windows3x" + +# else /* unknown platform */ +# define PLATFORM_ID +# endif + +#else /* unknown platform */ +# define PLATFORM_ID + +#endif + +/* For windows compilers MSVC and Intel we can determine + the architecture of the compiler being used. This is because + the compilers do not have flags that can change the architecture, + but rather depend on which compiler is being used +*/ +#if defined(_WIN32) && defined(_MSC_VER) +# if defined(_M_IA64) +# define ARCHITECTURE_ID "IA64" + +# elif defined(_M_X64) || defined(_M_AMD64) +# define ARCHITECTURE_ID "x64" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# elif defined(_M_ARM) +# if _M_ARM == 4 +# define ARCHITECTURE_ID "ARMV4I" +# elif _M_ARM == 5 +# define ARCHITECTURE_ID "ARMV5I" +# else +# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM) +# endif + +# elif defined(_M_MIPS) +# define ARCHITECTURE_ID "MIPS" + +# elif defined(_M_SH) +# define ARCHITECTURE_ID "SHx" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__WATCOMC__) +# if defined(_M_I86) +# define ARCHITECTURE_ID "I86" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#else +# define ARCHITECTURE_ID +#endif + +/* Convert integer to decimal digit literals. */ +#define DEC(n) \ + ('0' + (((n) / 10000000)%10)), \ + ('0' + (((n) / 1000000)%10)), \ + ('0' + (((n) / 100000)%10)), \ + ('0' + (((n) / 10000)%10)), \ + ('0' + (((n) / 1000)%10)), \ + ('0' + (((n) / 100)%10)), \ + ('0' + (((n) / 10)%10)), \ + ('0' + ((n) % 10)) + +/* Convert integer to hex digit literals. */ +#define HEX(n) \ + ('0' + ((n)>>28 & 0xF)), \ + ('0' + ((n)>>24 & 0xF)), \ + ('0' + ((n)>>20 & 0xF)), \ + ('0' + ((n)>>16 & 0xF)), \ + ('0' + ((n)>>12 & 0xF)), \ + ('0' + ((n)>>8 & 0xF)), \ + ('0' + ((n)>>4 & 0xF)), \ + ('0' + ((n) & 0xF)) + +/* Construct a string literal encoding the version number components. */ +#ifdef COMPILER_VERSION_MAJOR +char const info_version[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', + COMPILER_VERSION_MAJOR, +# ifdef COMPILER_VERSION_MINOR + '.', COMPILER_VERSION_MINOR, +# ifdef COMPILER_VERSION_PATCH + '.', COMPILER_VERSION_PATCH, +# ifdef COMPILER_VERSION_TWEAK + '.', COMPILER_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct a string literal encoding the version number components. */ +#ifdef SIMULATE_VERSION_MAJOR +char const info_simulate_version[] = { + 'I', 'N', 'F', 'O', ':', + 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', + SIMULATE_VERSION_MAJOR, +# ifdef SIMULATE_VERSION_MINOR + '.', SIMULATE_VERSION_MINOR, +# ifdef SIMULATE_VERSION_PATCH + '.', SIMULATE_VERSION_PATCH, +# ifdef SIMULATE_VERSION_TWEAK + '.', SIMULATE_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; +char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; + + + + +#if !defined(__STDC__) +# if defined(_MSC_VER) && !defined(__clang__) +# define C_DIALECT "90" +# else +# define C_DIALECT +# endif +#elif __STDC_VERSION__ >= 201000L +# define C_DIALECT "11" +#elif __STDC_VERSION__ >= 199901L +# define C_DIALECT "99" +#else +# define C_DIALECT "90" +#endif +const char* info_language_dialect_default = + "INFO" ":" "dialect_default[" C_DIALECT "]"; + +/*--------------------------------------------------------------------------*/ + +#ifdef ID_VOID_MAIN +void main() {} +#else +# if defined(__CLASSIC_C__) +int main(argc, argv) int argc; char *argv[]; +# else +int main(int argc, char* argv[]) +# endif +{ + int require = 0; + require += info_compiler[argc]; + require += info_platform[argc]; + require += info_arch[argc]; +#ifdef COMPILER_VERSION_MAJOR + require += info_version[argc]; +#endif +#ifdef SIMULATE_ID + require += info_simulate[argc]; +#endif +#ifdef SIMULATE_VERSION_MAJOR + require += info_simulate_version[argc]; +#endif +#if defined(__CRAYXE) || defined(__CRAYXC) + require += info_cray[argc]; +#endif + require += info_language_dialect_default[argc]; + (void)argv; + return require; +} +#endif diff --git a/src/b5t007001/stblib/CMakeFiles/3.7.2/CompilerIdC/a.out b/src/b5t007001/stblib/CMakeFiles/3.7.2/CompilerIdC/a.out new file mode 100755 index 0000000000000000000000000000000000000000..c15b035ac9d1cf601a3d9dcb31c958cae39b2431 GIT binary patch literal 8316 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 & 0x00FF) +# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) +# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF) + +#elif defined(__BORLANDC__) +# define COMPILER_ID "Borland" + /* __BORLANDC__ = 0xVRR */ +# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) +# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) + +#elif defined(__WATCOMC__) && __WATCOMC__ < 1200 +# define COMPILER_ID "Watcom" + /* __WATCOMC__ = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__WATCOMC__) +# define COMPILER_ID "OpenWatcom" + /* __WATCOMC__ = VVRP + 1100 */ +# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__SUNPRO_CC) +# define COMPILER_ID "SunPro" +# if __SUNPRO_CC >= 0x5100 + /* __SUNPRO_CC = 0xVRRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>12) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) +# else + /* __SUNPRO_CC = 0xVRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>8) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) +# endif + +#elif defined(__HP_aCC) +# define COMPILER_ID "HP" + /* __HP_aCC = VVRRPP */ +# define COMPILER_VERSION_MAJOR DEC(__HP_aCC/10000) +# define COMPILER_VERSION_MINOR DEC(__HP_aCC/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__HP_aCC % 100) + +#elif defined(__DECCXX) +# define COMPILER_ID "Compaq" + /* __DECCXX_VER = VVRRTPPPP */ +# define COMPILER_VERSION_MAJOR DEC(__DECCXX_VER/10000000) +# define COMPILER_VERSION_MINOR DEC(__DECCXX_VER/100000 % 100) +# define COMPILER_VERSION_PATCH DEC(__DECCXX_VER % 10000) + +#elif defined(__IBMCPP__) && defined(__COMPILER_VER__) +# define COMPILER_ID "zOS" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ >= 800 +# define COMPILER_ID "XL" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ < 800 +# define COMPILER_ID "VisualAge" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__PGI) +# define COMPILER_ID "PGI" +# define COMPILER_VERSION_MAJOR DEC(__PGIC__) +# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) +# if defined(__PGIC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) +# endif + +#elif defined(_CRAYC) +# define COMPILER_ID "Cray" +# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR) +# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) + +#elif defined(__TI_COMPILER_VERSION__) +# define COMPILER_ID "TI" + /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ +# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) +# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) +# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) + +#elif defined(__FUJITSU) || defined(__FCC_VERSION) || defined(__fcc_version) +# define COMPILER_ID "Fujitsu" + +#elif defined(__SCO_VERSION__) +# define COMPILER_ID "SCO" + +#elif defined(__clang__) && defined(__apple_build_version__) +# define COMPILER_ID "AppleClang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) + +#elif defined(__clang__) +# define COMPILER_ID "Clang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif + +#elif defined(__GNUC__) +# define COMPILER_ID "GNU" +# define COMPILER_VERSION_MAJOR DEC(__GNUC__) +# if defined(__GNUC_MINOR__) +# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(_MSC_VER) +# define COMPILER_ID "MSVC" + /* _MSC_VER = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) +# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) +# if defined(_MSC_FULL_VER) +# if _MSC_VER >= 1400 + /* _MSC_FULL_VER = VVRRPPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) +# else + /* _MSC_FULL_VER = VVRRPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) +# endif +# endif +# if defined(_MSC_BUILD) +# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) +# endif + +#elif defined(__VISUALDSPVERSION__) || defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__) +# define COMPILER_ID "ADSP" +#if defined(__VISUALDSPVERSION__) + /* __VISUALDSPVERSION__ = 0xVVRRPP00 */ +# define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24) +# define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8 & 0xFF) +#endif + +#elif defined(__IAR_SYSTEMS_ICC__ ) || defined(__IAR_SYSTEMS_ICC) +# define COMPILER_ID "IAR" + +#elif defined(__ARMCC_VERSION) +# define COMPILER_ID "ARMCC" +#if __ARMCC_VERSION >= 1000000 + /* __ARMCC_VERSION = VRRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#else + /* __ARMCC_VERSION = VRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#endif + + +#elif defined(_SGI_COMPILER_VERSION) || defined(_COMPILER_VERSION) +# define COMPILER_ID "MIPSpro" +# if defined(_SGI_COMPILER_VERSION) + /* _SGI_COMPILER_VERSION = VRP */ +# define COMPILER_VERSION_MAJOR DEC(_SGI_COMPILER_VERSION/100) +# define COMPILER_VERSION_MINOR DEC(_SGI_COMPILER_VERSION/10 % 10) +# define COMPILER_VERSION_PATCH DEC(_SGI_COMPILER_VERSION % 10) +# else + /* _COMPILER_VERSION = VRP */ +# define COMPILER_VERSION_MAJOR DEC(_COMPILER_VERSION/100) +# define COMPILER_VERSION_MINOR DEC(_COMPILER_VERSION/10 % 10) +# define COMPILER_VERSION_PATCH DEC(_COMPILER_VERSION % 10) +# endif + + +/* These compilers are either not known or too old to define an + identification macro. Try to identify the platform and guess that + it is the native compiler. */ +#elif defined(__sgi) +# define COMPILER_ID "MIPSpro" + +#elif defined(__hpux) || defined(__hpua) +# define COMPILER_ID "HP" + +#else /* unknown compiler */ +# define COMPILER_ID "" +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; +#ifdef SIMULATE_ID +char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; +#endif + +#ifdef __QNXNTO__ +char const* qnxnto = "INFO" ":" "qnxnto[]"; +#endif + +#if defined(__CRAYXE) || defined(__CRAYXC) +char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; +#endif + +#define STRINGIFY_HELPER(X) #X +#define STRINGIFY(X) STRINGIFY_HELPER(X) + +/* Identify known platforms by name. */ +#if defined(__linux) || defined(__linux__) || defined(linux) +# define PLATFORM_ID "Linux" + +#elif defined(__CYGWIN__) +# define PLATFORM_ID "Cygwin" + +#elif defined(__MINGW32__) +# define PLATFORM_ID "MinGW" + +#elif defined(__APPLE__) +# define PLATFORM_ID "Darwin" + +#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) +# define PLATFORM_ID "Windows" + +#elif defined(__FreeBSD__) || defined(__FreeBSD) +# define PLATFORM_ID "FreeBSD" + +#elif defined(__NetBSD__) || defined(__NetBSD) +# define PLATFORM_ID "NetBSD" + +#elif defined(__OpenBSD__) || defined(__OPENBSD) +# define PLATFORM_ID "OpenBSD" + +#elif defined(__sun) || defined(sun) +# define PLATFORM_ID "SunOS" + +#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) +# define PLATFORM_ID "AIX" + +#elif defined(__sgi) || defined(__sgi__) || defined(_SGI) +# define PLATFORM_ID "IRIX" + +#elif defined(__hpux) || defined(__hpux__) +# define PLATFORM_ID "HP-UX" + +#elif defined(__HAIKU__) +# define PLATFORM_ID "Haiku" + +#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) +# define PLATFORM_ID "BeOS" + +#elif defined(__QNX__) || defined(__QNXNTO__) +# define PLATFORM_ID "QNX" + +#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) +# define PLATFORM_ID "Tru64" + +#elif defined(__riscos) || defined(__riscos__) +# define PLATFORM_ID "RISCos" + +#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) +# define PLATFORM_ID "SINIX" + +#elif defined(__UNIX_SV__) +# define PLATFORM_ID "UNIX_SV" + +#elif defined(__bsdos__) +# define PLATFORM_ID "BSDOS" + +#elif defined(_MPRAS) || defined(MPRAS) +# define PLATFORM_ID "MP-RAS" + +#elif defined(__osf) || defined(__osf__) +# define PLATFORM_ID "OSF1" + +#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) +# define PLATFORM_ID "SCO_SV" + +#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) +# define PLATFORM_ID "ULTRIX" + +#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) +# define PLATFORM_ID "Xenix" + +#elif defined(__WATCOMC__) +# if defined(__LINUX__) +# define PLATFORM_ID "Linux" + +# elif defined(__DOS__) +# define PLATFORM_ID "DOS" + +# elif defined(__OS2__) +# define PLATFORM_ID "OS2" + +# elif defined(__WINDOWS__) +# define PLATFORM_ID "Windows3x" + +# else /* unknown platform */ +# define PLATFORM_ID +# endif + +#else /* unknown platform */ +# define PLATFORM_ID + +#endif + +/* For windows compilers MSVC and Intel we can determine + the architecture of the compiler being used. This is because + the compilers do not have flags that can change the architecture, + but rather depend on which compiler is being used +*/ +#if defined(_WIN32) && defined(_MSC_VER) +# if defined(_M_IA64) +# define ARCHITECTURE_ID "IA64" + +# elif defined(_M_X64) || defined(_M_AMD64) +# define ARCHITECTURE_ID "x64" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# elif defined(_M_ARM) +# if _M_ARM == 4 +# define ARCHITECTURE_ID "ARMV4I" +# elif _M_ARM == 5 +# define ARCHITECTURE_ID "ARMV5I" +# else +# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM) +# endif + +# elif defined(_M_MIPS) +# define ARCHITECTURE_ID "MIPS" + +# elif defined(_M_SH) +# define ARCHITECTURE_ID "SHx" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__WATCOMC__) +# if defined(_M_I86) +# define ARCHITECTURE_ID "I86" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#else +# define ARCHITECTURE_ID +#endif + +/* Convert integer to decimal digit literals. */ +#define DEC(n) \ + ('0' + (((n) / 10000000)%10)), \ + ('0' + (((n) / 1000000)%10)), \ + ('0' + (((n) / 100000)%10)), \ + ('0' + (((n) / 10000)%10)), \ + ('0' + (((n) / 1000)%10)), \ + ('0' + (((n) / 100)%10)), \ + ('0' + (((n) / 10)%10)), \ + ('0' + ((n) % 10)) + +/* Convert integer to hex digit literals. */ +#define HEX(n) \ + ('0' + ((n)>>28 & 0xF)), \ + ('0' + ((n)>>24 & 0xF)), \ + ('0' + ((n)>>20 & 0xF)), \ + ('0' + ((n)>>16 & 0xF)), \ + ('0' + ((n)>>12 & 0xF)), \ + ('0' + ((n)>>8 & 0xF)), \ + ('0' + ((n)>>4 & 0xF)), \ + ('0' + ((n) & 0xF)) + +/* Construct a string literal encoding the version number components. */ +#ifdef COMPILER_VERSION_MAJOR +char const info_version[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', + COMPILER_VERSION_MAJOR, +# ifdef COMPILER_VERSION_MINOR + '.', COMPILER_VERSION_MINOR, +# ifdef COMPILER_VERSION_PATCH + '.', COMPILER_VERSION_PATCH, +# ifdef COMPILER_VERSION_TWEAK + '.', COMPILER_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct a string literal encoding the version number components. */ +#ifdef SIMULATE_VERSION_MAJOR +char const info_simulate_version[] = { + 'I', 'N', 'F', 'O', ':', + 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', + SIMULATE_VERSION_MAJOR, +# ifdef SIMULATE_VERSION_MINOR + '.', SIMULATE_VERSION_MINOR, +# ifdef SIMULATE_VERSION_PATCH + '.', SIMULATE_VERSION_PATCH, +# ifdef SIMULATE_VERSION_TWEAK + '.', SIMULATE_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; +char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; + + + + +const char* info_language_dialect_default = "INFO" ":" "dialect_default[" +#if __cplusplus >= 201402L + "14" +#elif __cplusplus >= 201103L + "11" +#else + "98" +#endif +"]"; + +/*--------------------------------------------------------------------------*/ + +int main(int argc, char* argv[]) +{ + int require = 0; + require += info_compiler[argc]; + require += info_platform[argc]; +#ifdef COMPILER_VERSION_MAJOR + require += info_version[argc]; +#endif +#ifdef SIMULATE_ID + require += info_simulate[argc]; +#endif +#ifdef SIMULATE_VERSION_MAJOR + require += info_simulate_version[argc]; +#endif +#if defined(__CRAYXE) || defined(__CRAYXC) + require += info_cray[argc]; +#endif + require += info_language_dialect_default[argc]; + (void)argv; + return require; +} diff --git a/src/b5t007001/stblib/CMakeFiles/3.7.2/CompilerIdCXX/a.out b/src/b5t007001/stblib/CMakeFiles/3.7.2/CompilerIdCXX/a.out new file mode 100755 index 0000000000000000000000000000000000000000..2c3be7f9cbf3add73163c8d2664e82ec27878d79 GIT binary patch literal 8460 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 ignore + arg [-plugin] ==> ignore + arg [/usr/lib/gcc/arm-linux-gnueabihf/6/liblto_plugin.so] ==> ignore + arg [-plugin-opt=/usr/lib/gcc/arm-linux-gnueabihf/6/lto-wrapper] ==> ignore + arg [-plugin-opt=-fresolution=/tmp/ccodk4Xp.res] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore + arg [-plugin-opt=-pass-through=-lc] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore + arg [--sysroot=/] ==> ignore + arg [--build-id] ==> ignore + arg [--eh-frame-hdr] ==> ignore + arg [-export-dynamic] ==> ignore + arg [-dynamic-linker] ==> ignore + arg [/lib/ld-linux-armhf.so.3] ==> ignore + arg [-X] ==> ignore + arg [--hash-style=gnu] ==> ignore + arg [-m] ==> ignore + arg [armelf_linux_eabi] ==> ignore + arg [-o] ==> ignore + arg [cmTC_c7421] ==> ignore + arg [/usr/lib/gcc/arm-linux-gnueabihf/6/../../../arm-linux-gnueabihf/crt1.o] ==> ignore + arg [/usr/lib/gcc/arm-linux-gnueabihf/6/../../../arm-linux-gnueabihf/crti.o] ==> ignore + arg [/usr/lib/gcc/arm-linux-gnueabihf/6/crtbegin.o] ==> ignore + arg [-L/usr/lib/gcc/arm-linux-gnueabihf/6] ==> dir [/usr/lib/gcc/arm-linux-gnueabihf/6] + arg [-L/usr/lib/gcc/arm-linux-gnueabihf/6/../../../arm-linux-gnueabihf] ==> dir [/usr/lib/gcc/arm-linux-gnueabihf/6/../../../arm-linux-gnueabihf] + arg [-L/usr/lib/gcc/arm-linux-gnueabihf/6/../../..] ==> dir [/usr/lib/gcc/arm-linux-gnueabihf/6/../../..] + arg [-L/lib/arm-linux-gnueabihf] ==> dir [/lib/arm-linux-gnueabihf] + arg [-L/usr/lib/arm-linux-gnueabihf] ==> dir [/usr/lib/arm-linux-gnueabihf] + arg [CMakeFiles/cmTC_c7421.dir/CMakeCCompilerABI.c.o] ==> ignore + arg [-lgcc] ==> lib [gcc] + arg [--as-needed] ==> ignore + arg [-lgcc_s] ==> lib [gcc_s] + arg [--no-as-needed] ==> ignore + arg [-lc] ==> lib [c] + arg [-lgcc] ==> lib [gcc] + arg [--as-needed] ==> ignore + arg [-lgcc_s] ==> lib [gcc_s] + arg [--no-as-needed] ==> ignore + arg [/usr/lib/gcc/arm-linux-gnueabihf/6/crtend.o] ==> ignore + arg [/usr/lib/gcc/arm-linux-gnueabihf/6/../../../arm-linux-gnueabihf/crtn.o] ==> ignore + remove lib [gcc] + remove lib [gcc_s] + remove lib [gcc] + remove lib [gcc_s] + collapse library dir [/usr/lib/gcc/arm-linux-gnueabihf/6] ==> [/usr/lib/gcc/arm-linux-gnueabihf/6] + collapse library dir [/usr/lib/gcc/arm-linux-gnueabihf/6/../../../arm-linux-gnueabihf] ==> [/usr/lib/arm-linux-gnueabihf] + collapse library dir [/usr/lib/gcc/arm-linux-gnueabihf/6/../../..] ==> [/usr/lib] + collapse library dir [/lib/arm-linux-gnueabihf] ==> [/lib/arm-linux-gnueabihf] + collapse library dir [/usr/lib/arm-linux-gnueabihf] ==> [/usr/lib/arm-linux-gnueabihf] + implicit libs: [c] + implicit dirs: [/usr/lib/gcc/arm-linux-gnueabihf/6;/usr/lib/arm-linux-gnueabihf;/usr/lib;/lib/arm-linux-gnueabihf] + implicit fwks: [] + + + + +Detecting C [-std=c11] compiler features compiled with the following output: +Change Dir: /home/pi/upm/src/b5t007001/stblib/CMakeFiles/CMakeTmp + +Run Build Command:"/usr/bin/make" "cmTC_5e9a3/fast" +/usr/bin/make -f CMakeFiles/cmTC_5e9a3.dir/build.make CMakeFiles/cmTC_5e9a3.dir/build +make[1]: Entering directory '/home/pi/upm/src/b5t007001/stblib/CMakeFiles/CMakeTmp' +Building C object CMakeFiles/cmTC_5e9a3.dir/feature_tests.c.o +/usr/bin/cc -std=c11 -o CMakeFiles/cmTC_5e9a3.dir/feature_tests.c.o -c /home/pi/upm/src/b5t007001/stblib/CMakeFiles/feature_tests.c +Linking C executable cmTC_5e9a3 +/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_5e9a3.dir/link.txt --verbose=1 +/usr/bin/cc CMakeFiles/cmTC_5e9a3.dir/feature_tests.c.o -o cmTC_5e9a3 -rdynamic +make[1]: Leaving directory '/home/pi/upm/src/b5t007001/stblib/CMakeFiles/CMakeTmp' + + + Feature record: C_FEATURE:1c_function_prototypes + Feature record: C_FEATURE:1c_restrict + Feature record: C_FEATURE:1c_static_assert + Feature record: C_FEATURE:1c_variadic_macros + + +Detecting C [-std=c99] compiler features compiled with the following output: +Change Dir: /home/pi/upm/src/b5t007001/stblib/CMakeFiles/CMakeTmp + +Run Build Command:"/usr/bin/make" "cmTC_410af/fast" +/usr/bin/make -f CMakeFiles/cmTC_410af.dir/build.make CMakeFiles/cmTC_410af.dir/build +make[1]: Entering directory '/home/pi/upm/src/b5t007001/stblib/CMakeFiles/CMakeTmp' +Building C object CMakeFiles/cmTC_410af.dir/feature_tests.c.o +/usr/bin/cc -std=c99 -o CMakeFiles/cmTC_410af.dir/feature_tests.c.o -c /home/pi/upm/src/b5t007001/stblib/CMakeFiles/feature_tests.c +Linking C executable cmTC_410af +/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_410af.dir/link.txt --verbose=1 +/usr/bin/cc CMakeFiles/cmTC_410af.dir/feature_tests.c.o -o cmTC_410af -rdynamic +make[1]: Leaving directory '/home/pi/upm/src/b5t007001/stblib/CMakeFiles/CMakeTmp' + + + Feature record: C_FEATURE:1c_function_prototypes + Feature record: C_FEATURE:1c_restrict + Feature record: C_FEATURE:0c_static_assert + Feature record: C_FEATURE:1c_variadic_macros + + +Detecting C [-std=c90] compiler features compiled with the following output: +Change Dir: /home/pi/upm/src/b5t007001/stblib/CMakeFiles/CMakeTmp + +Run Build Command:"/usr/bin/make" "cmTC_520d7/fast" +/usr/bin/make -f CMakeFiles/cmTC_520d7.dir/build.make CMakeFiles/cmTC_520d7.dir/build +make[1]: Entering directory '/home/pi/upm/src/b5t007001/stblib/CMakeFiles/CMakeTmp' +Building C object CMakeFiles/cmTC_520d7.dir/feature_tests.c.o +/usr/bin/cc -std=c90 -o CMakeFiles/cmTC_520d7.dir/feature_tests.c.o -c /home/pi/upm/src/b5t007001/stblib/CMakeFiles/feature_tests.c +Linking C executable cmTC_520d7 +/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_520d7.dir/link.txt --verbose=1 +/usr/bin/cc CMakeFiles/cmTC_520d7.dir/feature_tests.c.o -o cmTC_520d7 -rdynamic +make[1]: Leaving directory '/home/pi/upm/src/b5t007001/stblib/CMakeFiles/CMakeTmp' + + + Feature record: C_FEATURE:1c_function_prototypes + Feature record: C_FEATURE:0c_restrict + Feature record: C_FEATURE:0c_static_assert + Feature record: C_FEATURE:0c_variadic_macros +Determining if the CXX compiler works passed with the following output: +Change Dir: /home/pi/upm/src/b5t007001/stblib/CMakeFiles/CMakeTmp + +Run Build Command:"/usr/bin/make" "cmTC_71501/fast" +/usr/bin/make -f CMakeFiles/cmTC_71501.dir/build.make CMakeFiles/cmTC_71501.dir/build +make[1]: Entering directory '/home/pi/upm/src/b5t007001/stblib/CMakeFiles/CMakeTmp' +Building CXX object CMakeFiles/cmTC_71501.dir/testCXXCompiler.cxx.o +/usr/bin/c++ -o CMakeFiles/cmTC_71501.dir/testCXXCompiler.cxx.o -c /home/pi/upm/src/b5t007001/stblib/CMakeFiles/CMakeTmp/testCXXCompiler.cxx +Linking CXX executable cmTC_71501 +/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_71501.dir/link.txt --verbose=1 +/usr/bin/c++ CMakeFiles/cmTC_71501.dir/testCXXCompiler.cxx.o -o cmTC_71501 -rdynamic +make[1]: Leaving directory '/home/pi/upm/src/b5t007001/stblib/CMakeFiles/CMakeTmp' + + +Detecting CXX compiler ABI info compiled with the following output: +Change Dir: /home/pi/upm/src/b5t007001/stblib/CMakeFiles/CMakeTmp + +Run Build Command:"/usr/bin/make" "cmTC_d1043/fast" +/usr/bin/make -f CMakeFiles/cmTC_d1043.dir/build.make CMakeFiles/cmTC_d1043.dir/build +make[1]: Entering directory '/home/pi/upm/src/b5t007001/stblib/CMakeFiles/CMakeTmp' +Building CXX object CMakeFiles/cmTC_d1043.dir/CMakeCXXCompilerABI.cpp.o +/usr/bin/c++ -o CMakeFiles/cmTC_d1043.dir/CMakeCXXCompilerABI.cpp.o -c /usr/share/cmake-3.7/Modules/CMakeCXXCompilerABI.cpp +Linking CXX executable cmTC_d1043 +/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_d1043.dir/link.txt --verbose=1 +/usr/bin/c++ -v CMakeFiles/cmTC_d1043.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_d1043 -rdynamic +Using built-in specs. +COLLECT_GCC=/usr/bin/c++ +COLLECT_LTO_WRAPPER=/usr/lib/gcc/arm-linux-gnueabihf/6/lto-wrapper +Target: arm-linux-gnueabihf +Configured with: ../src/configure -v --with-pkgversion='Raspbian 6.3.0-18+rpi1+deb9u1' --with-bugurl=file:///usr/share/doc/gcc-6/README.Bugs --enable-languages=c,ada,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-6 --program-prefix=arm-linux-gnueabihf- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libitm --disable-libquadmath --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-6-armhf/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-6-armhf --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-6-armhf --with-arch-directory=arm --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --with-target-system-zlib --enable-objc-gc=auto --enable-multiarch --disable-sjlj-exceptions --with-arch=armv6 --with-fpu=vfp --with-float=hard --enable-checking=release --build=arm-linux-gnueabihf --host=arm-linux-gnueabihf --target=arm-linux-gnueabihf +Thread model: posix +gcc version 6.3.0 20170516 (Raspbian 6.3.0-18+rpi1+deb9u1) +COMPILER_PATH=/usr/lib/gcc/arm-linux-gnueabihf/6/:/usr/lib/gcc/arm-linux-gnueabihf/6/:/usr/lib/gcc/arm-linux-gnueabihf/:/usr/lib/gcc/arm-linux-gnueabihf/6/:/usr/lib/gcc/arm-linux-gnueabihf/ +LIBRARY_PATH=/usr/lib/gcc/arm-linux-gnueabihf/6/:/usr/lib/gcc/arm-linux-gnueabihf/6/../../../arm-linux-gnueabihf/:/usr/lib/gcc/arm-linux-gnueabihf/6/../../../:/lib/arm-linux-gnueabihf/:/lib/:/usr/lib/arm-linux-gnueabihf/:/usr/lib/ +COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_d1043' '-rdynamic' '-shared-libgcc' '-march=armv6' '-mfloat-abi=hard' '-mfpu=vfp' '-mtls-dialect=gnu' + /usr/lib/gcc/arm-linux-gnueabihf/6/collect2 -plugin /usr/lib/gcc/arm-linux-gnueabihf/6/liblto_plugin.so -plugin-opt=/usr/lib/gcc/arm-linux-gnueabihf/6/lto-wrapper -plugin-opt=-fresolution=/tmp/ccKvdwNb.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --sysroot=/ --build-id --eh-frame-hdr -export-dynamic -dynamic-linker /lib/ld-linux-armhf.so.3 -X --hash-style=gnu -m armelf_linux_eabi -o cmTC_d1043 /usr/lib/gcc/arm-linux-gnueabihf/6/../../../arm-linux-gnueabihf/crt1.o /usr/lib/gcc/arm-linux-gnueabihf/6/../../../arm-linux-gnueabihf/crti.o /usr/lib/gcc/arm-linux-gnueabihf/6/crtbegin.o -L/usr/lib/gcc/arm-linux-gnueabihf/6 -L/usr/lib/gcc/arm-linux-gnueabihf/6/../../../arm-linux-gnueabihf -L/usr/lib/gcc/arm-linux-gnueabihf/6/../../.. -L/lib/arm-linux-gnueabihf -L/usr/lib/arm-linux-gnueabihf CMakeFiles/cmTC_d1043.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/arm-linux-gnueabihf/6/crtend.o /usr/lib/gcc/arm-linux-gnueabihf/6/../../../arm-linux-gnueabihf/crtn.o +COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_d1043' '-rdynamic' '-shared-libgcc' '-march=armv6' '-mfloat-abi=hard' '-mfpu=vfp' '-mtls-dialect=gnu' +make[1]: Leaving directory '/home/pi/upm/src/b5t007001/stblib/CMakeFiles/CMakeTmp' + + +Parsed CXX implicit link information from above output: + link line regex: [^( *|.*[/\])(ld|([^/\]+-)?ld|collect2)[^/\]*( |$)] + ignore line: [Change Dir: /home/pi/upm/src/b5t007001/stblib/CMakeFiles/CMakeTmp] + ignore line: [] + ignore line: [Run Build Command:"/usr/bin/make" "cmTC_d1043/fast"] + ignore line: [/usr/bin/make -f CMakeFiles/cmTC_d1043.dir/build.make CMakeFiles/cmTC_d1043.dir/build] + ignore line: [make[1]: Entering directory '/home/pi/upm/src/b5t007001/stblib/CMakeFiles/CMakeTmp'] + ignore line: [Building CXX object CMakeFiles/cmTC_d1043.dir/CMakeCXXCompilerABI.cpp.o] + ignore line: [/usr/bin/c++ -o CMakeFiles/cmTC_d1043.dir/CMakeCXXCompilerABI.cpp.o -c /usr/share/cmake-3.7/Modules/CMakeCXXCompilerABI.cpp] + ignore line: [Linking CXX executable cmTC_d1043] + ignore line: [/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_d1043.dir/link.txt --verbose=1] + ignore line: [/usr/bin/c++ -v CMakeFiles/cmTC_d1043.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_d1043 -rdynamic ] + ignore line: [Using built-in specs.] + ignore line: [COLLECT_GCC=/usr/bin/c++] + ignore line: [COLLECT_LTO_WRAPPER=/usr/lib/gcc/arm-linux-gnueabihf/6/lto-wrapper] + ignore line: [Target: arm-linux-gnueabihf] + ignore line: [Configured with: ../src/configure -v --with-pkgversion='Raspbian 6.3.0-18+rpi1+deb9u1' --with-bugurl=file:///usr/share/doc/gcc-6/README.Bugs --enable-languages=c,ada,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-6 --program-prefix=arm-linux-gnueabihf- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libitm --disable-libquadmath --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-6-armhf/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-6-armhf --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-6-armhf --with-arch-directory=arm --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --with-target-system-zlib --enable-objc-gc=auto --enable-multiarch --disable-sjlj-exceptions --with-arch=armv6 --with-fpu=vfp --with-float=hard --enable-checking=release --build=arm-linux-gnueabihf --host=arm-linux-gnueabihf --target=arm-linux-gnueabihf] + ignore line: [Thread model: posix] + ignore line: [gcc version 6.3.0 20170516 (Raspbian 6.3.0-18+rpi1+deb9u1) ] + ignore line: [COMPILER_PATH=/usr/lib/gcc/arm-linux-gnueabihf/6/:/usr/lib/gcc/arm-linux-gnueabihf/6/:/usr/lib/gcc/arm-linux-gnueabihf/:/usr/lib/gcc/arm-linux-gnueabihf/6/:/usr/lib/gcc/arm-linux-gnueabihf/] + ignore line: [LIBRARY_PATH=/usr/lib/gcc/arm-linux-gnueabihf/6/:/usr/lib/gcc/arm-linux-gnueabihf/6/../../../arm-linux-gnueabihf/:/usr/lib/gcc/arm-linux-gnueabihf/6/../../../:/lib/arm-linux-gnueabihf/:/lib/:/usr/lib/arm-linux-gnueabihf/:/usr/lib/] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_d1043' '-rdynamic' '-shared-libgcc' '-march=armv6' '-mfloat-abi=hard' '-mfpu=vfp' '-mtls-dialect=gnu'] + link line: [ /usr/lib/gcc/arm-linux-gnueabihf/6/collect2 -plugin /usr/lib/gcc/arm-linux-gnueabihf/6/liblto_plugin.so -plugin-opt=/usr/lib/gcc/arm-linux-gnueabihf/6/lto-wrapper -plugin-opt=-fresolution=/tmp/ccKvdwNb.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --sysroot=/ --build-id --eh-frame-hdr -export-dynamic -dynamic-linker /lib/ld-linux-armhf.so.3 -X --hash-style=gnu -m armelf_linux_eabi -o cmTC_d1043 /usr/lib/gcc/arm-linux-gnueabihf/6/../../../arm-linux-gnueabihf/crt1.o /usr/lib/gcc/arm-linux-gnueabihf/6/../../../arm-linux-gnueabihf/crti.o /usr/lib/gcc/arm-linux-gnueabihf/6/crtbegin.o -L/usr/lib/gcc/arm-linux-gnueabihf/6 -L/usr/lib/gcc/arm-linux-gnueabihf/6/../../../arm-linux-gnueabihf -L/usr/lib/gcc/arm-linux-gnueabihf/6/../../.. -L/lib/arm-linux-gnueabihf -L/usr/lib/arm-linux-gnueabihf CMakeFiles/cmTC_d1043.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/arm-linux-gnueabihf/6/crtend.o /usr/lib/gcc/arm-linux-gnueabihf/6/../../../arm-linux-gnueabihf/crtn.o] + arg [/usr/lib/gcc/arm-linux-gnueabihf/6/collect2] ==> ignore + arg [-plugin] ==> ignore + arg [/usr/lib/gcc/arm-linux-gnueabihf/6/liblto_plugin.so] ==> ignore + arg [-plugin-opt=/usr/lib/gcc/arm-linux-gnueabihf/6/lto-wrapper] ==> ignore + arg [-plugin-opt=-fresolution=/tmp/ccKvdwNb.res] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc] ==> ignore + arg [-plugin-opt=-pass-through=-lc] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc] ==> ignore + arg [--sysroot=/] ==> ignore + arg [--build-id] ==> ignore + arg [--eh-frame-hdr] ==> ignore + arg [-export-dynamic] ==> ignore + arg [-dynamic-linker] ==> ignore + arg [/lib/ld-linux-armhf.so.3] ==> ignore + arg [-X] ==> ignore + arg [--hash-style=gnu] ==> ignore + arg [-m] ==> ignore + arg [armelf_linux_eabi] ==> ignore + arg [-o] ==> ignore + arg [cmTC_d1043] ==> ignore + arg [/usr/lib/gcc/arm-linux-gnueabihf/6/../../../arm-linux-gnueabihf/crt1.o] ==> ignore + arg [/usr/lib/gcc/arm-linux-gnueabihf/6/../../../arm-linux-gnueabihf/crti.o] ==> ignore + arg [/usr/lib/gcc/arm-linux-gnueabihf/6/crtbegin.o] ==> ignore + arg [-L/usr/lib/gcc/arm-linux-gnueabihf/6] ==> dir [/usr/lib/gcc/arm-linux-gnueabihf/6] + arg [-L/usr/lib/gcc/arm-linux-gnueabihf/6/../../../arm-linux-gnueabihf] ==> dir [/usr/lib/gcc/arm-linux-gnueabihf/6/../../../arm-linux-gnueabihf] + arg [-L/usr/lib/gcc/arm-linux-gnueabihf/6/../../..] ==> dir [/usr/lib/gcc/arm-linux-gnueabihf/6/../../..] + arg [-L/lib/arm-linux-gnueabihf] ==> dir [/lib/arm-linux-gnueabihf] + arg [-L/usr/lib/arm-linux-gnueabihf] ==> dir [/usr/lib/arm-linux-gnueabihf] + arg [CMakeFiles/cmTC_d1043.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore + arg [-lstdc++] ==> lib [stdc++] + arg [-lm] ==> lib [m] + arg [-lgcc_s] ==> lib [gcc_s] + arg [-lgcc] ==> lib [gcc] + arg [-lc] ==> lib [c] + arg [-lgcc_s] ==> lib [gcc_s] + arg [-lgcc] ==> lib [gcc] + arg [/usr/lib/gcc/arm-linux-gnueabihf/6/crtend.o] ==> ignore + arg [/usr/lib/gcc/arm-linux-gnueabihf/6/../../../arm-linux-gnueabihf/crtn.o] ==> ignore + remove lib [gcc_s] + remove lib [gcc] + remove lib [gcc_s] + remove lib [gcc] + collapse library dir [/usr/lib/gcc/arm-linux-gnueabihf/6] ==> [/usr/lib/gcc/arm-linux-gnueabihf/6] + collapse library dir [/usr/lib/gcc/arm-linux-gnueabihf/6/../../../arm-linux-gnueabihf] ==> [/usr/lib/arm-linux-gnueabihf] + collapse library dir [/usr/lib/gcc/arm-linux-gnueabihf/6/../../..] ==> [/usr/lib] + collapse library dir [/lib/arm-linux-gnueabihf] ==> [/lib/arm-linux-gnueabihf] + collapse library dir [/usr/lib/arm-linux-gnueabihf] ==> [/usr/lib/arm-linux-gnueabihf] + implicit libs: [stdc++;m;c] + implicit dirs: [/usr/lib/gcc/arm-linux-gnueabihf/6;/usr/lib/arm-linux-gnueabihf;/usr/lib;/lib/arm-linux-gnueabihf] + implicit fwks: [] + + + + +Detecting CXX [-std=c++14] compiler features compiled with the following output: +Change Dir: /home/pi/upm/src/b5t007001/stblib/CMakeFiles/CMakeTmp + +Run Build Command:"/usr/bin/make" "cmTC_6dba5/fast" +/usr/bin/make -f CMakeFiles/cmTC_6dba5.dir/build.make CMakeFiles/cmTC_6dba5.dir/build +make[1]: Entering directory '/home/pi/upm/src/b5t007001/stblib/CMakeFiles/CMakeTmp' +Building CXX object CMakeFiles/cmTC_6dba5.dir/feature_tests.cxx.o +/usr/bin/c++ -std=c++14 -o CMakeFiles/cmTC_6dba5.dir/feature_tests.cxx.o -c /home/pi/upm/src/b5t007001/stblib/CMakeFiles/feature_tests.cxx +Linking CXX executable cmTC_6dba5 +/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_6dba5.dir/link.txt --verbose=1 +/usr/bin/c++ CMakeFiles/cmTC_6dba5.dir/feature_tests.cxx.o -o cmTC_6dba5 -rdynamic +make[1]: Leaving directory '/home/pi/upm/src/b5t007001/stblib/CMakeFiles/CMakeTmp' + + + Feature record: CXX_FEATURE:1cxx_aggregate_default_initializers + Feature record: CXX_FEATURE:1cxx_alias_templates + Feature record: CXX_FEATURE:1cxx_alignas + Feature record: CXX_FEATURE:1cxx_alignof + Feature record: CXX_FEATURE:1cxx_attributes + Feature record: CXX_FEATURE:1cxx_attribute_deprecated + Feature record: CXX_FEATURE:1cxx_auto_type + Feature record: CXX_FEATURE:1cxx_binary_literals + Feature record: CXX_FEATURE:1cxx_constexpr + Feature record: CXX_FEATURE:1cxx_contextual_conversions + Feature record: CXX_FEATURE:1cxx_decltype + Feature record: CXX_FEATURE:1cxx_decltype_auto + Feature record: CXX_FEATURE:1cxx_decltype_incomplete_return_types + Feature record: CXX_FEATURE:1cxx_default_function_template_args + Feature record: CXX_FEATURE:1cxx_defaulted_functions + Feature record: CXX_FEATURE:1cxx_defaulted_move_initializers + Feature record: CXX_FEATURE:1cxx_delegating_constructors + Feature record: CXX_FEATURE:1cxx_deleted_functions + Feature record: CXX_FEATURE:1cxx_digit_separators + Feature record: CXX_FEATURE:1cxx_enum_forward_declarations + Feature record: CXX_FEATURE:1cxx_explicit_conversions + Feature record: CXX_FEATURE:1cxx_extended_friend_declarations + Feature record: CXX_FEATURE:1cxx_extern_templates + Feature record: CXX_FEATURE:1cxx_final + Feature record: CXX_FEATURE:1cxx_func_identifier + Feature record: CXX_FEATURE:1cxx_generalized_initializers + Feature record: CXX_FEATURE:1cxx_generic_lambdas + Feature record: CXX_FEATURE:1cxx_inheriting_constructors + Feature record: CXX_FEATURE:1cxx_inline_namespaces + Feature record: CXX_FEATURE:1cxx_lambdas + Feature record: CXX_FEATURE:1cxx_lambda_init_captures + Feature record: CXX_FEATURE:1cxx_local_type_template_args + Feature record: CXX_FEATURE:1cxx_long_long_type + Feature record: CXX_FEATURE:1cxx_noexcept + Feature record: CXX_FEATURE:1cxx_nonstatic_member_init + Feature record: CXX_FEATURE:1cxx_nullptr + Feature record: CXX_FEATURE:1cxx_override + Feature record: CXX_FEATURE:1cxx_range_for + Feature record: CXX_FEATURE:1cxx_raw_string_literals + Feature record: CXX_FEATURE:1cxx_reference_qualified_functions + Feature record: CXX_FEATURE:1cxx_relaxed_constexpr + Feature record: CXX_FEATURE:1cxx_return_type_deduction + Feature record: CXX_FEATURE:1cxx_right_angle_brackets + Feature record: CXX_FEATURE:1cxx_rvalue_references + Feature record: CXX_FEATURE:1cxx_sizeof_member + Feature record: CXX_FEATURE:1cxx_static_assert + Feature record: CXX_FEATURE:1cxx_strong_enums + Feature record: CXX_FEATURE:1cxx_template_template_parameters + Feature record: CXX_FEATURE:1cxx_thread_local + Feature record: CXX_FEATURE:1cxx_trailing_return_types + Feature record: CXX_FEATURE:1cxx_unicode_literals + Feature record: CXX_FEATURE:1cxx_uniform_initialization + Feature record: CXX_FEATURE:1cxx_unrestricted_unions + Feature record: CXX_FEATURE:1cxx_user_literals + Feature record: CXX_FEATURE:1cxx_variable_templates + Feature record: CXX_FEATURE:1cxx_variadic_macros + Feature record: CXX_FEATURE:1cxx_variadic_templates + + +Detecting CXX [-std=c++11] compiler features compiled with the following output: +Change Dir: /home/pi/upm/src/b5t007001/stblib/CMakeFiles/CMakeTmp + +Run Build Command:"/usr/bin/make" "cmTC_f2cb8/fast" +/usr/bin/make -f CMakeFiles/cmTC_f2cb8.dir/build.make CMakeFiles/cmTC_f2cb8.dir/build +make[1]: Entering directory '/home/pi/upm/src/b5t007001/stblib/CMakeFiles/CMakeTmp' +Building CXX object CMakeFiles/cmTC_f2cb8.dir/feature_tests.cxx.o +/usr/bin/c++ -std=c++11 -o CMakeFiles/cmTC_f2cb8.dir/feature_tests.cxx.o -c /home/pi/upm/src/b5t007001/stblib/CMakeFiles/feature_tests.cxx +Linking CXX executable cmTC_f2cb8 +/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_f2cb8.dir/link.txt --verbose=1 +/usr/bin/c++ CMakeFiles/cmTC_f2cb8.dir/feature_tests.cxx.o -o cmTC_f2cb8 -rdynamic +make[1]: Leaving directory '/home/pi/upm/src/b5t007001/stblib/CMakeFiles/CMakeTmp' + + + Feature record: CXX_FEATURE:0cxx_aggregate_default_initializers + Feature record: CXX_FEATURE:1cxx_alias_templates + Feature record: CXX_FEATURE:1cxx_alignas + Feature record: CXX_FEATURE:1cxx_alignof + Feature record: CXX_FEATURE:1cxx_attributes + Feature record: CXX_FEATURE:0cxx_attribute_deprecated + Feature record: CXX_FEATURE:1cxx_auto_type + Feature record: CXX_FEATURE:0cxx_binary_literals + Feature record: CXX_FEATURE:1cxx_constexpr + Feature record: CXX_FEATURE:0cxx_contextual_conversions + Feature record: CXX_FEATURE:1cxx_decltype + Feature record: CXX_FEATURE:0cxx_decltype_auto + Feature record: CXX_FEATURE:1cxx_decltype_incomplete_return_types + Feature record: CXX_FEATURE:1cxx_default_function_template_args + Feature record: CXX_FEATURE:1cxx_defaulted_functions + Feature record: CXX_FEATURE:1cxx_defaulted_move_initializers + Feature record: CXX_FEATURE:1cxx_delegating_constructors + Feature record: CXX_FEATURE:1cxx_deleted_functions + Feature record: CXX_FEATURE:0cxx_digit_separators + Feature record: CXX_FEATURE:1cxx_enum_forward_declarations + Feature record: CXX_FEATURE:1cxx_explicit_conversions + Feature record: CXX_FEATURE:1cxx_extended_friend_declarations + Feature record: CXX_FEATURE:1cxx_extern_templates + Feature record: CXX_FEATURE:1cxx_final + Feature record: CXX_FEATURE:1cxx_func_identifier + Feature record: CXX_FEATURE:1cxx_generalized_initializers + Feature record: CXX_FEATURE:0cxx_generic_lambdas + Feature record: CXX_FEATURE:1cxx_inheriting_constructors + Feature record: CXX_FEATURE:1cxx_inline_namespaces + Feature record: CXX_FEATURE:1cxx_lambdas + Feature record: CXX_FEATURE:0cxx_lambda_init_captures + Feature record: CXX_FEATURE:1cxx_local_type_template_args + Feature record: CXX_FEATURE:1cxx_long_long_type + Feature record: CXX_FEATURE:1cxx_noexcept + Feature record: CXX_FEATURE:1cxx_nonstatic_member_init + Feature record: CXX_FEATURE:1cxx_nullptr + Feature record: CXX_FEATURE:1cxx_override + Feature record: CXX_FEATURE:1cxx_range_for + Feature record: CXX_FEATURE:1cxx_raw_string_literals + Feature record: CXX_FEATURE:1cxx_reference_qualified_functions + Feature record: CXX_FEATURE:0cxx_relaxed_constexpr + Feature record: CXX_FEATURE:0cxx_return_type_deduction + Feature record: CXX_FEATURE:1cxx_right_angle_brackets + Feature record: CXX_FEATURE:1cxx_rvalue_references + Feature record: CXX_FEATURE:1cxx_sizeof_member + Feature record: CXX_FEATURE:1cxx_static_assert + Feature record: CXX_FEATURE:1cxx_strong_enums + Feature record: CXX_FEATURE:1cxx_template_template_parameters + Feature record: CXX_FEATURE:1cxx_thread_local + Feature record: CXX_FEATURE:1cxx_trailing_return_types + Feature record: CXX_FEATURE:1cxx_unicode_literals + Feature record: CXX_FEATURE:1cxx_uniform_initialization + Feature record: CXX_FEATURE:1cxx_unrestricted_unions + Feature record: CXX_FEATURE:1cxx_user_literals + Feature record: CXX_FEATURE:0cxx_variable_templates + Feature record: CXX_FEATURE:1cxx_variadic_macros + Feature record: CXX_FEATURE:1cxx_variadic_templates + + +Detecting CXX [-std=c++98] compiler features compiled with the following output: +Change Dir: /home/pi/upm/src/b5t007001/stblib/CMakeFiles/CMakeTmp + +Run Build Command:"/usr/bin/make" "cmTC_e6c3e/fast" +/usr/bin/make -f CMakeFiles/cmTC_e6c3e.dir/build.make CMakeFiles/cmTC_e6c3e.dir/build +make[1]: Entering directory '/home/pi/upm/src/b5t007001/stblib/CMakeFiles/CMakeTmp' +Building CXX object CMakeFiles/cmTC_e6c3e.dir/feature_tests.cxx.o +/usr/bin/c++ -std=c++98 -o CMakeFiles/cmTC_e6c3e.dir/feature_tests.cxx.o -c /home/pi/upm/src/b5t007001/stblib/CMakeFiles/feature_tests.cxx +Linking CXX executable cmTC_e6c3e +/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_e6c3e.dir/link.txt --verbose=1 +/usr/bin/c++ CMakeFiles/cmTC_e6c3e.dir/feature_tests.cxx.o -o cmTC_e6c3e -rdynamic +make[1]: Leaving directory '/home/pi/upm/src/b5t007001/stblib/CMakeFiles/CMakeTmp' + + + Feature record: CXX_FEATURE:0cxx_aggregate_default_initializers + Feature record: CXX_FEATURE:0cxx_alias_templates + Feature record: CXX_FEATURE:0cxx_alignas + Feature record: CXX_FEATURE:0cxx_alignof + Feature record: CXX_FEATURE:0cxx_attributes + Feature record: CXX_FEATURE:0cxx_attribute_deprecated + Feature record: CXX_FEATURE:0cxx_auto_type + Feature record: CXX_FEATURE:0cxx_binary_literals + Feature record: CXX_FEATURE:0cxx_constexpr + Feature record: CXX_FEATURE:0cxx_contextual_conversions + Feature record: CXX_FEATURE:0cxx_decltype + Feature record: CXX_FEATURE:0cxx_decltype_auto + Feature record: CXX_FEATURE:0cxx_decltype_incomplete_return_types + Feature record: CXX_FEATURE:0cxx_default_function_template_args + Feature record: CXX_FEATURE:0cxx_defaulted_functions + Feature record: CXX_FEATURE:0cxx_defaulted_move_initializers + Feature record: CXX_FEATURE:0cxx_delegating_constructors + Feature record: CXX_FEATURE:0cxx_deleted_functions + Feature record: CXX_FEATURE:0cxx_digit_separators + Feature record: CXX_FEATURE:0cxx_enum_forward_declarations + Feature record: CXX_FEATURE:0cxx_explicit_conversions + Feature record: CXX_FEATURE:0cxx_extended_friend_declarations + Feature record: CXX_FEATURE:0cxx_extern_templates + Feature record: CXX_FEATURE:0cxx_final + Feature record: CXX_FEATURE:0cxx_func_identifier + Feature record: CXX_FEATURE:0cxx_generalized_initializers + Feature record: CXX_FEATURE:0cxx_generic_lambdas + Feature record: CXX_FEATURE:0cxx_inheriting_constructors + Feature record: CXX_FEATURE:0cxx_inline_namespaces + Feature record: CXX_FEATURE:0cxx_lambdas + Feature record: CXX_FEATURE:0cxx_lambda_init_captures + Feature record: CXX_FEATURE:0cxx_local_type_template_args + Feature record: CXX_FEATURE:0cxx_long_long_type + Feature record: CXX_FEATURE:0cxx_noexcept + Feature record: CXX_FEATURE:0cxx_nonstatic_member_init + Feature record: CXX_FEATURE:0cxx_nullptr + Feature record: CXX_FEATURE:0cxx_override + Feature record: CXX_FEATURE:0cxx_range_for + Feature record: CXX_FEATURE:0cxx_raw_string_literals + Feature record: CXX_FEATURE:0cxx_reference_qualified_functions + Feature record: CXX_FEATURE:0cxx_relaxed_constexpr + Feature record: CXX_FEATURE:0cxx_return_type_deduction + Feature record: CXX_FEATURE:0cxx_right_angle_brackets + Feature record: CXX_FEATURE:0cxx_rvalue_references + Feature record: CXX_FEATURE:0cxx_sizeof_member + Feature record: CXX_FEATURE:0cxx_static_assert + Feature record: CXX_FEATURE:0cxx_strong_enums + Feature record: CXX_FEATURE:1cxx_template_template_parameters + Feature record: CXX_FEATURE:0cxx_thread_local + Feature record: CXX_FEATURE:0cxx_trailing_return_types + Feature record: CXX_FEATURE:0cxx_unicode_literals + Feature record: CXX_FEATURE:0cxx_uniform_initialization + Feature record: CXX_FEATURE:0cxx_unrestricted_unions + Feature record: CXX_FEATURE:0cxx_user_literals + Feature record: CXX_FEATURE:0cxx_variable_templates + Feature record: CXX_FEATURE:0cxx_variadic_macros + Feature record: CXX_FEATURE:0cxx_variadic_templates diff --git a/src/b5t007001/stblib/CMakeFiles/Makefile.cmake b/src/b5t007001/stblib/CMakeFiles/Makefile.cmake new file mode 100644 index 00000000..6d19e453 --- /dev/null +++ b/src/b5t007001/stblib/CMakeFiles/Makefile.cmake @@ -0,0 +1,115 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.7 + +# The generator used is: +set(CMAKE_DEPENDS_GENERATOR "Unix Makefiles") + +# The top level Makefile was generated from the following files: +set(CMAKE_MAKEFILE_DEPENDS + "CMakeCache.txt" + "CMakeFiles/3.7.2/CMakeCCompiler.cmake" + "CMakeFiles/3.7.2/CMakeCXXCompiler.cmake" + "CMakeFiles/3.7.2/CMakeSystem.cmake" + "CMakeFiles/feature_tests.c" + "CMakeFiles/feature_tests.cxx" + "CMakeLists.txt" + "/usr/share/cmake-3.7/Modules/CMakeCCompiler.cmake.in" + "/usr/share/cmake-3.7/Modules/CMakeCCompilerABI.c" + "/usr/share/cmake-3.7/Modules/CMakeCInformation.cmake" + "/usr/share/cmake-3.7/Modules/CMakeCXXCompiler.cmake.in" + "/usr/share/cmake-3.7/Modules/CMakeCXXCompilerABI.cpp" + "/usr/share/cmake-3.7/Modules/CMakeCXXInformation.cmake" + "/usr/share/cmake-3.7/Modules/CMakeCommonLanguageInclude.cmake" + "/usr/share/cmake-3.7/Modules/CMakeCompilerIdDetection.cmake" + "/usr/share/cmake-3.7/Modules/CMakeDetermineCCompiler.cmake" + "/usr/share/cmake-3.7/Modules/CMakeDetermineCXXCompiler.cmake" + "/usr/share/cmake-3.7/Modules/CMakeDetermineCompileFeatures.cmake" + "/usr/share/cmake-3.7/Modules/CMakeDetermineCompiler.cmake" + "/usr/share/cmake-3.7/Modules/CMakeDetermineCompilerABI.cmake" + "/usr/share/cmake-3.7/Modules/CMakeDetermineCompilerId.cmake" + "/usr/share/cmake-3.7/Modules/CMakeDetermineSystem.cmake" + "/usr/share/cmake-3.7/Modules/CMakeFindBinUtils.cmake" + "/usr/share/cmake-3.7/Modules/CMakeGenericSystem.cmake" + "/usr/share/cmake-3.7/Modules/CMakeLanguageInformation.cmake" + "/usr/share/cmake-3.7/Modules/CMakeParseArguments.cmake" + "/usr/share/cmake-3.7/Modules/CMakeParseImplicitLinkInfo.cmake" + "/usr/share/cmake-3.7/Modules/CMakeSystem.cmake.in" + "/usr/share/cmake-3.7/Modules/CMakeSystemSpecificInformation.cmake" + "/usr/share/cmake-3.7/Modules/CMakeSystemSpecificInitialize.cmake" + "/usr/share/cmake-3.7/Modules/CMakeTestCCompiler.cmake" + "/usr/share/cmake-3.7/Modules/CMakeTestCXXCompiler.cmake" + "/usr/share/cmake-3.7/Modules/CMakeTestCompilerCommon.cmake" + "/usr/share/cmake-3.7/Modules/CMakeUnixFindMake.cmake" + "/usr/share/cmake-3.7/Modules/Compiler/ADSP-DetermineCompiler.cmake" + "/usr/share/cmake-3.7/Modules/Compiler/ARMCC-DetermineCompiler.cmake" + "/usr/share/cmake-3.7/Modules/Compiler/AppleClang-DetermineCompiler.cmake" + "/usr/share/cmake-3.7/Modules/Compiler/Borland-DetermineCompiler.cmake" + "/usr/share/cmake-3.7/Modules/Compiler/Bruce-C-DetermineCompiler.cmake" + "/usr/share/cmake-3.7/Modules/Compiler/Clang-DetermineCompiler.cmake" + "/usr/share/cmake-3.7/Modules/Compiler/Clang-DetermineCompilerInternal.cmake" + "/usr/share/cmake-3.7/Modules/Compiler/Comeau-CXX-DetermineCompiler.cmake" + "/usr/share/cmake-3.7/Modules/Compiler/Compaq-C-DetermineCompiler.cmake" + "/usr/share/cmake-3.7/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake" + "/usr/share/cmake-3.7/Modules/Compiler/Cray-DetermineCompiler.cmake" + "/usr/share/cmake-3.7/Modules/Compiler/Embarcadero-DetermineCompiler.cmake" + "/usr/share/cmake-3.7/Modules/Compiler/Fujitsu-DetermineCompiler.cmake" + "/usr/share/cmake-3.7/Modules/Compiler/GHS-DetermineCompiler.cmake" + "/usr/share/cmake-3.7/Modules/Compiler/GNU-C-FeatureTests.cmake" + "/usr/share/cmake-3.7/Modules/Compiler/GNU-C.cmake" + "/usr/share/cmake-3.7/Modules/Compiler/GNU-CXX-FeatureTests.cmake" + "/usr/share/cmake-3.7/Modules/Compiler/GNU-CXX.cmake" + "/usr/share/cmake-3.7/Modules/Compiler/GNU-DetermineCompiler.cmake" + "/usr/share/cmake-3.7/Modules/Compiler/GNU.cmake" + "/usr/share/cmake-3.7/Modules/Compiler/HP-C-DetermineCompiler.cmake" + "/usr/share/cmake-3.7/Modules/Compiler/HP-CXX-DetermineCompiler.cmake" + "/usr/share/cmake-3.7/Modules/Compiler/IAR-DetermineCompiler.cmake" + "/usr/share/cmake-3.7/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake" + "/usr/share/cmake-3.7/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake" + "/usr/share/cmake-3.7/Modules/Compiler/Intel-DetermineCompiler.cmake" + "/usr/share/cmake-3.7/Modules/Compiler/MIPSpro-DetermineCompiler.cmake" + "/usr/share/cmake-3.7/Modules/Compiler/MSVC-DetermineCompiler.cmake" + "/usr/share/cmake-3.7/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake" + "/usr/share/cmake-3.7/Modules/Compiler/PGI-DetermineCompiler.cmake" + "/usr/share/cmake-3.7/Modules/Compiler/PathScale-DetermineCompiler.cmake" + "/usr/share/cmake-3.7/Modules/Compiler/SCO-DetermineCompiler.cmake" + "/usr/share/cmake-3.7/Modules/Compiler/SDCC-C-DetermineCompiler.cmake" + "/usr/share/cmake-3.7/Modules/Compiler/SunPro-C-DetermineCompiler.cmake" + "/usr/share/cmake-3.7/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake" + "/usr/share/cmake-3.7/Modules/Compiler/TI-DetermineCompiler.cmake" + "/usr/share/cmake-3.7/Modules/Compiler/TinyCC-C-DetermineCompiler.cmake" + "/usr/share/cmake-3.7/Modules/Compiler/VisualAge-C-DetermineCompiler.cmake" + "/usr/share/cmake-3.7/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake" + "/usr/share/cmake-3.7/Modules/Compiler/Watcom-DetermineCompiler.cmake" + "/usr/share/cmake-3.7/Modules/Compiler/XL-C-DetermineCompiler.cmake" + "/usr/share/cmake-3.7/Modules/Compiler/XL-CXX-DetermineCompiler.cmake" + "/usr/share/cmake-3.7/Modules/Compiler/zOS-C-DetermineCompiler.cmake" + "/usr/share/cmake-3.7/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake" + "/usr/share/cmake-3.7/Modules/Internal/FeatureTesting.cmake" + "/usr/share/cmake-3.7/Modules/Platform/Linux-Determine-CXX.cmake" + "/usr/share/cmake-3.7/Modules/Platform/Linux-GNU-C.cmake" + "/usr/share/cmake-3.7/Modules/Platform/Linux-GNU-CXX.cmake" + "/usr/share/cmake-3.7/Modules/Platform/Linux-GNU.cmake" + "/usr/share/cmake-3.7/Modules/Platform/Linux.cmake" + "/usr/share/cmake-3.7/Modules/Platform/UnixPaths.cmake" + ) + +# The corresponding makefile is: +set(CMAKE_MAKEFILE_OUTPUTS + "Makefile" + "CMakeFiles/cmake.check_cache" + ) + +# Byproducts of CMake generate step: +set(CMAKE_MAKEFILE_PRODUCTS + "CMakeFiles/3.7.2/CMakeSystem.cmake" + "CMakeFiles/3.7.2/CMakeCCompiler.cmake" + "CMakeFiles/3.7.2/CMakeCXXCompiler.cmake" + "CMakeFiles/3.7.2/CMakeCCompiler.cmake" + "CMakeFiles/3.7.2/CMakeCXXCompiler.cmake" + "CMakeFiles/CMakeDirectoryInformation.cmake" + ) + +# Dependency information for all targets: +set(CMAKE_DEPEND_INFO_FILES + "CMakeFiles/stblib.dir/DependInfo.cmake" + ) diff --git a/src/b5t007001/stblib/CMakeFiles/Makefile2 b/src/b5t007001/stblib/CMakeFiles/Makefile2 new file mode 100644 index 00000000..23547238 --- /dev/null +++ b/src/b5t007001/stblib/CMakeFiles/Makefile2 @@ -0,0 +1,108 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.7 + +# Default target executed when no arguments are given to make. +default_target: all + +.PHONY : default_target + +# The main recursive all target +all: + +.PHONY : all + +# The main recursive preinstall target +preinstall: + +.PHONY : preinstall + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Remove some rules from gmake that .SUFFIXES does not remove. +SUFFIXES = + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E remove -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/pi/upm/src/b5t007001/stblib + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/pi/upm/src/b5t007001/stblib + +#============================================================================= +# Target rules for target CMakeFiles/stblib.dir + +# All Build rule for target. +CMakeFiles/stblib.dir/all: + $(MAKE) -f CMakeFiles/stblib.dir/build.make CMakeFiles/stblib.dir/depend + $(MAKE) -f CMakeFiles/stblib.dir/build.make CMakeFiles/stblib.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/pi/upm/src/b5t007001/stblib/CMakeFiles --progress-num=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19 "Built target stblib" +.PHONY : CMakeFiles/stblib.dir/all + +# Include target in all. +all: CMakeFiles/stblib.dir/all + +.PHONY : all + +# Build rule for subdir invocation for target. +CMakeFiles/stblib.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/pi/upm/src/b5t007001/stblib/CMakeFiles 19 + $(MAKE) -f CMakeFiles/Makefile2 CMakeFiles/stblib.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/pi/upm/src/b5t007001/stblib/CMakeFiles 0 +.PHONY : CMakeFiles/stblib.dir/rule + +# Convenience name for target. +stblib: CMakeFiles/stblib.dir/rule + +.PHONY : stblib + +# clean rule for target. +CMakeFiles/stblib.dir/clean: + $(MAKE) -f CMakeFiles/stblib.dir/build.make CMakeFiles/stblib.dir/clean +.PHONY : CMakeFiles/stblib.dir/clean + +# clean rule for target. +clean: CMakeFiles/stblib.dir/clean + +.PHONY : clean + +#============================================================================= +# Special targets to cleanup operation of make. + +# Special rule to run CMake to check the build system integrity. +# No rule that depends on this can have commands that come from listfiles +# because they might be regenerated. +cmake_check_build_system: + $(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 +.PHONY : cmake_check_build_system + diff --git a/src/b5t007001/stblib/CMakeFiles/TargetDirectories.txt b/src/b5t007001/stblib/CMakeFiles/TargetDirectories.txt new file mode 100644 index 00000000..025cddcb --- /dev/null +++ b/src/b5t007001/stblib/CMakeFiles/TargetDirectories.txt @@ -0,0 +1,3 @@ +/home/pi/upm/src/b5t007001/stblib/CMakeFiles/rebuild_cache.dir +/home/pi/upm/src/b5t007001/stblib/CMakeFiles/edit_cache.dir +/home/pi/upm/src/b5t007001/stblib/CMakeFiles/stblib.dir diff --git a/src/b5t007001/stblib/CMakeFiles/cmake.check_cache b/src/b5t007001/stblib/CMakeFiles/cmake.check_cache new file mode 100644 index 00000000..3dccd731 --- /dev/null +++ b/src/b5t007001/stblib/CMakeFiles/cmake.check_cache @@ -0,0 +1 @@ +# This file is generated by cmake for dependency checking of the CMakeCache.txt file diff --git a/src/b5t007001/stblib/CMakeFiles/feature_tests.bin b/src/b5t007001/stblib/CMakeFiles/feature_tests.bin new file mode 100755 index 0000000000000000000000000000000000000000..24cc895c41b1b4e37e4d7acd3e544724c661db4c GIT binary patch literal 12384 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 literal 0 HcmV?d00001 diff --git a/src/b5t007001/stblib/CMakeFiles/feature_tests.c b/src/b5t007001/stblib/CMakeFiles/feature_tests.c new file mode 100644 index 00000000..6590dded --- /dev/null +++ b/src/b5t007001/stblib/CMakeFiles/feature_tests.c @@ -0,0 +1,34 @@ + + const char features[] = {"\n" +"C_FEATURE:" +#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 +"1" +#else +"0" +#endif +"c_function_prototypes\n" +"C_FEATURE:" +#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L +"1" +#else +"0" +#endif +"c_restrict\n" +"C_FEATURE:" +#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 406 && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201000L +"1" +#else +"0" +#endif +"c_static_assert\n" +"C_FEATURE:" +#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L +"1" +#else +"0" +#endif +"c_variadic_macros\n" + +}; + +int main(int argc, char** argv) { (void)argv; return features[argc]; } diff --git a/src/b5t007001/stblib/CMakeFiles/feature_tests.cxx b/src/b5t007001/stblib/CMakeFiles/feature_tests.cxx new file mode 100644 index 00000000..b93418c6 --- /dev/null +++ b/src/b5t007001/stblib/CMakeFiles/feature_tests.cxx @@ -0,0 +1,405 @@ + + const char features[] = {"\n" +"CXX_FEATURE:" +#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 500 && __cplusplus >= 201402L +"1" +#else +"0" +#endif +"cxx_aggregate_default_initializers\n" +"CXX_FEATURE:" +#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 407 && __cplusplus >= 201103L +"1" +#else +"0" +#endif +"cxx_alias_templates\n" +"CXX_FEATURE:" +#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 408 && __cplusplus >= 201103L +"1" +#else +"0" +#endif +"cxx_alignas\n" +"CXX_FEATURE:" +#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 408 && __cplusplus >= 201103L +"1" +#else +"0" +#endif +"cxx_alignof\n" +"CXX_FEATURE:" +#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 408 && __cplusplus >= 201103L +"1" +#else +"0" +#endif +"cxx_attributes\n" +"CXX_FEATURE:" +#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 409 && __cplusplus > 201103L +"1" +#else +"0" +#endif +"cxx_attribute_deprecated\n" +"CXX_FEATURE:" +#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__)) +"1" +#else +"0" +#endif +"cxx_auto_type\n" +"CXX_FEATURE:" +#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 409 && __cplusplus > 201103L +"1" +#else +"0" +#endif +"cxx_binary_literals\n" +"CXX_FEATURE:" +#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 406 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__)) +"1" +#else +"0" +#endif +"cxx_constexpr\n" +"CXX_FEATURE:" +#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 409 && __cplusplus > 201103L +"1" +#else +"0" +#endif +"cxx_contextual_conversions\n" +"CXX_FEATURE:" +#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__)) +"1" +#else +"0" +#endif +"cxx_decltype\n" +"CXX_FEATURE:" +#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 409 && __cplusplus > 201103L +"1" +#else +"0" +#endif +"cxx_decltype_auto\n" +"CXX_FEATURE:" +#if ((__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) >= 40801) && __cplusplus >= 201103L +"1" +#else +"0" +#endif +"cxx_decltype_incomplete_return_types\n" +"CXX_FEATURE:" +#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__)) +"1" +#else +"0" +#endif +"cxx_default_function_template_args\n" +"CXX_FEATURE:" +#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__)) +"1" +#else +"0" +#endif +"cxx_defaulted_functions\n" +"CXX_FEATURE:" +#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 406 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__)) +"1" +#else +"0" +#endif +"cxx_defaulted_move_initializers\n" +"CXX_FEATURE:" +#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 407 && __cplusplus >= 201103L +"1" +#else +"0" +#endif +"cxx_delegating_constructors\n" +"CXX_FEATURE:" +#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__)) +"1" +#else +"0" +#endif +"cxx_deleted_functions\n" +"CXX_FEATURE:" +#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 409 && __cplusplus > 201103L +"1" +#else +"0" +#endif +"cxx_digit_separators\n" +"CXX_FEATURE:" +#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 406 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__)) +"1" +#else +"0" +#endif +"cxx_enum_forward_declarations\n" +"CXX_FEATURE:" +#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 405 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__)) +"1" +#else +"0" +#endif +"cxx_explicit_conversions\n" +"CXX_FEATURE:" +#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 407 && __cplusplus >= 201103L +"1" +#else +"0" +#endif +"cxx_extended_friend_declarations\n" +"CXX_FEATURE:" +#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__)) +"1" +#else +"0" +#endif +"cxx_extern_templates\n" +"CXX_FEATURE:" +#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 407 && __cplusplus >= 201103L +"1" +#else +"0" +#endif +"cxx_final\n" +"CXX_FEATURE:" +#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__)) +"1" +#else +"0" +#endif +"cxx_func_identifier\n" +"CXX_FEATURE:" +#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__)) +"1" +#else +"0" +#endif +"cxx_generalized_initializers\n" +"CXX_FEATURE:" +#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 409 && __cplusplus > 201103L +"1" +#else +"0" +#endif +"cxx_generic_lambdas\n" +"CXX_FEATURE:" +#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 408 && __cplusplus >= 201103L +"1" +#else +"0" +#endif +"cxx_inheriting_constructors\n" +"CXX_FEATURE:" +#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__)) +"1" +#else +"0" +#endif +"cxx_inline_namespaces\n" +"CXX_FEATURE:" +#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 405 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__)) +"1" +#else +"0" +#endif +"cxx_lambdas\n" +"CXX_FEATURE:" +#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 409 && __cplusplus > 201103L +"1" +#else +"0" +#endif +"cxx_lambda_init_captures\n" +"CXX_FEATURE:" +#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 405 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__)) +"1" +#else +"0" +#endif +"cxx_local_type_template_args\n" +"CXX_FEATURE:" +#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__)) +"1" +#else +"0" +#endif +"cxx_long_long_type\n" +"CXX_FEATURE:" +#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 406 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__)) +"1" +#else +"0" +#endif +"cxx_noexcept\n" +"CXX_FEATURE:" +#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 407 && __cplusplus >= 201103L +"1" +#else +"0" +#endif +"cxx_nonstatic_member_init\n" +"CXX_FEATURE:" +#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 406 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__)) +"1" +#else +"0" +#endif +"cxx_nullptr\n" +"CXX_FEATURE:" +#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 407 && __cplusplus >= 201103L +"1" +#else +"0" +#endif +"cxx_override\n" +"CXX_FEATURE:" +#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 406 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__)) +"1" +#else +"0" +#endif +"cxx_range_for\n" +"CXX_FEATURE:" +#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 405 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__)) +"1" +#else +"0" +#endif +"cxx_raw_string_literals\n" +"CXX_FEATURE:" +#if ((__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) >= 40801) && __cplusplus >= 201103L +"1" +#else +"0" +#endif +"cxx_reference_qualified_functions\n" +"CXX_FEATURE:" +#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 500 && __cplusplus >= 201402L +"1" +#else +"0" +#endif +"cxx_relaxed_constexpr\n" +"CXX_FEATURE:" +#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 409 && __cplusplus > 201103L +"1" +#else +"0" +#endif +"cxx_return_type_deduction\n" +"CXX_FEATURE:" +#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__)) +"1" +#else +"0" +#endif +"cxx_right_angle_brackets\n" +"CXX_FEATURE:" +#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__)) +"1" +#else +"0" +#endif +"cxx_rvalue_references\n" +"CXX_FEATURE:" +#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__)) +"1" +#else +"0" +#endif +"cxx_sizeof_member\n" +"CXX_FEATURE:" +#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__)) +"1" +#else +"0" +#endif +"cxx_static_assert\n" +"CXX_FEATURE:" +#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__)) +"1" +#else +"0" +#endif +"cxx_strong_enums\n" +"CXX_FEATURE:" +#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && __cplusplus +"1" +#else +"0" +#endif +"cxx_template_template_parameters\n" +"CXX_FEATURE:" +#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 408 && __cplusplus >= 201103L +"1" +#else +"0" +#endif +"cxx_thread_local\n" +"CXX_FEATURE:" +#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__)) +"1" +#else +"0" +#endif +"cxx_trailing_return_types\n" +"CXX_FEATURE:" +#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__)) +"1" +#else +"0" +#endif +"cxx_unicode_literals\n" +"CXX_FEATURE:" +#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__)) +"1" +#else +"0" +#endif +"cxx_uniform_initialization\n" +"CXX_FEATURE:" +#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 406 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__)) +"1" +#else +"0" +#endif +"cxx_unrestricted_unions\n" +"CXX_FEATURE:" +#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 407 && __cplusplus >= 201103L +"1" +#else +"0" +#endif +"cxx_user_literals\n" +"CXX_FEATURE:" +#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 500 && __cplusplus >= 201402L +"1" +#else +"0" +#endif +"cxx_variable_templates\n" +"CXX_FEATURE:" +#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__)) +"1" +#else +"0" +#endif +"cxx_variadic_macros\n" +"CXX_FEATURE:" +#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__)) +"1" +#else +"0" +#endif +"cxx_variadic_templates\n" + +}; + +int main(int argc, char** argv) { (void)argv; return features[argc]; } diff --git a/src/b5t007001/stblib/CMakeFiles/progress.marks b/src/b5t007001/stblib/CMakeFiles/progress.marks new file mode 100644 index 00000000..d6b24041 --- /dev/null +++ b/src/b5t007001/stblib/CMakeFiles/progress.marks @@ -0,0 +1 @@ +19 diff --git a/src/b5t007001/stblib/CMakeFiles/stblib.dir/C.includecache b/src/b5t007001/stblib/CMakeFiles/stblib.dir/C.includecache new file mode 100644 index 00000000..fa9c6a3b --- /dev/null +++ b/src/b5t007001/stblib/CMakeFiles/stblib.dir/C.includecache @@ -0,0 +1,288 @@ +#IncludeRegexLine: ^[ ]*#[ ]*(include|import)[ ]*[<"]([^">]+)([">]) + +#IncludeRegexScan: ^.*$ + +#IncludeRegexComplain: ^$ + +#IncludeRegexTransform: + +/home/pi/upm/src/b5t007001/stblib/src/STB/Interface.c +Interface.h +/home/pi/upm/src/b5t007001/stblib/src/STB/Interface.h +STBValidValue.h +/home/pi/upm/src/b5t007001/stblib/src/STB/STBValidValue.h +STBCommonDef.h +/home/pi/upm/src/b5t007001/stblib/src/STB/STBCommonDef.h +STBTracking.h +/home/pi/upm/src/b5t007001/stblib/src/STB/STBTracking.h +STBFaceInfo.h +/home/pi/upm/src/b5t007001/stblib/src/STB/STBFaceInfo.h +STBMakeResult.h +/home/pi/upm/src/b5t007001/stblib/src/STB/STBMakeResult.h + +/home/pi/upm/src/b5t007001/stblib/src/STB/Interface.h +STBTypedefInput.h +/home/pi/upm/src/b5t007001/stblib/src/STB/STBTypedefInput.h +STBHandle.h +/home/pi/upm/src/b5t007001/stblib/src/STB/STBHandle.h + +/home/pi/upm/src/b5t007001/stblib/src/STB/STBAPI.c +Interface.h +/home/pi/upm/src/b5t007001/stblib/src/STB/Interface.h +STBAPI.h +/home/pi/upm/src/b5t007001/stblib/src/STB/STBAPI.h + +/home/pi/upm/src/b5t007001/stblib/src/STB/STBAPI.h +STBTypedefInput.h +/home/pi/upm/src/b5t007001/stblib/src/STB/STBTypedefInput.h +STBTypedefOutput.h +/home/pi/upm/src/b5t007001/stblib/src/STB/STBTypedefOutput.h + +/home/pi/upm/src/b5t007001/stblib/src/STB/STBFaceInfo.c +STBCommonDef.h +/home/pi/upm/src/b5t007001/stblib/src/STB/STBCommonDef.h +STBFaceInfo.h +/home/pi/upm/src/b5t007001/stblib/src/STB/STBFaceInfo.h +STB_Debug.h +/home/pi/upm/src/b5t007001/stblib/src/STB/STB_Debug.h +STBValidValue.h +/home/pi/upm/src/b5t007001/stblib/src/STB/STBValidValue.h + +/home/pi/upm/src/b5t007001/stblib/src/STB/STBMakeResult.c +STBMakeResult.h +/home/pi/upm/src/b5t007001/stblib/src/STB/STBMakeResult.h + +/home/pi/upm/src/b5t007001/stblib/src/STB/STBTracking.c +STBTracking.h +/home/pi/upm/src/b5t007001/stblib/src/STB/STBTracking.h +STB_Debug.h +/home/pi/upm/src/b5t007001/stblib/src/STB/STB_Debug.h + +/home/pi/upm/src/b5t007001/stblib/src/STB/STBValidValue.c +STBValidValue.h +/home/pi/upm/src/b5t007001/stblib/src/STB/STBValidValue.h + +/home/pi/upm/src/b5t007001/stblib/src/STB/STBValidValue.h +STBTypedefInput.h +/home/pi/upm/src/b5t007001/stblib/src/STB/STBTypedefInput.h +STBCommonDef.h +/home/pi/upm/src/b5t007001/stblib/src/STB/STBCommonDef.h +STBCommonType.h +/home/pi/upm/src/b5t007001/stblib/src/STB/STBCommonType.h + +/home/pi/upm/src/b5t007001/stblib/src/STB_FaceRecognition/FrInterface.c +FrInterface.h +/home/pi/upm/src/b5t007001/stblib/src/STB_FaceRecognition/FrInterface.h +STBFrAPI.h +/home/pi/upm/src/b5t007001/stblib/src/STB_FaceRecognition/STBFrAPI.h + +/home/pi/upm/src/b5t007001/stblib/src/STB_FaceRecognition/FrInterface.h +STBFrTypedef.h +/home/pi/upm/src/b5t007001/stblib/src/STB_FaceRecognition/STBFrTypedef.h +STBCommonDef.h +/home/pi/upm/src/b5t007001/stblib/src/STB_FaceRecognition/STBCommonDef.h +STBCommonType.h +/home/pi/upm/src/b5t007001/stblib/src/STB_FaceRecognition/STBCommonType.h +STBFrValidValue.h +/home/pi/upm/src/b5t007001/stblib/src/STB_FaceRecognition/STBFrValidValue.h + +/home/pi/upm/src/b5t007001/stblib/src/STB_FaceRecognition/STBFrAPI.c +STBFrAPI.h +/home/pi/upm/src/b5t007001/stblib/src/STB_FaceRecognition/STBFrAPI.h + +/home/pi/upm/src/b5t007001/stblib/src/STB_FaceRecognition/STBFrAPI.h +FrInterface.h +/home/pi/upm/src/b5t007001/stblib/src/STB_FaceRecognition/FrInterface.h + +/home/pi/upm/src/b5t007001/stblib/src/STB_FaceRecognition/STBFrValidValue.c +STBFrValidValue.h +/home/pi/upm/src/b5t007001/stblib/src/STB_FaceRecognition/STBFrValidValue.h + +/home/pi/upm/src/b5t007001/stblib/src/STB_FaceRecognition/STBFrValidValue.h +STBCommonDef.h +/home/pi/upm/src/b5t007001/stblib/src/STB_FaceRecognition/STBCommonDef.h +STBCommonType.h +/home/pi/upm/src/b5t007001/stblib/src/STB_FaceRecognition/STBCommonType.h +STBFrTypedef.h +/home/pi/upm/src/b5t007001/stblib/src/STB_FaceRecognition/STBFrTypedef.h + +/home/pi/upm/src/b5t007001/stblib/src/STB_FaceRecognition/SdkSTBFr.c +SdkSTBFr.h +/home/pi/upm/src/b5t007001/stblib/src/STB_FaceRecognition/SdkSTBFr.h +FrInterface.h +/home/pi/upm/src/b5t007001/stblib/src/STB_FaceRecognition/FrInterface.h + +/home/pi/upm/src/b5t007001/stblib/src/STB_FaceRecognition/SdkSTBFr.h +STBFrTypedef.h +/home/pi/upm/src/b5t007001/stblib/src/STB_FaceRecognition/STBFrTypedef.h + +/home/pi/upm/src/b5t007001/stblib/src/STB_Property/PeInterface.c +PeInterface.h +/home/pi/upm/src/b5t007001/stblib/src/STB_Property/PeInterface.h +STBPeAPI.h +/home/pi/upm/src/b5t007001/stblib/src/STB_Property/STBPeAPI.h + +/home/pi/upm/src/b5t007001/stblib/src/STB_Property/PeInterface.h +STBPeTypedef.h +/home/pi/upm/src/b5t007001/stblib/src/STB_Property/STBPeTypedef.h +STBPeValidValue.h +/home/pi/upm/src/b5t007001/stblib/src/STB_Property/STBPeValidValue.h + +/home/pi/upm/src/b5t007001/stblib/src/STB_Property/STBPeAPI.c +STBPeAPI.h +/home/pi/upm/src/b5t007001/stblib/src/STB_Property/STBPeAPI.h + +/home/pi/upm/src/b5t007001/stblib/src/STB_Property/STBPeAPI.h +PeInterface.h +/home/pi/upm/src/b5t007001/stblib/src/STB_Property/PeInterface.h + +/home/pi/upm/src/b5t007001/stblib/src/STB_Property/STBPeValidValue.c +STBPeValidValue.h +/home/pi/upm/src/b5t007001/stblib/src/STB_Property/STBPeValidValue.h + +/home/pi/upm/src/b5t007001/stblib/src/STB_Property/STBPeValidValue.h +STBCommonDef.h +/home/pi/upm/src/b5t007001/stblib/src/STB_Property/STBCommonDef.h +STBCommonType.h +/home/pi/upm/src/b5t007001/stblib/src/STB_Property/STBCommonType.h +STBPeTypedef.h +/home/pi/upm/src/b5t007001/stblib/src/STB_Property/STBPeTypedef.h + +/home/pi/upm/src/b5t007001/stblib/src/STB_Property/SdkSTBPe.c +SdkSTBPe.h +/home/pi/upm/src/b5t007001/stblib/src/STB_Property/SdkSTBPe.h +PeInterface.h +/home/pi/upm/src/b5t007001/stblib/src/STB_Property/PeInterface.h + +/home/pi/upm/src/b5t007001/stblib/src/STB_Property/SdkSTBPe.h +STBPeTypedef.h +/home/pi/upm/src/b5t007001/stblib/src/STB_Property/STBPeTypedef.h + +/home/pi/upm/src/b5t007001/stblib/src/STB_Tracker/STBTrAPI.c +STBTrAPI.h +/home/pi/upm/src/b5t007001/stblib/src/STB_Tracker/STBTrAPI.h + +/home/pi/upm/src/b5t007001/stblib/src/STB_Tracker/STBTrAPI.h +TrInterface.h +/home/pi/upm/src/b5t007001/stblib/src/STB_Tracker/TrInterface.h +math.h +/home/pi/upm/src/b5t007001/stblib/src/STB_Tracker/math.h + +/home/pi/upm/src/b5t007001/stblib/src/STB_Tracker/STBTrValidValue.c +STBTrValidValue.h +/home/pi/upm/src/b5t007001/stblib/src/STB_Tracker/STBTrValidValue.h + +/home/pi/upm/src/b5t007001/stblib/src/STB_Tracker/STBTrValidValue.h +STBCommonDef.h +/home/pi/upm/src/b5t007001/stblib/src/STB_Tracker/STBCommonDef.h +STBCommonType.h +/home/pi/upm/src/b5t007001/stblib/src/STB_Tracker/STBCommonType.h +STBTrTypedef.h +/home/pi/upm/src/b5t007001/stblib/src/STB_Tracker/STBTrTypedef.h + +/home/pi/upm/src/b5t007001/stblib/src/STB_Tracker/SdkSTBTr.c +SdkSTBTr.h +/home/pi/upm/src/b5t007001/stblib/src/STB_Tracker/SdkSTBTr.h +TrInterface.h +/home/pi/upm/src/b5t007001/stblib/src/STB_Tracker/TrInterface.h + +/home/pi/upm/src/b5t007001/stblib/src/STB_Tracker/SdkSTBTr.h +STBTrTypedef.h +/home/pi/upm/src/b5t007001/stblib/src/STB_Tracker/STBTrTypedef.h + +/home/pi/upm/src/b5t007001/stblib/src/STB_Tracker/TrInterface.c +TrInterface.h +/home/pi/upm/src/b5t007001/stblib/src/STB_Tracker/TrInterface.h +STBTrAPI.h +/home/pi/upm/src/b5t007001/stblib/src/STB_Tracker/STBTrAPI.h + +/home/pi/upm/src/b5t007001/stblib/src/STB_Tracker/TrInterface.h +STBTrTypedef.h +/home/pi/upm/src/b5t007001/stblib/src/STB_Tracker/STBTrTypedef.h +STBCommonDef.h +/home/pi/upm/src/b5t007001/stblib/src/STB_Tracker/STBCommonDef.h +STBCommonType.h +/home/pi/upm/src/b5t007001/stblib/src/STB_Tracker/STBCommonType.h +STBTrValidValue.h +/home/pi/upm/src/b5t007001/stblib/src/STB_Tracker/STBTrValidValue.h + +src/include/STBCommonDef.h +stdlib.h +- + +src/include/STBCommonType.h +STBTypedefOutput.h +src/include/STBTypedefOutput.h + +src/include/STBFaceInfo.h +STBTypedefInput.h +src/include/STBTypedefInput.h +STBHandle.h +src/include/STBHandle.h + +src/include/STBFrTypedef.h +STBTypedefOutput.h +src/include/STBTypedefOutput.h +STBCommonType.h +src/include/STBCommonType.h +STBCommonDef.h +src/include/STBCommonDef.h + +src/include/STBHandle.h +STBTypedefOutput.h +src/include/STBTypedefOutput.h +STBCommonType.h +src/include/STBCommonType.h +SdkSTBTr.h +src/include/SdkSTBTr.h +SdkSTBPe.h +src/include/SdkSTBPe.h +SdkSTBFr.h +src/include/SdkSTBFr.h + +src/include/STBMakeResult.h +STBHandle.h +src/include/STBHandle.h + +src/include/STBPeTypedef.h +STBTypedefOutput.h +src/include/STBTypedefOutput.h +STBCommonType.h +src/include/STBCommonType.h +STBCommonDef.h +src/include/STBCommonDef.h + +src/include/STBTrTypedef.h +STBTypedefOutput.h +src/include/STBTypedefOutput.h +STBCommonType.h +src/include/STBCommonType.h +STBCommonDef.h +src/include/STBCommonDef.h + +src/include/STBTracking.h +STBTypedefInput.h +src/include/STBTypedefInput.h +STBHandle.h +src/include/STBHandle.h + +src/include/STBTypedefInput.h + +src/include/STBTypedefOutput.h + +src/include/STB_Debug.h +assert.h +- + +src/include/SdkSTBFr.h +STBFrTypedef.h +src/include/STBFrTypedef.h + +src/include/SdkSTBPe.h +STBPeTypedef.h +src/include/STBPeTypedef.h + +src/include/SdkSTBTr.h +STBTrTypedef.h +src/include/STBTrTypedef.h + diff --git a/src/b5t007001/stblib/CMakeFiles/stblib.dir/DependInfo.cmake b/src/b5t007001/stblib/CMakeFiles/stblib.dir/DependInfo.cmake new file mode 100644 index 00000000..e3f43c59 --- /dev/null +++ b/src/b5t007001/stblib/CMakeFiles/stblib.dir/DependInfo.cmake @@ -0,0 +1,38 @@ +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + "C" + ) +# The set of files for implicit dependencies of each language: +set(CMAKE_DEPENDS_CHECK_C + "/home/pi/upm/src/b5t007001/stblib/src/STB/Interface.c" "/home/pi/upm/src/b5t007001/stblib/CMakeFiles/stblib.dir/src/STB/Interface.o" + "/home/pi/upm/src/b5t007001/stblib/src/STB/STBAPI.c" "/home/pi/upm/src/b5t007001/stblib/CMakeFiles/stblib.dir/src/STB/STBAPI.o" + "/home/pi/upm/src/b5t007001/stblib/src/STB/STBFaceInfo.c" "/home/pi/upm/src/b5t007001/stblib/CMakeFiles/stblib.dir/src/STB/STBFaceInfo.o" + "/home/pi/upm/src/b5t007001/stblib/src/STB/STBMakeResult.c" "/home/pi/upm/src/b5t007001/stblib/CMakeFiles/stblib.dir/src/STB/STBMakeResult.o" + "/home/pi/upm/src/b5t007001/stblib/src/STB/STBTracking.c" "/home/pi/upm/src/b5t007001/stblib/CMakeFiles/stblib.dir/src/STB/STBTracking.o" + "/home/pi/upm/src/b5t007001/stblib/src/STB/STBValidValue.c" "/home/pi/upm/src/b5t007001/stblib/CMakeFiles/stblib.dir/src/STB/STBValidValue.o" + "/home/pi/upm/src/b5t007001/stblib/src/STB_FaceRecognition/FrInterface.c" "/home/pi/upm/src/b5t007001/stblib/CMakeFiles/stblib.dir/src/STB_FaceRecognition/FrInterface.o" + "/home/pi/upm/src/b5t007001/stblib/src/STB_FaceRecognition/STBFrAPI.c" "/home/pi/upm/src/b5t007001/stblib/CMakeFiles/stblib.dir/src/STB_FaceRecognition/STBFrAPI.o" + "/home/pi/upm/src/b5t007001/stblib/src/STB_FaceRecognition/STBFrValidValue.c" "/home/pi/upm/src/b5t007001/stblib/CMakeFiles/stblib.dir/src/STB_FaceRecognition/STBFrValidValue.o" + "/home/pi/upm/src/b5t007001/stblib/src/STB_FaceRecognition/SdkSTBFr.c" "/home/pi/upm/src/b5t007001/stblib/CMakeFiles/stblib.dir/src/STB_FaceRecognition/SdkSTBFr.o" + "/home/pi/upm/src/b5t007001/stblib/src/STB_Property/PeInterface.c" "/home/pi/upm/src/b5t007001/stblib/CMakeFiles/stblib.dir/src/STB_Property/PeInterface.o" + "/home/pi/upm/src/b5t007001/stblib/src/STB_Property/STBPeAPI.c" "/home/pi/upm/src/b5t007001/stblib/CMakeFiles/stblib.dir/src/STB_Property/STBPeAPI.o" + "/home/pi/upm/src/b5t007001/stblib/src/STB_Property/STBPeValidValue.c" "/home/pi/upm/src/b5t007001/stblib/CMakeFiles/stblib.dir/src/STB_Property/STBPeValidValue.o" + "/home/pi/upm/src/b5t007001/stblib/src/STB_Property/SdkSTBPe.c" "/home/pi/upm/src/b5t007001/stblib/CMakeFiles/stblib.dir/src/STB_Property/SdkSTBPe.o" + "/home/pi/upm/src/b5t007001/stblib/src/STB_Tracker/STBTrAPI.c" "/home/pi/upm/src/b5t007001/stblib/CMakeFiles/stblib.dir/src/STB_Tracker/STBTrAPI.o" + "/home/pi/upm/src/b5t007001/stblib/src/STB_Tracker/STBTrValidValue.c" "/home/pi/upm/src/b5t007001/stblib/CMakeFiles/stblib.dir/src/STB_Tracker/STBTrValidValue.o" + "/home/pi/upm/src/b5t007001/stblib/src/STB_Tracker/SdkSTBTr.c" "/home/pi/upm/src/b5t007001/stblib/CMakeFiles/stblib.dir/src/STB_Tracker/SdkSTBTr.o" + "/home/pi/upm/src/b5t007001/stblib/src/STB_Tracker/TrInterface.c" "/home/pi/upm/src/b5t007001/stblib/CMakeFiles/stblib.dir/src/STB_Tracker/TrInterface.o" + ) +set(CMAKE_C_COMPILER_ID "GNU") + +# The include file search paths: +set(CMAKE_C_TARGET_INCLUDE_PATH + "src/include" + ) + +# Targets to which this target links. +set(CMAKE_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/src/b5t007001/stblib/CMakeFiles/stblib.dir/build.make b/src/b5t007001/stblib/CMakeFiles/stblib.dir/build.make new file mode 100644 index 00000000..651c6231 --- /dev/null +++ b/src/b5t007001/stblib/CMakeFiles/stblib.dir/build.make @@ -0,0 +1,573 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.7 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Remove some rules from gmake that .SUFFIXES does not remove. +SUFFIXES = + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E remove -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/pi/upm/src/b5t007001/stblib + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/pi/upm/src/b5t007001/stblib + +# Include any dependencies generated for this target. +include CMakeFiles/stblib.dir/depend.make + +# Include the progress variables for this target. +include CMakeFiles/stblib.dir/progress.make + +# Include the compile flags for this target's objects. +include CMakeFiles/stblib.dir/flags.make + +CMakeFiles/stblib.dir/src/STB/Interface.o: CMakeFiles/stblib.dir/flags.make +CMakeFiles/stblib.dir/src/STB/Interface.o: src/STB/Interface.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/pi/upm/src/b5t007001/stblib/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building C object CMakeFiles/stblib.dir/src/STB/Interface.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/stblib.dir/src/STB/Interface.o -c /home/pi/upm/src/b5t007001/stblib/src/STB/Interface.c + +CMakeFiles/stblib.dir/src/STB/Interface.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/stblib.dir/src/STB/Interface.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/pi/upm/src/b5t007001/stblib/src/STB/Interface.c > CMakeFiles/stblib.dir/src/STB/Interface.i + +CMakeFiles/stblib.dir/src/STB/Interface.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/stblib.dir/src/STB/Interface.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/pi/upm/src/b5t007001/stblib/src/STB/Interface.c -o CMakeFiles/stblib.dir/src/STB/Interface.s + +CMakeFiles/stblib.dir/src/STB/Interface.o.requires: + +.PHONY : CMakeFiles/stblib.dir/src/STB/Interface.o.requires + +CMakeFiles/stblib.dir/src/STB/Interface.o.provides: CMakeFiles/stblib.dir/src/STB/Interface.o.requires + $(MAKE) -f CMakeFiles/stblib.dir/build.make CMakeFiles/stblib.dir/src/STB/Interface.o.provides.build +.PHONY : CMakeFiles/stblib.dir/src/STB/Interface.o.provides + +CMakeFiles/stblib.dir/src/STB/Interface.o.provides.build: CMakeFiles/stblib.dir/src/STB/Interface.o + + +CMakeFiles/stblib.dir/src/STB/STBAPI.o: CMakeFiles/stblib.dir/flags.make +CMakeFiles/stblib.dir/src/STB/STBAPI.o: src/STB/STBAPI.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/pi/upm/src/b5t007001/stblib/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Building C object CMakeFiles/stblib.dir/src/STB/STBAPI.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/stblib.dir/src/STB/STBAPI.o -c /home/pi/upm/src/b5t007001/stblib/src/STB/STBAPI.c + +CMakeFiles/stblib.dir/src/STB/STBAPI.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/stblib.dir/src/STB/STBAPI.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/pi/upm/src/b5t007001/stblib/src/STB/STBAPI.c > CMakeFiles/stblib.dir/src/STB/STBAPI.i + +CMakeFiles/stblib.dir/src/STB/STBAPI.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/stblib.dir/src/STB/STBAPI.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/pi/upm/src/b5t007001/stblib/src/STB/STBAPI.c -o CMakeFiles/stblib.dir/src/STB/STBAPI.s + +CMakeFiles/stblib.dir/src/STB/STBAPI.o.requires: + +.PHONY : CMakeFiles/stblib.dir/src/STB/STBAPI.o.requires + +CMakeFiles/stblib.dir/src/STB/STBAPI.o.provides: CMakeFiles/stblib.dir/src/STB/STBAPI.o.requires + $(MAKE) -f CMakeFiles/stblib.dir/build.make CMakeFiles/stblib.dir/src/STB/STBAPI.o.provides.build +.PHONY : CMakeFiles/stblib.dir/src/STB/STBAPI.o.provides + +CMakeFiles/stblib.dir/src/STB/STBAPI.o.provides.build: CMakeFiles/stblib.dir/src/STB/STBAPI.o + + +CMakeFiles/stblib.dir/src/STB/STBFaceInfo.o: CMakeFiles/stblib.dir/flags.make +CMakeFiles/stblib.dir/src/STB/STBFaceInfo.o: src/STB/STBFaceInfo.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/pi/upm/src/b5t007001/stblib/CMakeFiles --progress-num=$(CMAKE_PROGRESS_3) "Building C object CMakeFiles/stblib.dir/src/STB/STBFaceInfo.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/stblib.dir/src/STB/STBFaceInfo.o -c /home/pi/upm/src/b5t007001/stblib/src/STB/STBFaceInfo.c + +CMakeFiles/stblib.dir/src/STB/STBFaceInfo.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/stblib.dir/src/STB/STBFaceInfo.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/pi/upm/src/b5t007001/stblib/src/STB/STBFaceInfo.c > CMakeFiles/stblib.dir/src/STB/STBFaceInfo.i + +CMakeFiles/stblib.dir/src/STB/STBFaceInfo.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/stblib.dir/src/STB/STBFaceInfo.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/pi/upm/src/b5t007001/stblib/src/STB/STBFaceInfo.c -o CMakeFiles/stblib.dir/src/STB/STBFaceInfo.s + +CMakeFiles/stblib.dir/src/STB/STBFaceInfo.o.requires: + +.PHONY : CMakeFiles/stblib.dir/src/STB/STBFaceInfo.o.requires + +CMakeFiles/stblib.dir/src/STB/STBFaceInfo.o.provides: CMakeFiles/stblib.dir/src/STB/STBFaceInfo.o.requires + $(MAKE) -f CMakeFiles/stblib.dir/build.make CMakeFiles/stblib.dir/src/STB/STBFaceInfo.o.provides.build +.PHONY : CMakeFiles/stblib.dir/src/STB/STBFaceInfo.o.provides + +CMakeFiles/stblib.dir/src/STB/STBFaceInfo.o.provides.build: CMakeFiles/stblib.dir/src/STB/STBFaceInfo.o + + +CMakeFiles/stblib.dir/src/STB/STBMakeResult.o: CMakeFiles/stblib.dir/flags.make +CMakeFiles/stblib.dir/src/STB/STBMakeResult.o: src/STB/STBMakeResult.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/pi/upm/src/b5t007001/stblib/CMakeFiles --progress-num=$(CMAKE_PROGRESS_4) "Building C object CMakeFiles/stblib.dir/src/STB/STBMakeResult.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/stblib.dir/src/STB/STBMakeResult.o -c /home/pi/upm/src/b5t007001/stblib/src/STB/STBMakeResult.c + +CMakeFiles/stblib.dir/src/STB/STBMakeResult.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/stblib.dir/src/STB/STBMakeResult.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/pi/upm/src/b5t007001/stblib/src/STB/STBMakeResult.c > CMakeFiles/stblib.dir/src/STB/STBMakeResult.i + +CMakeFiles/stblib.dir/src/STB/STBMakeResult.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/stblib.dir/src/STB/STBMakeResult.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/pi/upm/src/b5t007001/stblib/src/STB/STBMakeResult.c -o CMakeFiles/stblib.dir/src/STB/STBMakeResult.s + +CMakeFiles/stblib.dir/src/STB/STBMakeResult.o.requires: + +.PHONY : CMakeFiles/stblib.dir/src/STB/STBMakeResult.o.requires + +CMakeFiles/stblib.dir/src/STB/STBMakeResult.o.provides: CMakeFiles/stblib.dir/src/STB/STBMakeResult.o.requires + $(MAKE) -f CMakeFiles/stblib.dir/build.make CMakeFiles/stblib.dir/src/STB/STBMakeResult.o.provides.build +.PHONY : CMakeFiles/stblib.dir/src/STB/STBMakeResult.o.provides + +CMakeFiles/stblib.dir/src/STB/STBMakeResult.o.provides.build: CMakeFiles/stblib.dir/src/STB/STBMakeResult.o + + +CMakeFiles/stblib.dir/src/STB/STBTracking.o: CMakeFiles/stblib.dir/flags.make +CMakeFiles/stblib.dir/src/STB/STBTracking.o: src/STB/STBTracking.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/pi/upm/src/b5t007001/stblib/CMakeFiles --progress-num=$(CMAKE_PROGRESS_5) "Building C object CMakeFiles/stblib.dir/src/STB/STBTracking.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/stblib.dir/src/STB/STBTracking.o -c /home/pi/upm/src/b5t007001/stblib/src/STB/STBTracking.c + +CMakeFiles/stblib.dir/src/STB/STBTracking.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/stblib.dir/src/STB/STBTracking.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/pi/upm/src/b5t007001/stblib/src/STB/STBTracking.c > CMakeFiles/stblib.dir/src/STB/STBTracking.i + +CMakeFiles/stblib.dir/src/STB/STBTracking.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/stblib.dir/src/STB/STBTracking.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/pi/upm/src/b5t007001/stblib/src/STB/STBTracking.c -o CMakeFiles/stblib.dir/src/STB/STBTracking.s + +CMakeFiles/stblib.dir/src/STB/STBTracking.o.requires: + +.PHONY : CMakeFiles/stblib.dir/src/STB/STBTracking.o.requires + +CMakeFiles/stblib.dir/src/STB/STBTracking.o.provides: CMakeFiles/stblib.dir/src/STB/STBTracking.o.requires + $(MAKE) -f CMakeFiles/stblib.dir/build.make CMakeFiles/stblib.dir/src/STB/STBTracking.o.provides.build +.PHONY : CMakeFiles/stblib.dir/src/STB/STBTracking.o.provides + +CMakeFiles/stblib.dir/src/STB/STBTracking.o.provides.build: CMakeFiles/stblib.dir/src/STB/STBTracking.o + + +CMakeFiles/stblib.dir/src/STB/STBValidValue.o: CMakeFiles/stblib.dir/flags.make +CMakeFiles/stblib.dir/src/STB/STBValidValue.o: src/STB/STBValidValue.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/pi/upm/src/b5t007001/stblib/CMakeFiles --progress-num=$(CMAKE_PROGRESS_6) "Building C object CMakeFiles/stblib.dir/src/STB/STBValidValue.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/stblib.dir/src/STB/STBValidValue.o -c /home/pi/upm/src/b5t007001/stblib/src/STB/STBValidValue.c + +CMakeFiles/stblib.dir/src/STB/STBValidValue.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/stblib.dir/src/STB/STBValidValue.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/pi/upm/src/b5t007001/stblib/src/STB/STBValidValue.c > CMakeFiles/stblib.dir/src/STB/STBValidValue.i + +CMakeFiles/stblib.dir/src/STB/STBValidValue.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/stblib.dir/src/STB/STBValidValue.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/pi/upm/src/b5t007001/stblib/src/STB/STBValidValue.c -o CMakeFiles/stblib.dir/src/STB/STBValidValue.s + +CMakeFiles/stblib.dir/src/STB/STBValidValue.o.requires: + +.PHONY : CMakeFiles/stblib.dir/src/STB/STBValidValue.o.requires + +CMakeFiles/stblib.dir/src/STB/STBValidValue.o.provides: CMakeFiles/stblib.dir/src/STB/STBValidValue.o.requires + $(MAKE) -f CMakeFiles/stblib.dir/build.make CMakeFiles/stblib.dir/src/STB/STBValidValue.o.provides.build +.PHONY : CMakeFiles/stblib.dir/src/STB/STBValidValue.o.provides + +CMakeFiles/stblib.dir/src/STB/STBValidValue.o.provides.build: CMakeFiles/stblib.dir/src/STB/STBValidValue.o + + +CMakeFiles/stblib.dir/src/STB_FaceRecognition/FrInterface.o: CMakeFiles/stblib.dir/flags.make +CMakeFiles/stblib.dir/src/STB_FaceRecognition/FrInterface.o: src/STB_FaceRecognition/FrInterface.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/pi/upm/src/b5t007001/stblib/CMakeFiles --progress-num=$(CMAKE_PROGRESS_7) "Building C object CMakeFiles/stblib.dir/src/STB_FaceRecognition/FrInterface.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/stblib.dir/src/STB_FaceRecognition/FrInterface.o -c /home/pi/upm/src/b5t007001/stblib/src/STB_FaceRecognition/FrInterface.c + +CMakeFiles/stblib.dir/src/STB_FaceRecognition/FrInterface.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/stblib.dir/src/STB_FaceRecognition/FrInterface.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/pi/upm/src/b5t007001/stblib/src/STB_FaceRecognition/FrInterface.c > CMakeFiles/stblib.dir/src/STB_FaceRecognition/FrInterface.i + +CMakeFiles/stblib.dir/src/STB_FaceRecognition/FrInterface.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/stblib.dir/src/STB_FaceRecognition/FrInterface.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/pi/upm/src/b5t007001/stblib/src/STB_FaceRecognition/FrInterface.c -o CMakeFiles/stblib.dir/src/STB_FaceRecognition/FrInterface.s + +CMakeFiles/stblib.dir/src/STB_FaceRecognition/FrInterface.o.requires: + +.PHONY : CMakeFiles/stblib.dir/src/STB_FaceRecognition/FrInterface.o.requires + +CMakeFiles/stblib.dir/src/STB_FaceRecognition/FrInterface.o.provides: CMakeFiles/stblib.dir/src/STB_FaceRecognition/FrInterface.o.requires + $(MAKE) -f CMakeFiles/stblib.dir/build.make CMakeFiles/stblib.dir/src/STB_FaceRecognition/FrInterface.o.provides.build +.PHONY : CMakeFiles/stblib.dir/src/STB_FaceRecognition/FrInterface.o.provides + +CMakeFiles/stblib.dir/src/STB_FaceRecognition/FrInterface.o.provides.build: CMakeFiles/stblib.dir/src/STB_FaceRecognition/FrInterface.o + + +CMakeFiles/stblib.dir/src/STB_FaceRecognition/SdkSTBFr.o: CMakeFiles/stblib.dir/flags.make +CMakeFiles/stblib.dir/src/STB_FaceRecognition/SdkSTBFr.o: src/STB_FaceRecognition/SdkSTBFr.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/pi/upm/src/b5t007001/stblib/CMakeFiles --progress-num=$(CMAKE_PROGRESS_8) "Building C object CMakeFiles/stblib.dir/src/STB_FaceRecognition/SdkSTBFr.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/stblib.dir/src/STB_FaceRecognition/SdkSTBFr.o -c /home/pi/upm/src/b5t007001/stblib/src/STB_FaceRecognition/SdkSTBFr.c + +CMakeFiles/stblib.dir/src/STB_FaceRecognition/SdkSTBFr.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/stblib.dir/src/STB_FaceRecognition/SdkSTBFr.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/pi/upm/src/b5t007001/stblib/src/STB_FaceRecognition/SdkSTBFr.c > CMakeFiles/stblib.dir/src/STB_FaceRecognition/SdkSTBFr.i + +CMakeFiles/stblib.dir/src/STB_FaceRecognition/SdkSTBFr.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/stblib.dir/src/STB_FaceRecognition/SdkSTBFr.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/pi/upm/src/b5t007001/stblib/src/STB_FaceRecognition/SdkSTBFr.c -o CMakeFiles/stblib.dir/src/STB_FaceRecognition/SdkSTBFr.s + +CMakeFiles/stblib.dir/src/STB_FaceRecognition/SdkSTBFr.o.requires: + +.PHONY : CMakeFiles/stblib.dir/src/STB_FaceRecognition/SdkSTBFr.o.requires + +CMakeFiles/stblib.dir/src/STB_FaceRecognition/SdkSTBFr.o.provides: CMakeFiles/stblib.dir/src/STB_FaceRecognition/SdkSTBFr.o.requires + $(MAKE) -f CMakeFiles/stblib.dir/build.make CMakeFiles/stblib.dir/src/STB_FaceRecognition/SdkSTBFr.o.provides.build +.PHONY : CMakeFiles/stblib.dir/src/STB_FaceRecognition/SdkSTBFr.o.provides + +CMakeFiles/stblib.dir/src/STB_FaceRecognition/SdkSTBFr.o.provides.build: CMakeFiles/stblib.dir/src/STB_FaceRecognition/SdkSTBFr.o + + +CMakeFiles/stblib.dir/src/STB_FaceRecognition/STBFrAPI.o: CMakeFiles/stblib.dir/flags.make +CMakeFiles/stblib.dir/src/STB_FaceRecognition/STBFrAPI.o: src/STB_FaceRecognition/STBFrAPI.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/pi/upm/src/b5t007001/stblib/CMakeFiles --progress-num=$(CMAKE_PROGRESS_9) "Building C object CMakeFiles/stblib.dir/src/STB_FaceRecognition/STBFrAPI.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/stblib.dir/src/STB_FaceRecognition/STBFrAPI.o -c /home/pi/upm/src/b5t007001/stblib/src/STB_FaceRecognition/STBFrAPI.c + +CMakeFiles/stblib.dir/src/STB_FaceRecognition/STBFrAPI.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/stblib.dir/src/STB_FaceRecognition/STBFrAPI.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/pi/upm/src/b5t007001/stblib/src/STB_FaceRecognition/STBFrAPI.c > CMakeFiles/stblib.dir/src/STB_FaceRecognition/STBFrAPI.i + +CMakeFiles/stblib.dir/src/STB_FaceRecognition/STBFrAPI.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/stblib.dir/src/STB_FaceRecognition/STBFrAPI.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/pi/upm/src/b5t007001/stblib/src/STB_FaceRecognition/STBFrAPI.c -o CMakeFiles/stblib.dir/src/STB_FaceRecognition/STBFrAPI.s + +CMakeFiles/stblib.dir/src/STB_FaceRecognition/STBFrAPI.o.requires: + +.PHONY : CMakeFiles/stblib.dir/src/STB_FaceRecognition/STBFrAPI.o.requires + +CMakeFiles/stblib.dir/src/STB_FaceRecognition/STBFrAPI.o.provides: CMakeFiles/stblib.dir/src/STB_FaceRecognition/STBFrAPI.o.requires + $(MAKE) -f CMakeFiles/stblib.dir/build.make CMakeFiles/stblib.dir/src/STB_FaceRecognition/STBFrAPI.o.provides.build +.PHONY : CMakeFiles/stblib.dir/src/STB_FaceRecognition/STBFrAPI.o.provides + +CMakeFiles/stblib.dir/src/STB_FaceRecognition/STBFrAPI.o.provides.build: CMakeFiles/stblib.dir/src/STB_FaceRecognition/STBFrAPI.o + + +CMakeFiles/stblib.dir/src/STB_FaceRecognition/STBFrValidValue.o: CMakeFiles/stblib.dir/flags.make +CMakeFiles/stblib.dir/src/STB_FaceRecognition/STBFrValidValue.o: src/STB_FaceRecognition/STBFrValidValue.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/pi/upm/src/b5t007001/stblib/CMakeFiles --progress-num=$(CMAKE_PROGRESS_10) "Building C object CMakeFiles/stblib.dir/src/STB_FaceRecognition/STBFrValidValue.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/stblib.dir/src/STB_FaceRecognition/STBFrValidValue.o -c /home/pi/upm/src/b5t007001/stblib/src/STB_FaceRecognition/STBFrValidValue.c + +CMakeFiles/stblib.dir/src/STB_FaceRecognition/STBFrValidValue.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/stblib.dir/src/STB_FaceRecognition/STBFrValidValue.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/pi/upm/src/b5t007001/stblib/src/STB_FaceRecognition/STBFrValidValue.c > CMakeFiles/stblib.dir/src/STB_FaceRecognition/STBFrValidValue.i + +CMakeFiles/stblib.dir/src/STB_FaceRecognition/STBFrValidValue.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/stblib.dir/src/STB_FaceRecognition/STBFrValidValue.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/pi/upm/src/b5t007001/stblib/src/STB_FaceRecognition/STBFrValidValue.c -o CMakeFiles/stblib.dir/src/STB_FaceRecognition/STBFrValidValue.s + +CMakeFiles/stblib.dir/src/STB_FaceRecognition/STBFrValidValue.o.requires: + +.PHONY : CMakeFiles/stblib.dir/src/STB_FaceRecognition/STBFrValidValue.o.requires + +CMakeFiles/stblib.dir/src/STB_FaceRecognition/STBFrValidValue.o.provides: CMakeFiles/stblib.dir/src/STB_FaceRecognition/STBFrValidValue.o.requires + $(MAKE) -f CMakeFiles/stblib.dir/build.make CMakeFiles/stblib.dir/src/STB_FaceRecognition/STBFrValidValue.o.provides.build +.PHONY : CMakeFiles/stblib.dir/src/STB_FaceRecognition/STBFrValidValue.o.provides + +CMakeFiles/stblib.dir/src/STB_FaceRecognition/STBFrValidValue.o.provides.build: CMakeFiles/stblib.dir/src/STB_FaceRecognition/STBFrValidValue.o + + +CMakeFiles/stblib.dir/src/STB_Property/PeInterface.o: CMakeFiles/stblib.dir/flags.make +CMakeFiles/stblib.dir/src/STB_Property/PeInterface.o: src/STB_Property/PeInterface.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/pi/upm/src/b5t007001/stblib/CMakeFiles --progress-num=$(CMAKE_PROGRESS_11) "Building C object CMakeFiles/stblib.dir/src/STB_Property/PeInterface.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/stblib.dir/src/STB_Property/PeInterface.o -c /home/pi/upm/src/b5t007001/stblib/src/STB_Property/PeInterface.c + +CMakeFiles/stblib.dir/src/STB_Property/PeInterface.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/stblib.dir/src/STB_Property/PeInterface.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/pi/upm/src/b5t007001/stblib/src/STB_Property/PeInterface.c > CMakeFiles/stblib.dir/src/STB_Property/PeInterface.i + +CMakeFiles/stblib.dir/src/STB_Property/PeInterface.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/stblib.dir/src/STB_Property/PeInterface.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/pi/upm/src/b5t007001/stblib/src/STB_Property/PeInterface.c -o CMakeFiles/stblib.dir/src/STB_Property/PeInterface.s + +CMakeFiles/stblib.dir/src/STB_Property/PeInterface.o.requires: + +.PHONY : CMakeFiles/stblib.dir/src/STB_Property/PeInterface.o.requires + +CMakeFiles/stblib.dir/src/STB_Property/PeInterface.o.provides: CMakeFiles/stblib.dir/src/STB_Property/PeInterface.o.requires + $(MAKE) -f CMakeFiles/stblib.dir/build.make CMakeFiles/stblib.dir/src/STB_Property/PeInterface.o.provides.build +.PHONY : CMakeFiles/stblib.dir/src/STB_Property/PeInterface.o.provides + +CMakeFiles/stblib.dir/src/STB_Property/PeInterface.o.provides.build: CMakeFiles/stblib.dir/src/STB_Property/PeInterface.o + + +CMakeFiles/stblib.dir/src/STB_Property/SdkSTBPe.o: CMakeFiles/stblib.dir/flags.make +CMakeFiles/stblib.dir/src/STB_Property/SdkSTBPe.o: src/STB_Property/SdkSTBPe.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/pi/upm/src/b5t007001/stblib/CMakeFiles --progress-num=$(CMAKE_PROGRESS_12) "Building C object CMakeFiles/stblib.dir/src/STB_Property/SdkSTBPe.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/stblib.dir/src/STB_Property/SdkSTBPe.o -c /home/pi/upm/src/b5t007001/stblib/src/STB_Property/SdkSTBPe.c + +CMakeFiles/stblib.dir/src/STB_Property/SdkSTBPe.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/stblib.dir/src/STB_Property/SdkSTBPe.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/pi/upm/src/b5t007001/stblib/src/STB_Property/SdkSTBPe.c > CMakeFiles/stblib.dir/src/STB_Property/SdkSTBPe.i + +CMakeFiles/stblib.dir/src/STB_Property/SdkSTBPe.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/stblib.dir/src/STB_Property/SdkSTBPe.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/pi/upm/src/b5t007001/stblib/src/STB_Property/SdkSTBPe.c -o CMakeFiles/stblib.dir/src/STB_Property/SdkSTBPe.s + +CMakeFiles/stblib.dir/src/STB_Property/SdkSTBPe.o.requires: + +.PHONY : CMakeFiles/stblib.dir/src/STB_Property/SdkSTBPe.o.requires + +CMakeFiles/stblib.dir/src/STB_Property/SdkSTBPe.o.provides: CMakeFiles/stblib.dir/src/STB_Property/SdkSTBPe.o.requires + $(MAKE) -f CMakeFiles/stblib.dir/build.make CMakeFiles/stblib.dir/src/STB_Property/SdkSTBPe.o.provides.build +.PHONY : CMakeFiles/stblib.dir/src/STB_Property/SdkSTBPe.o.provides + +CMakeFiles/stblib.dir/src/STB_Property/SdkSTBPe.o.provides.build: CMakeFiles/stblib.dir/src/STB_Property/SdkSTBPe.o + + +CMakeFiles/stblib.dir/src/STB_Property/STBPeAPI.o: CMakeFiles/stblib.dir/flags.make +CMakeFiles/stblib.dir/src/STB_Property/STBPeAPI.o: src/STB_Property/STBPeAPI.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/pi/upm/src/b5t007001/stblib/CMakeFiles --progress-num=$(CMAKE_PROGRESS_13) "Building C object CMakeFiles/stblib.dir/src/STB_Property/STBPeAPI.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/stblib.dir/src/STB_Property/STBPeAPI.o -c /home/pi/upm/src/b5t007001/stblib/src/STB_Property/STBPeAPI.c + +CMakeFiles/stblib.dir/src/STB_Property/STBPeAPI.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/stblib.dir/src/STB_Property/STBPeAPI.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/pi/upm/src/b5t007001/stblib/src/STB_Property/STBPeAPI.c > CMakeFiles/stblib.dir/src/STB_Property/STBPeAPI.i + +CMakeFiles/stblib.dir/src/STB_Property/STBPeAPI.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/stblib.dir/src/STB_Property/STBPeAPI.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/pi/upm/src/b5t007001/stblib/src/STB_Property/STBPeAPI.c -o CMakeFiles/stblib.dir/src/STB_Property/STBPeAPI.s + +CMakeFiles/stblib.dir/src/STB_Property/STBPeAPI.o.requires: + +.PHONY : CMakeFiles/stblib.dir/src/STB_Property/STBPeAPI.o.requires + +CMakeFiles/stblib.dir/src/STB_Property/STBPeAPI.o.provides: CMakeFiles/stblib.dir/src/STB_Property/STBPeAPI.o.requires + $(MAKE) -f CMakeFiles/stblib.dir/build.make CMakeFiles/stblib.dir/src/STB_Property/STBPeAPI.o.provides.build +.PHONY : CMakeFiles/stblib.dir/src/STB_Property/STBPeAPI.o.provides + +CMakeFiles/stblib.dir/src/STB_Property/STBPeAPI.o.provides.build: CMakeFiles/stblib.dir/src/STB_Property/STBPeAPI.o + + +CMakeFiles/stblib.dir/src/STB_Property/STBPeValidValue.o: CMakeFiles/stblib.dir/flags.make +CMakeFiles/stblib.dir/src/STB_Property/STBPeValidValue.o: src/STB_Property/STBPeValidValue.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/pi/upm/src/b5t007001/stblib/CMakeFiles --progress-num=$(CMAKE_PROGRESS_14) "Building C object CMakeFiles/stblib.dir/src/STB_Property/STBPeValidValue.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/stblib.dir/src/STB_Property/STBPeValidValue.o -c /home/pi/upm/src/b5t007001/stblib/src/STB_Property/STBPeValidValue.c + +CMakeFiles/stblib.dir/src/STB_Property/STBPeValidValue.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/stblib.dir/src/STB_Property/STBPeValidValue.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/pi/upm/src/b5t007001/stblib/src/STB_Property/STBPeValidValue.c > CMakeFiles/stblib.dir/src/STB_Property/STBPeValidValue.i + +CMakeFiles/stblib.dir/src/STB_Property/STBPeValidValue.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/stblib.dir/src/STB_Property/STBPeValidValue.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/pi/upm/src/b5t007001/stblib/src/STB_Property/STBPeValidValue.c -o CMakeFiles/stblib.dir/src/STB_Property/STBPeValidValue.s + +CMakeFiles/stblib.dir/src/STB_Property/STBPeValidValue.o.requires: + +.PHONY : CMakeFiles/stblib.dir/src/STB_Property/STBPeValidValue.o.requires + +CMakeFiles/stblib.dir/src/STB_Property/STBPeValidValue.o.provides: CMakeFiles/stblib.dir/src/STB_Property/STBPeValidValue.o.requires + $(MAKE) -f CMakeFiles/stblib.dir/build.make CMakeFiles/stblib.dir/src/STB_Property/STBPeValidValue.o.provides.build +.PHONY : CMakeFiles/stblib.dir/src/STB_Property/STBPeValidValue.o.provides + +CMakeFiles/stblib.dir/src/STB_Property/STBPeValidValue.o.provides.build: CMakeFiles/stblib.dir/src/STB_Property/STBPeValidValue.o + + +CMakeFiles/stblib.dir/src/STB_Tracker/SdkSTBTr.o: CMakeFiles/stblib.dir/flags.make +CMakeFiles/stblib.dir/src/STB_Tracker/SdkSTBTr.o: src/STB_Tracker/SdkSTBTr.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/pi/upm/src/b5t007001/stblib/CMakeFiles --progress-num=$(CMAKE_PROGRESS_15) "Building C object CMakeFiles/stblib.dir/src/STB_Tracker/SdkSTBTr.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/stblib.dir/src/STB_Tracker/SdkSTBTr.o -c /home/pi/upm/src/b5t007001/stblib/src/STB_Tracker/SdkSTBTr.c + +CMakeFiles/stblib.dir/src/STB_Tracker/SdkSTBTr.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/stblib.dir/src/STB_Tracker/SdkSTBTr.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/pi/upm/src/b5t007001/stblib/src/STB_Tracker/SdkSTBTr.c > CMakeFiles/stblib.dir/src/STB_Tracker/SdkSTBTr.i + +CMakeFiles/stblib.dir/src/STB_Tracker/SdkSTBTr.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/stblib.dir/src/STB_Tracker/SdkSTBTr.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/pi/upm/src/b5t007001/stblib/src/STB_Tracker/SdkSTBTr.c -o CMakeFiles/stblib.dir/src/STB_Tracker/SdkSTBTr.s + +CMakeFiles/stblib.dir/src/STB_Tracker/SdkSTBTr.o.requires: + +.PHONY : CMakeFiles/stblib.dir/src/STB_Tracker/SdkSTBTr.o.requires + +CMakeFiles/stblib.dir/src/STB_Tracker/SdkSTBTr.o.provides: CMakeFiles/stblib.dir/src/STB_Tracker/SdkSTBTr.o.requires + $(MAKE) -f CMakeFiles/stblib.dir/build.make CMakeFiles/stblib.dir/src/STB_Tracker/SdkSTBTr.o.provides.build +.PHONY : CMakeFiles/stblib.dir/src/STB_Tracker/SdkSTBTr.o.provides + +CMakeFiles/stblib.dir/src/STB_Tracker/SdkSTBTr.o.provides.build: CMakeFiles/stblib.dir/src/STB_Tracker/SdkSTBTr.o + + +CMakeFiles/stblib.dir/src/STB_Tracker/STBTrAPI.o: CMakeFiles/stblib.dir/flags.make +CMakeFiles/stblib.dir/src/STB_Tracker/STBTrAPI.o: src/STB_Tracker/STBTrAPI.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/pi/upm/src/b5t007001/stblib/CMakeFiles --progress-num=$(CMAKE_PROGRESS_16) "Building C object CMakeFiles/stblib.dir/src/STB_Tracker/STBTrAPI.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/stblib.dir/src/STB_Tracker/STBTrAPI.o -c /home/pi/upm/src/b5t007001/stblib/src/STB_Tracker/STBTrAPI.c + +CMakeFiles/stblib.dir/src/STB_Tracker/STBTrAPI.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/stblib.dir/src/STB_Tracker/STBTrAPI.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/pi/upm/src/b5t007001/stblib/src/STB_Tracker/STBTrAPI.c > CMakeFiles/stblib.dir/src/STB_Tracker/STBTrAPI.i + +CMakeFiles/stblib.dir/src/STB_Tracker/STBTrAPI.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/stblib.dir/src/STB_Tracker/STBTrAPI.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/pi/upm/src/b5t007001/stblib/src/STB_Tracker/STBTrAPI.c -o CMakeFiles/stblib.dir/src/STB_Tracker/STBTrAPI.s + +CMakeFiles/stblib.dir/src/STB_Tracker/STBTrAPI.o.requires: + +.PHONY : CMakeFiles/stblib.dir/src/STB_Tracker/STBTrAPI.o.requires + +CMakeFiles/stblib.dir/src/STB_Tracker/STBTrAPI.o.provides: CMakeFiles/stblib.dir/src/STB_Tracker/STBTrAPI.o.requires + $(MAKE) -f CMakeFiles/stblib.dir/build.make CMakeFiles/stblib.dir/src/STB_Tracker/STBTrAPI.o.provides.build +.PHONY : CMakeFiles/stblib.dir/src/STB_Tracker/STBTrAPI.o.provides + +CMakeFiles/stblib.dir/src/STB_Tracker/STBTrAPI.o.provides.build: CMakeFiles/stblib.dir/src/STB_Tracker/STBTrAPI.o + + +CMakeFiles/stblib.dir/src/STB_Tracker/STBTrValidValue.o: CMakeFiles/stblib.dir/flags.make +CMakeFiles/stblib.dir/src/STB_Tracker/STBTrValidValue.o: src/STB_Tracker/STBTrValidValue.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/pi/upm/src/b5t007001/stblib/CMakeFiles --progress-num=$(CMAKE_PROGRESS_17) "Building C object CMakeFiles/stblib.dir/src/STB_Tracker/STBTrValidValue.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/stblib.dir/src/STB_Tracker/STBTrValidValue.o -c /home/pi/upm/src/b5t007001/stblib/src/STB_Tracker/STBTrValidValue.c + +CMakeFiles/stblib.dir/src/STB_Tracker/STBTrValidValue.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/stblib.dir/src/STB_Tracker/STBTrValidValue.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/pi/upm/src/b5t007001/stblib/src/STB_Tracker/STBTrValidValue.c > CMakeFiles/stblib.dir/src/STB_Tracker/STBTrValidValue.i + +CMakeFiles/stblib.dir/src/STB_Tracker/STBTrValidValue.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/stblib.dir/src/STB_Tracker/STBTrValidValue.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/pi/upm/src/b5t007001/stblib/src/STB_Tracker/STBTrValidValue.c -o CMakeFiles/stblib.dir/src/STB_Tracker/STBTrValidValue.s + +CMakeFiles/stblib.dir/src/STB_Tracker/STBTrValidValue.o.requires: + +.PHONY : CMakeFiles/stblib.dir/src/STB_Tracker/STBTrValidValue.o.requires + +CMakeFiles/stblib.dir/src/STB_Tracker/STBTrValidValue.o.provides: CMakeFiles/stblib.dir/src/STB_Tracker/STBTrValidValue.o.requires + $(MAKE) -f CMakeFiles/stblib.dir/build.make CMakeFiles/stblib.dir/src/STB_Tracker/STBTrValidValue.o.provides.build +.PHONY : CMakeFiles/stblib.dir/src/STB_Tracker/STBTrValidValue.o.provides + +CMakeFiles/stblib.dir/src/STB_Tracker/STBTrValidValue.o.provides.build: CMakeFiles/stblib.dir/src/STB_Tracker/STBTrValidValue.o + + +CMakeFiles/stblib.dir/src/STB_Tracker/TrInterface.o: CMakeFiles/stblib.dir/flags.make +CMakeFiles/stblib.dir/src/STB_Tracker/TrInterface.o: src/STB_Tracker/TrInterface.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/pi/upm/src/b5t007001/stblib/CMakeFiles --progress-num=$(CMAKE_PROGRESS_18) "Building C object CMakeFiles/stblib.dir/src/STB_Tracker/TrInterface.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/stblib.dir/src/STB_Tracker/TrInterface.o -c /home/pi/upm/src/b5t007001/stblib/src/STB_Tracker/TrInterface.c + +CMakeFiles/stblib.dir/src/STB_Tracker/TrInterface.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/stblib.dir/src/STB_Tracker/TrInterface.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/pi/upm/src/b5t007001/stblib/src/STB_Tracker/TrInterface.c > CMakeFiles/stblib.dir/src/STB_Tracker/TrInterface.i + +CMakeFiles/stblib.dir/src/STB_Tracker/TrInterface.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/stblib.dir/src/STB_Tracker/TrInterface.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/pi/upm/src/b5t007001/stblib/src/STB_Tracker/TrInterface.c -o CMakeFiles/stblib.dir/src/STB_Tracker/TrInterface.s + +CMakeFiles/stblib.dir/src/STB_Tracker/TrInterface.o.requires: + +.PHONY : CMakeFiles/stblib.dir/src/STB_Tracker/TrInterface.o.requires + +CMakeFiles/stblib.dir/src/STB_Tracker/TrInterface.o.provides: CMakeFiles/stblib.dir/src/STB_Tracker/TrInterface.o.requires + $(MAKE) -f CMakeFiles/stblib.dir/build.make CMakeFiles/stblib.dir/src/STB_Tracker/TrInterface.o.provides.build +.PHONY : CMakeFiles/stblib.dir/src/STB_Tracker/TrInterface.o.provides + +CMakeFiles/stblib.dir/src/STB_Tracker/TrInterface.o.provides.build: CMakeFiles/stblib.dir/src/STB_Tracker/TrInterface.o + + +# Object files for target stblib +stblib_OBJECTS = \ +"CMakeFiles/stblib.dir/src/STB/Interface.o" \ +"CMakeFiles/stblib.dir/src/STB/STBAPI.o" \ +"CMakeFiles/stblib.dir/src/STB/STBFaceInfo.o" \ +"CMakeFiles/stblib.dir/src/STB/STBMakeResult.o" \ +"CMakeFiles/stblib.dir/src/STB/STBTracking.o" \ +"CMakeFiles/stblib.dir/src/STB/STBValidValue.o" \ +"CMakeFiles/stblib.dir/src/STB_FaceRecognition/FrInterface.o" \ +"CMakeFiles/stblib.dir/src/STB_FaceRecognition/SdkSTBFr.o" \ +"CMakeFiles/stblib.dir/src/STB_FaceRecognition/STBFrAPI.o" \ +"CMakeFiles/stblib.dir/src/STB_FaceRecognition/STBFrValidValue.o" \ +"CMakeFiles/stblib.dir/src/STB_Property/PeInterface.o" \ +"CMakeFiles/stblib.dir/src/STB_Property/SdkSTBPe.o" \ +"CMakeFiles/stblib.dir/src/STB_Property/STBPeAPI.o" \ +"CMakeFiles/stblib.dir/src/STB_Property/STBPeValidValue.o" \ +"CMakeFiles/stblib.dir/src/STB_Tracker/SdkSTBTr.o" \ +"CMakeFiles/stblib.dir/src/STB_Tracker/STBTrAPI.o" \ +"CMakeFiles/stblib.dir/src/STB_Tracker/STBTrValidValue.o" \ +"CMakeFiles/stblib.dir/src/STB_Tracker/TrInterface.o" + +# External object files for target stblib +stblib_EXTERNAL_OBJECTS = + +libstblib.a: CMakeFiles/stblib.dir/src/STB/Interface.o +libstblib.a: CMakeFiles/stblib.dir/src/STB/STBAPI.o +libstblib.a: CMakeFiles/stblib.dir/src/STB/STBFaceInfo.o +libstblib.a: CMakeFiles/stblib.dir/src/STB/STBMakeResult.o +libstblib.a: CMakeFiles/stblib.dir/src/STB/STBTracking.o +libstblib.a: CMakeFiles/stblib.dir/src/STB/STBValidValue.o +libstblib.a: CMakeFiles/stblib.dir/src/STB_FaceRecognition/FrInterface.o +libstblib.a: CMakeFiles/stblib.dir/src/STB_FaceRecognition/SdkSTBFr.o +libstblib.a: CMakeFiles/stblib.dir/src/STB_FaceRecognition/STBFrAPI.o +libstblib.a: CMakeFiles/stblib.dir/src/STB_FaceRecognition/STBFrValidValue.o +libstblib.a: CMakeFiles/stblib.dir/src/STB_Property/PeInterface.o +libstblib.a: CMakeFiles/stblib.dir/src/STB_Property/SdkSTBPe.o +libstblib.a: CMakeFiles/stblib.dir/src/STB_Property/STBPeAPI.o +libstblib.a: CMakeFiles/stblib.dir/src/STB_Property/STBPeValidValue.o +libstblib.a: CMakeFiles/stblib.dir/src/STB_Tracker/SdkSTBTr.o +libstblib.a: CMakeFiles/stblib.dir/src/STB_Tracker/STBTrAPI.o +libstblib.a: CMakeFiles/stblib.dir/src/STB_Tracker/STBTrValidValue.o +libstblib.a: CMakeFiles/stblib.dir/src/STB_Tracker/TrInterface.o +libstblib.a: CMakeFiles/stblib.dir/build.make +libstblib.a: CMakeFiles/stblib.dir/link.txt + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --bold --progress-dir=/home/pi/upm/src/b5t007001/stblib/CMakeFiles --progress-num=$(CMAKE_PROGRESS_19) "Linking C static library libstblib.a" + $(CMAKE_COMMAND) -P CMakeFiles/stblib.dir/cmake_clean_target.cmake + $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/stblib.dir/link.txt --verbose=$(VERBOSE) + +# Rule to build all files generated by this target. +CMakeFiles/stblib.dir/build: libstblib.a + +.PHONY : CMakeFiles/stblib.dir/build + +CMakeFiles/stblib.dir/requires: CMakeFiles/stblib.dir/src/STB/Interface.o.requires +CMakeFiles/stblib.dir/requires: CMakeFiles/stblib.dir/src/STB/STBAPI.o.requires +CMakeFiles/stblib.dir/requires: CMakeFiles/stblib.dir/src/STB/STBFaceInfo.o.requires +CMakeFiles/stblib.dir/requires: CMakeFiles/stblib.dir/src/STB/STBMakeResult.o.requires +CMakeFiles/stblib.dir/requires: CMakeFiles/stblib.dir/src/STB/STBTracking.o.requires +CMakeFiles/stblib.dir/requires: CMakeFiles/stblib.dir/src/STB/STBValidValue.o.requires +CMakeFiles/stblib.dir/requires: CMakeFiles/stblib.dir/src/STB_FaceRecognition/FrInterface.o.requires +CMakeFiles/stblib.dir/requires: CMakeFiles/stblib.dir/src/STB_FaceRecognition/SdkSTBFr.o.requires +CMakeFiles/stblib.dir/requires: CMakeFiles/stblib.dir/src/STB_FaceRecognition/STBFrAPI.o.requires +CMakeFiles/stblib.dir/requires: CMakeFiles/stblib.dir/src/STB_FaceRecognition/STBFrValidValue.o.requires +CMakeFiles/stblib.dir/requires: CMakeFiles/stblib.dir/src/STB_Property/PeInterface.o.requires +CMakeFiles/stblib.dir/requires: CMakeFiles/stblib.dir/src/STB_Property/SdkSTBPe.o.requires +CMakeFiles/stblib.dir/requires: CMakeFiles/stblib.dir/src/STB_Property/STBPeAPI.o.requires +CMakeFiles/stblib.dir/requires: CMakeFiles/stblib.dir/src/STB_Property/STBPeValidValue.o.requires +CMakeFiles/stblib.dir/requires: CMakeFiles/stblib.dir/src/STB_Tracker/SdkSTBTr.o.requires +CMakeFiles/stblib.dir/requires: CMakeFiles/stblib.dir/src/STB_Tracker/STBTrAPI.o.requires +CMakeFiles/stblib.dir/requires: CMakeFiles/stblib.dir/src/STB_Tracker/STBTrValidValue.o.requires +CMakeFiles/stblib.dir/requires: CMakeFiles/stblib.dir/src/STB_Tracker/TrInterface.o.requires + +.PHONY : CMakeFiles/stblib.dir/requires + +CMakeFiles/stblib.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/stblib.dir/cmake_clean.cmake +.PHONY : CMakeFiles/stblib.dir/clean + +CMakeFiles/stblib.dir/depend: + cd /home/pi/upm/src/b5t007001/stblib && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/pi/upm/src/b5t007001/stblib /home/pi/upm/src/b5t007001/stblib /home/pi/upm/src/b5t007001/stblib /home/pi/upm/src/b5t007001/stblib /home/pi/upm/src/b5t007001/stblib/CMakeFiles/stblib.dir/DependInfo.cmake --color=$(COLOR) +.PHONY : CMakeFiles/stblib.dir/depend + diff --git a/src/b5t007001/stblib/CMakeFiles/stblib.dir/cmake_clean.cmake b/src/b5t007001/stblib/CMakeFiles/stblib.dir/cmake_clean.cmake new file mode 100644 index 00000000..99048e82 --- /dev/null +++ b/src/b5t007001/stblib/CMakeFiles/stblib.dir/cmake_clean.cmake @@ -0,0 +1,27 @@ +file(REMOVE_RECURSE + "CMakeFiles/stblib.dir/src/STB/Interface.o" + "CMakeFiles/stblib.dir/src/STB/STBAPI.o" + "CMakeFiles/stblib.dir/src/STB/STBFaceInfo.o" + "CMakeFiles/stblib.dir/src/STB/STBMakeResult.o" + "CMakeFiles/stblib.dir/src/STB/STBTracking.o" + "CMakeFiles/stblib.dir/src/STB/STBValidValue.o" + "CMakeFiles/stblib.dir/src/STB_FaceRecognition/FrInterface.o" + "CMakeFiles/stblib.dir/src/STB_FaceRecognition/SdkSTBFr.o" + "CMakeFiles/stblib.dir/src/STB_FaceRecognition/STBFrAPI.o" + "CMakeFiles/stblib.dir/src/STB_FaceRecognition/STBFrValidValue.o" + "CMakeFiles/stblib.dir/src/STB_Property/PeInterface.o" + "CMakeFiles/stblib.dir/src/STB_Property/SdkSTBPe.o" + "CMakeFiles/stblib.dir/src/STB_Property/STBPeAPI.o" + "CMakeFiles/stblib.dir/src/STB_Property/STBPeValidValue.o" + "CMakeFiles/stblib.dir/src/STB_Tracker/SdkSTBTr.o" + "CMakeFiles/stblib.dir/src/STB_Tracker/STBTrAPI.o" + "CMakeFiles/stblib.dir/src/STB_Tracker/STBTrValidValue.o" + "CMakeFiles/stblib.dir/src/STB_Tracker/TrInterface.o" + "libstblib.pdb" + "libstblib.a" +) + +# Per-language clean rules from dependency scanning. +foreach(lang C) + include(CMakeFiles/stblib.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/src/b5t007001/stblib/CMakeFiles/stblib.dir/cmake_clean_target.cmake b/src/b5t007001/stblib/CMakeFiles/stblib.dir/cmake_clean_target.cmake new file mode 100644 index 00000000..472e07f1 --- /dev/null +++ b/src/b5t007001/stblib/CMakeFiles/stblib.dir/cmake_clean_target.cmake @@ -0,0 +1,3 @@ +file(REMOVE_RECURSE + "libstblib.a" +) diff --git a/src/b5t007001/stblib/CMakeFiles/stblib.dir/depend.internal b/src/b5t007001/stblib/CMakeFiles/stblib.dir/depend.internal new file mode 100644 index 00000000..0f92590b --- /dev/null +++ b/src/b5t007001/stblib/CMakeFiles/stblib.dir/depend.internal @@ -0,0 +1,189 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.7 + +CMakeFiles/stblib.dir/src/STB/Interface.o + /home/pi/upm/src/b5t007001/stblib/src/STB/Interface.c + /home/pi/upm/src/b5t007001/stblib/src/STB/Interface.h + /home/pi/upm/src/b5t007001/stblib/src/STB/STBValidValue.h + src/include/STBCommonDef.h + src/include/STBCommonType.h + src/include/STBFaceInfo.h + src/include/STBFrTypedef.h + src/include/STBHandle.h + src/include/STBMakeResult.h + src/include/STBPeTypedef.h + src/include/STBTrTypedef.h + src/include/STBTracking.h + src/include/STBTypedefInput.h + src/include/STBTypedefOutput.h + src/include/SdkSTBFr.h + src/include/SdkSTBPe.h + src/include/SdkSTBTr.h +CMakeFiles/stblib.dir/src/STB/STBAPI.o + /home/pi/upm/src/b5t007001/stblib/src/STB/Interface.h + /home/pi/upm/src/b5t007001/stblib/src/STB/STBAPI.c + /home/pi/upm/src/b5t007001/stblib/src/STB/STBAPI.h + src/include/STBCommonDef.h + src/include/STBCommonType.h + src/include/STBFrTypedef.h + src/include/STBHandle.h + src/include/STBPeTypedef.h + src/include/STBTrTypedef.h + src/include/STBTypedefInput.h + src/include/STBTypedefOutput.h + src/include/SdkSTBFr.h + src/include/SdkSTBPe.h + src/include/SdkSTBTr.h +CMakeFiles/stblib.dir/src/STB/STBFaceInfo.o + /home/pi/upm/src/b5t007001/stblib/src/STB/STBFaceInfo.c + /home/pi/upm/src/b5t007001/stblib/src/STB/STBValidValue.h + src/include/STBCommonDef.h + src/include/STBCommonType.h + src/include/STBFaceInfo.h + src/include/STBFrTypedef.h + src/include/STBHandle.h + src/include/STBPeTypedef.h + src/include/STBTrTypedef.h + src/include/STBTypedefInput.h + src/include/STBTypedefOutput.h + src/include/STB_Debug.h + src/include/SdkSTBFr.h + src/include/SdkSTBPe.h + src/include/SdkSTBTr.h +CMakeFiles/stblib.dir/src/STB/STBMakeResult.o + /home/pi/upm/src/b5t007001/stblib/src/STB/STBMakeResult.c + src/include/STBCommonDef.h + src/include/STBCommonType.h + src/include/STBFrTypedef.h + src/include/STBHandle.h + src/include/STBMakeResult.h + src/include/STBPeTypedef.h + src/include/STBTrTypedef.h + src/include/STBTypedefOutput.h + src/include/SdkSTBFr.h + src/include/SdkSTBPe.h + src/include/SdkSTBTr.h +CMakeFiles/stblib.dir/src/STB/STBTracking.o + /home/pi/upm/src/b5t007001/stblib/src/STB/STBTracking.c + src/include/STBCommonDef.h + src/include/STBCommonType.h + src/include/STBFrTypedef.h + src/include/STBHandle.h + src/include/STBPeTypedef.h + src/include/STBTrTypedef.h + src/include/STBTracking.h + src/include/STBTypedefInput.h + src/include/STBTypedefOutput.h + src/include/STB_Debug.h + src/include/SdkSTBFr.h + src/include/SdkSTBPe.h + src/include/SdkSTBTr.h +CMakeFiles/stblib.dir/src/STB/STBValidValue.o + /home/pi/upm/src/b5t007001/stblib/src/STB/STBValidValue.c + /home/pi/upm/src/b5t007001/stblib/src/STB/STBValidValue.h + src/include/STBCommonDef.h + src/include/STBCommonType.h + src/include/STBTypedefInput.h + src/include/STBTypedefOutput.h +CMakeFiles/stblib.dir/src/STB_FaceRecognition/FrInterface.o + /home/pi/upm/src/b5t007001/stblib/src/STB_FaceRecognition/FrInterface.c + /home/pi/upm/src/b5t007001/stblib/src/STB_FaceRecognition/FrInterface.h + /home/pi/upm/src/b5t007001/stblib/src/STB_FaceRecognition/STBFrAPI.h + /home/pi/upm/src/b5t007001/stblib/src/STB_FaceRecognition/STBFrValidValue.h + src/include/STBCommonDef.h + src/include/STBCommonType.h + src/include/STBFrTypedef.h + src/include/STBTypedefOutput.h +CMakeFiles/stblib.dir/src/STB_FaceRecognition/STBFrAPI.o + /home/pi/upm/src/b5t007001/stblib/src/STB_FaceRecognition/FrInterface.h + /home/pi/upm/src/b5t007001/stblib/src/STB_FaceRecognition/STBFrAPI.c + /home/pi/upm/src/b5t007001/stblib/src/STB_FaceRecognition/STBFrAPI.h + /home/pi/upm/src/b5t007001/stblib/src/STB_FaceRecognition/STBFrValidValue.h + src/include/STBCommonDef.h + src/include/STBCommonType.h + src/include/STBFrTypedef.h + src/include/STBTypedefOutput.h +CMakeFiles/stblib.dir/src/STB_FaceRecognition/STBFrValidValue.o + /home/pi/upm/src/b5t007001/stblib/src/STB_FaceRecognition/STBFrValidValue.c + /home/pi/upm/src/b5t007001/stblib/src/STB_FaceRecognition/STBFrValidValue.h + src/include/STBCommonDef.h + src/include/STBCommonType.h + src/include/STBFrTypedef.h + src/include/STBTypedefOutput.h +CMakeFiles/stblib.dir/src/STB_FaceRecognition/SdkSTBFr.o + /home/pi/upm/src/b5t007001/stblib/src/STB_FaceRecognition/FrInterface.h + /home/pi/upm/src/b5t007001/stblib/src/STB_FaceRecognition/STBFrValidValue.h + /home/pi/upm/src/b5t007001/stblib/src/STB_FaceRecognition/SdkSTBFr.c + /home/pi/upm/src/b5t007001/stblib/src/STB_FaceRecognition/SdkSTBFr.h + src/include/STBCommonDef.h + src/include/STBCommonType.h + src/include/STBFrTypedef.h + src/include/STBTypedefOutput.h +CMakeFiles/stblib.dir/src/STB_Property/PeInterface.o + /home/pi/upm/src/b5t007001/stblib/src/STB_Property/PeInterface.c + /home/pi/upm/src/b5t007001/stblib/src/STB_Property/PeInterface.h + /home/pi/upm/src/b5t007001/stblib/src/STB_Property/STBPeAPI.h + /home/pi/upm/src/b5t007001/stblib/src/STB_Property/STBPeValidValue.h + src/include/STBCommonDef.h + src/include/STBCommonType.h + src/include/STBPeTypedef.h + src/include/STBTypedefOutput.h +CMakeFiles/stblib.dir/src/STB_Property/STBPeAPI.o + /home/pi/upm/src/b5t007001/stblib/src/STB_Property/PeInterface.h + /home/pi/upm/src/b5t007001/stblib/src/STB_Property/STBPeAPI.c + /home/pi/upm/src/b5t007001/stblib/src/STB_Property/STBPeAPI.h + /home/pi/upm/src/b5t007001/stblib/src/STB_Property/STBPeValidValue.h + src/include/STBCommonDef.h + src/include/STBCommonType.h + src/include/STBPeTypedef.h + src/include/STBTypedefOutput.h +CMakeFiles/stblib.dir/src/STB_Property/STBPeValidValue.o + /home/pi/upm/src/b5t007001/stblib/src/STB_Property/STBPeValidValue.c + /home/pi/upm/src/b5t007001/stblib/src/STB_Property/STBPeValidValue.h + src/include/STBCommonDef.h + src/include/STBCommonType.h + src/include/STBPeTypedef.h + src/include/STBTypedefOutput.h +CMakeFiles/stblib.dir/src/STB_Property/SdkSTBPe.o + /home/pi/upm/src/b5t007001/stblib/src/STB_Property/PeInterface.h + /home/pi/upm/src/b5t007001/stblib/src/STB_Property/STBPeValidValue.h + /home/pi/upm/src/b5t007001/stblib/src/STB_Property/SdkSTBPe.c + /home/pi/upm/src/b5t007001/stblib/src/STB_Property/SdkSTBPe.h + src/include/STBCommonDef.h + src/include/STBCommonType.h + src/include/STBPeTypedef.h + src/include/STBTypedefOutput.h +CMakeFiles/stblib.dir/src/STB_Tracker/STBTrAPI.o + /home/pi/upm/src/b5t007001/stblib/src/STB_Tracker/STBTrAPI.c + /home/pi/upm/src/b5t007001/stblib/src/STB_Tracker/STBTrAPI.h + /home/pi/upm/src/b5t007001/stblib/src/STB_Tracker/STBTrValidValue.h + /home/pi/upm/src/b5t007001/stblib/src/STB_Tracker/TrInterface.h + src/include/STBCommonDef.h + src/include/STBCommonType.h + src/include/STBTrTypedef.h + src/include/STBTypedefOutput.h +CMakeFiles/stblib.dir/src/STB_Tracker/STBTrValidValue.o + /home/pi/upm/src/b5t007001/stblib/src/STB_Tracker/STBTrValidValue.c + /home/pi/upm/src/b5t007001/stblib/src/STB_Tracker/STBTrValidValue.h + src/include/STBCommonDef.h + src/include/STBCommonType.h + src/include/STBTrTypedef.h + src/include/STBTypedefOutput.h +CMakeFiles/stblib.dir/src/STB_Tracker/SdkSTBTr.o + /home/pi/upm/src/b5t007001/stblib/src/STB_Tracker/STBTrValidValue.h + /home/pi/upm/src/b5t007001/stblib/src/STB_Tracker/SdkSTBTr.c + /home/pi/upm/src/b5t007001/stblib/src/STB_Tracker/SdkSTBTr.h + /home/pi/upm/src/b5t007001/stblib/src/STB_Tracker/TrInterface.h + src/include/STBCommonDef.h + src/include/STBCommonType.h + src/include/STBTrTypedef.h + src/include/STBTypedefOutput.h +CMakeFiles/stblib.dir/src/STB_Tracker/TrInterface.o + /home/pi/upm/src/b5t007001/stblib/src/STB_Tracker/STBTrAPI.h + /home/pi/upm/src/b5t007001/stblib/src/STB_Tracker/STBTrValidValue.h + /home/pi/upm/src/b5t007001/stblib/src/STB_Tracker/TrInterface.c + /home/pi/upm/src/b5t007001/stblib/src/STB_Tracker/TrInterface.h + src/include/STBCommonDef.h + src/include/STBCommonType.h + src/include/STBTrTypedef.h + src/include/STBTypedefOutput.h diff --git a/src/b5t007001/stblib/CMakeFiles/stblib.dir/depend.make b/src/b5t007001/stblib/CMakeFiles/stblib.dir/depend.make new file mode 100644 index 00000000..4f81b4df --- /dev/null +++ b/src/b5t007001/stblib/CMakeFiles/stblib.dir/depend.make @@ -0,0 +1,189 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.7 + +CMakeFiles/stblib.dir/src/STB/Interface.o: src/STB/Interface.c +CMakeFiles/stblib.dir/src/STB/Interface.o: src/STB/Interface.h +CMakeFiles/stblib.dir/src/STB/Interface.o: src/STB/STBValidValue.h +CMakeFiles/stblib.dir/src/STB/Interface.o: src/include/STBCommonDef.h +CMakeFiles/stblib.dir/src/STB/Interface.o: src/include/STBCommonType.h +CMakeFiles/stblib.dir/src/STB/Interface.o: src/include/STBFaceInfo.h +CMakeFiles/stblib.dir/src/STB/Interface.o: src/include/STBFrTypedef.h +CMakeFiles/stblib.dir/src/STB/Interface.o: src/include/STBHandle.h +CMakeFiles/stblib.dir/src/STB/Interface.o: src/include/STBMakeResult.h +CMakeFiles/stblib.dir/src/STB/Interface.o: src/include/STBPeTypedef.h +CMakeFiles/stblib.dir/src/STB/Interface.o: src/include/STBTrTypedef.h +CMakeFiles/stblib.dir/src/STB/Interface.o: src/include/STBTracking.h +CMakeFiles/stblib.dir/src/STB/Interface.o: src/include/STBTypedefInput.h +CMakeFiles/stblib.dir/src/STB/Interface.o: src/include/STBTypedefOutput.h +CMakeFiles/stblib.dir/src/STB/Interface.o: src/include/SdkSTBFr.h +CMakeFiles/stblib.dir/src/STB/Interface.o: src/include/SdkSTBPe.h +CMakeFiles/stblib.dir/src/STB/Interface.o: src/include/SdkSTBTr.h + +CMakeFiles/stblib.dir/src/STB/STBAPI.o: src/STB/Interface.h +CMakeFiles/stblib.dir/src/STB/STBAPI.o: src/STB/STBAPI.c +CMakeFiles/stblib.dir/src/STB/STBAPI.o: src/STB/STBAPI.h +CMakeFiles/stblib.dir/src/STB/STBAPI.o: src/include/STBCommonDef.h +CMakeFiles/stblib.dir/src/STB/STBAPI.o: src/include/STBCommonType.h +CMakeFiles/stblib.dir/src/STB/STBAPI.o: src/include/STBFrTypedef.h +CMakeFiles/stblib.dir/src/STB/STBAPI.o: src/include/STBHandle.h +CMakeFiles/stblib.dir/src/STB/STBAPI.o: src/include/STBPeTypedef.h +CMakeFiles/stblib.dir/src/STB/STBAPI.o: src/include/STBTrTypedef.h +CMakeFiles/stblib.dir/src/STB/STBAPI.o: src/include/STBTypedefInput.h +CMakeFiles/stblib.dir/src/STB/STBAPI.o: src/include/STBTypedefOutput.h +CMakeFiles/stblib.dir/src/STB/STBAPI.o: src/include/SdkSTBFr.h +CMakeFiles/stblib.dir/src/STB/STBAPI.o: src/include/SdkSTBPe.h +CMakeFiles/stblib.dir/src/STB/STBAPI.o: src/include/SdkSTBTr.h + +CMakeFiles/stblib.dir/src/STB/STBFaceInfo.o: src/STB/STBFaceInfo.c +CMakeFiles/stblib.dir/src/STB/STBFaceInfo.o: src/STB/STBValidValue.h +CMakeFiles/stblib.dir/src/STB/STBFaceInfo.o: src/include/STBCommonDef.h +CMakeFiles/stblib.dir/src/STB/STBFaceInfo.o: src/include/STBCommonType.h +CMakeFiles/stblib.dir/src/STB/STBFaceInfo.o: src/include/STBFaceInfo.h +CMakeFiles/stblib.dir/src/STB/STBFaceInfo.o: src/include/STBFrTypedef.h +CMakeFiles/stblib.dir/src/STB/STBFaceInfo.o: src/include/STBHandle.h +CMakeFiles/stblib.dir/src/STB/STBFaceInfo.o: src/include/STBPeTypedef.h +CMakeFiles/stblib.dir/src/STB/STBFaceInfo.o: src/include/STBTrTypedef.h +CMakeFiles/stblib.dir/src/STB/STBFaceInfo.o: src/include/STBTypedefInput.h +CMakeFiles/stblib.dir/src/STB/STBFaceInfo.o: src/include/STBTypedefOutput.h +CMakeFiles/stblib.dir/src/STB/STBFaceInfo.o: src/include/STB_Debug.h +CMakeFiles/stblib.dir/src/STB/STBFaceInfo.o: src/include/SdkSTBFr.h +CMakeFiles/stblib.dir/src/STB/STBFaceInfo.o: src/include/SdkSTBPe.h +CMakeFiles/stblib.dir/src/STB/STBFaceInfo.o: src/include/SdkSTBTr.h + +CMakeFiles/stblib.dir/src/STB/STBMakeResult.o: src/STB/STBMakeResult.c +CMakeFiles/stblib.dir/src/STB/STBMakeResult.o: src/include/STBCommonDef.h +CMakeFiles/stblib.dir/src/STB/STBMakeResult.o: src/include/STBCommonType.h +CMakeFiles/stblib.dir/src/STB/STBMakeResult.o: src/include/STBFrTypedef.h +CMakeFiles/stblib.dir/src/STB/STBMakeResult.o: src/include/STBHandle.h +CMakeFiles/stblib.dir/src/STB/STBMakeResult.o: src/include/STBMakeResult.h +CMakeFiles/stblib.dir/src/STB/STBMakeResult.o: src/include/STBPeTypedef.h +CMakeFiles/stblib.dir/src/STB/STBMakeResult.o: src/include/STBTrTypedef.h +CMakeFiles/stblib.dir/src/STB/STBMakeResult.o: src/include/STBTypedefOutput.h +CMakeFiles/stblib.dir/src/STB/STBMakeResult.o: src/include/SdkSTBFr.h +CMakeFiles/stblib.dir/src/STB/STBMakeResult.o: src/include/SdkSTBPe.h +CMakeFiles/stblib.dir/src/STB/STBMakeResult.o: src/include/SdkSTBTr.h + +CMakeFiles/stblib.dir/src/STB/STBTracking.o: src/STB/STBTracking.c +CMakeFiles/stblib.dir/src/STB/STBTracking.o: src/include/STBCommonDef.h +CMakeFiles/stblib.dir/src/STB/STBTracking.o: src/include/STBCommonType.h +CMakeFiles/stblib.dir/src/STB/STBTracking.o: src/include/STBFrTypedef.h +CMakeFiles/stblib.dir/src/STB/STBTracking.o: src/include/STBHandle.h +CMakeFiles/stblib.dir/src/STB/STBTracking.o: src/include/STBPeTypedef.h +CMakeFiles/stblib.dir/src/STB/STBTracking.o: src/include/STBTrTypedef.h +CMakeFiles/stblib.dir/src/STB/STBTracking.o: src/include/STBTracking.h +CMakeFiles/stblib.dir/src/STB/STBTracking.o: src/include/STBTypedefInput.h +CMakeFiles/stblib.dir/src/STB/STBTracking.o: src/include/STBTypedefOutput.h +CMakeFiles/stblib.dir/src/STB/STBTracking.o: src/include/STB_Debug.h +CMakeFiles/stblib.dir/src/STB/STBTracking.o: src/include/SdkSTBFr.h +CMakeFiles/stblib.dir/src/STB/STBTracking.o: src/include/SdkSTBPe.h +CMakeFiles/stblib.dir/src/STB/STBTracking.o: src/include/SdkSTBTr.h + +CMakeFiles/stblib.dir/src/STB/STBValidValue.o: src/STB/STBValidValue.c +CMakeFiles/stblib.dir/src/STB/STBValidValue.o: src/STB/STBValidValue.h +CMakeFiles/stblib.dir/src/STB/STBValidValue.o: src/include/STBCommonDef.h +CMakeFiles/stblib.dir/src/STB/STBValidValue.o: src/include/STBCommonType.h +CMakeFiles/stblib.dir/src/STB/STBValidValue.o: src/include/STBTypedefInput.h +CMakeFiles/stblib.dir/src/STB/STBValidValue.o: src/include/STBTypedefOutput.h + +CMakeFiles/stblib.dir/src/STB_FaceRecognition/FrInterface.o: src/STB_FaceRecognition/FrInterface.c +CMakeFiles/stblib.dir/src/STB_FaceRecognition/FrInterface.o: src/STB_FaceRecognition/FrInterface.h +CMakeFiles/stblib.dir/src/STB_FaceRecognition/FrInterface.o: src/STB_FaceRecognition/STBFrAPI.h +CMakeFiles/stblib.dir/src/STB_FaceRecognition/FrInterface.o: src/STB_FaceRecognition/STBFrValidValue.h +CMakeFiles/stblib.dir/src/STB_FaceRecognition/FrInterface.o: src/include/STBCommonDef.h +CMakeFiles/stblib.dir/src/STB_FaceRecognition/FrInterface.o: src/include/STBCommonType.h +CMakeFiles/stblib.dir/src/STB_FaceRecognition/FrInterface.o: src/include/STBFrTypedef.h +CMakeFiles/stblib.dir/src/STB_FaceRecognition/FrInterface.o: src/include/STBTypedefOutput.h + +CMakeFiles/stblib.dir/src/STB_FaceRecognition/STBFrAPI.o: src/STB_FaceRecognition/FrInterface.h +CMakeFiles/stblib.dir/src/STB_FaceRecognition/STBFrAPI.o: src/STB_FaceRecognition/STBFrAPI.c +CMakeFiles/stblib.dir/src/STB_FaceRecognition/STBFrAPI.o: src/STB_FaceRecognition/STBFrAPI.h +CMakeFiles/stblib.dir/src/STB_FaceRecognition/STBFrAPI.o: src/STB_FaceRecognition/STBFrValidValue.h +CMakeFiles/stblib.dir/src/STB_FaceRecognition/STBFrAPI.o: src/include/STBCommonDef.h +CMakeFiles/stblib.dir/src/STB_FaceRecognition/STBFrAPI.o: src/include/STBCommonType.h +CMakeFiles/stblib.dir/src/STB_FaceRecognition/STBFrAPI.o: src/include/STBFrTypedef.h +CMakeFiles/stblib.dir/src/STB_FaceRecognition/STBFrAPI.o: src/include/STBTypedefOutput.h + +CMakeFiles/stblib.dir/src/STB_FaceRecognition/STBFrValidValue.o: src/STB_FaceRecognition/STBFrValidValue.c +CMakeFiles/stblib.dir/src/STB_FaceRecognition/STBFrValidValue.o: src/STB_FaceRecognition/STBFrValidValue.h +CMakeFiles/stblib.dir/src/STB_FaceRecognition/STBFrValidValue.o: src/include/STBCommonDef.h +CMakeFiles/stblib.dir/src/STB_FaceRecognition/STBFrValidValue.o: src/include/STBCommonType.h +CMakeFiles/stblib.dir/src/STB_FaceRecognition/STBFrValidValue.o: src/include/STBFrTypedef.h +CMakeFiles/stblib.dir/src/STB_FaceRecognition/STBFrValidValue.o: src/include/STBTypedefOutput.h + +CMakeFiles/stblib.dir/src/STB_FaceRecognition/SdkSTBFr.o: src/STB_FaceRecognition/FrInterface.h +CMakeFiles/stblib.dir/src/STB_FaceRecognition/SdkSTBFr.o: src/STB_FaceRecognition/STBFrValidValue.h +CMakeFiles/stblib.dir/src/STB_FaceRecognition/SdkSTBFr.o: src/STB_FaceRecognition/SdkSTBFr.c +CMakeFiles/stblib.dir/src/STB_FaceRecognition/SdkSTBFr.o: src/STB_FaceRecognition/SdkSTBFr.h +CMakeFiles/stblib.dir/src/STB_FaceRecognition/SdkSTBFr.o: src/include/STBCommonDef.h +CMakeFiles/stblib.dir/src/STB_FaceRecognition/SdkSTBFr.o: src/include/STBCommonType.h +CMakeFiles/stblib.dir/src/STB_FaceRecognition/SdkSTBFr.o: src/include/STBFrTypedef.h +CMakeFiles/stblib.dir/src/STB_FaceRecognition/SdkSTBFr.o: src/include/STBTypedefOutput.h + +CMakeFiles/stblib.dir/src/STB_Property/PeInterface.o: src/STB_Property/PeInterface.c +CMakeFiles/stblib.dir/src/STB_Property/PeInterface.o: src/STB_Property/PeInterface.h +CMakeFiles/stblib.dir/src/STB_Property/PeInterface.o: src/STB_Property/STBPeAPI.h +CMakeFiles/stblib.dir/src/STB_Property/PeInterface.o: src/STB_Property/STBPeValidValue.h +CMakeFiles/stblib.dir/src/STB_Property/PeInterface.o: src/include/STBCommonDef.h +CMakeFiles/stblib.dir/src/STB_Property/PeInterface.o: src/include/STBCommonType.h +CMakeFiles/stblib.dir/src/STB_Property/PeInterface.o: src/include/STBPeTypedef.h +CMakeFiles/stblib.dir/src/STB_Property/PeInterface.o: src/include/STBTypedefOutput.h + +CMakeFiles/stblib.dir/src/STB_Property/STBPeAPI.o: src/STB_Property/PeInterface.h +CMakeFiles/stblib.dir/src/STB_Property/STBPeAPI.o: src/STB_Property/STBPeAPI.c +CMakeFiles/stblib.dir/src/STB_Property/STBPeAPI.o: src/STB_Property/STBPeAPI.h +CMakeFiles/stblib.dir/src/STB_Property/STBPeAPI.o: src/STB_Property/STBPeValidValue.h +CMakeFiles/stblib.dir/src/STB_Property/STBPeAPI.o: src/include/STBCommonDef.h +CMakeFiles/stblib.dir/src/STB_Property/STBPeAPI.o: src/include/STBCommonType.h +CMakeFiles/stblib.dir/src/STB_Property/STBPeAPI.o: src/include/STBPeTypedef.h +CMakeFiles/stblib.dir/src/STB_Property/STBPeAPI.o: src/include/STBTypedefOutput.h + +CMakeFiles/stblib.dir/src/STB_Property/STBPeValidValue.o: src/STB_Property/STBPeValidValue.c +CMakeFiles/stblib.dir/src/STB_Property/STBPeValidValue.o: src/STB_Property/STBPeValidValue.h +CMakeFiles/stblib.dir/src/STB_Property/STBPeValidValue.o: src/include/STBCommonDef.h +CMakeFiles/stblib.dir/src/STB_Property/STBPeValidValue.o: src/include/STBCommonType.h +CMakeFiles/stblib.dir/src/STB_Property/STBPeValidValue.o: src/include/STBPeTypedef.h +CMakeFiles/stblib.dir/src/STB_Property/STBPeValidValue.o: src/include/STBTypedefOutput.h + +CMakeFiles/stblib.dir/src/STB_Property/SdkSTBPe.o: src/STB_Property/PeInterface.h +CMakeFiles/stblib.dir/src/STB_Property/SdkSTBPe.o: src/STB_Property/STBPeValidValue.h +CMakeFiles/stblib.dir/src/STB_Property/SdkSTBPe.o: src/STB_Property/SdkSTBPe.c +CMakeFiles/stblib.dir/src/STB_Property/SdkSTBPe.o: src/STB_Property/SdkSTBPe.h +CMakeFiles/stblib.dir/src/STB_Property/SdkSTBPe.o: src/include/STBCommonDef.h +CMakeFiles/stblib.dir/src/STB_Property/SdkSTBPe.o: src/include/STBCommonType.h +CMakeFiles/stblib.dir/src/STB_Property/SdkSTBPe.o: src/include/STBPeTypedef.h +CMakeFiles/stblib.dir/src/STB_Property/SdkSTBPe.o: src/include/STBTypedefOutput.h + +CMakeFiles/stblib.dir/src/STB_Tracker/STBTrAPI.o: src/STB_Tracker/STBTrAPI.c +CMakeFiles/stblib.dir/src/STB_Tracker/STBTrAPI.o: src/STB_Tracker/STBTrAPI.h +CMakeFiles/stblib.dir/src/STB_Tracker/STBTrAPI.o: src/STB_Tracker/STBTrValidValue.h +CMakeFiles/stblib.dir/src/STB_Tracker/STBTrAPI.o: src/STB_Tracker/TrInterface.h +CMakeFiles/stblib.dir/src/STB_Tracker/STBTrAPI.o: src/include/STBCommonDef.h +CMakeFiles/stblib.dir/src/STB_Tracker/STBTrAPI.o: src/include/STBCommonType.h +CMakeFiles/stblib.dir/src/STB_Tracker/STBTrAPI.o: src/include/STBTrTypedef.h +CMakeFiles/stblib.dir/src/STB_Tracker/STBTrAPI.o: src/include/STBTypedefOutput.h + +CMakeFiles/stblib.dir/src/STB_Tracker/STBTrValidValue.o: src/STB_Tracker/STBTrValidValue.c +CMakeFiles/stblib.dir/src/STB_Tracker/STBTrValidValue.o: src/STB_Tracker/STBTrValidValue.h +CMakeFiles/stblib.dir/src/STB_Tracker/STBTrValidValue.o: src/include/STBCommonDef.h +CMakeFiles/stblib.dir/src/STB_Tracker/STBTrValidValue.o: src/include/STBCommonType.h +CMakeFiles/stblib.dir/src/STB_Tracker/STBTrValidValue.o: src/include/STBTrTypedef.h +CMakeFiles/stblib.dir/src/STB_Tracker/STBTrValidValue.o: src/include/STBTypedefOutput.h + +CMakeFiles/stblib.dir/src/STB_Tracker/SdkSTBTr.o: src/STB_Tracker/STBTrValidValue.h +CMakeFiles/stblib.dir/src/STB_Tracker/SdkSTBTr.o: src/STB_Tracker/SdkSTBTr.c +CMakeFiles/stblib.dir/src/STB_Tracker/SdkSTBTr.o: src/STB_Tracker/SdkSTBTr.h +CMakeFiles/stblib.dir/src/STB_Tracker/SdkSTBTr.o: src/STB_Tracker/TrInterface.h +CMakeFiles/stblib.dir/src/STB_Tracker/SdkSTBTr.o: src/include/STBCommonDef.h +CMakeFiles/stblib.dir/src/STB_Tracker/SdkSTBTr.o: src/include/STBCommonType.h +CMakeFiles/stblib.dir/src/STB_Tracker/SdkSTBTr.o: src/include/STBTrTypedef.h +CMakeFiles/stblib.dir/src/STB_Tracker/SdkSTBTr.o: src/include/STBTypedefOutput.h + +CMakeFiles/stblib.dir/src/STB_Tracker/TrInterface.o: src/STB_Tracker/STBTrAPI.h +CMakeFiles/stblib.dir/src/STB_Tracker/TrInterface.o: src/STB_Tracker/STBTrValidValue.h +CMakeFiles/stblib.dir/src/STB_Tracker/TrInterface.o: src/STB_Tracker/TrInterface.c +CMakeFiles/stblib.dir/src/STB_Tracker/TrInterface.o: src/STB_Tracker/TrInterface.h +CMakeFiles/stblib.dir/src/STB_Tracker/TrInterface.o: src/include/STBCommonDef.h +CMakeFiles/stblib.dir/src/STB_Tracker/TrInterface.o: src/include/STBCommonType.h +CMakeFiles/stblib.dir/src/STB_Tracker/TrInterface.o: src/include/STBTrTypedef.h +CMakeFiles/stblib.dir/src/STB_Tracker/TrInterface.o: src/include/STBTypedefOutput.h + diff --git a/src/b5t007001/stblib/CMakeFiles/stblib.dir/flags.make b/src/b5t007001/stblib/CMakeFiles/stblib.dir/flags.make new file mode 100644 index 00000000..fefcdfd6 --- /dev/null +++ b/src/b5t007001/stblib/CMakeFiles/stblib.dir/flags.make @@ -0,0 +1,10 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.7 + +# compile C with /usr/bin/cc +C_FLAGS = -lm + +C_DEFINES = + +C_INCLUDES = -I/home/pi/upm/src/b5t007001/stblib/src/include + diff --git a/src/b5t007001/stblib/CMakeFiles/stblib.dir/link.txt b/src/b5t007001/stblib/CMakeFiles/stblib.dir/link.txt new file mode 100644 index 00000000..bc89c0c4 --- /dev/null +++ b/src/b5t007001/stblib/CMakeFiles/stblib.dir/link.txt @@ -0,0 +1,2 @@ +/usr/bin/ar qc libstblib.a CMakeFiles/stblib.dir/src/STB/Interface.o CMakeFiles/stblib.dir/src/STB/STBAPI.o CMakeFiles/stblib.dir/src/STB/STBFaceInfo.o CMakeFiles/stblib.dir/src/STB/STBMakeResult.o CMakeFiles/stblib.dir/src/STB/STBTracking.o CMakeFiles/stblib.dir/src/STB/STBValidValue.o CMakeFiles/stblib.dir/src/STB_FaceRecognition/FrInterface.o CMakeFiles/stblib.dir/src/STB_FaceRecognition/SdkSTBFr.o CMakeFiles/stblib.dir/src/STB_FaceRecognition/STBFrAPI.o CMakeFiles/stblib.dir/src/STB_FaceRecognition/STBFrValidValue.o CMakeFiles/stblib.dir/src/STB_Property/PeInterface.o CMakeFiles/stblib.dir/src/STB_Property/SdkSTBPe.o CMakeFiles/stblib.dir/src/STB_Property/STBPeAPI.o CMakeFiles/stblib.dir/src/STB_Property/STBPeValidValue.o CMakeFiles/stblib.dir/src/STB_Tracker/SdkSTBTr.o CMakeFiles/stblib.dir/src/STB_Tracker/STBTrAPI.o CMakeFiles/stblib.dir/src/STB_Tracker/STBTrValidValue.o CMakeFiles/stblib.dir/src/STB_Tracker/TrInterface.o +/usr/bin/ranlib libstblib.a diff --git a/src/b5t007001/stblib/CMakeFiles/stblib.dir/progress.make b/src/b5t007001/stblib/CMakeFiles/stblib.dir/progress.make new file mode 100644 index 00000000..6f2b0c73 --- /dev/null +++ b/src/b5t007001/stblib/CMakeFiles/stblib.dir/progress.make @@ -0,0 +1,20 @@ +CMAKE_PROGRESS_1 = 1 +CMAKE_PROGRESS_2 = 2 +CMAKE_PROGRESS_3 = 3 +CMAKE_PROGRESS_4 = 4 +CMAKE_PROGRESS_5 = 5 +CMAKE_PROGRESS_6 = 6 +CMAKE_PROGRESS_7 = 7 +CMAKE_PROGRESS_8 = 8 +CMAKE_PROGRESS_9 = 9 +CMAKE_PROGRESS_10 = 10 +CMAKE_PROGRESS_11 = 11 +CMAKE_PROGRESS_12 = 12 +CMAKE_PROGRESS_13 = 13 +CMAKE_PROGRESS_14 = 14 +CMAKE_PROGRESS_15 = 15 +CMAKE_PROGRESS_16 = 16 +CMAKE_PROGRESS_17 = 17 +CMAKE_PROGRESS_18 = 18 +CMAKE_PROGRESS_19 = 19 + diff --git a/src/b5t007001/stblib/CMakeLists.txt b/src/b5t007001/stblib/CMakeLists.txt new file mode 100644 index 00000000..359d527c --- /dev/null +++ b/src/b5t007001/stblib/CMakeLists.txt @@ -0,0 +1,63 @@ +set(stblib_source_files + + src/include/SdkSTBFr.h + src/include/SdkSTBPe.h + src/include/SdkSTBTr.h + src/include/STBCommonDef.h + src/include/STBCommonType.h + src/include/STB_Debug.h + src/include/STBFaceInfo.h + src/include/STBFrTypedef.h + src/include/STBHandle.h + src/include/STBMakeResult.h + src/include/STBPeTypedef.h + src/include/STBTracking.h + src/include/STBTrTypedef.h + src/include/STBTypedefInput.h + src/include/STBTypedefOutput.h + + src/STB/Interface.c + src/STB/Interface.h + src/STB/STBAPI.c + src/STB/STBAPI.h + src/STB/STBFaceInfo.c + src/STB/STBMakeResult.c + src/STB/STBTracking.c + src/STB/STBValidValue.c + src/STB/STBValidValue.h + + src/STB_FaceRecognition/FrInterface.c + src/STB_FaceRecognition/FrInterface.h + src/STB_FaceRecognition/SdkSTBFr.c + src/STB_FaceRecognition/SdkSTBFr.h + src/STB_FaceRecognition/STBFrAPI.c + src/STB_FaceRecognition/STBFrAPI.h + src/STB_FaceRecognition/STBFrValidValue.c + src/STB_FaceRecognition/STBFrValidValue.h + + src/STB_Property/PeInterface.c + src/STB_Property/PeInterface.h + src/STB_Property/SdkSTBPe.c + src/STB_Property/SdkSTBPe.h + src/STB_Property/STBPeAPI.c + src/STB_Property/STBPeAPI.h + src/STB_Property/STBPeValidValue.c + src/STB_Property/STBPeValidValue.h + + src/STB_Tracker/SdkSTBTr.c + src/STB_Tracker/SdkSTBTr.h + src/STB_Tracker/STBTrAPI.c + src/STB_Tracker/STBTrAPI.h + src/STB_Tracker/STBTrValidValue.c + src/STB_Tracker/STBTrValidValue.h + src/STB_Tracker/TrInterface.c + src/STB_Tracker/TrInterface.h + + usr_include/STBAPI.h + usr_include/STBCommonDef.h + usr_include/STBTypedef.h +) + +include_directories("src/include/") +add_library(stblib ${stblib_source_files}) +set(CMAKE_C_FLAGS "-lm") diff --git a/src/b5t007001/stblib/Makefile b/src/b5t007001/stblib/Makefile new file mode 100644 index 00000000..3e10d8a5 --- /dev/null +++ b/src/b5t007001/stblib/Makefile @@ -0,0 +1,472 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.7 + +# Default target executed when no arguments are given to make. +default_target: all + +.PHONY : default_target + +# Allow only one "make -f Makefile2" at a time, but pass parallelism. +.NOTPARALLEL: + + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Remove some rules from gmake that .SUFFIXES does not remove. +SUFFIXES = + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E remove -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/pi/upm/src/b5t007001/stblib + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/pi/upm/src/b5t007001/stblib + +#============================================================================= +# Targets provided globally by CMake. + +# Special rule for the target rebuild_cache +rebuild_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake to regenerate build system..." + /usr/bin/cmake -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : rebuild_cache + +# Special rule for the target rebuild_cache +rebuild_cache/fast: rebuild_cache + +.PHONY : rebuild_cache/fast + +# Special rule for the target edit_cache +edit_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "No interactive CMake dialog available..." + /usr/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available. +.PHONY : edit_cache + +# Special rule for the target edit_cache +edit_cache/fast: edit_cache + +.PHONY : edit_cache/fast + +# The main all target +all: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/pi/upm/src/b5t007001/stblib/CMakeFiles /home/pi/upm/src/b5t007001/stblib/CMakeFiles/progress.marks + $(MAKE) -f CMakeFiles/Makefile2 all + $(CMAKE_COMMAND) -E cmake_progress_start /home/pi/upm/src/b5t007001/stblib/CMakeFiles 0 +.PHONY : all + +# The main clean target +clean: + $(MAKE) -f CMakeFiles/Makefile2 clean +.PHONY : clean + +# The main clean target +clean/fast: clean + +.PHONY : clean/fast + +# Prepare targets for installation. +preinstall: all + $(MAKE) -f CMakeFiles/Makefile2 preinstall +.PHONY : preinstall + +# Prepare targets for installation. +preinstall/fast: + $(MAKE) -f CMakeFiles/Makefile2 preinstall +.PHONY : preinstall/fast + +# clear depends +depend: + $(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 +.PHONY : depend + +#============================================================================= +# Target rules for targets named stblib + +# Build rule for target. +stblib: cmake_check_build_system + $(MAKE) -f CMakeFiles/Makefile2 stblib +.PHONY : stblib + +# fast build rule for target. +stblib/fast: + $(MAKE) -f CMakeFiles/stblib.dir/build.make CMakeFiles/stblib.dir/build +.PHONY : stblib/fast + +# target to build an object file +src/STB/Interface.o: + $(MAKE) -f CMakeFiles/stblib.dir/build.make CMakeFiles/stblib.dir/src/STB/Interface.o +.PHONY : src/STB/Interface.o + +# target to preprocess a source file +src/STB/Interface.i: + $(MAKE) -f CMakeFiles/stblib.dir/build.make CMakeFiles/stblib.dir/src/STB/Interface.i +.PHONY : src/STB/Interface.i + +# target to generate assembly for a file +src/STB/Interface.s: + $(MAKE) -f CMakeFiles/stblib.dir/build.make CMakeFiles/stblib.dir/src/STB/Interface.s +.PHONY : src/STB/Interface.s + +# target to build an object file +src/STB/STBAPI.o: + $(MAKE) -f CMakeFiles/stblib.dir/build.make CMakeFiles/stblib.dir/src/STB/STBAPI.o +.PHONY : src/STB/STBAPI.o + +# target to preprocess a source file +src/STB/STBAPI.i: + $(MAKE) -f CMakeFiles/stblib.dir/build.make CMakeFiles/stblib.dir/src/STB/STBAPI.i +.PHONY : src/STB/STBAPI.i + +# target to generate assembly for a file +src/STB/STBAPI.s: + $(MAKE) -f CMakeFiles/stblib.dir/build.make CMakeFiles/stblib.dir/src/STB/STBAPI.s +.PHONY : src/STB/STBAPI.s + +# target to build an object file +src/STB/STBFaceInfo.o: + $(MAKE) -f CMakeFiles/stblib.dir/build.make CMakeFiles/stblib.dir/src/STB/STBFaceInfo.o +.PHONY : src/STB/STBFaceInfo.o + +# target to preprocess a source file +src/STB/STBFaceInfo.i: + $(MAKE) -f CMakeFiles/stblib.dir/build.make CMakeFiles/stblib.dir/src/STB/STBFaceInfo.i +.PHONY : src/STB/STBFaceInfo.i + +# target to generate assembly for a file +src/STB/STBFaceInfo.s: + $(MAKE) -f CMakeFiles/stblib.dir/build.make CMakeFiles/stblib.dir/src/STB/STBFaceInfo.s +.PHONY : src/STB/STBFaceInfo.s + +# target to build an object file +src/STB/STBMakeResult.o: + $(MAKE) -f CMakeFiles/stblib.dir/build.make CMakeFiles/stblib.dir/src/STB/STBMakeResult.o +.PHONY : src/STB/STBMakeResult.o + +# target to preprocess a source file +src/STB/STBMakeResult.i: + $(MAKE) -f CMakeFiles/stblib.dir/build.make CMakeFiles/stblib.dir/src/STB/STBMakeResult.i +.PHONY : src/STB/STBMakeResult.i + +# target to generate assembly for a file +src/STB/STBMakeResult.s: + $(MAKE) -f CMakeFiles/stblib.dir/build.make CMakeFiles/stblib.dir/src/STB/STBMakeResult.s +.PHONY : src/STB/STBMakeResult.s + +# target to build an object file +src/STB/STBTracking.o: + $(MAKE) -f CMakeFiles/stblib.dir/build.make CMakeFiles/stblib.dir/src/STB/STBTracking.o +.PHONY : src/STB/STBTracking.o + +# target to preprocess a source file +src/STB/STBTracking.i: + $(MAKE) -f CMakeFiles/stblib.dir/build.make CMakeFiles/stblib.dir/src/STB/STBTracking.i +.PHONY : src/STB/STBTracking.i + +# target to generate assembly for a file +src/STB/STBTracking.s: + $(MAKE) -f CMakeFiles/stblib.dir/build.make CMakeFiles/stblib.dir/src/STB/STBTracking.s +.PHONY : src/STB/STBTracking.s + +# target to build an object file +src/STB/STBValidValue.o: + $(MAKE) -f CMakeFiles/stblib.dir/build.make CMakeFiles/stblib.dir/src/STB/STBValidValue.o +.PHONY : src/STB/STBValidValue.o + +# target to preprocess a source file +src/STB/STBValidValue.i: + $(MAKE) -f CMakeFiles/stblib.dir/build.make CMakeFiles/stblib.dir/src/STB/STBValidValue.i +.PHONY : src/STB/STBValidValue.i + +# target to generate assembly for a file +src/STB/STBValidValue.s: + $(MAKE) -f CMakeFiles/stblib.dir/build.make CMakeFiles/stblib.dir/src/STB/STBValidValue.s +.PHONY : src/STB/STBValidValue.s + +# target to build an object file +src/STB_FaceRecognition/FrInterface.o: + $(MAKE) -f CMakeFiles/stblib.dir/build.make CMakeFiles/stblib.dir/src/STB_FaceRecognition/FrInterface.o +.PHONY : src/STB_FaceRecognition/FrInterface.o + +# target to preprocess a source file +src/STB_FaceRecognition/FrInterface.i: + $(MAKE) -f CMakeFiles/stblib.dir/build.make CMakeFiles/stblib.dir/src/STB_FaceRecognition/FrInterface.i +.PHONY : src/STB_FaceRecognition/FrInterface.i + +# target to generate assembly for a file +src/STB_FaceRecognition/FrInterface.s: + $(MAKE) -f CMakeFiles/stblib.dir/build.make CMakeFiles/stblib.dir/src/STB_FaceRecognition/FrInterface.s +.PHONY : src/STB_FaceRecognition/FrInterface.s + +# target to build an object file +src/STB_FaceRecognition/STBFrAPI.o: + $(MAKE) -f CMakeFiles/stblib.dir/build.make CMakeFiles/stblib.dir/src/STB_FaceRecognition/STBFrAPI.o +.PHONY : src/STB_FaceRecognition/STBFrAPI.o + +# target to preprocess a source file +src/STB_FaceRecognition/STBFrAPI.i: + $(MAKE) -f CMakeFiles/stblib.dir/build.make CMakeFiles/stblib.dir/src/STB_FaceRecognition/STBFrAPI.i +.PHONY : src/STB_FaceRecognition/STBFrAPI.i + +# target to generate assembly for a file +src/STB_FaceRecognition/STBFrAPI.s: + $(MAKE) -f CMakeFiles/stblib.dir/build.make CMakeFiles/stblib.dir/src/STB_FaceRecognition/STBFrAPI.s +.PHONY : src/STB_FaceRecognition/STBFrAPI.s + +# target to build an object file +src/STB_FaceRecognition/STBFrValidValue.o: + $(MAKE) -f CMakeFiles/stblib.dir/build.make CMakeFiles/stblib.dir/src/STB_FaceRecognition/STBFrValidValue.o +.PHONY : src/STB_FaceRecognition/STBFrValidValue.o + +# target to preprocess a source file +src/STB_FaceRecognition/STBFrValidValue.i: + $(MAKE) -f CMakeFiles/stblib.dir/build.make CMakeFiles/stblib.dir/src/STB_FaceRecognition/STBFrValidValue.i +.PHONY : src/STB_FaceRecognition/STBFrValidValue.i + +# target to generate assembly for a file +src/STB_FaceRecognition/STBFrValidValue.s: + $(MAKE) -f CMakeFiles/stblib.dir/build.make CMakeFiles/stblib.dir/src/STB_FaceRecognition/STBFrValidValue.s +.PHONY : src/STB_FaceRecognition/STBFrValidValue.s + +# target to build an object file +src/STB_FaceRecognition/SdkSTBFr.o: + $(MAKE) -f CMakeFiles/stblib.dir/build.make CMakeFiles/stblib.dir/src/STB_FaceRecognition/SdkSTBFr.o +.PHONY : src/STB_FaceRecognition/SdkSTBFr.o + +# target to preprocess a source file +src/STB_FaceRecognition/SdkSTBFr.i: + $(MAKE) -f CMakeFiles/stblib.dir/build.make CMakeFiles/stblib.dir/src/STB_FaceRecognition/SdkSTBFr.i +.PHONY : src/STB_FaceRecognition/SdkSTBFr.i + +# target to generate assembly for a file +src/STB_FaceRecognition/SdkSTBFr.s: + $(MAKE) -f CMakeFiles/stblib.dir/build.make CMakeFiles/stblib.dir/src/STB_FaceRecognition/SdkSTBFr.s +.PHONY : src/STB_FaceRecognition/SdkSTBFr.s + +# target to build an object file +src/STB_Property/PeInterface.o: + $(MAKE) -f CMakeFiles/stblib.dir/build.make CMakeFiles/stblib.dir/src/STB_Property/PeInterface.o +.PHONY : src/STB_Property/PeInterface.o + +# target to preprocess a source file +src/STB_Property/PeInterface.i: + $(MAKE) -f CMakeFiles/stblib.dir/build.make CMakeFiles/stblib.dir/src/STB_Property/PeInterface.i +.PHONY : src/STB_Property/PeInterface.i + +# target to generate assembly for a file +src/STB_Property/PeInterface.s: + $(MAKE) -f CMakeFiles/stblib.dir/build.make CMakeFiles/stblib.dir/src/STB_Property/PeInterface.s +.PHONY : src/STB_Property/PeInterface.s + +# target to build an object file +src/STB_Property/STBPeAPI.o: + $(MAKE) -f CMakeFiles/stblib.dir/build.make CMakeFiles/stblib.dir/src/STB_Property/STBPeAPI.o +.PHONY : src/STB_Property/STBPeAPI.o + +# target to preprocess a source file +src/STB_Property/STBPeAPI.i: + $(MAKE) -f CMakeFiles/stblib.dir/build.make CMakeFiles/stblib.dir/src/STB_Property/STBPeAPI.i +.PHONY : src/STB_Property/STBPeAPI.i + +# target to generate assembly for a file +src/STB_Property/STBPeAPI.s: + $(MAKE) -f CMakeFiles/stblib.dir/build.make CMakeFiles/stblib.dir/src/STB_Property/STBPeAPI.s +.PHONY : src/STB_Property/STBPeAPI.s + +# target to build an object file +src/STB_Property/STBPeValidValue.o: + $(MAKE) -f CMakeFiles/stblib.dir/build.make CMakeFiles/stblib.dir/src/STB_Property/STBPeValidValue.o +.PHONY : src/STB_Property/STBPeValidValue.o + +# target to preprocess a source file +src/STB_Property/STBPeValidValue.i: + $(MAKE) -f CMakeFiles/stblib.dir/build.make CMakeFiles/stblib.dir/src/STB_Property/STBPeValidValue.i +.PHONY : src/STB_Property/STBPeValidValue.i + +# target to generate assembly for a file +src/STB_Property/STBPeValidValue.s: + $(MAKE) -f CMakeFiles/stblib.dir/build.make CMakeFiles/stblib.dir/src/STB_Property/STBPeValidValue.s +.PHONY : src/STB_Property/STBPeValidValue.s + +# target to build an object file +src/STB_Property/SdkSTBPe.o: + $(MAKE) -f CMakeFiles/stblib.dir/build.make CMakeFiles/stblib.dir/src/STB_Property/SdkSTBPe.o +.PHONY : src/STB_Property/SdkSTBPe.o + +# target to preprocess a source file +src/STB_Property/SdkSTBPe.i: + $(MAKE) -f CMakeFiles/stblib.dir/build.make CMakeFiles/stblib.dir/src/STB_Property/SdkSTBPe.i +.PHONY : src/STB_Property/SdkSTBPe.i + +# target to generate assembly for a file +src/STB_Property/SdkSTBPe.s: + $(MAKE) -f CMakeFiles/stblib.dir/build.make CMakeFiles/stblib.dir/src/STB_Property/SdkSTBPe.s +.PHONY : src/STB_Property/SdkSTBPe.s + +# target to build an object file +src/STB_Tracker/STBTrAPI.o: + $(MAKE) -f CMakeFiles/stblib.dir/build.make CMakeFiles/stblib.dir/src/STB_Tracker/STBTrAPI.o +.PHONY : src/STB_Tracker/STBTrAPI.o + +# target to preprocess a source file +src/STB_Tracker/STBTrAPI.i: + $(MAKE) -f CMakeFiles/stblib.dir/build.make CMakeFiles/stblib.dir/src/STB_Tracker/STBTrAPI.i +.PHONY : src/STB_Tracker/STBTrAPI.i + +# target to generate assembly for a file +src/STB_Tracker/STBTrAPI.s: + $(MAKE) -f CMakeFiles/stblib.dir/build.make CMakeFiles/stblib.dir/src/STB_Tracker/STBTrAPI.s +.PHONY : src/STB_Tracker/STBTrAPI.s + +# target to build an object file +src/STB_Tracker/STBTrValidValue.o: + $(MAKE) -f CMakeFiles/stblib.dir/build.make CMakeFiles/stblib.dir/src/STB_Tracker/STBTrValidValue.o +.PHONY : src/STB_Tracker/STBTrValidValue.o + +# target to preprocess a source file +src/STB_Tracker/STBTrValidValue.i: + $(MAKE) -f CMakeFiles/stblib.dir/build.make CMakeFiles/stblib.dir/src/STB_Tracker/STBTrValidValue.i +.PHONY : src/STB_Tracker/STBTrValidValue.i + +# target to generate assembly for a file +src/STB_Tracker/STBTrValidValue.s: + $(MAKE) -f CMakeFiles/stblib.dir/build.make CMakeFiles/stblib.dir/src/STB_Tracker/STBTrValidValue.s +.PHONY : src/STB_Tracker/STBTrValidValue.s + +# target to build an object file +src/STB_Tracker/SdkSTBTr.o: + $(MAKE) -f CMakeFiles/stblib.dir/build.make CMakeFiles/stblib.dir/src/STB_Tracker/SdkSTBTr.o +.PHONY : src/STB_Tracker/SdkSTBTr.o + +# target to preprocess a source file +src/STB_Tracker/SdkSTBTr.i: + $(MAKE) -f CMakeFiles/stblib.dir/build.make CMakeFiles/stblib.dir/src/STB_Tracker/SdkSTBTr.i +.PHONY : src/STB_Tracker/SdkSTBTr.i + +# target to generate assembly for a file +src/STB_Tracker/SdkSTBTr.s: + $(MAKE) -f CMakeFiles/stblib.dir/build.make CMakeFiles/stblib.dir/src/STB_Tracker/SdkSTBTr.s +.PHONY : src/STB_Tracker/SdkSTBTr.s + +# target to build an object file +src/STB_Tracker/TrInterface.o: + $(MAKE) -f CMakeFiles/stblib.dir/build.make CMakeFiles/stblib.dir/src/STB_Tracker/TrInterface.o +.PHONY : src/STB_Tracker/TrInterface.o + +# target to preprocess a source file +src/STB_Tracker/TrInterface.i: + $(MAKE) -f CMakeFiles/stblib.dir/build.make CMakeFiles/stblib.dir/src/STB_Tracker/TrInterface.i +.PHONY : src/STB_Tracker/TrInterface.i + +# target to generate assembly for a file +src/STB_Tracker/TrInterface.s: + $(MAKE) -f CMakeFiles/stblib.dir/build.make CMakeFiles/stblib.dir/src/STB_Tracker/TrInterface.s +.PHONY : src/STB_Tracker/TrInterface.s + +# Help Target +help: + @echo "The following are some of the valid targets for this Makefile:" + @echo "... all (the default if no target is provided)" + @echo "... clean" + @echo "... depend" + @echo "... rebuild_cache" + @echo "... edit_cache" + @echo "... stblib" + @echo "... src/STB/Interface.o" + @echo "... src/STB/Interface.i" + @echo "... src/STB/Interface.s" + @echo "... src/STB/STBAPI.o" + @echo "... src/STB/STBAPI.i" + @echo "... src/STB/STBAPI.s" + @echo "... src/STB/STBFaceInfo.o" + @echo "... src/STB/STBFaceInfo.i" + @echo "... src/STB/STBFaceInfo.s" + @echo "... src/STB/STBMakeResult.o" + @echo "... src/STB/STBMakeResult.i" + @echo "... src/STB/STBMakeResult.s" + @echo "... src/STB/STBTracking.o" + @echo "... src/STB/STBTracking.i" + @echo "... src/STB/STBTracking.s" + @echo "... src/STB/STBValidValue.o" + @echo "... src/STB/STBValidValue.i" + @echo "... src/STB/STBValidValue.s" + @echo "... src/STB_FaceRecognition/FrInterface.o" + @echo "... src/STB_FaceRecognition/FrInterface.i" + @echo "... src/STB_FaceRecognition/FrInterface.s" + @echo "... src/STB_FaceRecognition/STBFrAPI.o" + @echo "... src/STB_FaceRecognition/STBFrAPI.i" + @echo "... src/STB_FaceRecognition/STBFrAPI.s" + @echo "... src/STB_FaceRecognition/STBFrValidValue.o" + @echo "... src/STB_FaceRecognition/STBFrValidValue.i" + @echo "... src/STB_FaceRecognition/STBFrValidValue.s" + @echo "... src/STB_FaceRecognition/SdkSTBFr.o" + @echo "... src/STB_FaceRecognition/SdkSTBFr.i" + @echo "... src/STB_FaceRecognition/SdkSTBFr.s" + @echo "... src/STB_Property/PeInterface.o" + @echo "... src/STB_Property/PeInterface.i" + @echo "... src/STB_Property/PeInterface.s" + @echo "... src/STB_Property/STBPeAPI.o" + @echo "... src/STB_Property/STBPeAPI.i" + @echo "... src/STB_Property/STBPeAPI.s" + @echo "... src/STB_Property/STBPeValidValue.o" + @echo "... src/STB_Property/STBPeValidValue.i" + @echo "... src/STB_Property/STBPeValidValue.s" + @echo "... src/STB_Property/SdkSTBPe.o" + @echo "... src/STB_Property/SdkSTBPe.i" + @echo "... src/STB_Property/SdkSTBPe.s" + @echo "... src/STB_Tracker/STBTrAPI.o" + @echo "... src/STB_Tracker/STBTrAPI.i" + @echo "... src/STB_Tracker/STBTrAPI.s" + @echo "... src/STB_Tracker/STBTrValidValue.o" + @echo "... src/STB_Tracker/STBTrValidValue.i" + @echo "... src/STB_Tracker/STBTrValidValue.s" + @echo "... src/STB_Tracker/SdkSTBTr.o" + @echo "... src/STB_Tracker/SdkSTBTr.i" + @echo "... src/STB_Tracker/SdkSTBTr.s" + @echo "... src/STB_Tracker/TrInterface.o" + @echo "... src/STB_Tracker/TrInterface.i" + @echo "... src/STB_Tracker/TrInterface.s" +.PHONY : help + + + +#============================================================================= +# Special targets to cleanup operation of make. + +# Special rule to run CMake to check the build system integrity. +# No rule that depends on this can have commands that come from listfiles +# because they might be regenerated. +cmake_check_build_system: + $(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 +.PHONY : cmake_check_build_system + diff --git a/src/b5t007001/stblib/cmake_install.cmake b/src/b5t007001/stblib/cmake_install.cmake new file mode 100644 index 00000000..91687b7e --- /dev/null +++ b/src/b5t007001/stblib/cmake_install.cmake @@ -0,0 +1,44 @@ +# Install script for directory: /home/pi/upm/src/b5t007001/stblib + +# Set the install prefix +if(NOT DEFINED CMAKE_INSTALL_PREFIX) + set(CMAKE_INSTALL_PREFIX "/usr/local") +endif() +string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") + +# Set the install configuration name. +if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) + if(BUILD_TYPE) + string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" + CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") + else() + set(CMAKE_INSTALL_CONFIG_NAME "") + endif() + message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") +endif() + +# Set the component getting installed. +if(NOT CMAKE_INSTALL_COMPONENT) + if(COMPONENT) + message(STATUS "Install component: \"${COMPONENT}\"") + set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") + else() + set(CMAKE_INSTALL_COMPONENT) + endif() +endif() + +# Install shared libraries without execute permission? +if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) + set(CMAKE_INSTALL_SO_NO_EXE "1") +endif() + +if(CMAKE_INSTALL_COMPONENT) + set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt") +else() + set(CMAKE_INSTALL_MANIFEST "install_manifest.txt") +endif() + +string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT + "${CMAKE_INSTALL_MANIFEST_FILES}") +file(WRITE "/home/pi/upm/src/b5t007001/stblib/${CMAKE_INSTALL_MANIFEST}" + "${CMAKE_INSTALL_MANIFEST_CONTENT}") diff --git a/src/b5t007001/stblib/libstblib.a b/src/b5t007001/stblib/libstblib.a new file mode 100644 index 0000000000000000000000000000000000000000..41b6460e02821b6d76724aea2ab55bba9e0d25df GIT binary patch literal 112824 zcmeIb513^|dFOxn57-VJy-J(3*fAGqVjG*`4m3EJi5Z**hcLvJX>?Q)r)T=&j5af4 zPm>IY5g6RCDik^D3(VbNtHn;1f#hs}@8x`chUXNFmEMAjrGl0==~ z_fx0dbL&>0bMLv`Jun(hKey{t)mv}9RrS_eZ@u;BoV;dgcI&p+uQ;RH{L}((`X2tT zR?j-8c1{Yic}0>WpGlGzJ@V}SF1$ZUo{itzYe|y#yY|{7;dje){_o#@I!W%CTiWl> zzLq45`8_(8B;oIyPbJCU-Mgq?*N=ZS>F8Hoopi;&P2Wqp>b>QDS8PhU%KSdGIqAA} zpp)Ml>vM0Z&+gv7b4RjnYG&)kxh)&FUtLc&Zkw8|n`hl@eQK`0erm_`Og$N|&(t%| z#`@d^vr|{pFRAaoa%L_$e@}hum2>q(NH3V$THnpf8+J}_*W0?8`qXS9_{rI+t?${s z<6W23=Vq^3xAV#!b3o;U2Cy6F>QmF(chq<9o|sa0VS+eHsU~K3?yAquT{XFFw!VAY z&Y5Z87X}89=k0ixN)|w+0Re<7Wk#(b3ql2ZNqy_ickS3dr@Cy)Iybx-J|iH2&1eY1 zf(%7%end0oOQu8*MGJt_u#J;%c&Eax_3<_}Gy%4Y|rG@Z`6Rw)v+3=efNU0z; zq$CYBS~kvZot$m*#PCqn$lGwIp((65;=Owjlxi`vtR2J>!De zrhXxy`rNpLMo(D#ZkC>4?+bjCPM3Bpj5Jjp+;RE;ufr5-HLIucz)COXTI;8EE? zMLi*8r-?da>O|c!lpF@t%-6(H6ZNJl7f{Ah6LqWTiF%`s9Yk}@x#&13WvLLlQE6d< zFtoWAQ>f+&oTx8k8-+EMf!bGCqaZ%OO5?qaBKZKXDP*aeOVmh}8xH9yn>7lwAjyKL z<^l)sjZ&)yn;1e(YYagH?UJgo`@-==V9m^tww_}S3CEB*$YwI9`zdTeJu0lZ9u*MQ zqrA=asDMU2rm3S*){q94l<}f50llMi(gPX3v29*cuE<} zDDz&=UTvY9SEv~-m~D(zD|enj&_sPf&}0O);=&zs_1VkSEtCd)Mf2Em#>QNBtIn>S znZ9ja@qzOz4!Bsn2jk@Vhk`k~~Wn-2^Aj3$_a-Ct0x@luFW6ptDSJ@g-LRFp!$kKmD(!~^(2?GxiSNKHm z;Y9fI@Fwd||3z2)qMw( z>Q@d81n)6jPl~Q?PghJ|?;{r-NN)VnlX01;-w@AqZSMi<8M-R|o&5W1A34;e`gl2X zs=m8x`}XhEue-K)e($P%`+KTsUEn7@boQL7Fv0fJu6JSJ?DIIw;2_`r=P2Kb&-W+P z{?IYt{c1nwAN2kgd;gI4pWyw&-v0vcuX=xv_m6nL__tA?s;}*VH!3Ym@lx)}EgE!uBhGfljL%(b&oVKlpZThKh7L-Y6|X*T}-N#6%3hw<=W5Ek%{>ubPS|9VjX zXMId#LI!93OfozR8&P^>m-=SbzO}HfqJ9^*FZmnoA)Q9M^~dF+^QQtjH{{g+2I@`x zWNl}CHIL^ea?($fOiy{NElv(-n#{pD8R8UeuHQucJg!&h-IRlCQ-~{vHyL-saoon+ zL5;VA8dDk1`qjTLOZFZ7fyPt$_v7yuF2;1}ASVIyAG(smqX7(K7%+XJ$+@Bfc**RO z`jb~2^0*FuLg~;qx@tWKh=?+ts@_)z?`!-!FjjWntzLMC2T031JY?^*v%SNQ_FfC# z*9Pz7!Tb8)9oc7TCxUn6kA-gv-p7J>`i{ZCL-s!E-}|bJp{b70Q;|O6>x?-E`nkys zlL>}<%(s2J`u?b|Z{WdiZPDfD666iv@T2`g8De95#o9DUX_-Z$DwQv>9#)8?{T8n8IKztYuC{nJm_TL zUg^_Y9Z5d9K8WA&Q7=Y|#p4g-Ef0&wAI2MxSiIu_&tF#W&|~rNK$zaw!wTaW#wzA> zqy^6AayIVSJQKdX@O#bkO7X#p<283aUFp$n!?K&-^2Q&Q-TYyESa#yWvf~fSZvHSm zWwo*sAC?`zl|AT#s;A;IJ6&JpKB1u8(<(Rf>Yki<=H!?8dU159p8`w2vbi~ZlR5-jU}`az5=_;>8(#MmriYCOsG@aSd^zzyZI}0zBr|`R!QkczCt&BmHOm8wPEaa`dMC^)}+75 z3M3vxuSn-^ypQW0{f+nadawBR4SHuDML0U`pnsp#`;dP}m#p%xcD??ek9>1j_=g2= zd`91>NS^~oB3NthE`_hKa6j%j7~l51hwXQ~+K;dS$!c8c(aoL3Q| z7#`l}tE7D%95L;bW50M3+`w8t%Y*wL0UY+S{x*33+{5RUaj3HQfR)jWkG{_om2uF+ zyFMVfZ++X~LmsxU0hNcgKzFh*8wVJxEG*QWEG*<<3k!MJ!bW@^j4Ol<`L-CS_%;*| z6JC2Db*YP_cC+fbxlN5O$=D`5HNg+5uIabN1EYkssrwmU_rSJl(=7p9wGGa@QZd${?7jHzYdn5UG1L+305$K0U|9CMj6aF>;Yn=A>(9I#Bj!zJO+>C50_ z9$E&D`D7Wm>5_1pOTuj{3Aer^9CO$*E$UKxV^aRGcR1T)PJF=a)Y9)1R!e!|h z=aGTP`6Ahly)j&)M7Dq9nS9y)UX3Tn_We2W$oB1uN4EdZg7_)LLt8A{-vM5Q$FlwP z3b!_j*XfF6dn>q5wim-S%l1}qp=@sj7s~cxI4|2(4@JE3pN=$m1O9+FY&`(|E#{3u z&l~8CgVlx(SHuh99DJMF(B_ZfJVR@V*&N*T6xuY@Ta5oqr<9Gr@o%UL0%PrM@3c=l z+H9`8wt&9l0{TLoOL+I^={8no!}~MKgg38WomhZd^Qf#&X{R!D=i&e7@8-AJV(`cH z@(3)qv_q+Sg^u)!1V5y1z|Sdk!>)8v$>7t0tKxnyeht}WZAc2v(>8n=1 zW_H*1Rj-+@Z#nnMRj*D%t7q0$y|#Ats&kU_WQ9zo>e@h@bPenExO0-@kMHYxVb_Z8 zm-Y^Hy{zjedIq~*-gQ#@w`-F0=r4SFlHNr7JAy;S(LXCc`vq94^p zQT*q~KcdRC#xJ4rj8GH5PJVl!BZ~il{NGdjW}p7$L6@XH&XoVMY9s#QDE@N!?^pcSeERoA@xLwqM^A3V|A#34 zPvoCDB}tz0>HkL*|9|D*bZR4>erXT%4az@0+`zvwieD%H&}ohMw?*+g`x9uYJxMW9c72mS&1?ScML`DaEN_|K2x-!A`r z5WhQ$zfu0lS2xn%5ygK_{;vk{Uy0(A#({>d$?#O-kJU`<+|EG<4!hc+*1{vrS4_>! z?A)4MK3h-Eg>qgdJSoDNm%KwxdFSPncEN$2yu(ln&ei$DYIgilSvDUKY8;C$a~_g& zPmR-?MW-XvLq{DPCTbAT{y1d-yWr5M9TF7*s)%L+6cC4%jrvY9#s)KCCcG-#c*CUi}5F-8Yiq^mGHEq_cZDwI6LGM z3uh3hyzG2x5b8l4?b%r)B{a~+8LISLd;@iK7AZhqkVX(u8s%f>+;b1ism^qEwGkx@ zh46}_j+@{E{O*9WKO+Zgcvzjrqf?-2AJ8_A^94AAQ0gz`l`ydB z?0loV0H>V1plHG#9JgPPq(OKP)s&=B&ZZn16%wFtf^DE~)JXsv7OO#iQ?;~&27Los zRT@Ay4wk1hi-6Xb52W2Z151(#>8wN26X(2p2d)O3^)ia$PI&hkP2z_1yAfCL_u?x4 z0q;JJE2Vr?zai;`PvE{(ejPj*(guiYa0jHn;L0$2KQ8(ZuJC-%yA|QazXw-#Sv`R(WALzO7IZbbgZ5MElSiMbBw+FO+V8dy#Yim0{>&jrF*1Qv0ebLvL1k zm1SsSl01xismi4?4ZSrNRpN3U2^ftskyn??OSvL zbhj{USBqR$>vti0Q^xA`d5Op$MC7^kZ<NIP+v#w*S z&OTFMdfK0Ly;gETPt#df+rQhVb!65H`z!pkek~hWD;vJScMO-aKgn<%^}JiGAzIlh z?2oFZdlTE04V&F!(k-^UW$S0LbS*aB(Jl{brC~j@-`3Wg*mqF2y_O5l(Jt@N#=l(k zuv~bKc6pB){vSeH?}}{1;l)OsG_Z^}{7Fs|9dcqmoOjnz_pTzploJ;Y0W zb9OVSR4!g>TlNtDdi}1^&+xw?i%o64Qm>M`^)vkMisG-3|Ir}+y;1yC@_$c14Zkk` z_eb&nO8zlbi^cz&DE_1JV^1~u?uz2SEdL!r{9i`#Ps;yrfWJ%c_E7#I`Fo{!SpH{6 z@e}f|QM~1Uc@+OX`DcRo4@dF;PX0R-zg~IKe)mT4errNK*4i{Kc?WClA5&-?*c2{ z0@Ius0s^y}GuOC@Z5o(eS15#`9m&tG(;M#OG4qhXgtht7x`ve|GUzB>6QuJmxD%1G zIGhXYH4VfIqLjvAiz9+8;wYa_d?{X$Ek~FlP(l`5xR_ye#tC<+UIVOQuyEKikN{Hy zM0KF6mU6D$Yv2nl5@`+OrU=kSDI7;+rWj9cVA;r`oQX4Fx%i?d03IvP+Ce4q-FdgnNqMaEFuR z5nS051|>JJiLA%f+;b1EY#?{x%J%U!TnU+~WYN%>S}(!X<}fMc;}OO5>8ENewmAg2Km;t$0-Hkt9I~42Gg8(Zpx>*pM42y3IYz~-!S)_1=hjuoH zb6-2=@AYbLbGTvHk(t>XR;VO)|5JRwR=ST^d!{s}N9XSMW$KAv+Rq#y8p>ME@_x>zklyx0Tl!%iKkVVF z-p_dv(vNsQ=TS&+duOYj{`Eed^BcgAdjF{Ra~^>5*W_ovEN2eXjE9-?a^|34=MdZ- zMz!nbU0qe;@aq)bd}e`kz1n;Jts_SsgC^Uj`(jViCZ8u~fuL#9`#H;lf5Q7GynloD zZ;&5+wij4tU)M%6K7Pi-PkaBg_h07yoGAkTX7A^W4E}B2zfFGd+a6+TgIzv;mxrJ8 ze$Hx;evkL>kw20BDZIC(h!;5n*e!d}-soN)@Nw^wok=SL7xV5?UWJu&<>7#kQ-qi*AhjkGSc_k;fD@nLOVF$n`I(5O?EF^&95gNH3rdTe zWA)w_);vj4a}){KL{(2kDE-g(ZmWi&{hLmM)^r*`dpRbwY*o2gybfXSn? z4W0pyXL^ZvhCH6jmWXH2Uu$pWjf6@;>CtYxRsUv8U_3oubXO&txbKHEGGFArDldPCr%t)=hjIBkO2=F(zH5Xv!SFmf z=NL_I&{|CEdZGRNS*rIW$$g|l?!8*+Qkl8%zGw6kHy^8{cNgX9;ii*-yC-?`ewph| zYR4b#^6M3@Uezmg)+D1fX(H`Nh%%rCRueZAG&v-*9f>NiX)n?R$SdE;PEKQbvg z+=b;$_ReQz2yk6fTX(?S2juJpw;$@M?A!lw-ANVFK{{*>wDV)Gog4Rzhq{Ep{ObV5 z+DxX$Mp;bn@^?ySZRXor=FQKB_40D~PBavjO?;n~trhMP{ihusYv-^Z#C2uu`^QnA zD6%b3e(X2s$JRGq!o4~Q$A&{*n=1Pbepq*3_f&Lmc|l!J|Bm;mN0oK4>8*^5O+Taj z2bPfkw9@x2A^m2hM~7G}{g){{I>BPoqf?^mE;c=5Cc5il(@!XUZ3*c&DE-(H(xV$P zHZPX`ex+xuU2OXGNLrwYPU+VueJG!h7bcUw@q=`nE@Shg{$sgxtJP&C7+=FXwJXS^}OXxwQm5P4a6Ac$(zc67USy0(rCqJm|*G1|Yr)^#&^zgLdFN8ilGP3bpDNPD0IanBCC&e#c0p%ZTFN=`ygw0W-9=L&U1ON+g&w{ok# zxuATLeFtyp?w;?iGH<_Cx^nRxq+R-crLQa@eV@|zD?Q~g`_59zQxU#aHkx+j8B}^~ z{zZCByYvG}&l&{fG5gI@$}=QR zMue}Gt)Lw}qe_pxf3fW|rt}j_NMBR>4Zc2*J=DjWmQWw#!iT+mvE^B>^w{+mn|`g* zvwpDH^sAMA+Y-{RQTiFBhri4|q50UN`D;S>b}fOPNu{4#Li!C#&$`76m{Y1unLRYn zbKdXtocwvJjW_S@Ko_!k*+t6J#+vi=&Ya7}8tyCQ`#PPBGuVkb;fwB5v}WPQlvZ}F zygqJe8Baz!tba?(STd}%t?V3sq;b4R|NLCe7@r*T`=+%CD|omwCr|Wj^x{8qW)7I{dZF34~ zoWiz)y36(r-B#Prj{0#o+K84>6}d<2{Yi34`p$oAm6P=job8<&3t)gFj^|bSu@|i! zoVM+`G`61%e0lrH2s7MzO|}>0d%oh7=PqD)fRjFyJ%$6fI|~)>2u}CRJDRn3rf@&m zU8g3=uLtQ2U%a2}jNv4?GzU(scJb7E{72QbqpaP2vawpN^nS8IZGO^|yPs@0XZ@OU zLg@6|&!z5i5`J`I{OnJ{Z})epyE#8PCh_bqA|9Ot{|meyoejU*z{NAh;#WPb;M*#q z&y5-3n)xqxH*DXG8{s|I*wnja)6B+&$fn6S9@_Z~Zn1cn^I*GPDxN;!!EU!yJlKE2 zHNeG|i+0A2w^VxI5A2!f4YaGyJh<;~vKFC6ZmeMxv{P?I=7R9kR~&j$7sLplG_veP`LKFSo*LJxiwACn~TLWEj-m_;EQd-;uceU!%h7_RuVmzMAlCTZZ~tFFez}oMtz8<1+Bqr0|X}1AP<1GqDVKHVBW~Yp}$6 z-y}TieSI-D&>xqBFBtc**)LTtLetu1z{B{-8UXx{tfibfN4aFV1CPxt1AWN+xn;nE z9=1z(q=zlA12F$(z4|9w*Z~aYj_;RW6EQo$4&`a>oqGp-3;iu#r(G(ZSbtkAJ@9d; zzbzII{1@tPi^W5K2=%wc;z9pGe=D*{-1H-2lVCp9cx;xIhLo{6=(w7D#&y088-b>C z3GYlA&1Mix-dz2QMbu6rKj(?NR(mDHwV0etCc#i*o z;4V!;n&33YH{(#LGh=6+y}I-qe=e<)+&TV0u)oaB&z$UO>@oYr7INC;F!GnZH$`&T z!D%l*rNX{AjVsR1t93o))mOW|<8;W`{zari9u6!b9rC!+E}hmsi}v1QV`nVAJ4a61 zo~Cx~@XO294jNba4#I-Aa&4l0(|(U*t8vV=XB#|y9#5-rtPCFZi6pMw8v0>8j+Mc~ z9u)Aj8V?-{;-aNlGZy_~eYiR#TS;I-U%+be?nXoIJ$UfvE*S-rd+p0av*J3M9e z@^*Og^m1ec-zs)}L1WH`^o=a`m6zEQM1G`AaWwka^E^?^>pvb$x&Y*R(<5nA1lm>{bQ|iviz!M z=4kG5^Jf2!LmW>$e=LF<6)b6NjTpEx^T(?K+Q`rHjpvWRm6<=@CAe=3PrLc!ZCV_? zfeig)`Ns1{?#wBeKfYyZX8W}MU0E-)MtpY7FC(|VbELQ8h-y23WZYn^#a=ood#M{w z&;{gIySj5x=mw|Cukt;H4tGsYy0*)Cs5eM2wtG0zIimK9`}Epla9>_r_X>y0oo(7K zTrrH()s$aedg8+LZ_7!Kd_OTw|5%KhIG^5?MR%Jm$e*#E^5^AG+&{gzQ5WYbeQ0B| z@z}=lFKR5Oj>(rgp7V7)c4l)O;}7fjRN*y!c?)%1DVqOXH~$+ypU#t@S*&|s8Q8E6 z`>2B!_-80Q(lyhBg@c7up$2KZSbG=`jj`y&~LCI{x`S5 z|63jKhQWrsac)W8FkYAl+HQTDe*N1W&}Og~sqHk}wCqC$d#!jv?d_OTA?)L_fh zslkS{{AS5IHJQ^%oqpVxRdj$dk1r?+=NO9Qq&Ee0FX^170BYI3`i zI(=0$pSJAJ23v+V3^puBUziGSQ|riAwkUewqh5KQ8;E3KQp0{0wm2*|VNK)*dj_M966 z7+}Tc?uqR=MR21&P0gnRu8ckBj|%cVUwAYZ+U3zDz?HG*JSn(+O4QDtbE5?3X@*>` zl{dEM{GQ^XenP9HD4T*pUB?FTq#Y^=0BXP1P4p3I(eg4A|fhmO}TyY&rdY%|*X z;O=E)zRFs*%Ks4d5ZeQ$c7Mp`k;rw%oWDJCr%qclLsF)~twb_7*_5r3Id|xP(&%!mS=; z?{@3XqkesevOp(kxHGU!9@LZBE_lbz@{J=$K5n#*fk)xk@4)NuLqja@*Ps54-g|C7 z!2L#99SB#q#wT!v_N#A*?$tUEZr@L$ZpZ^ZQNMCJ+q~zUfvWEG^)$Rlcj5K>_g5;M zGvK8ANq1Gk)we z-D2~D&%-mp@LhI3S91R<>2G;5V7v5rVBy2~4l}-k#T{nw;s<`9yQuUI4&Q%Q@Gkp! zD*MITF)tI}3hzKA#l20q`-L0&4fpXHzrHBk1Il}IPCT%m^YQc>OOKsKvSkHh)4wMk zoRXWaJ{*mg>{t9_FHroQQ9LriWUlqMkxH@iv@9@|f`R6NXCIft`UJlG{ThZFWUa1ICiJKm-K2(Pv3AN0FV zet%)Vqi;wD&c+D(WjkEf*KQU*>nmYjd!z45AIyoTujyV6*U#-9e#Q&yD`)zC)U>xv z`U!f;nC^vf`-%Md{Y2;JZLBN<&zXJ33fI@H{@k25A3t}_Fea6S=UhKyL)ca(GgA3= z$^JiW(N=l)JkoAw6|@`o0fHYpsdT3M(sw7b9z$knp5$~ri$~{pdn(gh{0Q-?SJI)+ zOO}0>bh3dQ=6tNBOWzxKrGOviT#Uu1?~QnLOzs{eU5Hn<1lR7|@nd5)`P+EP9f||0 zKlq#UjL${9SX5U}a?fEjw!q`m1@eDBC!R99x={Sr3gW9u&;6Z`6vT5sT5odup|2Li zSA5y~#dj%Bq~+|BpLQ{wiEm|4Z|1MaPyJdS$?M~p{w(_LQvPn71&1HMDF4Tlzx6T3 zBl3*(i9G!;53Zda2d#@qM_*e^I(TU@>EN%$q=R1Yf@t9}@l@xSKaq%Y=`aUhV(VHs(|vSs{CL4H=oPv*pjWwh_|bW+Bfa&Q)v zk+p=pc7)%`mT^}>epbe9Iq_i`tAYGokmoUfhmJTSc-YS<(_!#*CE5?-9*ud) zgn8uR$IdyaY@rAEX}NdHU-jvC$!`zvd-Z!*hQ|$Zfxp=zX};Z8 z&dllE-%&KaeO6!YyLf6(8qKvuVUYVGW)pPdBZv;4PY{NJd3NdweXa4z9pvOb4;c6r zpM5OQ#b!R$J8i^w0r?*2klOU4xbi=UE5?7=yN~0ljc*Yj5q_I@du1G>ZDiVZ-w|xJ zY%*J)S@~@2h5ad!BNl1CFG(A^?9q7R9@bdI_Q_i3QbTkYWl)6mp8sFNzOGSg0t6njb%XV9lAFpdkk*l^n19)Yt}8WRIAl?_bQ!v_PJ*Y zOi%kgv)icfXpP0b3uNEV?vw6eHsCznzEile-?M+N@iJ#Y|AXF2^#sj{p8x)Qa^sht zjQOL}_FQ)OA3~i-LqYIZPfvr&e2?99su3kY2RJprR?+*J`VnXG7ew*sI1~CILrH&m z6hABfwfb55>!SD%$$yuAmi~??p17~+XX*biivJRR6??rL^8fEq{FCyp58{Efhw_~$ z|1J7i{wt&Sarqwz;@=s?UnxJb+tUA=DE{N}S0(H%{&P|Mf0mzbnp^x|M)C9VUmL{# zT@;^WLOt6)alvf!SHL6XN<+Xq1rljhOYSZh43F!UU#(-Z&JpIpnkIWd7VMh|)--Lsq$!=&N^{e7 zn1`)*9?d*#E%a#SVe6zvGY?xsJ(_vg`s&fl!`5DpW*+gn?9t#|&Q4Ud_8Z#b^UB1Y z1YlTedug^eW1ZXU20ZIPKls6s&&K<&VtIjWK3$ti_c)jx7#SiR)UDmo_p>`4!aWKd z?qOI89_!O?op1^CSifB=9_yP+#bf<%sd%i9EftUTqov}pzS0s;jqxY_&baY7d`BAi zn=ttMmsme9*hjeKe_wpy+O880-SCnV4&8Y235RZ4mF{I=EMv{u^%3!GZ}p-BjDMS6 zbLXKOt37Go3Bp+i{aQ}=h~P&~&WGRQ!`T-}e&ofz$o<+Ab;GK(4A(k0UF%@~;_vH> z9C7r8+D)VYuX5VntGx^VtWvv!kGrS}We)YMx?SUW z>}1tbnKaZZd6t1imP2P5So#ZPkXo7PZIs2*hW&y4BsI~^8560hD|koV|F!PGMvud; zX8PQhg^zb|-R=7WGB?=|rpB zH-y}*AWyHGH(6SiFKoTJC%}Q+1ut?G-qjSosSm_u3;V(^s4uWDpyKQBcweSiCjXpd zvgS^Q-8iEDFzovX{lfBdH2HDjYqb*(4GS-02C(7ygf8UjL45XY-DBqTC-M4m+OIHB z(LTMTVc#dM=8&!rTAqUndt~fR?fFUjDKuz)>B=0^aHD9rYxvGX-O0xNl*^5W!I(un zI26}ZUm<MP%KPV%Lk=%4gO^jGLZ{u0JGd(rn(-Q4#6 z>zmU@e(HnYeDf}y^Qq{Zb?s(ybleHnQ%s&T8wpM!CJ;lmwP9z7L((HIFY)2n^Twh95RD%D^@F#%asowswSd4x#dvx0eu(nfjbUW9=Q2Xe{!?F7k;z! z>6@h+-F)bHo#{HR$~d-f|BHNnX&;wu?2(HO>|$N+M_?U{b*)=u^G=_xq+c($1%8Xc zEwfH$Noz8ovd(mh(((RPDWdpK4-jHseVu;KXn@)$Ax!*w`N{u5x%l1pw4A}zt=kMw zv)M%VS=CwI*nLTTtNiP(oOQnBo$s8gPi@)$&h69Ne+4*gZ4uP@Q@gK9cz1hVz^}bN zL;BsXeAq+sHCz>Zy#_k=k{qjc`^!Y1J*rao#Ct;4%LZIkjK*YYuh4FPOMpvY4i-1I z+ZVxMuLnOa4{&Ad_W!jY-`H*sTp7Flcfcn?u-U6A3+?vb(R$7$inj;ad1AZ$Hq~FA z-M;DLTH5K+ZcoUnbI&@*Z3!u{C&X|3$k z(gJKq%O^_Ef<2D;ujUr+{<~In2yAxONt^lxHoRx!YS9wvs1R3%Ly~wdQJYIAm8&9r#yE7!vkEI zv3y=|`vecot=8bL6$`vtF!mTt@mT&D!Ch)Vat&^x-q{@*tIu6kdMqD0*=3lG<^Q7Y z(2z{qq`4z@26Pj*pTOHn!h17ztXv3#JS$2&s(BwaFvcxm2b_KHX5Gie z_fQ$>c-M*m*kc*|4*2 zcAp0LG{<)LY4DESgnD%OD4caHd&eGO@3f)4(^mFA8oX1d7Eaw!KC>xE-`S5{)Z)n} zwPiN$-r#PHG~VM8A5nH~i#o}L%WwDwRnK;}#%rmQzz^Skw}5Y0QzUQnFWOWYJH)8bO=8wc=`_Vz0yJ7VO_maz5YN_nLpV5 zlD%I?Zkzp*ckUtlrq+Xyw}fY7iR3Ab`i6xKD$Mxb!iE%PJZoW9g&E&l*s#KkS1oKrVa8v`J+tT9 zxMSyBxtrjB72Hk0Iu!NG+ONq@;7xYs;k9$@Llwzu!TyPG=bdF=E4j;A{4eLkljmwb zR#6^o$iR}X;R^3{IUQWksrIJs(IIGajeG81m(!wn>JL6d)(`r8hP{pu%52uOdi{MB zo05G8Z|TKXJk5QfA3fsJsbRl2lrDL2jIY!+N=to^IhQ^Sm z^YSXH-;nR~(%D*>^)u$_&^WS)dYn{0F}Z}?klE3V>3R7U(c52Q~Gfmf?u#vq$?X`Hj;<;l=cHvdY_T_l{%*L;0Z_x)@U zzP$T>E|MJN4u!Yp#KXJm6pviyz7aP!31sLwq=mn8WGG{It%VHjG@Z%NPSY75cAC!k zu+wzbUph@^GPBck#`m43Gg;edIvamFO=tQ`r|E3m>NK6nyH3-YeC;&dsQNzRXQ$~* z)^wU~T=|VJBER)Yw|)`n)+*iFMWi#C*lGDTD8CJh$ZtaFCKi!yQt8kKLfH+?;Tp_W zTFCCAJFR+i?leJ;v*!f-b`Mwj-ne5$HeRQXSUls%v2yf=T_|Ps8&m+s?Fq=VHc*eC(>e1{E)FXT6nWJgFxFg=MIZjy`ZEi!Jru%oAr|JA< z^E5jcdD>i5`=~l9Cu7cYWgGhkjc4I_$2)5t|K|tVV_hJ-ZH{7h!EN}*e3`91K1by) zxLQGe+85)-h>@K5@D8!X+y!@H4$ho=(jH?BUyi%rzWYpmomv_HZ%%wzM%$auxU`@h ze+c(NYCSJ_x{^KKHzRjB?@7B&_}I%ReIvO{MnruJ$@%$??6el&_Q)_w{KfLyBi$gG zG>=^T>`QxGi{qQ*0>4e}m=?;%k4yb?^4kOauj{u*`x!UL1^&YpDVO-$^?Ok9yL|e8 zFaMYfR->N2`{duO{c!!>{}=MlXmiCqTBir!f0utq#-?3z@qbh9P4Ytr{w}3UbWeiC zzeN6B@>_foF2uX-oeF5a2W_IxO=uH!cN3Z%?n29ag?FJ%)SIs9P=cnr(6U_8yU-@; z!Ch#nN0c?LP<4xuvhhN zT>0JoW@6wc@XP%Ut~&Cd_yK>_ySL$Lf9u^!!<`nbwzxc(_nkc#v4=Q*@tqVG7vy`P zV3jA`z&*g7VIH|gAFi4^d#(}OBMMX#w%psgK?gTZHY9?z*LXk71J(S!t?AV`6X^$K zv}v{7-qthEI=l3Km}|6PuBT}~jI9~jePf;8PgVAQv>z6{&)<8NtpV=Oo7b1-lOIAI zL?SzQtmmddWzJhj)Vl{+#h81l_v2LbJ5xX6M)V{80=f1O&;B^{2}^&uMam_9R=*qd zv-H>L-5%mUq~AUIS^7IHQZDg#={K*RrT;^{+e7@9^g|z7FBkgIDeNKsN&O~*_)NGd zoOtdfyG_5E-btT#FWFav_`G|`o(baf?j;+MP&WMWy=4AgF$vG?Ua^UK^SxryVP@-7 zbM^I8JEmuJpR2C_5=f+>GrBI8OC$f2Pur9?OU0oF#~0u2kbgFC^- zan%{oP0_F5W9|fd7+3n!cW|XYtr4$qC)f?RgGurQ+>@k-;R@LR`kL+p8^^6G(aPOd zT`@PcMef{e>Ta{Q=ThI=6et=+`ql%QmuyxM`t(!r3eOVV6yOqA)5TG9n@JMxBecg}V|}YC-6!uXkvMar z-oYJUtH#D&n_dFe{(jjJ^2PTh}#p1NJU2NxO)6|^XomFRFS6JS~=3(oW%SpGb z`7I|-TkoVU2E6Tbx$DB#nwOJqTi;zyoVG?yU6_4U-DX+&!q)w;ld(ThbJ^T}wphO7 zem>hHWcwM5_A<_Ej}T=woB6AkxvaLfy_{`i>+H*k)Amp-Cr;Z3vYa?=kH~W39MC#6 z>rn84tz#@VAK0FQ<)quz`NO?$dH7jR2Zp^+o3izX=KJo(TikaSf8W;D=vj|7dpG+# zHQ#V+w)9)*2-iEgXQtKu&U6jCd^#JySR=FXOY=MTZO=~fw=t?Hf7_#36kk*>8&jaq z#+1d-XX8du{}}*Mk;Qzb5NC&EMpi$uMLJIKurvS|@!dKHnAV@TOPb z!jrh*db!s#dIDWOl#QC&W_KN#uFrma&LwNQvI4rA(kc%8grmoVbo0(0EI!tMF-Ym40TC0gBD zFZA^Ld$&l#y;8{MI6S^53>em(za{#5{k=4aa~o^p*S=7Dbht}N@|-e+@|=DDy_I%x%i zo$N)&+tmFBRrl~(yEODOXt+vuK9qrHpI4vSl=97#OcUO5sCx=alnU5mQ_o_vu^{P*vXRM&cZTv zzN2q?}p=@yWwP~JgJDzTAOmNR(z{+c5Ccx zRZhcSL_7G|Cs-5@e(EV4&psk~JL>9fx4Vm$ciR8b=jHH%@%&hp!;I<3)v|J!vAYvF zJe(s-P0wpLuClN4c{zOj{Bp?QSmtuK;$Gc_U^4tHjoU@?3EdnWz9=3!imqQ2kDO*6 zP$XYS&z@nE!|!V$hoOc2$VIr2!|W%1x8!gUJzdXodEVHfJkV06Jemg_PUUSnuJF#d zvZ}?n!o8ra+HH;EX_umULhjS9MRg7SR#kk#SE+wAmNT2`ZlKO9`&%e23noytDe6VAE{`XL;V{*T_K#YUY)0R=jqklF;0ENdUbApU3>j}tZ$FiZgBL3bK>XwP-9Mfto0$z zg`iuN?L%YFQXe{&c)BK@W}Gm)|No(1`}rm=b8PKh%f^ZKFJhdyqQh}ws-#>E$BD_3 zX~JT28!v&OuiCow`=8h8 z7U-v;ZQxiNk5+d$9<6?s#-p-4x}gM*0&^^lZxhe!Y(G?eWKD;CWX-eGM~)?)p7c7K zo%{ds?u9zrHG$5yV-Y%==IR~I?X@0ON|y?Cw)0D-33WEDhn31F90#<&x|A*z>TItp znNO&*X`WF!AE$2wI>}<^>NghXT_5ORuFkppcDe^Jt#lpE;vY+WWNnVzf4)yN=IX~< zpRl`IobJBFxk#%%aV+uZ`saDHrEYSp@hD@;vmv*SB_16YkFwtjdn)_d7z5akk?v!= zWdBwFknX|jd*q@66@BZg)%VIql#X>W>~h>K+wJWTgpDL=T(y#Zr_8~~K7pNr_)-7; zvXQkZoPEEne{<^Z6HfLNuy2v?msO(gmyP`k|9+X)gtDiT^Rh!y3^*^Uqw@*xcj>Sf zeyx2Z51ycNeRA=q$EngRI19E;zdhP?^YBln@mj}8#Sr zLG5E@9NgSBTi?C=!tv%0m+2s5^M}j)ofOGk+ML4~Mfcq@xiy_Xbay^Tsl$D$>fKZ1 zsthB;sr&G&((rvM9B>cHaEH512kvnDML+Hwt`5F^6juupy<>8JOa(he&oB;(K6})B z?$KUecV2I8>P^0wJwIDYY+ z5!V&ud!b;pH*}XF0Itj##(M*3joSk?;@{&DTCwhPS zt*DI$bxz*J+j@Yyhx6N9QzF3mZCzP);QVHj{58LRz#i*g(Y%v!f_3CRx#6B%+V-)4r|ND$n?vYF}=VC-vU0oWQgzr)$69 zn{uCQktc2I*Jumt78t(A)vBDpuzsfgxB{Kz2IWaRq6^Tzv>UnrVeD_+>*u1zTjK#Q ztZBgu@LoH5fw`y+F8~wLyQxJT!Qbuj1g2db0Tbr=vu*0=OTLb*KbEZ{`d>SGt&g^9 zQ(!`RU)-XO=+o`;1g2db0Tbr=x8j9Xd}MWGGNx=D)szqSwYKWtDNJj=2PUNVPg?Nq zScyDSnAUj$6XyAul66GgBFD?t(Q3i_HZ7E?z_e>qU_yFX7cP?HYf9t^OuIaR3G>`s zvX1DZ)X~O39$nOe-bukvx8b7{rgfVF6VfY{!>yxpPUy52`DfoUSoM*w(^l%wg>pQE zoffRr)53NQVMDq&Kh*E#I<)c5`s-iGhS;i~{=Q@xd(&AH4bL+j``>%k?*HKFktQcS zD0sSpcl5mDB7bk>KR)?!A990)Ph)ssHS;95!|RxWAgyu^5y}A8E(BM-zv!We8q{jY#snynRx*7xP3|sTIK?jH*X$r zzan3)ID3qycph*_aF-g8T!TyRj+>lax$_J+8E7{TIJ4%jGAZ$04yJzZ0+=zb2;tS;3Lp=R+vwk)Gh`(H}J;cxIcZ+_O{yK}4OZ#|L;PL(eOo_E|A!VSm-sK~Hz>hSlS}@8Dc2t259qf(i2trd$|e28$cORMF!6u4k>Ql4sg0(cCOX_p8SFPK5<&L?;=U4fQji^3WhqXOi4RF` z3hK{ZW1XT`<9nWMQ9L<0+rj;4uRZ6?)u|=2y=`#-o(pV?;rE#bq*L%cKx{(Tfj+7E zgUu86p1E&7I!1Ok+9~o&-w40oM>^&izh00IJ0Eip)`Ii!*u7}ox_2$an@>Y)Tz&qI zwKBNeo{|=H^>=`a_3l<>taN~jJvFUx4RnBubKb3R4R(NwbKk9S4He)b4K_x2B(F`e zIXb+uIquLLG=*ut!|3ftj(nCgP~p5Zyc-1m#Wp^OPOSVmf1Tb@k@EDqXnr2@B5-7p4ATZORf z%O;MnB75(DRNWWVvB?PP*!sK4i!Hux7v`CM;|^Q$TeO$T>`5UHAzSS3sJPEso5b++ zaqd>kgOB@kIzK9gkNYj~^wlE#ao+@<{#XPb_dnq2b4BoR9|N9#l?R{Kuk!5pzoT}g zF0mKE192PM+>&po^DTMq$*ig$aX$k0R$#NzSoTo&s`-O&P+N0`)ScO?yZ*^b&j&F@zedo7+{oU_+8d@yBU%&cKl;-*x7~JpIbiDS&9cm75G#ODzdKuWS{Vz4`e<{;9q!T{GoiNru z6}`jf^fh;8*T272b-l2k9NoUNrVW47caRH%q8T2NYU;`Yo#|L|yViSeckjoE{-SdB zEwcX&w4u-Vc*xTy{rw^8l>DGiefn@%$C=$rebMgWx#i0#JX8Svc%qD(=aI9C{xQ|2j zjCgv|`)~9eJWm%gNp{{$7HO)WI@Pzsg#%fX%KB6mjVlb==ri;k=+IV~&$fkE9g#n{ z$RBv}$F;I;(0kZd|CjnA@WeyodLQrTQNDkvcxX7jYxlt~Yfan9f5|7SKkI|G$It2; zc?$1<54mRPT)C2uxNziAQ}_dEIC8BieEuVcpc_1vkHfPz4F^wCxaxtnL9RhxDA#Hg zbc34@jmjO6dztplR^)Dy+b?%gZl7F}f4!0X+blZJVUc+zU綹=X1JB$ngkLXs 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 == STB_TRUE ) + { + retVal += sizeof( TraObj ) * nTraCntMax ; // trBody + retVal += sizeof( ROI_DET ) * nTraCntMax ; // wSrcTr->bdDet + retVal += sizeof( STB_TR_RES_BODYS ) ; // wDstTrBody + retVal += sizeof( STB_TR_RES ) * nTraCntMax ; // wDstTrBody->body + } + if( execFlg->faceTr == STB_TRUE ) + { + retVal += sizeof( TraObj ) * nTraCntMax ; // trFace + retVal += sizeof( ROI_DET ) * nTraCntMax ; // wSrcTr->fcDet + retVal += sizeof( STB_TR_RES_FACES ) ; // wDstTrFace + retVal += sizeof( STB_TR_RES ) * nTraCntMax ; // wDstTrFace->face + } + if( execFlg->gen == STB_TRUE + || execFlg->age == STB_TRUE + || execFlg->fr == STB_TRUE + || execFlg->exp == STB_TRUE + || execFlg->dir == STB_TRUE + || execFlg->gaz == STB_TRUE + || execFlg->bli == STB_TRUE + ) + { + retVal += sizeof( FaceObj ) * nTraCntMax ; // infoFace + } + + + if( execFlg->gen == STB_TRUE + || execFlg->age == STB_TRUE + //|| execFlg->fr == STB_TRUE + || execFlg->exp == STB_TRUE + || execFlg->dir == STB_TRUE + || execFlg->gaz == STB_TRUE + || execFlg->bli == STB_TRUE + ) + { + retVal += sizeof( STB_PE_DET ) ; // wSrcPe + retVal += sizeof( FACE_DET ) * nTraCntMax ; // wSrcPe->fcDet + retVal += sizeof( STB_PE_RES ) ; // wDstPe + retVal += sizeof( STB_PE_FACE ) * nTraCntMax ; // wDstPe->peFace + + } + + if( execFlg->fr == STB_TRUE ) + { + retVal += sizeof( STB_FR_DET ) ; // wSrcFr + retVal += sizeof( FR_DET ) * nTraCntMax ; // wSrcFr->fcDet + retVal += sizeof( STB_FR_RES ) ; // wDstFr + retVal += sizeof( FR_RES ) * nTraCntMax ; // wDstFr->frFace + } + + + return retVal; +} +/*------------------------------------------------------------------------------------------------------------------*/ +/* ShareStbSize */ +/*------------------------------------------------------------------------------------------------------------------*/ +void ShareStbSize ( STBHANDLE handle , STB_INT8 *stbPtr ) +{ + STB_UINT32 nTraCntMax; + + nTraCntMax = handle->nTraCntMax; + + + handle->wSrcTr = (STB_TR_DET*)stbPtr; stbPtr += ( sizeof( STB_TR_DET ) ); + if( handle->execFlg->bodyTr == STB_TRUE ) + { + handle->trBody = ( TraObj* ) stbPtr; stbPtr += ( sizeof( TraObj ) * nTraCntMax ); + handle->wSrcTr->bdDet = ( ROI_DET* ) stbPtr; stbPtr += ( sizeof( ROI_DET ) * nTraCntMax ); + handle->wDstTrBody = ( STB_TR_RES_BODYS* ) stbPtr; stbPtr += ( sizeof( STB_TR_RES_BODYS )); + handle->wDstTrBody->body = ( STB_TR_RES* ) stbPtr; stbPtr += ( sizeof( STB_TR_RES ) * nTraCntMax ); + } + if( handle->execFlg->faceTr == STB_TRUE ) + { + handle->trFace = ( TraObj* ) stbPtr; stbPtr += ( sizeof( TraObj ) * nTraCntMax ); + handle->wSrcTr->fcDet = ( ROI_DET* ) stbPtr; stbPtr += ( sizeof( ROI_DET ) * nTraCntMax ); + handle->wDstTrFace = ( STB_TR_RES_FACES* ) stbPtr; stbPtr += ( sizeof( STB_TR_RES_FACES )); + handle->wDstTrFace->face = ( STB_TR_RES* ) stbPtr; stbPtr += ( sizeof( STB_TR_RES ) * nTraCntMax ); + } + + if( handle->execFlg->gen == STB_TRUE + || handle->execFlg->age == STB_TRUE + || handle->execFlg->fr == STB_TRUE + || handle->execFlg->exp == STB_TRUE + || handle->execFlg->dir == STB_TRUE + || handle->execFlg->gaz == STB_TRUE + || handle->execFlg->bli == STB_TRUE + ) + { + handle->infoFace = ( FaceObj* ) stbPtr; stbPtr += ( sizeof( FaceObj ) * nTraCntMax ); + } + + if( handle->execFlg->gen == STB_TRUE + || handle->execFlg->age == STB_TRUE + //||| handle->execFlg->fr == STB_TRUE + || handle->execFlg->exp == STB_TRUE + || handle->execFlg->dir == STB_TRUE + || handle->execFlg->gaz == STB_TRUE + || handle->execFlg->bli == STB_TRUE + ) + { + handle->wSrcPe = ( STB_PE_DET* ) stbPtr; stbPtr += ( sizeof( STB_PE_DET ) ); + handle->wSrcPe->fcDet = ( FACE_DET* ) stbPtr; stbPtr += ( sizeof( FACE_DET ) * nTraCntMax ); + handle->wDstPe = ( STB_PE_RES* ) stbPtr; stbPtr += ( sizeof( STB_PE_RES ) ); + handle->wDstPe->peFace = ( STB_PE_FACE*) stbPtr; stbPtr += ( sizeof( STB_PE_FACE) * nTraCntMax ); + } + + if( handle->execFlg->fr == STB_TRUE ) + { + handle->wSrcFr = ( STB_FR_DET* ) stbPtr; stbPtr += ( sizeof( STB_FR_DET ) ); + handle->wSrcFr->fcDet = ( FR_DET* ) stbPtr; stbPtr += ( sizeof( FR_DET ) * nTraCntMax ); + handle->wDstFr = ( STB_FR_RES* ) stbPtr; stbPtr += ( sizeof( STB_FR_RES ) ); + handle->wDstFr->frFace = ( FR_RES* ) stbPtr; stbPtr += ( sizeof( FR_RES ) * nTraCntMax ); + } + + +} +/*------------------------------------------------------------------------------------------------------------------*/ +/*Create handle*/ +/*------------------------------------------------------------------------------------------------------------------*/ +STBHANDLE CreateHandle ( STB_UINT32 stbExecFlg ) +{ + + STBHANDLE handle; + STB_UINT32 tmpVal; + STB_UINT32 tmpFLG; + + + + /*do STB handle's malloc here*/ + handle = NULL ; + handle = ( STBHANDLE )malloc( sizeof( *handle ) ); + if( handle == NULL ) + { + return NULL;/* FAIL : Create STB handle */ + } + + /* ExecFlg */ + handle->execFlg = ( STBExecFlg* )malloc( sizeof( STBExecFlg ) ); + if( handle->execFlg == NULL ) + { + free ( handle ) ;/*Free of Malloc things at the present time*/ + return NULL ;/* FAIL : Create STB handle ExecFlg */ + } + if( ( stbExecFlg & STB_FUNC_BD )== STB_FUNC_BD ){ handle->execFlg->bodyTr = STB_TRUE ;}else{ handle->execFlg->bodyTr = STB_FALSE ;} + if( ( stbExecFlg & STB_FUNC_DT )== STB_FUNC_DT ){ handle->execFlg->faceTr = STB_TRUE ;}else{ handle->execFlg->faceTr = STB_FALSE ;} + if( ( stbExecFlg & STB_FUNC_PT )== STB_FUNC_PT ){ handle->execFlg->dir = STB_TRUE ;}else{ handle->execFlg->dir = STB_FALSE ;} + if( ( stbExecFlg & STB_FUNC_AG )== STB_FUNC_AG ){ handle->execFlg->age = STB_TRUE ;}else{ handle->execFlg->age = STB_FALSE ;} + if( ( stbExecFlg & STB_FUNC_GN )== STB_FUNC_GN ){ handle->execFlg->gen = STB_TRUE ;}else{ handle->execFlg->gen = STB_FALSE ;} + if( ( stbExecFlg & STB_FUNC_GZ )== STB_FUNC_GZ ){ handle->execFlg->gaz = STB_TRUE ;}else{ handle->execFlg->gaz = STB_FALSE ;} + if( ( stbExecFlg & STB_FUNC_BL )== STB_FUNC_BL ){ handle->execFlg->bli = STB_TRUE ;}else{ handle->execFlg->bli = STB_FALSE ;} + if( ( stbExecFlg & STB_FUNC_EX )== STB_FUNC_EX ){ handle->execFlg->exp = STB_TRUE ;}else{ handle->execFlg->exp = STB_FALSE ;} + if( ( stbExecFlg & STB_FUNC_FR )== STB_FUNC_FR ){ handle->execFlg->fr = STB_TRUE ;}else{ handle->execFlg->fr = STB_FALSE ;} + handle->execFlg->pet = STB_FALSE ; + handle->execFlg->hand = STB_FALSE ; + + + if( handle->execFlg->faceTr == STB_FALSE ) + { + if( handle->execFlg->gen == STB_TRUE + || handle->execFlg->age == STB_TRUE + || handle->execFlg->fr == STB_TRUE + || handle->execFlg->exp == STB_TRUE + || handle->execFlg->dir == STB_TRUE + || handle->execFlg->gaz == STB_TRUE + || handle->execFlg->bli == STB_TRUE + ) + { + free ( handle->execFlg );/*Free of Malloc things at the present time*/ + free ( handle );/*Free of Malloc things at the present time*/ + return NULL ;/*Invalid input parameter stbExecFlg*/ + } + } + + + /*Setting the initial value here.*/ + handle->nTraCntBody = 0; + handle->nTraCntFace = 0; + handle->nDetCntMax = DETECT_CNT_MAX ;/*A maximum number of detected(input) people*/ + handle->nTraCntMax = TRACK_CNT_MAX ;/*A maximum number of tracking(output) people*/ + handle->nExecuted = STB_FALSE ; + handle->nInitialized= STB_FALSE ; + handle->nDetCntBody = 0; + handle->nDetCntFace = 0; + handle->trFace = NULL; + handle->trBody = NULL; + handle->infoFace = NULL; + handle->wSrcTr = NULL; + handle->wDstTrFace = NULL; + handle->wDstTrBody = NULL; + handle->wSrcPe = NULL; + handle->wDstPe = NULL; + handle->wSrcFr = NULL; + handle->wDstFr = NULL; + + + /* Do Malloc to things that need Malloc in STB handle */ + handle->stbPtr = NULL ; + handle->hTrHandle = NULL ; + handle->hPeHandle = NULL ; + handle->hFrHandle = NULL ; + tmpVal = CalcStbSize ( handle->execFlg ,handle->nTraCntMax ); /*calculate necessary amount in the STB handle*/ + handle->stbPtr = ( STB_INT8 * )malloc( tmpVal ) ; /*keep necessary amount in the STB handle*/ + if( handle->stbPtr == NULL ) + { + free ( handle->execFlg );/*Free of Malloc things at the present time*/ + free ( handle );/*Free of Malloc things at the present time*/ + return NULL ; + } + ShareStbSize ( handle, handle->stbPtr); /* Malloc-area is allocated to things that need Malloc in STB handle */ + + /*Create handles for child functions*/ + tmpFLG = STB_TRUE; + if( handle->execFlg->bodyTr == STB_TRUE + || handle->execFlg->faceTr == STB_TRUE + ) + { + handle->hTrHandle = STB_Tr_CreateHandle( handle->execFlg ,handle->nDetCntMax, handle->nTraCntMax ); + if( handle->hTrHandle == NULL ){ tmpFLG = STB_FALSE; } + } + if( handle->execFlg->gen == STB_TRUE + || handle->execFlg->age == STB_TRUE + //|| handle->execFlg->fr == STB_TRUE + || handle->execFlg->exp == STB_TRUE + || handle->execFlg->dir == STB_TRUE + || handle->execFlg->gaz == STB_TRUE + || handle->execFlg->bli == STB_TRUE + ) + { + handle->hPeHandle = STB_Pe_CreateHandle( handle->execFlg ,handle->nTraCntMax ); + if( handle->hPeHandle == NULL ){ tmpFLG = STB_FALSE; } + } + if( handle->execFlg->fr == STB_TRUE ) + { + handle->hFrHandle = STB_Fr_CreateHandle( handle->nTraCntMax ); + if( handle->hFrHandle == NULL ){ tmpFLG = STB_FALSE; } + } + + if( tmpFLG == STB_FALSE ) + { + /*When Malloc failed, Free of Malloc data at the present time*/ + if( handle->hTrHandle != NULL ) { STB_Tr_DeleteHandle ( handle->hTrHandle ) ;} + if( handle->hPeHandle != NULL ) { STB_Pe_DeleteHandle ( handle->hPeHandle ) ;} + if( handle->hFrHandle != NULL ) { STB_Fr_DeleteHandle ( handle->hFrHandle ) ;} + if( handle->stbPtr != NULL ) { free ( handle->stbPtr ) ;}/*Free of Malloc things at the present time*/ + if( handle->execFlg != NULL ) { free ( handle->execFlg ) ;}/*Free of Malloc things at the present time*/ + if( handle != NULL ) { free ( handle ) ;}/*Free of Malloc things at the present time*/ + return NULL; + } + + return handle; +} +//------------------------------------------------------------------------------------------------------------------- +// DeleteHandle /*Delete handle*/ +//------------------------------------------------------------------------------------------------------------------- +STB_INT32 DeleteHandle(STBHANDLE handle) +{ + + STB_INT32 nRet; + + /*NULL check*/ + nRet = IsValidPointer(handle); + if(nRet != STB_NORMAL){ + return STB_ERR_NOHANDLE; + } + + /*Malloc things here, do free*/ + if( handle->hTrHandle != NULL ) { STB_Tr_DeleteHandle ( handle->hTrHandle ) ;} + if( handle->hPeHandle != NULL ) { STB_Pe_DeleteHandle ( handle->hPeHandle ) ;} + if( handle->hFrHandle != NULL ) { STB_Fr_DeleteHandle ( handle->hFrHandle ) ;} + if( handle->stbPtr != NULL ) { free ( handle->stbPtr ) ;} + if( handle->execFlg != NULL ) { free ( handle->execFlg ) ;} + if( handle != NULL ) { free ( handle ) ;} + + + + return STB_NORMAL; +} +/*------------------------------------------------------------------------------------------------------------------*/ +/* SetFrameResult : Get the result of stbINPUT */ +/*------------------------------------------------------------------------------------------------------------------*/ +STB_INT32 SetFrameResult ( STBHANDLE handle , const STB_FRAME_RESULT *stbINPUTResult ) +{ + + STB_INT32 nRet; + + /*NULL check*/ + nRet = IsValidPointer(handle); + if(nRet != STB_NORMAL) + { + return STB_ERR_NOHANDLE; + } + + nRet = IsValidPointer(stbINPUTResult); + if(nRet != STB_NORMAL) + { + return STB_ERR_INVALIDPARAM; + } + + + /*Input value check*/ + nRet = STB_IsValidValue ( stbINPUTResult ,handle->execFlg ); + if(nRet != STB_TRUE) + { + return STB_ERR_INVALIDPARAM; + } + + + /*Clear the unexecuted state flag*/ + handle->nExecuted = STB_FALSE; + + /*Set the received result to the handle*/ + if( handle->execFlg->bodyTr == STB_TRUE ) + { + handle->nDetCntBody = stbINPUTResult->bodys.nCount; + SetTrackingObjectBody ( &(stbINPUTResult->bodys) ,handle->trBody ); + } + if( handle->execFlg->faceTr == STB_TRUE ) + { + handle->nDetCntFace = stbINPUTResult->faces.nCount; + SetTrackingObjectFace ( &(stbINPUTResult->faces) ,handle->trFace ); + } + + /*Set detection result to Face/Property/Recognition data*/ + if( handle->execFlg->gen == STB_TRUE + || handle->execFlg->age == STB_TRUE + || handle->execFlg->fr == STB_TRUE + || handle->execFlg->exp == STB_TRUE + || handle->execFlg->gaz == STB_TRUE + || handle->execFlg->dir == STB_TRUE + || handle->execFlg->bli == STB_TRUE + ) + { + SetFaceObject ( &(stbINPUTResult->faces) ,handle->infoFace ,handle->execFlg , handle->nTraCntMax ); + } + + + handle->nInitialized = STB_TRUE; + + return STB_NORMAL; +} + +/*------------------------------------------------------------------------------------------------------------------*/ +/*Execute : Main process execution*/ +/*------------------------------------------------------------------------------------------------------------------*/ +STB_INT32 Execute ( STBHANDLE handle ) +{ + STB_INT32 nRet ; + STB_TR_DET *srcTr = handle->wSrcTr ;/*TR : input data*/ + STB_TR_RES_FACES *dstTrFace = handle->wDstTrFace;/*TR : output data*/ + STB_TR_RES_BODYS *dstTrBody = handle->wDstTrBody;/*TR : output data*/ + STB_PE_DET *srcPe = handle->wSrcPe ;/*PR : Input data*/ + STB_PE_RES *dstPe = handle->wDstPe ;/*PE : Output data*/ + STB_FR_DET *srcFr = handle->wSrcFr ;/*FR : Input data*/ + STB_FR_RES *dstFr = handle->wDstFr ;/*FR : Output data*/ + + + + /*NULL check*/ + nRet = IsValidPointer ( handle ); + if( nRet != STB_NORMAL ) + { + return STB_ERR_NOHANDLE; + } + + if( handle->nInitialized != STB_TRUE) + { + return STB_ERR_INITIALIZE; + } + handle->nInitialized = STB_FALSE; + handle->nExecuted = STB_FALSE; + + /* TR ------------------------------------------------------------------------------------------------*/ + if( handle->execFlg->faceTr == STB_TRUE ) + { + SetSrcTrFace ( handle->nDetCntFace , handle->trFace , srcTr ); /*Creation of tracking input data from handle information*/ + } + if( handle->execFlg->bodyTr == STB_TRUE ) + { + SetSrcTrBody ( handle->nDetCntBody , handle->trBody , srcTr ); /*Creation of tracking input data from handle information*/ + } + nRet = STB_Tr_SetDetect ( handle->hTrHandle , srcTr); /*Frame information settings*/ + if( nRet != STB_NORMAL) { return nRet; } + nRet = STB_Tr_Execute ( handle->hTrHandle ); /*execute tracking*/ + if( nRet != STB_NORMAL) { return nRet; } + nRet = STB_Tr_GetResult ( handle->hTrHandle , dstTrFace , dstTrBody ); /*get the tracking result*/ + if( nRet != STB_NORMAL) { return nRet; } + if( handle->execFlg->faceTr == STB_TRUE ) + { + SetTrackingInfoToFace ( dstTrFace,&(handle->nTraCntFace),handle->trFace);/*copy to handle the tracking result*/ + } + if( handle->execFlg->bodyTr == STB_TRUE ) + { + SetTrackingInfoToBody ( dstTrBody,&(handle->nTraCntBody),handle->trBody);/*copy to handle the tracking result*/ + } + + + /*Association of face information and tracking ID--------------------------------------------------------------------------------*/ + if( handle->execFlg->gen == STB_TRUE + || handle->execFlg->age == STB_TRUE + || handle->execFlg->fr == STB_TRUE + || handle->execFlg->exp == STB_TRUE + || handle->execFlg->gaz == STB_TRUE + || handle->execFlg->dir == STB_TRUE + || handle->execFlg->bli == STB_TRUE + ) + { + SetTrackingIDToFace ( handle->nTraCntFace ,handle->nDetCntFace, handle->trFace,handle->infoFace , handle->execFlg ); + } + + /* Fr ------------------------------------------------------------------------------------------------*/ + if( handle->execFlg->fr == STB_TRUE ) + { + SetFaceToFrInfo ( handle->nTraCntFace,handle->infoFace,srcFr ); /*Creation of recognition input data from handle information*/ + nRet = STB_Fr_SetDetect ( handle->hFrHandle,srcFr ); /*Pass to the recognized stabilization*/ + if(nRet != STB_NORMAL ){ return nRet; } + nRet = STB_Fr_Execute ( handle->hFrHandle ); /* Recognized stabilization execution*/ + if(nRet != STB_NORMAL ){ return nRet; } + nRet = STB_Fr_GetResult ( handle->hFrHandle,dstFr ); /*get the recognized stabilization results*/ + if(nRet != STB_NORMAL ){ return nRet; } + SetFrInfoToFace ( handle->nTraCntFace,dstFr,handle->infoFace ); /*Copy to handle the recognized stabilization results*/ + } + + /* Pe ------------------------------------------------------------------------------------------------*/ + if( handle->execFlg->gen == STB_TRUE + || handle->execFlg->age == STB_TRUE + //|| handle->execFlg->fr == STB_TRUE + || handle->execFlg->exp == STB_TRUE + || handle->execFlg->gaz == STB_TRUE + || handle->execFlg->dir == STB_TRUE + || handle->execFlg->bli == STB_TRUE + ) + { + SetFaceToPeInfo ( handle->nTraCntFace,handle->infoFace,srcPe ); /*Creation of property input data from handle information*/ + nRet = STB_Pe_SetDetect ( handle->hPeHandle,srcPe ); /*Pass to property stabilization*/ + if( nRet != STB_NORMAL ){ return nRet; } + nRet = STB_Pe_Execute ( handle->hPeHandle ); /*Property stabilization execution*/ + if( nRet != STB_NORMAL ){ return nRet; } + nRet = STB_Pe_GetResult ( handle->hPeHandle,dstPe ); /*get the property stabilization results*/ + if( nRet != STB_NORMAL ){ return nRet; } + SetPeInfoToFace ( handle->nTraCntFace,dstPe,handle->infoFace , handle->execFlg ); /*Copy to handle the property stabilization results*/ + } + + + + /*Set execution completion flag--------------------------------------------------*/ + handle->nExecuted = STB_TRUE; + + return STB_NORMAL; +} +/*------------------------------------------------------------------------------------------------------------------*/ +/* GetFaces : Getting stabilization results of face*/ +/*------------------------------------------------------------------------------------------------------------------*/ +STB_INT32 GetFaces(STBHANDLE handle, STB_UINT32 *face_count, STB_FACE *face ) +{ + STB_INT32 nRet , i; + + /*NULL check*/ + nRet = IsValidPointer(handle); + if(nRet != STB_NORMAL) + { + return STB_ERR_NOHANDLE; + } + nRet = IsValidPointer(face_count); + if(nRet != STB_NORMAL) + { + return nRet; + } + nRet = IsValidPointer(face); + if(nRet != STB_NORMAL) + { + return nRet; + } + if( handle->nExecuted != STB_TRUE) + { + return STB_ERR_INITIALIZE; + } + + /*init*/ + *face_count = 0; + for( i = 0 ; i < handle->nTraCntMax ; i++ ) + { + face[i].nDetectID = -1; + face[i].nTrackingID = -1; + face[i].center.x = 0; + face[i].center.y = 0; + face[i].nSize = 0; + face[i].conf = STB_CONF_NO_DATA ; + face[i].age.conf = STB_CONF_NO_DATA ; + face[i].age.status = STB_STATUS_NO_DATA; + face[i].age.value = -1; + face[i].blink.ratioL = -1; + face[i].blink.ratioR = -1; + face[i].blink.status = STB_STATUS_NO_DATA; + face[i].direction.conf = STB_CONF_NO_DATA ; + face[i].direction.pitch = -1; + face[i].direction.roll = -1; + face[i].direction.status = STB_STATUS_NO_DATA; + face[i].direction.yaw = -1; + face[i].expression.conf = STB_CONF_NO_DATA ; + face[i].expression.status = STB_STATUS_NO_DATA; + face[i].expression.value = -1; + face[i].gaze.conf = STB_CONF_NO_DATA ; + face[i].gaze.LR = -1; + face[i].gaze.status = STB_STATUS_NO_DATA; + face[i].gaze.UD = -1; + face[i].gender.conf = STB_CONF_NO_DATA ; + face[i].gender.status = STB_STATUS_NO_DATA; + face[i].gender.value = -1; + face[i].recognition.conf = STB_CONF_NO_DATA ; + face[i].recognition.status = STB_STATUS_NO_DATA; + face[i].recognition.value = -1; + } + + /*Set the result to the structure*/ + if( handle->execFlg->faceTr == STB_TRUE ) + { + *face_count = handle->nTraCntFace; + SetFaceToResult ( handle->nTraCntFace ,handle->trFace ,handle->infoFace ,face , handle->execFlg ); + } + + return STB_NORMAL; +} +/*------------------------------------------------------------------------------------------------------------------*/ +/* GetBodies : Getting stabilization results of body */ +/*------------------------------------------------------------------------------------------------------------------*/ +STB_INT32 GetBodies(STBHANDLE handle, STB_UINT32 *body_count, STB_BODY *body) +{ + STB_INT32 nRet , i; + + /*NULL check*/ + nRet = IsValidPointer(handle); + if(nRet != STB_NORMAL){ + return STB_ERR_NOHANDLE; + } + nRet = IsValidPointer(body_count); + if(nRet != STB_NORMAL){ + return nRet; + } + nRet = IsValidPointer(body); + if(nRet != STB_NORMAL){ + return nRet; + } + if( handle->nExecuted != STB_TRUE){ + return STB_ERR_INITIALIZE; + } + + + /*init*/ + *body_count = 0; + for( i = 0 ; i < handle->nTraCntMax ; i++ ) + { + body[i].nDetectID = -1; + body[i].nTrackingID = -1; + body[i].center.x = 0; + body[i].center.y = 0; + body[i].nSize = 0; + body[i].conf = STB_CONF_NO_DATA ; + } + + /*Set the result to the structure*/ + if( handle->execFlg->bodyTr == STB_TRUE ) + { + *body_count = handle->nTraCntBody; + SetBodyToResult(handle->nTraCntBody,handle->trBody, body); + } + return STB_NORMAL; +} +/*------------------------------------------------------------------------------------------------------------------*/ +/* Clear */ +/*------------------------------------------------------------------------------------------------------------------*/ +STB_INT32 Clear(STBHANDLE handle) +{ + STB_INT32 nRet; + + /*NULL check*/ + nRet = IsValidPointer(handle); + if(nRet != STB_NORMAL){ + return STB_ERR_NOHANDLE; + } + + STB_Tr_Clear( handle->hTrHandle ); + STB_Pe_Clear( handle->hPeHandle ); + if( handle->execFlg->fr == STB_TRUE ) + { + STB_Fr_Clear( handle->hFrHandle ); + } + + handle->nInitialized = STB_FALSE; + handle->nExecuted = STB_FALSE; + + + return STB_NORMAL; + +} +/*------------------------------------------------------------------------------------------------------------------*/ +/*Setting function (wrapper for child libraries)*/ +/*------------------------------------------------------------------------------------------------------------------*/ +STB_INT32 SetTrackingRetryCount(STBHANDLE handle, STB_INT32 nMaxRetryCount){ + STB_INT32 nRet; + /*NULL check*/ + nRet = IsValidPointer(handle); + if(nRet != STB_NORMAL){ + return STB_ERR_NOHANDLE; + } + + return STB_Tr_SetRetryCount(handle->hTrHandle,nMaxRetryCount); +} + +STB_INT32 GetTrackingRetryCount(STBHANDLE handle, STB_INT32 *pnMaxRetryCount){ + STB_INT32 nRet; + /*NULL check*/ + nRet = IsValidPointer(handle); + if(nRet != STB_NORMAL){ + return STB_ERR_NOHANDLE; + } + + return STB_Tr_GetRetryCount(handle->hTrHandle,pnMaxRetryCount); +} + +STB_INT32 SetTrackingSteadinessParam(STBHANDLE handle, STB_INT32 nPosSteadinessParam, STB_INT32 nSizeSteadinessParam){ + STB_INT32 nRet; + /*NULL check*/ + nRet = IsValidPointer(handle); + if(nRet != STB_NORMAL){ + return STB_ERR_NOHANDLE; + } + + return STB_Tr_SetStedinessParam(handle->hTrHandle, nPosSteadinessParam, nSizeSteadinessParam); +} + +STB_INT32 GetTrackingSteadinessParam(STBHANDLE handle, STB_INT32 *pnPosSteadinessParam, STB_INT32 *pnSizeSteadinessParam){ + STB_INT32 nRet; + /*NULL check*/ + nRet = IsValidPointer(handle); + if(nRet != STB_NORMAL){ + return STB_ERR_NOHANDLE; + } + + return STB_Tr_GetStedinessParam(handle->hTrHandle, pnPosSteadinessParam, pnSizeSteadinessParam); +} + +STB_INT32 SetPropertyThreshold(STBHANDLE handle, STB_INT32 nThreshold){ + STB_INT32 nRet; + /*NULL check*/ + nRet = IsValidPointer(handle); + if(nRet != STB_NORMAL){ + return STB_ERR_NOHANDLE; + } + + if( handle->execFlg->gen == STB_TRUE + || handle->execFlg->age == STB_TRUE + || handle->execFlg->exp == STB_TRUE + || handle->execFlg->dir == STB_TRUE + || handle->execFlg->gaz == STB_TRUE + || handle->execFlg->bli == STB_TRUE + ) + { + }else + { + return STB_NORMAL; + } + + return STB_Pe_SetFaceDirThreshold(handle->hPeHandle, nThreshold); +} + +STB_INT32 GetPropertyThreshold(STBHANDLE handle, STB_INT32 *pnThreshold){ + STB_INT32 nRet; + /*NULL check*/ + nRet = IsValidPointer(handle); + if(nRet != STB_NORMAL){ + return STB_ERR_NOHANDLE; + } + if( handle->execFlg->gen == STB_TRUE + || handle->execFlg->age == STB_TRUE + || handle->execFlg->exp == STB_TRUE + || handle->execFlg->dir == STB_TRUE + || handle->execFlg->gaz == STB_TRUE + || handle->execFlg->bli == STB_TRUE + ) + { + }else + { + return STB_NORMAL; + } + return STB_Pe_GetFaceDirThreshold(handle->hPeHandle, pnThreshold); +} + +STB_INT32 SetPropertyAngle(STBHANDLE handle,STB_INT32 nMinUDAngle, STB_INT32 nMaxUDAngle, + STB_INT32 nMinLRAngle, STB_INT32 nMaxLRAngle){ + STB_INT32 nRet; + /*NULL check*/ + nRet = IsValidPointer(handle); + if(nRet != STB_NORMAL){ + return STB_ERR_NOHANDLE; + } + if( handle->execFlg->gen == STB_TRUE + || handle->execFlg->age == STB_TRUE + || handle->execFlg->exp == STB_TRUE + || handle->execFlg->dir == STB_TRUE + || handle->execFlg->gaz == STB_TRUE + || handle->execFlg->bli == STB_TRUE + ) + { + }else + { + return STB_NORMAL; + } + return STB_Pe_SetFaceDirMinMax(handle->hPeHandle, nMinUDAngle, nMaxUDAngle, nMinLRAngle, nMaxLRAngle); +} + +STB_INT32 GetPropertyAngle(STBHANDLE handle, STB_INT32 *pnMinUDAngle , STB_INT32 *pnMaxUDAngle , + STB_INT32 *pnMinLRAngle , STB_INT32 *pnMaxLRAngle ){ + STB_INT32 nRet; + /*NULL check*/ + nRet = IsValidPointer(handle); + if(nRet != STB_NORMAL){ + return STB_ERR_NOHANDLE; + } + if( handle->execFlg->gen == STB_TRUE + || handle->execFlg->age == STB_TRUE + || handle->execFlg->exp == STB_TRUE + || handle->execFlg->dir == STB_TRUE + || handle->execFlg->gaz == STB_TRUE + || handle->execFlg->bli == STB_TRUE + ) + { + }else + { + return STB_NORMAL; + } + return STB_Pe_GetFaceDirMinMax(handle->hPeHandle, pnMinUDAngle, pnMaxUDAngle, pnMinLRAngle, pnMaxLRAngle); +} +STB_INT32 SetPropertyFrameCount(STBHANDLE handle, STB_INT32 nFrameCount){ + STB_INT32 nRet; + /*NULL check*/ + nRet = IsValidPointer(handle); + if(nRet != STB_NORMAL){ + return STB_ERR_NOHANDLE; + } + if( handle->execFlg->gen == STB_TRUE + || handle->execFlg->age == STB_TRUE + || handle->execFlg->exp == STB_TRUE + || handle->execFlg->dir == STB_TRUE + || handle->execFlg->gaz == STB_TRUE + || handle->execFlg->bli == STB_TRUE + ) + { + }else + { + return STB_NORMAL; + } + return STB_Pe_SetFrameCount(handle->hPeHandle, nFrameCount); +} +STB_INT32 GetPropertyFrameCount(STBHANDLE handle, STB_INT32 *pnFrameCount){ + STB_INT32 nRet; + /*NULL check*/ + nRet = IsValidPointer(handle); + if(nRet != STB_NORMAL){ + return STB_ERR_NOHANDLE; + } + if( handle->execFlg->gen == STB_TRUE + || handle->execFlg->age == STB_TRUE + || handle->execFlg->exp == STB_TRUE + || handle->execFlg->dir == STB_TRUE + || handle->execFlg->gaz == STB_TRUE + || handle->execFlg->bli == STB_TRUE + ) + { + }else + { + return STB_NORMAL; + } + return STB_Pe_GetFrameCount(handle->hPeHandle, pnFrameCount); +} +STB_INT32 SetRecognitionThreshold(STBHANDLE handle, STB_INT32 nThreshold){ + STB_INT32 nRet; + /*NULL check*/ + nRet = IsValidPointer(handle); + if(nRet != STB_NORMAL){ + return STB_ERR_NOHANDLE; + } + if( handle->execFlg->fr == STB_FALSE ) + { + return STB_NORMAL; + } + return STB_Fr_SetFaceDirThreshold(handle->hFrHandle, nThreshold); +} +STB_INT32 GetRecognitionThreshold(STBHANDLE handle, STB_INT32 *pnThreshold){ + STB_INT32 nRet; + /*NULL check*/ + nRet = IsValidPointer(handle); + if(nRet != STB_NORMAL){ + return STB_ERR_NOHANDLE; + } + if( handle->execFlg->fr == STB_FALSE ) + { + return STB_NORMAL; + } + return STB_Fr_GetFaceDirThreshold(handle->hFrHandle, pnThreshold); +} + +STB_INT32 SetRecognitionAngle(STBHANDLE handle, STB_INT32 nMinUDAngle, STB_INT32 nMaxUDAngle, + STB_INT32 nMinLRAngle, STB_INT32 nMaxLRAngle){ + STB_INT32 nRet; + /*NULL check*/ + nRet = IsValidPointer(handle); + if(nRet != STB_NORMAL){ + return STB_ERR_NOHANDLE; + } + if( handle->execFlg->fr == STB_FALSE ) + { + return STB_NORMAL; + } + return STB_Fr_SetFaceDirMinMax(handle->hFrHandle, nMinUDAngle, nMaxUDAngle, nMinLRAngle , nMaxLRAngle); +} + +STB_INT32 GetRecognitionAngle(STBHANDLE handle, STB_INT32 *pnMinUDAngle , STB_INT32 *pnMaxUDAngle , + STB_INT32 *pnMinLRAngle , STB_INT32 *pnMaxLRAngle){ + STB_INT32 nRet; + /*NULL check*/ + nRet = IsValidPointer(handle); + if(nRet != STB_NORMAL){ + return STB_ERR_NOHANDLE; + } + nRet = IsValidPointer(pnMinUDAngle); + if(nRet != STB_NORMAL){ + return STB_ERR_INVALIDPARAM; + } + nRet = IsValidPointer(pnMaxUDAngle); + if(nRet != STB_NORMAL){ + return STB_ERR_INVALIDPARAM; + } + nRet = IsValidPointer(pnMinLRAngle); + if(nRet != STB_NORMAL){ + return STB_ERR_INVALIDPARAM; + } + nRet = IsValidPointer(pnMaxLRAngle); + if(nRet != STB_NORMAL){ + return STB_ERR_INVALIDPARAM; + } + + if( handle->execFlg->fr == STB_FALSE ) + { + return STB_NORMAL; + } + return STB_Fr_GetFaceDirMinMax(handle->hFrHandle, pnMinUDAngle, pnMaxUDAngle, pnMinLRAngle , pnMaxLRAngle); +} + +STB_INT32 SetRecognitionFrameCount(STBHANDLE handle, STB_INT32 nFrameCount){ + STB_INT32 nRet; + /*NULL check*/ + nRet = IsValidPointer(handle); + if(nRet != STB_NORMAL){ + return STB_ERR_NOHANDLE; + } + if( handle->execFlg->fr == STB_FALSE ) + { + return STB_NORMAL; + } + return STB_Fr_SetFrameCount(handle->hFrHandle, nFrameCount); +} +STB_INT32 GetRecognitionFrameCount(STBHANDLE handle, STB_INT32 *pnFrameCount){ + STB_INT32 nRet; + /*NULL check*/ + nRet = IsValidPointer(handle); + if(nRet != STB_NORMAL){ + return STB_ERR_NOHANDLE; + } + if( handle->execFlg->fr == STB_FALSE ) + { + return STB_NORMAL; + } + return STB_Fr_GetFrameCount(handle->hFrHandle, pnFrameCount); +} + +STB_INT32 SetRecognitionRatio (STBHANDLE handle, STB_INT32 nMinRatio){ + STB_INT32 nRet; + /*NULL check*/ + nRet = IsValidPointer(handle); + if(nRet != STB_NORMAL){ + return STB_ERR_NOHANDLE; + } + if( handle->execFlg->fr == STB_FALSE ) + { + return STB_NORMAL; + } + return STB_Fr_SetMinRatio(handle->hFrHandle, nMinRatio); +} +STB_INT32 GetRecognitionRatio (STBHANDLE handle, STB_INT32 *pnMinRatio){ + STB_INT32 nRet; + /*NULL check*/ + nRet = IsValidPointer(handle); + if(nRet != STB_NORMAL){ + return STB_ERR_NOHANDLE; + } + if( handle->execFlg->fr == STB_FALSE ) + { + return STB_NORMAL; + } + return STB_Fr_GetMinRatio(handle->hFrHandle, pnMinRatio); +} diff --git a/src/b5t007001/stblib/src/STB/Interface.h b/src/b5t007001/stblib/src/STB/Interface.h new file mode 100644 index 00000000..8db58e0c --- /dev/null +++ b/src/b5t007001/stblib/src/STB/Interface.h @@ -0,0 +1,68 @@ +/*---------------------------------------------------------------------------*/ +/* Copyright(C) 2017 OMRON Corporation */ +/* */ +/* Licensed under the Apache License, Version 2.0 (the "License"); */ +/* you may not use this file except in compliance with the License. */ +/* You may obtain a copy of the License at */ +/* */ +/* http://www.apache.org/licenses/LICENSE-2.0 */ +/* */ +/* Unless required by applicable law or agreed to in writing, software */ +/* distributed under the License is distributed on an "AS IS" BASIS, */ +/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */ +/* See the License for the specific language governing permissions and */ +/* limitations under the License. */ +/*---------------------------------------------------------------------------*/ + +#if !defined( _INTERFACE_H_ ) +#define _INTERFACE_H_ +#include "STBTypedefInput.h" +#include "STBHandle.h" + +#define VERSION_MAJOR ( 1 ) +#define VERSION_MINOR ( 1 ) + +#define DETECT_CNT_MAX ( 35 ) /*A maximum number of detected(input) people*/ +#define TRACK_CNT_MAX ( 35 ) /*A maximum number of tracking(output) people*/ + +#ifdef __cplusplus +extern "C" { +#endif + +/*-------------------------------------------------------------------------------------------------------------------*/ +STB_INT32 GetVersion (STB_INT8* pnMajorVersion , STB_INT8* pnMinorVersion ); +STBHANDLE CreateHandle (STB_UINT32 stbExecFlg ); +STB_INT32 DeleteHandle (STBHANDLE handle); +STB_INT32 SetFrameResult (STBHANDLE handle,const STB_FRAME_RESULT *stbINPUTResult); +STB_INT32 Execute (STBHANDLE handle); +/*-------------------------------------------------------------------------------------------------------------------*/ +STB_INT32 GetFaces (STBHANDLE handle, STB_UINT32 *face_count, STB_FACE face[35]); +STB_INT32 GetBodies (STBHANDLE handle, STB_UINT32 *body_count, STB_BODY body[35]); +STB_INT32 Clear (STBHANDLE handle); +/*-------------------------------------------------------------------------------------------------------------------*/ +STB_INT32 SetTrackingRetryCount (STBHANDLE handle, STB_INT32 nMaxRetryCount ); +STB_INT32 GetTrackingRetryCount (STBHANDLE handle, STB_INT32 *pnMaxRetryCount ); +STB_INT32 SetTrackingSteadinessParam (STBHANDLE handle, STB_INT32 nPosSteadinessParam , STB_INT32 nSizeSteadinessParam ); +STB_INT32 GetTrackingSteadinessParam (STBHANDLE handle, STB_INT32 *pnPosSteadinessParam , STB_INT32 *pnSizeSteadinessParam ); +/*-------------------------------------------------------------------------------------------------------------------*/ +STB_INT32 SetPropertyThreshold (STBHANDLE handle, STB_INT32 nThreshold ); +STB_INT32 GetPropertyThreshold (STBHANDLE handle, STB_INT32 *pnThreshold ); +STB_INT32 SetPropertyAngle (STBHANDLE handle, STB_INT32 nMinUDAngle , STB_INT32 nMaxUDAngle ,STB_INT32 nMinLRAngle , STB_INT32 nMaxLRAngle ); +STB_INT32 GetPropertyAngle (STBHANDLE handle, STB_INT32 *pnMinUDAngle , STB_INT32 *pnMaxUDAngle ,STB_INT32 *pnMinLRAngle, STB_INT32 *pnMaxLRAngle ); +STB_INT32 SetPropertyFrameCount (STBHANDLE handle, STB_INT32 nFrameCount ); +STB_INT32 GetPropertyFrameCount (STBHANDLE handle, STB_INT32 *pnFrameCount ); +/*-------------------------------------------------------------------------------------------------------------------*/ +STB_INT32 SetRecognitionThreshold (STBHANDLE handle, STB_INT32 nThreshold ); +STB_INT32 GetRecognitionThreshold (STBHANDLE handle, STB_INT32 *pnThreshold ); +STB_INT32 SetRecognitionAngle (STBHANDLE handle, STB_INT32 nMinUDAngle , STB_INT32 nMaxUDAngle ,STB_INT32 nMinLRAngle , STB_INT32 nMaxLRAngle ); +STB_INT32 GetRecognitionAngle (STBHANDLE handle, STB_INT32 *pnMinUDAngle , STB_INT32 *pnMaxUDAngle ,STB_INT32 *pnMinLRAngle, STB_INT32 *pnMaxLRAngle ); +STB_INT32 SetRecognitionFrameCount (STBHANDLE handle, STB_INT32 nFrameCount ); +STB_INT32 GetRecognitionFrameCount (STBHANDLE handle, STB_INT32 *pnFrameCount ); +STB_INT32 SetRecognitionRatio (STBHANDLE handle, STB_INT32 nFrameShare ); +STB_INT32 GetRecognitionRatio (STBHANDLE handle, STB_INT32 *pnFrameShare ); +/*-------------------------------------------------------------------------------------------------------------------*/ +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/b5t007001/stblib/src/STB/STBAPI.c b/src/b5t007001/stblib/src/STB/STBAPI.c new file mode 100644 index 00000000..1c2d5894 --- /dev/null +++ b/src/b5t007001/stblib/src/STB/STBAPI.c @@ -0,0 +1,112 @@ +/*---------------------------------------------------------------------------*/ +/* Copyright(C) 2017 OMRON Corporation */ +/* */ +/* Licensed under the Apache License, Version 2.0 (the "License"); */ +/* you may not use this file except in compliance with the License. */ +/* You may obtain a copy of the License at */ +/* */ +/* http://www.apache.org/licenses/LICENSE-2.0 */ +/* */ +/* Unless required by applicable law or agreed to in writing, software */ +/* distributed under the License is distributed on an "AS IS" BASIS, */ +/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */ +/* See the License for the specific language governing permissions and */ +/* limitations under the License. */ +/*---------------------------------------------------------------------------*/ + +#include "Interface.h" +#include "STBAPI.h" + + +/*This layer only defines the API function */ + +/*get the version*/ +STB_INT32 STB_GetVersion(STB_INT8* pnMajorVersion, STB_INT8* pnMinorVersion){ + return GetVersion(pnMajorVersion, pnMinorVersion); +} +/*Create/Delete handle*/ +HSTB STB_CreateHandle(STB_UINT32 stbExecFlg){ + return (HSTB)CreateHandle(stbExecFlg); +} +VOID STB_DeleteHandle(HSTB handle){ + DeleteHandle((STBHANDLE)handle); +} +/*set frame information*/ +STB_INT32 STB_SetFrameResult(HSTB handle, const STB_FRAME_RESULT *stbINPUTResult){ + return SetFrameResult((STBHANDLE)handle, stbINPUTResult); +} +STB_INT32 STB_ClearFrameResults(HSTB handle){ + return Clear((STBHANDLE)handle); +} +/*Main process execution*/ +STB_INT32 STB_Execute(HSTB handle){ + return Execute((STBHANDLE)handle); +} +/*get the result*/ +STB_INT32 STB_GetFaces(HSTB handle, STB_UINT32 *face_count, STB_FACE face[35]){ + return GetFaces((STBHANDLE)handle, face_count, face); +} +STB_INT32 STB_GetBodies(HSTB handle, STB_UINT32 *body_count, STB_BODY body[35]){ + return GetBodies((STBHANDLE)handle, body_count, body); +} + +/*Setting / Getting Function for tracking*/ +STB_INT32 STB_SetTrRetryCount(HSTB hHandle, STB_INT32 nMaxRetryCount){ + return SetTrackingRetryCount((STBHANDLE)hHandle, nMaxRetryCount); +} +STB_INT32 STB_GetTrRetryCount(HSTB hHandle, STB_INT32 *pnMaxRetryCount){ + return GetTrackingRetryCount((STBHANDLE)hHandle, pnMaxRetryCount); +} +STB_INT32 STB_SetTrSteadinessParam(HSTB hHandle, STB_INT32 nPosSteadinessParam, STB_INT32 nSizeSteadinessParam){ + return SetTrackingSteadinessParam((STBHANDLE)hHandle, nPosSteadinessParam, nSizeSteadinessParam); +} +STB_INT32 STB_GetTrSteadinessParam(HSTB hHandle, STB_INT32 *pnPosSteadinessParam, STB_INT32 *pnSizeSteadinessParam){ + return GetTrackingSteadinessParam((STBHANDLE)hHandle, pnPosSteadinessParam, pnSizeSteadinessParam); +} + +/*Setting / Getting Function for property*/ +STB_INT32 STB_SetPeThresholdUse(HSTB hHandle, STB_INT32 nThreshold){ + return SetPropertyThreshold((STBHANDLE)hHandle, nThreshold); +} +STB_INT32 STB_GetPeThresholdUse(HSTB hHandle, STB_INT32 *pnThreshold){ + return GetPropertyThreshold((STBHANDLE)hHandle, pnThreshold); +} +STB_INT32 STB_SetPeAngleUse(HSTB hHandle, STB_INT32 nMinUDAngle, STB_INT32 nMaxUDAngle, STB_INT32 nMinLRAngle, STB_INT32 nMaxLRAngle ){ + return SetPropertyAngle((STBHANDLE)hHandle, nMinUDAngle, nMaxUDAngle, nMinLRAngle, nMaxLRAngle); +} +STB_INT32 STB_GetPeAngleUse(HSTB hHandle, STB_INT32 *pnMinUDAngle, STB_INT32 *pnMaxUDAngle, STB_INT32 *pnMinLRAngle, STB_INT32 *pnMaxLRAngle ){ + return GetPropertyAngle((STBHANDLE)hHandle, pnMinUDAngle, pnMaxUDAngle, pnMinLRAngle, pnMaxLRAngle); +} +STB_INT32 STB_SetPeCompleteFrameCount(HSTB hHandle, STB_INT32 nFrameCount){ + return SetPropertyFrameCount((STBHANDLE)hHandle, nFrameCount); +} +STB_INT32 STB_GetPeCompleteFrameCount(HSTB hHandle, STB_INT32 *pnFrameCount){ + return GetPropertyFrameCount((STBHANDLE)hHandle, pnFrameCount); +} + +/*Setting / Getting Function for recognition*/ +STB_INT32 STB_SetFrThresholdUse(HSTB hHandle, STB_INT32 nThreshold){ + return SetRecognitionThreshold((STBHANDLE)hHandle, nThreshold); +} +STB_INT32 STB_GetFrThresholdUse(HSTB hHandle, STB_INT32 *pnThreshold){ + return GetRecognitionThreshold((STBHANDLE)hHandle, pnThreshold); +} +STB_INT32 STB_SetFrAngleUse(HSTB hHandle, STB_INT32 nMinUDAngle, STB_INT32 nMaxUDAngle, STB_INT32 nMinLRAngle, STB_INT32 nMaxLRAngle ){ + return SetRecognitionAngle((STBHANDLE)hHandle, nMinUDAngle, nMaxUDAngle, nMinLRAngle, nMaxLRAngle); +} +STB_INT32 STB_GetFrAngleUse(HSTB hHandle, STB_INT32 *pnMinUDAngle, STB_INT32 *pnMaxUDAngle, STB_INT32 *pnMinLRAngle, STB_INT32 *pnMaxLRAngle ){ + return GetRecognitionAngle((STBHANDLE)hHandle, pnMinUDAngle, pnMaxUDAngle, pnMinLRAngle, pnMaxLRAngle); +} +STB_INT32 STB_SetFrCompleteFrameCount(HSTB hHandle, STB_INT32 nFrameCount){ + return SetRecognitionFrameCount((STBHANDLE)hHandle, nFrameCount); +} +STB_INT32 STB_GetFrCompleteFrameCount(HSTB hHandle, STB_INT32 *pnFrameCount){ + return GetRecognitionFrameCount((STBHANDLE)hHandle, pnFrameCount); +} +STB_INT32 STB_SetFrMinRatio(HSTB hHandle, STB_INT32 nFrameRatio){ + return SetRecognitionRatio((STBHANDLE)hHandle, nFrameRatio); +} +STB_INT32 STB_GetFrMinRatio(HSTB hHandle, STB_INT32 *pnFrameRatio){ + return GetRecognitionRatio((STBHANDLE)hHandle, pnFrameRatio); +} + diff --git a/src/b5t007001/stblib/src/STB/STBAPI.h b/src/b5t007001/stblib/src/STB/STBAPI.h new file mode 100644 index 00000000..7d8cc800 --- /dev/null +++ b/src/b5t007001/stblib/src/STB/STBAPI.h @@ -0,0 +1,74 @@ +/*---------------------------------------------------------------------------*/ +/* Copyright(C) 2017 OMRON Corporation */ +/* */ +/* Licensed under the Apache License, Version 2.0 (the "License"); */ +/* you may not use this file except in compliance with the License. */ +/* You may obtain a copy of the License at */ +/* */ +/* http://www.apache.org/licenses/LICENSE-2.0 */ +/* */ +/* Unless required by applicable law or agreed to in writing, software */ +/* distributed under the License is distributed on an "AS IS" BASIS, */ +/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */ +/* See the License for the specific language governing permissions and */ +/* limitations under the License. */ +/*---------------------------------------------------------------------------*/ + +#if !defined( _SDK_STB_H_ ) +#define _SDK_STB_H_ +#include "STBTypedefInput.h" +#include "STBTypedefOutput.h" + + + +#if !defined( STB_DEF_HANDLE ) + #define STB_DEF_HANDLE + typedef VOID* HSTB ; +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/*Create/Delete handle*/ +STB_INT32 STB_GetVersion(STB_INT8* pnMajorVersion, STB_INT8* pnMinorVersion); +HSTB STB_CreateHandle(STB_UINT32 unUseFuncFlag); +VOID STB_DeleteHandle(HSTB hSTB); + +/*set frame information*/ +STB_INT32 STB_SetFrameResult(HSTB hSTB, const STB_FRAME_RESULT *stFrameResult); +STB_INT32 STB_ClearFrameResults(HSTB hSTB); +/*Main process execution*/ +STB_INT32 STB_Execute(HSTB hSTB); +/*get the result*/ +STB_INT32 STB_GetFaces(HSTB hSTB, STB_UINT32 *punFaceCount, STB_FACE stFace[]); +STB_INT32 STB_GetBodies(HSTB hSTB, STB_UINT32 *punBodyCount, STB_BODY stBody[]); + +/*Setting / Getting Function for tracking*/ +STB_INT32 STB_SetTrRetryCount(HSTB hSTB, STB_INT32 nMaxRetryCount); +STB_INT32 STB_GetTrRetryCount(HSTB hSTB, STB_INT32 *pnMaxRetryCount); +STB_INT32 STB_SetTrSteadinessParam(HSTB hSTB, STB_INT32 nPosSteadinessParam, STB_INT32 nSizeSteadinessParam); +STB_INT32 STB_GetTrSteadinessParam(HSTB hSTB, STB_INT32 *pnPosSteadinessParam, STB_INT32 *pnSizeSteadinessParam); +/*Setting / Getting Function for property*/ +STB_INT32 STB_SetPeThresholdUse(HSTB hSTB, STB_INT32 nThreshold); +STB_INT32 STB_GetPeThresholdUse(HSTB hSTB, STB_INT32 *pnThreshold); +STB_INT32 STB_SetPeAngleUse(HSTB hSTB, STB_INT32 nMinUDAngle, STB_INT32 nMaxUDAngle, STB_INT32 nMinLRAngle, STB_INT32 nMaxLRAngle); +STB_INT32 STB_GetPeAngleUse(HSTB hSTB, STB_INT32 *pnMinUDAngle, STB_INT32 *pnMaxUDAngle, STB_INT32 *pnMinLRAngle, STB_INT32 *pnMaxLRAngle); +STB_INT32 STB_SetPeCompleteFrameCount(HSTB hSTB, STB_INT32 nFrameCount); +STB_INT32 STB_GetPeCompleteFrameCount(HSTB hSTB, STB_INT32 *pnFrameCount); +/*Setting / Getting Function for recognition*/ +STB_INT32 STB_SetFrThresholdUse(HSTB hSTB, STB_INT32 nThreshold); +STB_INT32 STB_GetFrThresholdUse(HSTB hSTB, STB_INT32 *pnThreshold); +STB_INT32 STB_SetFrAngleUse(HSTB hSTB, STB_INT32 nMinUDAngle, STB_INT32 nMaxUDAngle, STB_INT32 nMinLRAngle, STB_INT32 nMaxLRAngle); +STB_INT32 STB_GetFrAngleUse(HSTB hSTB, STB_INT32 *pnMinUDAngle, STB_INT32 *pnMaxUDAngle, STB_INT32 *pnMinLRAngle, STB_INT32 *pnMaxLRAngle); +STB_INT32 STB_SetFrCompleteFrameCount(HSTB hSTB, STB_INT32 nFrameCount); +STB_INT32 STB_GetFrCompleteFrameCount(HSTB hSTB, STB_INT32 *pnFrameCount); +STB_INT32 STB_SetFrMinRatio(HSTB hSTB, STB_INT32 nMinRatio); +STB_INT32 STB_GetFrMinRatio(HSTB hSTB, STB_INT32 *pnMinRatio); + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/b5t007001/stblib/src/STB/STBFaceInfo.c b/src/b5t007001/stblib/src/STB/STBFaceInfo.c new file mode 100644 index 00000000..d65f84c0 --- /dev/null +++ b/src/b5t007001/stblib/src/STB/STBFaceInfo.c @@ -0,0 +1,450 @@ +/*---------------------------------------------------------------------------*/ +/* Copyright(C) 2017 OMRON Corporation */ +/* */ +/* Licensed under the Apache License, Version 2.0 (the "License"); */ +/* you may not use this file except in compliance with the License. */ +/* You may obtain a copy of the License at */ +/* */ +/* http://www.apache.org/licenses/LICENSE-2.0 */ +/* */ +/* Unless required by applicable law or agreed to in writing, software */ +/* distributed under the License is distributed on an "AS IS" BASIS, */ +/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */ +/* See the License for the specific language governing permissions and */ +/* limitations under the License. */ +/*---------------------------------------------------------------------------*/ + +#include "STBCommonDef.h" +#include "STBFaceInfo.h" +#include "STB_Debug.h" +#include "STBValidValue.h" + + + + +/*------------------------------------------------------------------------------------------------------------------*/ +/*CopyFace : Face information all copy*/ +/*------------------------------------------------------------------------------------------------------------------*/ +static VOID CopyFace(FaceObj *faceSrc,FaceObj *faceDst, const STBExecFlg *execFlg ) +{ + + STB_INT32 j; + + faceDst->nDetID = faceSrc->nDetID ; + faceDst->nTraID = faceSrc->nTraID ; + if( execFlg->gen == STB_TRUE ) + { + faceDst->genConf = faceSrc->genConf ; + faceDst->genStatus = faceSrc->genStatus ; + faceDst->genVal = faceSrc->genVal ; + } + if( execFlg->age == STB_TRUE ) + { + faceDst->ageConf = faceSrc->ageConf ; + faceDst->ageStatus = faceSrc->ageStatus ; + faceDst->ageVal = faceSrc->ageVal ; + } + if( execFlg->fr == STB_TRUE ) + { + faceDst->frConf = faceSrc->frConf ; + faceDst->frStatus = faceSrc->frStatus ; + faceDst->frVal = faceSrc->frVal ; + } + if( execFlg->exp == STB_TRUE ) + { + faceDst->expConf = faceSrc->expConf ; + faceDst->expStatus = faceSrc->expStatus ; + faceDst->expVal = faceSrc->expVal ; + for( j = 0 ; j < STB_EX_MAX ;j++) + { + faceDst->expScore[j] = faceSrc->expScore[j]; + } + } + if( execFlg->gaz == STB_TRUE ) + { + faceDst->gazConf = faceSrc->gazConf ; + faceDst->gazStatus = faceSrc->gazStatus ; + faceDst->gazLR = faceSrc->gazLR ; + faceDst->gazUD = faceSrc->gazUD ; + } + if( execFlg->dir == STB_TRUE ) + { + faceDst->dirConf = faceSrc->dirConf ; + faceDst->dirYaw = faceSrc->dirYaw ; + faceDst->dirRoll = faceSrc->dirRoll ; + faceDst->dirPitch = faceSrc->dirPitch ; + faceDst->dirStatus = faceSrc->dirStatus ; + } + if( execFlg->bli == STB_TRUE ) + { + faceDst->bliL = faceSrc->bliL ; + faceDst->bliR = faceSrc->bliR ; + faceDst->bliStatus = faceSrc->bliStatus ; + } + + + +} +/*------------------------------------------------------------------------------------------------------------------*/ +/* ClearFace */ +/*------------------------------------------------------------------------------------------------------------------*/ +static VOID ClearFace ( FaceObj *face , int i , const STBExecFlg *execFlg ) +{ + STB_INT32 j; + + face[i].nDetID = -1 ; + face[i].nTraID = -1 ; + + if( execFlg->gen == STB_TRUE ) + { + face[i].genConf = STB_ERR_PE_CANNOT ; + face[i].genStatus = STB_STATUS_NO_DATA ; + face[i].genVal = STB_ERR_PE_CANNOT ; + } + if( execFlg->age == STB_TRUE ) + { + face[i].ageConf = STB_ERR_PE_CANNOT ; + face[i].ageStatus = STB_STATUS_NO_DATA ; + face[i].ageVal = STB_ERR_PE_CANNOT ; + } + if( execFlg->fr == STB_TRUE ) + { + face[i].frConf = STB_ERR_PE_CANNOT ; + face[i].frStatus = STB_STATUS_NO_DATA ; + face[i].frVal = STB_ERR_FR_CANNOT ; + } + if( execFlg->exp == STB_TRUE ) + { + face[i].expConf = STB_ERR_PE_CANNOT ; + for (j = STB_EX_NEUTRAL; j < STB_EX_MAX;j++) + { + face[i].expScore[j] = STB_ERR_PE_CANNOT ; + } + face[i].expStatus = STB_STATUS_NO_DATA ; + face[i].expVal = STB_ERR_PE_CANNOT ; + } + if( execFlg->gaz == STB_TRUE ) + { + face[i].gazConf = STB_ERR_PE_CANNOT ; + face[i].gazStatus = STB_STATUS_NO_DATA ; + face[i].gazLR = STB_ERR_PE_CANNOT ; + face[i].gazUD = STB_ERR_PE_CANNOT ; + } + if( execFlg->dir == STB_TRUE ) + { + face[i].dirConf = STB_ERR_PE_CANNOT ; + face[i].dirStatus = STB_STATUS_NO_DATA ; + face[i].dirYaw = STB_ERR_DIR_CANNOT ; + face[i].dirRoll = STB_ERR_DIR_CANNOT ; + face[i].dirPitch = STB_ERR_DIR_CANNOT ; + } + if( execFlg->bli == STB_TRUE ) + { + face[i].bliL = STB_ERR_PE_CANNOT ; + face[i].bliR = STB_ERR_PE_CANNOT ; + face[i].bliStatus = STB_STATUS_NO_DATA ; + } + +} +/*------------------------------------------------------------------------------------------------------------------*/ +/* SetFaceObject : Copy the tracking information */ +/*------------------------------------------------------------------------------------------------------------------*/ +VOID SetFaceObject( const STB_FRAME_RESULT_FACES* stbINPUTfaces ,FaceObj *faces , const STBExecFlg *execFlg , const STB_INT32 nTraCntMax) +{ + STB_INT32 nCount; + STB_INT32 i,nIdx1; + + + nCount = stbINPUTfaces->nCount; + + + for (i = 0; i < nCount; i++) + { + faces[i].nDetID = i; + faces[i].nTraID = STB_STATUS_NO_DATA; + } + + if( execFlg->dir == STB_TRUE ) /*Face direction*/ + { + for (i = 0; i < nCount; i++) + { + faces[i].dirConf = stbINPUTfaces->face[i].direction.nConfidence; + faces[i].dirYaw = stbINPUTfaces->face[i].direction.nLR; + faces[i].dirRoll = stbINPUTfaces->face[i].direction.nRoll; + faces[i].dirPitch = stbINPUTfaces->face[i].direction.nUD; + } + } + if( execFlg->age == STB_TRUE ) /*Age*/ + { + for (i = 0; i < nCount; i++) + { + faces[i].ageConf = stbINPUTfaces->face[i].age.nConfidence; + faces[i].ageStatus = STB_STATUS_NO_DATA; + faces[i].ageVal = stbINPUTfaces->face[i].age.nAge; + } + } + if( execFlg->exp == STB_TRUE ) /*Facial expression*/ + { + for (i = 0; i < nCount; i++) + { + faces[i].expConf = -1;// not degree + for (nIdx1 = STB_EX_NEUTRAL; nIdx1 < STB_EX_MAX;nIdx1++) + { + faces[i].expScore[ nIdx1] = stbINPUTfaces->face[i].expression.anScore[nIdx1]; + } + faces[i].expStatus = STB_STATUS_NO_DATA; + faces[i].expVal = STB_EX_UNKNOWN; + } + } + if( execFlg->gen == STB_TRUE ) /*Gender*/ + { + for (i = 0; i < nCount; i++) + { + faces[i].genConf = stbINPUTfaces->face[i].gender.nConfidence; + faces[i].genStatus = STB_STATUS_NO_DATA; + faces[i].genVal = stbINPUTfaces->face[i].gender.nGender; + } + } + if( execFlg->gaz == STB_TRUE ) /*Gaze*/ + { + for (i = 0; i < nCount; i++) + { + faces[i].gazConf = stbINPUTfaces->face[i].direction.nConfidence; + faces[i].gazStatus = STB_STATUS_NO_DATA; + faces[i].gazLR = stbINPUTfaces->face[i].gaze.nLR; + faces[i].gazUD = stbINPUTfaces->face[i].gaze.nUD; + } + } + if( execFlg->fr == STB_TRUE ) /*Face recognition*/ + { + for (i = 0; i < nCount; i++) + { + faces[i].frConf = stbINPUTfaces->face[i].recognition.nScore; + faces[i].frStatus = STB_STATUS_NO_DATA; + faces[i].frVal = stbINPUTfaces->face[i].recognition.nUID; + } + } + if( execFlg->bli == STB_TRUE ) //blink + { + for (i = 0; i < nCount; i++) + { + faces[i].bliL = stbINPUTfaces->face[i].blink.nLeftEye; + faces[i].bliR = stbINPUTfaces->face[i].blink.nRightEye; + } + } + + /*The results exceeding the detection number are initialized*/ + for ( i = nCount; i < nTraCntMax; i++) + { + ClearFace ( faces , i , execFlg ); + } + +} + + +/*------------------------------------------------------------------------------------------------------------------*/ +/* SetTrackingIDToFace : Tracking result ID is linked to face information */ +/*------------------------------------------------------------------------------------------------------------------*/ +VOID SetTrackingIDToFace(STB_INT32 TrackingNum,STB_INT32 DetectNum, TraObj *track,FaceObj *faces , const STBExecFlg *execFlg ) +{ + STB_INT32 i,j; + + + /*If there is a detection result erased in the tracking result, it is deleted from the face information.*/ + for( i = 0 ; i < DetectNum; i++) + { + /*termination if no more detected results*/ + if(faces[i].nDetID < 0) + { + break; + } + + /*Search for the same ID as the detection result from the tracking result*/ + for( j = 0; j < TrackingNum ; j++) + { + if(track[j].nDetID == faces[i].nDetID) + { + faces[i].nTraID = track[j].nTraID; + break; + } + } + + if( j >= TrackingNum){ + /*If the detection ID is not included in the ID under tracking*/ + ClearFace ( faces , i , execFlg); + for(j = j + 1 ; j < DetectNum; j++) + { + if(faces[j].nDetID < 0) + { + /*Repeat until detection result disappears*/ + break; + } + /*Stuff up ahead of erasure*/ + CopyFace ( (faces+j),(faces+j-1), execFlg ); + } + } + } + /*After that, the processing for the face only during tracking (retry status)*/ + for( j = 0 ; j < TrackingNum; j++) + { + if( track[j].nDetID < 0) + { + ClearFace ( faces , i , execFlg );/*It should have been cleared but just in case*/ + faces[i].nDetID = track[j].nDetID; + faces[i].nTraID = track[j].nTraID; + i++; + } + } + + return; +} +/*------------------------------------------------------------------------------------------------------------------*/ +/* SetFaceToPeInfo : Create input data for stabilization of property estimation from face information */ +/*------------------------------------------------------------------------------------------------------------------*/ +VOID SetFaceToPeInfo(STB_INT32 TrackingNum,FaceObj *faces,STB_PE_DET *peInfo) +{ + STB_INT32 nIdx,nIdx1; + + peInfo->num = TrackingNum; + for(nIdx=0 ; nIdx < TrackingNum;nIdx++) + { + /*tracking result*/ + peInfo->fcDet[nIdx].nDetID = faces[nIdx].nDetID ; + peInfo->fcDet[nIdx].nTraID = faces[nIdx].nTraID ; + /*Face direction estimation*/ + peInfo->fcDet[nIdx].dirDetConf = faces[nIdx].dirConf ; + peInfo->fcDet[nIdx].dirDetYaw = faces[nIdx].dirYaw ; + peInfo->fcDet[nIdx].dirDetPitch = faces[nIdx].dirPitch ; + peInfo->fcDet[nIdx].dirDetRoll = faces[nIdx].dirRoll ; + /*Age estimation*/ + peInfo->fcDet[nIdx].ageDetVal = faces[nIdx].ageVal ; + peInfo->fcDet[nIdx].ageDetConf = faces[nIdx].ageConf ; + /*Gaze estimation*/ + peInfo->fcDet[nIdx].gazDetLR = faces[nIdx].gazLR ; + peInfo->fcDet[nIdx].gazDetUD = faces[nIdx].gazUD ; + /*Gender estimation*/ + peInfo->fcDet[nIdx].genDetVal = faces[nIdx].genVal ; + peInfo->fcDet[nIdx].genDetConf = faces[nIdx].genConf ; + /*estimation of facial expression*/ + peInfo->fcDet[nIdx].expDetConf = faces[nIdx].expConf ; + for( nIdx1 = 0; nIdx1 < STB_EX_MAX; nIdx1++) + { + peInfo->fcDet[nIdx].expDetVal[nIdx1] = faces[nIdx].expScore[nIdx1]; + } + //blink + peInfo->fcDet[nIdx].bliDetL = faces[nIdx].bliL ; + peInfo->fcDet[nIdx].bliDetR = faces[nIdx].bliR ; + + + } + return; +} +/*------------------------------------------------------------------------------------------------------------------*/ +/* SetFaceToFrInfo : Create input data for stabilization of face recognition from face information */ +/*------------------------------------------------------------------------------------------------------------------*/ +VOID SetFaceToFrInfo(STB_INT32 TrackingNum,FaceObj *faces,STB_FR_DET *frInfo) +{ + STB_INT32 nIdx; + + + frInfo->num = TrackingNum; + for(nIdx=0 ; nIdx < TrackingNum;nIdx++) + { + /*tracking result*/ + frInfo->fcDet[nIdx].nDetID = faces[nIdx].nDetID ; + frInfo->fcDet[nIdx].nTraID = faces[nIdx].nTraID ; + + /*Face direction estimation*/ + frInfo->fcDet[nIdx].dirDetConf = faces[nIdx].dirConf ; + frInfo->fcDet[nIdx].dirDetYaw = faces[nIdx].dirYaw ; + frInfo->fcDet[nIdx].dirDetPitch = faces[nIdx].dirPitch ; + frInfo->fcDet[nIdx].dirDetRoll = faces[nIdx].dirRoll ; + + /*recognition result*/ + frInfo->fcDet[nIdx].frDetConf = faces[nIdx].frConf ; + frInfo->fcDet[nIdx].frDetID = faces[nIdx].frVal ; + + } + return; +} +/*------------------------------------------------------------------------------------------------------------------*/ +/* SetPeInfoToFace : Copy stabilization result of property estimation to face information */ +/*------------------------------------------------------------------------------------------------------------------*/ +VOID SetPeInfoToFace(STB_INT32 TrackingNum,STB_PE_RES *peInfo,FaceObj *faces, const STBExecFlg *execFlg ) +{ + STB_INT32 i,j; + + for( i = 0 ; i < TrackingNum; i++) + { + for( j = 0 ; j < TrackingNum; j++) + { + if(peInfo->peFace[j].nTraID == faces[i].nTraID ) + { + if( execFlg->gen == STB_TRUE ) + { + faces[i].genStatus = peInfo->peFace[j].gen.status ; + faces[i].genVal = peInfo->peFace[j].gen.value ; + faces[i].genConf = peInfo->peFace[j].gen.conf ; + } + if( execFlg->age == STB_TRUE ) + { + faces[i].ageStatus = peInfo->peFace[j].age.status ; + faces[i].ageVal = peInfo->peFace[j].age.value ; + faces[i].ageConf = peInfo->peFace[j].age.conf ; + } + if( execFlg->exp == STB_TRUE ) + { + faces[i].expStatus = peInfo->peFace[j].exp.status ; + faces[i].expVal = peInfo->peFace[j].exp.value ; + faces[i].expConf = peInfo->peFace[j].exp.conf ; + } + if( execFlg->gaz == STB_TRUE ) + { + faces[i].gazStatus = peInfo->peFace[j].gaz.status ; + faces[i].gazConf = peInfo->peFace[j].gaz.conf ; + faces[i].gazLR = peInfo->peFace[j].gaz.LR ; + faces[i].gazUD = peInfo->peFace[j].gaz.UD ; + } + if( execFlg->dir == STB_TRUE ) + { + faces[i].dirPitch = peInfo->peFace[j].dir.pitch ; + faces[i].dirRoll = peInfo->peFace[j].dir.roll ; + faces[i].dirYaw = peInfo->peFace[j].dir.yaw ; + faces[i].dirStatus = peInfo->peFace[j].dir.status ; + faces[i].dirConf = peInfo->peFace[j].dir.conf ; + } + if( execFlg->bli == STB_TRUE ) + { + faces[i].bliL = peInfo->peFace[j].bli.ratioL ; + faces[i].bliR = peInfo->peFace[j].bli.ratioR ; + faces[i].bliStatus = peInfo->peFace[j].bli.status ; + } + break; + } + } + } + + return; +} +/*------------------------------------------------------------------------------------------------------------------*/ +/* SetFrInfoToFace : Copy stabilization result of face recognition to face information */ +/*------------------------------------------------------------------------------------------------------------------*/ +VOID SetFrInfoToFace(STB_INT32 TrackingNum,STB_FR_RES *frInfo,FaceObj *faces) +{ + STB_INT32 i,j; + + for( i = 0 ; i < TrackingNum; i++) + { + for( j = 0 ; j < TrackingNum; j++) + { + if(frInfo->frFace[j].nTraID == faces[i].nTraID) + { + faces[i].frStatus = frInfo->frFace[j].frRecog.status ; + faces[i].frVal = frInfo->frFace[j].frRecog.value ; + faces[i].frConf = frInfo->frFace[j].frRecog.conf ; + break; + } + } + } + return; +} \ No newline at end of file diff --git a/src/b5t007001/stblib/src/STB/STBMakeResult.c b/src/b5t007001/stblib/src/STB/STBMakeResult.c new file mode 100644 index 00000000..29addefc --- /dev/null +++ b/src/b5t007001/stblib/src/STB/STBMakeResult.c @@ -0,0 +1,119 @@ +/*---------------------------------------------------------------------------*/ +/* Copyright(C) 2017 OMRON Corporation */ +/* */ +/* Licensed under the Apache License, Version 2.0 (the "License"); */ +/* you may not use this file except in compliance with the License. */ +/* You may obtain a copy of the License at */ +/* */ +/* http://www.apache.org/licenses/LICENSE-2.0 */ +/* */ +/* Unless required by applicable law or agreed to in writing, software */ +/* distributed under the License is distributed on an "AS IS" BASIS, */ +/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */ +/* See the License for the specific language governing permissions and */ +/* limitations under the License. */ +/*---------------------------------------------------------------------------*/ + +#include "STBMakeResult.h" + + +/*------------------------------------------------------------------------------------------------------------------*/ +/* SetFaceToResult */ +/*------------------------------------------------------------------------------------------------------------------*/ +VOID SetFaceToResult ( STB_INT32 TraCnt , TraObj* trObj , FaceObj* faceObj, STB_FACE* result, const STBExecFlg* execFlg ) +{ + STB_INT32 i,j; + STB_INT32 tmpFlg; + + tmpFlg = execFlg->gen + || execFlg->age + || execFlg->fr + || execFlg->exp + || execFlg->dir + || execFlg->gaz + || execFlg->bli ; + + + for( i = 0; i < TraCnt; i++) + { + result[i].nDetectID = trObj[i].nDetID ; + result[i].nTrackingID = trObj[i].nTraID ; + result[i].center.x = trObj[i].pos .x ; + result[i].center.y = trObj[i].pos .y ; + result[i].nSize = trObj[i].size ; + result[i].conf = trObj[i].conf ; + + if( tmpFlg ) + { + for( j = 0; j < TraCnt; j++) + { + if( trObj[i].nTraID == faceObj[j].nTraID ) + { + if( execFlg->age == STB_TRUE ) + { + result[i].age.status = faceObj[j].ageStatus ; + result[i].age.value = faceObj[j].ageVal ; + result[i].age.conf = faceObj[j].ageConf ; + } + if( execFlg->bli == STB_TRUE ) + { + result[i].blink.ratioL = faceObj[j].bliL ; + result[i].blink.ratioR = faceObj[j].bliR ; + result[i].blink.status = faceObj[j].bliStatus ; + } + if( execFlg->dir == STB_TRUE ) + { + result[i].direction.pitch = faceObj[j].dirPitch ; + result[i].direction.roll = faceObj[j].dirRoll ; + result[i].direction.yaw = faceObj[j].dirYaw ; + result[i].direction.status = faceObj[j].dirStatus ; + result[i].direction.conf = faceObj[j].dirConf ; + } + if( execFlg->exp == STB_TRUE ) + { + result[i].expression.status = faceObj[j].expStatus ; + result[i].expression.value = faceObj[j].expVal ; + result[i].expression.conf = faceObj[j].expConf ; + } + if( execFlg->gaz == STB_TRUE ) + { + result[i].gaze.status = faceObj[j].gazStatus ; + result[i].gaze.LR = faceObj[j].gazLR ; + result[i].gaze.UD = faceObj[j].gazUD ; + result[i].gaze.conf = faceObj[j].gazConf ; + } + if( execFlg->gen == STB_TRUE ) + { + result[i].gender.status = faceObj[j].genStatus ; + result[i].gender.value = faceObj[j].genVal ; + result[i].gender.conf = faceObj[j].genConf ; + } + if( execFlg->fr == STB_TRUE ) + { + result[i].recognition.status = faceObj[j].frStatus ; + result[i].recognition.value = faceObj[j].frVal ; + result[i].recognition.conf = faceObj[j].frConf ; + } + break; + }//if( trObj[i].nTraID == faceObj[j].nTraID ) + }//for( j = 0; j < TraCnt; j++) + }//if( tmpFlg ) + }//for( i = 0; i < TraCnt; i++) +} +/*------------------------------------------------------------------------------------------------------------------*/ +/* SetBodyToResult */ +/*------------------------------------------------------------------------------------------------------------------*/ +VOID SetBodyToResult(STB_INT32 TraCnt,TraObj* trObj, STB_BODY* result) +{ + STB_INT32 i; + for( i = 0; i < TraCnt; i++) + { + result[i].nDetectID = trObj[i].nDetID ; + result[i].nTrackingID = trObj[i].nTraID ; + result[i].center.x = trObj[i].pos.x ; + result[i].center.y = trObj[i].pos.y ; + result[i].nSize = trObj[i].size ; + result[i].conf = trObj[i].conf ; + } + +} diff --git a/src/b5t007001/stblib/src/STB/STBTracking.c b/src/b5t007001/stblib/src/STB/STBTracking.c new file mode 100644 index 00000000..3d727407 --- /dev/null +++ b/src/b5t007001/stblib/src/STB/STBTracking.c @@ -0,0 +1,138 @@ +/*---------------------------------------------------------------------------*/ +/* Copyright(C) 2017 OMRON Corporation */ +/* */ +/* Licensed under the Apache License, Version 2.0 (the "License"); */ +/* you may not use this file except in compliance with the License. */ +/* You may obtain a copy of the License at */ +/* */ +/* http://www.apache.org/licenses/LICENSE-2.0 */ +/* */ +/* Unless required by applicable law or agreed to in writing, software */ +/* distributed under the License is distributed on an "AS IS" BASIS, */ +/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */ +/* See the License for the specific language governing permissions and */ +/* limitations under the License. */ +/*---------------------------------------------------------------------------*/ + +#include "STBTracking.h" +#include "STB_Debug.h" + +/*------------------------------------------------------------------------------------------------------------------*/ +/* SetTrackingObjectBody */ +/*------------------------------------------------------------------------------------------------------------------*/ +VOID SetTrackingObjectBody(const STB_FRAME_RESULT_BODYS* stbINPUTbodys,TraObj *bodys) +{ + + STB_INT32 nCount; + STB_INT32 i; + + + /*make the human body information*/ + nCount = stbINPUTbodys->nCount; + + for ( i = 0; i < nCount; i++) + { + bodys[i].nDetID = i; + bodys[i].pos.x = stbINPUTbodys->body[i].center.nX ; + bodys[i].pos.y = stbINPUTbodys->body[i].center.nY ; + bodys[i].conf = stbINPUTbodys->body[i].nConfidence; + bodys[i].size = stbINPUTbodys->body[i].nSize ; + bodys[i].nTraID = STB_STATUS_NO_DATA; + } + +} +/*------------------------------------------------------------------------------------------------------------------*/ +/* SetTrackingObjectFace */ +/*------------------------------------------------------------------------------------------------------------------*/ +VOID SetTrackingObjectFace ( const STB_FRAME_RESULT_FACES *stbINPUTfaces ,TraObj *faces ) +{ + + STB_INT32 nCount; + STB_INT32 i; + + + /*make the human body information*/ + nCount = stbINPUTfaces->nCount; + for ( i = 0; i < nCount; i++) + { + faces[i].nDetID = i; + faces[i].pos.x = stbINPUTfaces->face[i].center.nX ; + faces[i].pos.y = stbINPUTfaces->face[i].center.nY ; + faces[i].conf = stbINPUTfaces->face[i].nConfidence; + faces[i].size = stbINPUTfaces->face[i].nSize ; + faces[i].nTraID = STB_STATUS_NO_DATA; + } + +} +/*------------------------------------------------------------------------------------------------------------------*/ +/* SetSrcTrFace */ +/*------------------------------------------------------------------------------------------------------------------*/ +VOID SetSrcTrFace ( STB_INT32 nDetCntFace , TraObj *trFace, STB_TR_DET *trSrcInfo) +{ + STB_INT32 i; + + trSrcInfo->fcNum = nDetCntFace; + for( i = 0; i < nDetCntFace; i++) + { + trSrcInfo->fcDet[i].conf = trFace[i].conf ; + trSrcInfo->fcDet[i].posX = trFace[i].pos .x ; + trSrcInfo->fcDet[i].posY = trFace[i].pos .y ; + trSrcInfo->fcDet[i].size = trFace[i].size ; + } +} +/*------------------------------------------------------------------------------------------------------------------*/ +/* SetSrcTrBody */ +/*------------------------------------------------------------------------------------------------------------------*/ +VOID SetSrcTrBody ( STB_INT32 nDetCntBody , TraObj *trBody, STB_TR_DET *trSrcInfo) +{ + STB_INT32 i; + + trSrcInfo->bdNum = nDetCntBody; + + for( i = 0; i < nDetCntBody; i++) + { + trSrcInfo->bdDet[i].conf = trBody[i].conf ; + trSrcInfo->bdDet[i].posX = trBody[i].pos .x ; + trSrcInfo->bdDet[i].posY = trBody[i].pos .y ; + trSrcInfo->bdDet[i].size = trBody[i].size ; + } +} + +/*------------------------------------------------------------------------------------------------------------------*/ +/* SetTrackingInfoToFace : Reflect tracking result in structure of detection result */ +/*------------------------------------------------------------------------------------------------------------------*/ +VOID SetTrackingInfoToFace( STB_TR_RES_FACES *fdResult ,STB_INT32 *pnTrackingNum ,TraObj *faces ) +{ + STB_INT32 nIdx; + + *pnTrackingNum = fdResult->cnt; + for (nIdx = 0; nIdx < *pnTrackingNum; nIdx++) + { + faces[nIdx].nDetID = fdResult->face[nIdx].nDetID ; + faces[nIdx].nTraID = fdResult->face[nIdx].nTraID ; + faces[nIdx].pos .x = fdResult->face[nIdx].pos.x ; + faces[nIdx].pos .y = fdResult->face[nIdx].pos.y ; + faces[nIdx].size = fdResult->face[nIdx].size ; + faces[nIdx].conf = fdResult->face[nIdx].conf ; + } + + return; +} + +VOID SetTrackingInfoToBody(STB_TR_RES_BODYS *bdResult,STB_INT32 *pnTrackingNum,TraObj *bodys) +{ + STB_INT32 nIdx; + + *pnTrackingNum = bdResult->cnt; + for (nIdx = 0; nIdx < *pnTrackingNum; nIdx++) + { + bodys[nIdx].nDetID = bdResult->body[nIdx].nDetID ; + bodys[nIdx].nTraID = bdResult->body[nIdx].nTraID ; + bodys[nIdx].pos .x = bdResult->body[nIdx].pos.x ; + bodys[nIdx].pos .y = bdResult->body[nIdx].pos.y ; + bodys[nIdx].size = bdResult->body[nIdx].size ; + bodys[nIdx].conf = bdResult->body[nIdx].conf ; + } + + return; +} \ No newline at end of file diff --git a/src/b5t007001/stblib/src/STB/STBValidValue.c b/src/b5t007001/stblib/src/STB/STBValidValue.c new file mode 100644 index 00000000..65b24d1d --- /dev/null +++ b/src/b5t007001/stblib/src/STB/STBValidValue.c @@ -0,0 +1,138 @@ +/*---------------------------------------------------------------------------*/ +/* Copyright(C) 2017 OMRON Corporation */ +/* */ +/* Licensed under the Apache License, Version 2.0 (the "License"); */ +/* you may not use this file except in compliance with the License. */ +/* You may obtain a copy of the License at */ +/* */ +/* http://www.apache.org/licenses/LICENSE-2.0 */ +/* */ +/* Unless required by applicable law or agreed to in writing, software */ +/* distributed under the License is distributed on an "AS IS" BASIS, */ +/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */ +/* See the License for the specific language governing permissions and */ +/* limitations under the License. */ +/*---------------------------------------------------------------------------*/ + +#include "STBValidValue.h" + +/*Value range check*/ +#define IS_OUT_RANGE( val , min , max ) ( ( (val) < (min) ) || ( (max) < (val) ) ) +#define IS_OUT_VALUE( val , min , max , accept ) ( IS_OUT_RANGE( val , min , max ) && ( (val) != (accept) ) ) +#define IS_OUT_FR_UID( val , min , max , acceptA , acceptB , acceptC ) ( IS_OUT_RANGE( val , min , max ) && ( (val) != (acceptA) ) && ( (val) != (acceptB) ) && ( (val) != (acceptC) ) ) +#define IS_OUT_FR_SCORE( val , min , max , acceptA , acceptB ) ( IS_OUT_RANGE( val , min , max ) && ( (val) != (acceptA) ) && ( (val) != (acceptB) ) ) + +/*------------------------------------------------------------------------------------------------------------------*/ +/* STB_IsValidValue */ +/*------------------------------------------------------------------------------------------------------------------*/ +STB_INT32 STB_IsValidValue(const STB_FRAME_RESULT *input, STBExecFlg *execFlg) +{ + STB_INT32 i ,j; + + + + if( execFlg->bodyTr == STB_TRUE ) + { + if( IS_OUT_RANGE( input->bodys.nCount , STB_BODY_CNT_MIN , STB_BODY_CNT_MAX ) ){ return STB_FALSE;} + for( i = 0 ; i < input->bodys.nCount ; i++) + { + if( IS_OUT_RANGE( input->bodys.body[i].center.nX , STB_BODY_XY_MIN , STB_BODY_XY_MAX ) ){ return STB_FALSE;} + if( IS_OUT_RANGE( input->bodys.body[i].center.nY , STB_BODY_XY_MIN , STB_BODY_XY_MAX ) ){ return STB_FALSE;} + if( IS_OUT_RANGE( input->bodys.body[i].nSize , STB_BODY_SIZE_MIN , STB_BODY_SIZE_MAX ) ){ return STB_FALSE;} + if( IS_OUT_RANGE( input->bodys.body[i].nConfidence , STB_BODY_CONF_MIN , STB_BODY_CONF_MAX ) ){ return STB_FALSE;} + } + + } + + if( execFlg->faceTr == STB_TRUE ) + { + if( IS_OUT_RANGE( input->faces.nCount , STB_FACE_CNT_MIN , STB_FACE_CNT_MAX ) ){ return STB_FALSE;} + for( i = 0 ; i < input->faces.nCount ; i++) + { + if( IS_OUT_RANGE( input->faces.face[i].center.nX , STB_FACE_XY_MIN , STB_FACE_XY_MAX ) ){ return STB_FALSE;} + if( IS_OUT_RANGE( input->faces.face[i].center.nY , STB_FACE_XY_MIN , STB_FACE_XY_MAX ) ){ return STB_FALSE;} + if( IS_OUT_RANGE( input->faces.face[i].nSize , STB_FACE_SIZE_MIN , STB_FACE_SIZE_MAX ) ){ return STB_FALSE;} + if( IS_OUT_RANGE( input->faces.face[i].nConfidence , STB_FACE_CONF_MIN , STB_FACE_CONF_MAX ) ){ return STB_FALSE;} + } + } + + if( execFlg->gen == STB_TRUE + || execFlg->age == STB_TRUE + || execFlg->fr == STB_TRUE + || execFlg->exp == STB_TRUE + || execFlg->dir == STB_TRUE + || execFlg->gaz == STB_TRUE + || execFlg->bli == STB_TRUE + ) + { + for( i = 0 ; i < input->faces.nCount ; i++) + { + if( IS_OUT_RANGE( input->faces.face[i].direction.nLR , STB_FACE_DIR_LR_MIN , STB_FACE_DIR_LR_MAX ) ){ return STB_FALSE;} + if( IS_OUT_RANGE( input->faces.face[i].direction.nUD , STB_FACE_DIR_UD_MIN , STB_FACE_DIR_UD_MAX ) ){ return STB_FALSE;} + if( IS_OUT_RANGE( input->faces.face[i].direction.nRoll , STB_FACE_DIR_ROLL_MIN , STB_FACE_DIR_ROLL_MAX ) ){ return STB_FALSE;} + if( IS_OUT_RANGE( input->faces.face[i].direction.nConfidence , STB_FACE_DIR_CONF_MIN , STB_FACE_DIR_CONF_MAX ) ){ return STB_FALSE;} + } + } + + + if( execFlg->age == STB_TRUE ) + { + for( i = 0 ; i < input->faces.nCount ; i++) + { + if( IS_OUT_VALUE( input->faces.face[i].age.nAge , STB_FACE_AGE_VAL_MIN , STB_FACE_AGE_VAL_MAX ,STB_ERR_PE_CANNOT ) ){ return STB_FALSE;} + if( IS_OUT_VALUE( input->faces.face[i].age.nConfidence , STB_FACE_AGE_CONF_MIN , STB_FACE_AGE_CONF_MAX ,STB_ERR_PE_CANNOT ) ){ return STB_FALSE;} + } + } + + if( execFlg->gen == STB_TRUE ) + { + for( i = 0 ; i < input->faces.nCount ; i++) + { + if( IS_OUT_VALUE( input->faces.face[i].gender.nGender , STB_FACE_GEN_VAL_MIN , STB_FACE_GEN_VAL_MAX ,STB_ERR_PE_CANNOT ) ){ return STB_FALSE;} + if( IS_OUT_VALUE( input->faces.face[i].gender.nConfidence , STB_FACE_GEN_CONF_MIN , STB_FACE_GEN_CONF_MAX ,STB_ERR_PE_CANNOT ) ){ return STB_FALSE;} + } + } + + if( execFlg->gaz == STB_TRUE ) + { + for( i = 0 ; i < input->faces.nCount ; i++) + { + if( IS_OUT_VALUE( input->faces.face[i].gaze.nLR , STB_FACE_GAZE_LR_MIN , STB_FACE_GAZE_LR_MAX ,STB_ERR_PE_CANNOT ) ){ return STB_FALSE;} + if( IS_OUT_VALUE( input->faces.face[i].gaze.nUD , STB_FACE_GAZE_UD_MIN , STB_FACE_GAZE_UD_MAX ,STB_ERR_PE_CANNOT ) ){ return STB_FALSE;} + } + } + + if( execFlg->bli == STB_TRUE ) + { + for( i = 0 ; i < input->faces.nCount ; i++) + { + if( IS_OUT_VALUE( input->faces.face[i].blink.nLeftEye , STB_FACE_BLI_L_MIN , STB_FACE_BLI_L_MAX ,STB_ERR_PE_CANNOT) ){ return STB_FALSE;} + if( IS_OUT_VALUE( input->faces.face[i].blink.nRightEye , STB_FACE_BLI_R_MIN , STB_FACE_BLI_R_MAX ,STB_ERR_PE_CANNOT) ){ return STB_FALSE;} + } + } + + if( execFlg->exp == STB_TRUE ) + { + for( i = 0 ; i < input->faces.nCount ; i++) + { + if( IS_OUT_VALUE( input->faces.face[i].expression.nDegree , STB_FACE_EXP_DEG_MIN , STB_FACE_EXP_DEG_MAX ,STB_ERR_PE_CANNOT) ){ return STB_FALSE;} + for( j = 0 ; j < STB_EX_MAX ; j++) + { + if( IS_OUT_VALUE( input->faces.face[i].expression.anScore[j] ,STB_FACE_EXP_SCORE_MIN , STB_FACE_EXP_SCORE_MAX ,STB_ERR_PE_CANNOT) ){ return STB_FALSE;} + } + + } + } + + if( execFlg->fr == STB_TRUE ) + { + for( i = 0 ; i < input->faces.nCount ; i++) + { + if( IS_OUT_FR_UID( input->faces.face[i].recognition.nUID , STB_FACE_FR_UID_MIN , STB_FACE_FR_UID_MAX ,STB_ERR_FR_CANNOT ,STB_ERR_FR_NOID ,STB_ERR_FR_NOALBUM ) ){ return STB_FALSE;} + if( IS_OUT_FR_SCORE( input->faces.face[i].recognition.nScore , STB_FACE_FR_SCORE_MIN , STB_FACE_FR_SCORE_MAX ,STB_ERR_FR_CANNOT ,STB_ERR_FR_NOALBUM) ){ return STB_FALSE;} + } + } + + + return STB_TRUE; +} \ No newline at end of file diff --git a/src/b5t007001/stblib/src/STB/STBValidValue.h b/src/b5t007001/stblib/src/STB/STBValidValue.h new file mode 100644 index 00000000..0ccb7b8e --- /dev/null +++ b/src/b5t007001/stblib/src/STB/STBValidValue.h @@ -0,0 +1,94 @@ +/*---------------------------------------------------------------------------*/ +/* Copyright(C) 2017 OMRON Corporation */ +/* */ +/* Licensed under the Apache License, Version 2.0 (the "License"); */ +/* you may not use this file except in compliance with the License. */ +/* You may obtain a copy of the License at */ +/* */ +/* http://www.apache.org/licenses/LICENSE-2.0 */ +/* */ +/* Unless required by applicable law or agreed to in writing, software */ +/* distributed under the License is distributed on an "AS IS" BASIS, */ +/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */ +/* See the License for the specific language governing permissions and */ +/* limitations under the License. */ +/*---------------------------------------------------------------------------*/ + +#ifndef STBVALIDVALUE_H__ +#define STBVALIDVALUE_H__ + +#include "STBTypedefInput.h" +#include "STBCommonDef.h" +#include "STBCommonType.h" + +/*-------------------------------------------------------------------*/ +/*Threshold for checking input value*/ +/*-------------------------------------------------------------------*/ +#define STB_BODY_CNT_MIN 0 // body +#define STB_BODY_CNT_MAX 35 +#define STB_BODY_XY_MIN 0 +#define STB_BODY_XY_MAX 8191 +#define STB_BODY_SIZE_MIN 20 +#define STB_BODY_SIZE_MAX 8192 +#define STB_BODY_CONF_MIN 0 +#define STB_BODY_CONF_MAX 1000 +#define STB_FACE_CNT_MIN 0 // face +#define STB_FACE_CNT_MAX 35 +#define STB_FACE_XY_MIN 0 +#define STB_FACE_XY_MAX 8191 +#define STB_FACE_SIZE_MIN 20 +#define STB_FACE_SIZE_MAX 8192 +#define STB_FACE_CONF_MIN 0 +#define STB_FACE_CONF_MAX 1000 +#define STB_FACE_DIR_LR_MIN -180 +#define STB_FACE_DIR_LR_MAX 179 +#define STB_FACE_DIR_UD_MIN -180 +#define STB_FACE_DIR_UD_MAX 179 +#define STB_FACE_DIR_ROLL_MIN -180 +#define STB_FACE_DIR_ROLL_MAX 179 +#define STB_FACE_DIR_CONF_MIN 0 +#define STB_FACE_DIR_CONF_MAX 1000 +#define STB_FACE_AGE_VAL_MIN 0 +#define STB_FACE_AGE_VAL_MAX 75 +#define STB_FACE_AGE_CONF_MIN 0 +#define STB_FACE_AGE_CONF_MAX 1000 +#define STB_FACE_GEN_VAL_MIN 0 +#define STB_FACE_GEN_VAL_MAX 1 +#define STB_FACE_GEN_CONF_MIN 0 +#define STB_FACE_GEN_CONF_MAX 1000 +#define STB_FACE_GAZE_LR_MIN -90 +#define STB_FACE_GAZE_LR_MAX 90 +#define STB_FACE_GAZE_UD_MIN -90 +#define STB_FACE_GAZE_UD_MAX 90 +#define STB_FACE_BLI_L_MIN 1 +#define STB_FACE_BLI_L_MAX 1000 +#define STB_FACE_BLI_R_MIN 1 +#define STB_FACE_BLI_R_MAX 1000 +#define STB_FACE_EXP_SCORE_MIN 0 +#define STB_FACE_EXP_SCORE_MAX 100 /* not 1000 */ +#define STB_FACE_EXP_DEG_MIN -100 +#define STB_FACE_EXP_DEG_MAX 100 +#define STB_FACE_FR_UID_MIN 0 +#define STB_FACE_FR_UID_MAX 499 +#define STB_FACE_FR_SCORE_MIN 0 +#define STB_FACE_FR_SCORE_MAX 1000 + +/*-------------------------------------------------------------------*/ +/*Permitted input value*/ +/*-------------------------------------------------------------------*/ +#define STB_ERR_PE_CANNOT -128 /*Estimation is not possible.*/ +#define STB_ERR_FR_CANNOT -128 /*Recognition impossible*/ +#define STB_ERR_FR_NOID -1 /*No corresponding ID*/ +#define STB_ERR_FR_NOALBUM -127 /*Not-registered in Album*/ +/*-------------------------------------------------------------------*/ +/*For collaboration with child library*/ +/*-------------------------------------------------------------------*/ +#define STB_ERR_DIR_CANNOT -256 /*Unable to angle estimation*/ + +/*-------------------------------------------------------------------*/ +/* Func */ +/*-------------------------------------------------------------------*/ +STB_INT32 STB_IsValidValue(const STB_FRAME_RESULT *input, STBExecFlg *execFlg); + +#endif /* COMMONDEF_H__ */ + diff --git a/src/b5t007001/stblib/src/STB_FaceRecognition/FrInterface.c b/src/b5t007001/stblib/src/STB_FaceRecognition/FrInterface.c new file mode 100644 index 00000000..9e47c9ee --- /dev/null +++ b/src/b5t007001/stblib/src/STB_FaceRecognition/FrInterface.c @@ -0,0 +1,509 @@ +/*---------------------------------------------------------------------------*/ +/* Copyright(C) 2017 OMRON Corporation */ +/* */ +/* Licensed under the Apache License, Version 2.0 (the "License"); */ +/* you may not use this file except in compliance with the License. */ +/* You may obtain a copy of the License at */ +/* */ +/* http://www.apache.org/licenses/LICENSE-2.0 */ +/* */ +/* Unless required by applicable law or agreed to in writing, software */ +/* distributed under the License is distributed on an "AS IS" BASIS, */ +/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */ +/* See the License for the specific language governing permissions and */ +/* limitations under the License. */ +/*---------------------------------------------------------------------------*/ + +#include "FrInterface.h" +#include "STBFrAPI.h" + +/*Value range check*/ +#define ISVALID_RANGE( val , min , max ) ( ( (min) <= (val) ) && ( (val) <= (max) ) ) + +/*--------------------------------------------------------------------- +---------------------------------------------------------------------*/ +/*error check*/ +/*--------------------------------------------------------------------- +---------------------------------------------------------------------*/ +static STB_INT32 FrIsValidValue( + const STB_INT32 nValue , + const STB_INT32 nLimitMin , + const STB_INT32 nLimitMax ) +{ + STB_INT32 nRet; + for( nRet = STB_ERR_INVALIDPARAM; nRet != STB_NORMAL; nRet = STB_NORMAL ){ + if( ! ISVALID_RANGE( nValue , nLimitMin , nLimitMax ) ){ break; } + } + return nRet; +} +/*--------------------------------------------------------------------- +---------------------------------------------------------------------*/ +static STB_INT32 FrIsValidPointer( const VOID* pPointer ) +{ + STB_INT32 nRet; + for( nRet = STB_ERR_INVALIDPARAM; nRet != STB_NORMAL; nRet = STB_NORMAL ){ + if( NULL == pPointer ){ break; } + } + return nRet; +} + +/*------------------------------------------------------------------------------------------------------------------*/ +/* CalcFrSize */ +/*------------------------------------------------------------------------------------------------------------------*/ +STB_UINT32 CalcFrSize ( STB_UINT32 nTraCntMax ) +{ + STB_UINT32 retVal ; + + retVal = 0 ; + + retVal += 100 ;///Margin : alignment + + + + retVal += sizeof( FR_DET ) * nTraCntMax ; // frDet.fcDet + retVal += sizeof( STB_FR_DET ) * STB_FR_BACK_MAX ; // frDetRec + retVal += sizeof( FR_DET ) * nTraCntMax * nTraCntMax ; // frDetRec[t].fcDet + retVal += sizeof( FR_RES ) * nTraCntMax ; // frRes.frFace + + return retVal; +} +/*------------------------------------------------------------------------------------------------------------------*/ +/* ShareFrSize */ +/*------------------------------------------------------------------------------------------------------------------*/ +void ShareFrSize ( FRHANDLE handle ) +{ + + STB_UINT32 t; + STB_INT8 *stbPtr = handle->frPtr ; + STB_UINT32 nTraCntMax = handle->frCntMax ; + + handle->frDet.fcDet = ( FR_DET* ) stbPtr; stbPtr += ( sizeof( FR_DET ) * nTraCntMax ); + handle->frDetRec = ( STB_FR_DET* ) stbPtr; stbPtr += ( sizeof( STB_FR_DET ) * STB_FR_BACK_MAX); + for( t = 0 ; t < STB_FR_BACK_MAX ; t++ ) + { + handle->frDetRec[t].fcDet = ( FR_DET* ) stbPtr; stbPtr += ( sizeof( FR_DET ) * nTraCntMax ); + } + handle->frRes.frFace = ( FR_RES * ) stbPtr; stbPtr += ( sizeof( FR_RES ) * nTraCntMax ); + +} +/*--------------------------------------------------------------------- +---------------------------------------------------------------------*/ +/*Create handle*/ +FRHANDLE FrCreateHandle( const STB_INT32 nTraCntMax ) + +{ + + FRHANDLE handle; + STB_INT32 t , i ; + STB_INT32 tmpVal; + + + + if( nTraCntMax < 1 || STB_FR_TRA_CNT_MAX < nTraCntMax ) + { + return NULL; + } + + /*do handle's Malloc here*/ + handle = (FRHANDLE)malloc(sizeof(*handle)); + if(handle == NULL) + { + return NULL; + } + + + /*initial value---------------------------------------------------------------------*/ + handle->frFaceDirUDMax = STB_FR_DIR_MAX_UD_INI ; + handle->frFaceDirUDMin = STB_FR_DIR_MIN_UD_INI ; + handle->frFaceDirLRMax = STB_FR_DIR_MAX_LR_INI ; + handle->frFaceDirLRMin = STB_FR_DIR_MIN_LR_INI ; + handle->frCntMax = nTraCntMax ;//Maximum number of tracking people + handle->frFaceDirThr = STB_FR_DIR_THR_INI ;//If the confidence of Face direction estimation doesn't exceed the reference value, the recognition result isn't trusted. + handle->frFrameCount = STB_FR_FRAME_CNT_INI ; + handle->frFrameRatio = STB_FR_FRAME_RATIO_INI ; + handle->frPtr = NULL; + handle->frDet.num = 0; + handle->frDet.fcDet = NULL; + handle->frDetRec = NULL; + handle->frRes.frCnt = 0; + handle->frRes.frFace = NULL; + + tmpVal = CalcFrSize ( nTraCntMax ); /*calculate necessary amount in the Fr handle*/ + handle->frPtr = NULL; + handle->frPtr = ( STB_INT8 * )malloc( tmpVal ); /*keeping necessary amount in the Fr handle*/ + if( handle->frPtr == NULL ) + { + free ( handle->frPtr ); + free ( handle ); + return NULL; + } + + /* Malloc-area is allocated to things that need Malloc in FR handle */ + ShareFrSize ( handle ); + + + + + for( t = 0 ; t < STB_FR_BACK_MAX ; t++ ) + { + handle->frDetRec [ t ].num = 0; + for( i = 0 ; i < handle->frCntMax ; i++ ) + { + handle->frDetRec [ t ].fcDet[i].nDetID = STB_STATUS_NO_DATA ; + handle->frDetRec [ t ].fcDet[i].nTraID = STB_STATUS_NO_DATA ; + handle->frDetRec [ t ].fcDet[i].dirDetPitch = STB_STATUS_NO_DATA ; + handle->frDetRec [ t ].fcDet[i].dirDetRoll = STB_STATUS_NO_DATA ; + handle->frDetRec [ t ].fcDet[i].dirDetYaw = STB_STATUS_NO_DATA ; + handle->frDetRec [ t ].fcDet[i].frDetConf = STB_STATUS_NO_DATA ; + handle->frDetRec [ t ].fcDet[i].frDetID = STB_STATUS_NO_DATA ; + handle->frDetRec [ t ].fcDet[i].frDetConf = STB_STATUS_NO_DATA ; + handle->frDetRec [ t ].fcDet[i].frStatus = STB_STATUS_NO_DATA ; + + } + } + + return handle; +} + +/*--------------------------------------------------------------------- +---------------------------------------------------------------------*/ +/*Delete handle*/ +STB_INT32 FrDeleteHandle(FRHANDLE handle){ + STB_INT32 nRet; + + /*NULL check*/ + nRet = FrIsValidPointer(handle); + if(nRet != STB_NORMAL){ + return nRet; + } + + free ( handle->frPtr ); + free ( handle ); + + return nRet; +} + + +/*--------------------------------------------------------------------- +---------------------------------------------------------------------*/ +/*Set the result*/ +STB_INT32 FrSetDetect(FRHANDLE handle,const STB_FR_DET *stbFrDet){ + + STB_INT32 nRet; + STB_INT32 i; + + /*NULL check*/ + nRet = FrIsValidPointer(handle); + if(nRet != STB_NORMAL){ + return STB_ERR_NOHANDLE; + } + + nRet = FrIsValidPointer(stbFrDet); + if(nRet != STB_NORMAL){ + return nRet; + } + + /*Input value check*/ + nRet = STB_FrIsValidValue ( stbFrDet ); + if(nRet != STB_TRUE) + { + return STB_ERR_INVALIDPARAM; + } + + + /*Set the received result to the handle*/ + /* Face */ + if( stbFrDet->num > handle->frCntMax ) + { + return STB_ERR_PROCESSCONDITION; + } + handle->frDet.num = stbFrDet->num; + for( i = 0 ; i < handle->frDet.num ; i++ ) + { + + handle->frDet.fcDet[i].nDetID = stbFrDet->fcDet[i].nDetID ; + handle->frDet.fcDet[i].nTraID = stbFrDet->fcDet[i].nTraID ; + handle->frDet.fcDet[i].dirDetPitch = stbFrDet->fcDet[i].dirDetPitch; + handle->frDet.fcDet[i].dirDetRoll = stbFrDet->fcDet[i].dirDetRoll ; + handle->frDet.fcDet[i].dirDetYaw = stbFrDet->fcDet[i].dirDetYaw ; + handle->frDet.fcDet[i].dirDetConf = stbFrDet->fcDet[i].dirDetConf ; + handle->frDet.fcDet[i].frDetID = stbFrDet->fcDet[i].frDetID ; + handle->frDet.fcDet[i].frDetConf = stbFrDet->fcDet[i].frDetConf ; + + } + + + + return STB_NORMAL; +} +/*--------------------------------------------------------------------- +---------------------------------------------------------------------*/ +/*Main process execution*/ +STB_INT32 FrExecute(FRHANDLE handle){ + STB_INT32 nRet; + /*NULL check*/ + nRet = FrIsValidPointer(handle); + if(nRet != STB_NORMAL){ + return STB_ERR_NOHANDLE; + } + + /*Main processing here*/ + nRet = StbFrExec ( handle ); + + return STB_NORMAL; +} +/*--------------------------------------------------------------------- +---------------------------------------------------------------------*/ +/*Get-Function of results*/ +STB_INT32 FrGetResult(FRHANDLE handle,STB_FR_RES* frResult){ + STB_INT32 nRet; + int i; + + /*NULL check*/ + nRet = FrIsValidPointer(handle); + if(nRet != STB_NORMAL){ + return STB_ERR_NOHANDLE; + } + + nRet = FrIsValidPointer(frResult); + if(nRet != STB_NORMAL){ + return nRet; + } + + /*Get result from handle*/ + frResult->frCnt = handle->frRes.frCnt ; + for( i = 0 ; i < frResult->frCnt ; i++ ){ + frResult->frFace[i].nTraID = handle->frRes.frFace[i].nTraID ; + frResult->frFace[i].frRecog.value = handle->frRes.frFace[i].frRecog.value ; + frResult->frFace[i].frRecog.status = handle->frRes.frFace[i].frRecog.status ; + frResult->frFace[i].frRecog.conf = handle->frRes.frFace[i].frRecog.conf ; + } + + return STB_NORMAL; +} +/*--------------------------------------------------------------------- +---------------------------------------------------------------------*/ +STB_INT32 FrSetFaceDirMinMax(FRHANDLE handle , STB_INT32 nMinUDAngle , STB_INT32 nMaxUDAngle ,STB_INT32 nMinLRAngle , STB_INT32 nMaxLRAngle) +{ + + STB_INT32 nRet; + /*NULL check*/ + nRet = FrIsValidPointer(handle); + if(nRet != STB_NORMAL){ + return STB_ERR_NOHANDLE; + } + + if( nMinUDAngle < STB_FR_DIR_MIN_UD_MIN || STB_FR_DIR_MIN_UD_MAX < nMinUDAngle) + { + return STB_ERR_INVALIDPARAM; + } + if( nMaxUDAngle < STB_FR_DIR_MAX_UD_MIN || STB_FR_DIR_MAX_UD_MAX < nMaxUDAngle) + { + return STB_ERR_INVALIDPARAM; + } + if( nMaxUDAngle < nMinUDAngle) + { + return STB_ERR_INVALIDPARAM; + } + + + if( nMinLRAngle < STB_FR_DIR_MIN_LR_MIN || STB_FR_DIR_MIN_LR_MAX < nMinLRAngle) + { + return STB_ERR_INVALIDPARAM; + } + if( nMaxLRAngle < STB_FR_DIR_MAX_LR_MIN || STB_FR_DIR_MAX_LR_MAX < nMaxLRAngle) + { + return STB_ERR_INVALIDPARAM; + } + if( nMaxLRAngle < nMinLRAngle) + { + return STB_ERR_INVALIDPARAM; + } + + + handle->frFaceDirUDMin = nMinUDAngle; + handle->frFaceDirUDMax = nMaxUDAngle; + handle->frFaceDirLRMin = nMinLRAngle; + handle->frFaceDirLRMax = nMaxLRAngle; + return STB_NORMAL; +} +/*--------------------------------------------------------------------- +---------------------------------------------------------------------*/ +STB_INT32 FrGetFaceDirMinMax(FRHANDLE handle , STB_INT32 *pnMinUDAngle , STB_INT32 *pnMaxUDAngle ,STB_INT32 *pnMinLRAngle, STB_INT32 *pnMaxLRAngle ) +{ + STB_INT32 nRet; + /*NULL check*/ + nRet = FrIsValidPointer(handle); + if(nRet != STB_NORMAL){ + return STB_ERR_NOHANDLE; + } + nRet = FrIsValidPointer(pnMinUDAngle); + if(nRet != STB_NORMAL){ + return STB_ERR_INVALIDPARAM; + } + nRet = FrIsValidPointer(pnMaxUDAngle); + if(nRet != STB_NORMAL){ + return STB_ERR_INVALIDPARAM; + } + nRet = FrIsValidPointer(pnMinLRAngle); + if(nRet != STB_NORMAL){ + return STB_ERR_INVALIDPARAM; + } + nRet = FrIsValidPointer(pnMaxLRAngle); + if(nRet != STB_NORMAL){ + return STB_ERR_INVALIDPARAM; + } + + + *pnMinUDAngle = handle->frFaceDirUDMin ; + *pnMaxUDAngle = handle->frFaceDirUDMax ; + *pnMinLRAngle = handle->frFaceDirLRMin ; + *pnMaxLRAngle = handle->frFaceDirLRMax ; + return STB_NORMAL; +} +/*--------------------------------------------------------------------- +---------------------------------------------------------------------*/ +STB_INT32 FrClear ( FRHANDLE handle ) +{ + //clear processing + + STB_INT32 t , i ; + STB_INT32 nRet; + + /*NULL check*/ + nRet = FrIsValidPointer(handle); + if(nRet != STB_NORMAL){ + return STB_ERR_NOHANDLE; + } + + for( t = 0 ; t < STB_FR_BACK_MAX ; t++ ) + { + handle->frDetRec [ t ].num = 0; + for( i = 0 ; i < handle->frCntMax ; i++ ) + { + handle->frDetRec [ t ].fcDet[i].nDetID = STB_STATUS_NO_DATA ; + handle->frDetRec [ t ].fcDet[i].nTraID = STB_STATUS_NO_DATA ; + handle->frDetRec [ t ].fcDet[i].dirDetPitch = STB_STATUS_NO_DATA ; + handle->frDetRec [ t ].fcDet[i].dirDetRoll = STB_STATUS_NO_DATA ; + handle->frDetRec [ t ].fcDet[i].dirDetYaw = STB_STATUS_NO_DATA ; + handle->frDetRec [ t ].fcDet[i].dirDetConf = STB_STATUS_NO_DATA ; + handle->frDetRec [ t ].fcDet[i].frDetID = STB_STATUS_NO_DATA ; + handle->frDetRec [ t ].fcDet[i].frDetConf = STB_STATUS_NO_DATA ; + handle->frDetRec [ t ].fcDet[i].frStatus = STB_STATUS_NO_DATA ; + + } + } + return STB_NORMAL; + + +} +/*--------------------------------------------------------------------- +---------------------------------------------------------------------*/ +/*--------------------------------------------------------------------- +---------------------------------------------------------------------*/ +STB_INT32 FrSetFaceDirThreshold(FRHANDLE handle , STB_INT32 threshold ) +{ + STB_INT32 nRet; + /*NULL check*/ + nRet = FrIsValidPointer(handle); + if(nRet != STB_NORMAL){ + return STB_ERR_NOHANDLE; + } + + if( threshold < STB_FR_DIR_THR_MIN || STB_FR_DIR_THR_MAX < threshold) + { + return STB_ERR_INVALIDPARAM; + } + handle->frFaceDirThr = threshold; + return STB_NORMAL; +} +/*--------------------------------------------------------------------- +---------------------------------------------------------------------*/ +STB_INT32 FrGetFaceDirThreshold(FRHANDLE handle , STB_INT32* threshold ) +{ + STB_INT32 nRet; + + /*NULL check*/ + nRet = FrIsValidPointer(handle); + if(nRet != STB_NORMAL){ + return STB_ERR_NOHANDLE; + } + nRet = FrIsValidPointer(threshold); + if(nRet != STB_NORMAL){ + return STB_ERR_INVALIDPARAM; + } + + *threshold = handle->frFaceDirThr ; + return STB_NORMAL; +} +/*--------------------------------------------------------------------- +---------------------------------------------------------------------*/ +STB_INT32 FrSetFrameCount(FRHANDLE handle , STB_INT32 nFrameCount ) +{ + + STB_INT32 nRet; + /*NULL check*/ + nRet = FrIsValidPointer(handle); + if(nRet != STB_NORMAL){ + return STB_ERR_NOHANDLE; + } + if( nFrameCount < STB_FR_FRAME_CNT_MIN || STB_FR_FRAME_CNT_MAX < nFrameCount) + { + return STB_ERR_INVALIDPARAM; + } + handle->frFrameCount = nFrameCount; + return STB_NORMAL; +} +/*--------------------------------------------------------------------- +---------------------------------------------------------------------*/ +STB_INT32 FrGetFrameCount(FRHANDLE handle , STB_INT32* nFrameCount ) +{ + STB_INT32 nRet; + /*NULL check*/ + nRet = FrIsValidPointer(handle); + if(nRet != STB_NORMAL){ + return STB_ERR_NOHANDLE; + } + nRet = FrIsValidPointer(nFrameCount); + if(nRet != STB_NORMAL){ + return STB_ERR_INVALIDPARAM; + } + + *nFrameCount = handle->frFrameCount ; + return STB_NORMAL; +} +/*--------------------------------------------------------------------- +---------------------------------------------------------------------*/ +STB_INT32 FrSetMinRatio(FRHANDLE handle , STB_INT32 nMinRatio ) +{ + STB_INT32 nRet; + /*NULL check*/ + nRet = FrIsValidPointer(handle); + if(nRet != STB_NORMAL){ + return STB_ERR_NOHANDLE; + } + if( nMinRatio < STB_FR_FRAME_RATIO_MIN || STB_FR_FRAME_RATIO_MAX < nMinRatio) + { + return STB_ERR_INVALIDPARAM; + } + handle->frFrameRatio = nMinRatio; + return STB_NORMAL; +} +/*--------------------------------------------------------------------- +---------------------------------------------------------------------*/ +STB_INT32 FrGetMinRatio(FRHANDLE handle , STB_INT32* nMinRatio ) +{ + STB_INT32 nRet; + /*NULL check*/ + nRet = FrIsValidPointer(handle); + if(nRet != STB_NORMAL){ + return STB_ERR_NOHANDLE; + } + nRet = FrIsValidPointer(nMinRatio); + if(nRet != STB_NORMAL){ + return STB_ERR_INVALIDPARAM; + } + + *nMinRatio = handle->frFrameRatio ; + return STB_NORMAL; +} diff --git a/src/b5t007001/stblib/src/STB_FaceRecognition/FrInterface.h b/src/b5t007001/stblib/src/STB_FaceRecognition/FrInterface.h new file mode 100644 index 00000000..7e001b50 --- /dev/null +++ b/src/b5t007001/stblib/src/STB_FaceRecognition/FrInterface.h @@ -0,0 +1,121 @@ +/*---------------------------------------------------------------------------*/ +/* Copyright(C) 2017 OMRON Corporation */ +/* */ +/* Licensed under the Apache License, Version 2.0 (the "License"); */ +/* you may not use this file except in compliance with the License. */ +/* You may obtain a copy of the License at */ +/* */ +/* http://www.apache.org/licenses/LICENSE-2.0 */ +/* */ +/* Unless required by applicable law or agreed to in writing, software */ +/* distributed under the License is distributed on an "AS IS" BASIS, */ +/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */ +/* See the License for the specific language governing permissions and */ +/* limitations under the License. */ +/*---------------------------------------------------------------------------*/ + +#if !defined( _INTERFACE_H_ ) +#define _INTERFACE_H_ + +#include "STBFrTypedef.h" +#include "STBCommonDef.h" +#include "STBCommonType.h" +#include "STBFrValidValue.h" + +#ifdef __cplusplus +extern "C" { +#endif + + +////////////////////////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////////// +/////////// Define ////////////// +////////////////////////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////////// + + +#define STB_FR_BACK_MAX 20 /* refer to past "STB_BACK_MAX" frames of results */ + +#define STB_FR_TRA_CNT_MAX 35 + +#define STB_FR_INVALID_UID -999 + +#define STB_FR_DIR_MIN_UD_INI -15 +#define STB_FR_DIR_MIN_UD_MIN -90 +#define STB_FR_DIR_MIN_UD_MAX 90 + +#define STB_FR_DIR_MAX_UD_INI 20 +#define STB_FR_DIR_MAX_UD_MIN -90 +#define STB_FR_DIR_MAX_UD_MAX 90 + +#define STB_FR_DIR_MIN_LR_INI -30 +#define STB_FR_DIR_MIN_LR_MIN -90 +#define STB_FR_DIR_MIN_LR_MAX 90 + +#define STB_FR_DIR_MAX_LR_INI 30 +#define STB_FR_DIR_MAX_LR_MIN -90 +#define STB_FR_DIR_MAX_LR_MAX 90 + +#define STB_FR_DIR_THR_INI 300 +#define STB_FR_DIR_THR_MIN 0 +#define STB_FR_DIR_THR_MAX 1000 + +#define STB_FR_FRAME_CNT_INI 5 +#define STB_FR_FRAME_CNT_MIN 0 +#define STB_FR_FRAME_CNT_MAX 20 + +#define STB_FR_FRAME_RATIO_INI 60 +#define STB_FR_FRAME_RATIO_MIN 0 +#define STB_FR_FRAME_RATIO_MAX 100 + +////////////////////////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////////// +/////////// Struct ////////////// +////////////////////////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////////// +typedef struct tagFRHANDLE { + + STB_INT8 *frPtr ; + + /* param */ + STB_INT32 frCntMax ;//Maximum number of tracking people + STB_INT32 frFaceDirUDMax ;//The face on top/down allowable range max. + STB_INT32 frFaceDirUDMin ;//The face on top/down allowable range min. + STB_INT32 frFaceDirLRMax ;//The face on left /right side allowable range max. + STB_INT32 frFaceDirLRMin ;//The face on left /right side allowable range min. + STB_INT32 frFaceDirThr ;//If the confidence of Face direction estimation doesn't exceed the reference value, the recognition result isn't trusted. + STB_INT32 frFrameCount ; + STB_INT32 frFrameRatio ; + /* FR_Face */ + STB_FR_DET frDet ;//Present data before the stabilization(input). + STB_FR_DET *frDetRec ;//past data before the stabilization + STB_FR_RES frRes ;//present data after the stabilization(output) + +} *FRHANDLE; + + +////////////////////////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////////// +/////////// Func ////////////// +////////////////////////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////////// +FRHANDLE FrCreateHandle ( const STB_INT32 nTraCntMax ); +STB_INT32 FrDeleteHandle ( FRHANDLE handle); +STB_INT32 FrSetDetect ( FRHANDLE handle,const STB_FR_DET *stbPeDet); +STB_INT32 FrExecute ( FRHANDLE handle); +STB_INT32 FrClear ( FRHANDLE handle ); +STB_INT32 FrGetResult ( FRHANDLE handle , STB_FR_RES* peResult); + +STB_INT32 FrSetFaceDirMinMax( FRHANDLE handle , STB_INT32 nMinUDAngle , STB_INT32 nMaxUDAngle ,STB_INT32 nMinLRAngle , STB_INT32 nMaxLRAngle); +STB_INT32 FrGetFaceDirMinMax( FRHANDLE handle , STB_INT32 *pnMinUDAngle , STB_INT32 *pnMaxUDAngle ,STB_INT32 *pnMinLRAngle, STB_INT32 *pnMaxLRAngle ); +STB_INT32 FrSetFaceDirThreshold ( FRHANDLE handle , STB_INT32 threshold ); +STB_INT32 FrGetFaceDirThreshold ( FRHANDLE handle , STB_INT32* threshold ); +STB_INT32 FrSetFrameCount ( FRHANDLE handle , STB_INT32 nFrameCount ); +STB_INT32 FrGetFrameCount ( FRHANDLE handle , STB_INT32* nFrameCount ); +STB_INT32 FrSetMinRatio ( FRHANDLE handle , STB_INT32 nMinRatio ); +STB_INT32 FrGetMinRatio ( FRHANDLE handle , STB_INT32* nMinRatio ); +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/b5t007001/stblib/src/STB_FaceRecognition/STBFrAPI.c b/src/b5t007001/stblib/src/STB_FaceRecognition/STBFrAPI.c new file mode 100644 index 00000000..2a26fa54 --- /dev/null +++ b/src/b5t007001/stblib/src/STB_FaceRecognition/STBFrAPI.c @@ -0,0 +1,326 @@ +/*---------------------------------------------------------------------------*/ +/* Copyright(C) 2017 OMRON Corporation */ +/* */ +/* Licensed under the Apache License, Version 2.0 (the "License"); */ +/* you may not use this file except in compliance with the License. */ +/* You may obtain a copy of the License at */ +/* */ +/* http://www.apache.org/licenses/LICENSE-2.0 */ +/* */ +/* Unless required by applicable law or agreed to in writing, software */ +/* distributed under the License is distributed on an "AS IS" BASIS, */ +/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */ +/* See the License for the specific language governing permissions and */ +/* limitations under the License. */ +/*---------------------------------------------------------------------------*/ + +#include "STBFrAPI.h" + +/*---------------------------------------------------------------------*/ +// FrSlideFacesRec +/*---------------------------------------------------------------------*/ +void FrSlideFacesRec ( STB_FR_DET *facesRec ) +{ + STB_INT32 t , i ; + + for( t = STB_FR_BACK_MAX - 2 ; t >= 0 ; t-- ) + { + facesRec [ t + 1 ].num = facesRec[ t + 0 ].num; + for( i = 0 ; i < facesRec [ t + 1 ].num ; i++ ) + { + facesRec [ t + 1 ].fcDet[i].nDetID = facesRec [ t ].fcDet[i].nDetID ; + facesRec [ t + 1 ].fcDet[i].nTraID = facesRec [ t ].fcDet[i].nTraID ; + + facesRec [ t + 1 ].fcDet[i].dirDetPitch = facesRec [ t ].fcDet[i].dirDetPitch ; + facesRec [ t + 1 ].fcDet[i].dirDetRoll = facesRec [ t ].fcDet[i].dirDetRoll ; + facesRec [ t + 1 ].fcDet[i].dirDetYaw = facesRec [ t ].fcDet[i].dirDetYaw ; + facesRec [ t + 1 ].fcDet[i].dirDetConf = facesRec [ t ].fcDet[i].dirDetConf ; + facesRec [ t + 1 ].fcDet[i].frDetID = facesRec [ t ].fcDet[i].frDetID ; + facesRec [ t + 1 ].fcDet[i].frDetConf = facesRec [ t ].fcDet[i].frDetConf ; + facesRec [ t + 1 ].fcDet[i].frStatus = facesRec [ t ].fcDet[i].frStatus ; + + } + } +} +/*---------------------------------------------------------------------*/ +// FrCurFaces +/*---------------------------------------------------------------------*/ +void FrCurFaces ( STB_FR_DET *facesRec , STB_FR_DET *srcFace ) +{ + STB_INT32 i ; + + + facesRec [ 0 ].num = srcFace->num; + for( i = 0 ; i < facesRec [ 0 ].num ; i++ ) + { + facesRec [ 0 ].fcDet[i].nDetID = srcFace->fcDet[i].nDetID ; + facesRec [ 0 ].fcDet[i].nTraID = srcFace->fcDet[i].nTraID ; + facesRec [ 0 ].fcDet[i].dirDetPitch = srcFace->fcDet[i].dirDetPitch ; + facesRec [ 0 ].fcDet[i].dirDetRoll = srcFace->fcDet[i].dirDetRoll ; + facesRec [ 0 ].fcDet[i].dirDetYaw = srcFace->fcDet[i].dirDetYaw ; + facesRec [ 0 ].fcDet[i].dirDetConf = srcFace->fcDet[i].dirDetConf ; + facesRec [ 0 ].fcDet[i].frDetID = srcFace->fcDet[i].frDetID ; + facesRec [ 0 ].fcDet[i].frDetConf = srcFace->fcDet[i].frDetConf ; + facesRec [ 0 ].fcDet[i].frStatus = STB_STATUS_NO_DATA ; + + } + +} + + +/*---------------------------------------------------------------------*/ +// FrStbFaceEasy +/*---------------------------------------------------------------------*/ +void +FrStbFaceEasy + ( + STB_FR_RES* peRes , + STB_FR_DET* peRec , + STB_INT32 dirThr , + STB_INT32 dirUDMax , + STB_INT32 dirUDMin , + STB_INT32 dirLRMax , + STB_INT32 dirLRMin , + STB_INT32 frmCnt , + STB_INT32 frmRatio + + + ) +{ + STB_INT32 i, t, k; + STB_INT32 trID; + STB_INT32 recCnt; + STB_INT32 recUID [STB_FR_BACK_MAX]; + STB_INT32 recConf [STB_FR_BACK_MAX]; + + STB_INT32 accUID [STB_FR_BACK_MAX]; + STB_INT32 accCnt [STB_FR_BACK_MAX]; + STB_INT32 accKind; + STB_INT32 tmpUID; + STB_INT32 tmpCnt; + STB_INT32 tmpConf; + STB_INT32 topUID; + STB_INT32 topCnt; + STB_STATUS preStatus ; + STB_INT32 preUID ; + STB_INT32 preConf ; + + + for( t = 0; t < STB_FR_BACK_MAX ; t++) + { + recUID [t] = STB_FR_INVALID_UID; + recConf [t] = 0; + accUID [t] = STB_FR_INVALID_UID; + accCnt [t] = 0; + } + + + /*Checking the past data here, fill in all peRes.*/ + /*do stabilization processing each tracking person*/ + + peRes->frCnt = peRec[0].num; + for( k = 0; k < peRes->frCnt; k++) + { + /*Tracking person number in the through frame*/ + trID = peRec[0].fcDet[k].nTraID; + + // peRes Add ------------------------------------------------------------------------------------------------- + peRes->frFace[k].nTraID = trID; + + + //in case of unregistered album for present UID(no album files) + if( peRec[0].fcDet[k].frDetID == STB_ERR_FR_NOALBUM ) + { + peRes->frFace[k].frRecog.value = STB_ERR_FR_NOALBUM ; + peRes->frFace[k].frRecog.status = STB_STATUS_NO_DATA ; + peRes->frFace[k].frRecog.conf = STB_CONF_NO_DATA ; + peRec[0].fcDet[k].frDetID = STB_ERR_FR_NOALBUM ; + peRec[0].fcDet[k].frStatus = STB_STATUS_NO_DATA ; + peRec[0].fcDet[k].frDetConf = STB_CONF_NO_DATA ; + continue; + } + + // preStatus ------------------------------------------------------------------------------------------------- + preStatus = STB_STATUS_NO_DATA ; + preUID = STB_FR_INVALID_UID ; + preConf = 0 ; + for( i = 0; i < peRec[1].num ; i++) + { + if( peRec[1].fcDet[i].nTraID == trID ) + { + preUID = peRec[1].fcDet[i].frDetID ; + preStatus = peRec[1].fcDet[i].frStatus ; + preConf = peRec[1].fcDet[i].frDetConf ; + break; + } + } + + + // ------------------------------------------------------------------------------------------------- + // ------------------------------------------------------------------------------------------------- + if ( preStatus == STB_STATUS_NO_DATA //stabilization impossible: no data of the relevant people + || preStatus == STB_STATUS_CALCULATING //during stabilization : a number of data for relevant people aren't enough(a number of frames that relevant people are taken) + ) + { + // ------------------------------------------------------------------------------------------------- + //Setting "recUID" to past data of Tracking ID(trID) : (Up to "frmCnt") + // ------------------------------------------------------------------------------------------------- + recCnt = 0; + for( t = 0; t < STB_FR_BACK_MAX ; t++) //previous t frame + { + for( i = 0; i < peRec[t].num ; i++) //a number of tracking people(previous t frame) + { + if( + peRec [ t ].fcDet[i].nTraID == trID //the same tracking number + && peRec [ t ].fcDet[i].nDetID >= 0 //not lost + && peRec [ t ].fcDet[i].dirDetConf >= dirThr // Face angle : confidence + && peRec [ t ].fcDet[i].dirDetPitch >= dirUDMin // Face angle : pitch + && peRec [ t ].fcDet[i].dirDetPitch <= dirUDMax // Face angle : pitch + && peRec [ t ].fcDet[i].dirDetYaw >= dirLRMin // Face angle : yaw + && peRec [ t ].fcDet[i].dirDetYaw <= dirLRMax // Face angle : yaw + && peRec [ t ].fcDet[i].frDetID != STB_ERR_FR_CANNOT //Recognition impossible + && peRec [ t ].fcDet[i].frDetID != STB_ERR_FR_NOALBUM // Not-registered in Album + ) + { + recUID [ recCnt ] = peRec [ t ].fcDet[ i ].frDetID ; + recConf[ recCnt ] = peRec [ t ].fcDet[ i ].frDetConf; + recCnt++; + break; + } + } + if( recCnt == frmCnt ) + { + break ;//Maximum number is frmCnt + } + } + // ------------------------------------------------------------------------------------------------- + // tmpConf + // ------------------------------------------------------------------------------------------------- + tmpConf = 0; + for( i = 0 ; i < recCnt ; i++) + { + tmpConf += recConf[ i ]; + } + if( recCnt > 0 ) + { + tmpConf /= recCnt; + }else + { + tmpConf = 0 ; + } + // ------------------------------------------------------------------------------------------------- + //Create a cumulative frequency distribution of recUID and set it to accUID [accKind] accCnt [accKind]. + //AccCnt [i] pieces of data (in the past) determined to be "accUID [i]". + // ------------------------------------------------------------------------------------------------- + accKind = 0; + for(;;) + { + tmpUID = STB_FR_INVALID_UID; + for( i = 0 ; i < recCnt ; i++) + { + if( recUID[ i ] != STB_FR_INVALID_UID ) + { + tmpUID = recUID[ i ]; + break; + } + } + if( tmpUID == STB_FR_INVALID_UID ) + { + break; + } + tmpCnt = 0; + for( i = 0 ; i < recCnt ; i++) + { + if( recUID[ i ] == tmpUID ) + { + recUID[ i ] = STB_FR_INVALID_UID ; + tmpCnt++; + } + } + accUID[accKind] = tmpUID; + accCnt[accKind] = tmpCnt; + accKind++; + } + // ------------------------------------------------------------------------------------------------- + //Find the ID whose frequency is the maximum from the cumulative frequency distribution and set it to topUID. + // ------------------------------------------------------------------------------------------------- + topUID = STB_FR_INVALID_UID ; + topCnt = 0 ; + for( i = 0 ; i < accKind ; i++) + { + if( topCnt < accCnt[i] ) + { + topCnt = accCnt[i] ; + topUID = accUID[i] ; + } + } + if( topUID == STB_FR_INVALID_UID ) + { + peRes->frFace[k].frRecog.value = STB_STATUS_NO_DATA ; + peRes->frFace[k].frRecog.conf = STB_CONF_NO_DATA ; + peRes->frFace[k].frRecog.status = STB_STATUS_NO_DATA;//during stabilization : a number of data for relevant people aren't enough(a number of frames that relevant people are taken) + peRec[0].fcDet[k].frStatus = STB_STATUS_NO_DATA; + }else + { + if( topCnt < frmCnt * frmRatio / 100 ) + { + peRes->frFace[k].frRecog.value = topUID ; + peRes->frFace[k].frRecog.conf = STB_CONF_NO_DATA ; + peRes->frFace[k].frRecog.status = STB_STATUS_CALCULATING;//during stabilization : a number of data for relevant people aren't enough(a number of frames that relevant people are taken) + peRec[0].fcDet[k].frStatus = STB_STATUS_CALCULATING; + }else + { + peRes->frFace[k].frRecog.value = topUID ; + peRes->frFace[k].frRecog.conf = tmpConf ; + peRes->frFace[k].frRecog.status = STB_STATUS_COMPLETE ;//Just after stabilization : The state immediately after the number of data of the relevant person is sufficient and fixed. When creating an entry log, it is better to log data immediately after stabilization. + peRec[0].fcDet[k].frDetID = topUID ; + peRec[0].fcDet[k].frStatus = STB_STATUS_COMPLETE ; + peRec[0].fcDet[k].frDetConf = tmpConf ; + } + } + }else if ( preStatus == STB_STATUS_COMPLETE //Just after stabilization + || preStatus == STB_STATUS_FIXED //already stabilized + ) + { + peRes->frFace[k].frRecog.value = preUID ; + peRes->frFace[k].frRecog.status = STB_STATUS_FIXED ; + peRes->frFace[k].frRecog.conf = preConf; + peRec[0].fcDet[k].frDetID = preUID ; + peRec[0].fcDet[k].frStatus = STB_STATUS_FIXED ; + peRec[0].fcDet[k].frDetConf = preConf; + + } + + + } +} +/*---------------------------------------------------------------------*/ +// StbFrExec +/*---------------------------------------------------------------------*/ +int StbFrExec ( FRHANDLE handle ) +{ + + int retVal = 0 ; + + /* Face --------------------------------------*/ + FrSlideFacesRec ( handle->frDetRec );//Shift the time series of past data before stabilization. + FrCurFaces ( handle->frDetRec , + &(handle->frDet) );//Setting "present data before the stabilization" to past data before the stabilization. + + FrStbFaceEasy ( &(handle->frRes) , + handle->frDetRec , + handle->frFaceDirThr , + handle->frFaceDirUDMax , + handle->frFaceDirUDMin , + handle->frFaceDirLRMax , + handle->frFaceDirLRMin , + handle->frFrameCount , + handle->frFrameRatio );//Calculate "current data after stabilization" from "past data before stabilization". + + + + return retVal; +} + + + diff --git a/src/b5t007001/stblib/src/STB_FaceRecognition/STBFrAPI.h b/src/b5t007001/stblib/src/STB_FaceRecognition/STBFrAPI.h new file mode 100644 index 00000000..bd818dc3 --- /dev/null +++ b/src/b5t007001/stblib/src/STB_FaceRecognition/STBFrAPI.h @@ -0,0 +1,22 @@ +/*---------------------------------------------------------------------------*/ +/* Copyright(C) 2017 OMRON Corporation */ +/* */ +/* Licensed under the Apache License, Version 2.0 (the "License"); */ +/* you may not use this file except in compliance with the License. */ +/* You may obtain a copy of the License at */ +/* */ +/* http://www.apache.org/licenses/LICENSE-2.0 */ +/* */ +/* Unless required by applicable law or agreed to in writing, software */ +/* distributed under the License is distributed on an "AS IS" BASIS, */ +/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */ +/* See the License for the specific language governing permissions and */ +/* limitations under the License. */ +/*---------------------------------------------------------------------------*/ + +#include "FrInterface.h" + +int StbFrExec ( FRHANDLE handle ); + + + diff --git a/src/b5t007001/stblib/src/STB_FaceRecognition/STBFrValidValue.c b/src/b5t007001/stblib/src/STB_FaceRecognition/STBFrValidValue.c new file mode 100644 index 00000000..7a68a48d --- /dev/null +++ b/src/b5t007001/stblib/src/STB_FaceRecognition/STBFrValidValue.c @@ -0,0 +1,51 @@ +/*---------------------------------------------------------------------------*/ +/* Copyright(C) 2017 OMRON Corporation */ +/* */ +/* Licensed under the Apache License, Version 2.0 (the "License"); */ +/* you may not use this file except in compliance with the License. */ +/* You may obtain a copy of the License at */ +/* */ +/* http://www.apache.org/licenses/LICENSE-2.0 */ +/* */ +/* Unless required by applicable law or agreed to in writing, software */ +/* distributed under the License is distributed on an "AS IS" BASIS, */ +/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */ +/* See the License for the specific language governing permissions and */ +/* limitations under the License. */ +/*---------------------------------------------------------------------------*/ + +#include "STBFrValidValue.h" + +/*Value range check*/ +#define IS_OUT_RANGE( val , min , max ) ( ( (val) < (min) ) || ( (max) < (val) ) ) +#define IS_OUT_VALUE( val , min , max , accept ) ( IS_OUT_RANGE( val , min , max ) && ( (val) != (accept) ) ) +#define IS_OUT_FR_UID( val , min , max , acceptA , acceptB , acceptC ) ( IS_OUT_RANGE( val , min , max ) && ( (val) != (acceptA) ) && ( (val) != (acceptB) ) && ( (val) != (acceptC) ) ) +#define IS_OUT_FR_SCORE( val , min , max , acceptA , acceptB ) ( IS_OUT_RANGE( val , min , max ) && ( (val) != (acceptA) ) && ( (val) != (acceptB) ) ) + +/*------------------------------------------------------------------------------------------------------------------*/ +/* STB_IsValidValue */ +/*------------------------------------------------------------------------------------------------------------------*/ +STB_INT32 STB_FrIsValidValue(const STB_FR_DET *input) +{ + STB_INT32 i ; + + for( i = 0 ; i < input->num ; i++) + { + + if( IS_OUT_VALUE( input->fcDet[i].dirDetYaw , STB_FACE_DIR_LR_MIN , STB_FACE_DIR_LR_MAX , STB_ERR_DIR_CANNOT ) ){ return STB_FALSE;} + if( IS_OUT_VALUE( input->fcDet[i].dirDetPitch , STB_FACE_DIR_UD_MIN , STB_FACE_DIR_UD_MAX , STB_ERR_DIR_CANNOT ) ){ return STB_FALSE;} + if( IS_OUT_VALUE( input->fcDet[i].dirDetRoll , STB_FACE_DIR_ROLL_MIN , STB_FACE_DIR_ROLL_MAX , STB_ERR_DIR_CANNOT ) ){ return STB_FALSE;} + if( IS_OUT_VALUE( input->fcDet[i].dirDetConf , STB_FACE_DIR_CONF_MIN , STB_FACE_DIR_CONF_MAX , STB_ERR_PE_CANNOT ) ){ return STB_FALSE;} + + } + + for( i = 0 ; i < input->num ; i++) + { + if( IS_OUT_FR_UID( input->fcDet[i].frDetID , STB_FACE_FR_UID_MIN , STB_FACE_FR_UID_MAX ,STB_ERR_FR_CANNOT ,STB_ERR_FR_NOID ,STB_ERR_FR_NOALBUM ) ){ return STB_FALSE;} + if( IS_OUT_FR_SCORE( input->fcDet[i].frDetConf , STB_FACE_FR_SCORE_MIN , STB_FACE_FR_SCORE_MAX ,STB_ERR_FR_CANNOT ,STB_ERR_FR_NOALBUM) ){ return STB_FALSE;} + } + + + + return STB_TRUE; +} \ No newline at end of file diff --git a/src/b5t007001/stblib/src/STB_FaceRecognition/STBFrValidValue.h b/src/b5t007001/stblib/src/STB_FaceRecognition/STBFrValidValue.h new file mode 100644 index 00000000..c4abc657 --- /dev/null +++ b/src/b5t007001/stblib/src/STB_FaceRecognition/STBFrValidValue.h @@ -0,0 +1,97 @@ +/*---------------------------------------------------------------------------*/ +/* Copyright(C) 2017 OMRON Corporation */ +/* */ +/* Licensed under the Apache License, Version 2.0 (the "License"); */ +/* you may not use this file except in compliance with the License. */ +/* You may obtain a copy of the License at */ +/* */ +/* http://www.apache.org/licenses/LICENSE-2.0 */ +/* */ +/* Unless required by applicable law or agreed to in writing, software */ +/* distributed under the License is distributed on an "AS IS" BASIS, */ +/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */ +/* See the License for the specific language governing permissions and */ +/* limitations under the License. */ +/*---------------------------------------------------------------------------*/ + +#ifndef STBFRVALIDVALUE_H__ +#define STBFRVALIDVALUE_H__ + + +#include "STBCommonDef.h" +#include "STBCommonType.h" +#include "STBFrTypedef.h" + + +/*-------------------------------------------------------------------*/ +/*Threshold for checking input value*/ +/*-------------------------------------------------------------------*/ +#define STB_BODY_CNT_MIN 0 // body +#define STB_BODY_CNT_MAX 35 +#define STB_BODY_XY_MIN 0 +#define STB_BODY_XY_MAX 8191 +#define STB_BODY_SIZE_MIN 20 +#define STB_BODY_SIZE_MAX 8192 +#define STB_BODY_CONF_MIN 0 +#define STB_BODY_CONF_MAX 1000 +#define STB_FACE_CNT_MIN 0 // face +#define STB_FACE_CNT_MAX 35 +#define STB_FACE_XY_MIN 0 +#define STB_FACE_XY_MAX 8191 +#define STB_FACE_SIZE_MIN 20 +#define STB_FACE_SIZE_MAX 8192 +#define STB_FACE_CONF_MIN 0 +#define STB_FACE_CONF_MAX 1000 +#define STB_FACE_DIR_LR_MIN -180 +#define STB_FACE_DIR_LR_MAX 179 +#define STB_FACE_DIR_UD_MIN -180 +#define STB_FACE_DIR_UD_MAX 179 +#define STB_FACE_DIR_ROLL_MIN -180 +#define STB_FACE_DIR_ROLL_MAX 179 +#define STB_FACE_DIR_CONF_MIN 0 +#define STB_FACE_DIR_CONF_MAX 1000 +#define STB_FACE_AGE_VAL_MIN 0 +#define STB_FACE_AGE_VAL_MAX 75 +#define STB_FACE_AGE_CONF_MIN 0 +#define STB_FACE_AGE_CONF_MAX 1000 +#define STB_FACE_GEN_VAL_MIN 0 +#define STB_FACE_GEN_VAL_MAX 1 +#define STB_FACE_GEN_CONF_MIN 0 +#define STB_FACE_GEN_CONF_MAX 1000 +#define STB_FACE_GAZE_LR_MIN -90 +#define STB_FACE_GAZE_LR_MAX 90 +#define STB_FACE_GAZE_UD_MIN -90 +#define STB_FACE_GAZE_UD_MAX 90 +#define STB_FACE_BLI_L_MIN 1 +#define STB_FACE_BLI_L_MAX 1000 +#define STB_FACE_BLI_R_MIN 1 +#define STB_FACE_BLI_R_MAX 1000 +#define STB_FACE_EXP_SCORE_MIN 0 +#define STB_FACE_EXP_SCORE_MAX 100 /* not 1000 */ +#define STB_FACE_EXP_DEG_MIN -100 +#define STB_FACE_EXP_DEG_MAX 100 +#define STB_FACE_FR_UID_MIN 0 +#define STB_FACE_FR_UID_MAX 499 +#define STB_FACE_FR_SCORE_MIN 0 +#define STB_FACE_FR_SCORE_MAX 1000 + +/*-------------------------------------------------------------------*/ +/*Permitted input value*/ +/*-------------------------------------------------------------------*/ +#define STB_ERR_PE_CANNOT -128 /*Estimation is not possible.*/ +#define STB_ERR_FR_CANNOT -128 /*Recognition impossible*/ +#define STB_ERR_FR_NOID -1 /*No corresponding ID*/ +#define STB_ERR_FR_NOALBUM -127 /*Not-registered in Album*/ + +/*-------------------------------------------------------------------*/ +/*For collaboration with child library*/ +/*-------------------------------------------------------------------*/ +#define STB_ERR_DIR_CANNOT -256 /*Unable to angle estimation*/ + +/*-------------------------------------------------------------------*/ +/* Func */ +/*-------------------------------------------------------------------*/ +STB_INT32 STB_FrIsValidValue(const STB_FR_DET *input); + +#endif /* COMMONDEF_H__ */ + diff --git a/src/b5t007001/stblib/src/STB_FaceRecognition/SdkSTBFr.c b/src/b5t007001/stblib/src/STB_FaceRecognition/SdkSTBFr.c new file mode 100644 index 00000000..f5e25a0c --- /dev/null +++ b/src/b5t007001/stblib/src/STB_FaceRecognition/SdkSTBFr.c @@ -0,0 +1,87 @@ +/*---------------------------------------------------------------------------*/ +/* Copyright(C) 2017 OMRON Corporation */ +/* */ +/* Licensed under the Apache License, Version 2.0 (the "License"); */ +/* you may not use this file except in compliance with the License. */ +/* You may obtain a copy of the License at */ +/* */ +/* http://www.apache.org/licenses/LICENSE-2.0 */ +/* */ +/* Unless required by applicable law or agreed to in writing, software */ +/* distributed under the License is distributed on an "AS IS" BASIS, */ +/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */ +/* See the License for the specific language governing permissions and */ +/* limitations under the License. */ +/*---------------------------------------------------------------------------*/ + +#include "SdkSTBFr.h" +#include "FrInterface.h" + +/*This layer only defines the API function */ + +/*Create/Delete handle*/ +STB_FR_HANDLE STB_Fr_CreateHandle( const STB_INT32 nTraCntMax ){ + return (STB_FR_HANDLE)FrCreateHandle( nTraCntMax ); +} + +STB_INT32 STB_Fr_DeleteHandle(STB_FR_HANDLE handle){ + return FrDeleteHandle((FRHANDLE)handle); +} + +/*set frame information*/ +STB_INT32 STB_Fr_SetDetect(STB_FR_HANDLE handle,const STB_FR_DET *stbFrDet){ + return FrSetDetect((FRHANDLE)handle,stbFrDet); +} + +/*Main process execution*/ +STB_INT32 STB_Fr_Execute(STB_FR_HANDLE handle){ + return FrExecute((FRHANDLE)handle); +} + +/*get the result*/ +STB_INT32 STB_Fr_GetResult(STB_FR_HANDLE handle, STB_FR_RES* peResult){ + return FrGetResult((FRHANDLE)handle,peResult); +} + +STB_INT32 STB_Fr_Clear(STB_FR_HANDLE handle){ + return FrClear((FRHANDLE)handle); +} + +/* FaceDirMinMax */ +STB_INT32 STB_Fr_SetFaceDirMinMax ( STB_FR_HANDLE handle , STB_INT32 nMinUDAngle , STB_INT32 nMaxUDAngle ,STB_INT32 nMinLRAngle , STB_INT32 nMaxLRAngle ) +{ + return FrSetFaceDirMinMax((FRHANDLE)handle,nMinUDAngle,nMaxUDAngle,nMinLRAngle,nMaxLRAngle ); +} +STB_INT32 STB_Fr_GetFaceDirMinMax ( STB_FR_HANDLE handle , STB_INT32 *pnMinUDAngle , STB_INT32 *pnMaxUDAngle ,STB_INT32 *pnMinLRAngle, STB_INT32 *pnMaxLRAngle ) +{ + return FrGetFaceDirMinMax((FRHANDLE)handle,pnMinUDAngle,pnMaxUDAngle,pnMinLRAngle,pnMaxLRAngle ); +} + +/* FaceDirThreshold */ +STB_INT32 STB_Fr_SetFaceDirThreshold ( STB_FR_HANDLE handle , STB_INT32 threshold ) +{ + return FrSetFaceDirThreshold((FRHANDLE)handle,threshold ); +} +STB_INT32 STB_Fr_GetFaceDirThreshold ( STB_FR_HANDLE handle , STB_INT32* threshold ) +{ + return FrGetFaceDirThreshold((FRHANDLE)handle,threshold ); +} +/* FrameCount */ +STB_INT32 STB_Fr_SetFrameCount ( STB_FR_HANDLE handle , STB_INT32 nFrameCount ) +{ + return FrSetFrameCount((FRHANDLE)handle,nFrameCount ); +} +STB_INT32 STB_Fr_GetFrameCount ( STB_FR_HANDLE handle , STB_INT32* nFrameCount ) +{ + return FrGetFrameCount((FRHANDLE)handle,nFrameCount ); +} + +/* FrameShare */ +STB_INT32 STB_Fr_SetMinRatio ( STB_FR_HANDLE handle , STB_INT32 nMinRatio ) +{ + return FrSetMinRatio((FRHANDLE)handle,nMinRatio ); +} +STB_INT32 STB_Fr_GetMinRatio ( STB_FR_HANDLE handle , STB_INT32* nMinRatio ) +{ + return FrGetMinRatio((FRHANDLE)handle,nMinRatio ); +} diff --git a/src/b5t007001/stblib/src/STB_FaceRecognition/SdkSTBFr.h b/src/b5t007001/stblib/src/STB_FaceRecognition/SdkSTBFr.h new file mode 100644 index 00000000..14c1ced0 --- /dev/null +++ b/src/b5t007001/stblib/src/STB_FaceRecognition/SdkSTBFr.h @@ -0,0 +1,44 @@ +/*---------------------------------------------------------------------------*/ +/* Copyright(C) 2017 OMRON Corporation */ +/* */ +/* Licensed under the Apache License, Version 2.0 (the "License"); */ +/* you may not use this file except in compliance with the License. */ +/* You may obtain a copy of the License at */ +/* */ +/* http://www.apache.org/licenses/LICENSE-2.0 */ +/* */ +/* Unless required by applicable law or agreed to in writing, software */ +/* distributed under the License is distributed on an "AS IS" BASIS, */ +/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */ +/* See the License for the specific language governing permissions and */ +/* limitations under the License. */ +/*---------------------------------------------------------------------------*/ + +#if !defined( _SDK_STBFR_H_ ) +#define _SDK_STBFR_H_ +#include "STBFrTypedef.h" + +#if !defined( STB_DEF_FR_HANDLE ) + #define STB_DEF_FR_HANDLE + typedef VOID* STB_FR_HANDLE; +#endif + +STB_FR_HANDLE STB_Fr_CreateHandle ( const STB_INT32 nTraCntMax );/*Create/Delete handle*/ +STB_INT32 STB_Fr_DeleteHandle ( STB_FR_HANDLE handle );/*Create/Delete handle*/ +STB_INT32 STB_Fr_SetDetect ( STB_FR_HANDLE handle, const STB_FR_DET *stbFrDet );/*Frame information settings*/ +STB_INT32 STB_Fr_Execute ( STB_FR_HANDLE handle );/*Main process execution*/ +STB_INT32 STB_Fr_GetResult ( STB_FR_HANDLE handle, STB_FR_RES* frResult );/*Get result*/ +STB_INT32 STB_Fr_Clear ( STB_FR_HANDLE handle );/*Clear*/ + +/*parameter*/ +STB_INT32 STB_Fr_SetFaceDirMinMax ( STB_FR_HANDLE handle , STB_INT32 nMinUDAngle , STB_INT32 nMaxUDAngle ,STB_INT32 nMinLRAngle , STB_INT32 nMaxLRAngle );/* FaceDirMinMax */ +STB_INT32 STB_Fr_GetFaceDirMinMax ( STB_FR_HANDLE handle , STB_INT32 *pnMinUDAngle, STB_INT32 *pnMaxUDAngle ,STB_INT32 *pnMinLRAngle, STB_INT32 *pnMaxLRAngle); +STB_INT32 STB_Fr_Clear ( STB_FR_HANDLE handle );/* ClearID */ +STB_INT32 STB_Fr_SetFaceDirThreshold ( STB_FR_HANDLE handle , STB_INT32 threshold );/* FaceDirThreshold */ +STB_INT32 STB_Fr_GetFaceDirThreshold ( STB_FR_HANDLE handle , STB_INT32* threshold ); +STB_INT32 STB_Fr_SetFrameCount ( STB_FR_HANDLE handle , STB_INT32 nFrameCount ); +STB_INT32 STB_Fr_GetFrameCount ( STB_FR_HANDLE handle , STB_INT32* nFrameCount ); +STB_INT32 STB_Fr_SetMinRatio ( STB_FR_HANDLE handle , STB_INT32 nMinRatio ); +STB_INT32 STB_Fr_GetMinRatio ( STB_FR_HANDLE handle , STB_INT32* nMinRatio ); + +#endif diff --git a/src/b5t007001/stblib/src/STB_Property/PeInterface.c b/src/b5t007001/stblib/src/STB_Property/PeInterface.c new file mode 100644 index 00000000..6567b0d6 --- /dev/null +++ b/src/b5t007001/stblib/src/STB_Property/PeInterface.c @@ -0,0 +1,574 @@ +/*---------------------------------------------------------------------------*/ +/* Copyright(C) 2017 OMRON Corporation */ +/* */ +/* Licensed under the Apache License, Version 2.0 (the "License"); */ +/* you may not use this file except in compliance with the License. */ +/* You may obtain a copy of the License at */ +/* */ +/* http://www.apache.org/licenses/LICENSE-2.0 */ +/* */ +/* Unless required by applicable law or agreed to in writing, software */ +/* distributed under the License is distributed on an "AS IS" BASIS, */ +/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */ +/* See the License for the specific language governing permissions and */ +/* limitations under the License. */ +/*---------------------------------------------------------------------------*/ + +#include "PeInterface.h" +#include "STBPeAPI.h" + +/*Value range check*/ +#define ISVALID_RANGE( val , min , max ) ( ( (min) <= (val) ) && ( (val) <= (max) ) ) + +/*--------------------------------------------------------------------- +---------------------------------------------------------------------*/ +/*error check*/ +/*--------------------------------------------------------------------- +---------------------------------------------------------------------*/ +static STB_INT32 PeIsValidValue( + const STB_INT32 nValue , + const STB_INT32 nLimitMin , + const STB_INT32 nLimitMax ) +{ + STB_INT32 nRet; + for( nRet = STB_ERR_INVALIDPARAM; nRet != STB_NORMAL; nRet = STB_NORMAL ){ + if( ! ISVALID_RANGE( nValue , nLimitMin , nLimitMax ) ){ break; } + } + return nRet; +} +/*--------------------------------------------------------------------- +---------------------------------------------------------------------*/ +static STB_INT32 PeIsValidPointer( const VOID* pPointer ) +{ + STB_INT32 nRet; + for( nRet = STB_ERR_INVALIDPARAM; nRet != STB_NORMAL; nRet = STB_NORMAL ){ + if( NULL == pPointer ){ break; } + } + return nRet; +} + +/*------------------------------------------------------------------------------------------------------------------*/ +/* PeCalcPeSize */ +/*------------------------------------------------------------------------------------------------------------------*/ +STB_UINT32 PeCalcPeSize ( STB_UINT32 nTraCntMax ) +{ + STB_UINT32 retVal ; + + retVal = 0 ; + + retVal += 100 ;///Margin : alignment + + + + retVal += sizeof( FACE_DET ) * nTraCntMax ; // peDet.fcDet + retVal += sizeof( STB_PE_DET ) * STB_PE_BACK_MAX ; // peDetRec + retVal += sizeof( FACE_DET ) * nTraCntMax * STB_PE_BACK_MAX; // handle->peDetRec[t].fcDet + retVal += sizeof( STB_PE_FACE ) * nTraCntMax ; // peRes.peFace + retVal += sizeof( STBExecFlg ) ; // execFlg + + return retVal; +} +/*------------------------------------------------------------------------------------------------------------------*/ +/* PeSharePeSize */ +/*------------------------------------------------------------------------------------------------------------------*/ +void PeSharePeSize ( PEHANDLE handle ) +{ + + STB_UINT32 t; + STB_INT8 *stbPtr = handle->pePtr ; + STB_UINT32 nTraCntMax = handle->peCntMax; + + handle->peDet.fcDet = ( FACE_DET* ) stbPtr; stbPtr += ( sizeof( FACE_DET ) * nTraCntMax ); + handle->peDetRec = ( STB_PE_DET* ) stbPtr; stbPtr += ( sizeof( STB_PE_DET ) * STB_PE_BACK_MAX); + for( t = 0 ; t < STB_PE_BACK_MAX ; t++ ) + { + handle->peDetRec[t].fcDet = ( FACE_DET* ) stbPtr; stbPtr += ( sizeof( FACE_DET ) * nTraCntMax ); + } + handle->peRes.peFace = ( STB_PE_FACE* ) stbPtr; stbPtr += ( sizeof( STB_PE_FACE) * nTraCntMax ); + handle->execFlg = ( STBExecFlg* ) stbPtr; stbPtr += ( sizeof( STBExecFlg ) ); + +} +/*--------------------------------------------------------------------- +---------------------------------------------------------------------*/ +/*Create handle*/ +PEHANDLE PeCreateHandle( const STBExecFlg* execFlg ,const STB_INT32 nTraCntMax ){ + + PEHANDLE handle; + STB_INT32 t , i ,j; + STB_INT32 tmpVal ; + STB_INT32 nRet ; + + nRet = PeIsValidPointer(execFlg); + if(nRet != STB_NORMAL) + { + return NULL; + } + + if( nTraCntMax < 1 || STB_PE_TRA_CNT_MAX < nTraCntMax ) + { + return NULL; + } + + + + /*do handle's Malloc here*/ + handle = ( PEHANDLE )malloc( sizeof(*handle) ); + if(handle == NULL) + { + return NULL; + } + + /*initial value---------------------------------------------------------------------*/ + handle->peFaceDirUDMin = STB_PE_DIR_MIN_UD_INI;//The face on top/down allowable range min. + handle->peFaceDirUDMax = STB_PE_DIR_MAX_UD_INI;//The face on top/down allowable range max. + handle->peFaceDirLRMin = STB_PE_DIR_MIN_LR_INI;//The face on left /right side allowable range min. + handle->peFaceDirLRMax = STB_PE_DIR_MAX_LR_INI;//The face on left /right side allowable range max. + handle->peFaceDirThr = STB_PE_DIR_THR_INI ;//If the confidence of Face direction estimation doesn't exceed the reference value, the recognition result isn't trusted. + handle->peFrameCount = STB_PE_FRAME_CNT_INI ; + handle->peCntMax = nTraCntMax ;//Maximum number of tracking people + handle->pePtr = NULL; + handle->peDet.num = 0; + handle->peDet.fcDet = NULL; + handle->peDetRec = NULL; + handle->peRes.peCnt = 0; + handle->peRes.peFace = NULL; + handle->execFlg = NULL; + + tmpVal = PeCalcPeSize ( nTraCntMax ); /*calculate necessary amount in the Pe handle*/ + handle->pePtr = NULL; + handle->pePtr = ( STB_INT8 * )malloc( tmpVal ); /*keeping necessary amount in the Pe handle*/ + if( handle->pePtr == NULL ) + { + free ( handle->pePtr ); + free ( handle ); + return NULL; + } + + /*Malloc-area is allocated to things that need Malloc in TR handle*/ + PeSharePeSize ( handle ); + + for( t = 0 ; t < STB_PE_BACK_MAX ; t++ ) + { + handle->peDetRec [ t ].num = 0; + for( i = 0 ; i < handle->peCntMax ; i++ ) + { + handle->peDetRec[t].fcDet[i].nDetID = STB_STATUS_NO_DATA ; + handle->peDetRec[t].fcDet[i].nTraID = STB_STATUS_NO_DATA ; + handle->peDetRec[t].fcDet[i].dirDetRoll = STB_STATUS_NO_DATA ; + handle->peDetRec[t].fcDet[i].dirDetPitch = STB_STATUS_NO_DATA ; + handle->peDetRec[t].fcDet[i].dirDetYaw = STB_STATUS_NO_DATA ; + handle->peDetRec[t].fcDet[i].dirDetConf = STB_STATUS_NO_DATA ; + handle->peDetRec[t].fcDet[i].ageDetVal = STB_STATUS_NO_DATA ; + handle->peDetRec[t].fcDet[i].ageStatus = STB_STATUS_NO_DATA ; + handle->peDetRec[t].fcDet[i].ageDetConf = STB_STATUS_NO_DATA ; + handle->peDetRec[t].fcDet[i].genDetVal = STB_STATUS_NO_DATA ; + handle->peDetRec[t].fcDet[i].genStatus = STB_STATUS_NO_DATA ; + handle->peDetRec[t].fcDet[i].genDetConf = STB_STATUS_NO_DATA ; + handle->peDetRec[t].fcDet[i].gazDetLR = STB_STATUS_NO_DATA ; + handle->peDetRec[t].fcDet[i].gazDetUD = STB_STATUS_NO_DATA ; + handle->peDetRec[t].fcDet[i].bliDetL = STB_STATUS_NO_DATA ; + handle->peDetRec[t].fcDet[i].bliDetR = STB_STATUS_NO_DATA ; + + handle->peDetRec[t].fcDet[i].expDetConf = STB_STATUS_NO_DATA ; + for( j = 0 ; j < STB_EX_MAX ; j++) + { + handle->peDetRec[t].fcDet[i].expDetVal[ j ] = STB_STATUS_NO_DATA; + } + } + } + + handle->execFlg->pet = execFlg->pet ; + handle->execFlg->hand = execFlg->hand ; + handle->execFlg->bodyTr = execFlg->bodyTr ; + handle->execFlg->faceTr = execFlg->faceTr ; + handle->execFlg->gen = execFlg->gen ; + handle->execFlg->age = execFlg->age ; + handle->execFlg->fr = execFlg->fr ; + handle->execFlg->exp = execFlg->exp ; + handle->execFlg->gaz = execFlg->gaz ; + handle->execFlg->dir = execFlg->dir ; + handle->execFlg->bli = execFlg->bli ; + + + return handle; +} + +/*--------------------------------------------------------------------- +---------------------------------------------------------------------*/ +/*Delete handle*/ +STB_INT32 PeDeleteHandle(PEHANDLE handle){ + STB_INT32 nRet; + /*NULL check*/ + nRet = PeIsValidPointer(handle); + if(nRet != STB_NORMAL){ + return STB_ERR_NOHANDLE; + } + + free ( handle->pePtr ); + free ( handle ); + + return STB_NORMAL; +} + +/*--------------------------------------------------------------------- +---------------------------------------------------------------------*/ +/*Set the result*/ +STB_INT32 PeSetDetect(PEHANDLE handle,const STB_PE_DET *stbPeDet){ + + STB_INT32 nRet; + STB_INT32 i,j; + + /*NULL check*/ + nRet = PeIsValidPointer(handle); + if(nRet != STB_NORMAL){ + return STB_ERR_NOHANDLE; + } + + nRet = PeIsValidPointer(stbPeDet); + if(nRet != STB_NORMAL){ + return nRet; + } + + /*Input value check*/ + nRet = STB_PeIsValidValue ( stbPeDet ,handle->execFlg ); + if(nRet != STB_TRUE) + { + return STB_ERR_INVALIDPARAM; + } + + + /*Set the received result to the handle*/ + /* Face */ + if( stbPeDet->num > handle->peCntMax ) + { + return STB_ERR_PROCESSCONDITION; + } + + + handle->peDet.num = stbPeDet->num; + for( i = 0 ; i < handle->peDet.num ; i++ ) + { + handle->peDet.fcDet[i].nDetID = stbPeDet->fcDet[i].nDetID ; + handle->peDet.fcDet[i].nTraID = stbPeDet->fcDet[i].nTraID ; + if( handle->execFlg->gen == STB_TRUE ) + { + handle->peDet.fcDet[i].genDetVal = stbPeDet->fcDet[i].genDetVal ; + handle->peDet.fcDet[i].genDetConf = stbPeDet->fcDet[i].genDetConf ; + handle->peDet.fcDet[i].genStatus = STB_STATUS_NO_DATA ; + } + if( handle->execFlg->age == STB_TRUE ) + { + handle->peDet.fcDet[i].ageDetVal = stbPeDet->fcDet[i].ageDetVal ; + handle->peDet.fcDet[i].ageDetConf = stbPeDet->fcDet[i].ageDetConf ; + handle->peDet.fcDet[i].ageStatus = STB_STATUS_NO_DATA ; + } + if( handle->execFlg->exp == STB_TRUE ) + { + handle->peDet.fcDet[i].expDetConf = stbPeDet->fcDet[i].expDetConf ; + for( j = 0 ; j < STB_EX_MAX ; j++) + { + handle->peDet.fcDet[i].expDetVal[ j ] = stbPeDet->fcDet[i].expDetVal[ j ]; + } + } + if( handle->execFlg->gaz == STB_TRUE ) + { + handle->peDet.fcDet[i].gazDetLR = stbPeDet->fcDet[i].gazDetLR ; + handle->peDet.fcDet[i].gazDetUD = stbPeDet->fcDet[i].gazDetUD ; + } + //if( handle->execFlg->dir == STB_TRUE )// dir is obligation. + //{ + handle->peDet.fcDet[i].dirDetRoll = stbPeDet->fcDet[i].dirDetRoll ; + handle->peDet.fcDet[i].dirDetPitch = stbPeDet->fcDet[i].dirDetPitch ; + handle->peDet.fcDet[i].dirDetYaw = stbPeDet->fcDet[i].dirDetYaw ; + handle->peDet.fcDet[i].dirDetConf = stbPeDet->fcDet[i].dirDetConf ; + //} + if( handle->execFlg->bli == STB_TRUE ) + { + handle->peDet.fcDet[i].bliDetL = stbPeDet->fcDet[i].bliDetL ; + handle->peDet.fcDet[i].bliDetR = stbPeDet->fcDet[i].bliDetR ; + } + } + + + return STB_NORMAL; +} +/*--------------------------------------------------------------------- +---------------------------------------------------------------------*/ +/*Main process execution*/ +STB_INT32 PeExecute(PEHANDLE handle){ + STB_INT32 nRet; + /*NULL check*/ + nRet = PeIsValidPointer(handle); + if(nRet != STB_NORMAL){ + return STB_ERR_NOHANDLE; + } + + /*Main processing here*/ + nRet = StbPeExec ( handle ); + + + return STB_NORMAL; +} +/*--------------------------------------------------------------------- +---------------------------------------------------------------------*/ +/*Get-Function of results*/ +STB_INT32 PeGetResult( PEHANDLE handle, STB_PE_RES* peResult){ + + STB_INT32 nRet; + STB_INT32 i; + + /*NULL check*/ + nRet = PeIsValidPointer(handle); + if(nRet != STB_NORMAL){ + return STB_ERR_NOHANDLE; + } + + nRet = PeIsValidPointer(peResult); + if(nRet != STB_NORMAL){ + return nRet; + } + + /*Get result from handle*/ + peResult->peCnt = handle->peRes.peCnt ; + for( i = 0 ; i < peResult->peCnt ; i++ ) + { + peResult->peFace[i].nTraID = handle->peRes.peFace[i].nTraID ; + peResult->peFace[i].gen.status = handle->peRes.peFace[i].gen.status ; + peResult->peFace[i].gen.value = handle->peRes.peFace[i].gen.value ; + peResult->peFace[i].gen.conf = handle->peRes.peFace[i].gen.conf ; + peResult->peFace[i].age.status = handle->peRes.peFace[i].age.status ; + peResult->peFace[i].age.value = handle->peRes.peFace[i].age.value ; + peResult->peFace[i].age.conf = handle->peRes.peFace[i].age.conf ; + peResult->peFace[i].exp.status = handle->peRes.peFace[i].exp.status ; + peResult->peFace[i].exp.value = handle->peRes.peFace[i].exp.value ; + peResult->peFace[i].exp.conf = handle->peRes.peFace[i].exp.conf ; + peResult->peFace[i].gaz.status = handle->peRes.peFace[i].gaz.status ; + peResult->peFace[i].gaz.LR = handle->peRes.peFace[i].gaz.LR ; + peResult->peFace[i].gaz.UD = handle->peRes.peFace[i].gaz.UD ; + peResult->peFace[i].gaz.conf = handle->peRes.peFace[i].gaz.conf ; + peResult->peFace[i].dir.status = handle->peRes.peFace[i].dir.status ; + peResult->peFace[i].dir.pitch = handle->peRes.peFace[i].dir.pitch ; + peResult->peFace[i].dir.roll = handle->peRes.peFace[i].dir.roll ; + peResult->peFace[i].dir.yaw = handle->peRes.peFace[i].dir.yaw ; + peResult->peFace[i].dir.conf = handle->peRes.peFace[i].dir.conf ; + peResult->peFace[i].bli.status = handle->peRes.peFace[i].bli.status ; + peResult->peFace[i].bli.ratioL = handle->peRes.peFace[i].bli.ratioL ; + peResult->peFace[i].bli.ratioR = handle->peRes.peFace[i].bli.ratioR ; + } + + + + return STB_NORMAL; +} +/*--------------------------------------------------------------------- +---------------------------------------------------------------------*/ +STB_INT32 PeSetFaceDirMinMax(PEHANDLE handle , STB_INT32 nMinUDAngle , STB_INT32 nMaxUDAngle ,STB_INT32 nMinLRAngle , STB_INT32 nMaxLRAngle ) +{ + + STB_INT32 nRet; + nRet = PeIsValidPointer(handle); + if(nRet != STB_NORMAL){ + return STB_ERR_NOHANDLE; + } + + if( nMinUDAngle < STB_PE_DIR_MIN_UD_MIN || STB_PE_DIR_MIN_UD_MAX < nMinUDAngle) + { + return STB_ERR_INVALIDPARAM; + } + if( nMaxUDAngle < STB_PE_DIR_MAX_UD_MIN || STB_PE_DIR_MAX_UD_MAX < nMaxUDAngle) + { + return STB_ERR_INVALIDPARAM; + } + if( nMaxUDAngle < nMinUDAngle) + { + return STB_ERR_INVALIDPARAM; + } + + + if( nMinLRAngle < STB_PE_DIR_MIN_LR_MIN || STB_PE_DIR_MIN_LR_MAX < nMinLRAngle) + { + return STB_ERR_INVALIDPARAM; + } + if( nMaxLRAngle < STB_PE_DIR_MAX_LR_MIN || STB_PE_DIR_MAX_LR_MAX < nMaxLRAngle) + { + return STB_ERR_INVALIDPARAM; + } + if( nMaxLRAngle < nMinLRAngle) + { + return STB_ERR_INVALIDPARAM; + } + + handle->peFaceDirUDMin = nMinUDAngle; + handle->peFaceDirUDMax = nMaxUDAngle; + handle->peFaceDirLRMin = nMinLRAngle; + handle->peFaceDirLRMax = nMaxLRAngle; + + + return STB_NORMAL; +} +/*--------------------------------------------------------------------- +---------------------------------------------------------------------*/ +STB_INT32 PeGetFaceDirMinMax(PEHANDLE handle ,STB_INT32 *pnMinUDAngle, STB_INT32 *pnMaxUDAngle ,STB_INT32 *pnMinLRAngle, STB_INT32 *pnMaxLRAngle ) +{ + STB_INT32 nRet; + nRet = PeIsValidPointer(handle); + if(nRet != STB_NORMAL){ + return STB_ERR_NOHANDLE; + } + nRet = PeIsValidPointer(pnMinUDAngle); + if(nRet != STB_NORMAL){ + return STB_ERR_INVALIDPARAM; + } + nRet = PeIsValidPointer(pnMaxUDAngle); + if(nRet != STB_NORMAL){ + return STB_ERR_INVALIDPARAM; + } + nRet = PeIsValidPointer(pnMinLRAngle); + if(nRet != STB_NORMAL){ + return STB_ERR_INVALIDPARAM; + } + nRet = PeIsValidPointer(pnMaxLRAngle); + if(nRet != STB_NORMAL){ + return STB_ERR_INVALIDPARAM; + } + + *pnMinUDAngle = handle->peFaceDirUDMin ; + *pnMaxUDAngle = handle->peFaceDirUDMax ; + + *pnMinLRAngle = handle->peFaceDirLRMin ; + *pnMaxLRAngle = handle->peFaceDirLRMax ; + + return STB_NORMAL; +} +/*--------------------------------------------------------------------- +---------------------------------------------------------------------*/ +STB_INT32 PeClear ( PEHANDLE handle ) +{ + //clear processing + STB_INT32 t , i ,j; + STB_INT32 nRet; + + /*NULL check*/ + nRet = PeIsValidPointer(handle); + if(nRet != STB_NORMAL){ + return STB_ERR_NOHANDLE; + } + + for( t = 0 ; t < STB_PE_BACK_MAX ; t++ ) + { + handle->peDetRec [ t ].num = 0; + for( i = 0 ; i < handle->peCntMax ; i++ ) + { + handle->peDetRec[t].fcDet[i].nDetID = STB_STATUS_NO_DATA ; + handle->peDetRec[t].fcDet[i].nTraID = STB_STATUS_NO_DATA ; + if( handle->execFlg->dir == STB_TRUE ) + { + handle->peDetRec[t].fcDet[i].dirDetRoll = STB_STATUS_NO_DATA ; + handle->peDetRec[t].fcDet[i].dirDetPitch = STB_STATUS_NO_DATA ; + handle->peDetRec[t].fcDet[i].dirDetYaw = STB_STATUS_NO_DATA ; + handle->peDetRec[t].fcDet[i].dirDetConf = STB_STATUS_NO_DATA ; + } + if( handle->execFlg->age == STB_TRUE ) + { + handle->peDetRec[t].fcDet[i].ageDetVal = STB_STATUS_NO_DATA ; + handle->peDetRec[t].fcDet[i].ageStatus = STB_STATUS_NO_DATA ; + handle->peDetRec[t].fcDet[i].ageDetConf = STB_STATUS_NO_DATA ; + } + if( handle->execFlg->gen == STB_TRUE ) + { + handle->peDetRec[t].fcDet[i].genDetVal = STB_STATUS_NO_DATA ; + handle->peDetRec[t].fcDet[i].genStatus = STB_STATUS_NO_DATA ; + handle->peDetRec[t].fcDet[i].genDetConf = STB_STATUS_NO_DATA ; + } + if( handle->execFlg->gaz == STB_TRUE ) + { + handle->peDetRec[t].fcDet[i].gazDetLR = STB_STATUS_NO_DATA ; + handle->peDetRec[t].fcDet[i].gazDetUD = STB_STATUS_NO_DATA ; + } + if( handle->execFlg->bli == STB_TRUE ) + { + handle->peDetRec[t].fcDet[i].bliDetL = STB_STATUS_NO_DATA ; + handle->peDetRec[t].fcDet[i].bliDetR = STB_STATUS_NO_DATA ; + } + if( handle->execFlg->exp == STB_TRUE ) + { + handle->peDetRec[t].fcDet[i].expDetConf = STB_STATUS_NO_DATA ; + for( j = 0 ; j < STB_EX_MAX ; j++) + { + handle->peDetRec[t].fcDet[i].expDetVal[j] = STB_STATUS_NO_DATA ; + } + } + } + } + + return STB_NORMAL; +} +/*--------------------------------------------------------------------- +---------------------------------------------------------------------*/ +STB_INT32 PeSetFaceDirThreshold(PEHANDLE handle , STB_INT32 threshold ) +{ + STB_INT32 nRet; + nRet = PeIsValidPointer(handle); + if(nRet != STB_NORMAL){ + return STB_ERR_NOHANDLE; + } + if( threshold < STB_PE_DIR_THR_MIN || STB_PE_DIR_THR_MAX < threshold ){ + return STB_ERR_INVALIDPARAM; + } + + handle->peFaceDirThr = threshold; + return STB_NORMAL; +} +/*--------------------------------------------------------------------- +---------------------------------------------------------------------*/ +STB_INT32 PeGetFaceDirThreshold(PEHANDLE handle , STB_INT32* threshold ) +{ + STB_INT32 nRet; + nRet = PeIsValidPointer(handle); + if(nRet != STB_NORMAL){ + return STB_ERR_NOHANDLE; + } + nRet = PeIsValidPointer(threshold); + if(nRet != STB_NORMAL){ + return STB_ERR_INVALIDPARAM; + } + + *threshold = handle->peFaceDirThr ; + return STB_NORMAL; +} +/*--------------------------------------------------------------------- +---------------------------------------------------------------------*/ +STB_INT32 PeSetFrameCount(PEHANDLE handle , STB_INT32 nFrameCount ) +{ + + STB_INT32 nRet; + nRet = PeIsValidPointer(handle); + if(nRet != STB_NORMAL){ + return STB_ERR_NOHANDLE; + } + + if( nFrameCount < 1 || nFrameCount > STB_PE_BACK_MAX ) + { + return STB_ERR_INVALIDPARAM; + } + + handle->peFrameCount = nFrameCount; + return STB_NORMAL; +} +/*--------------------------------------------------------------------- +---------------------------------------------------------------------*/ +STB_INT32 PeGetFrameCount(PEHANDLE handle , STB_INT32* nFrameCount ) +{ + STB_INT32 nRet; + nRet = PeIsValidPointer(handle); + if(nRet != STB_NORMAL){ + return STB_ERR_NOHANDLE; + } + nRet = PeIsValidPointer(nFrameCount); + if(nRet != STB_NORMAL){ + return STB_ERR_INVALIDPARAM; + } + + *nFrameCount = handle->peFrameCount ; + return STB_NORMAL; +} \ No newline at end of file diff --git a/src/b5t007001/stblib/src/STB_Property/PeInterface.h b/src/b5t007001/stblib/src/STB_Property/PeInterface.h new file mode 100644 index 00000000..c7ef72fe --- /dev/null +++ b/src/b5t007001/stblib/src/STB_Property/PeInterface.h @@ -0,0 +1,111 @@ +/*---------------------------------------------------------------------------*/ +/* Copyright(C) 2017 OMRON Corporation */ +/* */ +/* Licensed under the Apache License, Version 2.0 (the "License"); */ +/* you may not use this file except in compliance with the License. */ +/* You may obtain a copy of the License at */ +/* */ +/* http://www.apache.org/licenses/LICENSE-2.0 */ +/* */ +/* Unless required by applicable law or agreed to in writing, software */ +/* distributed under the License is distributed on an "AS IS" BASIS, */ +/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */ +/* See the License for the specific language governing permissions and */ +/* limitations under the License. */ +/*---------------------------------------------------------------------------*/ + +#if !defined( _INTERFACE_H_ ) +#define _INTERFACE_H_ +#include "STBPeTypedef.h" +#include "STBPeValidValue.h" + + +#ifdef __cplusplus +extern "C" { +#endif + +////////////////////////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////////// +/////////// Define ////////////// +////////////////////////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////////// + + +#define STB_PE_BACK_MAX 20 /* refer to past "STB_BACK_MAX" frames of results */ +#define STB_PE_EX_MAX 5 //A type of Facial expression + +#define STB_PE_TRA_CNT_MAX 35 + +#define STB_PE_DIR_MIN_UD_INI -15 +#define STB_PE_DIR_MIN_UD_MIN -90 +#define STB_PE_DIR_MIN_UD_MAX 90 + +#define STB_PE_DIR_MAX_UD_INI 20 +#define STB_PE_DIR_MAX_UD_MIN -90 +#define STB_PE_DIR_MAX_UD_MAX 90 + +#define STB_PE_DIR_MIN_LR_INI -30 +#define STB_PE_DIR_MIN_LR_MIN -90 +#define STB_PE_DIR_MIN_LR_MAX 90 + +#define STB_PE_DIR_MAX_LR_INI 30 +#define STB_PE_DIR_MAX_LR_MIN -90 +#define STB_PE_DIR_MAX_LR_MAX 90 + + +#define STB_PE_FRAME_CNT_INI 5 +#define STB_PE_FRAME_CNT_MIN 1 +#define STB_PE_FRAME_CNT_MAX 20 + +#define STB_PE_DIR_THR_INI 300 +#define STB_PE_DIR_THR_MIN 0 +#define STB_PE_DIR_THR_MAX 1000 + +////////////////////////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////////// +/////////// Struct ////////////// +////////////////////////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////////// +typedef struct tagPEHANDLE { + + STB_INT8 *pePtr ; + /* param */ + STB_INT32 peCntMax ;//Maximum number of tracking people + STB_INT32 peFaceDirUDMin ;//The face on top/down allowable range min. + STB_INT32 peFaceDirUDMax ;//The face on top/down allowable range max. + STB_INT32 peFaceDirLRMin ;//The face on left /right side allowable range min. + STB_INT32 peFaceDirLRMax ;//The face on left /right side allowable range max. + STB_INT32 peFaceDirThr ;//If the confidence of Face direction estimation doesn't exceed the reference value, the recognition result isn't trusted. + STB_INT32 peFrameCount ; + + /* PE_Face */ + STB_PE_DET peDet ;//Present data before the stabilization(input). + STB_PE_DET *peDetRec ;//past data before the stabilization + STB_PE_RES peRes ;//present data after the stabilization(output) + STBExecFlg *execFlg ; + +} *PEHANDLE; + +////////////////////////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////////// +/////////// Func ////////////// +////////////////////////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////////// +PEHANDLE PeCreateHandle ( const STBExecFlg* execFlg ,const STB_INT32 nTraCntMax); +STB_INT32 PeDeleteHandle ( PEHANDLE handle); +STB_INT32 PeSetDetect ( PEHANDLE handle,const STB_PE_DET *stbPeDet); +STB_INT32 PeExecute ( PEHANDLE handle); +STB_INT32 PeGetResult ( PEHANDLE handle , STB_PE_RES* peResult); +STB_INT32 PeSetFaceDirMinMax ( PEHANDLE handle , STB_INT32 nMinUDAngle , STB_INT32 nMaxUDAngle ,STB_INT32 nMinLRAngle , STB_INT32 nMaxLRAngle ); +STB_INT32 PeGetFaceDirMinMax ( PEHANDLE handle , STB_INT32 *pnMinUDAngle, STB_INT32 *pnMaxUDAngle ,STB_INT32 *pnMinLRAngle, STB_INT32 *pnMaxLRAngle ); +STB_INT32 PeClear ( PEHANDLE handle ); +STB_INT32 PeSetFaceDirThreshold ( PEHANDLE handle , STB_INT32 threshold ); +STB_INT32 PeGetFaceDirThreshold ( PEHANDLE handle , STB_INT32* threshold ); +STB_INT32 PeSetFrameCount ( PEHANDLE handle , STB_INT32 nFrameCount ); +STB_INT32 PeGetFrameCount ( PEHANDLE handle , STB_INT32* nFrameCount ); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/b5t007001/stblib/src/STB_Property/STBPeAPI.c b/src/b5t007001/stblib/src/STB_Property/STBPeAPI.c new file mode 100644 index 00000000..3dfdb5a8 --- /dev/null +++ b/src/b5t007001/stblib/src/STB_Property/STBPeAPI.c @@ -0,0 +1,647 @@ +/*---------------------------------------------------------------------------*/ +/* Copyright(C) 2017 OMRON Corporation */ +/* */ +/* Licensed under the Apache License, Version 2.0 (the "License"); */ +/* you may not use this file except in compliance with the License. */ +/* You may obtain a copy of the License at */ +/* */ +/* http://www.apache.org/licenses/LICENSE-2.0 */ +/* */ +/* Unless required by applicable law or agreed to in writing, software */ +/* distributed under the License is distributed on an "AS IS" BASIS, */ +/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */ +/* See the License for the specific language governing permissions and */ +/* limitations under the License. */ +/*---------------------------------------------------------------------------*/ + +#include "STBPeAPI.h" + + +/*---------------------------------------------------------------------*/ +// PeSlideFacesRec +/*---------------------------------------------------------------------*/ +void PeSlideFacesRec ( STB_PE_DET *facesRec , STBExecFlg *execFlg) +{ + STB_INT32 t , i ,j; + + for( t = STB_PE_BACK_MAX -2 ; t >= 0 ; t-- ) + { + facesRec [ t + 1 ].num = facesRec[ t + 0 ].num; + for( i = 0 ; i < facesRec [ t + 1 ].num ; i++ ) + { + facesRec[ t + 1 ].fcDet[i].nDetID = facesRec[ t ].fcDet[i].nDetID ; + facesRec[ t + 1 ].fcDet[i].nTraID = facesRec[ t ].fcDet[i].nTraID ; + if( execFlg->gen == STB_TRUE ) + { + facesRec[ t + 1 ].fcDet[i].genDetVal = facesRec[ t ].fcDet[i].genDetVal ; + facesRec[ t + 1 ].fcDet[i].genStatus = facesRec[ t ].fcDet[i].genStatus ; + facesRec[ t + 1 ].fcDet[i].genDetConf = facesRec[ t ].fcDet[i].genDetConf ; + } + if( execFlg->age == STB_TRUE ) + { + facesRec[ t + 1 ].fcDet[i].ageDetVal = facesRec[ t ].fcDet[i].ageDetVal ; + facesRec[ t + 1 ].fcDet[i].ageStatus = facesRec[ t ].fcDet[i].ageStatus ; + facesRec[ t + 1 ].fcDet[i].ageDetConf = facesRec[ t ].fcDet[i].ageDetConf ; + } + if( execFlg->exp == STB_TRUE ) + { + facesRec[ t + 1 ].fcDet[i].expDetConf = facesRec[ t ].fcDet[i].expDetConf ; + for( j = 0 ; j < STB_EX_MAX ; j++) + { + facesRec[ t + 1 ].fcDet[ i ].expDetVal[ j ] + = facesRec[ t + 0 ].fcDet[ i ].expDetVal[ j ]; + } + } + if( execFlg->gaz == STB_TRUE ) + { + facesRec[ t + 1 ].fcDet[i].gazDetLR = facesRec[ t ].fcDet[i].gazDetLR ; + facesRec[ t + 1 ].fcDet[i].gazDetUD = facesRec[ t ].fcDet[i].gazDetUD ; + } + //if( execFlg->dir == STB_TRUE ) + //{ + facesRec[ t + 1 ].fcDet[i].dirDetRoll = facesRec[ t ].fcDet[i].dirDetRoll ; + facesRec[ t + 1 ].fcDet[i].dirDetPitch = facesRec[ t ].fcDet[i].dirDetPitch; + facesRec[ t + 1 ].fcDet[i].dirDetYaw = facesRec[ t ].fcDet[i].dirDetYaw ; + facesRec[ t + 1 ].fcDet[i].dirDetConf = facesRec[ t ].fcDet[i].dirDetConf ; + //} + if( execFlg->bli == STB_TRUE ) + { + facesRec[ t + 1 ].fcDet[i].bliDetL = facesRec[ t ].fcDet[i].bliDetL ; + facesRec[ t + 1 ].fcDet[i].bliDetR = facesRec[ t ].fcDet[i].bliDetR ; + } + } + } + +} +/*---------------------------------------------------------------------*/ +// PeCurFaces +/*---------------------------------------------------------------------*/ +void PeCurFaces ( STB_PE_DET *facesRec , STB_PE_DET *srcFace ,STBExecFlg *execFlg) +{ + STB_INT32 i ,j; + + + facesRec [ 0 ].num = srcFace->num; + for( i = 0 ; i < facesRec [ 0 ].num ; i++ ) + { + facesRec[ 0 ].fcDet[ i ].nDetID = srcFace[ 0 ].fcDet[ i ].nDetID ; + facesRec[ 0 ].fcDet[ i ].nTraID = srcFace[ 0 ].fcDet[ i ].nTraID ; + if( execFlg->gen == STB_TRUE ) + { + facesRec[ 0 ].fcDet[ i ].genDetVal = srcFace[ 0 ].fcDet[ i ].genDetVal ; + facesRec[ 0 ].fcDet[ i ].genStatus = STB_STATUS_NO_DATA ; + facesRec[ 0 ].fcDet[ i ].genDetConf = srcFace[ 0 ].fcDet[ i ].genDetConf; + } + if( execFlg->age == STB_TRUE ) + { + facesRec[ 0 ].fcDet[ i ].ageDetVal = srcFace[ 0 ].fcDet[ i ].ageDetVal ; + facesRec[ 0 ].fcDet[ i ].ageStatus = STB_STATUS_NO_DATA ; + facesRec[ 0 ].fcDet[ i ].ageDetConf = srcFace[ 0 ].fcDet[ i ].ageDetConf; + } + if( execFlg->exp == STB_TRUE ) + { + facesRec[ 0 ].fcDet[ i ].expDetConf = srcFace[ 0 ].fcDet[ i ].expDetConf ; + for( j = 0 ; j < STB_EX_MAX ; j++) + { + facesRec[ 0 ].fcDet[ i ].expDetVal[ j] = srcFace[ 0 ].fcDet[ i ].expDetVal[ j]; + } + } + if( execFlg->gaz == STB_TRUE ) + { + facesRec[ 0 ].fcDet[ i ].gazDetLR = srcFace[ 0 ].fcDet[ i ].gazDetLR ; + facesRec[ 0 ].fcDet[ i ].gazDetUD = srcFace[ 0 ].fcDet[ i ].gazDetUD ; + } + //if( execFlg->dir == STB_TRUE ) + //{ + facesRec[ 0 ].fcDet[ i ].dirDetRoll = srcFace[ 0 ].fcDet[ i ].dirDetRoll ; + facesRec[ 0 ].fcDet[ i ].dirDetYaw = srcFace[ 0 ].fcDet[ i ].dirDetYaw ; + facesRec[ 0 ].fcDet[ i ].dirDetPitch = srcFace[ 0 ].fcDet[ i ].dirDetPitch ; + facesRec[ 0 ].fcDet[ i ].dirDetConf = srcFace[ 0 ].fcDet[ i ].dirDetConf ; + //} + if( execFlg->bli == STB_TRUE ) + { + facesRec[ 0 ].fcDet[ i ].bliDetL = srcFace[ 0 ].fcDet[ i ].bliDetL ; + facesRec[ 0 ].fcDet[ i ].bliDetR = srcFace[ 0 ].fcDet[ i ].bliDetR ; + } + } +} + +/*----------------------------------------------------------------------------------------------------*/ +/* PeExpressID */ +/*----------------------------------------------------------------------------------------------------*/ +STB_INT32 PeExpressID( STB_INT32* exp ) +{ + int i; + int tmpVal; + int retVal; + + retVal = 0; + tmpVal = 0; + for( i = 0 ; i < STB_EX_MAX ; i++) + { + if( tmpVal < exp[i] && exp[i] != STB_ERR_PE_CANNOT ) + { + tmpVal = exp[i]; + retVal = i; + } + } + return retVal; +} +/*---------------------------------------------------------------------*/ +// PeStbFaceEasy +/*---------------------------------------------------------------------*/ +void PeStbFaceEasy + ( + STB_PE_RES *peRes , + STB_PE_DET *peRec , + STB_INT32 dirThr , + STB_INT32 dirUDMax , + STB_INT32 dirUDMin , + STB_INT32 dirLRMax , + STB_INT32 dirLRMin , + STB_INT32 frmMax , + STBExecFlg *execFlg + ) +{ + + + /*Checking the past data here, fill in all peRes.*/ + STB_INT32 k ,t,i ; + STB_INT32 trID; + + STB_INT32 recCnt; + STB_INT32 recVal [STB_PE_BACK_MAX]; + STB_INT32 recConf [STB_PE_BACK_MAX]; + STB_INT32 tmpVal; + STB_INT32 tmpConf; + STB_INT32 expVal [STB_EX_MAX] = {0}; + + STB_STATUS preSAge ; + STB_STATUS preSGen ; + STB_INT32 preVAge ; + STB_INT32 preVGen ; + STB_INT32 preCAge ; + STB_INT32 preCGen ; + STB_STATUS tmpS ; + + + + for( t = 0; t < STB_PE_BACK_MAX ; t++) + { + recVal [t] = 0; + recConf[t] = 0; + } + + + /*do stabilization processing each tracking person*/ + peRes->peCnt = peRec[0].num ;//a number of tracking people(present) + for( k = 0; k < peRes->peCnt ; k++) + { + trID = peRec[0].fcDet[k].nTraID;/*Tracking person number in the through frame*/ + + + // peRes Add ------------------------------------------------------------------------------------------------- + peRes->peFace[k].nTraID = trID; + + + // preStatus ------------------------------------------------------------------------------------------------- + preSAge = STB_STATUS_NO_DATA ; + preSGen = STB_STATUS_NO_DATA ; + preVAge = 0 ; + preVGen = 0 ; + preCAge = 0 ; + preCGen = 0 ; + if( execFlg->age == STB_TRUE || execFlg->gen == STB_TRUE ) + { + for( i = 0; i < peRec[1].num ; i++) + { + if( peRec[1].fcDet[i].nTraID == trID ) + { + preSAge = peRec[1].fcDet[i].ageStatus ; + preSGen = peRec[1].fcDet[i].genStatus ; + preVAge = peRec[1].fcDet[i].ageDetVal ; + preVGen = peRec[1].fcDet[i].genDetVal ; + preCAge = peRec[1].fcDet[i].ageDetConf ; + preCGen = peRec[1].fcDet[i].genDetConf ; + break; + } + } + } + + // age ------------------------------------------------------------------------------------------------- + if( execFlg->age == STB_TRUE ) + { + if ( preSAge == STB_STATUS_NO_DATA //stabilization impossible: no data of the relevant people + || preSAge == STB_STATUS_CALCULATING //during stabilization : a number of data for relevant people aren't enough(a number of frames that relevant people are taken) + ) + { + recCnt = 0; + for( t = 0; t < STB_PE_BACK_MAX ; t++) //previous t frame + { + for( i = 0; i < peRec[t].num ; i++) //a number of tracking people(previous t frame) + { + if( + peRec[t].fcDet[i].nTraID == trID //the same tracking number + && peRec[t].fcDet[i].nDetID >= 0 //not lost + && peRec[t].fcDet[i].dirDetConf >= dirThr // Face angle : confidence + && peRec[t].fcDet[i].dirDetPitch >= dirUDMin // Face angle : pitch + && peRec[t].fcDet[i].dirDetPitch <= dirUDMax // Face angle : pitch + && peRec[t].fcDet[i].dirDetYaw >= dirLRMin // Face angle : yaw + && peRec[t].fcDet[i].dirDetYaw <= dirLRMax // Face angle : yaw + && peRec[t].fcDet[i].ageDetVal != STB_ERR_PE_CANNOT // + && peRec[t].fcDet[i].ageDetConf != STB_ERR_PE_CANNOT // + ) + { + recVal [ recCnt ] = peRec[ t ].fcDet[ i ].ageDetVal ; + recConf[ recCnt ] = peRec[ t ].fcDet[ i ].ageDetConf ; + recCnt++; + } + } + } + tmpS = STB_STATUS_NO_DATA; + if ( recCnt == 0 ) { tmpS = STB_STATUS_NO_DATA ; }//stabilization impossible + else if ( recCnt < frmMax ) { tmpS = STB_STATUS_CALCULATING; }//during stabilization + else if ( recCnt >= frmMax ) { tmpS = STB_STATUS_COMPLETE ; }//Just after stabilization + tmpVal = 0; + tmpConf = 0; + for( i = 0; i < recCnt ; i++ ) + { + tmpVal += recVal [ i ] ; + tmpConf += recConf[ i ] ; + } + if ( recCnt == 0 ) { recCnt = 1 ; } + tmpVal /= recCnt; + tmpConf /= recCnt; + peRes->peFace[k].age.value = tmpVal ; + peRes->peFace[k].age.conf = STB_CONF_NO_DATA ; + peRes->peFace[k].age.status = tmpS ; + peRec[0].fcDet[k].ageStatus = tmpS ; + if( tmpS == STB_STATUS_COMPLETE )//Just after stabilization + { + peRec[0].fcDet[k].ageDetVal = tmpVal ; + peRec[0].fcDet[k].ageDetConf = tmpConf ; + } + }else if ( preSAge == STB_STATUS_COMPLETE //Just after stabilization + || preSAge == STB_STATUS_FIXED //already stabilized + ) + { + peRes->peFace[k].age.value = preVAge ; + peRes->peFace[k].age.conf = preCAge; + peRes->peFace[k].age.status = STB_STATUS_FIXED ;//already stabilized + peRec[0].fcDet[k].ageDetVal = preVAge ; + peRec[0].fcDet[k].ageDetConf = preCAge ; + peRec[0].fcDet[k].ageStatus = STB_STATUS_FIXED ;//already stabilized + } + } + + + // gender ------------------------------------------------------------------------------------------------- + if( execFlg->gen == STB_TRUE ) + { + if ( preSGen == STB_STATUS_NO_DATA //stabilization impossible: no data of the relevant people + || preSGen == STB_STATUS_CALCULATING //during stabilization : a number of data for relevant people aren't enough(a number of frames that relevant people are taken) + ) + { + recCnt = 0; + for( t = 0; t < STB_PE_BACK_MAX ; t++) + { + for( i = 0; i < peRec[t].num ; i++) //a number of tracking people(previous t frame) + { + if( + peRec[t].fcDet[i].nTraID == trID //the same tracking number + && peRec[t].fcDet[i].nDetID >= 0 //not lost + && peRec[t].fcDet[i].dirDetConf >= dirThr // Face angle : confidence + && peRec[t].fcDet[i].dirDetPitch >= dirUDMin // Face angle : pitch + && peRec[t].fcDet[i].dirDetPitch <= dirUDMax // Face angle : pitch + && peRec[t].fcDet[i].dirDetYaw >= dirLRMin // Face angle : yaw + && peRec[t].fcDet[i].dirDetYaw <= dirLRMax // Face angle : yaw + && peRec[t].fcDet[i].genDetVal != STB_ERR_PE_CANNOT // + && peRec[t].fcDet[i].genDetConf != STB_ERR_PE_CANNOT // + ) + { + recVal [ recCnt ] = peRec[ t ].fcDet[ i ].genDetVal ;// 1:man 0:woman + recConf[ recCnt ] = peRec[ t ].fcDet[ i ].genDetConf; + recCnt++; + } + } + } + tmpS = STB_STATUS_NO_DATA; + if ( recCnt == 0 ) { tmpS = STB_STATUS_NO_DATA ; }//stabilization impossible + else if ( recCnt < frmMax ) { tmpS = STB_STATUS_CALCULATING; }//during stabilization + else if ( recCnt >= frmMax ) { tmpS = STB_STATUS_COMPLETE ; }//Just after stabilization + tmpVal = 0; + tmpConf = 0; + for( i = 0; i < recCnt ; i++ ) + { + tmpVal += recVal [ i ] ; + tmpConf += recConf[ i ] ; + } + if ( recCnt == 0 ) { recCnt = 1 ; } + tmpConf /= recCnt; + if ( tmpVal * 2 <= recCnt ) + { + peRes->peFace[k].gen.value = 0 ;// 1:man 0:woman + peRes->peFace[k].gen.status = tmpS ; + peRes->peFace[k].gen.conf = STB_CONF_NO_DATA ; + peRec[0].fcDet[k].genStatus = tmpS ; + if( tmpS == STB_STATUS_COMPLETE )//Just after stabilization + { + peRec[0].fcDet[k].genDetVal = 0 ; + peRec[0].fcDet[k].genDetConf = tmpConf ; + } + } + else + { + peRes->peFace[k].gen.value = 1 ;// 1:man 0:woman + peRes->peFace[k].gen.status = tmpS ; + peRes->peFace[k].gen.conf = STB_CONF_NO_DATA ; + peRec[0].fcDet[k].genStatus = tmpS ; + if( tmpS == STB_STATUS_COMPLETE )//Just after stabilization + { + peRec[0].fcDet[k].genDetVal = 1 ; + peRec[0].fcDet[k].genDetConf = tmpConf ; + } + } + }else if ( preSGen == STB_STATUS_COMPLETE //Just after stabilization + || preSGen == STB_STATUS_FIXED //already stabilized + ) + { + peRes->peFace[k].gen.value = preVGen ; + peRes->peFace[k].gen.conf = preCGen; + peRes->peFace[k].gen.status = STB_STATUS_FIXED ;//already stabilized + peRec[0].fcDet[k].genDetVal = preVGen ; + peRec[0].fcDet[k].genStatus = STB_STATUS_FIXED ;//already stabilized + peRec[0].fcDet[k].genDetConf = preCGen ; + } + } + + // gazeLR ------------------------------------------------------------------------------------------------- + if( execFlg->gaz == STB_TRUE ) + { + recCnt = 0; + for( t = 0; t < STB_PE_BACK_MAX ; t++) + { + for( i = 0; i < peRec[t].num ; i++) //a number of tracking people(previous t frame) + { + if( + peRec[t].fcDet[i].nTraID == trID //the same tracking number + && peRec[t].fcDet[i].nDetID >= 0 //not lost + && peRec[t].fcDet[i].dirDetConf >= dirThr // Face angle : confidence + && peRec[t].fcDet[i].dirDetPitch >= dirUDMin // Face angle : pitch + && peRec[t].fcDet[i].dirDetPitch <= dirUDMax // Face angle : pitch + && peRec[t].fcDet[i].dirDetYaw >= dirLRMin // Face angle : yaw + && peRec[t].fcDet[i].dirDetYaw <= dirLRMax // Face angle : yaw + && peRec[t].fcDet[i].gazDetLR != STB_ERR_PE_CANNOT // + ) + { + recVal[ recCnt ] = peRec[ t ].fcDet [ i ].gazDetLR ; + recCnt++; + } + } + } + if ( recCnt == 0 ) { peRes->peFace[k].gaz.status = STB_STATUS_NO_DATA ; }//stabilization impossible + else { peRes->peFace[k].gaz.status = STB_STATUS_CALCULATING; }//during stabilization + peRes->peFace[k].gaz.conf = STB_CONF_NO_DATA;//no Confidence + tmpVal = 0; + for( i = 0; i < recCnt ; i++ ) { tmpVal += recVal[ i ] ; } + if ( recCnt == 0 ) { recCnt = 1 ; } + peRes->peFace[k].gaz.LR = tmpVal / recCnt; + // gazeUD ------------------------------------------------------------------------------------------------- + recCnt = 0; + for( t = 0; t < STB_PE_BACK_MAX ; t++) + { + for( i = 0; i < peRec[t].num ; i++) //a number of tracking people(previous t frame) + { + if( + peRec[t].fcDet[i].nTraID == trID //the same tracking number + && peRec[t].fcDet[i].nDetID >= 0 //not lost + && peRec[t].fcDet[i].dirDetConf >= dirThr // Face angle : confidence + && peRec[t].fcDet[i].dirDetPitch >= dirUDMin // Face angle : pitch + && peRec[t].fcDet[i].dirDetPitch <= dirUDMax // Face angle : pitch + && peRec[t].fcDet[i].dirDetYaw >= dirLRMin // Face angle : yaw + && peRec[t].fcDet[i].dirDetYaw <= dirLRMax // Face angle : yaw + && peRec[t].fcDet[i].gazDetUD != STB_ERR_PE_CANNOT // + ) + { + recVal[ recCnt ] = peRec[ t ].fcDet [ i ].gazDetUD ; + recCnt++; + } + } + } + tmpVal = 0; + for( i = 0; i < recCnt ; i++ ) { tmpVal += recVal[ i ] ; } + if ( recCnt == 0 ) { recCnt = 1 ; } + peRes->peFace[k].gaz.UD = tmpVal / recCnt; + } + + + // expression ------------------------------------------------------------------------------------------------- + if( execFlg->exp == STB_TRUE ) + { + recCnt = 0; + for( t = 0; t < STB_PE_BACK_MAX ; t++) + { + for( i = 0; i < peRec[t].num ; i++) //a number of tracking people(previous t frame) + { + if( + peRec[t].fcDet[i].nTraID == trID //the same tracking number + && peRec[t].fcDet[i].nDetID >= 0 //not lost + && peRec[t].fcDet[i].dirDetConf >= dirThr // Face angle : confidence + && peRec[t].fcDet[i].dirDetPitch >= dirUDMin // Face angle : pitch + && peRec[t].fcDet[i].dirDetPitch <= dirUDMax // Face angle : pitch + && peRec[t].fcDet[i].dirDetYaw >= dirLRMin // Face angle : yaw + && peRec[t].fcDet[i].dirDetYaw <= dirLRMax // Face angle : yaw + && peRec[t].fcDet[i].expDetConf != STB_ERR_PE_CANNOT // + ) + { + recVal[ recCnt ] = PeExpressID ( peRec[ t ].fcDet[i].expDetVal ); + recCnt++; + } + } + } + for( i = 0; i < STB_EX_MAX; i++ ) { expVal[ i ] = 0 ; } + for( i = 0; i < recCnt ; i++ ) { expVal[ recVal[ i ] ] += 1 ; } + peRes->peFace[k].exp.value = PeExpressID ( expVal ); + peRes->peFace[k].exp.conf = STB_CONF_NO_DATA;//no Confidence + if ( recCnt == 0 ) { peRes->peFace[k].exp.status = STB_STATUS_NO_DATA ; }//stabilization impossible + else { peRes->peFace[k].exp.status = STB_STATUS_CALCULATING; }//during stabilization + } + + // blink L ------------------------------------------------------------------------------------------------- + if( execFlg->bli == STB_TRUE ) + { + recCnt = 0; + for( t = 0; t < STB_PE_BACK_MAX ; t++) + { + for( i = 0; i < peRec[t].num ; i++) //a number of tracking people(previous t frame) + { + if( + peRec[t].fcDet[i].nTraID == trID //the same tracking number + && peRec[t].fcDet[i].nDetID >= 0 //not lost + && peRec[t].fcDet[i].dirDetConf >= dirThr // Face angle : confidence + && peRec[t].fcDet[i].dirDetPitch >= dirUDMin // Face angle : pitch + && peRec[t].fcDet[i].dirDetPitch <= dirUDMax // Face angle : pitch + && peRec[t].fcDet[i].dirDetYaw >= dirLRMin // Face angle : yaw + && peRec[t].fcDet[i].dirDetYaw <= dirLRMax // Face angle : yaw + && peRec[t].fcDet[i].bliDetL != STB_ERR_PE_CANNOT // + ) + { + recVal[ recCnt ] = peRec[ t ].fcDet[ i ].bliDetL ; + recCnt++; + } + } + } + if ( recCnt == 0 ) { peRes->peFace[k].bli.status = STB_STATUS_NO_DATA ; }//stabilization impossible + else { peRes->peFace[k].bli.status = STB_STATUS_CALCULATING; }//during stabilization + tmpVal = 0; + for( i = 0; i < recCnt ; i++ ) { tmpVal += recVal[ i ] ; } + if ( recCnt == 0 ) { recCnt = 1 ; } + peRes->peFace[k].bli.ratioL = tmpVal / recCnt; + // blink R ------------------------------------------------------------------------------------------------- + recCnt = 0; + for( t = 0; t < STB_PE_BACK_MAX ; t++) + { + for( i = 0; i < peRec[t].num ; i++) //a number of tracking people(previous t frame) + { + if( + peRec[t].fcDet[i].nTraID == trID //the same tracking number + && peRec[t].fcDet[i].nDetID >= 0 //not lost + && peRec[t].fcDet[i].dirDetConf >= dirThr // Face angle : confidence + && peRec[t].fcDet[i].dirDetPitch >= dirUDMin // Face angle : pitch + && peRec[t].fcDet[i].dirDetPitch <= dirUDMax // Face angle : pitch + && peRec[t].fcDet[i].dirDetYaw >= dirLRMin // Face angle : yaw + && peRec[t].fcDet[i].dirDetYaw <= dirLRMax // Face angle : yaw + && peRec[t].fcDet[i].bliDetR != STB_ERR_PE_CANNOT // + ) + { + recVal[ recCnt ] = peRec[ t ].fcDet [ i ].bliDetR; + recCnt++; + } + } + } + tmpVal = 0; + for( i = 0; i < recCnt ; i++ ) { tmpVal += recVal[ i ] ; } + if ( recCnt == 0 ) { recCnt = 1 ; } + peRes->peFace[k].bli.ratioR = tmpVal / recCnt; + } + + + + // dirYaw ------------------------------------------------------------------------------------------------- + if( execFlg->dir == STB_TRUE ) + { + recCnt = 0; + for( t = 0; t < STB_PE_BACK_MAX ; t++) + { + for( i = 0; i < peRec[t].num ; i++) //a number of tracking people(previous t frame) + { + if( + peRec[t].fcDet[i].nTraID == trID //the same tracking number + && peRec[t].fcDet[i].nDetID >= 0 //not lost + && peRec[t].fcDet[i].dirDetConf >= dirThr // Face angle : confidence + && peRec[t].fcDet[i].dirDetPitch >= dirUDMin // Face angle : pitch + && peRec[t].fcDet[i].dirDetPitch <= dirUDMax // Face angle : pitch + && peRec[t].fcDet[i].dirDetYaw >= dirLRMin // Face angle : yaw + && peRec[t].fcDet[i].dirDetYaw <= dirLRMax // Face angle : yaw + ) + { + recVal[ recCnt ] = peRec[ t ].fcDet [ i ].dirDetYaw ; + recCnt++; + } + } + } + if ( recCnt == 0 ) { peRes->peFace[k].dir.status = STB_STATUS_NO_DATA ; }//stabilization impossible + else { peRes->peFace[k].dir.status = STB_STATUS_CALCULATING; }//during stabilization + peRes->peFace[k].dir.conf = STB_CONF_NO_DATA;//no Confidence + tmpVal = 0; + for( i = 0; i < recCnt ; i++ ) { tmpVal += recVal[ i ] ; } + if ( recCnt == 0 ) { recCnt = 1 ; } + peRes->peFace[k].dir.yaw = tmpVal / recCnt; + // dirRoll ------------------------------------------------------------------------------------------------- + recCnt = 0; + for( t = 0; t < STB_PE_BACK_MAX ; t++) + { + for( i = 0; i < peRec[t].num ; i++) //a number of tracking people(previous t frame) + { + if( + peRec[t].fcDet[i].nTraID == trID //the same tracking number + && peRec[t].fcDet[i].nDetID >= 0 //not lost + && peRec[t].fcDet[i].dirDetConf >= dirThr // Face angle : confidence + && peRec[t].fcDet[i].dirDetPitch >= dirUDMin // Face angle : pitch + && peRec[t].fcDet[i].dirDetPitch <= dirUDMax // Face angle : pitch + && peRec[t].fcDet[i].dirDetYaw >= dirLRMin // Face angle : yaw + && peRec[t].fcDet[i].dirDetYaw <= dirLRMax // Face angle : yaw + ) + { + recVal[ recCnt ] = peRec[ t ].fcDet [ i ].dirDetRoll; + recCnt++; + } + } + } + tmpVal = 0; + for( i = 0; i < recCnt ; i++ ) { tmpVal += recVal[ i ] ; } + if ( recCnt == 0 ) { recCnt = 1 ; } + peRes->peFace[k].dir.roll = tmpVal / recCnt; + // dirPitch ------------------------------------------------------------------------------------------------- + recCnt = 0; + for( t = 0; t < STB_PE_BACK_MAX ; t++) + { + for( i = 0; i < peRec[t].num ; i++) //a number of tracking people(previous t frame) + { + if( + peRec[t].fcDet[i].nTraID == trID //the same tracking number + && peRec[t].fcDet[i].nDetID >= 0 //not lost + && peRec[t].fcDet[i].dirDetConf >= dirThr // Face angle : confidence + && peRec[t].fcDet[i].dirDetPitch >= dirUDMin // Face angle : pitch + && peRec[t].fcDet[i].dirDetPitch <= dirUDMax // Face angle : pitch + && peRec[t].fcDet[i].dirDetYaw >= dirLRMin // Face angle : yaw + && peRec[t].fcDet[i].dirDetYaw <= dirLRMax // Face angle : yaw + ) + { + recVal[ recCnt ] = peRec[ t ].fcDet [ i ].dirDetPitch ; + recCnt++; + } + } + } + tmpVal = 0; + for( i = 0; i < recCnt ; i++ ) { tmpVal += recVal[ i ] ; } + if ( recCnt == 0 ) { recCnt = 1 ; } + peRes->peFace[k].dir.pitch = tmpVal / recCnt; + } + + }//for( k = 0; k < peRes->peCnt ; k++) + +} +/*---------------------------------------------------------------------*/ +// StbPeExec +/*---------------------------------------------------------------------*/ +int StbPeExec ( PEHANDLE handle ) +{ + + int retVal = 0 ; + + /* Face --------------------------------------*/ + PeSlideFacesRec ( handle->peDetRec , + handle->execFlg );//Shift the time series of past data before stabilization. + PeCurFaces ( handle->peDetRec , + &(handle->peDet) , + handle->execFlg );//Setting "present data before the stabilization" to past data before the stabilization. + + PeStbFaceEasy ( &(handle->peRes) , + handle->peDetRec , + handle->peFaceDirThr , + handle->peFaceDirUDMax , + handle->peFaceDirUDMin , + handle->peFaceDirLRMax , + handle->peFaceDirLRMin , + handle->peFrameCount , + handle->execFlg );//Calculate "current data after stabilization" from "past data before stabilization". + + + + + return retVal; +} + + + diff --git a/src/b5t007001/stblib/src/STB_Property/STBPeAPI.h b/src/b5t007001/stblib/src/STB_Property/STBPeAPI.h new file mode 100644 index 00000000..36649cf2 --- /dev/null +++ b/src/b5t007001/stblib/src/STB_Property/STBPeAPI.h @@ -0,0 +1,22 @@ +/*---------------------------------------------------------------------------*/ +/* Copyright(C) 2017 OMRON Corporation */ +/* */ +/* Licensed under the Apache License, Version 2.0 (the "License"); */ +/* you may not use this file except in compliance with the License. */ +/* You may obtain a copy of the License at */ +/* */ +/* http://www.apache.org/licenses/LICENSE-2.0 */ +/* */ +/* Unless required by applicable law or agreed to in writing, software */ +/* distributed under the License is distributed on an "AS IS" BASIS, */ +/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */ +/* See the License for the specific language governing permissions and */ +/* limitations under the License. */ +/*---------------------------------------------------------------------------*/ + +#include "PeInterface.h" + +int StbPeExec ( PEHANDLE handle ); + + + diff --git a/src/b5t007001/stblib/src/STB_Property/STBPeValidValue.c b/src/b5t007001/stblib/src/STB_Property/STBPeValidValue.c new file mode 100644 index 00000000..b0883dff --- /dev/null +++ b/src/b5t007001/stblib/src/STB_Property/STBPeValidValue.c @@ -0,0 +1,103 @@ +/*---------------------------------------------------------------------------*/ +/* Copyright(C) 2017 OMRON Corporation */ +/* */ +/* Licensed under the Apache License, Version 2.0 (the "License"); */ +/* you may not use this file except in compliance with the License. */ +/* You may obtain a copy of the License at */ +/* */ +/* http://www.apache.org/licenses/LICENSE-2.0 */ +/* */ +/* Unless required by applicable law or agreed to in writing, software */ +/* distributed under the License is distributed on an "AS IS" BASIS, */ +/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */ +/* See the License for the specific language governing permissions and */ +/* limitations under the License. */ +/*---------------------------------------------------------------------------*/ + +#include "STBPeValidValue.h" + +/*Value range check*/ +#define IS_OUT_RANGE( val , min , max ) ( ( (val) < (min) ) || ( (max) < (val) ) ) +#define IS_OUT_VALUE( val , min , max , accept ) ( IS_OUT_RANGE( val , min , max ) && ( (val) != (accept) ) ) +#define IS_OUT_FR_UID( val , min , max , acceptA , acceptB , acceptC ) ( IS_OUT_RANGE( val , min , max ) && ( (val) != (acceptA) ) && ( (val) != (acceptB) ) && ( (val) != (acceptC) ) ) + +/*------------------------------------------------------------------------------------------------------------------*/ +/* STB_PeIsValidValue */ +/*------------------------------------------------------------------------------------------------------------------*/ +STB_INT32 STB_PeIsValidValue(const STB_PE_DET *input, STBExecFlg *execFlg) +{ + STB_INT32 i ,j; + + if( execFlg->gen == STB_TRUE + || execFlg->age == STB_TRUE + || execFlg->fr == STB_TRUE + || execFlg->exp == STB_TRUE + || execFlg->dir == STB_TRUE + || execFlg->gaz == STB_TRUE + || execFlg->bli == STB_TRUE + ) + { + for( i = 0 ; i < input->num ; i++) + { + if( IS_OUT_VALUE( input->fcDet[i].dirDetYaw , STB_FACE_DIR_LR_MIN , STB_FACE_DIR_LR_MAX , STB_ERR_DIR_CANNOT ) ){ return STB_FALSE;} + if( IS_OUT_VALUE( input->fcDet[i].dirDetPitch , STB_FACE_DIR_UD_MIN , STB_FACE_DIR_UD_MAX , STB_ERR_DIR_CANNOT ) ){ return STB_FALSE;} + if( IS_OUT_VALUE( input->fcDet[i].dirDetRoll , STB_FACE_DIR_ROLL_MIN , STB_FACE_DIR_ROLL_MAX , STB_ERR_DIR_CANNOT ) ){ return STB_FALSE;} + if( IS_OUT_VALUE( input->fcDet[i].dirDetConf , STB_FACE_DIR_CONF_MIN , STB_FACE_DIR_CONF_MAX , STB_ERR_PE_CANNOT ) ){ return STB_FALSE;} + } + } + + + if( execFlg->age == STB_TRUE ) + { + for( i = 0 ; i < input->num ; i++) + { + if( IS_OUT_VALUE( input->fcDet[i].ageDetVal , STB_FACE_AGE_VAL_MIN , STB_FACE_AGE_VAL_MAX ,STB_ERR_PE_CANNOT ) ){ return STB_FALSE;} + if( IS_OUT_VALUE( input->fcDet[i].ageDetConf , STB_FACE_AGE_CONF_MIN , STB_FACE_AGE_CONF_MAX ,STB_ERR_PE_CANNOT ) ){ return STB_FALSE;} + } + } + + if( execFlg->gen == STB_TRUE ) + { + for( i = 0 ; i < input->num ; i++) + { + if( IS_OUT_VALUE( input->fcDet[i].genDetVal , STB_FACE_GEN_VAL_MIN , STB_FACE_GEN_VAL_MAX ,STB_ERR_PE_CANNOT ) ){ return STB_FALSE;} + if( IS_OUT_VALUE( input->fcDet[i].genDetConf , STB_FACE_GEN_CONF_MIN , STB_FACE_GEN_CONF_MAX ,STB_ERR_PE_CANNOT ) ){ return STB_FALSE;} + } + } + + if( execFlg->gaz == STB_TRUE ) + { + for( i = 0 ; i < input->num ; i++) + { + if( IS_OUT_VALUE( input->fcDet[i].gazDetLR , STB_FACE_GAZE_LR_MIN , STB_FACE_GAZE_LR_MAX ,STB_ERR_PE_CANNOT ) ){ return STB_FALSE;} + if( IS_OUT_VALUE( input->fcDet[i].gazDetUD , STB_FACE_GAZE_UD_MIN , STB_FACE_GAZE_UD_MAX ,STB_ERR_PE_CANNOT ) ){ return STB_FALSE;} + } + } + + if( execFlg->bli == STB_TRUE ) + { + for( i = 0 ; i < input->num ; i++) + { + if( IS_OUT_VALUE( input->fcDet[i].bliDetL , STB_FACE_BLI_L_MIN , STB_FACE_BLI_L_MAX ,STB_ERR_PE_CANNOT) ){ return STB_FALSE;} + if( IS_OUT_VALUE( input->fcDet[i].bliDetR , STB_FACE_BLI_R_MIN , STB_FACE_BLI_R_MAX ,STB_ERR_PE_CANNOT) ){ return STB_FALSE;} + } + } + + if( execFlg->exp == STB_TRUE ) + { + for( i = 0 ; i < input->num ; i++) + { + if( IS_OUT_VALUE( input->fcDet[i].expDetConf, STB_FACE_EXP_DEG_MIN , STB_FACE_EXP_DEG_MAX ,STB_ERR_PE_CANNOT) ){ return STB_FALSE;} + for( j = 0 ; j < STB_EX_MAX ; j++) + { + if( IS_OUT_VALUE( input->fcDet[i].expDetVal[j] ,STB_FACE_EXP_SCORE_MIN , STB_FACE_EXP_SCORE_MAX ,STB_ERR_PE_CANNOT) ){ return STB_FALSE;} + } + + } + } + + + + + return STB_TRUE; +} \ No newline at end of file diff --git a/src/b5t007001/stblib/src/STB_Property/STBPeValidValue.h b/src/b5t007001/stblib/src/STB_Property/STBPeValidValue.h new file mode 100644 index 00000000..d7b5cfb4 --- /dev/null +++ b/src/b5t007001/stblib/src/STB_Property/STBPeValidValue.h @@ -0,0 +1,96 @@ +/*---------------------------------------------------------------------------*/ +/* Copyright(C) 2017 OMRON Corporation */ +/* */ +/* Licensed under the Apache License, Version 2.0 (the "License"); */ +/* you may not use this file except in compliance with the License. */ +/* You may obtain a copy of the License at */ +/* */ +/* http://www.apache.org/licenses/LICENSE-2.0 */ +/* */ +/* Unless required by applicable law or agreed to in writing, software */ +/* distributed under the License is distributed on an "AS IS" BASIS, */ +/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */ +/* See the License for the specific language governing permissions and */ +/* limitations under the License. */ +/*---------------------------------------------------------------------------*/ + +#ifndef STBPEVALIDVALUE_H__ +#define STBPEVALIDVALUE_H__ + + +#include "STBCommonDef.h" +#include "STBCommonType.h" +#include "STBPeTypedef.h" + +/*-------------------------------------------------------------------*/ +/*Threshold for checking input value*/ +/*-------------------------------------------------------------------*/ +#define STB_BODY_CNT_MIN 0 // body +#define STB_BODY_CNT_MAX 35 +#define STB_BODY_XY_MIN 0 +#define STB_BODY_XY_MAX 8191 +#define STB_BODY_SIZE_MIN 20 +#define STB_BODY_SIZE_MAX 8192 +#define STB_BODY_CONF_MIN 0 +#define STB_BODY_CONF_MAX 1000 +#define STB_FACE_CNT_MIN 0 // face +#define STB_FACE_CNT_MAX 35 +#define STB_FACE_XY_MIN 0 +#define STB_FACE_XY_MAX 8191 +#define STB_FACE_SIZE_MIN 20 +#define STB_FACE_SIZE_MAX 8192 +#define STB_FACE_CONF_MIN 0 +#define STB_FACE_CONF_MAX 1000 +#define STB_FACE_DIR_LR_MIN -180 +#define STB_FACE_DIR_LR_MAX 179 +#define STB_FACE_DIR_UD_MIN -180 +#define STB_FACE_DIR_UD_MAX 179 +#define STB_FACE_DIR_ROLL_MIN -180 +#define STB_FACE_DIR_ROLL_MAX 179 +#define STB_FACE_DIR_CONF_MIN 0 +#define STB_FACE_DIR_CONF_MAX 1000 +#define STB_FACE_AGE_VAL_MIN 0 +#define STB_FACE_AGE_VAL_MAX 75 +#define STB_FACE_AGE_CONF_MIN 0 +#define STB_FACE_AGE_CONF_MAX 1000 +#define STB_FACE_GEN_VAL_MIN 0 +#define STB_FACE_GEN_VAL_MAX 1 +#define STB_FACE_GEN_CONF_MIN 0 +#define STB_FACE_GEN_CONF_MAX 1000 +#define STB_FACE_GAZE_LR_MIN -90 +#define STB_FACE_GAZE_LR_MAX 90 +#define STB_FACE_GAZE_UD_MIN -90 +#define STB_FACE_GAZE_UD_MAX 90 +#define STB_FACE_BLI_L_MIN 1 +#define STB_FACE_BLI_L_MAX 1000 +#define STB_FACE_BLI_R_MIN 1 +#define STB_FACE_BLI_R_MAX 1000 +#define STB_FACE_EXP_SCORE_MIN 0 +#define STB_FACE_EXP_SCORE_MAX 100 /* not 1000 */ +#define STB_FACE_EXP_DEG_MIN -100 +#define STB_FACE_EXP_DEG_MAX 100 +#define STB_FACE_FR_UID_MIN 0 +#define STB_FACE_FR_UID_MAX 499 +#define STB_FACE_FR_SCORE_MIN 0 +#define STB_FACE_FR_SCORE_MAX 1000 + +/*-------------------------------------------------------------------*/ +/*Permitted input value*/ +/*-------------------------------------------------------------------*/ +#define STB_ERR_PE_CANNOT -128 /*Estimation is not possible.*/ +#define STB_ERR_FR_CANNOT -128 /*Recognition impossible*/ +#define STB_ERR_FR_NOID -1 /*No corresponding ID*/ +#define STB_ERR_FR_NOALBUM -127 /*Not-registered in Album*/ + +/*-------------------------------------------------------------------*/ +/*For collaboration with child library*/ +/*-------------------------------------------------------------------*/ +#define STB_ERR_DIR_CANNOT -256 /*Unable to angle estimation*/ + +/*-------------------------------------------------------------------*/ +/* Func */ +/*-------------------------------------------------------------------*/ +STB_INT32 STB_PeIsValidValue(const STB_PE_DET *input, STBExecFlg *execFlg); + +#endif /* COMMONDEF_H__ */ + diff --git a/src/b5t007001/stblib/src/STB_Property/SdkSTBPe.c b/src/b5t007001/stblib/src/STB_Property/SdkSTBPe.c new file mode 100644 index 00000000..e2d0816d --- /dev/null +++ b/src/b5t007001/stblib/src/STB_Property/SdkSTBPe.c @@ -0,0 +1,80 @@ +/*---------------------------------------------------------------------------*/ +/* Copyright(C) 2017 OMRON Corporation */ +/* */ +/* Licensed under the Apache License, Version 2.0 (the "License"); */ +/* you may not use this file except in compliance with the License. */ +/* You may obtain a copy of the License at */ +/* */ +/* http://www.apache.org/licenses/LICENSE-2.0 */ +/* */ +/* Unless required by applicable law or agreed to in writing, software */ +/* distributed under the License is distributed on an "AS IS" BASIS, */ +/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */ +/* See the License for the specific language governing permissions and */ +/* limitations under the License. */ +/*---------------------------------------------------------------------------*/ + +#include "SdkSTBPe.h" +#include "PeInterface.h" + +/*This layer only defines the API function */ + +/*Create/Delete handle*/ +STB_PE_HANDLE STB_Pe_CreateHandle( const STBExecFlg* execFlg ,const STB_INT32 nTraCntMax ){ + return (STB_PE_HANDLE)PeCreateHandle( execFlg , nTraCntMax ); +} + +STB_INT32 STB_Pe_DeleteHandle(STB_PE_HANDLE handle){ + return PeDeleteHandle((PEHANDLE)handle); +} + +/*set frame information*/ +STB_INT32 STB_Pe_SetDetect(STB_PE_HANDLE handle,const STB_PE_DET *stbPeDet){ + return PeSetDetect((PEHANDLE)handle,stbPeDet); +} + +/*Main process execution*/ +STB_INT32 STB_Pe_Execute(STB_PE_HANDLE handle){ + return PeExecute((PEHANDLE)handle); +} + +/*get the result*/ +STB_INT32 STB_Pe_GetResult(STB_PE_HANDLE handle, STB_PE_RES* peResult){ + return PeGetResult((PEHANDLE)handle,peResult); +} +STB_INT32 STB_Pe_Clear ( STB_PE_HANDLE handle ) +{ + return PeClear((PEHANDLE)handle ); +} + + + +/* FaceDirMinMax */ +STB_INT32 STB_Pe_SetFaceDirMinMax ( STB_PE_HANDLE handle , STB_INT32 nMinUDAngle , STB_INT32 nMaxUDAngle ,STB_INT32 nMinLRAngle , STB_INT32 nMaxLRAngle ) +{ + return PeSetFaceDirMinMax((PEHANDLE)handle,nMinUDAngle,nMaxUDAngle,nMinLRAngle,nMaxLRAngle ); +} +STB_INT32 STB_Pe_GetFaceDirMinMax ( STB_PE_HANDLE handle , STB_INT32 *pnMinUDAngle, STB_INT32 *pnMaxUDAngle ,STB_INT32 *pnMinLRAngle, STB_INT32 *pnMaxLRAngle) +{ + return PeGetFaceDirMinMax((PEHANDLE)handle,pnMinUDAngle,pnMaxUDAngle, pnMinLRAngle,pnMaxLRAngle); +} +/* FaceDirThreshold */ +STB_INT32 STB_Pe_SetFaceDirThreshold ( STB_PE_HANDLE handle , STB_INT32 threshold ) +{ + return PeSetFaceDirThreshold((PEHANDLE)handle,threshold ); +} +STB_INT32 STB_Pe_GetFaceDirThreshold ( STB_PE_HANDLE handle , STB_INT32* threshold ) +{ + return PeGetFaceDirThreshold((PEHANDLE)handle,threshold ); +} + +/* FrameCount */ +STB_INT32 STB_Pe_SetFrameCount ( STB_PE_HANDLE handle , STB_INT32 nFrameCount ) +{ + return PeSetFrameCount((PEHANDLE)handle,nFrameCount ); +} +STB_INT32 STB_Pe_GetFrameCount ( STB_PE_HANDLE handle , STB_INT32* nFrameCount ) +{ + return PeGetFrameCount((PEHANDLE)handle,nFrameCount ); +} + diff --git a/src/b5t007001/stblib/src/STB_Property/SdkSTBPe.h b/src/b5t007001/stblib/src/STB_Property/SdkSTBPe.h new file mode 100644 index 00000000..01ed7670 --- /dev/null +++ b/src/b5t007001/stblib/src/STB_Property/SdkSTBPe.h @@ -0,0 +1,41 @@ +/*---------------------------------------------------------------------------*/ +/* Copyright(C) 2017 OMRON Corporation */ +/* */ +/* Licensed under the Apache License, Version 2.0 (the "License"); */ +/* you may not use this file except in compliance with the License. */ +/* You may obtain a copy of the License at */ +/* */ +/* http://www.apache.org/licenses/LICENSE-2.0 */ +/* */ +/* Unless required by applicable law or agreed to in writing, software */ +/* distributed under the License is distributed on an "AS IS" BASIS, */ +/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */ +/* See the License for the specific language governing permissions and */ +/* limitations under the License. */ +/*---------------------------------------------------------------------------*/ + +#if !defined( _SDK_STBPE_H_ ) +#define _SDK_STBPE_H_ +#include "STBPeTypedef.h" + +#if !defined( STB_DEF_PE_HANDLE ) + #define STB_DEF_PE_HANDLE + typedef VOID* STB_PE_HANDLE; +#endif + +STB_PE_HANDLE STB_Pe_CreateHandle ( const STBExecFlg* execFlg ,const STB_INT32 nTraCntMax );/*Create/Delete handle*/ +STB_INT32 STB_Pe_DeleteHandle ( STB_PE_HANDLE handle );/*Create/Delete handle*/ +STB_INT32 STB_Pe_SetDetect ( STB_PE_HANDLE handle, const STB_PE_DET *stbPeDet );/*Frame information settings*/ +STB_INT32 STB_Pe_Execute ( STB_PE_HANDLE handle );/*Main process execution*/ +STB_INT32 STB_Pe_GetResult ( STB_PE_HANDLE handle, STB_PE_RES* peResult );/*Get result*/ + +/*parameter*/ +STB_INT32 STB_Pe_SetFaceDirMinMax ( STB_PE_HANDLE handle , STB_INT32 nMinUDAngle , STB_INT32 nMaxUDAngle ,STB_INT32 nMinLRAngle , STB_INT32 nMaxLRAngle );/* FaceDirMinMax */ +STB_INT32 STB_Pe_GetFaceDirMinMax ( STB_PE_HANDLE handle , STB_INT32 *pnMinUDAngle, STB_INT32 *pnMaxUDAngle ,STB_INT32 *pnMinLRAngle, STB_INT32 *pnMaxLRAngle); +STB_INT32 STB_Pe_Clear ( STB_PE_HANDLE handle );/* Clear */ +STB_INT32 STB_Pe_SetFaceDirThreshold ( STB_PE_HANDLE handle , STB_INT32 threshold );/* FaceDirThreshold */ +STB_INT32 STB_Pe_GetFaceDirThreshold ( STB_PE_HANDLE handle , STB_INT32* threshold ); +STB_INT32 STB_Pe_SetFrameCount ( STB_PE_HANDLE handle , STB_INT32 nFrameCount ); +STB_INT32 STB_Pe_GetFrameCount ( STB_PE_HANDLE handle , STB_INT32* nFrameCount ); + +#endif diff --git a/src/b5t007001/stblib/src/STB_Tracker/STBTrAPI.c b/src/b5t007001/stblib/src/STB_Tracker/STBTrAPI.c new file mode 100644 index 00000000..1aa61a9c --- /dev/null +++ b/src/b5t007001/stblib/src/STB_Tracker/STBTrAPI.c @@ -0,0 +1,469 @@ +/*---------------------------------------------------------------------------*/ +/* Copyright(C) 2017 OMRON Corporation */ +/* */ +/* Licensed under the Apache License, Version 2.0 (the "License"); */ +/* you may not use this file except in compliance with the License. */ +/* You may obtain a copy of the License at */ +/* */ +/* http://www.apache.org/licenses/LICENSE-2.0 */ +/* */ +/* Unless required by applicable law or agreed to in writing, software */ +/* distributed under the License is distributed on an "AS IS" BASIS, */ +/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */ +/* See the License for the specific language governing permissions and */ +/* limitations under the License. */ +/*---------------------------------------------------------------------------*/ + +#include "STBTrAPI.h" + +#define STB_INT_MAX 2147483647 /* maximum (signed) int value */ + +/*---------------------------------------------------------------------*/ +// TrSlideRec +/*---------------------------------------------------------------------*/ +void TrSlideRec ( ROI_SYS *rec ) +{ + STB_INT32 t , i ; + + for( t = STB_TR_BACK_MAX - 2 ; t >= 0 ; t-- ) + { + rec [ t + 1 ].cnt = rec[ t + 0 ].cnt; + for( i = 0 ; i < rec [ t + 1 ].cnt ; i++ ) + { + rec [ t + 1 ].nDetID [i] = rec [ t ].nDetID [i] ; + rec [ t + 1 ].nTraID [i] = rec [ t ].nTraID [i] ; + rec [ t + 1 ].posX [i] = rec [ t ].posX [i] ; + rec [ t + 1 ].posY [i] = rec [ t ].posY [i] ; + rec [ t + 1 ].size [i] = rec [ t ].size [i] ; + rec [ t + 1 ].conf [i] = rec [ t ].conf [i] ; + rec [ t + 1 ].retryN [i] = rec [ t ].retryN [i] ; + } + } +} +/*---------------------------------------------------------------------*/ +// TrCurRec +/*---------------------------------------------------------------------*/ +void TrCurRec ( ROI_SYS *rec , ROI_DET *det , STB_INT32 num) +{ + STB_INT32 i ; + + + rec [ 0 ].cnt =num; + for( i = 0 ; i < rec [ 0 ].cnt ; i++ ) + { + rec [ 0 ].nDetID [i] = i ; + rec [ 0 ].nTraID [i] = -1 ; + rec [ 0 ].posX [i] = det[i].posX ; + rec [ 0 ].posY [i] = det[i].posY ; + rec [ 0 ].size [i] = det[i].size ; + rec [ 0 ].conf [i] = det[i].conf ; + rec [ 0 ].retryN [i] = 0 ; + } + +} + + +/*---------------------------------------------------------------------*/ +// TrDelRetry +/*---------------------------------------------------------------------*/ +void +TrDelRetry( ROI_SYS *preData , STB_INT32 thrRetryCnt ) +{ + //delete data exceeding the number of retries + //If the face isn't find out during tracking, set until how many frames can look for it. + //If tracking fails for the specified number of consecutive frames, tracking is terminated assuming that face is lost. + STB_INT32 i, tmpCnt ; + + tmpCnt = 0; + for( i = 0 ; i < preData->cnt ; i++ ) + { + if( preData->retryN[i] <= thrRetryCnt ) + { + + preData->nDetID [tmpCnt ] = preData->nDetID [i] ; + preData->nTraID [tmpCnt ] = preData->nTraID [i] ; + preData->posX [tmpCnt ] = preData->posX [i] ; + preData->posY [tmpCnt ] = preData->posY [i] ; + preData->size [tmpCnt ] = preData->size [i] ; + preData->conf [tmpCnt ] = preData->conf [i] ; + preData->retryN [tmpCnt ] = preData->retryN [i] ; + tmpCnt++; + } + } + preData->cnt = tmpCnt ; + + +} +/*---------------------------------------------------------------------*/ +// TrCheckSameROI +/*---------------------------------------------------------------------*/ +STB_INT32 +TrCheckSameROI( STB_INT32 curX ,STB_INT32 curY ,STB_INT32 curS , + STB_INT32 preX ,STB_INT32 preY ,STB_INT32 preS + ) +{ + + STB_INT32 difP ;//the percentage of detection position change + STB_INT32 difS ;//the percentage of detection size change + float tmpVal; + STB_INT32 retVal; + + if( preS < 1 ) + { + return STB_INT_MAX; + } + + //the percentage of detect position change + //It is "Absolute value of detected position change amount from previous frame / Detected size of previous frame * 100". + tmpVal = (float)sqrt( (float) (preX-curX)*(preX-curX) + (preY-curY)*(preY-curY) ); + difP = (STB_INT32)( tmpVal * 100 / preS ); + //the percentage of detect size change + //It is "Absolute value of detected size change amount from previous frame / Detected size of previous frame * 100". + tmpVal = (float)(preS-curS); + if( tmpVal < 0 ) + { + tmpVal *= (-1); + } + difS = (STB_INT32)( tmpVal * 100 / preS ); + retVal = (difP+1)*(difS+1); + + return retVal;//The return value is the similarity of the rectangle. Always a value more than or equal to zero. The closer to zero, the more similar they are. + +} +/*---------------------------------------------------------------------*/ +// TrSetDistTbl +/*---------------------------------------------------------------------*/ +void +TrSetDistTbl + ( + STB_INT32 *dst , + ROI_SYS *curData , + ROI_SYS *preData , + STB_INT32 traCntMax + ) +{ + STB_INT32 ip ,ic ; + STB_INT32 distMax = STB_INT_MAX; + + // init + for( ip = 0 ; ip < traCntMax ; ip++ ) + { + for( ic = 0 ; ic < traCntMax ; ic++ ) + { + dst [ ip * traCntMax + ic ] = distMax; + } + } + + + for( ip = 0 ; ip < preData->cnt ; ip++ ) + { + for( ic = 0 ; ic < curData->cnt ; ic++ ) + { + dst [ ip * traCntMax + ic ] + = TrCheckSameROI//The return value is the similarity of the rectangle. Always a value more than or equal to zero. The closer to zero, the more similar they are. + ( + curData->posX[ic],curData->posY[ic],curData->size[ic], + preData->posX[ip],preData->posY[ip],preData->size[ip] + ); + } + } + +} +/*---------------------------------------------------------------------*/ +// TrSteadinessXYS +/*---------------------------------------------------------------------*/ +void +TrSteadinessXYS + ( + STB_INT32 curX ,STB_INT32 curY ,STB_INT32 curS , + STB_INT32 preX ,STB_INT32 preY ,STB_INT32 preS , + STB_INT32* dstX ,STB_INT32* dstY ,STB_INT32* dstS , + STB_INT32 thrP ,STB_INT32 thrS + ) +{ + + STB_INT32 difP ;//the percentage of detection position change + STB_INT32 difS ;//the percentage of detection size change + float tmpVal; + + + if( preS < 1 ) + { + *dstX = curX ; *dstY = curY ; *dstS = curS ; + return ; + } + + //the percentage of detect position change + //It is "Absolute value of detected position change amount from previous frame / Detected size of previous frame * 100". + tmpVal = (float)sqrt( (float) (preX-curX)*(preX-curX) + (preY-curY)*(preY-curY) ); + difP = (STB_INT32)( tmpVal * 100 / preS ); + if( difP <= thrP ) + { + *dstX = preX ; *dstY = preY ; + }else + { + *dstX = curX ; *dstY = curY ; + } + + //the percentage of detect size change + //It is "Absolute value of detected size change amount from previous frame / Detected size of previous frame * 100". + tmpVal = (float)(preS-curS); + if( tmpVal < 0 ) + { + tmpVal *= (-1); + } + difS = (STB_INT32)( tmpVal * 100 / preS ); + if( difS <= thrS ) + { + *dstS = preS ; + }else + { + *dstS = curS ; + } + +} +/*---------------------------------------------------------------------*/ +// TrStabilizeTR +/*---------------------------------------------------------------------*/ +void TrStabilizeTR + ( + ROI_SYS *wData , //present data after the stabilization + STB_INT32 *wCnt , //a number of present data after the stabilization + ROI_SYS *rec , //past data + STB_INT32 *cntAcc , + TRHANDLE handle + ) +{ + + STB_INT32 stedinessPos = handle->stedPos ; + STB_INT32 stedinessSize = handle->stedSize ; + STB_INT32 thrRetryCnt = handle->retryCnt ; + STB_INT32 traCntMax = handle->traCntMax ; + STB_INT32 *idPreCur = handle->wIdPreCur ; + STB_INT32 *idCurPre = handle->wIdCurPre ; + STB_INT32 *dstTbl = handle->wDstTbl ; + ROI_SYS *curData = &rec[0];//current frame data + ROI_SYS *preData = &rec[1];//previous frame data + STB_INT32 tmpAccCnt ; + STB_INT32 ip ,ic ; + STB_INT32 ipp ,icc ; + STB_INT32 tmpWCnt ; + STB_INT32 tmpVal ; + STB_INT32 tmpX,tmpY,tmpS ; + const STB_INT32 LinkNot = -1 ; + + + //------------------------------------------------------------------------------// + //Initialization + //------------------------------------------------------------------------------// + for( ip = 0 ; ip < traCntMax ; ip++ ) + { + idPreCur[ip] = LinkNot; + idCurPre[ip] = LinkNot; + } + + + //------------------------------------------------------------------------------// + //previous preparation + //------------------------------------------------------------------------------// + //Delete the data exceeding the retry count from the previous frame data. + TrDelRetry ( preData ,thrRetryCnt ); + + + //------------------------------------------------------------------------------// + //main processing + //------------------------------------------------------------------------------// + tmpWCnt = 0 ;//a number of present data after the stabilization + + // "It's reflected in the previous frame" and "It's reflected in the current frame". + //Create dstTbl. The value of dstTbl is the similarity of the rectangle. Always a value more than or equal to zero. The closer to zero, the more similar they are. + TrSetDistTbl( dstTbl,curData,preData, traCntMax); + for( ;; ) + { + //Get the combination (icc, ipp) that minimizes the value of dstTbl. + tmpVal = STB_INT_MAX; icc = -1; ipp = -1; + for( ic = 0 ; ic < curData->cnt ; ic++ ) + { + for( ip = 0 ; ip < preData->cnt ; ip++ ) + { + if( tmpVal > dstTbl [ ip * traCntMax + ic ] ) + { + tmpVal = dstTbl [ ip * traCntMax + ic ] ; icc = ic; ipp = ip; + } + } + } + if( tmpVal == STB_INT_MAX ) + { + break; + } + + //Link ipp and icc + idCurPre[ icc ] = ipp ; + idPreCur[ ipp ] = icc ; + // steadiness + TrSteadinessXYS + ( + curData->posX[icc] ,curData->posY[icc] ,curData->size[icc] , + preData->posX[ipp] ,preData->posY[ipp] ,preData->size[ipp] , + &tmpX ,&tmpY ,&tmpS , + stedinessPos ,stedinessSize + ); + // set + wData->nTraID[tmpWCnt] = preData->nTraID[ipp]; + wData->nDetID[tmpWCnt] = curData->nDetID[icc]; + wData->posX [tmpWCnt] = tmpX ; + wData->posY [tmpWCnt] = tmpY ; + wData->size [tmpWCnt] = tmpS ; + wData->conf [tmpWCnt] = ( ( curData->conf[icc] + preData->conf[ipp] ) /2 ); + wData->retryN[tmpWCnt] = 0 ;//"It's reflected(linked) in the current frame"so that 0. + tmpWCnt++; + //Renewal "dstTbl" not to refer the associated data. + for( ic = 0 ; ic < curData->cnt ; ic++ ) + { + dstTbl [ ipp * traCntMax + ic ] = STB_INT_MAX ; + } + for( ip = 0 ; ip < preData->cnt ; ip++ ) + { + dstTbl [ ip * traCntMax + icc ] = STB_INT_MAX ; + } + + if( tmpWCnt == traCntMax ) + { + *wCnt = tmpWCnt; + return; + } + } + + // "It is reflected in the previous frame" and "It is not reflected in the current frame". + for( ip = 0 ; ip < preData->cnt ; ip++ ) //"It's reflected in the previous frame" + { + if( idPreCur[ip] == LinkNot ) //"It's not reflected in the current frame" + { + // set + wData->nTraID[tmpWCnt] = preData->nTraID[ip]; + wData->nDetID[tmpWCnt] = -1;//"It's not reflected in the current frame so the detection number is -1" + wData->posX [tmpWCnt] = preData->posX [ip]; + wData->posY [tmpWCnt] = preData->posY [ip]; + wData->size [tmpWCnt] = preData->size [ip]; + wData->conf [tmpWCnt] = preData->conf[ip]; + wData->retryN[tmpWCnt] = preData->retryN[ip] + 1 ;//"It's not reflected in the current frame"so that +1. + tmpWCnt++; + } + if( tmpWCnt == traCntMax) + { + *wCnt = tmpWCnt ; + return; + } + } + + // "It is not reflected in the previous frame" and "It is reflected in the current frame". + tmpAccCnt = *cntAcc; + for( ic = 0 ; ic < curData->cnt ; ic++ ) //"It's reflected in the current frame" + { + if( idCurPre[ic] == LinkNot ) //"It's not reflected in the previous frame" + { + // set + wData->nTraID[tmpWCnt] = tmpAccCnt; + wData->nDetID[tmpWCnt] = curData->nDetID[ic]; + wData->posX [tmpWCnt] = curData->posX [ic]; + wData->posY [tmpWCnt] = curData->posY [ic]; + wData->size [tmpWCnt] = curData->size [ic]; + wData->conf [tmpWCnt] = curData->conf[ic]; + wData->retryN[tmpWCnt] = 0 ;//"It's reflected in the current frame" so that 0. + tmpWCnt++; + tmpAccCnt++; + } + if( tmpWCnt == traCntMax ) + { + *wCnt = tmpWCnt; + *cntAcc = tmpAccCnt; + return; + } + } + + + *wCnt = tmpWCnt ; + *cntAcc = tmpAccCnt; + + +} +/*---------------------------------------------------------------------*/ +// TrSetRes +/*---------------------------------------------------------------------*/ +void TrSetRes( ROI_SYS* wRoi,STB_TR_RES* resData , STB_INT32* resCnt ) +{ + STB_INT32 i; + + *resCnt = wRoi->cnt; + for( i = 0 ; i < wRoi->cnt ; i++ ) + { + resData[i].nTraID = wRoi->nTraID[i]; + resData[i].nDetID = wRoi->nDetID[i]; + resData[i].pos.x = wRoi->posX [i]; + resData[i].pos.y = wRoi->posY [i]; + resData[i].size = wRoi->size [i]; + resData[i].conf = wRoi->conf[i]; + } +} +/*---------------------------------------------------------------------*/ +// TrEditCur +/*---------------------------------------------------------------------*/ +void TrEditCur( ROI_SYS* wRoi,ROI_SYS* curData ) +{ + STB_INT32 i; + + curData->cnt = wRoi->cnt; + for( i = 0 ; i < wRoi->cnt ; i++ ) + { + curData->nTraID[i] = wRoi->nTraID[i]; + curData->nDetID[i] = wRoi->nDetID[i]; + curData->posX [i] = wRoi->posX [i]; + curData->posY [i] = wRoi->posY [i]; + curData->size [i] = wRoi->size [i]; + curData->conf [i] = wRoi->conf [i]; + curData->retryN[i] = wRoi->retryN[i]; + } +} +/*---------------------------------------------------------------------*/ +// StbTrExec +/*---------------------------------------------------------------------*/ +int StbTrExec ( TRHANDLE handle ) +{ + + + /* Face --------------------------------------*/ + if( handle->execFlg->faceTr == STB_TRUE ) + { + //Move the time series of past data. + TrSlideRec( handle->fcRec ); + //"the present data" set to the past data + TrCurRec( handle->fcRec ,handle->stbTrDet->fcDet, handle->stbTrDet->fcNum ); + //Calculate "stabilized current data wRoi" from "past data". + TrStabilizeTR( handle->wRoi ,&(handle->wRoi->cnt) ,handle->fcRec ,&(handle->fcCntAcc) ,handle ); + //Set "wRoi" data to output data "resFaces". + TrSetRes( handle->wRoi, handle->resFaces->face, &(handle->resFaces->cnt) ); + //set "wRoi" data to accumulated data (current) "fcRec [0]". + TrEditCur( handle->wRoi, &(handle->fcRec[0]) ); + } + + /* Body --------------------------------------*/ + if( handle->execFlg->bodyTr == STB_TRUE ) + { + //Move the time series of past data. + TrSlideRec( handle->bdRec ); + //"the present data" set to the past data + TrCurRec( handle->bdRec ,handle->stbTrDet->bdDet ,handle->stbTrDet->bdNum ); + //Calculate "stabilized current data wRoi" from "past data". + TrStabilizeTR( handle->wRoi ,&(handle->wRoi->cnt) , handle->bdRec, &(handle->bdCntAcc) , handle ); + //Set "wRoi" data to output data "resFaces". + TrSetRes( handle->wRoi, handle->resBodys->body, &(handle->resBodys->cnt) ); + //set "wRoi" data to accumulated data (current) "bdRec [0]". + TrEditCur( handle->wRoi, &(handle->bdRec[0]) ); + } + + + return STB_NORMAL; +} + + + diff --git a/src/b5t007001/stblib/src/STB_Tracker/STBTrAPI.h b/src/b5t007001/stblib/src/STB_Tracker/STBTrAPI.h new file mode 100644 index 00000000..410f61f2 --- /dev/null +++ b/src/b5t007001/stblib/src/STB_Tracker/STBTrAPI.h @@ -0,0 +1,29 @@ +/*---------------------------------------------------------------------------*/ +/* Copyright(C) 2017 OMRON Corporation */ +/* */ +/* Licensed under the Apache License, Version 2.0 (the "License"); */ +/* you may not use this file except in compliance with the License. */ +/* You may obtain a copy of the License at */ +/* */ +/* http://www.apache.org/licenses/LICENSE-2.0 */ +/* */ +/* Unless required by applicable law or agreed to in writing, software */ +/* distributed under the License is distributed on an "AS IS" BASIS, */ +/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */ +/* See the License for the specific language governing permissions and */ +/* limitations under the License. */ +/*---------------------------------------------------------------------------*/ + +#include "TrInterface.h" +#include "math.h" + +#ifndef ABS + #define ABS(a) (((a) > (0)) ? (a) : (-1*a)) +#endif /* ABS */ + + + +int StbTrExec ( TRHANDLE handle ); + + + diff --git a/src/b5t007001/stblib/src/STB_Tracker/STBTrValidValue.c b/src/b5t007001/stblib/src/STB_Tracker/STBTrValidValue.c new file mode 100644 index 00000000..aa32eb1f --- /dev/null +++ b/src/b5t007001/stblib/src/STB_Tracker/STBTrValidValue.c @@ -0,0 +1,59 @@ +/*---------------------------------------------------------------------------*/ +/* Copyright(C) 2017 OMRON Corporation */ +/* */ +/* Licensed under the Apache License, Version 2.0 (the "License"); */ +/* you may not use this file except in compliance with the License. */ +/* You may obtain a copy of the License at */ +/* */ +/* http://www.apache.org/licenses/LICENSE-2.0 */ +/* */ +/* Unless required by applicable law or agreed to in writing, software */ +/* distributed under the License is distributed on an "AS IS" BASIS, */ +/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */ +/* See the License for the specific language governing permissions and */ +/* limitations under the License. */ +/*---------------------------------------------------------------------------*/ + +#include "STBTrValidValue.h" + +/*Value range check*/ +#define IS_OUT_RANGE( val , min , max )( ( (val) < (min) ) || ( (max) < (val) ) ) + +/*------------------------------------------------------------------------------------------------------------------*/ +/* STB_TrIsValidValue */ +/*------------------------------------------------------------------------------------------------------------------*/ +STB_INT32 STB_TrIsValidValue(const STB_TR_DET *input, STBExecFlg *execFlg) +{ + STB_INT32 i ; + + + + if( execFlg->bodyTr == STB_TRUE ) + { + if( IS_OUT_RANGE( input->bdNum , STB_BODY_CNT_MIN , STB_BODY_CNT_MAX ) ){ return STB_FALSE;} + for( i = 0 ; i < input->bdNum ; i++) + { + if( IS_OUT_RANGE( input->bdDet[i].posX , STB_BODY_XY_MIN , STB_BODY_XY_MAX ) ){ return STB_FALSE;} + if( IS_OUT_RANGE( input->bdDet[i].posY , STB_BODY_XY_MIN , STB_BODY_XY_MAX ) ){ return STB_FALSE;} + if( IS_OUT_RANGE( input->bdDet[i].size , STB_BODY_SIZE_MIN , STB_BODY_SIZE_MAX ) ){ return STB_FALSE;} + if( IS_OUT_RANGE( input->bdDet[i].conf , STB_BODY_CONF_MIN , STB_BODY_CONF_MAX ) ){ return STB_FALSE;} + } + + } + + if( execFlg->faceTr == STB_TRUE ) + { + if( IS_OUT_RANGE( input->fcNum , STB_FACE_CNT_MIN , STB_FACE_CNT_MAX ) ){ return STB_FALSE;} + for( i = 0 ; i < input->fcNum ; i++) + { + if( IS_OUT_RANGE( input->fcDet[i].posX , STB_FACE_XY_MIN , STB_FACE_XY_MAX ) ){ return STB_FALSE;} + if( IS_OUT_RANGE( input->fcDet[i].posY , STB_FACE_XY_MIN , STB_FACE_XY_MAX ) ){ return STB_FALSE;} + if( IS_OUT_RANGE( input->fcDet[i].size , STB_FACE_SIZE_MIN , STB_FACE_SIZE_MAX ) ){ return STB_FALSE;} + if( IS_OUT_RANGE( input->fcDet[i].conf , STB_FACE_CONF_MIN , STB_FACE_CONF_MAX ) ){ return STB_FALSE;} + } + } + + + + return STB_TRUE; +} \ No newline at end of file diff --git a/src/b5t007001/stblib/src/STB_Tracker/STBTrValidValue.h b/src/b5t007001/stblib/src/STB_Tracker/STBTrValidValue.h new file mode 100644 index 00000000..1f6efa15 --- /dev/null +++ b/src/b5t007001/stblib/src/STB_Tracker/STBTrValidValue.h @@ -0,0 +1,92 @@ +/*---------------------------------------------------------------------------*/ +/* Copyright(C) 2017 OMRON Corporation */ +/* */ +/* Licensed under the Apache License, Version 2.0 (the "License"); */ +/* you may not use this file except in compliance with the License. */ +/* You may obtain a copy of the License at */ +/* */ +/* http://www.apache.org/licenses/LICENSE-2.0 */ +/* */ +/* Unless required by applicable law or agreed to in writing, software */ +/* distributed under the License is distributed on an "AS IS" BASIS, */ +/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */ +/* See the License for the specific language governing permissions and */ +/* limitations under the License. */ +/*---------------------------------------------------------------------------*/ + +#ifndef STBTRVALIDVALUE_H__ +#define STBTRVALIDVALUE_H__ + + +#include "STBCommonDef.h" +#include "STBCommonType.h" +#include "STBTrTypedef.h" + +/*-------------------------------------------------------------------*/ +/*Threshold for checking input value*/ +/*-------------------------------------------------------------------*/ +#define STB_BODY_CNT_MIN 0 // body +#define STB_BODY_CNT_MAX 35 +#define STB_BODY_XY_MIN 0 +#define STB_BODY_XY_MAX 8191 +#define STB_BODY_SIZE_MIN 20 +#define STB_BODY_SIZE_MAX 8192 +#define STB_BODY_CONF_MIN 0 +#define STB_BODY_CONF_MAX 1000 +#define STB_FACE_CNT_MIN 0 // face +#define STB_FACE_CNT_MAX 35 +#define STB_FACE_XY_MIN 0 +#define STB_FACE_XY_MAX 8191 +#define STB_FACE_SIZE_MIN 20 +#define STB_FACE_SIZE_MAX 8192 +#define STB_FACE_CONF_MIN 0 +#define STB_FACE_CONF_MAX 1000 +#define STB_FACE_DIR_LR_MIN -180 +#define STB_FACE_DIR_LR_MAX 179 +#define STB_FACE_DIR_UD_MIN -180 +#define STB_FACE_DIR_UD_MAX 179 +#define STB_FACE_DIR_ROLL_MIN -180 +#define STB_FACE_DIR_ROLL_MAX 179 +#define STB_FACE_DIR_CONF_MIN 0 +#define STB_FACE_DIR_CONF_MAX 1000 +#define STB_FACE_AGE_VAL_MIN 0 +#define STB_FACE_AGE_VAL_MAX 75 +#define STB_FACE_AGE_CONF_MIN 0 +#define STB_FACE_AGE_CONF_MAX 1000 +#define STB_FACE_GEN_VAL_MIN 0 +#define STB_FACE_GEN_VAL_MAX 1 +#define STB_FACE_GEN_CONF_MIN 0 +#define STB_FACE_GEN_CONF_MAX 1000 +#define STB_FACE_GAZE_LR_MIN -90 +#define STB_FACE_GAZE_LR_MAX 90 +#define STB_FACE_GAZE_UD_MIN -90 +#define STB_FACE_GAZE_UD_MAX 90 +#define STB_FACE_BLI_L_MIN 1 +#define STB_FACE_BLI_L_MAX 1000 +#define STB_FACE_BLI_R_MIN 1 +#define STB_FACE_BLI_R_MAX 1000 +#define STB_FACE_EXP_SCORE_MIN 0 +#define STB_FACE_EXP_SCORE_MAX 100 /* not 1000 */ +#define STB_FACE_EXP_DEG_MIN -100 +#define STB_FACE_EXP_DEG_MAX 100 +#define STB_FACE_FR_UID_MIN 0 +#define STB_FACE_FR_UID_MAX 499 +#define STB_FACE_FR_SCORE_MIN 0 +#define STB_FACE_FR_SCORE_MAX 1000 + +/*-------------------------------------------------------------------*/ +/*Permitted input value*/ +/*-------------------------------------------------------------------*/ +#define STB_ERR_PE_CANNOT -128 /*Estimation is not possible.*/ +#define STB_ERR_FR_CANNOT -128 /*Recognition impossible*/ +#define STB_ERR_FR_NOID -1 /*No corresponding ID*/ +#define STB_ERR_FR_NOALBUM -127 /*Not-registered in Album*/ + + +/*-------------------------------------------------------------------*/ +/* Func */ +/*-------------------------------------------------------------------*/ +STB_INT32 STB_TrIsValidValue(const STB_TR_DET *input, STBExecFlg *execFlg); + +#endif /* COMMONDEF_H__ */ + diff --git a/src/b5t007001/stblib/src/STB_Tracker/SdkSTBTr.c b/src/b5t007001/stblib/src/STB_Tracker/SdkSTBTr.c new file mode 100644 index 00000000..1afd3efe --- /dev/null +++ b/src/b5t007001/stblib/src/STB_Tracker/SdkSTBTr.c @@ -0,0 +1,68 @@ +/*---------------------------------------------------------------------------*/ +/* Copyright(C) 2017 OMRON Corporation */ +/* */ +/* Licensed under the Apache License, Version 2.0 (the "License"); */ +/* you may not use this file except in compliance with the License. */ +/* You may obtain a copy of the License at */ +/* */ +/* http://www.apache.org/licenses/LICENSE-2.0 */ +/* */ +/* Unless required by applicable law or agreed to in writing, software */ +/* distributed under the License is distributed on an "AS IS" BASIS, */ +/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */ +/* See the License for the specific language governing permissions and */ +/* limitations under the License. */ +/*---------------------------------------------------------------------------*/ + +#include "SdkSTBTr.h" +#include "TrInterface.h" + +/*This layer only defines the API function */ + +/*Create/Delete handle*/ +STB_TR_HANDLE STB_Tr_CreateHandle( const STBExecFlg* execFlg ,const STB_INT32 nDetCntMax, const STB_INT32 nTraCntMax){ + return (STB_TR_HANDLE)TrCreateHandle( execFlg , nDetCntMax, nTraCntMax ); +} + +STB_INT32 STB_Tr_DeleteHandle(STB_TR_HANDLE handle){ + return TrDeleteHandle((TRHANDLE)handle); +} + +/*set frame information*/ +STB_INT32 STB_Tr_SetDetect(STB_TR_HANDLE handle,const STB_TR_DET *stbTrDet){ + return TrSetDetect((TRHANDLE)handle,stbTrDet); +} + +/*Main process execution*/ +STB_INT32 STB_Tr_Execute(STB_TR_HANDLE handle){ + return TrExecute((TRHANDLE)handle); +} + +/*get the result*/ +STB_INT32 STB_Tr_GetResult(STB_TR_HANDLE handle,STB_TR_RES_FACES* fcResult,STB_TR_RES_BODYS* bdResult){ + return TrGetResult((TRHANDLE)handle,fcResult,bdResult); +} + +/*Clear*/ +STB_INT32 STB_Tr_Clear( STB_TR_HANDLE handle ){ + return TrClear((TRHANDLE)handle); +} + +/*RetryCount*/ +STB_INT32 STB_Tr_SetRetryCount(STB_TR_HANDLE handle , STB_INT32 nRetryCount){ + return TrSetRetryCount((TRHANDLE)handle,nRetryCount); +} +STB_INT32 STB_Tr_GetRetryCount ( STB_TR_HANDLE handle , STB_INT32* nRetryCount ) +{ + return TrGetRetryCount((TRHANDLE)handle,nRetryCount); +} +/* Stediness */ +STB_INT32 STB_Tr_SetStedinessParam ( STB_TR_HANDLE handle , STB_INT32 nStedinessPos , STB_INT32 nStedinessSize ) +{ + return TrSetStedinessParam ((TRHANDLE)handle,nStedinessPos,nStedinessSize); +} +STB_INT32 STB_Tr_GetStedinessParam ( STB_TR_HANDLE handle , STB_INT32* nStedinessPos , STB_INT32* nStedinessSize ) +{ + return TrGetStedinessParam((TRHANDLE)handle,nStedinessPos,nStedinessSize); +} + diff --git a/src/b5t007001/stblib/src/STB_Tracker/SdkSTBTr.h b/src/b5t007001/stblib/src/STB_Tracker/SdkSTBTr.h new file mode 100644 index 00000000..0892d615 --- /dev/null +++ b/src/b5t007001/stblib/src/STB_Tracker/SdkSTBTr.h @@ -0,0 +1,41 @@ +/*---------------------------------------------------------------------------*/ +/* Copyright(C) 2017 OMRON Corporation */ +/* */ +/* Licensed under the Apache License, Version 2.0 (the "License"); */ +/* you may not use this file except in compliance with the License. */ +/* You may obtain a copy of the License at */ +/* */ +/* http://www.apache.org/licenses/LICENSE-2.0 */ +/* */ +/* Unless required by applicable law or agreed to in writing, software */ +/* distributed under the License is distributed on an "AS IS" BASIS, */ +/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */ +/* See the License for the specific language governing permissions and */ +/* limitations under the License. */ +/*---------------------------------------------------------------------------*/ + +#if !defined( _SDK_STBTR_H_ ) +#define _SDK_STBTR_H_ + +#include "STBTrTypedef.h" + +#if !defined( STB_DEF_TR_HANDLE ) + #define STB_DEF_TR_HANDLE + typedef VOID* STB_TR_HANDLE; +#endif + +STB_TR_HANDLE STB_Tr_CreateHandle ( const STBExecFlg* execFlg ,const STB_INT32 nDetCntMax, const STB_INT32 nTraCntMax);/*Create/Delete handle*/ + +STB_INT32 STB_Tr_DeleteHandle ( STB_TR_HANDLE handle );/*Create/Delete handle*/ +STB_INT32 STB_Tr_SetDetect ( STB_TR_HANDLE handle,const STB_TR_DET *stbTrDet );/*Frame information settings*/ +STB_INT32 STB_Tr_Execute ( STB_TR_HANDLE handle );/*Main process execution*/ +STB_INT32 STB_Tr_GetResult ( STB_TR_HANDLE handle,STB_TR_RES_FACES* fcResult,STB_TR_RES_BODYS* bdResult);/*get the result*/ +STB_INT32 STB_Tr_Clear ( STB_TR_HANDLE handle); + +/*parameter*/ +STB_INT32 STB_Tr_SetRetryCount ( STB_TR_HANDLE handle , STB_INT32 nRetryCount );/*RetryCount*/ +STB_INT32 STB_Tr_GetRetryCount ( STB_TR_HANDLE handle , STB_INT32* nRetryCount ); +STB_INT32 STB_Tr_SetStedinessParam ( STB_TR_HANDLE handle , STB_INT32 nStedinessPos , STB_INT32 nStedinessSize );/* Stediness */ +STB_INT32 STB_Tr_GetStedinessParam ( STB_TR_HANDLE handle , STB_INT32* nStedinessPos , STB_INT32* nStedinessSize ); + +#endif diff --git a/src/b5t007001/stblib/src/STB_Tracker/TrInterface.c b/src/b5t007001/stblib/src/STB_Tracker/TrInterface.c new file mode 100644 index 00000000..c60de3f6 --- /dev/null +++ b/src/b5t007001/stblib/src/STB_Tracker/TrInterface.c @@ -0,0 +1,603 @@ +/*---------------------------------------------------------------------------*/ +/* Copyright(C) 2017 OMRON Corporation */ +/* */ +/* Licensed under the Apache License, Version 2.0 (the "License"); */ +/* you may not use this file except in compliance with the License. */ +/* You may obtain a copy of the License at */ +/* */ +/* http://www.apache.org/licenses/LICENSE-2.0 */ +/* */ +/* Unless required by applicable law or agreed to in writing, software */ +/* distributed under the License is distributed on an "AS IS" BASIS, */ +/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */ +/* See the License for the specific language governing permissions and */ +/* limitations under the License. */ +/*---------------------------------------------------------------------------*/ + +#include "TrInterface.h" +#include "STBTrAPI.h" +/*Value range check*/ +#define ISVALID_RANGE( val , min , max ) ( ( (min) <= (val) ) && ( (val) <= (max) ) ) + +/*--------------------------------------------------------------------- +---------------------------------------------------------------------*/ +/*error check*/ +/*--------------------------------------------------------------------- +---------------------------------------------------------------------*/ +static STB_INT32 TrIsValidValue( + const STB_INT32 nValue , + const STB_INT32 nLimitMin , + const STB_INT32 nLimitMax ) +{ + STB_INT32 nRet; + for( nRet = STB_ERR_INVALIDPARAM; nRet != STB_NORMAL; nRet = STB_NORMAL ){ + if( ! ISVALID_RANGE( nValue , nLimitMin , nLimitMax ) ){ break; } + } + return nRet; +} +/*--------------------------------------------------------------------- +---------------------------------------------------------------------*/ +static STB_INT32 TrIsValidPointer( const VOID* pPointer ) +{ + STB_INT32 nRet; + for( nRet = STB_ERR_INVALIDPARAM; nRet != STB_NORMAL; nRet = STB_NORMAL ){ + if( NULL == pPointer ){ break; } + } + return nRet; +} + +/*------------------------------------------------------------------------------------------------------------------*/ +/* TrCalcTrSize */ +/*------------------------------------------------------------------------------------------------------------------*/ +STB_UINT32 TrCalcTrSize ( const STBExecFlg *execFlg , STB_UINT32 nTraCntMax , STB_UINT32 nDetCntMax ) +{ + STB_UINT32 retVal ; + + retVal = 0 ; + + retVal += 100 ;///Margin : alignment + + + retVal += sizeof( STB_TR_DET ); // stbTrDet + + if( execFlg->bodyTr == STB_TRUE ) + { + retVal += sizeof( ROI_SYS ) * STB_TR_BACK_MAX ;// bdRec + retVal += sizeof( STB_INT32 ) * STB_TR_BACK_MAX * nTraCntMax ;// bdRec[t].nDetID + retVal += sizeof( STB_INT32 ) * STB_TR_BACK_MAX * nTraCntMax ;// bdRec[t].nTraID + retVal += sizeof( STB_INT32 ) * STB_TR_BACK_MAX * nTraCntMax ;// bdRec[t].posX + retVal += sizeof( STB_INT32 ) * STB_TR_BACK_MAX * nTraCntMax ;// bdRec[t].posY + retVal += sizeof( STB_INT32 ) * STB_TR_BACK_MAX * nTraCntMax ;// bdRec[t].size + retVal += sizeof( STB_INT32 ) * STB_TR_BACK_MAX * nTraCntMax ;// bdRec[t].conf + retVal += sizeof( STB_INT32 ) * STB_TR_BACK_MAX * nTraCntMax ;// bdRec[t].retryN + retVal += sizeof( ROI_DET ) * nDetCntMax ;// stbTrDet->bdDet + retVal += sizeof( STB_TR_RES_BODYS) ;// resBodys + retVal += sizeof( STB_TR_RES ) * nTraCntMax ;// resBodys->body + } + if( execFlg->faceTr == STB_TRUE ) + { + retVal += sizeof( ROI_SYS ) * STB_TR_BACK_MAX ;// fcRec + retVal += sizeof( STB_INT32 ) * STB_TR_BACK_MAX * nTraCntMax ;// fcRec[t].nDetID + retVal += sizeof( STB_INT32 ) * STB_TR_BACK_MAX * nTraCntMax ;// fcRec[t].nTraID + retVal += sizeof( STB_INT32 ) * STB_TR_BACK_MAX * nTraCntMax ;// fcRec[t].posX + retVal += sizeof( STB_INT32 ) * STB_TR_BACK_MAX * nTraCntMax ;// fcRec[t].posY + retVal += sizeof( STB_INT32 ) * STB_TR_BACK_MAX * nTraCntMax ;// fcRec[t].size + retVal += sizeof( STB_INT32 ) * STB_TR_BACK_MAX * nTraCntMax ;// fcRec[t].conf + retVal += sizeof( STB_INT32 ) * STB_TR_BACK_MAX * nTraCntMax ;// fcRec[t].retryN + retVal += sizeof( ROI_DET ) * nDetCntMax ;// stbTrDet->fcDet + retVal += sizeof( STB_TR_RES_FACES) ;// resFaces + retVal += sizeof( STB_TR_RES ) * nTraCntMax ;// resFaces->face + } + + retVal += sizeof( STB_INT32 ) * nTraCntMax ; // wIdPreCur + retVal += sizeof( STB_INT32 ) * nTraCntMax ; // wIdCurPre + retVal += sizeof( STB_INT32 ) * nTraCntMax * nTraCntMax ; // wDstTbl + retVal += sizeof( STBExecFlg ) ; // execFlg + + retVal += ( sizeof( ROI_SYS ) );//wRoi + retVal += ( sizeof( STB_INT32 ) * nTraCntMax );//wRoi->nDetID + retVal += ( sizeof( STB_INT32 ) * nTraCntMax );//wRoi->nTraID + retVal += ( sizeof( STB_INT32 ) * nTraCntMax );//wRoi->posX + retVal += ( sizeof( STB_INT32 ) * nTraCntMax );//wRoi->posY + retVal += ( sizeof( STB_INT32 ) * nTraCntMax );//wRoi->size + retVal += ( sizeof( STB_INT32 ) * nTraCntMax );//wRoi->conf + retVal += ( sizeof( STB_INT32 ) * nTraCntMax );//wRoi->retryN + + return retVal; +} +/*------------------------------------------------------------------------------------------------------------------*/ +/* ShareTrSize */ +/*------------------------------------------------------------------------------------------------------------------*/ +void ShareTrSize ( TRHANDLE handle , const STBExecFlg* execFlg ) +{ + STB_UINT32 t ; + STB_UINT32 nTraCntMax = handle->traCntMax ; + STB_UINT32 nDetCntMax = handle->detCntMax ; + STB_INT8 *stbPtr = handle->trPtr ; + + + + handle->stbTrDet = ( STB_TR_DET*) stbPtr; stbPtr += ( sizeof( STB_TR_DET ) ); + + if( execFlg->bodyTr == STB_TRUE ) + { + handle->bdRec = ( ROI_SYS* ) stbPtr; stbPtr += ( sizeof( ROI_SYS ) * STB_TR_BACK_MAX); + for( t = 0 ; t < STB_TR_BACK_MAX ; t++ ) + { + handle->bdRec[t].nDetID = ( STB_INT32* ) stbPtr; stbPtr += ( sizeof( STB_INT32 ) * nTraCntMax ); + handle->bdRec[t].nTraID = ( STB_INT32* ) stbPtr; stbPtr += ( sizeof( STB_INT32 ) * nTraCntMax ); + handle->bdRec[t].posX = ( STB_INT32* ) stbPtr; stbPtr += ( sizeof( STB_INT32 ) * nTraCntMax ); + handle->bdRec[t].posY = ( STB_INT32* ) stbPtr; stbPtr += ( sizeof( STB_INT32 ) * nTraCntMax ); + handle->bdRec[t].size = ( STB_INT32* ) stbPtr; stbPtr += ( sizeof( STB_INT32 ) * nTraCntMax ); + handle->bdRec[t].conf = ( STB_INT32* ) stbPtr; stbPtr += ( sizeof( STB_INT32 ) * nTraCntMax ); + handle->bdRec[t].retryN = ( STB_INT32* ) stbPtr; stbPtr += ( sizeof( STB_INT32 ) * nTraCntMax ); + } + handle->stbTrDet->bdDet = ( ROI_DET* ) stbPtr; stbPtr += ( sizeof( ROI_DET ) * nDetCntMax ); + handle->resBodys = ( STB_TR_RES_BODYS* ) stbPtr; stbPtr += ( sizeof( STB_TR_RES_BODYS ) ); + handle->resBodys->body = ( STB_TR_RES*) stbPtr; stbPtr += ( sizeof( STB_TR_RES ) * nTraCntMax ); + } + + + if( execFlg->faceTr == STB_TRUE ) + { + handle->fcRec = ( ROI_SYS* ) stbPtr; stbPtr += ( sizeof( ROI_SYS ) * STB_TR_BACK_MAX ); + for( t = 0 ; t < STB_TR_BACK_MAX ; t++ ) + { + handle->fcRec[t].nDetID = ( STB_INT32* ) stbPtr; stbPtr += ( sizeof( STB_INT32 ) * nTraCntMax ); + handle->fcRec[t].nTraID = ( STB_INT32* ) stbPtr; stbPtr += ( sizeof( STB_INT32 ) * nTraCntMax ); + handle->fcRec[t].posX = ( STB_INT32* ) stbPtr; stbPtr += ( sizeof( STB_INT32 ) * nTraCntMax ); + handle->fcRec[t].posY = ( STB_INT32* ) stbPtr; stbPtr += ( sizeof( STB_INT32 ) * nTraCntMax ); + handle->fcRec[t].size = ( STB_INT32* ) stbPtr; stbPtr += ( sizeof( STB_INT32 ) * nTraCntMax ); + handle->fcRec[t].conf = ( STB_INT32* ) stbPtr; stbPtr += ( sizeof( STB_INT32 ) * nTraCntMax ); + handle->fcRec[t].retryN = ( STB_INT32* ) stbPtr; stbPtr += ( sizeof( STB_INT32 ) * nTraCntMax ); + } + handle->stbTrDet->fcDet = ( ROI_DET* ) stbPtr; stbPtr += ( sizeof( ROI_DET ) * nDetCntMax ); + + handle->resFaces = ( STB_TR_RES_FACES* ) stbPtr; stbPtr += ( sizeof( STB_TR_RES_FACES ) ); + handle->resFaces->face = ( STB_TR_RES*) stbPtr; stbPtr += ( sizeof( STB_TR_RES ) * nTraCntMax ); + } + + + handle->wIdPreCur = ( STB_INT32* ) stbPtr; stbPtr += ( sizeof( STB_INT32 ) * nTraCntMax ); + handle->wIdCurPre = ( STB_INT32* ) stbPtr; stbPtr += ( sizeof( STB_INT32 ) * nTraCntMax ); + handle->wDstTbl = ( STB_INT32* ) stbPtr; stbPtr += ( sizeof( STB_INT32 ) * nTraCntMax * nTraCntMax ); + handle->execFlg = ( STBExecFlg*) stbPtr; stbPtr += sizeof( STBExecFlg ); + + handle->wRoi = ( ROI_SYS* ) stbPtr; stbPtr += ( sizeof( ROI_SYS ) ); + handle->wRoi->nDetID= ( STB_INT32* ) stbPtr; stbPtr += ( sizeof( STB_INT32 ) * nTraCntMax ); + handle->wRoi->nTraID= ( STB_INT32* ) stbPtr; stbPtr += ( sizeof( STB_INT32 ) * nTraCntMax ); + handle->wRoi->posX = ( STB_INT32* ) stbPtr; stbPtr += ( sizeof( STB_INT32 ) * nTraCntMax ); + handle->wRoi->posY = ( STB_INT32* ) stbPtr; stbPtr += ( sizeof( STB_INT32 ) * nTraCntMax ); + handle->wRoi->size = ( STB_INT32* ) stbPtr; stbPtr += ( sizeof( STB_INT32 ) * nTraCntMax ); + handle->wRoi->conf = ( STB_INT32* ) stbPtr; stbPtr += ( sizeof( STB_INT32 ) * nTraCntMax ); + handle->wRoi->retryN= ( STB_INT32* ) stbPtr; stbPtr += ( sizeof( STB_INT32 ) * nTraCntMax ); +} +/*--------------------------------------------------------------------- +---------------------------------------------------------------------*/ +/*Create handle*/ +TRHANDLE TrCreateHandle( const STBExecFlg* execFlg ,const STB_INT32 nDetCntMax, const STB_INT32 nTraCntMax ) +{ + + TRHANDLE handle ; + STB_INT32 i ,j ; + STB_INT32 tmpVal ; + STB_INT32 nRet ; + + nRet = TrIsValidPointer(execFlg); + if(nRet != STB_NORMAL) + { + return NULL; + } + + if( nDetCntMax < 1 || STB_TR_DET_CNT_MAX < nDetCntMax ) + { + return NULL; + } + if( nTraCntMax < 1 || STB_TR_TRA_CNT_MAX < nTraCntMax ) + { + return NULL; + } + + /*do handle's Malloc here*/ + handle = ( TRHANDLE )malloc( sizeof(*handle) ); + if(handle == NULL) + { + return NULL; + } + + handle->detCntMax = nDetCntMax ; + handle->traCntMax = nTraCntMax ; + handle->retryCnt = STB_TR_INI_RETRY ; + handle->stedPos = STB_TR_INI_STEADINESS_SIZE ;//stabilization parameter(position) + handle->stedSize = STB_TR_INI_STEADINESS_POS ;//stabilization parameter(size) + handle->fcCntAcc = 0 ; + handle->bdCntAcc = 0 ; + handle->trPtr = NULL; + handle->stbTrDet = NULL; + handle->fcRec = NULL; + handle->bdRec = NULL; + handle->resFaces = NULL; + handle->resBodys = NULL; + handle->wIdPreCur = NULL; + handle->wIdCurPre = NULL; + handle->wDstTbl = NULL; + handle->execFlg = NULL; + + tmpVal = TrCalcTrSize ( execFlg ,nTraCntMax , nDetCntMax); /*calculate necessary amount in the TR handle*/ + handle->trPtr = NULL; + handle->trPtr = ( STB_INT8 * )malloc( tmpVal ) ; /*keep necessary amount in the TR handle*/ + if( handle->trPtr == NULL ) + { + free ( handle->trPtr ); + free ( handle ); + return NULL; + } + ShareTrSize ( handle , execFlg ); /*Malloc-area is allocated to things that need Malloc in TR handle*/ + + /*set initial value*/ + if( execFlg->faceTr == STB_TRUE ) + { + for( i = 0 ; i < STB_TR_BACK_MAX ; i++) + { + handle->fcRec[i].cnt= 0; + for( j = 0 ; j < handle->traCntMax ; j++) + { + handle->fcRec[i].nDetID [j] = -1; + handle->fcRec[i].nTraID [j] = -1; + handle->fcRec[i].posX [j] = 0; + handle->fcRec[i].posY [j] = 0; + handle->fcRec[i].size [j] = -1; + handle->fcRec[i].retryN [j] = -1; + handle->fcRec[i].conf [j] = -1; + } + } + } + if( execFlg->bodyTr == STB_TRUE ) + { + for( i = 0 ; i < STB_TR_BACK_MAX ; i++) + { + handle->bdRec[i].cnt= 0; + for( j = 0 ; j < handle->traCntMax ; j++) + { + handle->bdRec[i].nDetID [j] = -1; + handle->bdRec[i].nTraID [j] = -1; + handle->bdRec[i].posX [j] = 0; + handle->bdRec[i].posY [j] = 0; + handle->bdRec[i].size [j] = -1; + handle->bdRec[i].retryN [j] = -1; + handle->bdRec[i].conf [j] = -1; + } + } + } + + + + handle->execFlg->pet = execFlg->pet ; + handle->execFlg->hand = execFlg->hand ; + handle->execFlg->bodyTr = execFlg->bodyTr ; + handle->execFlg->faceTr = execFlg->faceTr ; + handle->execFlg->gen = execFlg->gen ; + handle->execFlg->age = execFlg->age ; + handle->execFlg->fr = execFlg->fr ; + handle->execFlg->exp = execFlg->exp ; + handle->execFlg->gaz = execFlg->gaz ; + handle->execFlg->dir = execFlg->dir ; + handle->execFlg->bli = execFlg->bli ; + + + return handle; +} +/*--------------------------------------------------------------------- +---------------------------------------------------------------------*/ + +/*Delete handle*/ +STB_INT32 TrDeleteHandle(TRHANDLE handle) +{ + STB_INT32 nRet; + + /*NULL check*/ + nRet = TrIsValidPointer(handle); + if(nRet != STB_NORMAL){ + return STB_ERR_NOHANDLE; + } + + free ( handle->trPtr ); + free ( handle ); + + return STB_NORMAL; +} + +/*--------------------------------------------------------------------- +---------------------------------------------------------------------*/ +/*Set the result*/ +STB_INT32 TrSetDetect(TRHANDLE handle,const STB_TR_DET *stbTrDet){ + STB_INT32 nRet; + STB_INT32 i; + + /*NULL check*/ + nRet = TrIsValidPointer(handle); + if(nRet != STB_NORMAL) + { + return STB_ERR_NOHANDLE; + } + + nRet = TrIsValidPointer(stbTrDet); + if(nRet != STB_NORMAL) + { + return nRet; + } + + /*Input value check*/ + nRet = STB_TrIsValidValue ( stbTrDet ,handle->execFlg ); + if(nRet != STB_TRUE) + { + return STB_ERR_INVALIDPARAM; + } + + /*Set the received result to the handle (stbTrDet)*/ + /* Face */ + if( handle->execFlg->faceTr == STB_TRUE ) + { + handle->stbTrDet->fcNum = stbTrDet->fcNum; + for( i = 0 ; i < handle->stbTrDet->fcNum ; i++ ) + { + handle->stbTrDet->fcDet[i].posX = stbTrDet->fcDet[i].posX; + handle->stbTrDet->fcDet[i].posY = stbTrDet->fcDet[i].posY; + handle->stbTrDet->fcDet[i].size = stbTrDet->fcDet[i].size; + handle->stbTrDet->fcDet[i].conf = stbTrDet->fcDet[i].conf; + } + }else + { + handle->stbTrDet->fcNum = 0; + } + + /* Body */ + if( handle->execFlg->bodyTr == STB_TRUE ) + { + handle->stbTrDet->bdNum = stbTrDet->bdNum; + for( i = 0 ; i < handle->stbTrDet->bdNum ; i++ ) + { + handle->stbTrDet->bdDet[i].posX = stbTrDet->bdDet[i].posX; + handle->stbTrDet->bdDet[i].posY = stbTrDet->bdDet[i].posY; + handle->stbTrDet->bdDet[i].size = stbTrDet->bdDet[i].size; + handle->stbTrDet->bdDet[i].conf = stbTrDet->bdDet[i].conf; + } + }else + { + handle->stbTrDet->bdNum = 0; + } + + + + return STB_NORMAL; +} +/*--------------------------------------------------------------------- +---------------------------------------------------------------------*/ +/*Main process execution*/ +STB_INT32 TrExecute(TRHANDLE handle){ + + STB_INT32 nRet; + /*NULL check*/ + nRet = TrIsValidPointer(handle); + if(nRet != STB_NORMAL){ + return STB_ERR_NOHANDLE; + } + + /*Main processing here*/ + nRet = StbTrExec ( handle ); + + + return STB_NORMAL; +} +/*--------------------------------------------------------------------- +---------------------------------------------------------------------*/ +/*Get-Function of results*/ +STB_INT32 TrGetResult(TRHANDLE handle,STB_TR_RES_FACES* fcResult,STB_TR_RES_BODYS* bdResult){ + + STB_INT32 nRet; + STB_INT32 i; + + /*NULL check*/ + nRet = TrIsValidPointer(handle); + if(nRet != STB_NORMAL){ + return STB_ERR_NOHANDLE; + } + + if( handle->execFlg->faceTr == STB_TRUE ) + { + nRet = TrIsValidPointer(fcResult); + if(nRet != STB_NORMAL){ + return nRet; + } + } + if( handle->execFlg->bodyTr == STB_TRUE ) + { + nRet = TrIsValidPointer(bdResult); + if(nRet != STB_NORMAL){ + return nRet; + } + } + + /*Get result from handle*/ + + /* Face */ + if( handle->execFlg->faceTr == STB_TRUE ) + { + fcResult->cnt = handle->resFaces->cnt ; + for( i = 0 ; i < handle->resFaces->cnt ; i++ ) + { + fcResult->face[i].nDetID = handle->resFaces->face[i].nDetID ; + fcResult->face[i].nTraID = handle->resFaces->face[i].nTraID ; + fcResult->face[i].pos.x = handle->resFaces->face[i].pos.x ; + fcResult->face[i].pos.y = handle->resFaces->face[i].pos.y ; + fcResult->face[i].size = handle->resFaces->face[i].size ; + fcResult->face[i].conf = handle->resFaces->face[i].conf ; + } + for( i = handle->resFaces->cnt ; i < handle->traCntMax ; i++ ) + { + fcResult->face[i].nDetID = -1 ; + fcResult->face[i].nTraID = -1 ; + fcResult->face[i].pos.x = 0 ; + fcResult->face[i].pos.y = 0 ; + fcResult->face[i].size = -1 ; + fcResult->face[i].conf = STB_CONF_NO_DATA ; + } + } + + /* Body */ + if( handle->execFlg->bodyTr == STB_TRUE ) + { + bdResult->cnt = handle->resBodys->cnt ; + for( i = 0 ; i < handle->resBodys->cnt ; i++ ) + { + bdResult->body[i].nDetID = handle->resBodys->body[i].nDetID ; + bdResult->body[i].nTraID = handle->resBodys->body[i].nTraID ; + bdResult->body[i].pos.x = handle->resBodys->body[i].pos.x ; + bdResult->body[i].pos.y = handle->resBodys->body[i].pos.y ; + bdResult->body[i].size = handle->resBodys->body[i].size ; + bdResult->body[i].conf = handle->resBodys->body[i].conf ; + } + for( i = handle->resBodys->cnt ; i < handle->traCntMax ; i++ ) + { + bdResult->body[i].nDetID = -1 ; + bdResult->body[i].nTraID = -1 ; + bdResult->body[i].pos.x = 0 ; + bdResult->body[i].pos.y = 0 ; + bdResult->body[i].size = -1 ; + bdResult->body[i].conf = STB_CONF_NO_DATA ; + } + } + + return STB_NORMAL; +} +/*--------------------------------------------------------------------- +---------------------------------------------------------------------*/ +/*Clear*/ +STB_INT32 TrClear(TRHANDLE handle){ + + STB_INT32 nRet; + STB_INT32 i , j; + + + /*NULL check*/ + nRet = TrIsValidPointer(handle); + if(nRet != STB_NORMAL){ + return STB_ERR_NOHANDLE; + } + + + if( handle->execFlg->faceTr == STB_TRUE ) + { + for( i = 0 ; i < STB_TR_BACK_MAX ; i++) + { + handle->fcRec[i].cnt= 0; + for( j = 0 ; j < handle->traCntMax ; j++) + { + handle->fcRec[i].nDetID [j] = -1; + handle->fcRec[i].nTraID [j] = -1; + handle->fcRec[i].posX [j] = 0 ; + handle->fcRec[i].posY [j] = 0 ; + handle->fcRec[i].size [j] = -1; + handle->fcRec[i].retryN [j] = -1; + handle->fcRec[i].conf [j] = -1; + } + } + handle->fcCntAcc = 0; + } + + if( handle->execFlg->bodyTr == STB_TRUE ) + { + for( i = 0 ; i < STB_TR_BACK_MAX ; i++) + { + handle->bdRec[i].cnt= 0; + for( j = 0 ; j < handle->traCntMax ; j++) + { + handle->bdRec[i].nDetID [j] = -1; + handle->bdRec[i].nTraID [j] = -1; + handle->bdRec[i].posX [j] = 0 ; + handle->bdRec[i].posY [j] = 0 ; + handle->bdRec[i].size [j] = -1; + handle->bdRec[i].retryN [j] = -1; + handle->bdRec[i].conf [j] = -1; + } + } + handle->bdCntAcc = 0; + } + + return STB_NORMAL; +} +/*--------------------------------------------------------------------- +---------------------------------------------------------------------*/ +/* */ +STB_INT32 TrSetRetryCount(TRHANDLE handle, STB_INT32 nRetryCount) +{ + STB_INT32 nRet; + nRet = TrIsValidPointer(handle); + if(nRet != STB_NORMAL){ + return STB_ERR_NOHANDLE; + } + + if( nRetryCount < STB_TR_MIN_RETRY || STB_TR_MAX_RETRY < nRetryCount) + { + return STB_ERR_INVALIDPARAM; + } + + handle->retryCnt = nRetryCount; + return STB_NORMAL; +} +/*--------------------------------------------------------------------- +---------------------------------------------------------------------*/ +STB_INT32 TrGetRetryCount ( TRHANDLE handle , STB_INT32* nRetryCount ) +{ + STB_INT32 nRet; + nRet = TrIsValidPointer(handle); + if(nRet != STB_NORMAL){ + return STB_ERR_NOHANDLE; + } + nRet = TrIsValidPointer(nRetryCount); + if(nRet != STB_NORMAL){ + return STB_ERR_INVALIDPARAM; + } + + *nRetryCount = handle->retryCnt ; + return STB_NORMAL; +} +/*--------------------------------------------------------------------- +---------------------------------------------------------------------*/ +STB_INT32 TrSetStedinessParam ( TRHANDLE handle , STB_INT32 nStedinessPos , STB_INT32 nStedinessSize ) +{ + if( nStedinessPos < STB_TR_MIN_STEADINESS_POS || STB_TR_MAX_STEADINESS_POS < nStedinessPos) + { + return STB_ERR_INVALIDPARAM; + } + if( nStedinessSize < STB_TR_MIN_STEADINESS_SIZE || STB_TR_MAX_STEADINESS_SIZE < nStedinessSize) + { + return STB_ERR_INVALIDPARAM; + } + handle->stedPos = nStedinessPos; + handle->stedSize = nStedinessSize; + return STB_NORMAL; +} +/*--------------------------------------------------------------------- +---------------------------------------------------------------------*/ +STB_INT32 TrGetStedinessParam ( TRHANDLE handle , STB_INT32* nStedinessPos , STB_INT32* nStedinessSize ) +{ + STB_INT32 nRet; + nRet = TrIsValidPointer(handle); + if(nRet != STB_NORMAL){ + return STB_ERR_NOHANDLE; + } + nRet = TrIsValidPointer(nStedinessPos); + if(nRet != STB_NORMAL){ + return STB_ERR_INVALIDPARAM; + } + nRet = TrIsValidPointer(nStedinessSize); + if(nRet != STB_NORMAL){ + return STB_ERR_INVALIDPARAM; + } + *nStedinessPos = handle->stedPos ; + *nStedinessSize = handle->stedSize ; + return STB_NORMAL; +} +/*--------------------------------------------------------------------- +---------------------------------------------------------------------*/ \ No newline at end of file diff --git a/src/b5t007001/stblib/src/STB_Tracker/TrInterface.h b/src/b5t007001/stblib/src/STB_Tracker/TrInterface.h new file mode 100644 index 00000000..d1e42161 --- /dev/null +++ b/src/b5t007001/stblib/src/STB_Tracker/TrInterface.h @@ -0,0 +1,128 @@ +/*---------------------------------------------------------------------------*/ +/* Copyright(C) 2017 OMRON Corporation */ +/* */ +/* Licensed under the Apache License, Version 2.0 (the "License"); */ +/* you may not use this file except in compliance with the License. */ +/* You may obtain a copy of the License at */ +/* */ +/* http://www.apache.org/licenses/LICENSE-2.0 */ +/* */ +/* Unless required by applicable law or agreed to in writing, software */ +/* distributed under the License is distributed on an "AS IS" BASIS, */ +/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */ +/* See the License for the specific language governing permissions and */ +/* limitations under the License. */ +/*---------------------------------------------------------------------------*/ + +#if !defined( _INTERFACE_H_ ) +#define _INTERFACE_H_ +#include "STBTrTypedef.h" +#include "STBCommonDef.h" +#include "STBCommonType.h" +#include "STBTrValidValue.h" + +#ifdef __cplusplus +extern "C" { +#endif + + +////////////////////////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////////// +/////////// Define ////////////// +////////////////////////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////////// + +/* refer to past "STB_BACK_MAX-1" frames of results */ +#define STB_TR_BACK_MAX 2 + +#define STB_TR_DET_CNT_MAX 35 +#define STB_TR_TRA_CNT_MAX 35 + +//If the face isn't find out during tracking, set until how many frames can look for it. +//In the case of tracking failed with a specified number of frames consecutively, end of tracking as the face lost. +#define STB_TR_INI_RETRY 2 +#define STB_TR_MIN_RETRY 0 +#define STB_TR_MAX_RETRY 300 + +//Specifies settings % +//For example, about the percentage of detected position change, setting the value to 30(<- initialize value) +//in the case of position change under 30 percentage from the previous frame, output detected position of the previous frame +//When it exceeds 30%, the detection position coordinate is output as it is. +#define STB_TR_INI_STEADINESS_POS 30 +#define STB_TR_MIN_STEADINESS_POS 0 +#define STB_TR_MAX_STEADINESS_POS 100 + +//Specifies settings % +//In the case of the percentage of detection size change setting to 30(<- initialize value) +//in the case of size change under 30 percentage from the previous frame, output detected size of the previous frame +//When it exceeds 30%, the detection size is output as it is. +#define STB_TR_INI_STEADINESS_SIZE 30 +#define STB_TR_MIN_STEADINESS_SIZE 0 +#define STB_TR_MAX_STEADINESS_SIZE 100 + + +////////////////////////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////////// +/////////// Struct ////////////// +////////////////////////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////////// + + +typedef struct{ + STB_INT32 cnt ; + STB_INT32 *nDetID ; /*previous detected result ID*/ + STB_INT32 *nTraID ; /*Tracking ID*/ + STB_INT32 *posX ; /* Center x-coordinate */ + STB_INT32 *posY ; /* Center y-coordinate */ + STB_INT32 *size ; /* Size */ + STB_INT32 *conf ; /* Degree of confidence */ + STB_INT32 *retryN ; /*Continuous retry count*/ +}ROI_SYS; + + +/*---------------------------------------------------------------------------*/ +typedef struct tagPEHANDLE { + STB_INT8 *trPtr ; + STB_INT32 detCntMax ;//Maximum of detected people + STB_INT32 traCntMax ;//Maximum number of tracking people + STB_INT32 retryCnt ;//Retry count + STB_INT32 stedPos ;//stabilization parameter(position) + STB_INT32 stedSize ;//stabilization parameter(size) + STB_INT32 fcCntAcc ;//Number of faces (cumulative) + STB_INT32 bdCntAcc ;//a number of human bodies(cumulative) + STB_TR_DET *stbTrDet ;//Present data before the stabilization(input). + ROI_SYS *fcRec ;//past data + ROI_SYS *bdRec ;//past data + STB_TR_RES_FACES *resFaces ;//present data after the stabilization(output) + STB_TR_RES_BODYS *resBodys ;//present data after the stabilization(output) + STB_INT32 *wIdPreCur ; + STB_INT32 *wIdCurPre ; + STB_INT32 *wDstTbl ; + STBExecFlg *execFlg ; + ROI_SYS *wRoi ; +} *TRHANDLE; + +////////////////////////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////////// +/////////// Func ////////////// +////////////////////////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////////// + +TRHANDLE TrCreateHandle ( const STBExecFlg* execFlg ,const STB_INT32 nDetCntMax, const STB_INT32 nTraCntMax ); +STB_INT32 TrDeleteHandle ( TRHANDLE handle); +STB_INT32 TrSetDetect ( TRHANDLE handle , const STB_TR_DET *stbTrDet); +STB_INT32 TrExecute ( TRHANDLE handle); +STB_INT32 TrClear ( TRHANDLE handle); +STB_INT32 TrGetResult ( TRHANDLE handle , STB_TR_RES_FACES* fcResult,STB_TR_RES_BODYS* bdResult); +STB_INT32 TrSetRetryCount ( TRHANDLE handle , STB_INT32 nRetryCount ); +STB_INT32 TrGetRetryCount ( TRHANDLE handle , STB_INT32* nRetryCount ); +STB_INT32 TrSetStedinessParam ( TRHANDLE handle , STB_INT32 nStedinessPos , STB_INT32 nStedinessSize ); +STB_INT32 TrGetStedinessParam ( TRHANDLE handle , STB_INT32* nStedinessPos , STB_INT32* nStedinessSize ); + + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/b5t007001/stblib/src/include/STBCommonDef.h b/src/b5t007001/stblib/src/include/STBCommonDef.h new file mode 100644 index 00000000..c06cf5ba --- /dev/null +++ b/src/b5t007001/stblib/src/include/STBCommonDef.h @@ -0,0 +1,52 @@ +/*---------------------------------------------------------------------------*/ +/* Copyright(C) 2017 OMRON Corporation */ +/* */ +/* Licensed under the Apache License, Version 2.0 (the "License"); */ +/* you may not use this file except in compliance with the License. */ +/* You may obtain a copy of the License at */ +/* */ +/* http://www.apache.org/licenses/LICENSE-2.0 */ +/* */ +/* Unless required by applicable law or agreed to in writing, software */ +/* distributed under the License is distributed on an "AS IS" BASIS, */ +/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */ +/* See the License for the specific language governing permissions and */ +/* limitations under the License. */ +/*---------------------------------------------------------------------------*/ + +#ifndef COMMONDEF_H__ +#define COMMONDEF_H__ +#include + +/* Executed flag */ +#define STB_FUNC_BD (0x00000001U) /* [LSB]bit0: Body Tracking 00000000001 */ +#define STB_FUNC_DT (0x00000004U) /* [LSB]bit2: Face Tracking 00000000100 */ +#define STB_FUNC_PT (0x00000008U) /* [LSB]bit3: Face Direction 00000001000 */ +#define STB_FUNC_AG (0x00000010U) /* [LSB]bit4: Age Estimation 00000010000 */ +#define STB_FUNC_GN (0x00000020U) /* [LSB]bit5: Gender Estimation 00000100000 */ +#define STB_FUNC_GZ (0x00000040U) /* [LSB]bit6: Gaze Estimation 00001000000 */ +#define STB_FUNC_BL (0x00000080U) /* [LSB]bit7: Blink Estimation 00010000000 */ +#define STB_FUNC_EX (0x00000100U) /* [MSB]bit0: Expression Estimation 00100000000 */ +#define STB_FUNC_FR (0x00000200U) /* [MSB]bit1: Face Recognition 01000000000 */ + + + +/*STB library's error code*/ +#define STB_NORMAL (0) /*Successful completion*/ +#define STB_ERR_INITIALIZE (-2) /*Initialization error*/ +#define STB_ERR_INVALIDPARAM (-3) /*argument error*/ +#define STB_ERR_NOHANDLE (-7) /*handle error*/ +#define STB_ERR_PROCESSCONDITION (-8) /*When the processing condition is not satisfied*/ + +#define STB_TRUE (1) +#define STB_FALSE (0) + + + +#if !defined(STB_API) +/*Import(Application Default)*/ + #define STB_API __declspec( dllimport ) +#endif /* OKAO_API || OMCV_API */ + +#endif /* COMMONDEF_H__ */ + diff --git a/src/b5t007001/stblib/src/include/STBCommonType.h b/src/b5t007001/stblib/src/include/STBCommonType.h new file mode 100644 index 00000000..b0a1beee --- /dev/null +++ b/src/b5t007001/stblib/src/include/STBCommonType.h @@ -0,0 +1,41 @@ +/*---------------------------------------------------------------------------*/ +/* Copyright(C) 2017 OMRON Corporation */ +/* */ +/* Licensed under the Apache License, Version 2.0 (the "License"); */ +/* you may not use this file except in compliance with the License. */ +/* You may obtain a copy of the License at */ +/* */ +/* http://www.apache.org/licenses/LICENSE-2.0 */ +/* */ +/* Unless required by applicable law or agreed to in writing, software */ +/* distributed under the License is distributed on an "AS IS" BASIS, */ +/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */ +/* See the License for the specific language governing permissions and */ +/* limitations under the License. */ +/*---------------------------------------------------------------------------*/ + +#ifndef __STBCOMMONTYPEDEF_H__ +#define __STBCOMMONTYPEDEF_H__ +#include "STBTypedefOutput.h" + + + + +typedef struct { + STB_INT32 pet ;//Spare : Pet + STB_INT32 hand ;//Spare : Hand + STB_INT32 bodyTr ;//human body tracking + STB_INT32 faceTr ;// Face tracking + STB_INT32 gen ;//Gender + STB_INT32 age ;//Age + STB_INT32 fr ;//Face recognition + STB_INT32 exp ;//Facial expression + STB_INT32 gaz ;//Gaze + STB_INT32 dir ;//Face direction + STB_INT32 bli ;//Blink +}STBExecFlg; + + + +#endif /*__STBCOMMONTYPEDEF_H__*/ + diff --git a/src/b5t007001/stblib/src/include/STBFaceInfo.h b/src/b5t007001/stblib/src/include/STBFaceInfo.h new file mode 100644 index 00000000..d8a551b4 --- /dev/null +++ b/src/b5t007001/stblib/src/include/STBFaceInfo.h @@ -0,0 +1,29 @@ +/*---------------------------------------------------------------------------*/ +/* Copyright(C) 2017 OMRON Corporation */ +/* */ +/* Licensed under the Apache License, Version 2.0 (the "License"); */ +/* you may not use this file except in compliance with the License. */ +/* You may obtain a copy of the License at */ +/* */ +/* http://www.apache.org/licenses/LICENSE-2.0 */ +/* */ +/* Unless required by applicable law or agreed to in writing, software */ +/* distributed under the License is distributed on an "AS IS" BASIS, */ +/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */ +/* See the License for the specific language governing permissions and */ +/* limitations under the License. */ +/*---------------------------------------------------------------------------*/ + +#ifndef STBFACEINFO_H__ +#define STBFACEINFO_H__ +#include "STBTypedefInput.h" +#include "STBHandle.h" + +VOID SetFaceObject (const STB_FRAME_RESULT_FACES* stbINPUTfaces,FaceObj *faces , const STBExecFlg *execFlg , const STB_INT32 nTraCntMax ); +VOID SetTrackingIDToFace(STB_INT32 TrackingNum,STB_INT32 DetectNum, TraObj *track,FaceObj *faces, const STBExecFlg *execFlg ); +VOID SetFaceToPeInfo (STB_INT32 TrackingNum,FaceObj *faces,STB_PE_DET *peInfo); +VOID SetFaceToFrInfo (STB_INT32 TrackingNum,FaceObj *faces,STB_FR_DET *frInfo); +VOID SetPeInfoToFace (STB_INT32 TrackingNum,STB_PE_RES *peInfo,FaceObj *faces , const STBExecFlg *execFlg ); +VOID SetFrInfoToFace (STB_INT32 TrackingNum,STB_FR_RES *frInfo,FaceObj *faces); + +#endif \ No newline at end of file diff --git a/src/b5t007001/stblib/src/include/STBFrTypedef.h b/src/b5t007001/stblib/src/include/STBFrTypedef.h new file mode 100644 index 00000000..efc037d7 --- /dev/null +++ b/src/b5t007001/stblib/src/include/STBFrTypedef.h @@ -0,0 +1,65 @@ +/*---------------------------------------------------------------------------*/ +/* Copyright(C) 2017 OMRON Corporation */ +/* */ +/* Licensed under the Apache License, Version 2.0 (the "License"); */ +/* you may not use this file except in compliance with the License. */ +/* You may obtain a copy of the License at */ +/* */ +/* http://www.apache.org/licenses/LICENSE-2.0 */ +/* */ +/* Unless required by applicable law or agreed to in writing, software */ +/* distributed under the License is distributed on an "AS IS" BASIS, */ +/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */ +/* See the License for the specific language governing permissions and */ +/* limitations under the License. */ +/*---------------------------------------------------------------------------*/ + +#ifndef __STBFRTYPEDEF_H__ +#define __STBFRTYPEDEF_H__ + +#include "STBTypedefOutput.h" +#include "STBCommonType.h" +#include "STBCommonDef.h" + + +/*----------------------------------------------------------------------------*/ +/* Face Detection & Estimations results */ +/*----------------------------------------------------------------------------*/ +typedef struct{ + STB_INT32 nDetID ; /*Person number detected in the current frame*/ + STB_INT32 nTraID ; /*Tracking person number in the through frame*/ + STB_INT32 dirDetYaw ; + STB_INT32 dirDetPitch ; + STB_INT32 dirDetRoll ; + STB_INT32 dirDetConf ; + STB_INT32 frDetID ; + STB_INT32 frDetConf ; + STB_STATUS frStatus ; +}FR_DET; + +/*----------------------------------------------------------------------------*/ +/* Eesult data of Execute command */ +/*----------------------------------------------------------------------------*/ +typedef struct{ + STB_INT32 num ; + FR_DET *fcDet ;/* Face Detection & Estimations results */ +}STB_FR_DET; + +/*----------------------------------------------------------------------------*/ +/* */ +/*----------------------------------------------------------------------------*/ +typedef struct{ + STB_INT32 nTraID ;/*Tracking person number in the through frame*/ + STB_RES frRecog ;/* Stabilization result of human [nTrackingID] */ +}FR_RES; + +/*----------------------------------------------------------------------------*/ +/* */ +/*----------------------------------------------------------------------------*/ +typedef struct{ + STB_INT32 frCnt ;/*a number of tracking people*/ + FR_RES *frFace ; +}STB_FR_RES; + + +#endif /*__STBFRTYPEDEF_H__*/ diff --git a/src/b5t007001/stblib/src/include/STBHandle.h b/src/b5t007001/stblib/src/include/STBHandle.h new file mode 100644 index 00000000..2a4602cd --- /dev/null +++ b/src/b5t007001/stblib/src/include/STBHandle.h @@ -0,0 +1,103 @@ +/*---------------------------------------------------------------------------*/ +/* Copyright(C) 2017 OMRON Corporation */ +/* */ +/* Licensed under the Apache License, Version 2.0 (the "License"); */ +/* you may not use this file except in compliance with the License. */ +/* You may obtain a copy of the License at */ +/* */ +/* http://www.apache.org/licenses/LICENSE-2.0 */ +/* */ +/* Unless required by applicable law or agreed to in writing, software */ +/* distributed under the License is distributed on an "AS IS" BASIS, */ +/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */ +/* See the License for the specific language governing permissions and */ +/* limitations under the License. */ +/*---------------------------------------------------------------------------*/ + +#ifndef __STBHANDLE_H__ +#define __STBHANDLE_H__ + +#include "STBTypedefOutput.h" +#include "STBCommonType.h" +#include "SdkSTBTr.h" +#include "SdkSTBPe.h" +#include "SdkSTBFr.h" + + + + +typedef struct { + + STB_INT32 nDetID ; + STB_INT32 nTraID ; + STB_STATUS genStatus ;//Gender + STB_INT32 genConf ; + STB_INT32 genVal ; + STB_STATUS ageStatus ;//Age + STB_INT32 ageConf ; + STB_INT32 ageVal ; + STB_STATUS frStatus ;//Face recognition + STB_INT32 frConf ; + STB_INT32 frVal ; + STB_STATUS expStatus ;//Facial expression + STB_INT32 expVal ; + STB_INT32 expScore[STB_EX_MAX] ; + STB_INT32 expConf ; + STB_INT32 gazUD ;//Gaze + STB_INT32 gazLR ; + STB_STATUS gazStatus ; + STB_INT32 gazConf ; + STB_INT32 dirRoll ;//Face direction + STB_INT32 dirPitch ; + STB_INT32 dirYaw ; + STB_STATUS dirStatus ; + STB_INT32 dirConf ; + STB_INT32 bliL ;//Blink + STB_INT32 bliR ; + STB_STATUS bliStatus ; + +} FaceObj; + +typedef struct { + STB_INT32 nDetID ; + STB_INT32 nTraID ; + STB_POS pos ; + STB_INT32 size ; + STB_INT32 conf ; +} TraObj; + +typedef struct { + /*------------------------------*/ + STB_INT32 nInitialized;/* SetFrameResult already executed */ + STB_INT32 nExecuted ;/*Execute done*/ + STBExecFlg *execFlg ; + /*------------------------------*/ + STB_TR_HANDLE hTrHandle ; + STB_INT32 nDetCntBody ; + STB_INT32 nDetCntFace ; + STB_INT32 nTraCntBody ; + STB_INT32 nTraCntFace ; + TraObj *trFace ; + TraObj *trBody ; + /*------------------------------*/ + STB_PE_HANDLE hPeHandle ; + STB_FR_HANDLE hFrHandle ; + FaceObj *infoFace ; + /*------------------------------*/ + STB_INT8 *stbPtr ; + STB_INT32 nDetCntMax ; + STB_INT32 nTraCntMax ; + + + STB_TR_DET *wSrcTr ;/*TR : input data*/ + STB_TR_RES_FACES *wDstTrFace ;/*TR : output data*/ + STB_TR_RES_BODYS *wDstTrBody ;/*TR : output data*/ + STB_PE_DET *wSrcPe ;/*PR : Input data*/ + STB_PE_RES *wDstPe ;/*PE : Output data*/ + STB_FR_DET *wSrcFr ;/*FR : Input data*/ + STB_FR_RES *wDstFr ;/*FR : Output data*/ +} *STBHANDLE; + + + +#endif /*__STBHANDLE_H__*/ diff --git a/src/b5t007001/stblib/src/include/STBMakeResult.h b/src/b5t007001/stblib/src/include/STBMakeResult.h new file mode 100644 index 00000000..87ed6062 --- /dev/null +++ b/src/b5t007001/stblib/src/include/STBMakeResult.h @@ -0,0 +1,25 @@ +/*---------------------------------------------------------------------------*/ +/* Copyright(C) 2017 OMRON Corporation */ +/* */ +/* Licensed under the Apache License, Version 2.0 (the "License"); */ +/* you may not use this file except in compliance with the License. */ +/* You may obtain a copy of the License at */ +/* */ +/* http://www.apache.org/licenses/LICENSE-2.0 */ +/* */ +/* Unless required by applicable law or agreed to in writing, software */ +/* distributed under the License is distributed on an "AS IS" BASIS, */ +/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */ +/* See the License for the specific language governing permissions and */ +/* limitations under the License. */ +/*---------------------------------------------------------------------------*/ + +#ifndef __STBMAKERESULT_h__ +#define __STBMAKERESULT_H__ + +#include "STBHandle.h" + +VOID SetFaceToResult(STB_INT32 TrackingNum,TraObj* dtfaces,FaceObj* faces, STB_FACE* result , const STBExecFlg* execFlg ); +VOID SetBodyToResult(STB_INT32 TrackingNum,TraObj* dtbodys, STB_BODY* result); + +#endif /*__STBMAKERESULT_H__*/ diff --git a/src/b5t007001/stblib/src/include/STBPeTypedef.h b/src/b5t007001/stblib/src/include/STBPeTypedef.h new file mode 100644 index 00000000..955a44b2 --- /dev/null +++ b/src/b5t007001/stblib/src/include/STBPeTypedef.h @@ -0,0 +1,79 @@ +/*---------------------------------------------------------------------------*/ +/* Copyright(C) 2017 OMRON Corporation */ +/* */ +/* Licensed under the Apache License, Version 2.0 (the "License"); */ +/* you may not use this file except in compliance with the License. */ +/* You may obtain a copy of the License at */ +/* */ +/* http://www.apache.org/licenses/LICENSE-2.0 */ +/* */ +/* Unless required by applicable law or agreed to in writing, software */ +/* distributed under the License is distributed on an "AS IS" BASIS, */ +/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */ +/* See the License for the specific language governing permissions and */ +/* limitations under the License. */ +/*---------------------------------------------------------------------------*/ + +#ifndef __STBPETYPEDEF_H__ +#define __STBPETYPEDEF_H__ + +#include "STBTypedefOutput.h" +#include "STBCommonType.h" +#include "STBCommonDef.h" + + +/*----------------------------------------------------------------------------*/ +/* Face Detection & Estimations result (Property estimation input infomation) */ +/*----------------------------------------------------------------------------*/ +typedef struct{ + STB_INT32 nDetID ; /*Person number detected in the current frame*/ + STB_INT32 nTraID ; /*Tracking person number in the through frame*/ + STB_INT32 dirDetYaw ; + STB_INT32 dirDetPitch ; + STB_INT32 dirDetRoll ; + STB_INT32 dirDetConf ; + STB_INT32 ageDetVal ; + STB_INT32 ageDetConf ; + STB_STATUS ageStatus ; + STB_INT32 genDetVal ; + STB_INT32 genDetConf ; + STB_STATUS genStatus ; + STB_INT32 gazDetLR ; + STB_INT32 gazDetUD ; + STB_INT32 bliDetL ; + STB_INT32 bliDetR ; + STB_INT32 expDetVal[STB_EX_MAX]; + STB_INT32 expDetConf ; +}FACE_DET; + + +/*----------------------------------------------------------------------------*/ +/* Result data of Execute command (Property estimation input infomation) */ +/*----------------------------------------------------------------------------*/ +typedef struct{ + STB_INT32 num ; /*a number of tracking people*/ + FACE_DET *fcDet ; /* Detection & Estimations result */ +}STB_PE_DET; + +/*----------------------------------------------------------------------------*/ +/* Property estimation output infomation */ +/*----------------------------------------------------------------------------*/ +typedef struct { + STB_INT32 nTraID ; /*Tracking person number in the through frame*/ + STB_RES gen ; /* Stabilization result of human [nTrackingID] */ + STB_RES age ; /* Stabilization result of human [nTrackingID] */ + STB_RES exp ; /* Stabilization result of human [nTrackingID] */ + STB_GAZE gaz ; /* Stabilization result of human [nTrackingID] */ + STB_DIR dir ; + STB_BLINK bli ; +} STB_PE_FACE; + +/*----------------------------------------------------------------------------*/ +/* Property estimation output infomation */ +/*----------------------------------------------------------------------------*/ +typedef struct { + STB_INT32 peCnt ; /*a number of tracking people*/ + STB_PE_FACE *peFace ; +} STB_PE_RES; + +#endif /*__STBPETYPEDEF_H__*/ diff --git a/src/b5t007001/stblib/src/include/STBTrTypedef.h b/src/b5t007001/stblib/src/include/STBTrTypedef.h new file mode 100644 index 00000000..520cc80c --- /dev/null +++ b/src/b5t007001/stblib/src/include/STBTrTypedef.h @@ -0,0 +1,73 @@ +/*---------------------------------------------------------------------------*/ +/* Copyright(C) 2017 OMRON Corporation */ +/* */ +/* Licensed under the Apache License, Version 2.0 (the "License"); */ +/* you may not use this file except in compliance with the License. */ +/* You may obtain a copy of the License at */ +/* */ +/* http://www.apache.org/licenses/LICENSE-2.0 */ +/* */ +/* Unless required by applicable law or agreed to in writing, software */ +/* distributed under the License is distributed on an "AS IS" BASIS, */ +/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */ +/* See the License for the specific language governing permissions and */ +/* limitations under the License. */ +/*---------------------------------------------------------------------------*/ + +#ifndef __STBTRTYPEDEF_H__ +#define __STBTRTYPEDEF_H__ + +#include "STBTypedefOutput.h" +#include "STBCommonType.h" +#include "STBCommonDef.h" + +/*----------------------------------------------------------------------------*/ +/* Struct */ +/*----------------------------------------------------------------------------*/ + +/*----------------------------------------------------------------------------*/ +/* Detection result (Tracking input infomation) */ +/*----------------------------------------------------------------------------*/ +typedef struct{ + STB_INT32 posX ; /* Center x-coordinate */ + STB_INT32 posY ; /* Center y-coordinate */ + STB_INT32 size ; /* Size */ + STB_INT32 conf ; /* Degree of confidence */ +}ROI_DET; +/*----------------------------------------------------------------------------*/ +/* Result data (Tracking input infomation) */ +/*----------------------------------------------------------------------------*/ +typedef struct{ + STB_INT32 fcNum ; /*a number of detected face*/ + ROI_DET * fcDet ; /* face rectangle data */ + STB_INT32 bdNum ; /*a number of body detection*/ + ROI_DET * bdDet ; /*Body rectangular data*/ +}STB_TR_DET; +/*----------------------------------------------------------------------------*/ +/* Tracking object result (Tracking output infomation) */ +/*----------------------------------------------------------------------------*/ +typedef struct { + STB_INT32 nDetID ; /*previous detected result ID*/ + STB_INT32 nTraID ; /*Tracking ID*/ + STB_POS pos ; /* Stabilization of coordinates */ + STB_INT32 size ; /*Stabilization of face size*/ + STB_INT32 conf ; /*tracking confidence*/ +} STB_TR_RES; +/*----------------------------------------------------------------------------*/ +/* Faces tracking result (Tracking output infomation) */ +/*----------------------------------------------------------------------------*/ +typedef struct { + STB_INT32 cnt ; /*a number of facial information during tracking*/ + STB_TR_RES* face ; /*the facial information during tracking */ +} STB_TR_RES_FACES; +/*----------------------------------------------------------------------------*/ +/* Faces tracking result (Tracking output infomation) */ +/*----------------------------------------------------------------------------*/ +typedef struct { + STB_INT32 cnt ; /*a number of human body during tracking*/ + STB_TR_RES* body ; /*the human body information during tracking*/ +} STB_TR_RES_BODYS; + + + +#endif /*__STBTRTYPEDEF_H__*/ diff --git a/src/b5t007001/stblib/src/include/STBTracking.h b/src/b5t007001/stblib/src/include/STBTracking.h new file mode 100644 index 00000000..aba2e5bc --- /dev/null +++ b/src/b5t007001/stblib/src/include/STBTracking.h @@ -0,0 +1,31 @@ +/*---------------------------------------------------------------------------*/ +/* Copyright(C) 2017 OMRON Corporation */ +/* */ +/* Licensed under the Apache License, Version 2.0 (the "License"); */ +/* you may not use this file except in compliance with the License. */ +/* You may obtain a copy of the License at */ +/* */ +/* http://www.apache.org/licenses/LICENSE-2.0 */ +/* */ +/* Unless required by applicable law or agreed to in writing, software */ +/* distributed under the License is distributed on an "AS IS" BASIS, */ +/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */ +/* See the License for the specific language governing permissions and */ +/* limitations under the License. */ +/*---------------------------------------------------------------------------*/ + +#ifndef STBTRACKING_H__ +#define STBTRACKING_H__ +#include "STBTypedefInput.h" +#include "STBHandle.h" + +VOID SetTrackingObjectBody ( const STB_FRAME_RESULT_BODYS* stbINPUTbodys,TraObj *bodys); +VOID SetTrackingObjectFace ( const STB_FRAME_RESULT_FACES *stbINPUTfaces,TraObj *faces); + +VOID SetTrackingInfoToFace ( STB_TR_RES_FACES *fdResult,STB_INT32 *pnTrackingNum,TraObj *faces); +VOID SetTrackingInfoToBody ( STB_TR_RES_BODYS *bdResult,STB_INT32 *pnTrackingNum,TraObj *bodys); + +VOID SetSrcTrFace ( STB_INT32 nDetCntFace , TraObj *trFace, STB_TR_DET *trSrcInfo); +VOID SetSrcTrBody ( STB_INT32 nDetCntBody , TraObj *trBody, STB_TR_DET *trSrcInfo); + +#endif \ No newline at end of file diff --git a/src/b5t007001/stblib/src/include/STBTypedefInput.h b/src/b5t007001/stblib/src/include/STBTypedefInput.h new file mode 100644 index 00000000..03fc2fcc --- /dev/null +++ b/src/b5t007001/stblib/src/include/STBTypedefInput.h @@ -0,0 +1,131 @@ +/*---------------------------------------------------------------------------*/ +/* Copyright(C) 2017 OMRON Corporation */ +/* */ +/* Licensed under the Apache License, Version 2.0 (the "License"); */ +/* you may not use this file except in compliance with the License. */ +/* You may obtain a copy of the License at */ +/* */ +/* http://www.apache.org/licenses/LICENSE-2.0 */ +/* */ +/* Unless required by applicable law or agreed to in writing, software */ +/* distributed under the License is distributed on an "AS IS" BASIS, */ +/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */ +/* See the License for the specific language governing permissions and */ +/* limitations under the License. */ +/*---------------------------------------------------------------------------*/ + +#ifndef __STB_OKOA_RESULT_H__ +#define __STB_OKOA_RESULT_H__ + +#ifndef VOID +#define VOID void +#endif + +typedef signed char STB_INT8 ; /*8-bit signed integer*/ +typedef unsigned char STB_UINT8 ; /*8-bit unsigned integer*/ +typedef signed short STB_INT16 ; /*16-bit signed integer*/ +typedef unsigned short STB_UINT16 ; /*16-bit unsigned integer*/ +typedef int STB_INT32 ; /*32 bit signed integer*/ +typedef unsigned int STB_UINT32 ; /*32 bit unsigned integer*/ +typedef float STB_FLOAT32 ; /*32-bit floating point number*/ +typedef double STB_FLOAT64 ; /*64-bit floating point number*/ + +typedef enum { + STB_Expression_Neutral, + STB_Expression_Happiness, + STB_Expression_Surprise, + STB_Expression_Anger, + STB_Expression_Sadness, + STB_Expression_Max +} STB_OKAO_EXPRESSION; + +typedef struct { + STB_INT32 nX; + STB_INT32 nY; +} STB_POINT; + +/*Face direction estimation*/ +typedef struct { + STB_INT32 nLR; + STB_INT32 nUD; + STB_INT32 nRoll; + STB_INT32 nConfidence; +} STB_FRAME_RESULT_DIRECTION; + +/*Age estimation*/ +typedef struct { + STB_INT32 nAge; + STB_INT32 nConfidence; +} STB_FRAME_RESULT_AGE; + +/*Gender estimation*/ +typedef struct { + STB_INT32 nGender; + STB_INT32 nConfidence; +} STB_FRAME_RESULT_GENDER; + +/*Gaze estimation*/ +typedef struct { + STB_INT32 nLR; + STB_INT32 nUD; +} STB_FRAME_RESULT_GAZE; + +/*Blink estimation*/ +typedef struct { + STB_INT32 nLeftEye; + STB_INT32 nRightEye; +} STB_FRAME_RESULT_BLINK; + +/*estimation of facial expression*/ +typedef struct { + STB_INT32 anScore[STB_Expression_Max] ; + STB_INT32 nDegree; +} STB_FRAME_RESULT_EXPRESSION; + +/*Face recognition*/ +typedef struct { + STB_INT32 nUID; + STB_INT32 nScore; +} STB_FRAME_RESULT_RECOGNITION; + +/*One detection result*/ +typedef struct { + STB_POINT center; + STB_INT32 nSize; + STB_INT32 nConfidence ; +} STB_FRAME_RESULT_DETECTION; + +/*Face detection and post-processing result (1 person)*/ +typedef struct { + STB_POINT center; + STB_INT32 nSize; + STB_INT32 nConfidence; + STB_FRAME_RESULT_DIRECTION direction; + STB_FRAME_RESULT_AGE age; + STB_FRAME_RESULT_GENDER gender; + STB_FRAME_RESULT_GAZE gaze; + STB_FRAME_RESULT_BLINK blink; + STB_FRAME_RESULT_EXPRESSION expression; + STB_FRAME_RESULT_RECOGNITION recognition; +} STB_FRAME_RESULT_FACE; + +/*One human body detection result*/ +typedef struct { + STB_INT32 nCount; + STB_FRAME_RESULT_DETECTION body[35]; +} STB_FRAME_RESULT_BODYS; + +/*Face detection and post-processing result (1 frame)*/ +typedef struct { + STB_INT32 nCount; + STB_FRAME_RESULT_FACE face[35]; +} STB_FRAME_RESULT_FACES; + + +/*FRAME result (1 frame)*/ +typedef struct { + STB_FRAME_RESULT_BODYS bodys; + STB_FRAME_RESULT_FACES faces; +} STB_FRAME_RESULT; + +#endif /*__HVCW_RESULT_H__*/ diff --git a/src/b5t007001/stblib/src/include/STBTypedefOutput.h b/src/b5t007001/stblib/src/include/STBTypedefOutput.h new file mode 100644 index 00000000..d8186789 --- /dev/null +++ b/src/b5t007001/stblib/src/include/STBTypedefOutput.h @@ -0,0 +1,119 @@ +/*---------------------------------------------------------------------------*/ +/* Copyright(C) 2017 OMRON Corporation */ +/* */ +/* Licensed under the Apache License, Version 2.0 (the "License"); */ +/* you may not use this file except in compliance with the License. */ +/* You may obtain a copy of the License at */ +/* */ +/* http://www.apache.org/licenses/LICENSE-2.0 */ +/* */ +/* Unless required by applicable law or agreed to in writing, software */ +/* distributed under the License is distributed on an "AS IS" BASIS, */ +/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */ +/* See the License for the specific language governing permissions and */ +/* limitations under the License. */ +/*---------------------------------------------------------------------------*/ + + +#ifndef STBTYPEDEF_H__ +#define STBTYPEDEF_H__ + +#ifndef VOID +#define VOID void +#endif + +typedef signed char STB_INT8 ; /*8-bit signed integer*/ +typedef unsigned char STB_UINT8 ; /*8-bit unsigned integer*/ +typedef signed short STB_INT16 ; /*16-bit signed integer*/ +typedef unsigned short STB_UINT16 ; /*16-bit unsigned integer*/ +typedef int STB_INT32 ; /*32 bit signed integer*/ +typedef unsigned int STB_UINT32 ; /*32 bit unsigned integer*/ +typedef float STB_FLOAT32 ; /*32-bit floating point number*/ +typedef double STB_FLOAT64 ; /*64-bit floating point number*/ + + +typedef enum { + STB_STATUS_NO_DATA = -1, /*No data : No data for the relevant person*/ + STB_STATUS_CALCULATING = 0, /* during stabilization : a number of data for relevant people aren't enough(a number of frames that relevant people are taken) */ + STB_STATUS_COMPLETE = 1, /*stabilization done : the frames which done stabilization*/ + STB_STATUS_FIXED = 2, /*stabilization fixed : already stabilization done, the results is fixed*/ +} STB_STATUS;/*Status of stabilization*/ + +#define STB_CONF_NO_DATA -1 /*No confidence(No data or in the case of stabilization time)*/ + +/* Expression */ +typedef enum { + STB_EX_UNKNOWN = -1, + STB_EX_NEUTRAL = 0, + STB_EX_HAPPINESS, + STB_EX_SURPRISE, + STB_EX_ANGER, + STB_EX_SADNESS, + STB_EX_MAX +}STB_EXPRESSION; + +/*General purpose stabilization result structure*/ +typedef struct { + STB_STATUS status;/* Stabilization status */ + STB_INT32 conf; /* Stabilization confidence */ + STB_INT32 value; +} STB_RES; + +/*result of Gaze estimation*/ +typedef struct { + STB_STATUS status;/* Stabilization status */ + STB_INT32 conf; /* Stabilization confidence */ + STB_INT32 UD; + STB_INT32 LR; +} STB_GAZE; + +/*Face direction result*/ +typedef struct { + STB_STATUS status;/* Stabilization status */ + STB_INT32 conf; /* Stabilization confidence */ + STB_INT32 yaw; + STB_INT32 pitch; + STB_INT32 roll; +} STB_DIR; + +/*result of Blink estimation*/ +typedef struct { + STB_STATUS status;/* Stabilization status */ + STB_INT32 ratioL; + STB_INT32 ratioR; +} STB_BLINK; + +/*Detection position structure*/ +typedef struct { + STB_UINT32 x; + STB_UINT32 y; +} STB_POS; + +/*Face stabilization result structure*/ +typedef struct { + STB_INT32 nDetectID; + STB_INT32 nTrackingID; + STB_POS center; + STB_UINT32 nSize; + STB_INT32 conf; + STB_DIR direction; + STB_RES age; + STB_RES gender; + STB_GAZE gaze; + STB_BLINK blink; + STB_RES expression; + STB_RES recognition; +} STB_FACE; + +/*Human body result structure*/ +typedef struct { + STB_INT32 nDetectID; + STB_INT32 nTrackingID; + STB_POS center; + STB_UINT32 nSize; + STB_INT32 conf; +} STB_BODY; + + + +#endif /* STBTYPEDEF_H__ */ diff --git a/src/b5t007001/stblib/src/include/STB_Debug.h b/src/b5t007001/stblib/src/include/STB_Debug.h new file mode 100644 index 00000000..60b1f0c5 --- /dev/null +++ b/src/b5t007001/stblib/src/include/STB_Debug.h @@ -0,0 +1,27 @@ +/*---------------------------------------------------------------------------*/ +/* Copyright(C) 2017 OMRON Corporation */ +/* */ +/* Licensed under the Apache License, Version 2.0 (the "License"); */ +/* you may not use this file except in compliance with the License. */ +/* You may obtain a copy of the License at */ +/* */ +/* http://www.apache.org/licenses/LICENSE-2.0 */ +/* */ +/* Unless required by applicable law or agreed to in writing, software */ +/* distributed under the License is distributed on an "AS IS" BASIS, */ +/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */ +/* See the License for the specific language governing permissions and */ +/* limitations under the License. */ +/*---------------------------------------------------------------------------*/ + +#ifndef __STB_DEBUG_H__ +#define __STB_DEBUG_H__ +#ifdef _DEBUG +#include +#define ASSERT(x) assert(x) +#else +#define ASSERT(x) +#endif /* _DEBUG */ + +#endif /*__STB_DEBUG_H__*/ + diff --git a/src/b5t007001/stblib/src/include/SdkSTBFr.h b/src/b5t007001/stblib/src/include/SdkSTBFr.h new file mode 100644 index 00000000..4e35c8fc --- /dev/null +++ b/src/b5t007001/stblib/src/include/SdkSTBFr.h @@ -0,0 +1,43 @@ +/*---------------------------------------------------------------------------*/ +/* Copyright(C) 2017 OMRON Corporation */ +/* */ +/* Licensed under the Apache License, Version 2.0 (the "License"); */ +/* you may not use this file except in compliance with the License. */ +/* You may obtain a copy of the License at */ +/* */ +/* http://www.apache.org/licenses/LICENSE-2.0 */ +/* */ +/* Unless required by applicable law or agreed to in writing, software */ +/* distributed under the License is distributed on an "AS IS" BASIS, */ +/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */ +/* See the License for the specific language governing permissions and */ +/* limitations under the License. */ +/*---------------------------------------------------------------------------*/ + +#if !defined( _SDK_STBFR_H_ ) +#define _SDK_STBFR_H_ +#include "STBFrTypedef.h" + +#if !defined( STB_DEF_FR_HANDLE ) + #define STB_DEF_FR_HANDLE + typedef VOID* STB_FR_HANDLE; +#endif + +STB_FR_HANDLE STB_Fr_CreateHandle ( const STB_INT32 nTraCntMax );/*Create/Delete handle*/ +STB_INT32 STB_Fr_DeleteHandle ( STB_FR_HANDLE handle );/*Create/Delete handle*/ +STB_INT32 STB_Fr_SetDetect ( STB_FR_HANDLE handle, const STB_FR_DET *stbFrDet );/*Frame information settings*/ +STB_INT32 STB_Fr_Execute ( STB_FR_HANDLE handle );/*Main process execution*/ +STB_INT32 STB_Fr_GetResult ( STB_FR_HANDLE handle, STB_FR_RES* frResult );/*Get result*/ +STB_INT32 STB_Fr_Clear ( STB_FR_HANDLE handle );/*Clear*/ + +/*parameter*/ +STB_INT32 STB_Fr_SetFaceDirMinMax ( STB_FR_HANDLE handle , STB_INT32 nMinUDAngle , STB_INT32 nMaxUDAngle ,STB_INT32 nMinLRAngle , STB_INT32 nMaxLRAngle );/* FaceDirMinMax */ +STB_INT32 STB_Fr_GetFaceDirMinMax ( STB_FR_HANDLE handle , STB_INT32 *pnMinUDAngle, STB_INT32 *pnMaxUDAngle ,STB_INT32 *pnMinLRAngle, STB_INT32 *pnMaxLRAngle); +STB_INT32 STB_Fr_Clear ( STB_FR_HANDLE handle );/* ClearID */ +STB_INT32 STB_Fr_SetFaceDirThreshold ( STB_FR_HANDLE handle , STB_INT32 threshold );/* FaceDirThreshold */ +STB_INT32 STB_Fr_GetFaceDirThreshold ( STB_FR_HANDLE handle , STB_INT32* threshold ); +STB_INT32 STB_Fr_SetFrameCount ( STB_FR_HANDLE handle , STB_INT32 nFrameCount ); +STB_INT32 STB_Fr_GetFrameCount ( STB_FR_HANDLE handle , STB_INT32* nFrameCount ); +STB_INT32 STB_Fr_SetMinRatio ( STB_FR_HANDLE handle , STB_INT32 nMinRatio ); +STB_INT32 STB_Fr_GetMinRatio ( STB_FR_HANDLE handle , STB_INT32* nMinRatio ); +#endif diff --git a/src/b5t007001/stblib/src/include/SdkSTBPe.h b/src/b5t007001/stblib/src/include/SdkSTBPe.h new file mode 100644 index 00000000..01ed7670 --- /dev/null +++ b/src/b5t007001/stblib/src/include/SdkSTBPe.h @@ -0,0 +1,41 @@ +/*---------------------------------------------------------------------------*/ +/* Copyright(C) 2017 OMRON Corporation */ +/* */ +/* Licensed under the Apache License, Version 2.0 (the "License"); */ +/* you may not use this file except in compliance with the License. */ +/* You may obtain a copy of the License at */ +/* */ +/* http://www.apache.org/licenses/LICENSE-2.0 */ +/* */ +/* Unless required by applicable law or agreed to in writing, software */ +/* distributed under the License is distributed on an "AS IS" BASIS, */ +/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */ +/* See the License for the specific language governing permissions and */ +/* limitations under the License. */ +/*---------------------------------------------------------------------------*/ + +#if !defined( _SDK_STBPE_H_ ) +#define _SDK_STBPE_H_ +#include "STBPeTypedef.h" + +#if !defined( STB_DEF_PE_HANDLE ) + #define STB_DEF_PE_HANDLE + typedef VOID* STB_PE_HANDLE; +#endif + +STB_PE_HANDLE STB_Pe_CreateHandle ( const STBExecFlg* execFlg ,const STB_INT32 nTraCntMax );/*Create/Delete handle*/ +STB_INT32 STB_Pe_DeleteHandle ( STB_PE_HANDLE handle );/*Create/Delete handle*/ +STB_INT32 STB_Pe_SetDetect ( STB_PE_HANDLE handle, const STB_PE_DET *stbPeDet );/*Frame information settings*/ +STB_INT32 STB_Pe_Execute ( STB_PE_HANDLE handle );/*Main process execution*/ +STB_INT32 STB_Pe_GetResult ( STB_PE_HANDLE handle, STB_PE_RES* peResult );/*Get result*/ + +/*parameter*/ +STB_INT32 STB_Pe_SetFaceDirMinMax ( STB_PE_HANDLE handle , STB_INT32 nMinUDAngle , STB_INT32 nMaxUDAngle ,STB_INT32 nMinLRAngle , STB_INT32 nMaxLRAngle );/* FaceDirMinMax */ +STB_INT32 STB_Pe_GetFaceDirMinMax ( STB_PE_HANDLE handle , STB_INT32 *pnMinUDAngle, STB_INT32 *pnMaxUDAngle ,STB_INT32 *pnMinLRAngle, STB_INT32 *pnMaxLRAngle); +STB_INT32 STB_Pe_Clear ( STB_PE_HANDLE handle );/* Clear */ +STB_INT32 STB_Pe_SetFaceDirThreshold ( STB_PE_HANDLE handle , STB_INT32 threshold );/* FaceDirThreshold */ +STB_INT32 STB_Pe_GetFaceDirThreshold ( STB_PE_HANDLE handle , STB_INT32* threshold ); +STB_INT32 STB_Pe_SetFrameCount ( STB_PE_HANDLE handle , STB_INT32 nFrameCount ); +STB_INT32 STB_Pe_GetFrameCount ( STB_PE_HANDLE handle , STB_INT32* nFrameCount ); + +#endif diff --git a/src/b5t007001/stblib/src/include/SdkSTBTr.h b/src/b5t007001/stblib/src/include/SdkSTBTr.h new file mode 100644 index 00000000..b209d5dc --- /dev/null +++ b/src/b5t007001/stblib/src/include/SdkSTBTr.h @@ -0,0 +1,42 @@ +/*---------------------------------------------------------------------------*/ +/* Copyright(C) 2017 OMRON Corporation */ +/* */ +/* Licensed under the Apache License, Version 2.0 (the "License"); */ +/* you may not use this file except in compliance with the License. */ +/* You may obtain a copy of the License at */ +/* */ +/* http://www.apache.org/licenses/LICENSE-2.0 */ +/* */ +/* Unless required by applicable law or agreed to in writing, software */ +/* distributed under the License is distributed on an "AS IS" BASIS, */ +/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */ +/* See the License for the specific language governing permissions and */ +/* limitations under the License. */ +/*---------------------------------------------------------------------------*/ + +#if !defined( _SDK_STBTR_H_ ) +#define _SDK_STBTR_H_ + +#include "STBTrTypedef.h" + +#if !defined( STB_DEF_TR_HANDLE ) + #define STB_DEF_TR_HANDLE + typedef VOID* STB_TR_HANDLE; +#endif + +STB_TR_HANDLE STB_Tr_CreateHandle ( const STBExecFlg* execFlg ,const STB_INT32 nDetCntMax, const STB_INT32 nTraCntMax);/*Create/Delete handle*/ + +STB_INT32 STB_Tr_DeleteHandle ( STB_TR_HANDLE handle );/*Create/Delete handle*/ +STB_INT32 STB_Tr_SetDetect ( STB_TR_HANDLE handle,const STB_TR_DET *stbTrDet );/*Frame information settings*/ +STB_INT32 STB_Tr_Execute ( STB_TR_HANDLE handle );/*Main process execution*/ +STB_INT32 STB_Tr_GetResult ( STB_TR_HANDLE handle,STB_TR_RES_FACES* fcResult,STB_TR_RES_BODYS* bdResult);/*get the result*/ +STB_INT32 STB_Tr_Clear ( STB_TR_HANDLE handle); + +/*parameter*/ +STB_INT32 STB_Tr_SetRetryCount ( STB_TR_HANDLE handle , STB_INT32 nRetryCount );/*RetryCount*/ +STB_INT32 STB_Tr_GetRetryCount ( STB_TR_HANDLE handle , STB_INT32* nRetryCount ); +STB_INT32 STB_Tr_SetStedinessParam ( STB_TR_HANDLE handle , STB_INT32 nStedinessPos , STB_INT32 nStedinessSize );/* Stediness */ +STB_INT32 STB_Tr_GetStedinessParam ( STB_TR_HANDLE handle , STB_INT32* nStedinessPos , STB_INT32* nStedinessSize ); + + +#endif diff --git a/src/b5t007001/stblib/usr_include/STBAPI.h b/src/b5t007001/stblib/usr_include/STBAPI.h new file mode 100644 index 00000000..1cafec79 --- /dev/null +++ b/src/b5t007001/stblib/usr_include/STBAPI.h @@ -0,0 +1,76 @@ +/*---------------------------------------------------------------------------*/ +/* Copyright(C) 2017 OMRON Corporation */ +/* */ +/* Licensed under the Apache License, Version 2.0 (the "License"); */ +/* you may not use this file except in compliance with the License. */ +/* You may obtain a copy of the License at */ +/* */ +/* http://www.apache.org/licenses/LICENSE-2.0 */ +/* */ +/* Unless required by applicable law or agreed to in writing, software */ +/* distributed under the License is distributed on an "AS IS" BASIS, */ +/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */ +/* See the License for the specific language governing permissions and */ +/* limitations under the License. */ +/*---------------------------------------------------------------------------*/ + +#ifndef _SDK_STB_H_ +#define _SDK_STB_H_ + +#include "STBTypedef.h" + + +#ifndef STB_DEF_HANDLE + #define STB_DEF_HANDLE + typedef VOID* HSTB; +#endif /* STB_DEF_HANDLE */ + +#ifdef __cplusplus +extern "C" { +#endif + +STB_INT32 STB_GetVersion(STB_INT8* pnMajorVersion, STB_INT8* pnMinorVersion); + +/* Create/Delete handle */ +HSTB STB_CreateHandle(STB_UINT32 unUseFuncFlag); +VOID STB_DeleteHandle(HSTB hSTB); + +/* Set the one frame result of HVC into this library */ +STB_INT32 STB_SetFrameResult(HSTB hSTB, const STB_FRAME_RESULT *stFrameResult); +/* Clear frame results */ +STB_INT32 STB_ClearFrameResults(HSTB hSTB); + +/* Main process execution */ +STB_INT32 STB_Execute(HSTB hSTB); + +/* Get the result */ +STB_INT32 STB_GetFaces(HSTB hSTB, STB_UINT32 *punFaceCount, STB_FACE stFace[]); +STB_INT32 STB_GetBodies(HSTB hSTB, STB_UINT32 *punBodyCount, STB_BODY stBody[]); + +/* Setting/Getting functions for tracking */ +STB_INT32 STB_SetTrRetryCount(HSTB hSTB, STB_INT32 nMaxRetryCount); +STB_INT32 STB_GetTrRetryCount(HSTB hSTB, STB_INT32 *pnMaxRetryCount); +STB_INT32 STB_SetTrSteadinessParam(HSTB hSTB, STB_INT32 nPosSteadinessParam, STB_INT32 nSizeSteadinessParam); +STB_INT32 STB_GetTrSteadinessParam(HSTB hSTB, STB_INT32 *pnPosSteadinessParam, STB_INT32 *pnSizeSteadinessParam); +/* Setting/Getting functions for property */ +STB_INT32 STB_SetPeThresholdUse(HSTB hSTB, STB_INT32 nThreshold); +STB_INT32 STB_GetPeThresholdUse(HSTB hSTB, STB_INT32 *pnThreshold); +STB_INT32 STB_SetPeAngleUse(HSTB hSTB, STB_INT32 nMinUDAngle, STB_INT32 nMaxUDAngle, STB_INT32 nMinLRAngle, STB_INT32 nMaxLRAngle); +STB_INT32 STB_GetPeAngleUse(HSTB hSTB, STB_INT32 *pnMinUDAngle, STB_INT32 *pnMaxUDAngle, STB_INT32 *pnMinLRAngle, STB_INT32 *pnMaxLRAngle); +STB_INT32 STB_SetPeCompleteFrameCount(HSTB hSTB, STB_INT32 nFrameCount); +STB_INT32 STB_GetPeCompleteFrameCount(HSTB hSTB, STB_INT32 *pnFrameCount); +/* Setting/Getting function for recognition */ +STB_INT32 STB_SetFrThresholdUse(HSTB hSTB, STB_INT32 nThreshold); +STB_INT32 STB_GetFrThresholdUse(HSTB hSTB, STB_INT32 *pnThreshold); +STB_INT32 STB_SetFrAngleUse(HSTB hSTB, STB_INT32 nMinUDAngle, STB_INT32 nMaxUDAngle, STB_INT32 nMinLRAngle, STB_INT32 nMaxLRAngle); +STB_INT32 STB_GetFrAngleUse(HSTB hSTB, STB_INT32 *pnMinUDAngle, STB_INT32 *pnMaxUDAngle, STB_INT32 *pnMinLRAngle, STB_INT32 *pnMaxLRAngle); +STB_INT32 STB_SetFrCompleteFrameCount(HSTB hSTB, STB_INT32 nFrameCount); +STB_INT32 STB_GetFrCompleteFrameCount(HSTB hSTB, STB_INT32 *pnFrameCount); +STB_INT32 STB_SetFrMinRatio(HSTB hSTB, STB_INT32 nMinRatio); +STB_INT32 STB_GetFrMinRatio(HSTB hSTB, STB_INT32 *pnMinRatio); + +#ifdef __cplusplus +} +#endif + +#endif /* _SDK_STB_H_ */ diff --git a/src/b5t007001/stblib/usr_include/STBCommonDef.h b/src/b5t007001/stblib/usr_include/STBCommonDef.h new file mode 100644 index 00000000..f1d0a2d3 --- /dev/null +++ b/src/b5t007001/stblib/usr_include/STBCommonDef.h @@ -0,0 +1,52 @@ +/*---------------------------------------------------------------------------*/ +/* Copyright(C) 2017 OMRON Corporation */ +/* */ +/* Licensed under the Apache License, Version 2.0 (the "License"); */ +/* you may not use this file except in compliance with the License. */ +/* You may obtain a copy of the License at */ +/* */ +/* http://www.apache.org/licenses/LICENSE-2.0 */ +/* */ +/* Unless required by applicable law or agreed to in writing, software */ +/* distributed under the License is distributed on an "AS IS" BASIS, */ +/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */ +/* See the License for the specific language governing permissions and */ +/* limitations under the License. */ +/*---------------------------------------------------------------------------*/ + +#ifndef __STB_COMMONDEF_H__ +#define __STB_COMMONDEF_H__ +#include + +/* Executed flag */ +#define STB_FUNC_BD (0x00000001U) /* [LSB]bit0: Body Tracking 00000000001 */ +#define STB_FUNC_DT (0x00000004U) /* [LSB]bit2: Face Tracking 00000000100 */ +#define STB_FUNC_PT (0x00000008U) /* [LSB]bit3: Face Direction 00000001000 */ +#define STB_FUNC_AG (0x00000010U) /* [LSB]bit4: Age Estimation 00000010000 */ +#define STB_FUNC_GN (0x00000020U) /* [LSB]bit5: Gender Estimation 00000100000 */ +#define STB_FUNC_GZ (0x00000040U) /* [LSB]bit6: Gaze Estimation 00001000000 */ +#define STB_FUNC_BL (0x00000080U) /* [LSB]bit7: Blink Estimation 00010000000 */ +#define STB_FUNC_EX (0x00000100U) /* [MSB]bit0: Expression Estimation 00100000000 */ +#define STB_FUNC_FR (0x00000200U) /* [MSB]bit1: Face Recognition 01000000000 */ + + + +/* STB library's error code */ +#define STB_NORMAL (0) /* Successful completion */ +#define STB_ERR_INITIALIZE (-2) /* Initialization error */ +#define STB_ERR_INVALIDPARAM (-3) /* Argument error */ +#define STB_ERR_NOHANDLE (-7) /* Handle error */ +#define STB_ERR_PROCESSCONDITION (-8) /* When the processing condition is not satisfied */ + +#define STB_TRUE (1) +#define STB_FALSE (0) + + + +#if !defined(STB_API) +/* Import (Application Default) */ + #define STB_API __declspec( dllimport ) +#endif /* OKAO_API || OMCV_API */ + +#endif /* __STB_COMMONDEF_H__ */ + diff --git a/src/b5t007001/stblib/usr_include/STBTypedef.h b/src/b5t007001/stblib/usr_include/STBTypedef.h new file mode 100644 index 00000000..71e8df0f --- /dev/null +++ b/src/b5t007001/stblib/usr_include/STBTypedef.h @@ -0,0 +1,227 @@ +/*---------------------------------------------------------------------------*/ +/* Copyright(C) 2017 OMRON Corporation */ +/* */ +/* Licensed under the Apache License, Version 2.0 (the "License"); */ +/* you may not use this file except in compliance with the License. */ +/* You may obtain a copy of the License at */ +/* */ +/* http://www.apache.org/licenses/LICENSE-2.0 */ +/* */ +/* Unless required by applicable law or agreed to in writing, software */ +/* distributed under the License is distributed on an "AS IS" BASIS, */ +/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */ +/* See the License for the specific language governing permissions and */ +/* limitations under the License. */ +/*---------------------------------------------------------------------------*/ + +#ifndef __STB_TYPEDEF_H__ +#define __STB_TYPEDEF_H__ + + +#ifndef VOID +#define VOID void +#endif /* VOID */ + +typedef signed char STB_INT8 ; /* 8-bit signed integer */ +typedef unsigned char STB_UINT8 ; /* 8-bit unsigned integer */ +typedef signed short STB_INT16 ; /* 16-bit signed integer */ +typedef unsigned short STB_UINT16 ; /* 16-bit unsigned integer */ +typedef int STB_INT32 ; /* 32 bit signed integer */ +typedef unsigned int STB_UINT32 ; /* 32 bit unsigned integer */ +typedef float STB_FLOAT32 ; /* 32-bit floating point number */ +typedef double STB_FLOAT64 ; /* 64-bit floating point number */ + + + +/****************************************/ +/* INPUT data strucrure to STBLib. */ +/****************************************/ + +typedef enum { + STB_Expression_Neutral, + STB_Expression_Happiness, + STB_Expression_Surprise, + STB_Expression_Anger, + STB_Expression_Sadness, + STB_Expression_Max +} STB_OKAO_EXPRESSION; + +typedef struct { + STB_INT32 nX; + STB_INT32 nY; +} STB_POINT; + +/* Face direction estimation */ +typedef struct { + STB_INT32 nLR; + STB_INT32 nUD; + STB_INT32 nRoll; + STB_INT32 nConfidence; +} STB_FRAME_RESULT_DIRECTION; + +/* Age estimation */ +typedef struct { + STB_INT32 nAge; + STB_INT32 nConfidence; +} STB_FRAME_RESULT_AGE; + +/* Gender estimation */ +typedef struct { + STB_INT32 nGender; + STB_INT32 nConfidence; +} STB_FRAME_RESULT_GENDER; + +/* Gaze estimation */ +typedef struct { + STB_INT32 nLR; + STB_INT32 nUD; +} STB_FRAME_RESULT_GAZE; + +/* Blink estimation */ +typedef struct { + STB_INT32 nLeftEye; + STB_INT32 nRightEye; +} STB_FRAME_RESULT_BLINK; + +/* Facial expression estimation */ +typedef struct { + STB_INT32 anScore[STB_Expression_Max]; + STB_INT32 nDegree; +} STB_FRAME_RESULT_EXPRESSION; + +/* Face recognition */ +typedef struct { + STB_INT32 nUID; + STB_INT32 nScore; +} STB_FRAME_RESULT_RECOGNITION; + +/* One detection result */ +typedef struct { + STB_POINT center; + STB_INT32 nSize; + STB_INT32 nConfidence ; +} STB_FRAME_RESULT_DETECTION; + +/* Face detection and post-processing result (1 person) */ +typedef struct { + STB_POINT center; + STB_INT32 nSize; + STB_INT32 nConfidence; + STB_FRAME_RESULT_DIRECTION direction; + STB_FRAME_RESULT_AGE age; + STB_FRAME_RESULT_GENDER gender; + STB_FRAME_RESULT_GAZE gaze; + STB_FRAME_RESULT_BLINK blink; + STB_FRAME_RESULT_EXPRESSION expression; + STB_FRAME_RESULT_RECOGNITION recognition; +} STB_FRAME_RESULT_FACE; + +/* One human body detection result */ +typedef struct { + STB_INT32 nCount; + STB_FRAME_RESULT_DETECTION body[35]; +} STB_FRAME_RESULT_BODYS; + +/* Face detection and post-processing result (1 frame) */ +typedef struct { + STB_INT32 nCount; + STB_FRAME_RESULT_FACE face[35]; +} STB_FRAME_RESULT_FACES; + +/* FRAME result (1 frame) */ +typedef struct { + STB_FRAME_RESULT_BODYS bodys; + STB_FRAME_RESULT_FACES faces; +} STB_FRAME_RESULT; + + +/****************************************/ +/* OUTPUT data strucrure from STBLib. */ +/****************************************/ + +#define STB_CONF_NO_DATA -1 /* No confidence (No data or in the case of stabilization time) */ + +typedef enum { + STB_STATUS_NO_DATA = -1, /* No data : No data for the relevant person */ + STB_STATUS_CALCULATING = 0, /* During stabilization : a number of data for relevant people aren't enough(a number of frames that relevant people are taken) */ + STB_STATUS_COMPLETE = 1, /* Stabilization done : the frames which done stabilization */ + STB_STATUS_FIXED = 2, /* Stabilization fixed : already stabilization done, the results is fixed */ +} STB_STATUS; /* Status of stabilization */ + + +/* Expression */ +typedef enum { + STB_EX_UNKNOWN = -1, + STB_EX_NEUTRAL = 0, + STB_EX_HAPPINESS, + STB_EX_SURPRISE, + STB_EX_ANGER, + STB_EX_SADNESS, + STB_EX_MAX +}STB_EXPRESSION; + +/* General purpose stabilization result structure */ +typedef struct { + STB_STATUS status; /* Stabilization status */ + STB_INT32 conf; /* Stabilization confidence */ + STB_INT32 value; +} STB_RES; + +/* Result of Gaze estimation */ +typedef struct { + STB_STATUS status; /* Stabilization status */ + STB_INT32 conf; /* Stabilization confidence */ + STB_INT32 UD; + STB_INT32 LR; +} STB_GAZE; + +/* Result of Face direction estimation */ +typedef struct { + STB_STATUS status; /* Stabilization status */ + STB_INT32 conf; /* Stabilization confidence */ + STB_INT32 yaw; + STB_INT32 pitch; + STB_INT32 roll; +} STB_DIR; + +/* Result of Blink estimation */ +typedef struct { + STB_STATUS status; /* Stabilization status */ + STB_INT32 ratioL; + STB_INT32 ratioR; +} STB_BLINK; + +/* Detection position structure */ +typedef struct { + STB_UINT32 x; + STB_UINT32 y; +} STB_POS; + +/* Face stabilization result structure */ +typedef struct { + STB_INT32 nDetectID; + STB_INT32 nTrackingID; + STB_POS center; + STB_UINT32 nSize; + STB_INT32 conf; + STB_DIR direction; + STB_RES age; + STB_RES gender; + STB_GAZE gaze; + STB_BLINK blink; + STB_RES expression; + STB_RES recognition; +} STB_FACE; + +/* Human body stabilization result structure */ +typedef struct { + STB_INT32 nDetectID; + STB_INT32 nTrackingID; + STB_POS center; + STB_UINT32 nSize; + STB_INT32 conf; +} STB_BODY; + + +#endif /* __STB_TYPEDEF_H__ */ + From 272e4ee95f50599c1c9b590e071b1576467b1b4f Mon Sep 17 00:00:00 2001 From: omron-ankit <47993414+omron-ankit@users.noreply.github.com> Date: Mon, 4 Nov 2019 15:16:31 -0600 Subject: [PATCH 02/17] Delete b5t007001 --- src/b5t007001/b5t007001 | Bin 104924 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 src/b5t007001/b5t007001 diff --git a/src/b5t007001/b5t007001 b/src/b5t007001/b5t007001 deleted file mode 100644 index 5f757ceb1864ed232be02196723cb13312cfdacf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 104924 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

dsym5X9pWO!mZ%#EIK`f?2U%;EBX7~e%w9={L| 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 DrA?+p From 39de7f263b085fcb5f9339c29ab8ddccd30112ff Mon Sep 17 00:00:00 2001 From: omron-ankit <47993414+omron-ankit@users.noreply.github.com> Date: Mon, 4 Nov 2019 15:28:38 -0600 Subject: [PATCH 03/17] Update b5t007001.hpp --- src/b5t007001/b5t007001.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/b5t007001/b5t007001.hpp b/src/b5t007001/b5t007001.hpp index a77b9e16..8c5bd8e2 100644 --- a/src/b5t007001/b5t007001.hpp +++ b/src/b5t007001/b5t007001.hpp @@ -25,7 +25,7 @@ #include //Required for c++ standard IO #include // Required for string -#include //Required for UART +#include "mraa/uart.hpp" //Required for UART #include //Required for vector #include "STBAPI.h" //Required for STB #include "STBCommonDef.h" //Required for STB From cf664e8e8b634bdb7e389534a06a7af3497a9137 Mon Sep 17 00:00:00 2001 From: omron-ankit <47993414+omron-ankit@users.noreply.github.com> Date: Mon, 4 Nov 2019 15:42:08 -0600 Subject: [PATCH 04/17] Update b5t007001.hpp --- src/b5t007001/b5t007001.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/b5t007001/b5t007001.hpp b/src/b5t007001/b5t007001.hpp index 8c5bd8e2..a730e99f 100644 --- a/src/b5t007001/b5t007001.hpp +++ b/src/b5t007001/b5t007001.hpp @@ -25,7 +25,7 @@ #include //Required for c++ standard IO #include // Required for string -#include "mraa/uart.hpp" //Required for UART +#include "mraa/api/mraa/uart.hpp" //Required for UART #include //Required for vector #include "STBAPI.h" //Required for STB #include "STBCommonDef.h" //Required for STB From 2a7de5730dd30988ffd899d688a1bb9c8f442806 Mon Sep 17 00:00:00 2001 From: omron-ankit <47993414+omron-ankit@users.noreply.github.com> Date: Mon, 4 Nov 2019 15:52:14 -0600 Subject: [PATCH 05/17] Update b5t007001.hpp --- src/b5t007001/b5t007001.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/b5t007001/b5t007001.hpp b/src/b5t007001/b5t007001.hpp index a730e99f..7f67f0af 100644 --- a/src/b5t007001/b5t007001.hpp +++ b/src/b5t007001/b5t007001.hpp @@ -25,7 +25,7 @@ #include //Required for c++ standard IO #include // Required for string -#include "mraa/api/mraa/uart.hpp" //Required for UART +#include "mraa/uart.h" //Required for UART #include //Required for vector #include "STBAPI.h" //Required for STB #include "STBCommonDef.h" //Required for STB From 321a4880128f3b1b5e5a230c543fa3bfa24e9aac Mon Sep 17 00:00:00 2001 From: omron-ankit <47993414+omron-ankit@users.noreply.github.com> Date: Mon, 4 Nov 2019 16:00:10 -0600 Subject: [PATCH 06/17] Update b5t007001.hpp --- src/b5t007001/b5t007001.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/b5t007001/b5t007001.hpp b/src/b5t007001/b5t007001.hpp index 7f67f0af..a548d158 100644 --- a/src/b5t007001/b5t007001.hpp +++ b/src/b5t007001/b5t007001.hpp @@ -25,7 +25,7 @@ #include //Required for c++ standard IO #include // Required for string -#include "mraa/uart.h" //Required for UART +#include "mraa/mraa.hpp" //Required for UART #include //Required for vector #include "STBAPI.h" //Required for STB #include "STBCommonDef.h" //Required for STB From b817cb05bc00aa2f8a90d0cc1a6aa21cbe9a3fff Mon Sep 17 00:00:00 2001 From: omron-ankit <47993414+omron-ankit@users.noreply.github.com> Date: Mon, 4 Nov 2019 16:07:18 -0600 Subject: [PATCH 07/17] Update b5t007001.hpp --- src/b5t007001/b5t007001.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/b5t007001/b5t007001.hpp b/src/b5t007001/b5t007001.hpp index a548d158..21ba4c26 100644 --- a/src/b5t007001/b5t007001.hpp +++ b/src/b5t007001/b5t007001.hpp @@ -25,7 +25,7 @@ #include //Required for c++ standard IO #include // Required for string -#include "mraa/mraa.hpp" //Required for UART +#include "mraa.hpp" //Required for UART #include //Required for vector #include "STBAPI.h" //Required for STB #include "STBCommonDef.h" //Required for STB From cb36357602f05eda9ad2f446378a8e1783169499 Mon Sep 17 00:00:00 2001 From: omron-ankit <47993414+omron-ankit@users.noreply.github.com> Date: Tue, 5 Nov 2019 11:05:49 -0600 Subject: [PATCH 08/17] Update b5t007001.hpp --- src/b5t007001/b5t007001.hpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/b5t007001/b5t007001.hpp b/src/b5t007001/b5t007001.hpp index 21ba4c26..fe82f191 100644 --- a/src/b5t007001/b5t007001.hpp +++ b/src/b5t007001/b5t007001.hpp @@ -25,10 +25,10 @@ #include //Required for c++ standard IO #include // Required for string -#include "mraa.hpp" //Required for UART +#include "mraa/uart.hpp" //Required for UART #include //Required for vector -#include "STBAPI.h" //Required for STB -#include "STBCommonDef.h" //Required for STB +#include "upm/src/b5t007001/stblib/usr_include/STBAPI.h" //Required for STB +#include "upm/src/b5t007001/stblib/usr_include/STBCommonDef.h" //Required for STB /** * MACROS and enum From 204bb6d850bbf2a2c553b168d7c5dc650ca6e462 Mon Sep 17 00:00:00 2001 From: omron-ankit <47993414+omron-ankit@users.noreply.github.com> Date: Tue, 5 Nov 2019 11:14:13 -0600 Subject: [PATCH 09/17] Update CMakeLists.txt --- src/b5t007001/CMakeLists.txt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/b5t007001/CMakeLists.txt b/src/b5t007001/CMakeLists.txt index 74f39097..861cf985 100644 --- a/src/b5t007001/CMakeLists.txt +++ b/src/b5t007001/CMakeLists.txt @@ -3,9 +3,13 @@ set (libdescription "B5T HVC Sensor") add_subdirectory(stblib) -set (module_src ${libname}.cxx) +set (module_src "${libname}.cxx" "b5t007001.cxx") +set (module_hpp "${libname}.hpp" "b5t007001.hpp") + set (module_hpp ${libname}.hpp stblib/usr_include/STBAPI.h stblib/usr_include/STBCommonDef.h stblib/usr_include/STBTypedef.h) include_directories("stblib/src/include/") include_directories("stblib/usr_include") + +upm_module_init(mraa) upm_module_init(stblib) From a2ea409314acdf99a9f4801990a069d014543ea2 Mon Sep 17 00:00:00 2001 From: omron-ankit <47993414+omron-ankit@users.noreply.github.com> Date: Tue, 5 Nov 2019 11:18:34 -0600 Subject: [PATCH 10/17] Update CMakeLists.txt --- src/b5t007001/CMakeLists.txt | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/b5t007001/CMakeLists.txt b/src/b5t007001/CMakeLists.txt index 861cf985..34477848 100644 --- a/src/b5t007001/CMakeLists.txt +++ b/src/b5t007001/CMakeLists.txt @@ -3,9 +3,7 @@ set (libdescription "B5T HVC Sensor") add_subdirectory(stblib) -set (module_src "${libname}.cxx" "b5t007001.cxx") -set (module_hpp "${libname}.hpp" "b5t007001.hpp") - +set (module_src ${libname}.cxx) set (module_hpp ${libname}.hpp stblib/usr_include/STBAPI.h stblib/usr_include/STBCommonDef.h stblib/usr_include/STBTypedef.h) include_directories("stblib/src/include/") From 2a5ae88dfe389b3e1d6fd2d495e7ffaba9c7dd4f Mon Sep 17 00:00:00 2001 From: omron-ankit <47993414+omron-ankit@users.noreply.github.com> Date: Tue, 5 Nov 2019 11:30:01 -0600 Subject: [PATCH 11/17] Update CMakeLists.txt --- src/b5t007001/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/b5t007001/CMakeLists.txt b/src/b5t007001/CMakeLists.txt index 34477848..44307da0 100644 --- a/src/b5t007001/CMakeLists.txt +++ b/src/b5t007001/CMakeLists.txt @@ -9,5 +9,5 @@ set (module_hpp ${libname}.hpp stblib/usr_include/STBAPI.h stblib/usr_include/ST include_directories("stblib/src/include/") include_directories("stblib/usr_include") -upm_module_init(mraa) upm_module_init(stblib) +upm_module_init(mraa) From 3e80c7d4072e49f916c0f52a7fcc857009c09f91 Mon Sep 17 00:00:00 2001 From: omron-ankit <47993414+omron-ankit@users.noreply.github.com> Date: Tue, 5 Nov 2019 11:51:19 -0600 Subject: [PATCH 12/17] Update CMakeLists.txt --- src/b5t007001/CMakeLists.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/src/b5t007001/CMakeLists.txt b/src/b5t007001/CMakeLists.txt index 44307da0..7b22b08d 100644 --- a/src/b5t007001/CMakeLists.txt +++ b/src/b5t007001/CMakeLists.txt @@ -9,5 +9,4 @@ set (module_hpp ${libname}.hpp stblib/usr_include/STBAPI.h stblib/usr_include/ST include_directories("stblib/src/include/") include_directories("stblib/usr_include") -upm_module_init(stblib) upm_module_init(mraa) From e2f83721f3c24140e7b7f15941511be22c53b89f Mon Sep 17 00:00:00 2001 From: omron-ankit <47993414+omron-ankit@users.noreply.github.com> Date: Tue, 5 Nov 2019 11:55:34 -0600 Subject: [PATCH 13/17] Update b5t007001.hpp --- src/b5t007001/b5t007001.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/b5t007001/b5t007001.hpp b/src/b5t007001/b5t007001.hpp index fe82f191..8c5bd8e2 100644 --- a/src/b5t007001/b5t007001.hpp +++ b/src/b5t007001/b5t007001.hpp @@ -27,8 +27,8 @@ #include // Required for string #include "mraa/uart.hpp" //Required for UART #include //Required for vector -#include "upm/src/b5t007001/stblib/usr_include/STBAPI.h" //Required for STB -#include "upm/src/b5t007001/stblib/usr_include/STBCommonDef.h" //Required for STB +#include "STBAPI.h" //Required for STB +#include "STBCommonDef.h" //Required for STB /** * MACROS and enum From 70c75bc46ed7c308e766d15c8012d01a20bc7d11 Mon Sep 17 00:00:00 2001 From: omron-ankit <47993414+omron-ankit@users.noreply.github.com> Date: Tue, 5 Nov 2019 12:50:26 -0600 Subject: [PATCH 14/17] Update CMakeLists.txt --- src/b5t007001/CMakeLists.txt | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/b5t007001/CMakeLists.txt b/src/b5t007001/CMakeLists.txt index 7b22b08d..bec0345c 100644 --- a/src/b5t007001/CMakeLists.txt +++ b/src/b5t007001/CMakeLists.txt @@ -1,12 +1,8 @@ set (libname "b5t007001") set (libdescription "B5T HVC Sensor") - add_subdirectory(stblib) - set (module_src ${libname}.cxx) set (module_hpp ${libname}.hpp stblib/usr_include/STBAPI.h stblib/usr_include/STBCommonDef.h stblib/usr_include/STBTypedef.h) - include_directories("stblib/src/include/") include_directories("stblib/usr_include") - upm_module_init(mraa) From dcffdf6ba9b6f05b67292327e6b816979e85dc65 Mon Sep 17 00:00:00 2001 From: omron-ankit <47993414+omron-ankit@users.noreply.github.com> Date: Tue, 5 Nov 2019 13:03:15 -0600 Subject: [PATCH 15/17] Update b5t007001.i --- src/b5t007001/b5t007001.i | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/b5t007001/b5t007001.i b/src/b5t007001/b5t007001.i index 6f869a4e..b780161f 100644 --- a/src/b5t007001/b5t007001.i +++ b/src/b5t007001/b5t007001.i @@ -16,4 +16,4 @@ JAVA_JNI_LOADLIBRARY(javaupm_b5t007001) %} %include "b5t007001.hpp" -/* END Common SWIG syntax * \ No newline at end of file +/* END Common SWIG syntax */ From e349b0a3845bedaa5e007c341cb225037fad4011 Mon Sep 17 00:00:00 2001 From: omron-ankit <47993414+omron-ankit@users.noreply.github.com> Date: Tue, 5 Nov 2019 13:26:35 -0600 Subject: [PATCH 16/17] Update b5t007001.i --- src/b5t007001/b5t007001.i | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/b5t007001/b5t007001.i b/src/b5t007001/b5t007001.i index b780161f..c2bb251f 100644 --- a/src/b5t007001/b5t007001.i +++ b/src/b5t007001/b5t007001.i @@ -1,5 +1,5 @@ #ifdef SWIGPYTHON -%module (package="upm") b5t007001 +%module (package="upm") omb5t007001 #endif %include "../common_top.i" @@ -13,6 +13,9 @@ JAVA_JNI_LOADLIBRARY(javaupm_b5t007001) /* BEGIN Common SWIG syntax ------------------------------------------------- */ %{ #include "b5t007001.hpp" +#include "STBAPI.h" +#include "STBCommonDef.h" +#include "STBTypedef.h" %} %include "b5t007001.hpp" From 3ee114fea0247ee1f0060bde633b19ba863feed8 Mon Sep 17 00:00:00 2001 From: omron-ankit <47993414+omron-ankit@users.noreply.github.com> Date: Tue, 5 Nov 2019 14:50:26 -0600 Subject: [PATCH 17/17] Update b5t007001.i --- src/b5t007001/b5t007001.i | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/b5t007001/b5t007001.i b/src/b5t007001/b5t007001.i index c2bb251f..60cc0f75 100644 --- a/src/b5t007001/b5t007001.i +++ b/src/b5t007001/b5t007001.i @@ -19,4 +19,7 @@ JAVA_JNI_LOADLIBRARY(javaupm_b5t007001) %} %include "b5t007001.hpp" +%include "STBAPI.h" +%include "STBCommonDef.h" +%include "STBTypedef.h" /* END Common SWIG syntax */