diff --git a/framework/model/sensor/driver/common/src/sensor_config_parser.c b/framework/model/sensor/driver/common/src/sensor_config_parser.c index 6c3c2f066672ff6cf80e1533af496d0efe315da4..013c39fbe54bc77dfba364498ec549ca9ed8ed11 100755 --- a/framework/model/sensor/driver/common/src/sensor_config_parser.c +++ b/framework/model/sensor/driver/common/src/sensor_config_parser.c @@ -73,7 +73,7 @@ static int32_t ParseSensorRegItem(struct DeviceResourceIface *parser, const stru num = parser->GetElemNum(regNode, groupName); if (num <= 0 || num > SENSOR_CONFIG_MAX_ITEM) { HDF_LOGE("%s: parser %s element num failed", __func__, groupName); - return HDF_SUCCESS; + return HDF_FAILURE; } buf = (uint16_t *)OsalMemCalloc(sizeof(uint16_t) * num); @@ -83,7 +83,7 @@ static int32_t ParseSensorRegItem(struct DeviceResourceIface *parser, const stru if (ret != HDF_SUCCESS) { HDF_LOGE("%s: parser %s reg array failed", __func__, groupName); OsalMemFree(buf); - return HDF_SUCCESS; + return HDF_FAILURE; } for (index = 0; index < itemNum; ++index) { @@ -121,35 +121,31 @@ int32_t ParseSensorRegGroup(struct DeviceResourceIface *parser, const struct Dev num = parser->GetElemNum(regCfgNode, groupName); group = *groupNode; - if (num > 0) { - if (group != NULL) { - if (group->regCfgItem != NULL) { - OsalMemFree(group->regCfgItem); - } - OsalMemFree(group); - } + if (num <= 0) { + HDF_LOGD("%s: the num is %d", __func__, num); + return HDF_SUCCESS; + } - group = (struct SensorRegCfgGroupNode*)OsalMemCalloc(sizeof(*group)); - if (group == NULL) { - HDF_LOGE("%s: malloc sensor reg config group failed", __func__); - return HDF_ERR_MALLOC_FAIL; - } + group = (struct SensorRegCfgGroupNode*)OsalMemCalloc(sizeof(*group)); + if (group == NULL) { + HDF_LOGE("%s: malloc sensor reg config group failed", __func__); + return HDF_ERR_MALLOC_FAIL; + } - *groupNode = group; - group->itemNum = (uint32_t)(num / SENSOR_REG_CFG_INDEX_MAX); - group->itemNum = ((SENSOR_REG_CFG_INDEX_MAX * group->itemNum) < (uint32_t)num) ? - (group->itemNum + 1) : group->itemNum; + *groupNode = group; + group->itemNum = (uint32_t)(num / SENSOR_REG_CFG_INDEX_MAX); + group->itemNum = ((SENSOR_REG_CFG_INDEX_MAX * group->itemNum) < (uint32_t)num) ? + (group->itemNum + 1) : group->itemNum; - group->regCfgItem = (struct SensorRegCfg*)OsalMemCalloc(group->itemNum * sizeof(*(group->regCfgItem))); - if (group->regCfgItem == NULL) { - HDF_LOGE("%s: malloc sensor reg config item failed", __func__); - return HDF_ERR_MALLOC_FAIL; - } + group->regCfgItem = (struct SensorRegCfg*)OsalMemCalloc(group->itemNum * sizeof(*(group->regCfgItem))); + if (group->regCfgItem == NULL) { + HDF_LOGE("%s: malloc sensor reg config item failed", __func__); + return HDF_ERR_MALLOC_FAIL; + } - if (ParseSensorRegItem(parser, regCfgNode, groupName, group) != HDF_SUCCESS) { - HDF_LOGE("%s: malloc sensor reg config item data failed", __func__); - return HDF_FAILURE; - } + if (ParseSensorRegItem(parser, regCfgNode, groupName, group) != HDF_SUCCESS) { + HDF_LOGE("%s: malloc sensor reg config item data failed", __func__); + return HDF_FAILURE; } return HDF_SUCCESS; diff --git a/framework/model/sensor/driver/include/sensor_device_type.h b/framework/model/sensor/driver/include/sensor_device_type.h index 8a5fb04be74903fef3698d865ec190ee03f2f649..db77fa0a3ed662957811ea4f14f077209b169d21 100644 --- a/framework/model/sensor/driver/include/sensor_device_type.h +++ b/framework/model/sensor/driver/include/sensor_device_type.h @@ -90,6 +90,8 @@ struct SensorBasicInfo { int32_t power; /**< Sensor power */ int64_t minDelay; /**< Minimum sample period allowed in nanoseconds */ int64_t maxDelay; /**< Maxmum sample period allowed in nanoseconds */ + uint32_t fifoMaxEventCount; + uint32_t reserved; }; struct SensorReportEvent {