5 #define dream_maple_H 1
7 #define MAPLE_CMD_INFO 1 /* Request device information */
8 #define MAPLE_CMD_EXT_INFO 2 /* Request extended information */
9 #define MAPLE_CMD_RESET 3 /* Reset device */
10 #define MAPLE_CMD_SHUTDOWN 4 /* Shutdown device */
11 #define MAPLE_CMD_GET_COND 9 /* Get condition */
12 #define MAPLE_CMD_MEM_INFO 10 /* Get memory information */
13 #define MAPLE_CMD_READ_BLOCK 11 /* Block read */
14 #define MAPLE_CMD_WRITE_BLOCK 12 /* Block write */
15 #define MAPLE_CMD_SET_COND 14 /* Set condition */
16 #define MAPLE_RESP_INFO 5 /* Device information response */
17 #define MAPLE_RESP_EXT_INFO 6 /* Extended device information response */
18 #define MAPLE_RESP_ACK 7 /* Acknowledge command */
19 #define MAPLE_RESP_DATA 8 /* Bytes read */
20 #define MAPLE_ERR_NO_RESPONSE -1 /* Device did not respond */
21 #define MAPLE_ERR_FUNC_UNSUP -2 /* Function code unsupported */
22 #define MAPLE_ERR_CMD_UNKNOWN -3 /* Command code unknown */
23 #define MAPLE_ERR_RETRY -4 /* Retry command */
24 #define MAPLE_ERR_FILE -5 /* File error? */
26 #define MAPLE_FUNC_CONTROLLER 0x01000000
27 #define MAPLE_FUNC_MEMORY 0x02000000
28 #define MAPLE_FUNC_LCD 0x04000000
29 #define MAPLE_FUNC_CLOCK 0x08000000
30 #define MAPLE_FUNC_MICROPHONE 0x10000000
31 #define MAPLE_FUNC_AR_GUN 0x20000000
32 #define MAPLE_FUNC_KEYBOARD 0x40000000
33 #define MAPLE_FUNC_LIGHT_GUN 0x80000000
34 #define MAPLE_FUNC_PURU_PURU 0x00010000
35 #define MAPLE_FUNC_MOUSE 0x00020000
37 #define MAPLE_DEVICE_TAG 0x4D41504C
38 #define MAPLE_DEVICE(x) ((maple_device_t)x)
40 typedef struct maple_device {
42 unsigned char ident[112];
43 unsigned char version[80];
44 int (*reset)(struct maple_device *dev);
45 int (*shutdown)(struct maple_device *dev);
46 int (*get_condition)(struct maple_device *dev,
47 int function, char *outbuf, int *buflen);
48 int (*set_condition)(struct maple_device *dev,
49 int function, char *inbuf, int buflen);
50 int (*read_block)(struct maple_device *dev,
51 int function, uint32_t block, char *outbuf, int *buflen);
52 int (*write_block)(struct maple_device *dev,
53 int function, uint32_t block, char *inbuf, int buflen);
54 void (*attach)(struct maple_device *dev);
55 void (*detach)(struct maple_device *dev);
58 maple_device_t controller_new(void);
60 void maple_handle_buffer( uint32_t buffer );
61 void maple_attach_device( maple_device_t dev, unsigned int port, unsigned int periph );
62 void maple_detach_device( unsigned int port, unsigned int periph );
64 #endif /* !dream_maple_H */
.