OSDN Git Service

Populate L specific sensor_t fields
authorAdriana Reus <adriana.reus@intel.com>
Thu, 31 Jul 2014 13:18:20 +0000 (16:18 +0300)
committerbuildslave <buildslave@buildbot.tl.intel.com>
Wed, 6 Aug 2014 16:08:11 +0000 (16:08 +0000)
Add stringType, flags, and requiredPermission fields.

Change-Id: I1df67776e55fe85dfc06984459e6a1a795489ded
Signed-off-by: Adriana Reus <adriana.reus@intel.com>
common.h
description.c
description.h
enumeration.c

index 4778e4f..b89199f 100644 (file)
--- a/common.h
+++ b/common.h
 
 #define FLAG_FIELD_ORDERING    0x01
 
+#ifdef __LP64__
+       typedef uint64_t flag_t;
+#else
+       typedef uint32_t flag_t;
+#endif
+
 struct channel_descriptor_t
 {
        const char *name;       /* channel name ; ex: x */
index ccc3870..b9d5e9f 100644 (file)
@@ -260,3 +260,88 @@ int sensor_get_order (int s, unsigned char map[MAX_CHANNELS])
 
        return 1;       /* OK to use modified ordering map */
 }
+
+char* sensor_get_string_type(int s)
+{
+       int catalog_index;
+       int sensor_type;
+
+       catalog_index = sensor_info[s].catalog_index;
+       sensor_type = sensor_catalog[catalog_index].type;
+
+       switch (sensor_type) {
+               case SENSOR_TYPE_ACCELEROMETER:
+                       return SENSOR_STRING_TYPE_ACCELEROMETER;
+
+               case SENSOR_TYPE_MAGNETIC_FIELD:
+                       return SENSOR_STRING_TYPE_MAGNETIC_FIELD;
+
+               case SENSOR_TYPE_ORIENTATION:
+                       return SENSOR_STRING_TYPE_ORIENTATION;
+
+               case SENSOR_TYPE_GYROSCOPE:
+                       return SENSOR_STRING_TYPE_GYROSCOPE;
+
+               case SENSOR_TYPE_GYROSCOPE_UNCALIBRATED:
+                       return SENSOR_STRING_TYPE_GYROSCOPE_UNCALIBRATED;
+
+               case SENSOR_TYPE_LIGHT:
+                       return SENSOR_STRING_TYPE_LIGHT;
+
+               case SENSOR_TYPE_AMBIENT_TEMPERATURE:
+                       return SENSOR_STRING_TYPE_AMBIENT_TEMPERATURE;
+
+               case SENSOR_TYPE_TEMPERATURE:
+                       return SENSOR_STRING_TYPE_TEMPERATURE;
+
+               case SENSOR_TYPE_PROXIMITY:
+                       return SENSOR_STRING_TYPE_PROXIMITY;
+
+               case SENSOR_TYPE_PRESSURE:
+                       return SENSOR_STRING_TYPE_PRESSURE;
+
+               case SENSOR_TYPE_RELATIVE_HUMIDITY:
+                       return SENSOR_STRING_TYPE_RELATIVE_HUMIDITY;
+
+               default:
+                       return "";
+               }
+}
+
+flag_t sensor_get_flags (int s)
+{
+       int catalog_index;
+       int sensor_type;
+
+       flag_t flags = 0x0;
+       catalog_index = sensor_info[s].catalog_index;
+       sensor_type = sensor_catalog[catalog_index].type;
+
+       switch (sensor_type) {
+               case SENSOR_TYPE_ACCELEROMETER:
+               case SENSOR_TYPE_MAGNETIC_FIELD:
+               case SENSOR_TYPE_ORIENTATION:
+               case SENSOR_TYPE_GYROSCOPE:
+               case SENSOR_TYPE_GYROSCOPE_UNCALIBRATED:
+               case SENSOR_TYPE_PRESSURE:
+                       flags |= SENSOR_FLAG_CONTINUOUS_MODE;
+                       break;
+
+               case SENSOR_TYPE_LIGHT:
+               case SENSOR_TYPE_AMBIENT_TEMPERATURE:
+               case SENSOR_TYPE_TEMPERATURE:
+               case SENSOR_TYPE_RELATIVE_HUMIDITY:
+                       flags |= SENSOR_FLAG_ON_CHANGE_MODE;
+                       break;
+
+
+               case SENSOR_TYPE_PROXIMITY:
+                       flags |= SENSOR_FLAG_WAKE_UP;
+                       flags |= SENSOR_FLAG_ON_CHANGE_MODE;
+                       break;
+
+               default:
+                       ALOGI("Unknown sensor");
+               }
+       return flags;
+}
index f2ba07c..40619c1 100644 (file)
@@ -24,4 +24,7 @@ int           sensor_get_fl_prop (int s, const char* sel, float* val);
 
 int            sensor_get_order        (int s, unsigned char map[MAX_CHANNELS]);
 
+char* sensor_get_string_type(int s);
+flag_t sensor_get_flags (int s);
+
 #endif
index d202637..f60d126 100644 (file)
@@ -173,6 +173,13 @@ static void add_sensor (int dev_num, int catalog_index, int use_polling)
        sensor_desc[s].maxRange         = sensor_get_max_range(s);
        sensor_desc[s].resolution       = sensor_get_resolution(s);
        sensor_desc[s].power            = sensor_get_power(s);
+       sensor_desc[s].stringType = sensor_get_string_type(s);
+
+       /* None of our supported sensors requires a special permission.
+       *  If this will be the case we should implement a sensor_get_perm
+       */
+       sensor_desc[s].requiredPermission = "";
+       sensor_desc[s].flags = sensor_get_flags(s);
 
        if (sensor_info[s].internal_name[0] == '\0') {
                /*