@ -662,17 +662,17 @@ static void send_mouse(report_mouse_t *report) {
# endif
# endif
}
}
/** \brief Send System
/** \brief Send Extra
*
*
* FIXME : Needs doc
* FIXME : Needs doc
*/
*/
static void send_system ( uint16_t data ) {
# ifdef EXTRAKEY_ENABLE
# ifdef EXTRAKEY_ENABLE
static void send_extra ( uint8_t report_id , uint16_t data ) {
uint8_t timeout = 255 ;
uint8_t timeout = 255 ;
if ( USB_DeviceState ! = DEVICE_STATE_Configured ) return ;
if ( USB_DeviceState ! = DEVICE_STATE_Configured ) return ;
report_extra_t r = { . report_id = REPORT_ID_SYSTEM , . usage = data - SYSTEM_POWER_DOWN + 1 } ;
report_extra_t r = { . report_id = report_id , . usage = data } ;
Endpoint_SelectEndpoint ( SHARED_IN_EPNUM ) ;
Endpoint_SelectEndpoint ( SHARED_IN_EPNUM ) ;
/* Check if write ready for a polling interval around 10ms */
/* Check if write ready for a polling interval around 10ms */
@ -681,6 +681,16 @@ static void send_system(uint16_t data) {
Endpoint_Write_Stream_LE ( & r , sizeof ( report_extra_t ) , NULL ) ;
Endpoint_Write_Stream_LE ( & r , sizeof ( report_extra_t ) , NULL ) ;
Endpoint_ClearIN ( ) ;
Endpoint_ClearIN ( ) ;
}
# endif
/** \brief Send System
*
* FIXME : Needs doc
*/
static void send_system ( uint16_t data ) {
# ifdef EXTRAKEY_ENABLE
send_extra ( REPORT_ID_SYSTEM , data - SYSTEM_POWER_DOWN + 1 ) ;
# endif
# endif
}
}
@ -690,7 +700,6 @@ static void send_system(uint16_t data) {
*/
*/
static void send_consumer ( uint16_t data ) {
static void send_consumer ( uint16_t data ) {
# ifdef EXTRAKEY_ENABLE
# ifdef EXTRAKEY_ENABLE
uint8_t timeout = 255 ;
uint8_t where = where_to_send ( ) ;
uint8_t where = where_to_send ( ) ;
# ifdef BLUETOOTH_ENABLE
# ifdef BLUETOOTH_ENABLE
@ -729,15 +738,7 @@ static void send_consumer(uint16_t data) {
return ;
return ;
}
}
report_extra_t r = { . report_id = REPORT_ID_CONSUMER , . usage = data } ;
send_extra ( REPORT_ID_CONSUMER , data ) ;
Endpoint_SelectEndpoint ( SHARED_IN_EPNUM ) ;
/* Check if write ready for a polling interval around 10ms */
while ( timeout - - & & ! Endpoint_IsReadWriteAllowed ( ) ) _delay_us ( 40 ) ;
if ( ! Endpoint_IsReadWriteAllowed ( ) ) return ;
Endpoint_Write_Stream_LE ( & r , sizeof ( report_extra_t ) , NULL ) ;
Endpoint_ClearIN ( ) ;
# endif
# endif
}
}