Просмотр исходного кода

Merge pull request #4 from SummerGGift/optimize_example

【完善】lssdp 使用示例
朱天龙 (Armink) 6 лет назад
Родитель
Сommit
ff0f1adb98
2 измененных файлов с 22 добавлено и 27 удалено
  1. 14 18
      samples/lssdp_sample.c
  2. 8 9
      src/lssdp_service.c

+ 14 - 18
samples/lssdp_sample.c

@@ -19,24 +19,19 @@
 // lssdp service add example
 static int lssdp_add_example(void)
 {
-    struct lssdp_service service;
-    char service_name        [LSSDP_FIELD_LEN] = "service_name";                // local service name
-    char search_target       [LSSDP_FIELD_LEN] = "urn:rt-thread:service:ssdp";  // search name in network
-    char unique_service_name [LSSDP_FIELD_LEN] = "unique service name";         // unique service name
-    char sm_id               [LSSDP_FIELD_LEN] = "700000123";                   // device id
-    char device_type         [LSSDP_FIELD_LEN] = "RT-Thread device";            // device type
-    char suffix              [LSSDP_FIELD_LEN] = ":5555";                       // service port
-
-    memcpy(service.name,                      service_name,        LSSDP_FIELD_LEN);
-    memcpy(service.info.search_target,        search_target,       LSSDP_FIELD_LEN);
-    memcpy(service.info.unique_service_name,  unique_service_name, LSSDP_FIELD_LEN);
-    memcpy(service.info.sm_id,                sm_id,               LSSDP_FIELD_LEN);
-    memcpy(service.info.device_type,          device_type,         LSSDP_FIELD_LEN);
-    memcpy(service.info.suffix,               suffix,              LSSDP_FIELD_LEN);
+    struct lssdp_service service =
+    {
+        .name                        = "service name",                  // local service name
+        .info.search_target          = "urn:rt-thread:service:ssdp",    // search name in network
+        .info.unique_service_name    = "unique service name",           // unique service name
+        .info.sm_id                  = "700000123",                     // device id
+        .info.device_type            = "RT-Thread device",              // device type
+        .info.suffix                 = ":5555",                         // service port
+    };
 
     if (lssdp_service_add(&service) != 0)
     {
-        LOG_E("service %s add failed!", service_name );
+        LOG_E("service %s add failed!", service.name);
     }
 
     return RT_EOK;
@@ -46,9 +41,10 @@ MSH_CMD_EXPORT(lssdp_add_example, lssdp add service example);
 // lssdp service del example
 static int lssdp_del_example(void)
 {
-    struct lssdp_service service;
-    char service_name[LSSDP_FIELD_LEN] = "service_name";
-    memcpy(service.name,                      service_name,        LSSDP_FIELD_LEN);
+    struct lssdp_service service = {
+        .name = "service name",
+    };
+
     lssdp_service_del(&service);
 
     return RT_EOK;

+ 8 - 9
src/lssdp_service.c

@@ -129,11 +129,10 @@ int lssdp_service_del(struct lssdp_service *h)
     if (h == RT_NULL)
         return -RT_ERROR;
 
-    if(lssdp_service_unregister(h) == 0)
+    if(lssdp_service_unregister(h) != 0)
     {
-        return RT_EOK;
-    } else {
         LOG_E("lssdp_service_del service %s failed!", h->name);
+        return -RT_ERROR;
     }
 
     return RT_EOK;
@@ -157,13 +156,13 @@ int lssdp_service_send_notify(lssdp_ctx * lssdp)
     {
         LOG_D("name: %s ", ((struct lssdp_service *)head)->name);
 
-        if((rt_strcmp(lssdp->header.search_target, ((lssdp_service_t)head)->info.search_target) != 0))
+        if((rt_strcmp(lssdp->header.unique_service_name, ((lssdp_service_t)head)->info.unique_service_name) != 0))
         {
-            memcpy(lssdp->header.search_target,       ((lssdp_service_t)head)->info.search_target,       LSSDP_FIELD_LEN);
-            memcpy(lssdp->header.unique_service_name, ((lssdp_service_t)head)->info.unique_service_name, LSSDP_FIELD_LEN);
-            memcpy(lssdp->header.sm_id,               ((lssdp_service_t)head)->info.sm_id,               LSSDP_FIELD_LEN);
-            memcpy(lssdp->header.device_type,         ((lssdp_service_t)head)->info.device_type,         LSSDP_FIELD_LEN);
-            memcpy(lssdp->header.location.suffix,     ((lssdp_service_t)head)->info.suffix,              LSSDP_FIELD_LEN);
+            strcpy(lssdp->header.search_target,       ((lssdp_service_t)head)->info.search_target);
+            strcpy(lssdp->header.unique_service_name, ((lssdp_service_t)head)->info.unique_service_name);
+            strcpy(lssdp->header.sm_id,               ((lssdp_service_t)head)->info.sm_id);
+            strcpy(lssdp->header.device_type,         ((lssdp_service_t)head)->info.device_type);
+            strcpy(lssdp->header.location.suffix,     ((lssdp_service_t)head)->info.suffix);
         }
 
         lssdp_send_notify(lssdp);