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