/*---------------------------------------------------------------------------- * 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 #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; }