Merge "Adding polling based test functionality for sensors" into tizen
authorMu-Woong Lee <muwoong.lee@samsung.com>
Mon, 11 May 2015 07:28:21 +0000 (00:28 -0700)
committerGerrit Code Review <gerrit@review.vlan103.tizen.org>
Mon, 11 May 2015 07:28:21 +0000 (00:28 -0700)
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);
+       }
 }