Files
djhackersdev_bemanitools/src/main/ezusb2-iidx/msg.h
T

109 lines
2.7 KiB
C

#ifndef EZUSB2_IIDX_MSG_H
#define EZUSB2_IIDX_MSG_H
#include <stddef.h>
#include <stdint.h>
#pragma pack(push, 1)
struct ezusb2_iidx_msg_interrupt_write_packet {
uint8_t unk0;
uint8_t unk1;
uint8_t node;
uint8_t cmd;
uint8_t cmd_detail[2];
uint8_t unk2;
uint8_t unk3;
uint8_t panel_lights;
uint8_t unk4;
uint8_t unk5;
uint16_t deck_lights;
uint8_t unk6;
uint8_t top_lamps;
uint8_t top_neons;
uint8_t seg16[9];
/* Pad to 64 byte total size because the endpoint expects this buffer size.
Requests are hanging on ioctl calls otherwise. */
uint8_t padding[39];
};
#pragma pack(pop)
/* Some static asserts to ensure that lights are at correct offsets */
_Static_assert(
offsetof(struct ezusb2_iidx_msg_interrupt_write_packet, panel_lights) == 8,
"panel_lights is at wrong offset for fx2 packet");
_Static_assert(
offsetof(struct ezusb2_iidx_msg_interrupt_write_packet, deck_lights) == 11,
"deck_lights is at wrong offset for fx2 packet");
_Static_assert(
offsetof(struct ezusb2_iidx_msg_interrupt_write_packet, top_lamps) == 14,
"top_lamps is at wrong offset for fx2 packet");
_Static_assert(
offsetof(struct ezusb2_iidx_msg_interrupt_write_packet, top_neons) == 15,
"top_neons is at wrong offset for fx2 packet");
_Static_assert(
offsetof(struct ezusb2_iidx_msg_interrupt_write_packet, padding[39]) == 64,
"Last padding element is at wrong offset for fx2 write packet");
struct ezusb2_iidx_msg_interrupt_read_packet {
/*
Pad mappings:
0: P1_Start
1: P2_Start
2: VEFX
3: Effector
4: Test
5: Service
6: unknown/not used
7: unknown/not used
8: unknown/not used
9: unknown/not used
10: unknown/not used
11: unknown/not used
12: unknown/not used
13: unknown/not used
14: unknown/not used
15: unknown/not used
16: P1_1
17: P1_2
18: P1_3
19: P1_4
20: P1_5
21: P1_6
22: P1_7
23: P2_1
24: P2_2
25: P2_3
26: P2_4
27: P2_5
28: P2_6
29: P2_7
30: Coin mech
31: Not used
*/
uint8_t unk0;
uint8_t unk1;
uint8_t unk2;
uint8_t seq_no;
uint8_t status;
uint8_t unk3;
uint8_t unk4;
uint8_t unk5;
uint32_t inverted_pad;
uint8_t unk6;
uint8_t p2_turntable;
uint8_t p1_turntable;
uint8_t sliders[3];
/* Pad to 64 byte total size because the endpoint expects this buffer size.
Requests are hanging on ioctl calls otherwise. */
uint8_t padding[46];
};
_Static_assert(
offsetof(struct ezusb2_iidx_msg_interrupt_read_packet, padding[45]) == 63,
"Last padding element is at wrong offset for fx2 read packet");
#endif