Adding polling based test functionality for sensors 26/37926/8
authorVibhor Gaur <vibhor.gaur@samsung.com>
Wed, 8 Apr 2015 12:06:30 +0000 (17:36 +0530)
committerVibhor Gaur <vibhor.gaur@samsung.com>
Mon, 11 May 2015 07:04:04 +0000 (12:34 +0530)
-Adding functionality for getting sensor event logs using polling mechansim.
-Change is being integrated in the test suite after there was amajor restructuring of the test folder to combine all tests into one.

Change-Id: I23a817895a9e7db8f7c4284f0d0c6c697476f5e9

test/src/check-sensor.c
test/src/check-sensor.h
test/src/sensor-test.c

index 3c28feb..aa15e34 100644 (file)
 
 static GMainLoop *mainloop;
 
-int get_event_driven(sensor_type_t sensor_type, char str[])
+void printpollinglogs(sensor_type_t type,sensor_data_t data)
+{
+       switch(type) {
+       case(ACCELEROMETER_SENSOR):
+               printf("Accelerometer [%lld] [%6.6f] [%6.6f] [%6.6f]\n\n", data.timestamp, data.values[0], data.values[1], data.values[2]);
+               break;
+       case(GYROSCOPE_SENSOR):
+               printf("Gyroscope [%lld] [%6.6f] [%6.6f] [%6.6f]\n\n", data.timestamp, data.values[0], data.values[1], data.values[2]);
+               break;
+       case(PRESSURE_SENSOR):
+               printf("Pressure [%lld] [%6.6f] [%6.6f] [%6.6f]\n\n", data.timestamp, data.values[0], data.values[1], data.values[2]);
+               break;
+       case(GEOMAGNETIC_SENSOR):
+               printf("Geomagnetic [%lld] [%6.6f] [%6.6f] [%6.6f]\n\n", data.timestamp, data.values[0], data.values[1], data.values[2]);
+               break;
+       case(LIGHT_SENSOR):
+               printf("Light [%lld] [%6.6f]\n\n", data.timestamp, data.values[0]);
+               break;
+       case(TEMPERATURE_SENSOR):
+               printf("Temperature [%lld] [%6.6f]\n\n", data.timestamp, data.values[0]);
+               break;
+       case(PROXIMITY_SENSOR):
+               printf("Proximity [%lld] [%6.6f]\n\n", data.timestamp, data.values[0]);
+               break;
+       case(ORIENTATION_SENSOR):
+               printf("Orientation [%lld] [%6.6f] [%6.6f] [%6.6f]\n\n", data.timestamp, data.values[0], data.values[1], data.values[2]);
+               break;
+       case(GRAVITY_SENSOR):
+               printf("Gravity [%lld] [%6.6f] [%6.6f] [%6.6f]\n\n", data.timestamp, data.values[0], data.values[1], data.values[2]);
+               break;
+       case(LINEAR_ACCEL_SENSOR):
+               printf("Linear Acceleration [%lld] [%6.6f] [%6.6f] [%6.6f]\n\n", data.timestamp, data.values[0], data.values[1], data.values[2]);
+               break;
+       case(ROTATION_VECTOR_SENSOR):
+               printf("Rotation Vector [%lld] [%6.6f] [%6.6f] [%6.6f] [%6.6f]\n\n", data.timestamp, data.values[0], data.values[1], data.values[2], data.values[3]);
+               break;
+       case(GEOMAGNETIC_RV_SENSOR):
+               printf("Geomagnetic Rv [%lld] [%6.6f] [%6.6f] [%6.6f] [%6.6f]\n\n", data.timestamp, data.values[0], data.values[1], data.values[2], data.values[3]);
+               break;
+       case(GAMING_RV_SENSOR):
+               printf("Gaming Rv [%lld] [%6.6f] [%6.6f] [%6.6f] [%6.6f]\n\n", data.timestamp, data.values[0], data.values[1], data.values[2], data.values[3]);
+               break;
+       default:
+               return;
+       }
+}
+
+int get_event(sensor_type_t sensor_type, char str[])
 {
        switch (sensor_type) {
        case ACCELEROMETER_SENSOR:
-               if (strcmp(str, "RAW_DATA_REPORT_ON_TIME") == 0)
+               if (strcmp(str, "RAW_DATA_EVENT") == 0)
                        return ACCELEROMETER_RAW_DATA_EVENT;
                break;
        case GYROSCOPE_SENSOR:
-               if (strcmp(str, "RAW_DATA_REPORT_ON_TIME") == 0)
+               if (strcmp(str, "RAW_DATA_EVENT") == 0)
                        return GYROSCOPE_RAW_DATA_EVENT;
                break;
        case PRESSURE_SENSOR:
-               if (strcmp(str, "RAW_DATA_REPORT_ON_TIME") == 0)
+               if (strcmp(str, "RAW_DATA_EVENT") == 0)
                        return PRESSURE_RAW_DATA_EVENT;
                break;
        case GEOMAGNETIC_SENSOR:
-               if (strcmp(str, "RAW_DATA_REPORT_ON_TIME") == 0)
+               if (strcmp(str, "RAW_DATA_EVENT") == 0)
                        return GEOMAGNETIC_RAW_DATA_EVENT;
                break;
        case LIGHT_SENSOR:
-               if (strcmp(str, "RAW_DATA_REPORT_ON_TIME") == 0)
+               if (strcmp(str, "RAW_DATA_EVENT") == 0)
                        return LIGHT_LUX_DATA_EVENT;
                break;
        case TEMPERATURE_SENSOR:
-               if (strcmp(str, "RAW_DATA_REPORT_ON_TIME") == 0)
+               if (strcmp(str, "RAW_DATA_EVENT") == 0)
                        return TEMPERATURE_RAW_DATA_EVENT;
                break;
        case PROXIMITY_SENSOR:
-               if (strcmp(str, "EVENT_CHANGE_STATE") == 0)
+               if (strcmp(str, "CHANGE_STATE_EVENT") == 0)
                        return PROXIMITY_CHANGE_STATE_EVENT;
                break;
        case ORIENTATION_SENSOR:
-               if (strcmp(str, "RAW_DATA_REPORT_ON_TIME") == 0)
+               if (strcmp(str, "RAW_DATA_EVENT") == 0)
                        return ORIENTATION_RAW_DATA_EVENT;
                break;
        case GRAVITY_SENSOR:
-               if (strcmp(str, "RAW_DATA_REPORT_ON_TIME") == 0)
+               if (strcmp(str, "RAW_DATA_EVENT") == 0)
                        return GRAVITY_RAW_DATA_EVENT;
                break;
        case LINEAR_ACCEL_SENSOR:
-               if (strcmp(str, "RAW_DATA_REPORT_ON_TIME") == 0)
+               if (strcmp(str, "RAW_DATA_EVENT") == 0)
                        return LINEAR_ACCEL_RAW_DATA_EVENT;
                break;
        case ROTATION_VECTOR_SENSOR:
-               if (strcmp(str, "RAW_DATA_REPORT_ON_TIME") == 0)
+               if (strcmp(str, "RAW_DATA_EVENT") == 0)
                        return ROTATION_VECTOR_RAW_DATA_EVENT;
                break;
        case GEOMAGNETIC_RV_SENSOR:
-               if (strcmp(str, "RAW_DATA_REPORT_ON_TIME") == 0)
+               if (strcmp(str, "RAW_DATA_EVENT") == 0)
                        return GEOMAGNETIC_RV_RAW_DATA_EVENT;
                break;
        case GAMING_RV_SENSOR:
-               if (strcmp(str, "RAW_DATA_REPORT_ON_TIME") == 0)
+               if (strcmp(str, "RAW_DATA_EVENT") == 0)
                        return GAMING_RV_RAW_DATA_EVENT;
                break;
        }
-
        return -1;
 }
 
@@ -185,3 +231,36 @@ int check_sensor(sensor_type_t sensor_type, unsigned int event, int interval)
 
        return 0;
 }
+
+int polling_sensor(sensor_type_t sensor_type, unsigned int event)
+{
+       int result, handle;
+       printf("Polling based\n");
+
+       handle = sf_connect(sensor_type);
+       result = sf_start(handle, 1);
+
+       if (result < 0) {
+               printf("Can't start the sensor\n");
+               printf("Error\n\n\n\n");
+               return -1;
+       }
+
+       sensor_data_t data;
+
+       while(1) {
+               result = sf_get_data(handle, event , &data);
+               printpollinglogs(sensor_type, data);
+               usleep(100000);
+       }
+
+       result = sf_disconnect(handle);
+
+       if (result < 0) {
+               printf("Can't disconnect sensor\n");
+               printf("Error\n\n\n\n");
+               return -1;
+       }
+
+       return 0;
+}
index 097a770..86b407b 100644 (file)
 
 #define DEFAULT_EVENT_INTERVAL 100
 
-int get_event_driven(sensor_type_t sensor_type, char str[]);
+int get_event(sensor_type_t sensor_type, char str[]);
 void callback(sensor_t sensor, unsigned int event_type, sensor_data_t *data, void *user_data);
 int check_sensor(sensor_type_t sensor_type, unsigned int event, int interval);
+void printpollinglogs(sensor_type_t type, sensor_data_t data);
+int polling_sensor(sensor_type_t sensor_type, unsigned int event);
 
 #endif
index 0b55112..5c5c3c1 100644 (file)
@@ -29,7 +29,7 @@
 
 void usage()
 {
-       printf("Usage : ./sensor-test <Sensor_type> <event>(optional) <interval>(optional)\n\n");
+       printf("Usage : ./sensor-test <Sensor_type> -p(optional) <event>(optional) <interval>(optional)\n\n");
 
        printf("Sensor_type: ");
        printf("[accelerometer] ");
@@ -45,13 +45,13 @@ void usage()
        printf("[gaming_rv] ");
        printf("[light]\n");
        printf("event:");
-       printf("[RAW_DATA_REPORT_ON_TIME]\n");
-
+       printf("[RAW_DATA_EVENT]\n");
+       printf("-p: [polling]\n");
        printf("Sensor_type: ");
        printf("[proximity]\n");
        printf("event:");
-       printf("[EVENT_CHANGE_STATE]\n");
-
+       printf("[CHANGE_STATE_EVENT]\n");
+       printf("-p: [polling]\n");
        printf("interval:\n");
        printf("The time interval should be entered based on the sampling frequency supported by accelerometer driver on the device in ms.If no value for sensor is entered default value by the driver will be used.\n");
 }
@@ -61,10 +61,11 @@ int main(int argc, char **argv)
        int interval;
        unsigned int event;
        sensor_type_t sensor_type;
+       bool is_polling;
 
        char *end1;
 
-       if (argc < 2 || argc > 4) {
+       if (argc < 2 || argc > 5) {
                printf("Wrong number of arguments\n");
                usage();
                return 0;
@@ -128,29 +129,61 @@ int main(int argc, char **argv)
 
        interval = DEFAULT_EVENT_INTERVAL;
 
-       if (argc == 3) {
-               int temp_event = get_event_driven(sensor_type, argv[2]);
+       is_polling = FALSE;
 
-               if (temp_event == -1) {
-                       interval = atoi(argv[2]);
-                       if (interval == 0){
-                               usage();
-                               return -1;
+       if(argc >= 3 && strcmp(argv[2], "-p") == 0) {
+               is_polling = TRUE;
+       }
+
+       if (is_polling) {
+               if (argc == 4) {
+                       int temp_event = get_event(sensor_type, argv[3]);
+                       if (temp_event == -1) {
+                               interval = atoi(argv[3]);
+                               if (interval == 0){
+                                       usage();
+                                       return -1;
+                               }
+                       }
+                       else {
+                               event = temp_event;
                        }
                }
-               else {
-                       event = temp_event;
+               else if (argc == 5) {
+                       event = get_event(sensor_type, argv[3]);
+                       interval = strtol(argv[4], &end1, 10);
+
+                       if (*end1) {
+                               printf("Conversion error, non-convertible part: %s\n", end1);
+                               return -1;
+                       }
                }
+               return polling_sensor(sensor_type, event);
        }
-       else if (argc == 4) {
-               event = get_event_driven(sensor_type, argv[2]);
-               interval = strtol(argv[3], &end1, 10);
+       else {
+               if (argc == 3) {
+                       int temp_event = get_event(sensor_type, argv[2]);
 
-               if (*end1) {
-                       printf("Conversion error, non-convertible part: %s\n", end1);
-                       return -1;
+                       if (temp_event == -1) {
+                               interval = atoi(argv[2]);
+                               if (interval == 0){
+                                       usage();
+                                       return -1;
+                               }
+                       }
+                       else {
+                               event = temp_event;
+                       }
                }
-       }
+               else if (argc == 4) {
+                       event = get_event(sensor_type, argv[2]);
+                       interval = strtol(argv[3], &end1, 10);
 
-       return check_sensor(sensor_type, event, interval);
+                       if (*end1) {
+                               printf("Conversion error, non-convertible part: %s\n", end1);
+                               return -1;
+                       }
+               }
+               return check_sensor(sensor_type, event, interval);
+       }
 }