add sensor hall driver

Signed-off-by: jifengfei <jifengfei2@huawei.com>
This commit is contained in:
jifengfei
2021-08-30 14:43:05 +08:00
parent 843f7adc27
commit a3c1906b2d
2 changed files with 21 additions and 18 deletions
+11 -11
View File
@@ -24,26 +24,26 @@ int32_t ReadAk8789Data(struct SensorCfgData *data)
int32_t ret;
uint8_t tmp = 1;
OsalTimespec time;
struct SensorReportEvent event;
struct SensorReportEvent event;
CHECK_NULL_PTR_RETURN_VALUE(data, HDF_ERR_INVALID_PARAM);
(void)memset_s(&event, sizeof(event), 0, sizeof(event));
(void)memset_s(&time, sizeof(time), 0, sizeof(time));
if (OsalGetTime(&time) != HDF_SUCCESS) {
if (OsalGetTime(&time) != HDF_SUCCESS) {
HDF_LOGE("%s: Get time failed", __func__);
return HDF_FAILURE;
}
event.timestamp = time.sec * SENSOR_SECOND_CONVERT_NANOSECOND + time.usec *
SENSOR_CONVERT_UNIT; /* unit nanosecond */
event.sensorId = SENSOR_TAG_HALL;
event.timestamp = time.sec * SENSOR_SECOND_CONVERT_NANOSECOND + time.usec *
SENSOR_CONVERT_UNIT; /* unit nanosecond */
event.sensorId = SENSOR_TAG_HALL;
event.version = 0;
event.option = 0;
event.mode = SENSOR_WORK_MODE_ON_CHANGE;
event.dataLen = sizeof(tmp);
event.data = (uint8_t *)&tmp;
ret = ReportSensorEvent(&event);
event.option = 0;
event.mode = SENSOR_WORK_MODE_ON_CHANGE;
event.dataLen = sizeof(tmp);
event.data = (uint8_t *)&tmp;
ret = ReportSensorEvent(&event);
return ret;
}
+10 -7
View File
@@ -24,7 +24,7 @@
static struct HallDetectIfList g_hallDetectIfList[] = {
{HALL_CHIP_NAME_AK8789, DetectHallAk8789Chip},
};
};
static struct HallDrvData *g_hallDrvData = NULL;
@@ -40,7 +40,7 @@ int32_t RegisterHallChipOps(const struct HallOpsCall *ops)
CHECK_NULL_PTR_RETURN_VALUE(ops, HDF_ERR_INVALID_PARAM);
drvData = HallGetDrvData();
CHECK_NULL_PTR_RETURN_VALUE(drvData, HDF_ERR_INVALID_PARAM);
drvData->ops.Init = ops->Init;
drvData->ops.Init = ops->Init;
drvData->ops.ReadData = ops->ReadData;
return HDF_SUCCESS;
}
@@ -58,7 +58,7 @@ static void HallDataWorkEntry(void *arg)
return;
}
}
static int32_t HallNorthPolarityIrqFunc(uint16_t gpio, void *data)
{
(void)gpio;
@@ -123,7 +123,7 @@ static int32_t SetHallEnable(void)
HDF_LOGE("%s: hall sensor is enabled", __func__);
return HDF_SUCCESS;
}
if (drvData->GpioIrq[HALL_NORTH_POLARITY_GPIO] >= 0) {
ret = GpioSetIrq(drvData->GpioIrq[HALL_NORTH_POLARITY_GPIO], OSAL_IRQF_TRIGGER_FALLING,
HallNorthPolarityIrqFunc, drvData);
@@ -135,7 +135,7 @@ static int32_t SetHallEnable(void)
HDF_LOGE("gpio enable north irq failed: %d", ret);
}
}
if (drvData->GpioIrq[HALL_SOUTH_POLARITY_GPIO] >= 0) {
ret = GpioSetIrq(drvData->GpioIrq[HALL_SOUTH_POLARITY_GPIO], OSAL_IRQF_TRIGGER_FALLING,
HallSouthPolarityIrqFunc, drvData);
@@ -168,17 +168,19 @@ static int32_t SetHallDisable(void)
if (ret != 0) {
HDF_LOGE("%s: gpio unset north irq failed", __func__);
}
ret = GpioDisableIrq(drvData->GpioIrq[HALL_NORTH_POLARITY_GPIO]);
if (ret != 0) {
HDF_LOGE("%s: gpio disable north irq failed", __func__);
}
}
if (drvData->GpioIrq[HALL_SOUTH_POLARITY_GPIO] >= 0) {
ret = GpioUnSetIrq(drvData->GpioIrq[HALL_SOUTH_POLARITY_GPIO]);
if (ret != 0) {
HDF_LOGE("%s: gpio unset south irq failed", __func__);
}
ret = GpioDisableIrq(drvData->GpioIrq[HALL_SOUTH_POLARITY_GPIO]);
if (ret != 0) {
HDF_LOGE("%s: gpio disable south irq failed", __func__);
@@ -260,7 +262,7 @@ static int32_t InitHallAfterConfig(void)
if (InitHallData() != HDF_SUCCESS) {
HDF_LOGE("%s: init hall config failed", __func__);
return HDF_FAILURE;
}
}
if (InitHallOps(&deviceInfo) != HDF_SUCCESS) {
HDF_LOGE("%s: init hall ops failed", __func__);
@@ -384,6 +386,7 @@ int32_t InitHallDriver(struct HdfDeviceObject *device)
HDF_LOGE("%s: hall sensor detect device no exist", __func__);
goto DETECT_CHIP_EXIT;
}
drvData->detectFlag = true;
if (InitHallAfterConfig() != HDF_SUCCESS) {