Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ec2a9136 authored by Ricardo Cerqueira's avatar Ricardo Cerqueira Committed by Giulio Cervera
Browse files

sensors: Add dummy light sensor

Some devices have a sysfs toggle for the lightsensor instead of
passing the LUX values for userspace processing; for those,
use BOARD_SYSFS_LIGHT_SENSOR:=<sysfs path>

This is necessary for the rest of userspace to recognize its existence
and toggle it for auto-brightness. It doesn't generate actual light
values, though; all backlight adjustments are made in-kernel.

Change-Id: I978474a7d64b3ad16058a6d9d5af9c4d7bc1d45f
parent 854718e0
Loading
Loading
Loading
Loading
+2 −6
Original line number Diff line number Diff line
@@ -33,11 +33,8 @@ ifneq ($(TARGET_PROXIMITY_SENSOR_LIMIT),)
    LOCAL_CFLAGS += -DPROXIMITY_LIES=$(TARGET_PROXIMITY_SENSOR_LIMIT)
endif

ifneq ($(filter p990 p999 p970, $(TARGET_BOOTLOADER_BOARD_NAME)),)
    LOCAL_CFLAGS += -DUSE_LGE_ALS_DUMMY
    ifeq ($(TARGET_BOOTLOADER_BOARD_NAME),p970)
        LOCAL_CFLAGS += -DUSE_LGE_ALS_OMAP3
    endif
ifneq ($(BOARD_SYSFS_LIGHT_SENSOR),)
    LOCAL_CFLAGS += -DSYSFS_LIGHT_SENSOR=\"$(BOARD_SYSFS_LIGHT_SENSOR)\"
endif

LOCAL_SHARED_LIBRARIES := \
@@ -49,7 +46,6 @@ LOCAL_SHARED_LIBRARIES := \
	libgui



LOCAL_MODULE:= libsensorservice

include $(BUILD_SHARED_LIBRARY)
+13 −31
Original line number Diff line number Diff line
@@ -32,7 +32,7 @@
#include "SensorService.h"

#include "sensors_deprecated.h"
#ifdef USE_LGE_ALS_DUMMY
#ifdef SYSFS_LIGHT_SENSOR
#include <fcntl.h>
#endif

@@ -103,10 +103,10 @@ ANDROID_SINGLETON_STATIC_INSTANCE(BatteryService)

ANDROID_SINGLETON_STATIC_INSTANCE(SensorDevice)

#ifdef USE_LGE_ALS_DUMMY
static ssize_t addDummyLGESensor(sensor_t const **list, ssize_t count) {
#ifdef SYSFS_LIGHT_SENSOR
static ssize_t addDummyLightSensor(sensor_t const **list, ssize_t count) {
    struct sensor_t dummy_light =     {
                  name            : "Dummy LGE-Star light sensor",
                  name            : "CyanogenMod dummy light sensor",
                  vendor          : "CyanogenMod",
                  version         : 1,
                  handle          : SENSOR_TYPE_LIGHT,
@@ -167,8 +167,8 @@ SensorDevice::SensorDevice()
            sensor_t const* list;
            ssize_t count = mSensorModule->get_sensors_list(mSensorModule, &list);

#ifdef USE_LGE_ALS_DUMMY
            count = addDummyLGESensor(&list, count);
#ifdef SYSFS_LIGHT_SENSOR
            count = addDummyLightSensor(&list, count);
#endif

            if (mOldSensorsCompatMode) {
@@ -223,10 +223,11 @@ ssize_t SensorDevice::getSensorList(sensor_t const** list) {
    if (!mSensorModule) return NO_INIT;
    ssize_t count = mSensorModule->get_sensors_list(mSensorModule, list);

#ifdef USE_LGE_ALS_DUMMY
    return addDummyLGESensor(list, count);
#endif
#ifdef SYSFS_LIGHT_SENSOR
    return addDummyLightSensor(list, count);
#else
    return count;
#endif
}

status_t SensorDevice::initCheck() const {
@@ -315,41 +316,22 @@ status_t SensorDevice::activate(void* ident, int handle, int enabled)
    status_t err(NO_ERROR);
    bool actuateHardware = false;

#ifdef USE_LGE_ALS_DUMMY

#ifdef SYSFS_LIGHT_SENSOR
    if (handle == SENSOR_TYPE_LIGHT) {
        int nwr, ret, fd;
        char value[2];

#ifdef USE_LGE_ALS_OMAP3
        fd = open("/sys/class/leds/lcd-backlight/als", O_RDWR);
        if(fd < 0)
            return -ENODEV;

        nwr = sprintf(value, "%s\n", enabled ? "1" : "0");
        write(fd, value, nwr);
        close(fd);
#else
        fd = open("/sys/devices/platform/star_aat2870.0/lsensor_onoff", O_RDWR);
        fd = open(SYSFS_LIGHT_SENSOR, O_RDWR);
        if(fd < 0)
            return -ENODEV;

        nwr = sprintf(value, "%s\n", enabled ? "1" : "0");
        write(fd, value, nwr);
        close(fd);
        fd = open("/sys/devices/platform/star_aat2870.0/alc", O_RDWR);
        if(fd < 0)
            return -ENODEV;

        nwr = sprintf(value, "%s\n", enabled ? "2" : "0");
        write(fd, value, nwr);
        close(fd);
#endif

        return 0;

    }
#endif

    Info& info( mActivationCount.editValueFor(handle) );