From d3d9b5ba2384eb0e497bc8a7ac4bf8185c667fdb Mon Sep 17 00:00:00 2001 From: Ciaran Woodward Date: Fri, 17 Dec 2021 14:34:13 +0000 Subject: [PATCH] Add hidReportIdInUse command to determine whether report IDs are used --- lib_xua/src/hid/hid_report.c | 7 +++++++ lib_xua/src/hid/xua_hid_report.h | 13 +++++++++++++ .../src/test_multi_report/test_hid_multi_report.c | 5 +++++ tests/xua_unit_tests/src/test_simple/test_hid.c | 5 +++++ 4 files changed, 30 insertions(+) diff --git a/lib_xua/src/hid/hid_report.c b/lib_xua/src/hid/hid_report.c index fbbceb70..ab35b63b 100644 --- a/lib_xua/src/hid/hid_report.c +++ b/lib_xua/src/hid/hid_report.c @@ -242,6 +242,13 @@ unsigned hidGetReportIdLimit ( void ) { return retVal; } +unsigned hidIsReportIdInUse ( void ) { + if ( hidGetElementReportId( hidReports[ 0 ]->location ) ) { + return 1; + } + return 0; +} + #define HID_CONFIGURABLE_ELEMENT_COUNT ( sizeof hidConfigurableElements / sizeof ( USB_HID_Report_Element_t* )) unsigned hidGetReportItem( const unsigned id, diff --git a/lib_xua/src/hid/xua_hid_report.h b/lib_xua/src/hid/xua_hid_report.h index 16de92eb..21bc3aa9 100644 --- a/lib_xua/src/hid/xua_hid_report.h +++ b/lib_xua/src/hid/xua_hid_report.h @@ -181,6 +181,19 @@ size_t hidGetReportDescriptorLength( void ); */ unsigned hidGetReportIdLimit ( void ); +/** + * @brief Does the application use Report IDs? + * + * If the application is not using Report IDs, then the id value that is passed around + * everywhere can just be zero. Otherwise zero is an invalid ID that has a special meaning + * in some cases (read the documentation for each function). + * + * @return Boolean + * @retval 1 Report IDs are in use + * @retval 0 Report IDs are not in use + */ +unsigned hidIsReportIdInUse ( void ); + /** * @brief Get a HID Report descriptor item * diff --git a/tests/xua_unit_tests/src/test_multi_report/test_hid_multi_report.c b/tests/xua_unit_tests/src/test_multi_report/test_hid_multi_report.c index f5b86c34..1a4e28c3 100644 --- a/tests/xua_unit_tests/src/test_multi_report/test_hid_multi_report.c +++ b/tests/xua_unit_tests/src/test_multi_report/test_hid_multi_report.c @@ -58,6 +58,11 @@ void test_validate_report( void ) { TEST_ASSERT_EQUAL_UINT( HID_STATUS_GOOD, retVal ); } +void test_reportid_in_use( void ) { + unsigned reportIdInUse = hidIsReportIdInUse(); + TEST_ASSERT_EQUAL_UINT( 1, reportIdInUse ); +} + // Basic report descriptor tests void test_unprepared_hidGetReportDescriptor( void ) { diff --git a/tests/xua_unit_tests/src/test_simple/test_hid.c b/tests/xua_unit_tests/src/test_simple/test_hid.c index 8cc3dfc9..21da3f39 100644 --- a/tests/xua_unit_tests/src/test_simple/test_hid.c +++ b/tests/xua_unit_tests/src/test_simple/test_hid.c @@ -45,6 +45,11 @@ void test_validate_report( void ) { TEST_ASSERT_EQUAL_UINT( HID_STATUS_GOOD, retVal ); } +void test_reportid_in_use( void ) { + unsigned reportIdInUse = hidIsReportIdInUse(); + TEST_ASSERT_EQUAL_UINT( 0, reportIdInUse ); +} + // Basic report descriptor tests void test_unprepared_hidGetReportDescriptor( void ) {