Mar. 14. 2018

Dependencies:   GraphicsFramework GR-PEACH_video LCD_shield_config AsciiFont R_BSP USBHost_custom

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers STBPeValidValue.c Source File

STBPeValidValue.c

00001 /*---------------------------------------------------------------------------*/
00002 /* Copyright(C)  2017  OMRON Corporation                                     */
00003 /*                                                                           */
00004 /* Licensed under the Apache License, Version 2.0 (the "License");           */
00005 /* you may not use this file except in compliance with the License.          */
00006 /* You may obtain a copy of the License at                                   */
00007 /*                                                                           */
00008 /*     http://www.apache.org/licenses/LICENSE-2.0                            */
00009 /*                                                                           */
00010 /* Unless required by applicable law or agreed to in writing, software       */
00011 /* distributed under the License is distributed on an "AS IS" BASIS,         */
00012 /* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  */
00013 /* See the License for the specific language governing permissions and       */
00014 /* limitations under the License.                                            */
00015 /*---------------------------------------------------------------------------*/
00016 
00017 #include "STBPeValidValue.h"
00018 
00019 /*Value range check*/
00020 #define IS_OUT_RANGE( val , min , max ) ( ( (val) < (min) ) || ( (max) < (val) ) )
00021 #define IS_OUT_VALUE( val , min , max , accept ) ( IS_OUT_RANGE( val , min , max ) && ( (val) != (accept) )  )
00022 #define IS_OUT_FR_UID( val , min , max , acceptA , acceptB , acceptC  ) ( IS_OUT_RANGE( val , min , max ) && ( (val) != (acceptA) ) && ( (val) != (acceptB) ) && ( (val) != (acceptC) ) )
00023 
00024 /*------------------------------------------------------------------------------------------------------------------*/
00025 /* STB_PeIsValidValue                                                                                            */
00026 /*------------------------------------------------------------------------------------------------------------------*/
00027 STB_INT32 STB_PeIsValidValue(const STB_PE_DET *input, STBExecFlg *execFlg)
00028 {
00029     STB_INT32 i ,j;
00030 
00031     if(        execFlg->gen    == STB_TRUE     
00032         ||    execFlg->age    == STB_TRUE 
00033         ||    execFlg->fr        == STB_TRUE 
00034         ||    execFlg->exp    == STB_TRUE     
00035         ||    execFlg->dir    == STB_TRUE     
00036         ||    execFlg->gaz    == STB_TRUE 
00037         ||    execFlg->bli    == STB_TRUE 
00038         )
00039     {
00040         for( i = 0 ; i < input->num ; i++)
00041         {
00042             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;}
00043             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;}
00044             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;}
00045             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;}
00046         }
00047     }
00048 
00049 
00050     if(    execFlg->age    == STB_TRUE )
00051     {
00052         for( i = 0 ; i < input->num ; i++)
00053         {
00054             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;}
00055             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;}
00056         }
00057     }
00058 
00059     if(    execFlg->gen    == STB_TRUE )
00060     {
00061         for( i = 0 ; i < input->num ; i++)
00062         {
00063             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;}
00064             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;}
00065         }
00066     }
00067 
00068     if(    execFlg->gaz    == STB_TRUE )
00069     {
00070         for( i = 0 ; i < input->num ; i++)
00071         {
00072             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;}
00073             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;}
00074         }
00075     }
00076 
00077     if(    execFlg->bli    == STB_TRUE )
00078     {
00079         for( i = 0 ; i < input->num ; i++)
00080         {
00081             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;}
00082             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;}
00083         }
00084     }
00085 
00086     if(    execFlg->exp    == STB_TRUE )
00087     {
00088         for( i = 0 ; i < input->num ; i++)
00089         {
00090             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;}
00091             for( j = 0 ; j < STB_EX_MAX ; j++)
00092             {
00093                 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;}
00094             }
00095             
00096         }
00097     }
00098 
00099 
00100 
00101 
00102     return STB_TRUE;
00103 }