Add a new CAPI and test for thread_br_get_rloc16 65/276665/1
authorhyunuk.tak <hyunuk.tak@samsung.com>
Mon, 30 May 2022 07:18:56 +0000 (16:18 +0900)
committerhyunuk.tak <hyunuk.tak@samsung.com>
Thu, 23 Jun 2022 02:21:19 +0000 (11:21 +0900)
Change-Id: Ib53d4190860b70564d6513df3da1f8dbdb6f7e07
Signed-off-by: hyunuk.tak <hyunuk.tak@samsung.com>
include/thread.h
src/thread-br.c
tests/unittest/thread-unittest-br.cpp

index f2c6a2c..6739477 100644 (file)
@@ -510,6 +510,24 @@ int thread_br_get_ipv6_prefix(thread_route_info_h route,
 
 /**
  * @ingroup CAPI_NETWORK_THREAD_BORDERROUTER_MODULE
+ * @brief Get rloc16 for route
+ * @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_external_route_foreach_cb()
+ */
+int thread_br_get_rloc16(thread_route_info_h route,
+       uint16_t *rloc16);
+
+/**
+ * @ingroup CAPI_NETWORK_THREAD_BORDERROUTER_MODULE
  * @brief Add an external border routing rule to the network.
  * @since_tizen 7.0
  *
index 08682f9..ed2a655 100644 (file)
@@ -295,6 +295,22 @@ int thread_br_get_ipv6_prefix(thread_route_info_h route,
        return THREAD_ERROR_NONE;
 }
 
+int thread_br_get_rloc16(thread_route_info_h route,
+       uint16_t *rloc16)
+{
+       FUNC_ENTRY;
+       THREAD_CHECK_SUPPORTED_FEATURE(THREAD_FEATURE_COMMON);
+       THREAD_CHECK_INIT_STATUS();
+       THREAD_VALIDATE_INPUT_PARAMETER(route);
+       THREAD_VALIDATE_INPUT_PARAMETER(rloc16);
+
+       thread_route_info_s *route_info = (thread_route_info_s*)route;
+       *rloc16 = route_info->rloc16;
+
+       FUNC_EXIT;
+       return THREAD_ERROR_NONE;
+}
+
 int thread_br_add_external_route(thread_instance_h instance,
        const uint8_t *ipv6_prefix, uint8_t ipv6_prefix_len,
        uint16_t rloc16, int8_t preference,
index 554bced..f05843a 100644 (file)
@@ -25,6 +25,7 @@ class ThreadBRTest : public ::testing::Test
 public:
        enum class RouteInfo {
                kIpv6Prefix,
+               kRloc16,
        };
 
        uint8_t ipv6Prefix[THREAD_IPV6_PREFIX_SIZE];
@@ -62,6 +63,12 @@ public:
                                        EXPECT_EQ(THREAD_ERROR_NONE, thread_br_get_ipv6_prefix(route_info, ipv6Prefix, &ipv6PrefixLen));
                                }
                                break;
+                       case RouteInfo::kRloc16:
+                               {
+                                       uint16_t rloc16;
+                                       EXPECT_EQ(THREAD_ERROR_NONE, thread_br_get_rloc16(route_info, &rloc16));
+                               }
+                               break;
                        default:
                                break;
                        }
@@ -191,6 +198,15 @@ TEST_F(ThreadBRTest, BRGetIpv6PrefixErrorNone)
                GUINT_TO_POINTER(static_cast<guint>(RouteInfo::kIpv6Prefix))));
 }
 
+TEST_F(ThreadBRTest, BRGetRloc16ErrorNone)
+{
+       EXPECT_EQ(THREAD_ERROR_NONE, thread_enable(&instance));
+       EXPECT_EQ(THREAD_ERROR_NONE, thread_br_enable(instance));
+       EXPECT_EQ(THREAD_ERROR_NONE,
+               thread_br_get_external_routes(instance, GetExternalRoutesCallback,
+               GUINT_TO_POINTER(static_cast<guint>(RouteInfo::kRloc16))));
+}
+
 TEST_F(ThreadBRTest, BRAddExternalRouteNotInitialized)
 {
        EXPECT_EQ(THREAD_ERROR_NONE, thread_deinitialize());