1094332d3Sopenharmony_ci/* 2094332d3Sopenharmony_ci * Copyright (c) 2021-2022 Huawei Device Co., Ltd. 3094332d3Sopenharmony_ci * 4094332d3Sopenharmony_ci * HDF is dual licensed: you can use it either under the terms of 5094332d3Sopenharmony_ci * the GPL, or the BSD license, at your option. 6094332d3Sopenharmony_ci * See the LICENSE file in the root of this repository for complete details. 7094332d3Sopenharmony_ci */ 8094332d3Sopenharmony_ci 9094332d3Sopenharmony_ci#ifndef MAGNETIC_LSM303_H 10094332d3Sopenharmony_ci#define MAGNETIC_LSM303_H 11094332d3Sopenharmony_ci 12094332d3Sopenharmony_ci#include "sensor_config_parser.h" 13094332d3Sopenharmony_ci#include "sensor_magnetic_driver.h" 14094332d3Sopenharmony_ci 15094332d3Sopenharmony_ci#define LSM303_MAGNETIC_GIN 1000 16094332d3Sopenharmony_ci 17094332d3Sopenharmony_ci/* MAGNETIC SET RATE AND MODE ADDR */ 18094332d3Sopenharmony_ci#define LSM303_CRA_REG_ADDR 0X00 19094332d3Sopenharmony_ci#define LSM303_CRB_REG_ADDR 0X01 20094332d3Sopenharmony_ci#define LSM303_MR_REG_ADDR 0X02 21094332d3Sopenharmony_ci 22094332d3Sopenharmony_ci/* MAGNETIC DATA REGISTERS ADDR */ 23094332d3Sopenharmony_ci#define LSM303_MAGNETIC_X_MSB_ADDR 0X03 24094332d3Sopenharmony_ci#define LSM303_MAGNETIC_X_LSB_ADDR 0X04 25094332d3Sopenharmony_ci#define LSM303_MAGNETIC_Y_MSB_ADDR 0X05 26094332d3Sopenharmony_ci#define LSM303_MAGNETIC_Y_LSB_ADDR 0X06 27094332d3Sopenharmony_ci#define LSM303_MAGNETIC_Z_MSB_ADDR 0X07 28094332d3Sopenharmony_ci#define LSM303_MAGNETIC_Z_LSB_ADDR 0X08 29094332d3Sopenharmony_ci#define LSM303_STATUS_ADDR 0X09 30094332d3Sopenharmony_ci 31094332d3Sopenharmony_ci/* MAGNETIC DATA RATE CONFIG HZ */ 32094332d3Sopenharmony_ci#define LSM303_DATA_RATE_0 0X00 33094332d3Sopenharmony_ci#define LSM303_DATA_RATE_1 0X04 34094332d3Sopenharmony_ci#define LSM303_DATA_RATE_2 0X08 35094332d3Sopenharmony_ci#define LSM303_DATA_RATE_3 0X0C 36094332d3Sopenharmony_ci#define LSM303_DATA_RATE_4 0X10 37094332d3Sopenharmony_ci#define LSM303_DATA_RATE_5 0X14 38094332d3Sopenharmony_ci#define LSM303_DATA_RATE_6 0X18 39094332d3Sopenharmony_ci#define LSM303_DATA_RATE_7 0X1C 40094332d3Sopenharmony_ci 41094332d3Sopenharmony_ci/* MAGNETIC GAIN CONFIG GAUSS */ 42094332d3Sopenharmony_ci#define LSM303_GAIN_RATE_0 0X20 43094332d3Sopenharmony_ci#define LSM303_GAIN_RATE_1 0X40 44094332d3Sopenharmony_ci#define LSM303_GAIN_RATE_2 0X60 45094332d3Sopenharmony_ci#define LSM303_GAIN_RATE_3 0X80 46094332d3Sopenharmony_ci#define LSM303_GAIN_RATE_4 0XA0 47094332d3Sopenharmony_ci#define LSM303_GAIN_RATE_5 0XC0 48094332d3Sopenharmony_ci#define LSM303_GAIN_RATE_6 0XE0 49094332d3Sopenharmony_ci 50094332d3Sopenharmony_ci/* MAGNETIC GAIN SENSITIVITY RANGE */ 51094332d3Sopenharmony_ci#define LSM303DLHC_SENSITIVITY_XY13GA 1100 52094332d3Sopenharmony_ci#define LSM303DLHC_SENSITIVITY_XY19GA 855 53094332d3Sopenharmony_ci#define LSM303DLHC_SENSITIVITY_XY25GA 670 54094332d3Sopenharmony_ci#define LSM303DLHC_SENSITIVITY_XY40GA 450 55094332d3Sopenharmony_ci#define LSM303DLHC_SENSITIVITY_XY47GA 400 56094332d3Sopenharmony_ci#define LSM303DLHC_SENSITIVITY_XY56GA 330 57094332d3Sopenharmony_ci#define LSM303DLHC_SENSITIVITY_XY81GA 230 58094332d3Sopenharmony_ci#define LSM303DLHC_SENSITIVITY_Z13GA 980 59094332d3Sopenharmony_ci#define LSM303DLHC_SENSITIVITY_Z19GA 760 60094332d3Sopenharmony_ci#define LSM303DLHC_SENSITIVITY_Z25GA 600 61094332d3Sopenharmony_ci#define LSM303DLHC_SENSITIVITY_Z40GA 400 62094332d3Sopenharmony_ci#define LSM303DLHC_SENSITIVITY_Z47GA 355 63094332d3Sopenharmony_ci#define LSM303DLHC_SENSITIVITY_Z56GA 295 64094332d3Sopenharmony_ci#define LSM303DLHC_SENSITIVITY_Z81GA 205 65094332d3Sopenharmony_ci 66094332d3Sopenharmony_ci/* MAGNETIC MODE CONFIG */ 67094332d3Sopenharmony_ci#define LSM303_OPERATING_MODE_1 0X00 68094332d3Sopenharmony_ci#define LSM303_OPERATING_MODE_2 0X01 69094332d3Sopenharmony_ci#define LSM303_OPERATING_MODE_3 0X02 70094332d3Sopenharmony_ci#define LSM303_OPERATING_MODE_4 0X03 71094332d3Sopenharmony_ci 72094332d3Sopenharmony_ci/* MAGNETIC DATA READY */ 73094332d3Sopenharmony_ci#define LSM303_DATA_READY_MASK 0x01 74094332d3Sopenharmony_ci 75094332d3Sopenharmony_ciint32_t DetectMagneticLsm303Chip(struct SensorCfgData *data); 76094332d3Sopenharmony_ci 77094332d3Sopenharmony_cistruct Lsm303DrvData { 78094332d3Sopenharmony_ci struct IDeviceIoService ioService; 79094332d3Sopenharmony_ci struct HdfDeviceObject *device; 80094332d3Sopenharmony_ci struct SensorCfgData *sensorCfg; 81094332d3Sopenharmony_ci}; 82094332d3Sopenharmony_ci 83094332d3Sopenharmony_ci#endif /* MAGNETIC_LSM303_H */