Initial import of NFC GNSS SDK project

This commit is contained in:
chenjintao
2026-09-15 16:10:12 +08:00
commit 2746cc3d4e
3070 changed files with 892062 additions and 0 deletions
@@ -0,0 +1,51 @@
#-------------------------------------------------------------------------------
# Configure variable
#-------------------------------------------------------------------------------
TOP_DIR:=$(TOP_DIR)
ROOT_DIR:=$(TOP_DIR)/../..
MAKEFILE_PATH :=$(subst $(strip \),/,$(abspath $(lastword $(MAKEFILE_LIST))))
#-------------------------------------------------------------------------------
# Configure source code files
#-------------------------------------------------------------------------------
SRC_FILES+= \
example_qr_code.c \
#-------------------------------------------------------------------------------
# the include directories
#-------------------------------------------------------------------------------
INC_DIRS+= \
-I${TOP_DIR}/ \
-I${TOP_DIR}/common/include \
#-------------------------------------------------------------------------------
# Configure compile flag for C
#-------------------------------------------------------------------------------
U_FLAGS:=
#-------------------------------------------------------------------------------
# Configure compile flag for C++
#-------------------------------------------------------------------------------
U_CPPFLAGS:=
#-------------------------------------------------------------------------------
# Configure default macro define
#-------------------------------------------------------------------------------
DFLAGS+= \
-D__TM_ZONE=tm_zone \
-D__TM_GMTOFF=tm_gmtoff \
#-------------------------------------------------------------------------------
# Configure link library
#-------------------------------------------------------------------------------
U_LIBS:=
#-------------------------------------------------------------------------------
# include mk file
#-------------------------------------------------------------------------------
include ${TOP_DIR}/config/common/makefile.mk
@@ -0,0 +1,125 @@
/*---------------------------------------------------------------------------
Copyright (c) 2020 Quectel Wireless Solution, Co., Ltd. All Rights Reserved.
Quectel Wireless Solution Proprietary and Confidential.
---------------------------------------------------------------------------*/
#include <stdio.h>
#include "ql_application.h"
#include "ql_rtos.h"
#include "ql_gpio.h"
#include "ql_camera.h"
#include "ql_uart.h"
#define APP_DEBUG(fmt, args...) printf(fmt, ##args)
#define SERIAL_RX_BUFFER_LEN 2048
static u8 m_RxBuf_Uart1[SERIAL_RX_BUFFER_LEN];
#define DECODER_COUNT 20
static ql_timer_t timerRef;
bool camera_close = 0;
int camera_open = 1;
ql_task_t taskRef;
#define __align(x) __attribute__ ((aligned (x)))
//static __align(32) unsigned char camdecodebuf[640*480*3/2*2]={0};
#define CAMERA_PREVIEW_TASK_PRIORITY 218
#define CAMERA_DECODE_TASK_PRIORITY 227
#define PREVIEW_BUF_CNT 2
void cam_callback_preview(P_CAL_IDENTITY_RESULT_STRUCT outdata);
static CAM_DECODE_CONFIG_CTX camconfig_test =
{
.camwidth =240, //
.camheight =320,
.dectaskprio =CAMERA_DECODE_TASK_PRIORITY,
.decbufcnt =1, //解码buffer的数量
.decbufaddr =NULL, //解码buffer的首地址
.decodecb =cam_callback_preview, //解码成功的回调
.preview =0, //是否需要进行预览
.pretaskprio =CAMERA_PREVIEW_TASK_PRIORITY,//预览任务的优先级
.prebufcnt =PREVIEW_BUF_CNT, //预览的buffer数量
.prebufaddr =NULL, //预览的buffer首地址---用于Camera预览数据(NV12)保存
.lcdmemeryaddr =NULL, //LCD的显存首地址,预览的时候,需要将预览的数据转化到此buffer,600n此处不需要传入
.lcdprewidth =320, //预览图像的宽度
.lcdpreheight =240, //预览图像的高度
};
/******************************************************************
ENGLISH:Please do not run time-consuming functions in this function
中文:请不要在此函数内运行比较耗时的代码或者函数
如果扫码成功,此回调函数将会被调用
attention:please don't "use ql_qr_camera_close" as callback in "ql_qr_camera_open".
注意:不要将use ql_qr_camera_close函数作为ql_qr_camera_open的回调函数。
回调类型为task级别
******************************************************************/
void cam_callback_preview(P_CAL_IDENTITY_RESULT_STRUCT outdata)
{
printf("<-- result=%d\r\n",outdata->result);
printf("<-- databuf=%s\r\n",outdata->DataBuf);
//解码成功,发送消息,告诉通讯线程进行数据通信,将解码结果上传到交易中心
//More.....
//关闭Camera
if(outdata->result==0){
camera_close =1;
}
}
/*Fias.fan 2021.11.17 测试解码功能和补光灯控制*/
//#define TEST_FILL_LIGHT //测试当有物体靠近摄像头时,打开补光灯
static void qr_code_light_test(void *arg)
{
int ret=0;
unsigned int value[10]={0};
unsigned int threshold=0x5; //阈值设置,当前环境光和遮挡时的环境光差值,可根据读取寄存器0x14环境光平均值,自行设定。
unsigned int current_val=0,last_val=0,last_last_val=0;
ql_rtos_task_sleep_s(5); //这里目前必须要延时,给camera时间初始化。
printf("<----------Camera qr_code_light_test++++++++++++++>\n");
//@20221208 初始化camera IO供电使能引脚(EC600M)
ql_gpio_init(GPIO_PIN_NO_77, PIN_DIRECTION_IN,PIN_PULL_PU,PIN_LEVEL_HIGH);
//Ql_Cam_Identify(1);//打开解码
ql_set_decode_mirror(AUTO_MODE); //此接口表示自动检测非镜像和镜像二维码
printf("[OPEN-START] Start Camera heap(%d)\r\n",ql_rtos_get_free_heap_size());
ret = ql_qr_camera_open(&camconfig_test);
if(ret != CAM_DECODE_SUCESS)
{
printf("camera code open failed\r\n");
printf("[OPEN-CAM] Camera heap(%d)\r\n",ql_rtos_get_free_heap_size());
}
else
{
printf("camera code open successd\r\n");
printf("[OPEN-CAM] Camera heap(%d)\r\n",ql_rtos_get_free_heap_size());
}
ql_rtos_task_sleep_s(5);
/*
ret=ql_qr_camera_close();
if(ret != CAM_DECODE_SUCESS)
{
printf("camera code close failed,ret=%d\r\n",ret);
printf("[OPEN-CAM] Camera heap(%d)\r\n",ql_rtos_get_free_heap_size());
}
else
{
printf("camera code close success\r\n");
printf("[OPEN-CAM] Camera heap(%d)\r\n",ql_rtos_get_free_heap_size());
}
*/
}
//application_init(qr_code_light_test, "qr_code_light_test", 2, 0);