From 3c86da7c092c5c0c1a2a3fe16682c9fd3ca9b332 Mon Sep 17 00:00:00 2001 From: Michael Banther Date: Wed, 25 Sep 2019 16:13:46 +0100 Subject: [PATCH] Add demo HID code that simulates an interrupt roughly every 10 seconds. --- lib_xua/src/core/user/user_hid.xc | 35 ++++++++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 3 deletions(-) diff --git a/lib_xua/src/core/user/user_hid.xc b/lib_xua/src/core/user/user_hid.xc index 61466360..d27d6914 100644 --- a/lib_xua/src/core/user/user_hid.xc +++ b/lib_xua/src/core/user/user_hid.xc @@ -4,9 +4,38 @@ #include #include "user_hid.h" +#define HID_INTERRUPT_COUNT 1000000000 +#define HID_REPORT_DATA 0x01 + +static unsigned char initialised = 0; + +static unsigned int curr_time = 0; +static unsigned int last_time = 0; +static unsigned int tick_count = 0; + void UserReadHIDData( unsigned char hidData[ HID_DATA_SIZE ]) { - for( unsigned idx = 0; idx < HID_DATA_SIZE; ++idx ) { - hidData[ idx ] = 1; + timer tmr; + + if( !initialised ) { + tmr :> last_time; + initialised = 1; + } else { + tmr :> curr_time; + tick_count += ( last_time < curr_time ) ? curr_time - last_time : curr_time + ( UINT_MAX - last_time ); + + if( HID_INTERRUPT_COUNT <= tick_count ) { + for( unsigned idx = 0; idx < HID_DATA_SIZE; ++idx ) { + hidData[ idx ] = HID_REPORT_DATA; + } + + tick_count = 0; + } else { + for( unsigned idx = 0; idx < HID_DATA_SIZE; ++idx ) { + hidData[ idx ] = 0x00; + } + } + + last_time = curr_time; } -} \ No newline at end of file +}