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
+272
View File
@@ -0,0 +1,272 @@
/*================================================================
Copyright (c) 2021, Quectel Wireless Solutions Co., Ltd. All rights reserved.
Quectel Wireless Solutions Proprietary and Confidential.
=================================================================*/
/**
******************************************************************************
* @file ql_gpio.c
* @author Juson.zhang
* @version V1.0.0
* @date 2019/12/17
* @brief This file contains the gpio functions's definitions
******************************************************************************
*/
#include <stdio.h>
#include "xscale_types.h"
#include "ql_gpio.h"
#include "quec_gpio.h"
int ql_gpio_init(GPIO_PIN_NUMBER_E gpio_num, PIN_DIRECTION_E pin_dir, PIN_PULL_E pin_pull, PIN_LEVEL_E pin_level)
{
int ret = 0;
ret = quec_gpio_init(gpio_num, pin_dir, pin_pull, pin_level);
return ret;
}
/*Fias 2022-4-29 gpio input 32Khz (32787Hz)*/
int ql_gpio_map_clock(GPIO_PIN_NUMBER_E gpio_num)
{
int ret = 0;
ret = quec_gpio_map_clock(gpio_num);
return ret;
}
int ql_gpio_deinit(GPIO_PIN_NUMBER_E gpio_num)
{
int ret = 0;
ret = quec_gpio_deinit(gpio_num);
return ret;
}
int ql_gpio_set_level(GPIO_PIN_NUMBER_E gpio_num, PIN_LEVEL_E pin_level)
{
int ret = 0;
ret = quec_gpio_set_level(gpio_num, pin_level);
return ret;
}
int ql_gpio_get_level(GPIO_PIN_NUMBER_E gpio_num, PIN_LEVEL_E *p_pin_level)
{
int ret = 0;
ret = quec_gpio_get_level(gpio_num, p_pin_level);
return ret;
}
int ql_gpio_set_drv_level(GPIO_PIN_NUMBER_E gpio_num, QL_PIN_DRIVE_LEVEL_E drive_level)
{
int ret = 0;
ret = quec_gpio_set_drive_level(gpio_num, drive_level);
return ret;
}
int ql_gpio_get_drv_level(GPIO_PIN_NUMBER_E gpio_num, QL_PIN_DRIVE_LEVEL_E* drive_level)
{
int ret = 0;
ret = quec_gpio_get_drive_level(gpio_num, drive_level);
return ret;
}
int ql_gpio_set_direction(GPIO_PIN_NUMBER_E gpio_num, PIN_DIRECTION_E pin_dir)
{
int ret = 0;
ret = quec_gpio_set_direction(gpio_num, pin_dir);
return ret;
}
int ql_gpio_get_direction(GPIO_PIN_NUMBER_E gpio_num, PIN_DIRECTION_E *p_pin_dir)
{
int ret = 0;
ret = quec_gpio_get_direction(gpio_num, p_pin_dir);
return ret;
}
int ql_gpio_set_pull(GPIO_PIN_NUMBER_E gpio_num, PIN_PULL_E pin_pull)
{
int ret = 0;
ret = quec_gpio_set_pull(gpio_num, pin_pull);
return ret;
}
int ql_gpio_get_pull(GPIO_PIN_NUMBER_E gpio_num, PIN_PULL_E *p_pin_pull)
{
int ret = 0;
ret = quec_gpio_get_pull(gpio_num, p_pin_pull);
return ret;
}
int ql_pin_set_func(GPIO_PIN_NUMBER_E gpio_num, unsigned char func_sel)
{
int ret = 0;
ret = quec_pin_set_func(gpio_num, func_sel);
return ret;
}
void ql_active_gpio_hisr(unsigned int gpio_num)
{
quec_active_gpio_hisr(gpio_num);
}
int ql_eint_register(GPIO_PIN_NUMBER_E gpio_num, PIN_EDGE_E pin_edge, PIN_PULL_E pin_pull, void *eint_cb, void *wakeup_eint_cb)
{
int ret = 0;
ret = quec_eint_register(gpio_num, pin_edge, pin_pull, eint_cb, wakeup_eint_cb);
return ret;
}
int ql_eint_unregister(GPIO_PIN_NUMBER_E gpio_num)
{
int ret = 0;
ret = quec_eint_unregister(gpio_num);
return ret;
}
int ql_eint_enable(GPIO_PIN_NUMBER_E gpio_num, PIN_EDGE_E pin_edge)
{
int ret = 0;
ret = quec_eint_enable(gpio_num, pin_edge);
return ret;
}
int ql_eint_disable(GPIO_PIN_NUMBER_E gpio_num)
{
int ret = 0;
ret = quec_eint_disable(gpio_num);
return ret;
}
int ql_eint_enable_wakeup(GPIO_PIN_NUMBER_E gpio_num, PIN_EDGE_E pin_edge)
{
int ret = 0;
ret = quec_eint_enable_wakeup(gpio_num, pin_edge);
return ret;
}
int ql_eint_disable_wakeup(GPIO_PIN_NUMBER_E gpio_num)
{
int ret = 0;
ret = quec_eint_disable_wakeup(gpio_num);
return ret;
}
/*somer.zhang-2020/05/11-set pmic gpio out high level(1) or low level(0)*/
//此接口是设置PMIC芯片上的GPIO,ECxxxY系列采用PM813电源原理芯片才有此功能
int ql_set_pmic_gpio_level(QL_PIMC_GPIO_E PINx,unsigned char level)
{
int ret = 0;
ret = quec_set_pmic_gpio_level(PINx, level);
return ret;
}
int ql_set_usim2_io_vol(char onoff, QL_USIM2_IO_E vol)
{
int ret = 0;
ret = quec_set_usim2_io_vol(onoff, vol);
return ret;
}
#ifdef QL_GNSS
#include "gps_channel.h"
//20230807 和芯gnss rom1 or rom2 check 后续新增和芯gnss项目须在此接口中添加项目宏控
//20231011 增加gnss_type 3类型:ROM2 OC不接备电
int quec_gnss_type_check(void)
{
int gnss_type;
#if defined (__QUECTEL_PROJECT_EC800MCN_GC__) || defined(__QUECTEL_PROJECT_EC800MCN_GA__)\
|| defined (__QUECTEL_PROJECT_EC800MCN_GM__) || defined(__QUECTEL_PROJECT_EG810MCN_GA__)\
|| defined (__QUECTEL_PROJECT_EC600MCN_GC__)
gnss_type = 1; //ROM1
#elif defined(__QUECTEL_PROJECT_EC800MCN_GD__) || defined (__QUECTEL_PROJECT_EC800MCN_GB__) ||defined (__QUECTEL_PROJECT_EG800AKCN_11LG__)\
||defined (__QUECTEL_PROJECT_EG800AKEU_11LG__)||defined (__QUECTEL_PROJECT_EG800AKCN_11LN__)|| defined(__QUECTEL_PROJECT_EG915NLA_GK__)\
||defined (__QUECTEL_PROJECT_EG800AKLA_11LG__)||defined (__QUECTEL_PROJECT_EG600AKCN_11LG__)
gnss_type = 2; //ROM2
#else
gnss_type = 1;
#endif
return gnss_type;
}
int quec_boardcfg_gnss_pin_init(quec_gps_gpio_struct_t *gpio_pin)
{
if(NULL == gpio_pin)
return -1;
gpio_pin->tx = GPIO_PIN_NO_74;
gpio_pin->rx = GPIO_PIN_NO_73;
#if defined(__QUECTEL_PROJECT_EC600MCN_GC__)
gpio_pin->rst = GPIO_PIN_NO_3;
gpio_pin->pwr_en = GPIO_PIN_NO_120;
#elif defined(__QUECTEL_PROJECT_EG800AKCN_11LG__)||defined (__QUECTEL_PROJECT_EG800AKEU_11LG__)||defined (__QUECTEL_PROJECT_EG800AKCN_11LN__)\
|| defined (__QUECTEL_PROJECT_EG800AKLA_11LG__)||defined (__QUECTEL_PROJECT_EG600AKCN_11LG__)
gpio_pin->tx = GPIO_PIN_NO_3;
gpio_pin->rx = GPIO_PIN_NO_2;
gpio_pin->rst = GPIO_PIN_NO_57;
gpio_pin->pwr_en = GPIO_PIN_NO_87;
#elif defined(__QUECTEL_PROJECT_EG915NLA_GK__)
gpio_pin->tx = GPIO_PIN_36;
gpio_pin->rx = GPIO_PIN_35;
gpio_pin->rst = GPIO_PIN_20;
gpio_pin->pwr_en = GPIO_PIN_11;
#else
gpio_pin->rst = GPIO_PIN_NO_71;
#endif
return 0;
}
#endif
int HOST_RESET_GPS_GPIO;
int HOST_RESET_FUNC_MFPR;
int HOST_WAKE_GPS_GPIO;
int HOST_WAKE_GPS_FUNC_MFPR;
int GPS_WAKE_HOST_GPIO;
int GPS_WAKE_HOST_FUNC_MFPR;
#include "quec_asr_gps_support.h"
void quec_asr_gnss_pin_init(void)
{
#ifdef QUEC_GPS_SUPPORT
#if !defined(CRANELS_SUPPORT) && !defined(CRANELG_SUPPORT) && !defined(CRANELRH_SUPPORT) //外置
#if defined(JACANA_ASR1606L_DKB_V10_ASR)
HOST_RESET_GPS_GPIO = GPIO_PIN_NO_121; //gps复位引脚
GPS_WAKE_HOST_GPIO = GPIO_PIN_NO_119; //gps唤醒主机
HOST_WAKE_GPS_GPIO=GPIO_PIN_NO_120; //主机唤醒gps引脚
HOST_RESET_FUNC_MFPR=0;
GPS_WAKE_HOST_FUNC_MFPR =1;
HOST_WAKE_GPS_FUNC_MFPR = 1;
#elif defined(JACANA_ASR1602_DKB_V10_ASR)
HOST_RESET_GPS_GPIO = GPIO_PIN_NO_87; //gps复位引脚
GPS_WAKE_HOST_GPIO = GPIO_PIN_NO_84; //gps唤醒主机
#if defined (__QUECTEL_PROJECT_EG915KEU_LA__) || defined (__QUECTEL_PROJECT_EG915KEU_LG__) || defined (__QUECTEL_PROJECT_EG915KLA_LG__)
HOST_WAKE_GPS_GPIO = GPIO_PIN_NO_89; //主机唤醒gps引脚
#else
HOST_WAKE_GPS_GPIO = GPIO_PIN_NO_86; //主机唤醒gps引脚
#endif
HOST_RESET_FUNC_MFPR=1;
GPS_WAKE_HOST_FUNC_MFPR =1;
HOST_WAKE_GPS_FUNC_MFPR = 1;
#else
#error "gnss gpio no init"
#endif
asr_gnss_pin_init();
#endif
#endif
}
int ql_sfp_eint_register(GPIO_PIN_NUMBER_E gpio_num, void *wakeup_eint_cb)
{
return quec_sfp_eint_register(gpio_num,wakeup_eint_cb);
}
int ql_sfp_eint_unregister(GPIO_PIN_NUMBER_E gpio_num)
{
return quec_sfp_eint_unregister(gpio_num);
}
int ql_peripherals_pin_not_config(GPIO_PIN_NUMBER_E gpio_num)
{
int ret = 0;
ret = quec_peripherals_pin_not_config(gpio_num);
return ret;
}