nkeynes@2: #include nkeynes@2: #include "dream.h" nkeynes@2: #include "maple.h" nkeynes@2: #include "maple/controller.h" nkeynes@2: nkeynes@2: void controller_attach( maple_device_t dev ); nkeynes@2: void controller_detach( maple_device_t dev ); nkeynes@2: int controller_get_cond( maple_device_t dev, int function, char *outbuf, nkeynes@2: int *outlen ); nkeynes@2: nkeynes@2: static struct maple_device base_controller = { nkeynes@2: MAPLE_DEVICE_TAG, CONTROLLER_IDENT, CONTROLLER_VERSION, NULL, NULL, nkeynes@2: controller_get_cond, NULL, NULL, NULL, nkeynes@2: controller_attach, controller_detach }; nkeynes@2: nkeynes@2: typedef struct controller_device { nkeynes@2: struct maple_device dev; nkeynes@2: uint32_t condition[2]; nkeynes@2: } *controller_device_t; nkeynes@2: nkeynes@2: nkeynes@2: nkeynes@2: maple_device_t controller_new( ) nkeynes@2: { nkeynes@2: controller_device_t dev = malloc( sizeof(struct controller_device) ); nkeynes@2: memcpy( dev, &base_controller, sizeof(base_controller) ); nkeynes@2: memset( dev->condition, 0, 8 ); nkeynes@2: dev->condition[0] = 0x0000FFFF; nkeynes@2: return MAPLE_DEVICE(dev); nkeynes@2: } nkeynes@2: nkeynes@2: nkeynes@2: void controller_attach( maple_device_t dev ) nkeynes@2: { nkeynes@2: nkeynes@2: } nkeynes@2: nkeynes@2: void controller_detach( maple_device_t dev ) nkeynes@2: { nkeynes@2: nkeynes@2: } nkeynes@2: nkeynes@2: nkeynes@2: int controller_get_cond( maple_device_t mdev, int function, char *outbuf, nkeynes@2: int *outlen ) nkeynes@2: { nkeynes@2: controller_device_t dev = (controller_device_t)mdev; nkeynes@2: if( function == MAPLE_FUNC_CONTROLLER ) { nkeynes@2: *outlen = 2; nkeynes@2: memcpy( outbuf, dev->condition, 8 ); nkeynes@2: return 0; nkeynes@2: } else { nkeynes@2: return MAPLE_ERR_FUNC_UNSUP; nkeynes@2: } nkeynes@2: } nkeynes@2: