static QemuMutex pressure_mutex;
static QemuMutex uv_mutex;
static QemuMutex hrm_mutex;
+static QemuMutex pedo_mutex;
static char accel_xyz[__MAX_BUF_SENSOR] = {'1', '0', '0', ',', '9', '8', '0', '6',
'6', '5', ',', '1', '0', '0'};
static int hrm_enable;
static int hrm_delay = 200000000;
+static int pedo_value = 1;
+static int pedo_enable = 1;
+static int pedo_delay = 200000000;
+
VirtIOSENSOR *vsensor;
static int sensor_capability;
case sensor_type_hrm:
action = ACTION_HRM;
break;
+ case sensor_type_pedo:
+ action = ACTION_PEDO;
+ break;
default:
break;
}
sscanf(data, "%d", &hrm_delay);
qemu_mutex_unlock(&hrm_mutex);
break;
+ case sensor_type_pedo:
+ qemu_mutex_lock(&pedo_mutex);
+ sscanf(data, "%d", &pedo_value);
+ qemu_mutex_unlock(&pedo_mutex);
+ break;
+ case sensor_type_pedo_enable:
+ qemu_mutex_lock(&pedo_mutex);
+ sscanf(data, "%d", &pedo_enable);
+ qemu_mutex_unlock(&pedo_mutex);
+ break;
+ case sensor_type_pedo_delay:
+ qemu_mutex_lock(&pedo_mutex);
+ sscanf(data, "%d", &pedo_delay);
+ qemu_mutex_unlock(&pedo_mutex);
+ break;
default:
return;
}
static void __get_sensor_data(enum sensor_types type, char *msg_info)
{
if (msg_info == NULL) {
+ LOG_WARNING("msg_info is null\n");
return;
}
sprintf(msg_info, "%d", hrm_delay);
qemu_mutex_unlock(&hrm_mutex);
break;
+ case sensor_type_pedo:
+ qemu_mutex_lock(&pedo_mutex);
+ sprintf(msg_info, "%d", pedo_value);
+ qemu_mutex_unlock(&pedo_mutex);
+ break;
+ case sensor_type_pedo_enable:
+ qemu_mutex_lock(&pedo_mutex);
+ sprintf(msg_info, "%d", pedo_enable);
+ qemu_mutex_unlock(&pedo_mutex);
+ break;
+ case sensor_type_pedo_delay:
+ qemu_mutex_lock(&pedo_mutex);
+ sprintf(msg_info, "%d", pedo_delay);
+ qemu_mutex_unlock(&pedo_mutex);
+ break;
default:
return;
}
return sensor_cap_uv;
} else if (!strncmp(sensor, SENSOR_NAME_HRM, 3)) {
return sensor_cap_hrm;
+ } else if (!strncmp(sensor, SENSOR_NAME_PEDO, 4)) {
+ return sensor_cap_pedo;
} else {
- LOG_SEVERE("unknown sensor request: %s", sensor);
+ LOG_SEVERE("unknown sensor request: %s\n", sensor);
}
return 0;
qemu_mutex_init(&pressure_mutex);
qemu_mutex_init(&uv_mutex);
qemu_mutex_init(&hrm_mutex);
+ qemu_mutex_init(&pedo_mutex);
vsensor->vq = virtio_add_queue(&vsensor->vdev, 64, virtio_sensor_vq);
qemu_mutex_destroy(&pressure_mutex);
qemu_mutex_destroy(&uv_mutex);
qemu_mutex_destroy(&hrm_mutex);
+ qemu_mutex_destroy(&pedo_mutex);
virtio_cleanup(vdev);
}
sensor_type_hrm_rri,
sensor_type_hrm_enable,
sensor_type_hrm_delay,
+ sensor_type_pedo,
+ sensor_type_pedo_enable,
+ sensor_type_pedo_delay,
sensor_type_max
};
sensor_cap_haptic = 0x0040,
sensor_cap_pressure = 0x0080,
sensor_cap_uv = 0x0100,
- sensor_cap_hrm = 0x0200
+ sensor_cap_hrm = 0x0200,
+ sensor_cap_pedo = 0x0400
};
#define MESSAGE_TYPE_SENSOR "sensor"
#define ACTION_PRESSURE 116
#define ACTION_UV 117
#define ACTION_HRM 118
+#define ACTION_PEDO 119
#define ATTRIBUTE_NAME_SENSORS "sensors"
#define SENSOR_NAME_PRESSURE "press"
#define SENSOR_NAME_UV "uv"
#define SENSOR_NAME_HRM "hrm"
+#define SENSOR_NAME_PEDO "pedo"
#define SENSOR_CAP_TOKEN "&"
#define set_sensor_hrm_rri(data, len) \
req_sensor_data(sensor_type_hrm_rri, request_set, data, len);
+#define get_sensor_pedo() \
+ req_sensor_data(sensor_type_pedo, request_get, NULL, 0);
+
+#define set_sensor_pedo(data, len) \
+ req_sensor_data(sensor_type_pedo, request_set, data, len);
+
#ifdef __cplusplus
}