/* * Handle ioctl request. This is a generic internal * routine to handle both devices. */ static rtems_device_driver serial_mouse_control_internal( int port, void *arg ) { rtems_libio_ioctl_args_t *args = arg; switch( args->command ) { default: return rtems_termios_ioctl (arg); break; case MW_UID_REGISTER_DEVICE: printk( "SerialMouse: reg=%s\n", args->buffer ); register_mou_msg_queue( args->buffer, BSP_UART_PORT ); break; case MW_UID_UNREGISTER_DEVICE: unregister_mou_msg_queue( BSP_UART_PORT ); break; } args->ioctl_return = 0; return RTEMS_SUCCESSFUL; }
rtems_device_driver touchscreen_control (rtems_device_major_number major, rtems_device_minor_number minor, void *arg) { rtems_libio_ioctl_args_t *args = arg; switch (args->command) { case MW_UID_REGISTER_DEVICE: register_mou_msg_queue (args->buffer); break; case MW_UID_UNREGISTER_DEVICE: unregister_mou_msg_queue (); break; case MW_UID_SET_LEFTHANDED: touchscreen_sethand (0); break; case MW_UID_SET_RIGHTHANDED: touchscreen_sethand (1); break; } args->ioctl_return = 0; return RTEMS_SUCCESSFUL; }