static uint32_t enable_disable_akm(struct sensors_control_context_t *dev, uint32_t active, uint32_t sensors, uint32_t mask) { uint32_t now_active_akm_sensors; int fd = open_akm(dev); if (fd < 0) return 0; LOGV("(before) akm sensors = %08x, real = %08x", sensors, read_akm_sensors_state(fd,0)); int flags = 0; #if 0 if (mask & SENSORS_AKM_ORIENTATION) { flags = (sensors & SENSORS_AKM_ORIENTATION) ? 1 : 0; flags = 1; LOGE("flags (%d)", flags); if (ioctl(fd, KXSD9_IOC_SET_MODE_AKMD2, &flags) < 0) { LOGE("KXSD9_IOC_SET_MODE_AKMD2 error (%s)", strerror(errno)); } } #endif if (mask & SENSORS_AKM_ACCELERATION) { flags = (sensors & SENSORS_AKM_ACCELERATION) ? 1 : 0; if (ioctl(fd, KXSD9_IOC_SET_MODE, &flags) < 0) { LOGE("KXSD9_IOC_SET_MODE error (%s)", strerror(errno)); } } #if 0 if (mask & SENSORS_AKM_MAGNETIC_FIELD) { flags = (sensors & KXSD9_IOC_SET_MODE) ? 1 : 0; if (ioctl(fd, KXSD9_IOC_SET_MODE, &flags) < 0) { LOGE("ECS_IOCTL_APP_SET_MVFLAG error (%s)", strerror(errno)); } } #endif now_active_akm_sensors = read_akm_sensors_state(fd,flags); LOGV("(after) akm sensors = %08x, real = %08x", sensors, now_active_akm_sensors); if (!sensors) close_akm(dev); return now_active_akm_sensors; }
static uint32_t enable_disable_akm(struct sensors_control_context_t *dev, uint32_t active, uint32_t sensors, uint32_t mask) { uint32_t now_active_akm_sensors; int fd = open_akm(dev); if (fd < 0) return 0; LOGV("(before) akm sensors = %08x, real = %08x", sensors, read_akm_sensors_state(fd)); short flags; if (mask & SENSORS_AKM_ORIENTATION) { flags = (sensors & SENSORS_AKM_ORIENTATION) ? 1 : 0; if (ioctl(fd, ECS_IOCTL_APP_SET_MFLAG, &flags) < 0) { LOGE("ECS_IOCTL_APP_SET_MFLAG error (%s)", strerror(errno)); } } if (mask & SENSORS_AKM_ACCELERATION) { flags = (sensors & SENSORS_AKM_ACCELERATION) ? 1 : 0; if (ioctl(fd, ECS_IOCTL_APP_SET_AFLAG, &flags) < 0) { LOGE("ECS_IOCTL_APP_SET_AFLAG error (%s)", strerror(errno)); } } if (mask & SENSORS_AKM_TEMPERATURE) { flags = (sensors & SENSORS_AKM_TEMPERATURE) ? 1 : 0; if (ioctl(fd, ECS_IOCTL_APP_SET_TFLAG, &flags) < 0) { LOGE("ECS_IOCTL_APP_SET_TFLAG error (%s)", strerror(errno)); } } if (mask & SENSORS_AKM_MAGNETIC_FIELD) { flags = (sensors & SENSORS_AKM_MAGNETIC_FIELD) ? 1 : 0; if (ioctl(fd, ECS_IOCTL_APP_SET_MVFLAG, &flags) < 0) { LOGE("ECS_IOCTL_APP_SET_MVFLAG error (%s)", strerror(errno)); } } now_active_akm_sensors = read_akm_sensors_state(fd); LOGV("(after) akm sensors = %08x, real = %08x", sensors, now_active_akm_sensors); if (!sensors) close_akm(dev); return now_active_akm_sensors; }