Add new CAPIs and unittest to get/set preference for onmesh 74/276674/1
authorhyunuk.tak <hyunuk.tak@samsung.com>
Tue, 14 Jun 2022 08:34:33 +0000 (17:34 +0900)
committerhyunuk.tak <hyunuk.tak@samsung.com>
Thu, 23 Jun 2022 02:22:49 +0000 (11:22 +0900)
Change-Id: I39d67a63b775f855b8f1ebef5197a356020cd7e4
Signed-off-by: hyunuk.tak <hyunuk.tak@samsung.com>
include/thread.h
src/thread-br.c
tests/unittest/thread-unittest-br.cpp

index 7b0bee3..b4a92b7 100644 (file)
@@ -675,6 +675,44 @@ int thread_onmesh_prefix_get_ipv6_prefix(thread_onmesh_prefix_info_h onmesh_pref
 
 /**
  * @ingroup CAPI_NETWORK_THREAD_BORDERROUTER_MODULE
+ * @brief Set preference to on-mesh prefix info
+ * @since_tizen 7.0
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #THREAD_ERROR_NONE  Successful
+ * @retval #THREAD_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #THREAD_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #THREAD_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre thread API must be initialized with thread_initialize().
+ *
+ * @see thread_onmesh_prefix_create()
+ * @see thread_onmesh_prefix_destroy()
+ */
+int thread_onmesh_prefix_set_preference(thread_onmesh_prefix_info_h onmesh_prefix,
+       uint8_t preference);
+
+/**
+ * @ingroup CAPI_NETWORK_THREAD_BORDERROUTER_MODULE
+ * @brief Get preference to on-mesh prefix info
+ * @since_tizen 7.0
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #THREAD_ERROR_NONE  Successful
+ * @retval #THREAD_ERROR_NOT_INITIALIZED  Not initialized
+ * @retval #THREAD_ERROR_OPERATION_FAILED  Operation failed
+ * @retval #THREAD_ERROR_NOT_SUPPORTED  Not supported
+ *
+ * @pre thread API must be initialized with thread_initialize().
+ *
+ * @see thread_onmesh_prefix_create()
+ * @see thread_onmesh_prefix_destroy()
+ */
+int thread_onmesh_prefix_get_preference(thread_onmesh_prefix_info_h onmesh_prefix,
+       uint8_t *preference);
+
+/**
+ * @ingroup CAPI_NETWORK_THREAD_BORDERROUTER_MODULE
  * @brief Add an on-mesh prefix to the network
  * @since_tizen 7.0
  *
index 94a0ce1..38d74ae 100644 (file)
@@ -534,6 +534,38 @@ int thread_onmesh_prefix_get_ipv6_prefix(thread_onmesh_prefix_info_h onmesh_pref
        return THREAD_ERROR_NONE;
 }
 
+int thread_onmesh_prefix_set_preference(thread_onmesh_prefix_info_h onmesh_prefix,
+       uint8_t preference)
+{
+       FUNC_ENTRY;
+       THREAD_CHECK_SUPPORTED_FEATURE(THREAD_FEATURE_COMMON);
+       THREAD_CHECK_INIT_STATUS();
+       THREAD_VALIDATE_INPUT_PARAMETER(onmesh_prefix);
+
+       thread_onmesh_prefix_info_s *onmesh_prefix_info =
+                                       (thread_onmesh_prefix_info_s *)onmesh_prefix;
+       onmesh_prefix_info->preference = preference;
+
+       FUNC_EXIT;
+       return THREAD_ERROR_NONE;
+}
+
+int thread_onmesh_prefix_get_preference(thread_onmesh_prefix_info_h onmesh_prefix,
+       uint8_t *preference)
+{
+       FUNC_ENTRY;
+       THREAD_CHECK_SUPPORTED_FEATURE(THREAD_FEATURE_COMMON);
+       THREAD_CHECK_INIT_STATUS();
+       THREAD_VALIDATE_INPUT_PARAMETER(onmesh_prefix);
+
+       thread_onmesh_prefix_info_s *onmesh_prefix_info =
+                                       (thread_onmesh_prefix_info_s *)onmesh_prefix;
+       *preference = onmesh_prefix_info->preference;
+
+       FUNC_EXIT;
+       return THREAD_ERROR_NONE;
+}
+
 int thread_br_add_onmesh_prefix(thread_instance_h instance,
        const uint8_t *ipv6_prefix, int ipv6_prefix_len, int8_t preference,
        bool preferred, bool slaac, bool dhcp, bool configure, bool default_route,
index dfb76c7..a37237e 100644 (file)
@@ -34,7 +34,7 @@ public:
        uint8_t ipv6Prefix[THREAD_IPV6_PREFIX_SIZE];
        uint8_t ipv6PrefixLen;
        uint16_t rloc16;
-       int8_t preference;
+       uint8_t preference;
        bool isStable;
        bool isDeviceNextHop;
 
@@ -378,6 +378,26 @@ TEST_F(ThreadBRTest, BRGetOnmeshIpv6PrefixErrorNone)
        g_free(ipv6Prefix);
 }
 
+TEST_F(ThreadBRTest, BRSetOnmeshPreferenceErrorNone)
+{
+       EXPECT_EQ(THREAD_ERROR_NONE, thread_enable(&instance));
+       EXPECT_EQ(THREAD_ERROR_NONE,
+               thread_onmesh_prefix_create(instance, &onmeshPrefix));
+       EXPECT_EQ(THREAD_ERROR_NONE,
+               thread_onmesh_prefix_set_preference(onmeshPrefix, preference));
+}
+
+TEST_F(ThreadBRTest, BRGetOnmeshPreferenceErrorNone)
+{
+       EXPECT_EQ(THREAD_ERROR_NONE, thread_enable(&instance));
+       EXPECT_EQ(THREAD_ERROR_NONE,
+               thread_onmesh_prefix_create(instance, &onmeshPrefix));
+       EXPECT_EQ(THREAD_ERROR_NONE,
+               thread_onmesh_prefix_set_preference(onmeshPrefix, preference));
+       EXPECT_EQ(THREAD_ERROR_NONE,
+               thread_onmesh_prefix_get_preference(onmeshPrefix, &preference));
+}
+
 TEST_F(ThreadBRTest, BRAddOnmeshPrefixNotEnabled)
 {
        EXPECT_EQ(THREAD_ERROR_NONE, thread_enable(&instance));