aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicola Mazzucato <nicola.mazzucato@arm.com>2019-01-10 10:05:24 +0000
committerronald-cron-arm <39518861+ronald-cron-arm@users.noreply.github.com>2019-01-25 10:28:59 +0100
commitd5202716c2abd9c8b765d787f186a295773d1f6d (patch)
tree3ce251e3bb8c54a945b8e515b0425752e857fe08
parentdf93fe8c21d990313dd92e584befeb17ed805287 (diff)
fwk_module: Add fwk_module_get_sub_element_count
Change-Id: I82fabc55fbb5ea68c3bfe25552fa0bab44908652 Signed-off-by: Nicola Mazzucato <nicola.mazzucato@arm.com>
-rw-r--r--framework/include/fwk_module.h10
-rw-r--r--framework/src/fwk_module.c8
-rw-r--r--framework/test/test_fwk_module.c23
3 files changed, 41 insertions, 0 deletions
diff --git a/framework/include/fwk_module.h b/framework/include/fwk_module.h
index a8de0ba3..fc66b258 100644
--- a/framework/include/fwk_module.h
+++ b/framework/include/fwk_module.h
@@ -396,6 +396,16 @@ bool fwk_module_is_valid_notification_id(fwk_id_t id);
int fwk_module_get_element_count(fwk_id_t module_id);
/*!
+ * \brief Get the number of sub-elements within an element.
+ *
+ * \param element_id Identifier of the element.
+ *
+ * \retval FWK_E_PARAM The identifier of the element is invalid.
+ * \return Number of sub-elements.
+ */
+int fwk_module_get_sub_element_count(fwk_id_t element_id);
+
+/*!
* \brief Get the name of a module or element.
*
* \param id Identifier of the module or element.
diff --git a/framework/src/fwk_module.c b/framework/src/fwk_module.c
index aaad8efb..8f695842 100644
--- a/framework/src/fwk_module.c
+++ b/framework/src/fwk_module.c
@@ -587,6 +587,14 @@ int fwk_module_get_element_count(fwk_id_t id)
return FWK_E_PARAM;
}
+int fwk_module_get_sub_element_count(fwk_id_t element_id)
+{
+ if (fwk_module_is_valid_element_id(element_id))
+ return __fwk_module_get_element_ctx(element_id)->sub_element_count;
+ else
+ return FWK_E_PARAM;
+}
+
const char *fwk_module_get_name(fwk_id_t id)
{
if (fwk_module_is_valid_element_id(id))
diff --git a/framework/test/test_fwk_module.c b/framework/test/test_fwk_module.c
index e3d932af..8322ba51 100644
--- a/framework/test/test_fwk_module.c
+++ b/framework/test/test_fwk_module.c
@@ -906,6 +906,28 @@ static void test_fwk_module_get_element_count(void)
assert(element_count == FWK_E_PARAM);
}
+static void test_fwk_module_get_sub_element_count(void)
+{
+ int sub_element_count;
+
+ /* Invalid element ID */
+ sub_element_count =
+ fwk_module_get_sub_element_count(FWK_ID_ELEMENT(MODULE0_IDX, 0x05));
+ assert(sub_element_count == FWK_E_PARAM);
+
+ /* Valid module ID, but not an element */
+ sub_element_count = fwk_module_get_sub_element_count(MODULE0_ID);
+ assert(sub_element_count == FWK_E_PARAM);
+
+ /* Valid element ID with 0 sub-elements */
+ sub_element_count = fwk_module_get_sub_element_count(ELEM1_ID);
+ assert(sub_element_count == 0);
+
+ /* Valid element ID with 1 sub-element */
+ sub_element_count = fwk_module_get_sub_element_count(ELEM0_ID);
+ assert(sub_element_count == 1);
+}
+
static void test_fwk_module_get_name(void)
{
fwk_id_t id;
@@ -1117,6 +1139,7 @@ static const struct fwk_test_case_desc test_case_table[] = {
FWK_TEST_CASE(test_fwk_module_is_valid_event_id),
FWK_TEST_CASE(test_fwk_module_is_valid_notification_id),
FWK_TEST_CASE(test_fwk_module_get_element_count),
+ FWK_TEST_CASE(test_fwk_module_get_sub_element_count),
FWK_TEST_CASE(test_fwk_module_get_name),
FWK_TEST_CASE(test_fwk_module_get_data),
FWK_TEST_CASE(test_fwk_module_check_call_failed),