79 lines
2.4 KiB
C
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; }
|