/*---------------------------------------------------------------------------- * Copyright (c) TJD Technologies Co., Ltd. 2020. All rights reserved. * * Description: msensor_api.c * * Author: liangjianfei * * Create: 2024-4-28 *--------------------------------------------------------------------------*/ #include "msensor_api.h" #include "MemsicAlgo.h" #include "common_pm.h" #include "ms_drv_mmc5603.h" #include "msensor_port.h" #include "sys_config.h" #include #define ENABLE_PRINT_INFO 1 #define ENABLE_DEBUG 1 #if ENABLE_PRINT_INFO #define static_print_info(...) sys_ms_log_i(__VA_ARGS__) //一般信息打印宏控制 #define static_print_warn(...) sys_ms_log_w(__VA_ARGS__) //警告信息打印一般常开 #define static_print_error(...) sys_ms_log_e(__VA_ARGS__) //错误信息打印一般常开 #if ENABLE_DEBUG #define static_print_debug(...) sys_ms_log_d(__VA_ARGS__) #else #define static_print_debug(...) #endif #else #define static_print_info(...) #define static_print_warn(...) #define static_print_error(...) #endif //初始化地磁所需参数 extern float mag_smm[9]; extern float mag_hmm[4]; static errcode_t ms_open(void) { errcode_t ret = msensor_iic_init(); if (ret != ERRCODE_SUCC) { static_print_error("ms_i2c_init fail: %x", ret); } MMC5603_Disable(); return ret; } static errcode_t ms_close(void) { MMC5603_Disable(); return msensor_iic_deinit(); } errcode_t ms_resume(void) { return MMC5603_Enable(); } void ms_suspend(void) { MMC5603_Disable(); } static int32_t ms_processing_handle(float *gsensor_axis_data, orientation_info_t *ori_data) { return MMC5603_Factory_Test_Mode(gsensor_axis_data, (orientation_info *)ori_data); } int ms_get_mag_accuracy(void) { return GetMagAccuracy(); } static int32_t ms_alg_init(void) { return InitialAlgorithm(mag_smm, mag_hmm); } static msensor_info g_pv_ms_opt = {.open = ms_open, .close = ms_close, .resume = ms_resume, .suspend = ms_suspend, .alg_init = ms_alg_init, .timer_callback = ms_processing_handle, .get_accuracy = ms_get_mag_accuracy}; msensor_info *tjd_driver_ms_api_get_ops(void) { return &g_pv_ms_opt; }