PDR/1.Software/PDR 1.04/include/scene_recognition.h

158 lines
6.8 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

/*********************************************************************************/
/* FILE NAME : scene_recognition.h */
/* AUTHOR : Zhang Jingrui, ID: 11082826, Version: V0.1_Beta, Data:2019-03-28 */
/* DESCRIPTION: This header file conterns the prototype description of the external */
/* interface funtions of the scene recognition module and the definit- */
/* ion of related resources. */
/* HISTORY : (NONE) */
/********************************************************************************/
#ifndef _PDR_SCENE_RECOGNITION_H_
#define _PDR_SCENE_RECOGNITION_H_
/* Header Files Including -----------------------------------------*/
/*=================================================================*/
#include "pdr_sensor.h"
/* Macro Declaration ----------------------------------------------*/
/*=================================================================*/
#define _TIME_BUFFER_SIZE 10 /* Buffer size for the time calculation. */
#define _ACCURACY_BUFFER_SIZE 9 /* Accuracy time-based buffer size. */
#define _GNSS_INDEX_LEN 103 /* Structural array size in _GnssInfo. */
/* Extern Variable Declaration ------------------------------------*/
/*=================================================================*/
//extern int scene_recognition_debug_flag ;
//extern int scene_recognition_log_debug_flag ;
/* Status Declaration ---------------------------------------------*/
/*=================================================================*/
/* Usage: 场景识别模块初始化、重置操作结果状态标志位 */
typedef enum SCENE_INIT_STATE
{
// 场景识别模块初始化相关状态
INIT_SUCCESS = 0,
INIT_NOT_PERFORMED,
INIT_ERROR_MEMORY_OCCUPIED, // 模块资源未提前释放,需先释放资源
INIT_ERROR_MEMORY_INIT_FAILED, // 初始化内存申请失败
INIT_ERROR_REDUNDANCY, // 模块重复初始化,此时初始化无效。若需要重启模块,可以:
// 方法1先关闭模块关闭成功后重新初始化模块。
// 方法2重启模块效果同方法1。
// 场景识别模块重置相关状态(for debug)
INIT_RESET_SUCCESS = 0,
INIT_RESET_FAILED
} SCENE_INIT_STATE;
/* Usage: 场景分类结果 */
typedef enum SCENE_RECOGNITION_RESULT
{
RECOG_UNKNOWN, // 未能确定场景的状态(默认状态)
RECOG_OPEN_AREA, // 场景open-area
RECOG_OTHERS, // 除了上述确定场景外的其他场景
RECOG_ERROR_PARAM_INCRECT, // 输入参数检查错误
RECOG_ERROR_NMEA_INFO_MISS, // 输入参数正确但是内容有误
/* 预研检测结果(不稳定) */
RECOG_MULTIPATH // 检测多径
} SCENE_RECOGNITION_RESULT;
/* Usage: 场景识别模块资源释放操作结果 */
typedef enum SCENE_DESTROY_STATE
{
DESTROY_SUCCESS = 0,
DESTROY_FIALED,
DESTROY_ERROR,
DESTROY_INVALID // 无效释放操作,表示没有对应的初始化或重置操作
} SCENE_DESTROY_STATE;
/* Status Declaration--------------------------------------------*/
/*===============================================================*/
// 描述当前场景识别模块的工作状态
typedef enum _SCENE_MODEL_WORK_STATE
{
MODEL_OFF,
MODEL_ON
} _SCENE_MODEL_WORK_STATE;
/* Usage: Identifier of the quality of the satellites' signal source. */
typedef enum _SIGNAL_QUALITY
{
SIG_UNKNOWN,
GOOD,
BAD
} SIGNAL_QUALITY;
/* Usage: extract and save information from Nmea_t for the module. */
/* This is the interface for the Nmea_t. */
typedef struct _GnssInfo
{
int update; // GNSS更新标志位 1更新 0不更新
double local_timestamp; // 当地时间
float accuracy; // GPS 输出的Accuracy参数Accuracy > 0 当其为负数表示无效
int sat_visible_number; // 当前时间可见卫星数量
float snr_list[_GNSS_INDEX_LEN]; // 当前时间可见卫星的SNR列表
int sat_used_list[_GNSS_INDEX_LEN]; // 当前使用卫星列表
} GnssInfo;
/* Usage: 标记GNSS中的各个卫星系统 */
/* Struct Declaration -------------------------------------------*/
/*===============================================================*/
/* Function Declaration -------------------------------------------*/
/*=================================================================*/
#ifdef __cplusplus
extern "C" {
#endif
/* Function Name: sceneRecognitionInit() */
/* Usage: Initialization module for configuring related resources */
/* and must be executed once first beforing using the scene */
/* recognition module funcition. */
/* Param @ (NONE) */
/* Return @ init_res: Result state of the initialization process. */
SCENE_INIT_STATE SceneRecog_Init(void);
/* Function Name: scene_recognition_reset() */
/* Usage: 初始化模块,配置相关资源,在使用模块前必须首先被执行。 */
/* Param @ (NONE) */
/* Return @ init_res: 重置执行结果。 */
SCENE_INIT_STATE scene_recognition_reset(void);
/**----------------------------------------------------------------------
* Function : sceneRecognitionProc
* Description : GNSS场景识别处理流程
* 1将nmea转换为gnss
* 2) 通过accuracy、snr、卫星数量分析GNSS信号质量
* 3) 返回结果
* Input : PDR的nmea结构体
* Return : 场景识别结果
* Date : 2020/02/18
*---------------------------------------------------------------------**/
SCENE_RECOGNITION_RESULT sceneRecognitionProc(const Nmea_t* nmea);
/* Function Name: scene_recognition_destroy() */
/* Usage: 场景识别处理结束后的资源释放操作,资源释放后无法继续进行场 */
/* 景识别过程。 */
/* Param @ (NONE) */
/* Return @ destroy_state: 资源释放操作结果。 */
SCENE_DESTROY_STATE scene_recognition_destroy(void);
/**----------------------------------------------------------------------
* Function : isOpenArea
* Description : GNSS开阔地检测通过输入GNSS信号分析当前信号质量从而确定
* 目标是否处于开阔场地。
* Return : 0 : 非开阔地 1开阔地(信号质量较好)
* Author : Zhang Jingrui, Geek ID: 11082826
* Date : 2020/02/18 logzhan
*---------------------------------------------------------------------**/
int isOpenArea(const Nmea_t* nmea);
#ifdef __cplusplus
}
#endif
#endif //__SCENE_RECOGNITION_H__