.instance_init = virtio_evdi_pci_instance_init,
.class_init = virtio_evdi_pci_class_init,
};
+
+/* virtio-sensor-pci */
+
+static int virtio_sensor_pci_init(VirtIOPCIProxy *vpci_dev)
+{
+ VirtIOSENSORPCI *dev = VIRTIO_SENSOR_PCI(vpci_dev);
+ DeviceState *vdev = DEVICE(&dev->vdev);
+
+ qdev_set_parent_bus(vdev, BUS(&vpci_dev->bus));
+ if (qdev_init(vdev) < 0) {
+ return -1;
+ }
+ return 0;
+}
+
+static void virtio_sensor_pci_class_init(ObjectClass *klass, void *data)
+{
+ VirtioPCIClass *k = VIRTIO_PCI_CLASS(klass);
+ PCIDeviceClass *pcidev_k = PCI_DEVICE_CLASS(klass);
+
+ k->init = virtio_sensor_pci_init;
+ pcidev_k->vendor_id = PCI_VENDOR_ID_REDHAT_QUMRANET;
+ pcidev_k->device_id = PCI_DEVICE_ID_VIRTIO_SENSOR;
+ pcidev_k->revision = VIRTIO_PCI_ABI_VERSION;
+ pcidev_k->class_id = PCI_CLASS_OTHERS;
+}
+
+static void virtio_sensor_pci_instance_init(Object *obj)
+{
+ VirtIOSENSORPCI *dev = VIRTIO_SENSOR_PCI(obj);
+ object_initialize(OBJECT(&dev->vdev), TYPE_VIRTIO_SENSOR);
+ object_property_add_child(obj, "virtio-backend", OBJECT(&dev->vdev), NULL);
+}
+
+static TypeInfo virtio_sensor_pci_info = {
+ .name = TYPE_VIRTIO_SENSOR_PCI,
+ .parent = TYPE_VIRTIO_PCI,
+ .instance_size = sizeof(VirtIOSENSORPCI),
+ .instance_init = virtio_sensor_pci_instance_init,
+ .class_init = virtio_sensor_pci_class_init,
+};
+
#endif
/* virtio-pci-bus */
type_register_static(&virtio_keyboard_pci_info);
type_register_static(&virtio_touchscreen_pci_info);
type_register_static(&virtio_gl_pci_info);
+ type_register_static(&virtio_sensor_pci_info);
#endif
}
#include "../tizen/src/hw/maru_virtio_keyboard.h"
#include "../tizen/src/hw/maru_virtio_touchscreen.h"
#include "../tizen/src/hw/virtio-gl.h"
+#include "../tizen/src/hw/maru_virtio_sensor.h"
#endif
typedef struct VirtIOPCIProxy VirtIOPCIProxy;
typedef struct VirtIOESMPCI VirtIOESMPCI;
typedef struct VirtIOHWKeyPCI VirtIOHWKeyPCI;
typedef struct VirtIOKeyboardPCI VirtIOKeyboardPCI;
+typedef struct VirtIOSENSORPCI VirtIOSENSORPCI;
#endif
/* virtio-pci-bus */
VirtIOPCIProxy parent_obj;
VirtIOHWKey vdev;
};
+
+/*
+ * virtio-sensor-pci: This extends VirtioPCIProxy.
+ */
+#define TYPE_VIRTIO_SENSOR_PCI "virtio-sensor-pci"
+#define VIRTIO_SENSOR_PCI(obj) \
+ OBJECT_CHECK(VirtIOSENSORPCI, (obj), TYPE_VIRTIO_SENSOR_PCI)
+
+struct VirtIOSENSORPCI {
+ VirtIOPCIProxy parent_obj;
+ VirtIOSENSOR vdev;
+};
#endif
/* Virtio ABI version, if we increment this, we break the guest driver. */
start_logging();
LOG("ecs starts initializing.");
- opts = qemu_opts_create(qemu_find_opts("ecs"), "ECS", 1, &local_err);
+ opts = qemu_opts_create(qemu_find_opts(ECS_OPTS_NAME), ECS_OPTS_NAME, 1, &local_err);
if (error_is_set(&local_err)) {
qerror_report_err(local_err);
error_free(local_err);
#define LOG_PATH "\\tizen-sdk-data\\emulator-vms\\vms\\ecs.log"
#endif
+#define ECS_OPTS_NAME "ecs"
#define HOST_LISTEN_ADDR "127.0.0.1"
#define HOST_LISTEN_PORT 27000
#define EMULATOR_SERVER_NUM 3
void set_sensor_data(int length, const char* data);
+static QemuOptsList qemu_ecs_opts = {
+ .name = ECS_OPTS_NAME,
+ .implied_opt_name = ECS_OPTS_NAME,
+ .head = QTAILQ_HEAD_INITIALIZER(qemu_ecs_opts.head),
+ .desc = {
+ {
+ .name = "host",
+ .type = QEMU_OPT_STRING,
+ },{
+ .name = "port",
+ .type = QEMU_OPT_STRING,
+ },{
+ .name = "localaddr",
+ .type = QEMU_OPT_STRING,
+ },{
+ .name = "localport",
+ .type = QEMU_OPT_STRING,
+ },{
+ .name = "to",
+ .type = QEMU_OPT_NUMBER,
+ },{
+ .name = "ipv4",
+ .type = QEMU_OPT_BOOL,
+ },{
+ .name = "ipv6",
+ .type = QEMU_OPT_BOOL,
+ },
+ { /* End of list */ }
+ },
+};
+
#endif /* __ECS_H__ */
int guest_server_port = tizen_base_port + SDB_UDP_SENSOR_INDEX;
start_guest_server(guest_server_port);
+ qemu_add_opts(&qemu_ecs_opts);
+
start_ecs();
mloop_ev_init();
*/
-#include <pthread.h>
-
#include "hw/pci/pci.h"
#include "maru_device_ids.h"
#define _MAX_BUF 1024
-VirtIOSensor* vsensor;
+VirtIOSENSOR* vsensor;
typedef struct msg_info {
char buf[_MAX_BUF];
static void virtio_sensor_send(VirtIODevice *vdev, VirtQueue *vq)
{
- VirtIOSensor *vsensor = (VirtIOSensor*)vdev;
+ VirtIOSENSOR *vsensor = (VirtIOSENSOR*)vdev;
struct msg_info msg;
VirtQueueElement elem;
int index = 0;
send_to_ecs(&msg);
}
- virtqueue_push(vq, &elem, sizeof(VirtIOSensor));
+ virtqueue_push(vq, &elem, sizeof(VirtIOSENSOR));
virtio_notify(&vsensor->vdev, vq);
}
static const TypeInfo virtio_device_info = {
.name = TYPE_VIRTIO_SENSOR,
.parent = TYPE_VIRTIO_DEVICE,
- .instance_size = sizeof(VirtIOSensor),
+ .instance_size = sizeof(VirtIOSENSOR),
.class_init = virtio_sensor_class_init,
};
#define ACTION_LIGHT 113
#define ACTION_PROXI 114
+#define TYPE_VIRTIO_SENSOR "virtio-sensor-device"
+#define VIRTIO_SENSOR(obj) \
+ OBJECT_CHECK(VirtIOSENSOR, (obj), TYPE_VIRTIO_SENSOR)
-typedef struct VirtIOSensor {
+typedef struct VirtIOSENSOR {
VirtIODevice vdev;
VirtQueue *rvq;
VirtQueue *svq;
DeviceState *qdev;
QEMUBH *bh;
-} VirtIOSensor;
-
-
-
-#define TYPE_VIRTIO_SENSOR "virtio-sensor-device"
-#define VIRTIO_SENSOR(obj) \
- OBJECT_CHECK(VirtIOSensor, (obj), TYPE_VIRTIO_SENSOR)
-
-
-
-//VirtIODevice *virtio_sensor_init(DeviceState *dev);
-
-//void virtio_sensor_exit(VirtIODevice *vdev);
+} VirtIOSENSOR;
void req_sensor_data(enum sensor_types type, enum request_cmd req, char* data, int len);