sensor
将底层值转换的地方
khadas/hardware/amlogic/sensor/st/LightSensor.cpp
LightSensor::readEvents

上传adc原始数据

diff --git a/common/drivers/input/sensors/lsensor/cm3218.c b/common/drivers/input/sensors/lsensor/cm3218.c
index 03ab8f4291..c5f848063e 100755
--- a/common/drivers/input/sensors/lsensor/cm3218.c
+++ b/common/drivers/input/sensors/lsensor/cm3218.c
@@ -299,13 +364,13 @@ static int light_report_value(struct input_dev *input, int data)index = 7;}-       input_report_abs(input, ABS_MISC, index);
+       input_report_abs(input, ABS_MISC, data);input_sync(input);return index;}diff --git a/hardware/amlogic/sensor/st/LightSensor.cpp b/hardware/amlogic/sensor/st/LightSensor.cpp
index 4f4fde4f09..9c11e06643 100644
--- a/hardware/amlogic/sensor/st/LightSensor.cpp
+++ b/hardware/amlogic/sensor/st/LightSensor.cpp
@@ -147,7 +147,7 @@ int LightSensor::readEvents(sensors_event_t* data, int count)if (event->code == EVENT_TYPE_LIGHT) {if (event->value != -1) {// FIXME: not sure why we're getting -1 sometimes
-                    mPendingEvent.light = indexToValue(event->value);
+                    mPendingEvent.light = event->value;}}} else if (type == EV_SYN) {(END)

总的patch

diff --git a/common/drivers/input/sensors/lsensor/cm3218.c b/common/drivers/input/sensors/lsensor/cm3218.c
index 03ab8f4291..c5f848063e 100755
--- a/common/drivers/input/sensors/lsensor/cm3218.c
+++ b/common/drivers/input/sensors/lsensor/cm3218.c
@@ -71,7 +71,9 @@static int als_code = 20;static int change_sensitivity = 50;static int if_sensor_init;
-
+//add by zhongyukang
+extern struct class *sensor_class;
+static struct i2c_client *gclient;static int cm3218_read_ara(struct i2c_client *client){int status;
@@ -239,6 +241,62 @@ static int sensor_active(struct i2c_client *client, int enable, int rate)return result;}
+static bool flags_debug = false;
+static ssize_t light_reg_show(struct class *class,
+      struct class_attribute *attr, char *buf)
+{+  int reg_addr ;//= sprintf(buf , "%x\n", cm3218_read(client, sensor->client->addr));
+    if (1 != sscanf(buf, "%d", &reg_addr)) {+                       printk("<zyk> sscanf fail %s\n",__func__);
+                       return -1;
+       }
+  return sprintf(buf, "%x\n",cm3218_read(gclient, reg_addr));
+}
+static ssize_t light_reg_store(struct class *class,
+      struct class_attribute *attr, const char *buf, size_t count)
+{+   int reg_addr = 0,reg_value;
+        char *kbuf, *p, *argv[2];
+        int argn;
+        // int i;
+        unsigned int val = 0, val2 = 0;
+        ssize_t status;
+        long value;
+      int temp_reg_addr_value ;
+        kbuf = kstrdup(buf, GFP_KERNEL);
+        p = kbuf;
+        for (argn = 0; argn < 2; argn++) {+                 argv[argn] = strsep(&p, " ");
+             printk(KERN_EMERG"func %s  %c \n",__FUNCTION__,*argv[argn]);
+                  if (argv[argn] == NULL)
+                        break;
+        }
+        status = kstrtol(argv[0], 0, &value);
+        if (status == 0)
+        val = (unsigned int)value;
+        reg_addr = argn ? val : 0;
+        status = kstrtol(argv[1], 0, &value);
+        if (status == 0)
+        val2 = (unsigned int)value;
+        reg_value = (argn > 1) ? val2 : 0;
+        if (reg_addr < 0)
+        return  -EINVAL;
+
+      printk(KERN_EMERG"zyk---- %s %x %x \n",__FUNCTION__,reg_addr,reg_value);
+      if(reg_addr == 0xf){+          temp_reg_addr_value = cm3218_read(gclient, reg_value);
+          printk("reg:0x%x value:0x%x\n",reg_value,temp_reg_addr_value);
+          // status = sprintf(buf, "%x\n",reg_value);
+      }else if(reg_addr == 0xd){+          flags_debug = !flags_debug;
+      }
+      else {+          cm3218_write(gclient, reg_addr, reg_value);
+      }
+      return count;
+
+}
+static CLASS_ATTR(light_reg, 0664, light_reg_show, light_reg_store);static int sensor_init(struct i2c_client *client){@@ -273,14 +331,21 @@ static int sensor_init(struct i2c_client *client)if_sensor_init = 1;msleep(250);
-
+  gclient = client;
+  status = class_create_file(sensor_class, &class_attr_light_reg);
+  if (status) {+      printk(KERN_ERR "%s:Fail to creat accel class file\n", __func__);
+      return status;
+  }return status;}static int light_report_value(struct input_dev *input, int data){unsigned char index = 0;
-
+  if(!!flags_debug){+      printk("%s data:%d\n",__func__,data);
+  }if (data <= 700) {index = 0;} else if (data <= 1400) {@@ -299,13 +364,13 @@ static int light_report_value(struct input_dev *input, int data)index = 7;}-    input_report_abs(input, ABS_MISC, index);
+  input_report_abs(input, ABS_MISC, data);input_sync(input);return index;}-static int cm3218_read_lux(struct i2c_client *client, int *lux)
+int cm3218_read_lux(struct i2c_client *client, int *lux){int lux_data;diff --git a/common/drivers/input/sensors/sensor-dev.c b/common/drivers/input/sensors/sensor-dev.c
index ef942f3901..2fccdfa698 100755
--- a/common/drivers/input/sensors/sensor-dev.c
+++ b/common/drivers/input/sensors/sensor-dev.c
@@ -50,7 +50,7 @@ struct sensor_calibration_data {static struct sensor_private_data *g_sensor[SENSOR_NUM_TYPES];static struct sensor_operate *sensor_ops[SENSOR_NUM_ID];static int sensor_probe_times[SENSOR_NUM_ID];
-static struct class *sensor_class;
+struct class *sensor_class;static struct sensor_calibration_data sensor_cali_data;static int sensor_calibration_data_read(struct sensor_calibration_data *calibration_data)
@@ -279,6 +279,44 @@ static ssize_t gyro_calibration_store(struct class *class,static CLASS_ATTR(gyro_calibration, 0664, gyro_calibration_show, gyro_calibration_store);+#define __FITURE_LIGHT_LUX_DEBUG__
+#ifdef __FITURE_LIGHT_LUX_DEBUG__
+extern int cm3218_read_lux(struct i2c_client *client, int *lux);
+static ssize_t light_lux_show(struct class *class,
+      struct class_attribute *attr, char *buf){+  int result = 0;
+  int value = 0;
+  struct sensor_private_data *sensor = g_sensor[SENSOR_TYPE_LIGHT];
+  if (sensor == NULL)
+          return -1;
+  cm3218_read_lux(sensor->client, &result);
+  if (result <= 700) {+      value = 10;
+  } else if (result <= 1400) {+      value = 160;
+  } else if (result <= 2800) {+      value = 225;
+  } else if (result <= 5600) {+      value = 320;
+  } else if (result <= 11200) {+      value = 640;
+  } else if (result <= 22400) {+      value = 1280;
+  } else if (result <= 44800) {+      value = 2600;
+  } else {+      value = 10240;
+  }
+  return sprintf(buf, "light lux value: %d\n", value);
+}
+
+static ssize_t light_lux_store(struct class *class,
+      struct class_attribute *attr, const char *buf, size_t count){+  return count;
+}
+
+static CLASS_ATTR(light_lux, 0664, light_lux_show, light_lux_store);
+#endifstatic int sensor_class_init(void){int ret ;
@@ -295,6 +333,13 @@ static int sensor_class_init(void)printk(KERN_ERR "%s:Fail to creat gyro class file\n", __func__);return ret;}
+  #ifdef __FITURE_LIGHT_LUX_DEBUG__
+  ret = class_create_file(sensor_class, &class_attr_light_lux);
+  if (ret) {+      printk(KERN_ERR "%s:Fail to creat light sensor class file\n", __func__);
+      return ret;
+  }
+  #endifreturn 0;}diff --git a/hardware/amlogic/sensor/st/LightSensor.cpp b/hardware/amlogic/sensor/st/LightSensor.cpp
index 4f4fde4f09..9c11e06643 100644
--- a/hardware/amlogic/sensor/st/LightSensor.cpp
+++ b/hardware/amlogic/sensor/st/LightSensor.cpp
@@ -147,7 +147,7 @@ int LightSensor::readEvents(sensors_event_t* data, int count)if (event->code == EVENT_TYPE_LIGHT) {if (event->value != -1) {// FIXME: not sure why we're getting -1 sometimes
-                    mPendingEvent.light = indexToValue(event->value);
+                    mPendingEvent.light = event->value;}}} else if (type == EV_SYN) {

关掉sensor服务:

确认:

console:/ #  dumpsys sensorservice
No Sensors on the device
devInitCheck : -19
console:/ # 

patch


---common/arch/arm/boot/dts/amlogic/manzala.dts  |  2 +-common/arch/arm/configs/manzala_a32_defconfig |  2 +-device/amlogic/common/core_amlogic.mk         |  7 +++---.../products/mbox/manifest/manifest_aosp.xml  |  9 --------device/amlogic/manzala/BoardConfig.mk         | 22 +++++++++----------5 files changed, 16 insertions(+), 26 deletions(-)diff --git a/common/arch/arm/boot/dts/amlogic/manzala.dts b/common/arch/arm/boot/dts/amlogic/manzala.dts
index d41e3bb871..0542cfa09a 100755
--- a/common/arch/arm/boot/dts/amlogic/manzala.dts
+++ b/common/arch/arm/boot/dts/amlogic/manzala.dts
@@ -1001,7 +1001,7 @@irq_enable = <0>;poll_delay_ms = <30>;layout = <1>;
-               status = "okay";
+               status = "disabled";};};diff --git a/common/arch/arm/configs/manzala_a32_defconfig b/common/arch/arm/configs/manzala_a32_defconfig
index b2ed708b27..13af79a45d 100755
--- a/common/arch/arm/configs/manzala_a32_defconfig
+++ b/common/arch/arm/configs/manzala_a32_defconfig
@@ -253,7 +253,7 @@ CONFIG_AMLOGIC_CRYPTO=yCONFIG_AMLOGIC_CRYPTO_DMA=yCONFIG_AMLOGIC_INPUT=yCONFIG_SENSOR_DEVICE=y
-CONFIG_LIGHT_DEVICE=y
+# CONFIG_LIGHT_DEVICE is not setCONFIG_AMLOGIC_AVIN_DETECT=yCONFIG_AMLOGIC_INPUT_KEYBOARD=yCONFIG_AMLOGIC_ADC_KEYPADS=y
diff --git a/device/amlogic/common/core_amlogic.mk b/device/amlogic/common/core_amlogic.mk
index 7a5cafd1f3..901950bdd0 100755
--- a/device/amlogic/common/core_amlogic.mk
+++ b/device/amlogic/common/core_amlogic.mk
@@ -209,7 +209,6 @@ PRODUCT_PACKAGES += \hwcomposer.amlogic \memtrack.amlogic \screen_source.amlogic \
-    sensors.amlogic \thermal.amlogic#glscaler and 3d format api
@@ -429,9 +428,9 @@ PRODUCT_PACKAGES += \android.hardware.light@2.0-impl \android.hardware.light@2.0-service# Sensor HAL
-PRODUCT_PACKAGES += \
-    android.hardware.sensors@1.0-service \
-    android.hardware.sensors@1.0-impl \
+#PRODUCT_PACKAGES += \
+#    android.hardware.sensors@1.0-service \
+#    android.hardware.sensors@1.0-impl \#thermal halPRODUCT_PACKAGES += \android.hardware.thermal@1.0-impl \
diff --git a/device/amlogic/common/products/mbox/manifest/manifest_aosp.xml b/device/amlogic/common/products/mbox/manifest/manifest_aosp.xml
index 7eabbb0ad9..ed47eb0eb0 100755
--- a/device/amlogic/common/products/mbox/manifest/manifest_aosp.xml
+++ b/device/amlogic/common/products/mbox/manifest/manifest_aosp.xml
@@ -300,15 +300,6 @@<instance>default</instance></interface></hal>
-    <hal format="hidl">
-        <name>android.hardware.sensors</name>
-        <transport>hwbinder</transport>
-        <version>1.0</version>
-        <interface>
-            <name>ISensors</name>
-            <instance>default</instance>
-        </interface>
-    </hal><sepolicy><version>27.0</version></sepolicy>
diff --git a/device/amlogic/manzala/BoardConfig.mk b/device/amlogic/manzala/BoardConfig.mk
index 08ccf247c8..16409a7173 100755
--- a/device/amlogic/manzala/BoardConfig.mk
+++ b/device/amlogic/manzala/BoardConfig.mk
@@ -104,17 +104,17 @@ BOARD_ROOT_EXTRA_FOLDERS += odmendif# Sensors
-BOARD_GRAVITY_SENSOR_SUPPORT := false
-BOARD_COMPASS_SENSOR_SUPPORT := false
-BOARD_GYROSCOPE_SENSOR_SUPPORT := false
-BOARD_PROXIMITY_SENSOR_SUPPORT := false
-BOARD_LIGHT_SENSOR_SUPPORT := true
-BOARD_PRESSURE_SENSOR_SUPPORT := false
-BOARD_TEMPERATURE_SENSOR_SUPPORT := false
-
-BOARD_SENSOR_ST := true
-BOARD_SENSOR_MPU_VR := false
-BOARD_SENSOR_MPU_PAD := false
+#BOARD_GRAVITY_SENSOR_SUPPORT := false
+#BOARD_COMPASS_SENSOR_SUPPORT := false
+#BOARD_GYROSCOPE_SENSOR_SUPPORT := false
+#BOARD_PROXIMITY_SENSOR_SUPPORT := false
+#BOARD_LIGHT_SENSOR_SUPPORT := true
+#BOARD_PRESSURE_SENSOR_SUPPORT := false
+#BOARD_TEMPERATURE_SENSOR_SUPPORT := false
+
+#BOARD_SENSOR_ST := true
+#BOARD_SENSOR_MPU_VR := false
+#BOARD_SENSOR_MPU_PAD := falseBOARD_ODMIMAGE_FILE_SYSTEM_TYPE := ext4BOARD_USES_ODMIMAGE := true--
2.17.1

LightSensor传感器相关推荐

  1. android传感器_Android传感器

    android传感器 In this tutorial, we'll be digging deep into the world of Android Sensors. Our smartphone ...

  2. 条形码、二维码、RFID优缺点,卫星定位,传感器分类及应用场景

    条形码.二维码.RFID,以及三者优缺点 条形码的身影各个商品的背后随处可见,在我们的生活中应用十分普遍,由黑白相间的条纹组成的图形,其中黑色部分称为"条"白色的称为"空 ...

  3. android手机传感器总结

    传感器的分类 动作传感器 加速度传感器 重力传感器 陀螺仪 位置传感器 方向传感器 磁力传感器 环境传感器 温度传感器 压力传感器 亮度传感器 传感器的使用 1.获取SensorManager对象 2 ...

  4. c语言光敏程序代码,ADC实验之光敏传感器

    ADC实验之光敏传感器 硬件连接 我们可以测量A的电位,进而测量光的强度,光强与A点电压的对应关系如下: 电流反应的光敏二极管的导通状态,光强与电流对应关系如下: 因此,我们可以得出ADC读取的电压值 ...

  5. 【跟着江科大学Stm32】GPIO_按键控制LED_光敏传感器控制蜂鸣器

    不要管别人怎么说,一定要坚持,坚持一定会有收获! 一.按键控制LED 用两个按键来分别控制两个LED的状态,初始状态两灯均熄灭,按下1次点亮,再按下熄灭 因为江科大的套餐抢不到 我就自己看着图和利用现 ...

  6. ADC实验之光敏传感器

    ADC实验之光敏传感器 硬件连接 我们可以测量A的电位,进而测量光的强度,光强与A点电压的对应关系如下: 电流反应的光敏二极管的导通状态,光强与电流对应关系如下: 因此,我们可以得出ADC读取的电压值 ...

  7. Android手机传感器的使用

    安卓传感器使用 传感器的分类 动作传感器 位置传感器 环境传感器 传感器的使用 获取安卓手机中所有传感器 传感器事件概念 如何将传感器注册到应用程序上? 传感器的采样率 传感器的属性 加速度传感器的使 ...

  8. 英特尔硬件加速_英特尔Ultrabook硬件原型-Windows 8和传感器平台

    英特尔硬件加速 What better time to test the Sensors in this Intel Ultrabook prototype then while in the air ...

  9. STM32F4_光敏传感器

    目录 1. 什么是光敏传感器.光敏电阻 2. 硬件分析 3. 实验程序 3.1 main.c 3.2 ADC3.c 3.3 ADC3.h 3.4 Lightsensor.c 3.5 Lightsens ...

最新文章

  1. ITK:使用分水岭Watershed方法对图像进行分割
  2. innerHTMl和确认提示的使用
  3. java 漏洞挖掘_Apache Tika命令注入漏洞挖掘
  4. 天云大数据_天云大数据三度蝉联毕马威领先金融科技50强
  5. P3599-Koishi Loves Construction【构造,数论】
  6. 交叉编译openssl不修改Makefile的方法
  7. HDU 1002 大整数
  8. 高性能计算机的基准测试程序包括,QX∕T 148-2020 气象领域高性能计算机系统测试与评估规范(可复制版)(40页)-原创力文档...
  9. System Verilog面向对象编程(OPP)基础——类(class)的基本使用
  10. Python Linked List
  11. 视频点播-上传视频状态异常
  12. IE兼容性视图无法添加网站
  13. mac安装appium环境 iPhone真机测试
  14. java publisher_Publisher/Subscriber(发布/订阅者)消息模式开发流程
  15. 理解无线电波极化与天线极化
  16. mui日期选择器html,MUI 移动端时间选择器
  17. 2019 牛客多校第二场 4/10
  18. linux 软件包kbd 位置,kbd-audio:通过麦克风来捕获和分析键盘输入的工具
  19. Codeforces Global Round 21) C. Fishingprince Plays With Array
  20. pdf文件转换ppt可编辑_创建,转换和编辑PDF文件的免费工具

热门文章

  1. 如何用python编写问卷调查_如何通过Python实现自动填写调查问卷
  2. hdu-4745 Two Rabbits
  3. 猫眼电影字体反爬-自动处理字体加密
  4. 基于envoy的分布式网关-contour
  5. 抖音集锦(你不得不看的那些镜头)
  6. CC254x/CC2540/CC2541库函数速查
  7. 什么是RoIPooling和ROIAlign
  8. システム関連の完了コード
  9. c语言词典课程设计报告,英汉电子词典C语言课程设计
  10. 趣图:程序员到底是一群什么样的人?