Revision 4483c7ac hw/stellaris_input.c
b/hw/stellaris_input.c | ||
---|---|---|
13 | 13 |
typedef struct { |
14 | 14 |
qemu_irq irq; |
15 | 15 |
int keycode; |
16 |
int pressed;
|
|
16 |
uint8_t pressed;
|
|
17 | 17 |
} gamepad_button; |
18 | 18 |
|
19 | 19 |
typedef struct { |
... | ... | |
47 | 47 |
s->extension = 0; |
48 | 48 |
} |
49 | 49 |
|
50 |
static void stellaris_gamepad_save(QEMUFile *f, void *opaque) |
|
51 |
{ |
|
52 |
gamepad_state *s = (gamepad_state *)opaque; |
|
53 |
int i; |
|
54 |
|
|
55 |
qemu_put_be32(f, s->extension); |
|
56 |
for (i = 0; i < s->num_buttons; i++) |
|
57 |
qemu_put_byte(f, s->buttons[i].pressed); |
|
58 |
} |
|
59 |
|
|
60 |
static int stellaris_gamepad_load(QEMUFile *f, void *opaque, int version_id) |
|
61 |
{ |
|
62 |
gamepad_state *s = (gamepad_state *)opaque; |
|
63 |
int i; |
|
64 |
|
|
65 |
if (version_id != 1) |
|
66 |
return -EINVAL; |
|
67 |
|
|
68 |
s->extension = qemu_get_be32(f); |
|
69 |
for (i = 0; i < s->num_buttons; i++) |
|
70 |
s->buttons[i].pressed = qemu_get_byte(f); |
|
50 |
static const VMStateDescription vmstate_stellaris_button = { |
|
51 |
.name = "stellaris_button", |
|
52 |
.version_id = 0, |
|
53 |
.minimum_version_id = 0, |
|
54 |
.minimum_version_id_old = 0, |
|
55 |
.fields = (VMStateField[]) { |
|
56 |
VMSTATE_UINT8(pressed, gamepad_button), |
|
57 |
VMSTATE_END_OF_LIST() |
|
58 |
} |
|
59 |
}; |
|
71 | 60 |
|
72 |
return 0; |
|
73 |
} |
|
61 |
static const VMStateDescription vmstate_stellaris_gamepad = { |
|
62 |
.name = "stellaris_gamepad", |
|
63 |
.version_id = 1, |
|
64 |
.minimum_version_id = 1, |
|
65 |
.minimum_version_id_old = 1, |
|
66 |
.fields = (VMStateField[]) { |
|
67 |
VMSTATE_INT32(extension, gamepad_state), |
|
68 |
VMSTATE_STRUCT_VARRAY_INT32(buttons, gamepad_state, num_buttons, 0, |
|
69 |
vmstate_stellaris_button, gamepad_button), |
|
70 |
VMSTATE_END_OF_LIST() |
|
71 |
} |
|
72 |
}; |
|
74 | 73 |
|
75 | 74 |
/* Returns an array 5 ouput slots. */ |
76 | 75 |
void stellaris_gamepad_init(int n, qemu_irq *irq, const int *keycode) |
... | ... | |
86 | 85 |
} |
87 | 86 |
s->num_buttons = n; |
88 | 87 |
qemu_add_kbd_event_handler(stellaris_gamepad_put_key, s); |
89 |
register_savevm(NULL, "stellaris_gamepad", -1, 1, |
|
90 |
stellaris_gamepad_save, stellaris_gamepad_load, s); |
|
88 |
vmstate_register(NULL, -1, &vmstate_stellaris_gamepad, s); |
|
91 | 89 |
} |
Also available in: Unified diff