diff options
Diffstat (limited to 'libsensors_iio/CompassSensor.IIO.9150.cpp')
-rw-r--r-- | libsensors_iio/CompassSensor.IIO.9150.cpp | 70 |
1 files changed, 35 insertions, 35 deletions
diff --git a/libsensors_iio/CompassSensor.IIO.9150.cpp b/libsensors_iio/CompassSensor.IIO.9150.cpp index d9f2e0c..b11d5cb 100644 --- a/libsensors_iio/CompassSensor.IIO.9150.cpp +++ b/libsensors_iio/CompassSensor.IIO.9150.cpp @@ -31,12 +31,11 @@ #include "MPLSupport.h" #include "sensor_params.h" #include "ml_sysfs_helper.h" -#include "local_log_def.h" #define COMPASS_MAX_SYSFS_ATTRB sizeof(compassSysFs) / sizeof(char*) -#if defined COMPASS_YAS530 -# warning "Invensense compass cal with YAS530 on primary bus" +#if defined COMPASS_YAS53x +# warning "Invensense compass cal with YAS53x IIO on secondary bus" # define USE_MPL_COMPASS_HAL (1) # define COMPASS_NAME "INV_YAS530" #elif defined COMPASS_AK8975 @@ -44,7 +43,7 @@ # define USE_MPL_COMPASS_HAL (1) # define COMPASS_NAME "INV_AK8975" #elif defined INVENSENSE_COMPASS_CAL -# warning "Invensense compass cal with compass on secondary bus" +# warning "Invensense compass cal with compass IIO on secondary bus" # define USE_MPL_COMPASS_HAL (1) # define COMPASS_NAME "INV_COMPASS" #else @@ -57,11 +56,11 @@ /*****************************************************************************/ -CompassSensor::CompassSensor() +CompassSensor::CompassSensor() : SensorBase(NULL, NULL), + compass_fd(-1), mCompassTimestamp(0), - mCompassInputReader(8), - compass_fd(-1) + mCompassInputReader(8) { VFUNC_LOG; @@ -78,13 +77,13 @@ CompassSensor::CompassSensor() memset(mCachedCompassData, 0, sizeof(mCachedCompassData)); - LOGV_IF(SYSFS_VERBOSE, "HAL:sysfs:cat %s (%lld)", + LOGV_IF(SYSFS_VERBOSE, "HAL:sysfs:cat %s (%lld)", compassSysFs.compass_orient, getTimestamp()); FILE *fptr; fptr = fopen(compassSysFs.compass_orient, "r"); if (fptr != NULL) { int om[9]; - fscanf(fptr, "%d,%d,%d,%d,%d,%d,%d,%d,%d", + fscanf(fptr, "%d,%d,%d,%d,%d,%d,%d,%d,%d", &om[0], &om[1], &om[2], &om[3], &om[4], &om[5], &om[6], &om[7], &om[8]); fclose(fptr); @@ -107,7 +106,9 @@ CompassSensor::CompassSensor() LOGE("HAL:Couldn't read compass mounting matrix"); } - enable(ID_M, 0); + if (!isIntegrated()) { + enable(ID_M, 0); + } } CompassSensor::~CompassSensor() @@ -130,11 +131,11 @@ int CompassSensor::getFd() const * @param[in] handle * which sensor to enable/disable. * @param[in] en - * en=1, enable; + * en=1, enable; * en=0, disable * @return if the operation is successful. */ -int CompassSensor::enable(int32_t handle, int en) +int CompassSensor::enable(int32_t handle, int en) { VFUNC_LOG; @@ -142,7 +143,7 @@ int CompassSensor::enable(int32_t handle, int en) int tempFd; int res; - LOGV_IF(SYSFS_VERBOSE, "HAL:sysfs:echo %d > %s (%lld)", + LOGV_IF(SYSFS_VERBOSE, "HAL:sysfs:echo %d > %s (%lld)", en, compassSysFs.compass_enable, getTimestamp()); tempFd = open(compassSysFs.compass_enable, O_RDWR); res = errno; @@ -156,7 +157,7 @@ int CompassSensor::enable(int32_t handle, int en) close(tempFd); if (en) { - LOGV_IF(SYSFS_VERBOSE, "HAL:sysfs:echo %d > %s (%lld)", + LOGV_IF(SYSFS_VERBOSE, "HAL:sysfs:echo %d > %s (%lld)", en, compassSysFs.compass_x_fifo_enable, getTimestamp()); tempFd = open(compassSysFs.compass_x_fifo_enable, O_RDWR); res = errno; @@ -168,7 +169,7 @@ int CompassSensor::enable(int32_t handle, int en) compassSysFs.compass_x_fifo_enable, strerror(res), res); } - LOGV_IF(SYSFS_VERBOSE, "HAL:sysfs:echo %d > %s (%lld)", + LOGV_IF(SYSFS_VERBOSE, "HAL:sysfs:echo %d > %s (%lld)", en, compassSysFs.compass_y_fifo_enable, getTimestamp()); tempFd = open(compassSysFs.compass_y_fifo_enable, O_RDWR); res = errno; @@ -180,7 +181,7 @@ int CompassSensor::enable(int32_t handle, int en) compassSysFs.compass_y_fifo_enable, strerror(res), res); } - LOGV_IF(SYSFS_VERBOSE, "HAL:sysfs:echo %d > %s (%lld)", + LOGV_IF(SYSFS_VERBOSE, "HAL:sysfs:echo %d > %s (%lld)", en, compassSysFs.compass_z_fifo_enable, getTimestamp()); tempFd = open(compassSysFs.compass_z_fifo_enable, O_RDWR); res = errno; @@ -196,13 +197,13 @@ int CompassSensor::enable(int32_t handle, int en) return res; } -int CompassSensor::setDelay(int32_t handle, int64_t ns) +int CompassSensor::setDelay(int32_t handle, int64_t ns) { VFUNC_LOG; int tempFd; int res; - LOGV_IF(SYSFS_VERBOSE, "HAL:sysfs:echo %.0f > %s (%lld)", + LOGV_IF(SYSFS_VERBOSE, "HAL:sysfs:echo %.0f > %s (%lld)", 1000000000.f / ns, compassSysFs.compass_rate, getTimestamp()); mDelay = ns; if (ns == 0) @@ -246,8 +247,8 @@ void CompassSensor::processCompassEvent(const input_event *event) mCachedCompassData[2] = event->value; break; } - - mCompassTimestamp = + + mCompassTimestamp = (int64_t)event->time.tv_sec * 1000000000L + event->time.tv_usec * 1000L; } @@ -262,7 +263,7 @@ long CompassSensor::getSensitivity() VFUNC_LOG; long sensitivity; - LOGV_IF(SYSFS_VERBOSE, "HAL:sysfs:cat %s (%lld)", + LOGV_IF(SYSFS_VERBOSE, "HAL:sysfs:cat %s (%lld)", compassSysFs.compass_scale, getTimestamp()); inv_read_data(compassSysFs.compass_scale, &sensitivity); return sensitivity; @@ -310,7 +311,7 @@ int CompassSensor::readSample(long *data, int64_t *timestamp) /** * @brief This function will return the current delay for this sensor. - * @return delay in nanoseconds. + * @return delay in nanoseconds. */ int64_t CompassSensor::getDelay(int32_t handle) { @@ -333,14 +334,20 @@ void CompassSensor::fillList(struct sensor_t *list) return; } if(!strcmp(compass, "compass") - || !strcmp(compass, "INV_AK8975") - || !strcmp(compass, "INV_YAS530")) { + || !strcmp(compass, "INV_AK8975") ) { list->maxRange = COMPASS_AKM8975_RANGE; list->resolution = COMPASS_AKM8975_RESOLUTION; list->power = COMPASS_AKM8975_POWER; list->minDelay = COMPASS_AKM8975_MINDELAY; return; } + if(!strcmp(compass, "INV_YAS530")) { + list->maxRange = COMPASS_YAS53x_RANGE; + list->resolution = COMPASS_YAS53x_RESOLUTION; + list->power = COMPASS_YAS53x_POWER; + list->minDelay = COMPASS_YAS53x_MINDELAY; + return; + } if(!strcmp(compass, "INV_AMI306")) { list->maxRange = COMPASS_AMI306_RANGE; list->resolution = COMPASS_AMI306_RESOLUTION; @@ -383,23 +390,16 @@ int CompassSensor::inv_init_sysfs_attributes(void) // get proper (in absolute/relative) IIO path & build MPU's sysfs paths // inv_get_sysfs_abs_path(sysfs_path); - if(INV_SUCCESS != inv_get_sysfs_path(sysfs_path)) { - ALOGE("CompassSensor failed get sysfs path"); - return -1; - } - + inv_get_sysfs_path(sysfs_path); inv_get_iio_trigger_path(iio_trigger_path); -#if defined COMPASS_YAS530 || defined COMPASS_AK8975 +#if defined COMPASS_AK8975 inv_get_input_number(COMPASS_NAME, &num); tbuf[0] = num + 0x30; tbuf[1] = 0; sprintf(sysfs_path, "%s%s", "sys/class/input/input", tbuf); -#if defined COMPASS_YAS530 - strcat(sysfs_path, "/yas530"); -#else strcat(sysfs_path, "/ak8975"); -#endif + sprintf(compassSysFs.compass_enable, "%s%s", sysfs_path, "/enable"); sprintf(compassSysFs.compass_rate, "%s%s", sysfs_path, "/rate"); sprintf(compassSysFs.compass_scale, "%s%s", sysfs_path, "/scale"); @@ -415,7 +415,7 @@ int CompassSensor::inv_init_sysfs_attributes(void) #endif #if 0 - // test print sysfs paths + // test print sysfs paths dptr = (char**)&compassSysFs; for (i = 0; i < COMPASS_MAX_SYSFS_ATTRB; i++) { LOGE("HAL:sysfs path: %s", *dptr++); |