92 lines
2.7 KiB
C
92 lines
2.7 KiB
C
/*----------------------------------------------------------------------------
|
|
* Copyright (c) TJD Technologies Co., Ltd. 2020. All rights reserved.
|
|
*
|
|
* Description: gsensor.c
|
|
*
|
|
* Author: liangjianfei
|
|
*
|
|
* Create: 2024-4-25
|
|
*--------------------------------------------------------------------------*/
|
|
|
|
#include "gsensor_api.h"
|
|
#include "gsensor_port.h"
|
|
#include "service_gsensor.h"
|
|
#include "sys_config.h"
|
|
#include <stdint.h>
|
|
#ifdef TJD_PCBA_0
|
|
#include "gs_drv_sc7a20e.h"
|
|
#elif defined(TJD_PCBA_1)
|
|
#include "lis2doc.h"
|
|
#include "lis2doc_reg.h"
|
|
#endif
|
|
#include "cmsis_os.h"
|
|
#include "gsensor_api.h"
|
|
|
|
#define ENABLE_PRINT_INFO 1
|
|
#define ENABLE_DEBUG 1
|
|
|
|
#if ENABLE_PRINT_INFO
|
|
#define static_print_info(...) sys_gs_log_i(__VA_ARGS__) // 一般信息打印宏控制
|
|
#define static_print_warn(...) sys_gs_log_w(__VA_ARGS__) // 警告信息打印一般常开
|
|
#define static_print_error(...) sys_gs_log_e(__VA_ARGS__) // 错误信息打印一般常开
|
|
#if ENABLE_DEBUG
|
|
#define static_print_debug(...) sys_gs_log_d(__VA_ARGS__) // debug
|
|
#endif
|
|
#else
|
|
#define static_print_info(...)
|
|
#define static_print_warn(...)
|
|
#define static_print_error(...)
|
|
#endif
|
|
|
|
static int32_t gs_open(void)
|
|
{
|
|
int32_t ret = gensor_i2c_master_init();
|
|
if (ret != ERRCODE_SUCC) {
|
|
static_print_error("gs_i2c_init fail: %x", ret);
|
|
return ret;
|
|
}
|
|
ret = lis2doc_init();
|
|
if (ret != ERRCODE_SUCC) {
|
|
static_print_error("lis2doc_init fail: %x", ret);
|
|
return ret;
|
|
}
|
|
ret = lis2doc_open();
|
|
if (ret != ERRCODE_SUCC) {
|
|
static_print_error("lis2doc_open fail: %x", ret);
|
|
return ret;
|
|
}
|
|
static_print_info("lis2doc_init succ.");
|
|
return ret;
|
|
}
|
|
|
|
static int32_t gs_close(void)
|
|
{
|
|
int32_t ret;
|
|
ret = lis2doc_power_down();
|
|
ret = gensor_i2c_master_deinit();
|
|
if (ret != ERRCODE_SUCC) {
|
|
static_print_info("gs_i2c_deinit fail: %x", ret);
|
|
}
|
|
static_print_info("gs_close succ");
|
|
return ret;
|
|
}
|
|
|
|
void gs_resume(void) { lis2doc_open(); }
|
|
|
|
void gs_suspend(void) { lis2doc_power_down(); }
|
|
|
|
void gs_low_power_set(void) { lis2doc_low_power(); }
|
|
|
|
void gs_standard_power_set(void) { lis2doc_standard_power(); }
|
|
|
|
void tjd_driver_gs_read_data(void) { lis2doc_read_data_polling_fun(); }
|
|
|
|
static gsensor_info g_pv_gs_ops = {.open = gs_open,
|
|
.close = gs_close,
|
|
.resume = gs_resume,
|
|
.suspend = gs_suspend,
|
|
.low_power_set = gs_low_power_set,
|
|
.standard_power_set = gs_standard_power_set};
|
|
|
|
gsensor_info *tjd_driver_gs_get_ops(void) { return &g_pv_gs_ops; }
|