Ejemplo n.º 1
0
int receive_juno_response(u8 type, u8 *buffer, u8 *nbytes, u8 data)
{
        int ret = 0;

        switch ( type )
        {
        case SIMPLE:
                spi_rcv_packet(buffer, nbytes);
                ret = cres_simple((st_simple *)buffer, *nbytes);
                break;
        case REPORT_REGISTER_BIT:
                spi_rcv_packet(buffer, nbytes);
                ret = cres_report_register_bit(
                        (st_report_register_bit *)buffer, *nbytes, data);
                break;
        case REPORT_REGISTER:
                spi_rcv_packet(buffer, nbytes);
                ret = cres_report_register((st_report_register *)buffer, 
                                           *nbytes, data);
                break;
        case REPORT_BLOCK:
                spi_rcv_packet(buffer, nbytes);
                ret = cres_report_block((st_report_block *)buffer, *nbytes);
                break;        
        case ASYNC_REPORT:
                spi_rcv_packet(buffer, nbytes);

                if ( report_type(buffer) == POINTING_REPORT )
                        ret = cres_pointing_report((st_pointing_report *)buffer, 
                                                   *nbytes);
                else if ( report_type(buffer) == KEYBOARD_REPORT )
                        ret = cres_keyboard_report((st_keyboard_report *)buffer);
                else 
                        ret = -1;

                break;

        default:
                printk("Unrecognized command: %d\n", type);
        }

        return ret;
}
Ejemplo n.º 2
0
 report_type operator()( storage_type & carrier_param, model_type input_param )const
  {
   dynamic_cast< base_type & >( *carrier_param ) = input_param ;
   return  report_type( true );
  }