mcu_hi3321_watch/tjd/driver/gsensor/gsensor_api.c
2025-05-26 20:15:20 +08:00

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; }