4G_module/include/cmiot/cm_qr.h

90 lines
2.7 KiB
C
Raw Permalink Normal View History

2024-09-02 17:54:29 +08:00
/**
* @file cm_qr.h
* @brief
* @copyright Copyright © 2021 China Mobile IOT. All rights reserved.
* @author By lixuelin
* @date 2023/02/10
*
* @defgroup QR
* @ingroup QR
* @{
*/
#ifndef __CM_QR_H__
#define __CM_QR_H__
#define CM_QR_DATA_LEN_MAX 512 /*!< 解析结果数据最大长度 */
/**
* @param [in] param
* @param [in] data
*/
typedef int (*cm_qr_cb)(void *param, const char *data);
/* 解析参数 */
typedef struct
{
void *data; /*!< 图像数据*/
int width; /*!< 图像宽度*/
int height; /*!< 图像高度*/
int format; /*!< 图像原始格式,需转码为灰阶图像(Y800)*/
void *usrdata; /*!< 扫描线程回调的参数*/
cm_qr_cb callback; /*!< 扫描线程回调*/
} cm_qr_param_t;
/* 图像编码格式 */
typedef enum
{
CM_QR_FMT_UYVY, /*!< UYVY格式图像 */
CM_QR_FMT_Y800, /*!< 灰阶图像 */
CM_QR_FMT_OTHER, /*!< 无效格式 */
} cm_qr_fmt_e;
/* 二维码解析结果码 */
typedef enum
{
CM_QR_RET_SUCCESS, /*!< 解码成功 */
CM_QR_RET_NOT_INIT, /*!< 未初始化 */
CM_QR_RET_CREATE_FAILED, /*!< 解码器创建失败 */
CM_QR_RET_MEMORY_ERR, /*!< RAM剩余最大块空间不够 */
CM_QR_RET_FMT_ERR, /*!< 传入的图像格式错误 */
CM_QR_RET_CONVERT_ERR, /*!< 图像灰阶转换错误 */
CM_QR_RET_SCAN_ERR, /*!< 灰阶图像扫描错误 */
CM_QR_RET_NO_DECODE_DATA, /*!< 解码后 无有效数据 */
} cm_qr_retult_e;
/**
* @brief .
*
* @param [in] width
* @param [in] height
* @return 00
*
* @details
*/
int cm_qr_convert_init(int width, int height);
/**
* @brief .
*
* @return
*
* @details 使
*/
void cm_qr_convert_destroy(void);
/**
* @brief .
*
* @param [in] param
* @param [out] data
* @param [out] datalen
*
* @return
* = 0 -
* > 0 - , cm_qr_retult_e
*
* @details ram的最大块超过480*640
* 线4KB的栈空间
*/
int32_t cm_qr_scan(cm_qr_param_t *param, char *data, int *datalen);
#endif