#ifndef ASJ_PE_SITUP_WARPPER #define ASJ_PE_SITUP_WARPPER #include "PEStatus.h" #include "situp_dl_api.h" // ################################# // ######### SitUp Struct ######### // ################################# typedef struct { float knee_angle_min, knee_angle_max; // 膝盖弯曲角度最小值、膝盖弯曲角度最大值 float knee_elbow_distance; // 肘与膝盖距离阈值 float knee_hip_shoulder_angle; // 膝臀肩角度阈值(用作臀部离垫检测) float hip_shoulder_angle; // 肩臀角度阈值(用于肩胛骨是否触垫检测) int leg_bend_flag; // 双腿弯曲检测开关 int hands_on_head_flag; // 双手抱头检测开关 int hip_lift_flag; // 臀部抬起检测开关 int body_lying_flag; // 身体躺平检测开关 int leave_pad_end_flag; // 离垫检测开关 } SitUp_ST; typedef struct { int sitUpCount; // 仰卧起坐成功/次数 int sitUp_NotLieFalt; // 仰卧起坐动作违规->仰卧时,两肩胛骨没有触垫(未躺平)/次数 int sitUp_ElbowNotTouchKnee; // 仰卧起坐动作违规->起坐时,肘部没有触及两膝/次数 int sitUp_HipLeavePad; // 仰卧起坐动作违规->臀部离垫/次数 int sitUp_HandLeaveHead; // 仰卧起坐动作违规->没有抱头/次数 int sitUp_KneeNotBend; // 仰卧起坐动作违规->膝盖没有弯曲/次数 int situp_illegal_flag; // 仰卧起坐动作违规状态码 } SitUpResult_ST; /** * 创建实例,单例模式. * @return 实例指针 */ void* situp_create(); /** * 对实例进行数据清零并赋值结构体中的参数 * @param situp 输入参数:实例指针 * @param situp_s 输入参数:页面设定的参数 * @return 参考PEStatus.h中的StatusCode */ int situp_examInit(void* situp, SitUp_ST situp_s); /** * 输入推理数据进行准备状态检测 * @param situp 输入参数:实例指针 * @param mResult 输入参数:页面设定的参数 * @param prepareStatus 输出参数:根据PEStatus.h中的SitUpPrepareCode按位或运算后的返回值 * @return 参考PEStatus.h中的StatusCode */ int situp_processPrepare(void* situp, sampleRunJoint_RESULT_S *mResult, int *prepareStatus); /** * 输入推理数据进行考试状态检测 * @param situp 输入参数:实例指针 * @param mResult 输入参数:页面设定的参数 * @param result 输出参数:结果结构体(包含计数结果和PEStatus.h中的SitUpExamCode按位或运算后的返回值) * @return 参考PEStatus.h中的StatusCode */ int situp_processExam(void* situp, sampleRunJoint_RESULT_S *mResult, SitUpResult_ST *result); /** * Prepare enum转换char* * @param code 输入参数:枚举变量 * @return 枚举变量对应的字符串 */ const char *SitUpPrepareCode2String(enum SitUpPrepareCode code); /** * Exam enum转换char* * @param code 输入参数:枚举变量 * @return 枚举变量对应的字符串 */ const char *SitUpExamCode2String(enum SitUpExamCode code); #endif