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

79 lines
2.4 KiB
C

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