upload tizen 2.0 source
authorKim Kibum <kb0929.kim@samsung.com>
Thu, 23 Aug 2012 02:34:07 +0000 (11:34 +0900)
committerKim Kibum <kb0929.kim@samsung.com>
Thu, 23 Aug 2012 02:34:07 +0000 (11:34 +0900)
44 files changed:
AUTHORS [changed mode: 0644->0755]
CMakeLists.txt [changed mode: 0644->0755]
LICENSE [changed mode: 0644->0755]
TC/build.sh [changed mode: 0644->0755]
TC/execute.sh [changed mode: 0644->0755]
TC/tet_code [changed mode: 0644->0755]
TC/tet_scen [changed mode: 0644->0755]
TC/tetbuild.cfg [changed mode: 0644->0755]
TC/tetclean.cfg [changed mode: 0644->0755]
TC/tetexec.cfg [changed mode: 0644->0755]
TC/unit/Makefile [changed mode: 0644->0755]
TC/unit/drmcontentsdef.h [changed mode: 0644->0755]
TC/unit/tc_gen.sh [changed mode: 0644->0755]
TC/unit/tslist [changed mode: 0644->0755]
TC/unit/utc_MODULE_API_func.c.in [changed mode: 0644->0755]
TC/unit/utc_drmclient_drm_get_constraint_info_func.c [changed mode: 0644->0755]
TC/unit/utc_drmclient_drm_get_content_info_func.c [new file with mode: 0755]
TC/unit/utc_drmclient_drm_get_contraint_info_func.c [deleted file]
TC/unit/utc_drmclient_drm_get_data_func.c [changed mode: 0644->0755]
TC/unit/utc_drmclient_drm_get_file_info_func.c [changed mode: 0644->0755]
TC/unit/utc_drmclient_drm_get_file_type_func.c [changed mode: 0644->0755]
TC/unit/utc_drmclient_drm_get_license_status_func.c [changed mode: 0644->0755]
TC/unit/utc_drmclient_drm_is_action_allowed_func.c [changed mode: 0644->0755]
TC/unit/utc_drmclient_drm_is_drm_file_func.c [changed mode: 0644->0755]
TC/unit/utc_drmclient_drm_process_request_func.c [changed mode: 0644->0755]
debian/README [deleted file]
debian/README.Debian [deleted file]
debian/changelog [deleted file]
debian/compat [deleted file]
debian/control [deleted file]
debian/drm-client-0.install.in [deleted file]
debian/drm-client-0.postinst [deleted file]
debian/drm-client-dev.install.in [deleted file]
debian/rules [deleted file]
drm-client.pc.in [changed mode: 0644->0755]
include/drm_client.h [changed mode: 0644->0755]
include/drm_client_ipc.h [changed mode: 0644->0755]
include/drm_client_log.h [changed mode: 0644->0755]
include/drm_client_types.h [changed mode: 0644->0755]
packaging/drm-client.spec [changed mode: 0644->0755]
service/drm_client.cpp [changed mode: 0644->0755]
service/drm_client_ipc.cpp [changed mode: 0644->0755]
test/Makefile [changed mode: 0644->0755]
test/test_drm_client.cpp [changed mode: 0644->0755]

diff --git a/AUTHORS b/AUTHORS
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
index e63ae5f..591fefe
@@ -25,7 +25,7 @@ SET(EXTRA_CXXFLAGS "${EXTRA_CXXFLAGS} ${extapi}")
 #SET(EXTRA_CXXFLAGS "${EXTRA_CXXFLAGS} ${DEBUG}")\r
 \r
 INCLUDE(FindPkgConfig)\r
-pkg_check_modules(exppkgs REQUIRED dlog capi-base-common)\r
+pkg_check_modules(exppkgs REQUIRED dlog capi-base-common glib-2.0)\r
 \r
 FOREACH(flag ${exppkgs_CFLAGS})\r
        SET(EXTRA_CXXFLAGS "${EXTRA_CXXFLAGS} ${flag}")\r
diff --git a/LICENSE b/LICENSE
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
diff --git a/TC/unit/utc_drmclient_drm_get_content_info_func.c b/TC/unit/utc_drmclient_drm_get_content_info_func.c
new file mode 100755 (executable)
index 0000000..0f01cd7
--- /dev/null
@@ -0,0 +1,281 @@
+/*\r
+ * drm-client TCs\r
+ *\r
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.\r
+ *\r
+ * Contact: Hakjoo Ko <hakjoo.ko@samsung.com>\r
+ *                     Mahendra Kumar Prajapat <mahendra.p@samsung.com>\r
+ *                     Harsha Shekar <h.shekar@samsung.com>\r
+ *\r
+ *\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ *\r
+ */\r
+\r
+/**\r
+ * @file               utc_drmclient_drm_get_content_info_func.c\r
+ * @brief       TETware unit testing functions for drm_get_content_info.\r
+ * @author      Mahendra Kumar Prajapat (mahendra.p@samsung.com)\r
+ * @version     0.1\r
+ * @history     0.1: Initial draft\r
+ */\r
+\r
+#include <tet_api.h>\r
+#include "drmcontentsdef.h"\r
+\r
+static void startup(void);\r
+static void cleanup(void);\r
+\r
+void (*tet_startup)(void) = startup;\r
+void (*tet_cleanup)(void) = cleanup;\r
+\r
+static void utc_drmclient_drm_get_content_info_func_01(void);\r
+static void utc_drmclient_drm_get_content_info_func_02(void);\r
+static void utc_drmclient_drm_get_content_info_func_03(void);\r
+static void utc_drmclient_drm_get_content_info_func_04(void);\r
+static void utc_drmclient_drm_get_content_info_func_05(void);\r
+static void utc_drmclient_drm_get_content_info_func_06(void);\r
+static void utc_drmclient_drm_get_content_info_func_07(void);\r
+\r
+enum {\r
+       POSITIVE_TC_IDX = 0x01,\r
+       NEGATIVE_TC_IDX,\r
+};\r
+\r
+struct tet_testlist tet_testlist[] = {\r
+       { utc_drmclient_drm_get_content_info_func_01, POSITIVE_TC_IDX },\r
+       { utc_drmclient_drm_get_content_info_func_02, POSITIVE_TC_IDX },\r
+       { utc_drmclient_drm_get_content_info_func_03, POSITIVE_TC_IDX },\r
+       { utc_drmclient_drm_get_content_info_func_04, POSITIVE_TC_IDX },\r
+       { utc_drmclient_drm_get_content_info_func_05, NEGATIVE_TC_IDX },\r
+       { utc_drmclient_drm_get_content_info_func_06, NEGATIVE_TC_IDX },\r
+       { utc_drmclient_drm_get_content_info_func_07, NEGATIVE_TC_IDX },\r
+       { NULL, 0 }\r
+};\r
+\r
+static void startup(void)\r
+{\r
+       tet_infoline("drm_get_content_info:Test started");\r
+}\r
+\r
+static void cleanup(void)\r
+{\r
+       tet_infoline("drm_get_content_info:Test completed");\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_get_content_info()\r
+ */\r
+static void utc_drmclient_drm_get_content_info_func_01(void)\r
+{\r
+       int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+       drm_content_info_s content_info;\r
+       char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+       snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_OMA_1);\r
+\r
+       ret = drm_get_content_info(file_path,&content_info);\r
+       if(DRM_RETURN_SUCCESS == ret){\r
+                       tet_infoline("drm_get_content_info PASS!!!");\r
+                       tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_1);\r
+                       tet_printf ("ret = 0x%x",ret);\r
+                       if('\0' != content_info.author[0]) tet_printf("author=%s",content_info.author);\r
+                       if('\0' != content_info.copyright[0]) tet_printf("copyright=%s",content_info.copyright);\r
+                       if('\0' != content_info.description[0]) tet_printf("description=%s",content_info.description);\r
+                       if('\0' != content_info.icon_uri[0]) tet_printf("icon_uri=%s",content_info.icon_uri);\r
+                       if('\0' != content_info.info_url[0]) tet_printf("info_url=%s",content_info.info_url);\r
+                       if('\0' != content_info.content_url[0]) tet_printf("content_url=%s",content_info.content_url);\r
+                       if('\0' != content_info.rights_url[0]) tet_printf("rights_url=%s",content_info.rights_url);\r
+                       if('\0' != content_info.title[0]) tet_printf("title=%s",content_info.title);\r
+                       if('\0' != content_info.mime_type[0]) tet_printf("mime_type=%s",content_info.mime_type);\r
+                       if('\0' != content_info.content_id[0]) tet_printf("content_id=%s",content_info.content_id);\r
+                       tet_result(TET_PASS);\r
+       }else{\r
+                       tet_infoline("drm_get_content_info FAIL!!!");\r
+                       tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_1);\r
+                       tet_printf ("ret = 0x%x",ret);\r
+                       tet_result(TET_FAIL);\r
+       }\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_get_content_info()\r
+ */\r
+static void utc_drmclient_drm_get_content_info_func_02(void)\r
+{\r
+       int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+       drm_content_info_s content_info;\r
+       char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+       snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_OMA_2);\r
+\r
+       ret = drm_get_content_info(file_path,&content_info);\r
+       if(DRM_RETURN_SUCCESS == ret){\r
+                       tet_infoline("drm_get_content_info PASS!!!");\r
+                       tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_2);\r
+                       tet_printf ("ret = 0x%x",ret);\r
+                       if('\0' != content_info.author[0]) tet_printf("author=%s",content_info.author);\r
+                       if('\0' != content_info.copyright[0]) tet_printf("copyright=%s",content_info.copyright);\r
+                       if('\0' != content_info.description[0]) tet_printf("description=%s",content_info.description);\r
+                       if('\0' != content_info.icon_uri[0]) tet_printf("icon_uri=%s",content_info.icon_uri);\r
+                       if('\0' != content_info.info_url[0]) tet_printf("info_url=%s",content_info.info_url);\r
+                       if('\0' != content_info.content_url[0]) tet_printf("content_url=%s",content_info.content_url);\r
+                       if('\0' != content_info.rights_url[0]) tet_printf("rights_url=%s",content_info.rights_url);\r
+                       if('\0' != content_info.title[0]) tet_printf("title=%s",content_info.title);\r
+                       if('\0' != content_info.mime_type[0]) tet_printf("mime_type=%s",content_info.mime_type);\r
+                       if('\0' != content_info.content_id[0]) tet_printf("content_id=%s",content_info.content_id);\r
+                       tet_result(TET_PASS);\r
+       }else{\r
+                       tet_infoline("drm_get_content_info FAIL!!!");\r
+                       tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_2);\r
+                       tet_printf ("ret = 0x%x",ret);\r
+                       tet_result(TET_FAIL);\r
+       }\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_get_content_info()\r
+ */\r
+static void utc_drmclient_drm_get_content_info_func_03(void)\r
+{\r
+       int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+       drm_content_info_s content_info;\r
+       char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+       snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_OMA_3);\r
+\r
+       ret = drm_get_content_info(file_path,&content_info);\r
+       if(DRM_RETURN_SUCCESS == ret){\r
+                       tet_infoline("drm_get_content_info PASS!!!");\r
+                       tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_3);\r
+                       tet_printf ("ret = 0x%x",ret);\r
+                       if('\0' != content_info.author[0]) tet_printf("author=%s",content_info.author);\r
+                       if('\0' != content_info.copyright[0]) tet_printf("copyright=%s",content_info.copyright);\r
+                       if('\0' != content_info.description[0]) tet_printf("description=%s",content_info.description);\r
+                       if('\0' != content_info.icon_uri[0]) tet_printf("icon_uri=%s",content_info.icon_uri);\r
+                       if('\0' != content_info.info_url[0]) tet_printf("info_url=%s",content_info.info_url);\r
+                       if('\0' != content_info.content_url[0]) tet_printf("content_url=%s",content_info.content_url);\r
+                       if('\0' != content_info.rights_url[0]) tet_printf("rights_url=%s",content_info.rights_url);\r
+                       if('\0' != content_info.title[0]) tet_printf("title=%s",content_info.title);\r
+                       if('\0' != content_info.mime_type[0]) tet_printf("mime_type=%s",content_info.mime_type);\r
+                       if('\0' != content_info.content_id[0]) tet_printf("content_id=%s",content_info.content_id);\r
+                       tet_result(TET_PASS);\r
+       }else{\r
+                       tet_infoline("drm_get_content_info FAIL!!!");\r
+                       tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_3);\r
+                       tet_printf ("ret = 0x%x",ret);\r
+                       tet_result(TET_FAIL);\r
+       }\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_get_content_info()\r
+ */\r
+static void utc_drmclient_drm_get_content_info_func_04(void)\r
+{\r
+       int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+       drm_content_info_s content_info;\r
+       char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+       snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_OMA_4);\r
+\r
+       ret = drm_get_content_info(file_path,&content_info);\r
+       if(DRM_RETURN_SUCCESS == ret){\r
+                       tet_infoline("drm_get_content_info PASS!!!");\r
+                       tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_4);\r
+                       tet_printf ("ret = 0x%x",ret);\r
+                       if('\0' != content_info.author[0]) tet_printf("author=%s",content_info.author);\r
+                       if('\0' != content_info.copyright[0]) tet_printf("copyright=%s",content_info.copyright);\r
+                       if('\0' != content_info.description[0]) tet_printf("description=%s",content_info.description);\r
+                       if('\0' != content_info.icon_uri[0]) tet_printf("icon_uri=%s",content_info.icon_uri);\r
+                       if('\0' != content_info.info_url[0]) tet_printf("info_url=%s",content_info.info_url);\r
+                       if('\0' != content_info.content_url[0]) tet_printf("content_url=%s",content_info.content_url);\r
+                       if('\0' != content_info.rights_url[0]) tet_printf("rights_url=%s",content_info.rights_url);\r
+                       if('\0' != content_info.title[0]) tet_printf("title=%s",content_info.title);\r
+                       if('\0' != content_info.mime_type[0]) tet_printf("mime_type=%s",content_info.mime_type);\r
+                       if('\0' != content_info.content_id[0]) tet_printf("content_id=%s",content_info.content_id);\r
+                       tet_result(TET_PASS);\r
+       }else{\r
+                       tet_infoline("drm_get_content_info FAIL!!!");\r
+                       tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_4);\r
+                       tet_printf ("ret = 0x%x",ret);\r
+                       tet_result(TET_FAIL);\r
+       }\r
+}\r
+\r
+/**\r
+ * @brief Negative test case of drm_get_content_info()\r
+ */\r
+\r
+static void utc_drmclient_drm_get_content_info_func_05(void)\r
+{\r
+       int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+       drm_content_info_s content_info;\r
+\r
+       ret = drm_get_content_info(FILE_PATH_INVALID_FILE_NULL,&content_info);\r
+       if(DRM_RETURN_SUCCESS != ret){\r
+                       tet_infoline("drm_get_content_info PASS!!!");\r
+                       tet_printf ("file_path checked is %s",FILE_PATH_INVALID_FILE_NULL);\r
+                       tet_printf ("ret = 0x%x",ret);\r
+                       tet_result(TET_PASS);\r
+       }else{\r
+                       tet_infoline("drm_get_content_info FAIL!!!");\r
+                       tet_printf ("file_path checked is %s",FILE_PATH_INVALID_FILE_NULL);\r
+                       tet_printf ("ret = 0x%x",ret);\r
+                       tet_result(TET_FAIL);\r
+       }\r
+}\r
+\r
+/**\r
+ * @brief Negative test case of drm_get_content_info()\r
+ */\r
+\r
+static void utc_drmclient_drm_get_content_info_func_06(void)\r
+{\r
+       int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+       drm_content_info_s content_info;\r
+       char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+\r
+       ret = drm_get_content_info(file_path,&content_info);\r
+       if(DRM_RETURN_SUCCESS != ret){\r
+                       tet_infoline("drm_get_content_info PASS!!!");\r
+                       tet_printf ("file_path checked is %s",FILE_PATH_INVALID_FILE_EMPTY);\r
+                       tet_printf ("ret = 0x%x",ret);\r
+                       tet_result(TET_PASS);\r
+       }else{\r
+                       tet_infoline("drm_get_content_info FAIL!!!");\r
+                       tet_printf ("file_path checked is %s",FILE_PATH_INVALID_FILE_EMPTY);\r
+                       tet_printf ("ret = 0x%x",ret);\r
+                       tet_result(TET_FAIL);\r
+       }\r
+}\r
+\r
+/**\r
+ * @brief Negative test case of drm_get_content_info()\r
+ */\r
+\r
+static void utc_drmclient_drm_get_content_info_func_07(void)\r
+{\r
+       int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+       char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+       snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_INVALID_FILE_DIVX_1);\r
+\r
+       ret = drm_get_content_info(file_path,INVALID_POINTER_OBJECT);\r
+       if(DRM_RETURN_SUCCESS != ret){\r
+                       tet_infoline("drm_get_content_info PASS!!!");\r
+                       tet_printf ("file_path checked is %s",FILE_PATH_INVALID_FILE_DIVX_1);\r
+                       tet_printf ("ret = 0x%x",ret);\r
+                       tet_result(TET_PASS);\r
+       }else{\r
+                       tet_infoline("drm_get_content_info FAIL!!!");\r
+                       tet_printf ("file_path checked is %s",FILE_PATH_INVALID_FILE_DIVX_1);\r
+                       tet_printf ("ret =%d",ret);\r
+                       tet_result(TET_FAIL);\r
+       }\r
+}\r
diff --git a/TC/unit/utc_drmclient_drm_get_contraint_info_func.c b/TC/unit/utc_drmclient_drm_get_contraint_info_func.c
deleted file mode 100644 (file)
index 8b3b52d..0000000
+++ /dev/null
@@ -1,1051 +0,0 @@
-/*\r
- * drm-client TCs\r
- *\r
- * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.\r
- *\r
- * Contact: Hakjoo Ko <hakjoo.ko@samsung.com>\r
- *                     Mahendra Kumar Prajapat <mahendra.p@samsung.com>\r
- *                     Harsha Shekar <h.shekar@samsung.com>\r
- *\r
- *\r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- * http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- *\r
- */\r
-\r
-/**\r
- * @file               utc_drmclient_drm_get_contraint_info_func.c\r
- * @brief       TETware unit testing functions for drm_get_contraint_info.\r
- * @author      Mahendra Kumar Prajapat (mahendra.p@samsung.com)\r
- * @version     0.1\r
- * @history     0.1: Initial draft\r
- */\r
-\r
-#include <tet_api.h>\r
-#include "drmcontentsdef.h"\r
-\r
-static void startup(void);\r
-static void cleanup(void);\r
-\r
-void (*tet_startup)(void) = startup;\r
-void (*tet_cleanup)(void) = cleanup;\r
-\r
-static void utc_drmclient_drm_get_contraint_info_func_01(void);\r
-static void utc_drmclient_drm_get_contraint_info_func_02(void);\r
-static void utc_drmclient_drm_get_contraint_info_func_03(void);\r
-static void utc_drmclient_drm_get_contraint_info_func_04(void);\r
-/* Disabled below test-cases due to network & other dependencies */\r
-#if 0\r
-static void utc_drmclient_drm_get_contraint_info_func_05(void);\r
-static void utc_drmclient_drm_get_contraint_info_func_06(void);\r
-static void utc_drmclient_drm_get_contraint_info_func_07(void);\r
-static void utc_drmclient_drm_get_contraint_info_func_08(void);\r
-#endif\r
-static void utc_drmclient_drm_get_contraint_info_func_09(void);\r
-static void utc_drmclient_drm_get_contraint_info_func_10(void);\r
-static void utc_drmclient_drm_get_contraint_info_func_11(void);\r
-static void utc_drmclient_drm_get_contraint_info_func_12(void);\r
-\r
-enum {\r
-       POSITIVE_TC_IDX = 0x01,\r
-       NEGATIVE_TC_IDX,\r
-};\r
-\r
-struct tet_testlist tet_testlist[] = {\r
-       { utc_drmclient_drm_get_contraint_info_func_01, POSITIVE_TC_IDX },\r
-       { utc_drmclient_drm_get_contraint_info_func_02, POSITIVE_TC_IDX },\r
-       { utc_drmclient_drm_get_contraint_info_func_03, POSITIVE_TC_IDX },\r
-       { utc_drmclient_drm_get_contraint_info_func_04, POSITIVE_TC_IDX },\r
-       /* Disabled below test-cases due to network & other dependencies */\r
-#if 0\r
-       { utc_drmclient_drm_get_contraint_info_func_05, POSITIVE_TC_IDX },\r
-       { utc_drmclient_drm_get_contraint_info_func_06, POSITIVE_TC_IDX },\r
-       { utc_drmclient_drm_get_contraint_info_func_07, POSITIVE_TC_IDX },\r
-       { utc_drmclient_drm_get_contraint_info_func_08, POSITIVE_TC_IDX },\r
-#endif\r
-       { utc_drmclient_drm_get_contraint_info_func_09, NEGATIVE_TC_IDX },\r
-       { utc_drmclient_drm_get_contraint_info_func_10, NEGATIVE_TC_IDX },\r
-       { utc_drmclient_drm_get_contraint_info_func_11, NEGATIVE_TC_IDX },\r
-       { utc_drmclient_drm_get_contraint_info_func_12, NEGATIVE_TC_IDX },\r
-       { NULL, 0 }\r
-};\r
-\r
-static void startup(void)\r
-{\r
-       tet_infoline("drm_get_contraint_info:Test started");\r
-       tet_infoline("OMA DRM Content should be registered");\r
-       tet_infoline("RO must be installed to get valid constraint information");\r
-}\r
-\r
-static void cleanup(void)\r
-{\r
-       tet_infoline("drm_get_contraint_info:Test completed");\r
-}\r
-\r
-/**\r
- * @brief Positive test case of drm_get_contraint_info()\r
- */\r
-static void utc_drmclient_drm_get_contraint_info_func_01(void)\r
-{\r
-       int ret = DRM_RETURN_INTERNAL_ERROR ;\r
-       drm_contraint_info_s contraint_info;\r
-       drm_permission_type_e perm_type = DRM_PERMISSION_TYPE_PLAY;\r
-       char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
-       snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_OMA_1);\r
-\r
-       ret = drm_get_contraint_info(file_path,perm_type,&contraint_info);\r
-       if(DRM_RETURN_SUCCESS == ret ){\r
-                       tet_infoline("drm_get_contraint_info PASS!!!");\r
-                       tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_1);\r
-                       tet_printf ("ret = 0x%x",ret);\r
-                       if(contraint_info.const_type.is_unlimited){\r
-                               tet_printf("Unlimited:for permission=%d",perm_type);\r
-                       }\r
-\r
-                       if(contraint_info.const_type.is_accumulated){\r
-                               tet_printf("Accumulated Constraint is present");\r
-                               tet_printf("accumulated_original_seconds=%d",\r
-                                               contraint_info.accumulated_original_seconds);\r
-                               tet_printf("accumulated_remaining_seconds=%d",\r
-                                               contraint_info.accumulated_remaining_seconds);\r
-                       }\r
-\r
-                       if(contraint_info.const_type.is_count){\r
-                               tet_printf("Count Constraint is present");\r
-                               tet_printf("original_count=%d",\r
-                                               contraint_info.original_count);\r
-                               tet_printf("remaining_count=%d",\r
-                                               contraint_info.remaining_count);\r
-                       }\r
-\r
-                       if(contraint_info.const_type.is_datetime){\r
-                               tet_printf("DATETIME Constraint is present");\r
-                               tet_printf("start_time:"\r
-                                               "Year=%d,Month=%d,Day=%d,Hour=%d, minute=%d, Second=%d",\r
-                                       contraint_info.start_time.tm_year,\r
-                                       contraint_info.start_time.tm_mon,\r
-                                       contraint_info.start_time.tm_mday,\r
-                                       contraint_info.start_time.tm_hour,\r
-                                       contraint_info.start_time.tm_min,\r
-                                       contraint_info.start_time.tm_sec);\r
-\r
-                               tet_printf("end_time:"\r
-                                               "Year=%d,Month=%d,Day=%d,Hour=%d, minute=%d, Second=%d",\r
-                                       contraint_info.end_time.tm_year,\r
-                                       contraint_info.end_time.tm_mon,\r
-                                       contraint_info.end_time.tm_mday,\r
-                                       contraint_info.end_time.tm_hour,\r
-                                       contraint_info.end_time.tm_min,\r
-                                       contraint_info.end_time.tm_sec);\r
-                       }\r
-\r
-                       if(contraint_info.const_type.is_individual){\r
-                               tet_printf("INDIVIDUAL Constraint is present");\r
-                               tet_printf("individual_identity_type=%d "\r
-                                               "individual_id=%s",\r
-                                               contraint_info.individual_identity_type,\r
-                                               contraint_info.individual_id);\r
-\r
-                       }\r
-\r
-                       if(contraint_info.const_type.is_interval){\r
-                               tet_printf("INTERVAL Constraint is present");\r
-                               tet_printf("interval_time:"\r
-                                               "Year=%d,Month=%d,Day=%d,Hour=%d, minute=%d, Second=%d",\r
-                                       contraint_info.interval_time.tm_year,\r
-                                       contraint_info.interval_time.tm_mon,\r
-                                       contraint_info.interval_time.tm_mday,\r
-                                       contraint_info.interval_time.tm_hour,\r
-                                       contraint_info.interval_time.tm_min,\r
-                                       contraint_info.interval_time.tm_sec);\r
-                       }\r
-\r
-                       if(contraint_info.const_type.is_system){\r
-                               tet_printf("SYSTEM Constraint is present");\r
-                               tet_printf("system_identity_type=%d "\r
-                                               "system_id=%s",\r
-                                               contraint_info.system_identity_type,\r
-                                               contraint_info.system_id);\r
-                       }\r
-\r
-                       if(contraint_info.const_type.is_timedcount){\r
-                               tet_printf("TIMED-COUNT Constraint is present");\r
-                               tet_printf("timed_original_count=%d",\r
-                                               contraint_info.timed_original_count);\r
-\r
-                               tet_printf("timed_remaining_count=%d",\r
-                                               contraint_info.timed_remaining_count);\r
-\r
-                               tet_printf("timed_count_timer=%d",\r
-                                                                               contraint_info.timed_count_timer);\r
-                       }\r
-\r
-                       tet_result(TET_PASS);\r
-       }else{\r
-                       tet_infoline("drm_get_contraint_info");\r
-                       tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_1);\r
-                       tet_printf ("ret = 0x%x",ret);\r
-                       tet_result(TET_FAIL);\r
-       }\r
-}\r
-\r
-/**\r
- * @brief Positive test case of drm_get_contraint_info()\r
- */\r
-static void utc_drmclient_drm_get_contraint_info_func_02(void)\r
-{\r
-       int ret = DRM_RETURN_INTERNAL_ERROR ;\r
-       drm_contraint_info_s contraint_info;\r
-       drm_permission_type_e perm_type = DRM_PERMISSION_TYPE_DISPLAY;\r
-       char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
-       snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_OMA_5);\r
-\r
-       ret = drm_get_contraint_info(file_path,perm_type,&contraint_info);\r
-       if(DRM_RETURN_SUCCESS == ret ){\r
-                       tet_infoline("drm_get_contraint_info PASS!!!");\r
-                       tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_5);\r
-                       tet_printf ("ret = 0x%x",ret);\r
-                       if(contraint_info.const_type.is_unlimited){\r
-                               tet_printf("Unlimited:for permission=%d",perm_type);\r
-                       }\r
-\r
-                       if(contraint_info.const_type.is_accumulated){\r
-                               tet_printf("Accumulated Constraint is present");\r
-                               tet_printf("accumulated_original_seconds=%d",\r
-                                               contraint_info.accumulated_original_seconds);\r
-                               tet_printf("accumulated_remaining_seconds=%d",\r
-                                               contraint_info.accumulated_remaining_seconds);\r
-                       }\r
-\r
-                       if(contraint_info.const_type.is_count){\r
-                               tet_printf("Count Constraint is present");\r
-                               tet_printf("original_count=%d",\r
-                                               contraint_info.original_count);\r
-                               tet_printf("remaining_count=%d",\r
-                                               contraint_info.remaining_count);\r
-                       }\r
-\r
-                       if(contraint_info.const_type.is_datetime){\r
-                               tet_printf("DATETIME Constraint is present");\r
-                               tet_printf("start_time:"\r
-                                               "Year=%d,Month=%d,Day=%d,Hour=%d, minute=%d, Second=%d",\r
-                                       contraint_info.start_time.tm_year,\r
-                                       contraint_info.start_time.tm_mon,\r
-                                       contraint_info.start_time.tm_mday,\r
-                                       contraint_info.start_time.tm_hour,\r
-                                       contraint_info.start_time.tm_min,\r
-                                       contraint_info.start_time.tm_sec);\r
-\r
-                               tet_printf("end_time:"\r
-                                               "Year=%d,Month=%d,Day=%d,Hour=%d, minute=%d, Second=%d",\r
-                                       contraint_info.end_time.tm_year,\r
-                                       contraint_info.end_time.tm_mon,\r
-                                       contraint_info.end_time.tm_mday,\r
-                                       contraint_info.end_time.tm_hour,\r
-                                       contraint_info.end_time.tm_min,\r
-                                       contraint_info.end_time.tm_sec);\r
-                       }\r
-\r
-                       if(contraint_info.const_type.is_individual){\r
-                               tet_printf("INDIVIDUAL Constraint is present");\r
-                               tet_printf("individual_identity_type=%d "\r
-                                               "individual_id=%s",\r
-                                               contraint_info.individual_identity_type,\r
-                                               contraint_info.individual_id);\r
-\r
-                       }\r
-\r
-                       if(contraint_info.const_type.is_interval){\r
-                               tet_printf("INTERVAL Constraint is present");\r
-                               tet_printf("interval_time:"\r
-                                               "Year=%d,Month=%d,Day=%d,Hour=%d, minute=%d, Second=%d",\r
-                                       contraint_info.interval_time.tm_year,\r
-                                       contraint_info.interval_time.tm_mon,\r
-                                       contraint_info.interval_time.tm_mday,\r
-                                       contraint_info.interval_time.tm_hour,\r
-                                       contraint_info.interval_time.tm_min,\r
-                                       contraint_info.interval_time.tm_sec);\r
-                       }\r
-\r
-                       if(contraint_info.const_type.is_system){\r
-                               tet_printf("SYSTEM Constraint is present");\r
-                               tet_printf("system_identity_type=%d "\r
-                                               "system_id=%s",\r
-                                               contraint_info.system_identity_type,\r
-                                               contraint_info.system_id);\r
-                       }\r
-\r
-                       if(contraint_info.const_type.is_timedcount){\r
-                               tet_printf("TIMED-COUNT Constraint is present");\r
-                               tet_printf("timed_original_count=%d",\r
-                                               contraint_info.timed_original_count);\r
-\r
-                               tet_printf("timed_remaining_count=%d",\r
-                                               contraint_info.timed_remaining_count);\r
-\r
-                               tet_printf("timed_count_timer=%d",\r
-                                                                               contraint_info.timed_count_timer);\r
-                       }\r
-\r
-                       tet_result(TET_PASS);\r
-       }else{\r
-                       tet_infoline("drm_get_contraint_info");\r
-                       tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_5);\r
-                       tet_printf ("ret = 0x%x",ret);\r
-                       tet_result(TET_FAIL);\r
-       }\r
-}\r
-\r
-/**\r
- * @brief Positive test case of drm_get_contraint_info()\r
- */\r
-static void utc_drmclient_drm_get_contraint_info_func_03(void)\r
-{\r
-       int ret = DRM_RETURN_INTERNAL_ERROR ;\r
-       drm_contraint_info_s contraint_info;\r
-       drm_permission_type_e perm_type = DRM_PERMISSION_TYPE_EXECUTE;\r
-       char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
-       snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_OMA_6);\r
-\r
-       ret = drm_get_contraint_info(file_path,perm_type,&contraint_info);\r
-       if(DRM_RETURN_SUCCESS == ret ){\r
-                       tet_infoline("drm_get_contraint_info PASS!!!");\r
-                       tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_6);\r
-                       tet_printf ("ret = 0x%x",ret);\r
-                       if(contraint_info.const_type.is_unlimited){\r
-                               tet_printf("Unlimited:for permission=%d",perm_type);\r
-                       }\r
-\r
-                       if(contraint_info.const_type.is_accumulated){\r
-                               tet_printf("Accumulated Constraint is present");\r
-                               tet_printf("accumulated_original_seconds=%d",\r
-                                               contraint_info.accumulated_original_seconds);\r
-                               tet_printf("accumulated_remaining_seconds=%d",\r
-                                               contraint_info.accumulated_remaining_seconds);\r
-                       }\r
-\r
-                       if(contraint_info.const_type.is_count){\r
-                               tet_printf("Count Constraint is present");\r
-                               tet_printf("original_count=%d",\r
-                                               contraint_info.original_count);\r
-                               tet_printf("remaining_count=%d",\r
-                                               contraint_info.remaining_count);\r
-                       }\r
-\r
-                       if(contraint_info.const_type.is_datetime){\r
-                               tet_printf("DATETIME Constraint is present");\r
-                               tet_printf("start_time:"\r
-                                               "Year=%d,Month=%d,Day=%d,Hour=%d, minute=%d, Second=%d",\r
-                                       contraint_info.start_time.tm_year,\r
-                                       contraint_info.start_time.tm_mon,\r
-                                       contraint_info.start_time.tm_mday,\r
-                                       contraint_info.start_time.tm_hour,\r
-                                       contraint_info.start_time.tm_min,\r
-                                       contraint_info.start_time.tm_sec);\r
-\r
-                               tet_printf("end_time:"\r
-                                               "Year=%d,Month=%d,Day=%d,Hour=%d, minute=%d, Second=%d",\r
-                                       contraint_info.end_time.tm_year,\r
-                                       contraint_info.end_time.tm_mon,\r
-                                       contraint_info.end_time.tm_mday,\r
-                                       contraint_info.end_time.tm_hour,\r
-                                       contraint_info.end_time.tm_min,\r
-                                       contraint_info.end_time.tm_sec);\r
-                       }\r
-\r
-                       if(contraint_info.const_type.is_individual){\r
-                               tet_printf("INDIVIDUAL Constraint is present");\r
-                               tet_printf("individual_identity_type=%d "\r
-                                               "individual_id=%s",\r
-                                               contraint_info.individual_identity_type,\r
-                                               contraint_info.individual_id);\r
-\r
-                       }\r
-\r
-                       if(contraint_info.const_type.is_interval){\r
-                               tet_printf("INTERVAL Constraint is present");\r
-                               tet_printf("interval_time:"\r
-                                               "Year=%d,Month=%d,Day=%d,Hour=%d, minute=%d, Second=%d",\r
-                                       contraint_info.interval_time.tm_year,\r
-                                       contraint_info.interval_time.tm_mon,\r
-                                       contraint_info.interval_time.tm_mday,\r
-                                       contraint_info.interval_time.tm_hour,\r
-                                       contraint_info.interval_time.tm_min,\r
-                                       contraint_info.interval_time.tm_sec);\r
-                       }\r
-\r
-                       if(contraint_info.const_type.is_system){\r
-                               tet_printf("SYSTEM Constraint is present");\r
-                               tet_printf("system_identity_type=%d "\r
-                                               "system_id=%s",\r
-                                               contraint_info.system_identity_type,\r
-                                               contraint_info.system_id);\r
-                       }\r
-\r
-                       if(contraint_info.const_type.is_timedcount){\r
-                               tet_printf("TIMED-COUNT Constraint is present");\r
-                               tet_printf("timed_original_count=%d",\r
-                                               contraint_info.timed_original_count);\r
-\r
-                               tet_printf("timed_remaining_count=%d",\r
-                                               contraint_info.timed_remaining_count);\r
-\r
-                               tet_printf("timed_count_timer=%d",\r
-                                                                               contraint_info.timed_count_timer);\r
-                       }\r
-\r
-                       tet_result(TET_PASS);\r
-       }else{\r
-                       tet_infoline("drm_get_contraint_info");\r
-                       tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_6);\r
-                       tet_printf ("ret = 0x%x",ret);\r
-                       tet_result(TET_FAIL);\r
-       }\r
-}\r
-\r
-/**\r
- * @brief Positive test case of drm_get_contraint_info()\r
- */\r
-static void utc_drmclient_drm_get_contraint_info_func_04(void)\r
-{\r
-       int ret = DRM_RETURN_INTERNAL_ERROR ;\r
-       drm_contraint_info_s contraint_info;\r
-       drm_permission_type_e perm_type = DRM_PERMISSION_TYPE_PLAY;\r
-       char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
-       snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_OMA_8);\r
-\r
-       ret = drm_get_contraint_info(file_path,perm_type,&contraint_info);\r
-       if(DRM_RETURN_SUCCESS == ret ){\r
-                       tet_infoline("drm_get_contraint_info PASS!!!");\r
-                       tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_8);\r
-                       tet_printf ("ret = 0x%x",ret);\r
-                       if(contraint_info.const_type.is_unlimited){\r
-                               tet_printf("Unlimited:for permission=%d",perm_type);\r
-                       }\r
-\r
-                       if(contraint_info.const_type.is_accumulated){\r
-                               tet_printf("Accumulated Constraint is present");\r
-                               tet_printf("accumulated_original_seconds=%d",\r
-                                               contraint_info.accumulated_original_seconds);\r
-                               tet_printf("accumulated_remaining_seconds=%d",\r
-                                               contraint_info.accumulated_remaining_seconds);\r
-                       }\r
-\r
-                       if(contraint_info.const_type.is_count){\r
-                               tet_printf("Count Constraint is present");\r
-                               tet_printf("original_count=%d",\r
-                                               contraint_info.original_count);\r
-                               tet_printf("remaining_count=%d",\r
-                                               contraint_info.remaining_count);\r
-                       }\r
-\r
-                       if(contraint_info.const_type.is_datetime){\r
-                               tet_printf("DATETIME Constraint is present");\r
-                               tet_printf("start_time:"\r
-                                               "Year=%d,Month=%d,Day=%d,Hour=%d, minute=%d, Second=%d",\r
-                                       contraint_info.start_time.tm_year,\r
-                                       contraint_info.start_time.tm_mon,\r
-                                       contraint_info.start_time.tm_mday,\r
-                                       contraint_info.start_time.tm_hour,\r
-                                       contraint_info.start_time.tm_min,\r
-                                       contraint_info.start_time.tm_sec);\r
-\r
-                               tet_printf("end_time:"\r
-                                               "Year=%d,Month=%d,Day=%d,Hour=%d, minute=%d, Second=%d",\r
-                                       contraint_info.end_time.tm_year,\r
-                                       contraint_info.end_time.tm_mon,\r
-                                       contraint_info.end_time.tm_mday,\r
-                                       contraint_info.end_time.tm_hour,\r
-                                       contraint_info.end_time.tm_min,\r
-                                       contraint_info.end_time.tm_sec);\r
-                       }\r
-\r
-                       if(contraint_info.const_type.is_individual){\r
-                               tet_printf("INDIVIDUAL Constraint is present");\r
-                               tet_printf("individual_identity_type=%d "\r
-                                               "individual_id=%s",\r
-                                               contraint_info.individual_identity_type,\r
-                                               contraint_info.individual_id);\r
-\r
-                       }\r
-\r
-                       if(contraint_info.const_type.is_interval){\r
-                               tet_printf("INTERVAL Constraint is present");\r
-                               tet_printf("interval_time:"\r
-                                               "Year=%d,Month=%d,Day=%d,Hour=%d, minute=%d, Second=%d",\r
-                                       contraint_info.interval_time.tm_year,\r
-                                       contraint_info.interval_time.tm_mon,\r
-                                       contraint_info.interval_time.tm_mday,\r
-                                       contraint_info.interval_time.tm_hour,\r
-                                       contraint_info.interval_time.tm_min,\r
-                                       contraint_info.interval_time.tm_sec);\r
-                       }\r
-\r
-                       if(contraint_info.const_type.is_system){\r
-                               tet_printf("SYSTEM Constraint is present");\r
-                               tet_printf("system_identity_type=%d "\r
-                                               "system_id=%s",\r
-                                               contraint_info.system_identity_type,\r
-                                               contraint_info.system_id);\r
-                       }\r
-\r
-                       if(contraint_info.const_type.is_timedcount){\r
-                               tet_printf("TIMED-COUNT Constraint is present");\r
-                               tet_printf("timed_original_count=%d",\r
-                                               contraint_info.timed_original_count);\r
-\r
-                               tet_printf("timed_remaining_count=%d",\r
-                                               contraint_info.timed_remaining_count);\r
-\r
-                               tet_printf("timed_count_timer=%d",\r
-                                                                               contraint_info.timed_count_timer);\r
-                       }\r
-\r
-                       tet_result(TET_PASS);\r
-       }else{\r
-                       tet_infoline("drm_get_contraint_info");\r
-                       tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_8);\r
-                       tet_printf ("ret = 0x%x",ret);\r
-                       tet_result(TET_FAIL);\r
-       }\r
-}\r
-\r
-/* Disabled below test-cases due to network & other dependencies */\r
-#if 0\r
-/**\r
- * @brief Positive test case of drm_get_contraint_info()\r
- */\r
-static void utc_drmclient_drm_get_contraint_info_func_05(void)\r
-{\r
-       int ret = DRM_RETURN_INTERNAL_ERROR ;\r
-       drm_contraint_info_s contraint_info;\r
-       drm_permission_type_e perm_type = DRM_PERMISSION_TYPE_PLAY;\r
-       char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
-       snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_PR_1);\r
-\r
-       ret = drm_get_contraint_info(file_path,perm_type,&contraint_info);\r
-       if(DRM_RETURN_SUCCESS == ret ){\r
-                       tet_infoline("drm_get_contraint_info PASS!!!");\r
-                       tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_PR_1);\r
-                       tet_printf ("ret = 0x%x",ret);\r
-                       if(contraint_info.const_type.is_unlimited){\r
-                               tet_printf("Unlimited:for permission=%d",perm_type);\r
-                       }\r
-\r
-                       if(contraint_info.const_type.is_accumulated){\r
-                               tet_printf("Accumulated Constraint is present");\r
-                               tet_printf("accumulated_original_seconds=%d",\r
-                                               contraint_info.accumulated_original_seconds);\r
-                               tet_printf("accumulated_remaining_seconds=%d",\r
-                                               contraint_info.accumulated_remaining_seconds);\r
-                       }\r
-\r
-                       if(contraint_info.const_type.is_count){\r
-                               tet_printf("Count Constraint is present");\r
-                               tet_printf("original_count=%d",\r
-                                               contraint_info.original_count);\r
-                               tet_printf("remaining_count=%d",\r
-                                               contraint_info.remaining_count);\r
-                       }\r
-\r
-                       if(contraint_info.const_type.is_datetime){\r
-                               tet_printf("DATETIME Constraint is present");\r
-                               tet_printf("start_time:"\r
-                                               "Year=%d,Month=%d,Day=%d,Hour=%d, minute=%d, Second=%d",\r
-                                       contraint_info.start_time.tm_year,\r
-                                       contraint_info.start_time.tm_mon,\r
-                                       contraint_info.start_time.tm_mday,\r
-                                       contraint_info.start_time.tm_hour,\r
-                                       contraint_info.start_time.tm_min,\r
-                                       contraint_info.start_time.tm_sec);\r
-\r
-                               tet_printf("end_time:"\r
-                                               "Year=%d,Month=%d,Day=%d,Hour=%d, minute=%d, Second=%d",\r
-                                       contraint_info.end_time.tm_year,\r
-                                       contraint_info.end_time.tm_mon,\r
-                                       contraint_info.end_time.tm_mday,\r
-                                       contraint_info.end_time.tm_hour,\r
-                                       contraint_info.end_time.tm_min,\r
-                                       contraint_info.end_time.tm_sec);\r
-                       }\r
-\r
-                       if(contraint_info.const_type.is_individual){\r
-                               tet_printf("INDIVIDUAL Constraint is present");\r
-                               tet_printf("individual_identity_type=%d "\r
-                                               "individual_id=%s",\r
-                                               contraint_info.individual_identity_type,\r
-                                               contraint_info.individual_id);\r
-\r
-                       }\r
-\r
-                       if(contraint_info.const_type.is_interval){\r
-                               tet_printf("INTERVAL Constraint is present");\r
-                               tet_printf("interval_time:"\r
-                                               "Year=%d,Month=%d,Day=%d,Hour=%d, minute=%d, Second=%d",\r
-                                       contraint_info.interval_time.tm_year,\r
-                                       contraint_info.interval_time.tm_mon,\r
-                                       contraint_info.interval_time.tm_mday,\r
-                                       contraint_info.interval_time.tm_hour,\r
-                                       contraint_info.interval_time.tm_min,\r
-                                       contraint_info.interval_time.tm_sec);\r
-                       }\r
-\r
-                       if(contraint_info.const_type.is_system){\r
-                               tet_printf("SYSTEM Constraint is present");\r
-                               tet_printf("system_identity_type=%d "\r
-                                               "system_id=%s",\r
-                                               contraint_info.system_identity_type,\r
-                                               contraint_info.system_id);\r
-                       }\r
-\r
-                       if(contraint_info.const_type.is_timedcount){\r
-                               tet_printf("TIMED-COUNT Constraint is present");\r
-                               tet_printf("timed_original_count=%d",\r
-                                               contraint_info.timed_original_count);\r
-\r
-                               tet_printf("timed_remaining_count=%d",\r
-                                               contraint_info.timed_remaining_count);\r
-\r
-                               tet_printf("timed_count_timer=%d",\r
-                                                                               contraint_info.timed_count_timer);\r
-                       }\r
-\r
-                       tet_result(TET_PASS);\r
-       }else{\r
-                       tet_infoline("drm_get_contraint_info");\r
-                       tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_PR_1);\r
-                       tet_printf ("ret = 0x%x",ret);\r
-                       tet_result(TET_FAIL);\r
-       }\r
-}\r
-\r
-/**\r
- * @brief Positive test case of drm_get_contraint_info()\r
- */\r
-static void utc_drmclient_drm_get_contraint_info_func_06(void)\r
-{\r
-       int ret = DRM_RETURN_INTERNAL_ERROR ;\r
-       drm_contraint_info_s contraint_info;\r
-       drm_permission_type_e perm_type = DRM_PERMISSION_TYPE_PLAY;\r
-       char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
-       snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_PR_2);\r
-\r
-       ret = drm_get_contraint_info(file_path,perm_type,&contraint_info);\r
-       if(DRM_RETURN_SUCCESS == ret ){\r
-                       tet_infoline("drm_get_contraint_info PASS!!!");\r
-                       tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_PR_2);\r
-                       tet_printf ("ret = 0x%x",ret);\r
-                       if(contraint_info.const_type.is_unlimited){\r
-                               tet_printf("Unlimited:for permission=%d",perm_type);\r
-                       }\r
-\r
-                       if(contraint_info.const_type.is_accumulated){\r
-                               tet_printf("Accumulated Constraint is present");\r
-                               tet_printf("accumulated_original_seconds=%d",\r
-                                               contraint_info.accumulated_original_seconds);\r
-                               tet_printf("accumulated_remaining_seconds=%d",\r
-                                               contraint_info.accumulated_remaining_seconds);\r
-                       }\r
-\r
-                       if(contraint_info.const_type.is_count){\r
-                               tet_printf("Count Constraint is present");\r
-                               tet_printf("original_count=%d",\r
-                                               contraint_info.original_count);\r
-                               tet_printf("remaining_count=%d",\r
-                                               contraint_info.remaining_count);\r
-                       }\r
-\r
-                       if(contraint_info.const_type.is_datetime){\r
-                               tet_printf("DATETIME Constraint is present");\r
-                               tet_printf("start_time:"\r
-                                               "Year=%d,Month=%d,Day=%d,Hour=%d, minute=%d, Second=%d",\r
-                                       contraint_info.start_time.tm_year,\r
-                                       contraint_info.start_time.tm_mon,\r
-                                       contraint_info.start_time.tm_mday,\r
-                                       contraint_info.start_time.tm_hour,\r
-                                       contraint_info.start_time.tm_min,\r
-                                       contraint_info.start_time.tm_sec);\r
-\r
-                               tet_printf("end_time:"\r
-                                               "Year=%d,Month=%d,Day=%d,Hour=%d, minute=%d, Second=%d",\r
-                                       contraint_info.end_time.tm_year,\r
-                                       contraint_info.end_time.tm_mon,\r
-                                       contraint_info.end_time.tm_mday,\r
-                                       contraint_info.end_time.tm_hour,\r
-                                       contraint_info.end_time.tm_min,\r
-                                       contraint_info.end_time.tm_sec);\r
-                       }\r
-\r
-                       if(contraint_info.const_type.is_individual){\r
-                               tet_printf("INDIVIDUAL Constraint is present");\r
-                               tet_printf("individual_identity_type=%d "\r
-                                               "individual_id=%s",\r
-                                               contraint_info.individual_identity_type,\r
-                                               contraint_info.individual_id);\r
-\r
-                       }\r
-\r
-                       if(contraint_info.const_type.is_interval){\r
-                               tet_printf("INTERVAL Constraint is present");\r
-                               tet_printf("interval_time:"\r
-                                               "Year=%d,Month=%d,Day=%d,Hour=%d, minute=%d, Second=%d",\r
-                                       contraint_info.interval_time.tm_year,\r
-                                       contraint_info.interval_time.tm_mon,\r
-                                       contraint_info.interval_time.tm_mday,\r
-                                       contraint_info.interval_time.tm_hour,\r
-                                       contraint_info.interval_time.tm_min,\r
-                                       contraint_info.interval_time.tm_sec);\r
-                       }\r
-\r
-                       if(contraint_info.const_type.is_system){\r
-                               tet_printf("SYSTEM Constraint is present");\r
-                               tet_printf("system_identity_type=%d "\r
-                                               "system_id=%s",\r
-                                               contraint_info.system_identity_type,\r
-                                               contraint_info.system_id);\r
-                       }\r
-\r
-                       if(contraint_info.const_type.is_timedcount){\r
-                               tet_printf("TIMED-COUNT Constraint is present");\r
-                               tet_printf("timed_original_count=%d",\r
-                                               contraint_info.timed_original_count);\r
-\r
-                               tet_printf("timed_remaining_count=%d",\r
-                                               contraint_info.timed_remaining_count);\r
-\r
-                               tet_printf("timed_count_timer=%d",\r
-                                                                               contraint_info.timed_count_timer);\r
-                       }\r
-\r
-                       tet_result(TET_PASS);\r
-       }else{\r
-                       tet_infoline("drm_get_contraint_info");\r
-                       tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_PR_2);\r
-                       tet_printf ("ret = 0x%x",ret);\r
-                       tet_result(TET_FAIL);\r
-       }\r
-}\r
-\r
-/**\r
- * @brief Positive test case of drm_get_contraint_info()\r
- */\r
-static void utc_drmclient_drm_get_contraint_info_func_07(void)\r
-{\r
-       int ret = DRM_RETURN_INTERNAL_ERROR ;\r
-       drm_contraint_info_s contraint_info;\r
-       drm_permission_type_e perm_type = DRM_PERMISSION_TYPE_PLAY;\r
-       char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
-       snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_PR_3);\r
-\r
-       ret = drm_get_contraint_info(file_path,perm_type,&contraint_info);\r
-       if(DRM_RETURN_SUCCESS == ret ){\r
-                       tet_infoline("drm_get_contraint_info PASS!!!");\r
-                       tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_PR_3);\r
-                       tet_printf ("ret = 0x%x",ret);\r
-                       if(contraint_info.const_type.is_unlimited){\r
-                               tet_printf("Unlimited:for permission=%d",perm_type);\r
-                       }\r
-\r
-                       if(contraint_info.const_type.is_accumulated){\r
-                               tet_printf("Accumulated Constraint is present");\r
-                               tet_printf("accumulated_original_seconds=%d",\r
-                                               contraint_info.accumulated_original_seconds);\r
-                               tet_printf("accumulated_remaining_seconds=%d",\r
-                                               contraint_info.accumulated_remaining_seconds);\r
-                       }\r
-\r
-                       if(contraint_info.const_type.is_count){\r
-                               tet_printf("Count Constraint is present");\r
-                               tet_printf("original_count=%d",\r
-                                               contraint_info.original_count);\r
-                               tet_printf("remaining_count=%d",\r
-                                               contraint_info.remaining_count);\r
-                       }\r
-\r
-                       if(contraint_info.const_type.is_datetime){\r
-                               tet_printf("DATETIME Constraint is present");\r
-                               tet_printf("start_time:"\r
-                                               "Year=%d,Month=%d,Day=%d,Hour=%d, minute=%d, Second=%d",\r
-                                       contraint_info.start_time.tm_year,\r
-                                       contraint_info.start_time.tm_mon,\r
-                                       contraint_info.start_time.tm_mday,\r
-                                       contraint_info.start_time.tm_hour,\r
-                                       contraint_info.start_time.tm_min,\r
-                                       contraint_info.start_time.tm_sec);\r
-\r
-                               tet_printf("end_time:"\r
-                                               "Year=%d,Month=%d,Day=%d,Hour=%d, minute=%d, Second=%d",\r
-                                       contraint_info.end_time.tm_year,\r
-                                       contraint_info.end_time.tm_mon,\r
-                                       contraint_info.end_time.tm_mday,\r
-                                       contraint_info.end_time.tm_hour,\r
-                                       contraint_info.end_time.tm_min,\r
-                                       contraint_info.end_time.tm_sec);\r
-                       }\r
-\r
-                       if(contraint_info.const_type.is_individual){\r
-                               tet_printf("INDIVIDUAL Constraint is present");\r
-                               tet_printf("individual_identity_type=%d "\r
-                                               "individual_id=%s",\r
-                                               contraint_info.individual_identity_type,\r
-                                               contraint_info.individual_id);\r
-\r
-                       }\r
-\r
-                       if(contraint_info.const_type.is_interval){\r
-                               tet_printf("INTERVAL Constraint is present");\r
-                               tet_printf("interval_time:"\r
-                                               "Year=%d,Month=%d,Day=%d,Hour=%d, minute=%d, Second=%d",\r
-                                       contraint_info.interval_time.tm_year,\r
-                                       contraint_info.interval_time.tm_mon,\r
-                                       contraint_info.interval_time.tm_mday,\r
-                                       contraint_info.interval_time.tm_hour,\r
-                                       contraint_info.interval_time.tm_min,\r
-                                       contraint_info.interval_time.tm_sec);\r
-                       }\r
-\r
-                       if(contraint_info.const_type.is_system){\r
-                               tet_printf("SYSTEM Constraint is present");\r
-                               tet_printf("system_identity_type=%d "\r
-                                               "system_id=%s",\r
-                                               contraint_info.system_identity_type,\r
-                                               contraint_info.system_id);\r
-                       }\r
-\r
-                       if(contraint_info.const_type.is_timedcount){\r
-                               tet_printf("TIMED-COUNT Constraint is present");\r
-                               tet_printf("timed_original_count=%d",\r
-                                               contraint_info.timed_original_count);\r
-\r
-                               tet_printf("timed_remaining_count=%d",\r
-                                               contraint_info.timed_remaining_count);\r
-\r
-                               tet_printf("timed_count_timer=%d",\r
-                                                                               contraint_info.timed_count_timer);\r
-                       }\r
-\r
-                       tet_result(TET_PASS);\r
-       }else{\r
-                       tet_infoline("drm_get_contraint_info");\r
-                       tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_PR_3);\r
-                       tet_printf ("ret = 0x%x",ret);\r
-                       tet_result(TET_FAIL);\r
-       }\r
-}\r
-\r
-/**\r
- * @brief Positive test case of drm_get_contraint_info()\r
- */\r
-static void utc_drmclient_drm_get_contraint_info_func_08(void)\r
-{\r
-       int ret = DRM_RETURN_INTERNAL_ERROR ;\r
-       drm_contraint_info_s contraint_info;\r
-       drm_permission_type_e perm_type = DRM_PERMISSION_TYPE_PLAY;\r
-       char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
-       snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_DIVX_1);\r
-\r
-       ret = drm_get_contraint_info(file_path,perm_type,&contraint_info);\r
-       if(DRM_RETURN_SUCCESS == ret ){\r
-                       tet_infoline("drm_get_contraint_info PASS!!!");\r
-                       tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_DIVX_1);\r
-                       tet_printf ("ret = 0x%x",ret);\r
-                       if(contraint_info.const_type.is_unlimited){\r
-                               tet_printf("Unlimited:for permission=%d",perm_type);\r
-                       }\r
-\r
-                       if(contraint_info.const_type.is_accumulated){\r
-                               tet_printf("Accumulated Constraint is present");\r
-                               tet_printf("accumulated_original_seconds=%d",\r
-                                               contraint_info.accumulated_original_seconds);\r
-                               tet_printf("accumulated_remaining_seconds=%d",\r
-                                               contraint_info.accumulated_remaining_seconds);\r
-                       }\r
-\r
-                       if(contraint_info.const_type.is_count){\r
-                               tet_printf("Count Constraint is present");\r
-                               tet_printf("original_count=%d",\r
-                                               contraint_info.original_count);\r
-                               tet_printf("remaining_count=%d",\r
-                                               contraint_info.remaining_count);\r
-                       }\r
-\r
-                       if(contraint_info.const_type.is_datetime){\r
-                               tet_printf("DATETIME Constraint is present");\r
-                               tet_printf("start_time:"\r
-                                               "Year=%d,Month=%d,Day=%d,Hour=%d, minute=%d, Second=%d",\r
-                                       contraint_info.start_time.tm_year,\r
-                                       contraint_info.start_time.tm_mon,\r
-                                       contraint_info.start_time.tm_mday,\r
-                                       contraint_info.start_time.tm_hour,\r
-                                       contraint_info.start_time.tm_min,\r
-                                       contraint_info.start_time.tm_sec);\r
-\r
-                               tet_printf("end_time:"\r
-                                               "Year=%d,Month=%d,Day=%d,Hour=%d, minute=%d, Second=%d",\r
-                                       contraint_info.end_time.tm_year,\r
-                                       contraint_info.end_time.tm_mon,\r
-                                       contraint_info.end_time.tm_mday,\r
-                                       contraint_info.end_time.tm_hour,\r
-                                       contraint_info.end_time.tm_min,\r
-                                       contraint_info.end_time.tm_sec);\r
-                       }\r
-\r
-                       if(contraint_info.const_type.is_individual){\r
-                               tet_printf("INDIVIDUAL Constraint is present");\r
-                               tet_printf("individual_identity_type=%d "\r
-                                               "individual_id=%s",\r
-                                               contraint_info.individual_identity_type,\r
-                                               contraint_info.individual_id);\r
-\r
-                       }\r
-\r
-                       if(contraint_info.const_type.is_interval){\r
-                               tet_printf("INTERVAL Constraint is present");\r
-                               tet_printf("interval_time:"\r
-                                               "Year=%d,Month=%d,Day=%d,Hour=%d, minute=%d, Second=%d",\r
-                                       contraint_info.interval_time.tm_year,\r
-                                       contraint_info.interval_time.tm_mon,\r
-                                       contraint_info.interval_time.tm_mday,\r
-                                       contraint_info.interval_time.tm_hour,\r
-                                       contraint_info.interval_time.tm_min,\r
-                                       contraint_info.interval_time.tm_sec);\r
-                       }\r
-\r
-                       if(contraint_info.const_type.is_system){\r
-                               tet_printf("SYSTEM Constraint is present");\r
-                               tet_printf("system_identity_type=%d "\r
-                                               "system_id=%s",\r
-                                               contraint_info.system_identity_type,\r
-                                               contraint_info.system_id);\r
-                       }\r
-\r
-                       if(contraint_info.const_type.is_timedcount){\r
-                               tet_printf("TIMED-COUNT Constraint is present");\r
-                               tet_printf("timed_original_count=%d",\r
-                                               contraint_info.timed_original_count);\r
-\r
-                               tet_printf("timed_remaining_count=%d",\r
-                                               contraint_info.timed_remaining_count);\r
-\r
-                               tet_printf("timed_count_timer=%d",\r
-                                                                               contraint_info.timed_count_timer);\r
-                       }\r
-\r
-                       tet_result(TET_PASS);\r
-       }else{\r
-                       tet_infoline("drm_get_contraint_info");\r
-                       tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_DIVX_1);\r
-                       tet_printf ("ret = 0x%x",ret);\r
-                       tet_result(TET_FAIL);\r
-       }\r
-}\r
-#endif\r
-/**\r
- * @brief Negative test case of drm_get_contraint_info()\r
- */\r
-\r
-static void utc_drmclient_drm_get_contraint_info_func_09(void)\r
-{\r
-       int ret = DRM_RETURN_INTERNAL_ERROR ;\r
-       drm_contraint_info_s contraint_info;\r
-       drm_permission_type_e perm_type = DRM_PERMISSION_TYPE_PLAY;\r
-\r
-       ret = drm_get_contraint_info(FILE_PATH_INVALID_FILE_NULL,perm_type,&contraint_info);\r
-       if(DRM_RETURN_SUCCESS != ret){\r
-                       tet_infoline("drm_get_contraint_info PASS!!!");\r
-                       tet_printf ("file_path checked is %s",FILE_PATH_INVALID_FILE_NULL);\r
-                       tet_printf ("ret = 0x%x",ret);\r
-                       tet_result(TET_PASS);\r
-       }else{\r
-                       tet_infoline("drm_get_contraint_info");\r
-                       tet_printf ("file_path checked is %s",FILE_PATH_INVALID_FILE_NULL);\r
-                       tet_printf ("ret = 0x%x",ret);\r
-                       tet_result(TET_FAIL);\r
-       }\r
-}\r
-\r
-/**\r
- * @brief Negative test case of drm_get_contraint_info()\r
- */\r
-\r
-static void utc_drmclient_drm_get_contraint_info_func_10(void)\r
-{\r
-       int ret = DRM_RETURN_INTERNAL_ERROR ;\r
-       drm_contraint_info_s contraint_info;\r
-       drm_permission_type_e perm_type = DRM_PERMISSION_TYPE_PLAY;\r
-       char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
-\r
-       ret = drm_get_contraint_info(file_path,perm_type,&contraint_info);\r
-       if(DRM_RETURN_SUCCESS != ret){\r
-                       tet_infoline("drm_get_contraint_info PASS!!!");\r
-                       tet_printf ("file_path checked is %s",FILE_PATH_INVALID_FILE_EMPTY);\r
-                       tet_printf ("ret = 0x%x",ret);\r
-                       tet_result(TET_PASS);\r
-       }else{\r
-                       tet_infoline("drm_get_contraint_info");\r
-                       tet_printf ("file_path checked is %s",FILE_PATH_INVALID_FILE_EMPTY);\r
-                       tet_printf ("ret = 0x%x",ret);\r
-                       tet_result(TET_FAIL);\r
-       }\r
-}\r
-\r
-/**\r
- * @brief Negative test case of drm_get_contraint_info()\r
- */\r
-\r
-static void utc_drmclient_drm_get_contraint_info_func_11(void)\r
-{\r
-       int ret = DRM_RETURN_INTERNAL_ERROR ;\r
-       drm_permission_type_e perm_type = DRM_PERMISSION_TYPE_PLAY;\r
-       char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
-       snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_OMA_1);\r
-\r
-       ret = drm_get_contraint_info(file_path,perm_type,INVALID_POINTER_OBJECT);\r
-       if(DRM_RETURN_SUCCESS != ret){\r
-                       tet_infoline("drm_get_contraint_info PASS!!!");\r
-                       tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_1);\r
-                       tet_printf ("ret = 0x%x",ret);\r
-                       tet_result(TET_PASS);\r
-       }else{\r
-                       tet_infoline("drm_get_contraint_info");\r
-                       tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_1);\r
-                       tet_printf ("ret = 0x%x",ret);\r
-                       tet_result(TET_FAIL);\r
-       }\r
-}\r
-\r
-/**\r
- * @brief Negative test case of drm_get_contraint_info()\r
- */\r
-static void utc_drmclient_drm_get_contraint_info_func_12(void)\r
-{\r
-       int ret = DRM_RETURN_INTERNAL_ERROR ;\r
-       drm_contraint_info_s contraint_info;\r
-       drm_permission_type_e perm_type = DRM_PERMISSION_TYPE_DISPLAY;\r
-       char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
-       snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_OMA_7);\r
-\r
-       ret = drm_get_contraint_info(file_path,perm_type,&contraint_info);\r
-       if(DRM_RETURN_SUCCESS != ret ){\r
-                       /* pbarimage_timedcount.dr RO is in wrong format */\r
-                       /* Thus it will fail */\r
-                       tet_infoline("drm_get_contraint_info PASS!!!");\r
-                       tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_7);\r
-                       tet_printf ("ret = 0x%x",ret);\r
-                       tet_result(TET_PASS);\r
-       }else{\r
-                       tet_infoline("drm_get_contraint_info");\r
-                       tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_7);\r
-                       tet_printf ("ret = 0x%x",ret);\r
-                       tet_result(TET_FAIL);\r
-       }\r
-}\r
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
diff --git a/debian/README b/debian/README
deleted file mode 100644 (file)
index 3fe747e..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-The Debian Package drm-client
-----------------------------
-
-Comments regarding the Package
-
- -- Hakjoo Ko <hakjoo.ko@samsung.com>  Thu, 23 Feb 2012 11:34:57 +0530
- -- Mahendra Kumar Prajapat <mahendra.p@samsung.com>  Thu, 23 Feb 2012 11:34:57 +0530
- -- Harsha Shekar <h.shekar@samsung.com>  Thu, 23 Feb 2012 11:34:57 +0530
diff --git a/debian/README.Debian b/debian/README.Debian
deleted file mode 100644 (file)
index 0189b16..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-drm-client for Debian
-----------------------
-
-<possible notes regarding this package - if none, delete this file>
-
- -- Hakjoo Ko <hakjoo.ko@samsung.com>  Thu, 23 Feb 2012 11:34:57 +0530
- -- Mahendra Kumar Prajapat <mahendra.p@samsung.com>  Thu, 23 Feb 2012 11:34:57 +0530
- -- Harsha Shekar <h.shekar@samsung.com>  Thu, 23 Feb 2012 11:34:57 +0530
diff --git a/debian/changelog b/debian/changelog
deleted file mode 100644 (file)
index 7ccb98c..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-drm-client (0.0.8-0) unstable; urgency=low
-
-  * Spell check for constraint word
-  * Modification by Harsha Shekar <h.shekar@samsung.com>
-  * Git: slp/pkgs/d/drm-client
-  * Tag: drm-client_0.0.8-0
-
- -- Harsha Shekar <h.shekar@samsung.com>  Tue, 22 May 2012 17:03:07 +0900
-
-drm-client (0.0.7-0) unstable; urgency=low
-
-  * Modified TCs and test utility
-  * Modification by Mahendra <mahendra.p@samsung.com> Ravi S <ravi.cs@samsung.com>
-  * Git: slp/pkgs/d/drm-client
-  * Tag: drm-client_0.0.7-0
-
- -- Harsha Shekar <h.shekar@samsung.com>  Sat, 12 May 2012 16:45:34 +0900
-
-drm-client (0.0.6-0) unstable; urgency=low
-
-  * Implementation of key service APIs like ROAP, SETAS etc
-  * Modification by Harsha Shekar <h.shekar@samsung.com>
-  * Git: slp/pkgs/d/drm-client
-  * Tag: drm-client_0.0.6-0
-
- -- Harsha Shekar <h.shekar@samsung.com>  Thu, 10 May 2012 10:10:50 +0900
-
-drm-client (0.0.5-1) unstable; urgency=low
-
-  * spec file modified
-  * Modification by Harsha Shekar <h.shekar@samsung.com>
-  * Git: slp/pkgs/d/drm-client
-  * Tag: drm-client_0.0.5-1
-
- -- Harsha Shekar <h.shekar@samsung.com>  Tue, 08 May 2012 18:15:30 +0900
-
-drm-client (0.0.5-0) unstable; urgency=low
-
-  * Removed temporarily defined TIZEN_DRM_ERROR_CLASS from drm_client_types.h
-  * Modification by Harsha Shekar <h.shekar@samsung.com>
-  * Git: slp/pkgs/d/drm-client
-  * Tag: drm-client_0.0.5-0
-
- -- Harsha Shekar <h.shekar@samsung.com>  Tue, 20 Mar 2012 11:31:09 +0530
-
-drm-client (0.0.4-0) unstable; urgency=low
-
-  * Addition of new DRM C APIs (get_secure_clock, register_ro, register_file, unregister_file)
-  * Modification by Mahendra Kumar Prajapat <mahendra.p@samsung.com>
-  * Modification by Harsha Shekar <h.shekar@samsung.com>
-  * Git: slp/pkgs/d/drm-client
-  * Tag: drm-client_0.0.4-0
-
- -- Harsha Shekar <h.shekar@samsung.com>  Fri, 16 Mar 2012 20:35:57 +0530
-
-drm-client (0.0.3-0) unstable; urgency=low
-
-  * Converted time constraints in struct tm format
-  * Modification by Mahendra Kumar Prajapat <mahendra.p@samsung.com>
-  * Git: slp/pkgs/d/drm-client
-  * Tag: drm-client_0.0.3-0
-
- -- Harsha Shekar <h.shekar@samsung.com>  Thu, 08 Mar 2012 16:57:42 +0530
-
-drm-client (0.0.2-0) unstable; urgency=low
-
-  * Added Drm Client files and folders into repository
-  * Modification by Harsha Shekar <h.shekar@samsung.com>
-  * Git: slp/pkgs/d/drm-client
-  * Tag: drm-client_0.0.2-0
-
- -- Harsha Shekar <h.shekar@samsung.com>  Wed, 07 Mar 2012 11:37:21 +0530
-
-drm-client (0.0.1-0) unstable; urgency=low
-
-  * Initial Release.
-
- -- Mahendra Kumar Prajapat <mahendra.p@samsung.com>  Thu, 23 Feb 2012 11:34:57 +0530
diff --git a/debian/compat b/debian/compat
deleted file mode 100644 (file)
index 7ed6ff8..0000000
+++ /dev/null
@@ -1 +0,0 @@
-5
diff --git a/debian/control b/debian/control
deleted file mode 100644 (file)
index 3b99da4..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-Source: drm-client
-Section: main
-Priority: optional
-Maintainer: Hakjoo Ko <hakjoo.ko@samsung.com>, Mahendra Kumar Prajapat <mahendra.p@samsung.com>
-Uploaders: Harsha Shekar <h.shekar@samsung.com> Mahendra Kumar Prajapat <mahendra.p@samsung.com>
-Build-Depends: debhelper (>= 5), dlog-dev, capi-base-common-dev
-Standards-Version: 3.7.2
-
-Package: drm-client-0
-Section: main
-Architecture: any
-Depends: ${shlibs:Depends}, ${misc:Depends}
-Description: DRM client library package 
-
-Package: drm-client-dev
-Section: main
-Architecture: any
-Depends: drm-client-0 (= ${Source-Version}), dlog-dev, capi-base-common-dev
-Description: DRM client library development package
-
-Package: drm-client-0-dbg
-Section: debug
-Architecture: any
-Depends: ${shlibs:Depends}, ${misc:Depends}, drm-client-0 (=${Source-Version})
-Description: debug package of DRM client library
diff --git a/debian/drm-client-0.install.in b/debian/drm-client-0.install.in
deleted file mode 100644 (file)
index 9b75a8a..0000000
+++ /dev/null
@@ -1 +0,0 @@
-@PREFIX@/lib/*
\ No newline at end of file
diff --git a/debian/drm-client-0.postinst b/debian/drm-client-0.postinst
deleted file mode 100644 (file)
index d5dcd37..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/bin/sh
-#if [ ${USER} = "root" ]
-#then
-# Do post installation operations as a root
-#else
-# Do post installation operations as a non-root
-#fi
-
diff --git a/debian/drm-client-dev.install.in b/debian/drm-client-dev.install.in
deleted file mode 100644 (file)
index 0dd47b8..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-@PREFIX@/include/drm-client/drm_client.h
-@PREFIX@/include/drm-client/drm_client_types.h
diff --git a/debian/rules b/debian/rules
deleted file mode 100644 (file)
index d4be098..0000000
+++ /dev/null
@@ -1,124 +0,0 @@
-#!/usr/bin/make -f
-# -*- makefile -*-
-# Sample debian/rules that uses debhelper.
-# This file was originally written by Joey Hess and Craig Small.
-# As a special exception, when this file is copied by dh-make into a
-# dh-make output file, you may use that output file without restriction.
-# This special exception was added by Craig Small in version 0.37 of dh-make.
-
-# Uncomment this to turn on verbose mode.
-#export DH_VERBOSE=1
-
-
-# These are used for cross-compiling and for saving the configure script
-# from having to guess our platform (since we know it already)
-DEB_HOST_GNU_TYPE   ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
-DEB_BUILD_GNU_TYPE  ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
-
-CFLAGS ?= -Wall -g
-CFLAGS += -fPIC
-CXXFLAGS ?= -Wall -g
-CXXFLAGS += -fPIC
-
-PREFIX ?= /usr
-DATADIR ?= /opt
-
-#ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
-#      CFLAGS += -O0
-#      CXXFLAGS += -O0
-#else
-#      CFLAGS += -O2
-#      CXXFLAGS += -O2
-#endif
-
-LDFLAGS += --rpath=$(PREFIX)/lib -Wl,--as-needed
-
-configure: configure-stamp
-configure-stamp:
-       dh_testdir
-       # Add here commands to configure the package.
-       CFLAGS="$(CFLAGS)" CXXFLAGS="$(CXXFLAGS)" LDFLAGS="$(LDFLAGS)" cmake . -DCMAKE_INSTALL_PREFIX=$(PREFIX)
-       touch configure-stamp
-
-build: build-stamp
-
-build-stamp:  configure-stamp
-       dh_testdir
-
-       # Add here commands to compile the package.
-       $(MAKE)
-       #docbook-to-man debian/ncurses.sgml > ncurses.1
-
-       for f in `find $(CURDIR)/debian/ -name "*.in"`; do \
-               cat $$f > $${f%.in}; \
-               sed -i -e "s#@PREFIX@#$(PREFIX)#g" $${f%.in}; \
-               sed -i -e "s#@DATADIR@#$(DATADIR)#g" $${f%.in}; \
-       done
-
-       touch $@
-
-clean:
-       dh_testdir
-       dh_testroot
-       rm -f build-stamp configure-stamp
-       
-       # Add here commands to clean up after the build process.
-       -$(MAKE) clean
-       rm -rf CMakeCache.txt
-       rm -rf CMakeFiles
-       rm -rf cmake_install.cmake
-       rm -rf Makefile
-       rm -rf install_manifest.txt
-       rm -rf *.pc
-
-       for f in `find $(CURDIR)/debian/ -name "*.in"`; do \
-               rm -f $${f%.in}; \
-       done
-       dh_clean 
-       
-install: build
-       dh_testdir
-       dh_testroot
-       dh_prep 
-       dh_installdirs
-
-       # Add here commands to install the package into debian/ncurses.
-       $(MAKE) DESTDIR=$(CURDIR)/debian/tmp install
-
-
-# Build architecture-independent files here.
-binary-indep: build install
-# We have nothing to do by default.
-
-# Build architecture-dependent files here.
-binary-arch: build install
-       dh_testdir
-       dh_testroot
-       dh_installexamples
-       dh_install --sourcedir=debian/tmp
-#      dh_installmenu
-#      dh_installdebconf       
-#      dh_installlogrotate
-#      dh_installemacsen
-#      dh_installpam
-#      dh_installmime
-#      dh_python
-#      dh_installinit
-#      dh_installcron
-#      dh_installinfo
-       dh_installman
-       dh_link
-       #dh_strip                                #before
-       dh_strip --dbg-package=drm-client-0-dbg #after
-       dh_compress
-       dh_fixperms
-#      dh_perl
-       dh_makeshlibs
-       dh_installdeb
-       dh_shlibdeps
-       dh_gencontrol
-       dh_md5sums
-       dh_builddeb
-
-binary: binary-indep binary-arch
-.PHONY: build clean binary-indep binary-arch binary install
\ No newline at end of file
old mode 100644 (file)
new mode 100755 (executable)
index 5a95748..d0143dd
@@ -1,6 +1,6 @@
 Name: drm-client
 Description: DRM client Package
 Version: @VERSION@
-Requires: dlog capi-base-common
+Requires: dlog capi-base-common glib-2.0
 Libs: -L@LIBDIR@ -ldrm-client
 Cflags: -I@INCLUDEDIR@/drm-client
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
index b771dd0..e8303f7
@@ -67,7 +67,17 @@ extern "C" {
 /**\r
 * Maximum Read/Write Chunk Size\r
 */\r
-#define DRM_MAX_CHUNK_SIZE (100 * 1024)\r
+#define DRM_MAX_CHUNK_SIZE (10 * 1024)\r
+\r
+/**\r
+* Maximum concurrent clients supported\r
+*/\r
+#define DRM_MAX_CLIENT_SUPPORTED 5\r
+\r
+/**\r
+* Maximum callback data size\r
+*/\r
+#define DRM_MAX_CB_DATA_SIZE 256\r
 \r
 \r
 \r
@@ -90,14 +100,59 @@ typedef enum {
 } drm_request_api_e;\r
 \r
 /**\r
+ * @struct drm_client_cb_data_s\r
+ * @brief DRM operation callback information structure\r
+ * with additional information.\r
+ */\r
+typedef struct\r
+{\r
+       /** Client Id */\r
+       int client_id;\r
+\r
+       /** Callback operation info */\r
+       drm_user_operation_info_s callback_operation_info;\r
+\r
+       /** Callback user data */\r
+       char call_bk_data[DRM_MAX_CB_DATA_SIZE];\r
+} drm_client_cb_data_s;\r
+\r
+/**\r
+ * @struct     drm_client_cb_info_s\r
+ * @brief      Client Callback info.\r
+ * @remark     Stores details about Registered client callbacks\r
+ */\r
+typedef struct {\r
+\r
+       /** Client Id */\r
+       int client_id;\r
+\r
+       /** Callback */\r
+       drm_operation_cb_s operation_callback;\r
+} drm_client_cb_info_s;\r
+\r
+/**\r
  * @struct     drm_client_info_s\r
  * @brief      Client Information structure.\r
  * @remark     It can be used to track drm clients.\r
- *                     It can be extended to add more parameters like pid, uid etc.\r
  */\r
 typedef struct {\r
+       /** Active state for structure */\r
+       int active;\r
+\r
        /** Client Id */\r
        int client_id;\r
+\r
+       /** Process Id */\r
+       int p_id;\r
+\r
+       /** Thread Id */\r
+       int thread_id;\r
+\r
+       /** Sync Socket */\r
+       int sync_sock_fd;\r
+\r
+       /** Async Socket */\r
+       int async_sock_fd;\r
 } drm_client_info_s;\r
 \r
 /**\r
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
index efc529a..d069ea6
@@ -43,6 +43,7 @@ extern "C" {
 \r
 #include "tizen_error.h"\r
 \r
+\r
 /******************************************************************/\r
 \r
 /*\r
@@ -135,6 +136,36 @@ extern "C" {
 */\r
 #define DRM_MAX_LEN_IP_ADDR            (64)\r
 \r
+/*\r
+ * Max length of APP ID\r
+ */\r
+#define DRM_MAX_LEN_APP_ID             (15)\r
+\r
+/*\r
+ * Max length of User ID\r
+ */\r
+#define DRM_MAX_LEN_USER_GUID  (15)\r
+\r
+/*\r
+ * Max length of Device ID\r
+ */\r
+#define DRM_MAX_LEN_DEVICE_ID  (15)\r
+\r
+/*\r
+ * Max length of Order ID\r
+ */\r
+#define DRM_MAX_LEN_ORDER_ID   (15)\r
+\r
+/*\r
+ * Max length of Service ID\r
+ */\r
+#define DRM_MAX_LEN_SERVICE_ID (31)\r
+\r
+/*\r
+ * Max length of Account ID\r
+ */\r
+#define DRM_MAX_LEN_ACCOUNT_ID         (31)\r
+\r
 /****************************************************************/\r
 \r
 /**\r
@@ -475,6 +506,18 @@ typedef enum {
 } drm_web_server_result_code_e;\r
 \r
 /**\r
+ * @enum drm_initiator_type\r
+ * @brief DRM Initiator type.\r
+ */\r
+typedef enum {\r
+       DRM_INITIATOR_TYPE_NONE = -1,\r
+       DRM_INITIATOR_TYPE_INITIATOR_URL = 0,\r
+       DRM_INITIATOR_TYPE_LICENSE_ACQ,\r
+       DRM_INITIATOR_TYPE_JOIN_DOMAIN,\r
+       DRM_INITIATOR_TYPE_LEAVE_DOMAIN\r
+} drm_initiator_type;\r
+\r
+/**\r
  * @struct drm_content_info_s\r
  * @brief DRM content info structure.\r
  */\r
@@ -803,6 +846,19 @@ typedef struct {
 }drm_register_lic_resp_s;\r
 \r
 /**\r
+ * @struct     drm_custom_data_info_s\r
+ * @brief      DRM Custom Data Information.\r
+ */\r
+typedef struct {\r
+       char app_id[DRM_MAX_LEN_APP_ID + 1];                    /** App ID */\r
+       char user_guid[DRM_MAX_LEN_USER_GUID +1];       /** User GID */\r
+       char device_id[DRM_MAX_LEN_DEVICE_ID + 1];              /** Device ID */\r
+       char order_id[DRM_MAX_LEN_ORDER_ID + 1];                        /** Order ID */\r
+       char service_id[DRM_MAX_LEN_SERVICE_ID + 1];            /** Service ID */\r
+       char account_id[DRM_MAX_LEN_ACCOUNT_ID + 1];            /** Account ID */\r
+} drm_custom_data_info_s;\r
+\r
+/**\r
  * @struct drm_initiator_info_s\r
  * @brief DRM License Initiator Information structure.\r
  */\r
@@ -815,6 +871,12 @@ typedef struct {
 \r
        /** Callback for status update */\r
        drm_operation_cb_s operation_callback;\r
+\r
+       /** Initiator Type */\r
+       drm_initiator_type init_type;\r
+\r
+       /** Custom Data */\r
+       drm_custom_data_info_s custom_data;\r
 }drm_initiator_info_s;\r
 \r
 /**\r
@@ -990,6 +1052,14 @@ typedef struct {
 } drm_register_setas_info_s;\r
 \r
 /**\r
+ * @struct     drm_register_setas_resp_data_s\r
+ * @brief      DRM Stack Response Data containing the GMT expiry\r
+ *             time corresponding to a given content\r
+ */\r
+typedef struct {\r
+       struct tm       time_expiry;                                            /** Expiry time*/\r
+} drm_register_setas_resp_data_s;\r
+/**\r
  * @struct     drm_unregister_setas_info_s\r
  * @brief      DRM Unregister SetAs Info.\r
  */\r
old mode 100644 (file)
new mode 100755 (executable)
index 73882ba..6bbc24d
@@ -1,12 +1,13 @@
 Name:       drm-client
 Summary:    DRM client Package
-Version:    0.0.8
+Version:    0.0.23
 Release:    0
 Group:      TO_BE/FILLED_IN
 License:    Apache
 Source0:    %{name}-%{version}.tar.gz
 BuildRequires:  pkgconfig(dlog)
 BuildRequires:  pkgconfig(capi-base-common)
+BuildRequires:  pkgconfig(glib-2.0)
 BuildRequires:  cmake
 
 %description
@@ -41,3 +42,14 @@ rm -rf %{buildroot}
 %{_includedir}/drm-client/*
 %{_libdir}/*.so
 %{_libdir}/pkgconfig/drm-client.pc
+
+%clean
+rm -rf CMakeCache.txt
+rm -rf CMakeFiles
+rm -rf cmake_install.cmake
+rm -rf Makefile
+rm -rf install_manifest.txt
+rm -rf *.pc
+rm -rf documentation.list
+
+rm -rf libdrm-client.so libdrm-client.so.0 libdrm-client.so.0.0.1
old mode 100644 (file)
new mode 100755 (executable)
index 8090776..9a74e03
@@ -22,6 +22,7 @@
  *\r
  */\r
 \r
+\r
 /**\r
  * @file               drm_client.cpp\r
  * @brief       DRM Client API defintions.\r
 #include "drm_client_log.h"\r
 //#include "security-server.h"\r
 \r
+#include <glib.h>\r
+\r
 #ifndef EXPORT_API\r
 #define EXPORT_API __attribute__((visibility("default")))\r
 #endif\r
 \r
+\r
+\r
 /**\r
  *  Private function\r
  *\r
@@ -56,7 +61,6 @@
  */\r
 static drm_file_type_e _drm_client_get_file_type(const char* file_path);\r
 \r
-\r
 /**\r
  *  An application can check that a file is DRM file\r
  *  (OMA DRM, PlayReady, DivX etc.)\r
@@ -77,14 +81,12 @@ static drm_file_type_e _drm_client_get_file_type(const char* file_path);
 EXPORT_API int drm_is_drm_file(const char *file_path,\r
                drm_bool_type_e *is_drm_file)\r
 {\r
+       DRM_CLIENT_LOG("Enter: file_path = %s", (!file_path) ? NULL:file_path);\r
        drm_request_data_s req_data;\r
        drm_response_data_s resp_data;\r
        int ret_comm = 0;\r
        drm_file_type_e file_type = DRM_TYPE_UNDEFINED;\r
-\r
-       /* memset the structures */\r
-       memset(&req_data, 0x0, sizeof(drm_request_data_s));\r
-       memset(&resp_data, 0x0, sizeof(drm_response_data_s));\r
+       int ret_cpy = 0;\r
 \r
        /* Check input parameters */\r
        if (!file_path || '\0' == file_path[0] || !is_drm_file) {\r
@@ -93,8 +95,6 @@ EXPORT_API int drm_is_drm_file(const char *file_path,
                return DRM_RETURN_INVALID_ARG;\r
        }\r
 \r
-       DRM_CLIENT_LOG("file_path = %s", file_path);\r
-\r
        file_type = _drm_client_get_file_type(file_path);\r
 \r
        switch (file_type) {\r
@@ -108,11 +108,21 @@ EXPORT_API int drm_is_drm_file(const char *file_path,
                break;\r
 \r
        case DRM_TYPE_DIVX: {\r
+\r
+               /* memset the structures */\r
+               memset(&req_data, 0x0, sizeof(drm_request_data_s));\r
+               memset(&resp_data, 0x0, sizeof(drm_response_data_s));\r
+\r
                /* In this case, further analysis of headers required to identify DRM file */\r
                /* Contact the server to perform operations */\r
 \r
                /* Store the input parameters to the Request Data structure to be sent to server */\r
-               memcpy(req_data.fixed_data.request_data, file_path, DRM_MAX_LEN_FILEPATH);\r
+               if ((ret_cpy = g_strlcpy(req_data.fixed_data.request_data, file_path,\r
+                               DRM_MAX_LEN_FILEPATH)) >= DRM_MAX_LEN_FILEPATH) {\r
+                       DRM_CLIENT_EXCEPTION("file_path = %s, filepath_len = %d, ret_cpy = %d",\r
+                                       file_path, strlen(file_path), ret_cpy);\r
+                       return DRM_RETURN_INVALID_ARG;\r
+               }\r
 \r
                /* Tell the server which API to be used */\r
                req_data.fixed_data.api_name = DRM_IS_DRM_FILE;\r
@@ -148,12 +158,12 @@ EXPORT_API int drm_is_drm_file(const char *file_path,
                goto ErrorExit;\r
        }\r
 \r
-       DRM_CLIENT_LOG("drm_is_drm_file Success!!, *is_drm_file = %d",\r
+       DRM_CLIENT_LOG("Exit:Success!!, is_drm_file = %d",\r
                        *is_drm_file);\r
        return DRM_RETURN_SUCCESS;\r
 \r
 ErrorExit:\r
-       DRM_CLIENT_EXCEPTION("drm_is_drm_file failed!!, *is_drm_file = %d",\r
+       DRM_CLIENT_EXCEPTION("Exit:failed!!, is_drm_file = %d",\r
                        *is_drm_file);\r
        return DRM_RETURN_INTERNAL_ERROR;\r
 \r
@@ -174,6 +184,8 @@ ErrorExit:
  */\r
 EXPORT_API int drm_get_file_type(const char *file_path, drm_file_type_e *file_type)\r
 {\r
+       DRM_CLIENT_LOG("Enter: file_path = %s", (!file_path) ? NULL:file_path);\r
+\r
        /* Check input parameters */\r
        if (!file_path || '\0' == file_path[0] || !file_type) {\r
                DRM_CLIENT_EXCEPTION("Invalid Arg!!, file_path = %p, file_type = %p",\r
@@ -181,10 +193,8 @@ EXPORT_API int drm_get_file_type(const char *file_path, drm_file_type_e *file_ty
                return DRM_RETURN_INVALID_ARG;\r
        }\r
 \r
-       DRM_CLIENT_LOG("file_path = %s", file_path);\r
        *file_type = _drm_client_get_file_type(file_path);\r
-       DRM_CLIENT_LOG("*file_type = %d", *file_type);\r
-       DRM_CLIENT_LOG("drm_get_file_type Success!!");\r
+       DRM_CLIENT_LOG("Exit:Success!! file_type = %d", *file_type);\r
        return DRM_RETURN_SUCCESS;\r
 }\r
 \r
@@ -207,11 +217,14 @@ EXPORT_API int drm_get_license_status(const char *file_path,
                drm_permission_type_e perm_type,\r
                drm_license_status_e *license_status)\r
 {\r
+       DRM_CLIENT_LOG("Enter: file_path = %s, perm_type = %d",\r
+                       (!file_path) ? NULL:file_path, perm_type);\r
+\r
        drm_request_data_s req_data;\r
        drm_response_data_s resp_data;\r
        int ret_comm = 0;\r
-       int retval = 0;\r
        drm_result_e result = DRM_RETURN_SUCCESS;\r
+       int ret_cpy = 0;\r
 \r
        /* memset the structures */\r
        memset(&req_data, 0x0, sizeof(drm_request_data_s));\r
@@ -224,10 +237,14 @@ EXPORT_API int drm_get_license_status(const char *file_path,
                return DRM_RETURN_INVALID_ARG;\r
        }\r
 \r
-       DRM_CLIENT_LOG("file_path = %s, perm_type = %d", file_path, perm_type);\r
-\r
        /* Store the input parameters to the Request Data structure to be sent to server */\r
-       memcpy(req_data.fixed_data.request_data, file_path, DRM_MAX_LEN_FILEPATH);\r
+       if ((ret_cpy = g_strlcpy(req_data.fixed_data.request_data, file_path,\r
+                       DRM_MAX_LEN_FILEPATH)) >= DRM_MAX_LEN_FILEPATH) {\r
+               DRM_CLIENT_EXCEPTION("file_path = %s, filepath_len = %d, ret_cpy = %d",\r
+                               file_path, strlen(file_path), ret_cpy);\r
+               return DRM_RETURN_INVALID_ARG;\r
+       }\r
+\r
        req_data.fixed_data.permission_type = perm_type;\r
 \r
        /* Tell the server which API to be used */\r
@@ -257,9 +274,9 @@ EXPORT_API int drm_get_license_status(const char *file_path,
 \r
 ErrorExit:\r
        if (result != DRM_RETURN_SUCCESS) {\r
-               DRM_CLIENT_EXCEPTION("drm_get_license_status failed!!");\r
+               DRM_CLIENT_EXCEPTION("Exit:failed!!, result = 0x%x", result);\r
        } else {\r
-               DRM_CLIENT_LOG("drm_get_license_status Success!!");\r
+               DRM_CLIENT_LOG("Exit:Success!!, result = 0x%x", result);\r
        }\r
 \r
        return result;\r
@@ -283,11 +300,13 @@ ErrorExit:
 EXPORT_API int drm_get_content_info(const char *file_path,\r
                drm_content_info_s *content_info)\r
 {\r
+       DRM_CLIENT_LOG("Enter: file_path = %s", (!file_path) ? NULL:file_path);\r
+\r
        drm_request_data_s req_data;\r
        drm_response_data_s resp_data;\r
        int ret_comm = 0;\r
        drm_result_e result = DRM_RETURN_SUCCESS;\r
-       int retval = 0;\r
+       int ret_cpy = 0;\r
 \r
        /* memset the structures */\r
        memset(&req_data, 0x0, sizeof(drm_request_data_s));\r
@@ -300,13 +319,16 @@ EXPORT_API int drm_get_content_info(const char *file_path,
                return DRM_RETURN_INVALID_ARG;\r
        }\r
 \r
-       DRM_CLIENT_LOG("file_path = %s", file_path);\r
-\r
        /* memset the output structure */\r
        memset(content_info, 0x00, sizeof(drm_content_info_s));\r
 \r
        /* Store the input parameters to the Request Data structure to be sent to server */\r
-       memcpy(req_data.fixed_data.request_data, file_path, DRM_MAX_LEN_FILEPATH);\r
+       if ((ret_cpy = g_strlcpy(req_data.fixed_data.request_data, file_path,\r
+                       DRM_MAX_LEN_FILEPATH)) >= DRM_MAX_LEN_FILEPATH) {\r
+               DRM_CLIENT_EXCEPTION("file_path = %s, filepath_len = %d, ret_cpy = %d",\r
+                               file_path, strlen(file_path), ret_cpy);\r
+               return DRM_RETURN_INVALID_ARG;\r
+       }\r
 \r
        /* Tell the server which API to be used */\r
        req_data.fixed_data.api_name = DRM_GET_CONTENT_INFO;\r
@@ -343,10 +365,10 @@ EXPORT_API int drm_get_content_info(const char *file_path,
        DRM_CLIENT_LOG("content_info->title = %s", content_info->title);\r
 \r
 ErrorExit:\r
-       if (result != DRM_RETURN_SUCCESS) {\r
-               DRM_CLIENT_EXCEPTION("drm_get_content_info failed!!");\r
+if (result != DRM_RETURN_SUCCESS) {\r
+               DRM_CLIENT_EXCEPTION("Exit:failed!!, result = 0x%x", result);\r
        } else {\r
-               DRM_CLIENT_LOG("drm_get_content_info Success!!");\r
+               DRM_CLIENT_LOG("Exit:Success!!, result = 0x%x", result);\r
        }\r
 \r
        return result;\r
@@ -369,11 +391,12 @@ ErrorExit:
 EXPORT_API int drm_get_file_info(const char *file_path,\r
                drm_file_info_s *fileInfo)\r
 {\r
+       DRM_CLIENT_LOG("Enter: file_path = %s", (!file_path) ? NULL:file_path);\r
        drm_request_data_s req_data;\r
        drm_response_data_s resp_data;\r
        int ret_comm = 0;\r
        drm_result_e result = DRM_RETURN_SUCCESS;\r
-       int retval = 0;\r
+       int ret_cpy = 0;\r
 \r
        /* memset the structures */\r
        memset(&req_data, 0x0, sizeof(drm_request_data_s));\r
@@ -392,7 +415,12 @@ EXPORT_API int drm_get_file_info(const char *file_path,
        memset(fileInfo, 0x00, sizeof(drm_file_info_s));\r
 \r
        /* Store the input parameters to the Request Data structure to be sent to server */\r
-       memcpy(req_data.fixed_data.request_data, file_path, DRM_MAX_LEN_FILEPATH);\r
+       if ((ret_cpy = g_strlcpy(req_data.fixed_data.request_data, file_path,\r
+                       DRM_MAX_LEN_FILEPATH)) >= DRM_MAX_LEN_FILEPATH) {\r
+               DRM_CLIENT_EXCEPTION("file_path = %s, filepath_len = %d, ret_cpy = %d",\r
+                               file_path, strlen(file_path), ret_cpy);\r
+               return DRM_RETURN_INVALID_ARG;\r
+       }\r
 \r
        /* Tell the server which API to be used */\r
        req_data.fixed_data.api_name = DRM_GET_FILE_INFO;\r
@@ -422,9 +450,9 @@ EXPORT_API int drm_get_file_info(const char *file_path,
 \r
 ErrorExit:\r
        if (result != DRM_RETURN_SUCCESS) {\r
-               DRM_CLIENT_EXCEPTION("drm_get_file_info failed!!");\r
+               DRM_CLIENT_EXCEPTION("Exit:failed!!, result = 0x%x", result);\r
        } else {\r
-               DRM_CLIENT_LOG("drm_get_file_info Success!!");\r
+               DRM_CLIENT_LOG("Exit:Success!!, result = 0x%x", result);\r
        }\r
        return result;\r
 }\r
@@ -449,11 +477,14 @@ EXPORT_API int drm_get_constraint_info(const char *file_path,
                drm_permission_type_e perm_type,\r
                drm_constraint_info_s *constraint_info)\r
 {\r
+       DRM_CLIENT_LOG("Enter: file_path = %s, perm_type = %d",\r
+                       (!file_path) ? NULL:file_path, perm_type);\r
+\r
        drm_request_data_s req_data;\r
        drm_response_data_s resp_data;\r
        int ret_comm = 0;\r
        drm_result_e result = DRM_RETURN_SUCCESS;\r
-       int retval = 0;\r
+       int ret_cpy = 0;\r
 \r
        /* memset the structures */\r
        memset(&req_data, 0x0, sizeof(drm_request_data_s));\r
@@ -472,7 +503,12 @@ EXPORT_API int drm_get_constraint_info(const char *file_path,
        memset(constraint_info, 0x00, sizeof(drm_constraint_info_s));\r
 \r
        /* Store the input parameters to the Request Data structure to be sent to server */\r
-       memcpy(req_data.fixed_data.request_data, file_path, DRM_MAX_LEN_FILEPATH);\r
+       if ((ret_cpy = g_strlcpy(req_data.fixed_data.request_data, file_path,\r
+                       DRM_MAX_LEN_FILEPATH)) >= DRM_MAX_LEN_FILEPATH) {\r
+               DRM_CLIENT_EXCEPTION("file_path = %s, filepath_len = %d, ret_cpy = %d",\r
+                               file_path, strlen(file_path), ret_cpy);\r
+               return DRM_RETURN_INVALID_ARG;\r
+       }\r
        req_data.fixed_data.permission_type = perm_type;\r
 \r
        /* Tell the server which API to be used */\r
@@ -500,9 +536,9 @@ EXPORT_API int drm_get_constraint_info(const char *file_path,
 \r
 ErrorExit:\r
        if (result != DRM_RETURN_SUCCESS) {\r
-               DRM_CLIENT_EXCEPTION("drm_get_constraint_info failed!!");\r
+               DRM_CLIENT_EXCEPTION("Exit:failed!!, result = 0x%x", result);\r
        } else {\r
-               DRM_CLIENT_LOG("drm_get_constraint_info Success!!");\r
+               DRM_CLIENT_LOG("Exit:Success!!, result = 0x%x", result);\r
        }\r
        return result;\r
 }\r
@@ -529,11 +565,11 @@ EXPORT_API int drm_is_action_allowed(drm_action_type_e action,
                drm_action_allowed_data_s *action_data,\r
                drm_bool_type_e *is_allowed)\r
 {\r
+       DRM_CLIENT_LOG("Enter: action = %d, action_data = %p", action, action_data);\r
        drm_request_data_s req_data;\r
        drm_response_data_s resp_data;\r
        int ret_comm = 0;\r
        drm_result_e result = DRM_RETURN_SUCCESS;\r
-       int retval = 0;\r
 \r
        /* memset the structures */\r
        memset(&req_data, 0x0, sizeof(drm_request_data_s));\r
@@ -605,9 +641,9 @@ EXPORT_API int drm_is_action_allowed(drm_action_type_e action,
 \r
 ErrorExit:\r
        if (result != DRM_RETURN_SUCCESS) {\r
-               DRM_CLIENT_EXCEPTION("drm_is_action_allowed failed!!");\r
+               DRM_CLIENT_EXCEPTION("Exit:failed!!, result = 0x%x", result);\r
        } else {\r
-               DRM_CLIENT_LOG("drm_is_action_allowed Success!!");\r
+               DRM_CLIENT_LOG("Exit:Success!!, result = 0x%x", result);\r
        }\r
        return result;\r
 }\r
@@ -655,12 +691,14 @@ ErrorExit:
  */\r
 EXPORT_API int drm_get_data(drm_data_type_e data_type, void *input, void *output)\r
 {\r
+       DRM_CLIENT_LOG("Enter: data_type = %d, input = %p, output = %p",\r
+                       data_type, input, output);\r
        /* Local Variables */\r
        drm_result_e result = DRM_RETURN_SUCCESS;\r
        drm_request_data_s req_data;\r
        drm_response_data_s resp_data;\r
        int ret_comm = 0;\r
-       int retval = 0;\r
+       int ret_cpy = 0;\r
 \r
        /* memset the structures */\r
        memset(&req_data, 0x0, sizeof(drm_request_data_s));\r
@@ -685,7 +723,13 @@ EXPORT_API int drm_get_data(drm_data_type_e data_type, void *input, void *output
                }\r
 \r
                /* Copy the input parameter to be sent as Request Data */\r
-               memcpy(req_data.fixed_data.request_data, input, DRM_MAX_LEN_FILEPATH);\r
+               if ((ret_cpy = g_strlcpy(req_data.fixed_data.request_data,\r
+                               (const gchar*) input, DRM_MAX_LEN_FILEPATH))\r
+                               >= DRM_MAX_LEN_FILEPATH) {\r
+                       DRM_CLIENT_EXCEPTION("file_path = %s, filepath_len = %d, ret_cpy = %d",\r
+                                       (const char*)input, strlen(((const char*)input)), ret_cpy);\r
+                       return DRM_RETURN_INVALID_ARG;\r
+               }\r
        }\r
                break;\r
        default:\r
@@ -759,7 +803,8 @@ EXPORT_API int drm_get_data(drm_data_type_e data_type, void *input, void *output
                        break;\r
 \r
                case DRM_DATA_TYPE_TRANSACTION_TRACKING_ID: {\r
-                       drm_transaction_id_info_s transid_info = { 0, };\r
+                       drm_transaction_id_info_s transid_info;\r
+                       memset(&transid_info,0,sizeof(transid_info));\r
 \r
                        /* Copy from response data into local structure */\r
                        memcpy(&transid_info, resp_data.fixed_data.response_data,\r
@@ -776,7 +821,8 @@ EXPORT_API int drm_get_data(drm_data_type_e data_type, void *input, void *output
 \r
                case DRM_DATA_TYPE_DIVX_REGISTRATION_CODE: {\r
 \r
-                       drm_code_info_s registration_info = { 0, };\r
+                       drm_code_info_s registration_info;\r
+                       memset(&registration_info,0,sizeof(registration_info));\r
 \r
                        /* Copy from response data into local structure */\r
                        memcpy(&registration_info, resp_data.fixed_data.response_data,\r
@@ -794,7 +840,8 @@ EXPORT_API int drm_get_data(drm_data_type_e data_type, void *input, void *output
 \r
                case DRM_DATA_TYPE_DIVX_DEREGISTRATION_CODE: {\r
 \r
-                       drm_code_info_s deregis_info = { 0, };\r
+                       drm_code_info_s deregis_info;\r
+                       memset(&deregis_info,0,sizeof(deregis_info));\r
 \r
                        /* Copy from response data into local structure */\r
                        memcpy(&deregis_info, resp_data.fixed_data.response_data,\r
@@ -818,12 +865,12 @@ EXPORT_API int drm_get_data(drm_data_type_e data_type, void *input, void *output
        }\r
 \r
        /* Success */\r
-       DRM_CLIENT_LOG("Success:result=0x%x",result);\r
+       DRM_CLIENT_LOG("Exit:Success:result=0x%x",result);\r
        return result;\r
 \r
 ErrorExit:\r
        /* Failure */\r
-       DRM_CLIENT_EXCEPTION("failed:result=0x%x",result);\r
+       DRM_CLIENT_EXCEPTION("Exit:failed:result=0x%x",result);\r
        return result;\r
 }\r
 \r
@@ -896,7 +943,7 @@ ErrorExit:
  *\r
  *                             if request_type = DRM_REQUEST_TYPE_REGISTER_SETAS\r
  *                             then input type: input = pointer to struct drm_register_setas_info_s\r
- *                             and output type: output = NULL\r
+ *                             and output type: output = pointer to the struct drm_register_setas_resp_data_s\r
  *\r
  *                             if request_type = DRM_REQUEST_TYPE_UNREGISTER_SETAS\r
  *                             then input type: input = pointer to struct drm_unregister_setas_info_s\r
@@ -908,12 +955,14 @@ ErrorExit:
 EXPORT_API int drm_process_request(drm_request_type_e request_type,\r
                void *input, void *output)\r
 {\r
+       DRM_CLIENT_LOG("Enter: request_type = %d, input = %p, output = %p",\r
+                       request_type, input, output);\r
        /* Local Variables */\r
        drm_result_e result = DRM_RETURN_SUCCESS;\r
        drm_request_data_s req_data;\r
        drm_response_data_s resp_data;\r
        int ret_comm = 0;\r
-       int retval = 0;\r
+       int ret_cpy = 0;\r
 \r
        /* memset the structures */\r
        memset(&req_data, 0x0, sizeof(drm_request_data_s));\r
@@ -929,7 +978,13 @@ EXPORT_API int drm_process_request(drm_request_type_e request_type,
                        return DRM_RETURN_INVALID_ARG;\r
                } else {\r
                        /* Copy the input to Request Structure */\r
-                       memcpy(req_data.fixed_data.request_data, input, DRM_MAX_LEN_FILEPATH);\r
+                       if ((ret_cpy = g_strlcpy(req_data.fixed_data.request_data,\r
+                                       (const gchar*) input, DRM_MAX_LEN_FILEPATH))\r
+                                       >= DRM_MAX_LEN_FILEPATH) {\r
+                               DRM_CLIENT_EXCEPTION("file_path = %s, filepath_len = %d, ret_cpy = %d",\r
+                                               (const char*)input, strlen(((const char*)input)), ret_cpy);\r
+                               return DRM_RETURN_INVALID_ARG;\r
+                       }\r
                }\r
        }\r
                break;\r
@@ -1222,8 +1277,8 @@ EXPORT_API int drm_process_request(drm_request_type_e request_type,
                switch (request_type) {\r
                case DRM_REQUEST_TYPE_SUBMIT_INITIATOR_URL: {\r
 \r
-                       drm_web_server_resp_data_s ws_resp_data = { 0, };\r
-\r
+                       drm_web_server_resp_data_s ws_resp_data;\r
+                       memset(&ws_resp_data,0,sizeof(ws_resp_data));\r
                        /* Copy from response data into local structure */\r
                        memcpy(&ws_resp_data, resp_data.fixed_data.response_data,\r
                                        sizeof(drm_web_server_resp_data_s));\r
@@ -1240,7 +1295,8 @@ EXPORT_API int drm_process_request(drm_request_type_e request_type,
 \r
                case DRM_REQUEST_TYPE_REGISTER_LICENSE: {\r
 \r
-                       drm_register_lic_resp_s lic_resp = { 0, };\r
+                       drm_register_lic_resp_s lic_resp;\r
+                       memset(&lic_resp,0,sizeof(lic_resp));\r
 \r
                        /* Copy from response data into local structure */\r
                        memcpy(&lic_resp, resp_data.fixed_data.response_data,\r
@@ -1253,6 +1309,19 @@ EXPORT_API int drm_process_request(drm_request_type_e request_type,
                }\r
                        break;\r
 \r
+               case DRM_REQUEST_TYPE_REGISTER_SETAS: {\r
+\r
+                       DRM_CLIENT_LOG("Register Setas Successful");\r
+                       drm_register_setas_resp_data_s setas_resp = { 0, };\r
+\r
+                       /* Copy from response data into local structure */\r
+                       memcpy(&setas_resp, resp_data.fixed_data.response_data,\r
+                       sizeof(drm_register_setas_resp_data_s));\r
+\r
+                       /* Now copy into output parameter */\r
+                       memcpy(output, &setas_resp, sizeof(drm_register_setas_resp_data_s));\r
+               }\r
+                       break;\r
                case DRM_REQUEST_TYPE_REGISTER_FILE:\r
                case DRM_REQUEST_TYPE_UNREGISTER_FILE:\r
                case DRM_REQUEST_TYPE_UNREGISTER_ALL_FILES:\r
@@ -1263,7 +1332,6 @@ EXPORT_API int drm_process_request(drm_request_type_e request_type,
                case DRM_REQUEST_TYPE_REGISTER_MOVE_FILE:\r
                case DRM_REQUEST_TYPE_INSERT_EXT_MEMORY:\r
                case DRM_REQUEST_TYPE_EXTRACT_EXT_MEMORY:\r
-               case DRM_REQUEST_TYPE_REGISTER_SETAS:\r
                case DRM_REQUEST_TYPE_UNREGISTER_SETAS:\r
                        DRM_CLIENT_LOG("No output parameters to be handled!!");\r
                        break;\r
@@ -1279,24 +1347,24 @@ EXPORT_API int drm_process_request(drm_request_type_e request_type,
 ErrorExit:\r
 \r
        /* Free Request Data memory */\r
-       for (int i = 0; i < req_data.fixed_data.num_data_items; i++) {\r
+       for (unsigned int i = 0; i < req_data.fixed_data.num_data_items; i++) {\r
                if (req_data.data_items[i])\r
                        free(req_data.data_items[i]);\r
        }\r
 \r
        /* Free Response Data memory */\r
-       for (int i = 0; i < resp_data.fixed_data.num_data_items; i++) {\r
+       for (unsigned int i = 0; i < resp_data.fixed_data.num_data_items; i++) {\r
                if (resp_data.data_items[i])\r
                        free(resp_data.data_items[i]);\r
        }\r
 \r
        if (DRM_RETURN_SUCCESS == result) {\r
                /* Success */\r
-               DRM_CLIENT_LOG("Success:result=0x%x",result);\r
+               DRM_CLIENT_LOG("Exit:Success:result=0x%x",result);\r
                return result;\r
        } else {\r
                /* Failure */\r
-               DRM_CLIENT_EXCEPTION("failed:result=0x%x",result);\r
+               DRM_CLIENT_EXCEPTION("Exit:failed:result=0x%x",result);\r
                return result;\r
        }\r
 \r
old mode 100644 (file)
new mode 100755 (executable)
index 3e9b0cb..478c71a
 #include <sys/types.h>\r
 #include <sys/socket.h>\r
 #include <errno.h>\r
+#include <pthread.h>\r
 \r
 #include "drm_client_ipc.h"\r
 #include "drm_client_log.h"\r
 \r
 /**\r
- *  This API is used to send a request to the Server to call corresponding API\r
+ * @brief Sync socket fd on a thread basis\r
+ */\r
+static __thread int sockfd = -1;\r
+\r
+/**\r
+ * @brief Client info on a thread basis\r
+ */\r
+static __thread drm_client_info_s client_info;\r
+\r
+/**\r
+ * @brief Async socket fd on a process basis\r
+ */\r
+static int async_sockfd = -1;\r
+\r
+/**\r
+ * @brief Storing the registered callbacks\r
+ */\r
+static drm_client_cb_info_s client_cb_info[DRM_MAX_CLIENT_SUPPORTED];\r
+\r
+/**\r
+ * @brief Mutex to serialise async socket per process\r
+ */\r
+pthread_mutex_t async_mutex = PTHREAD_MUTEX_INITIALIZER;\r
+\r
+\r
+/**\r
+ *  Private function\r
  *\r
- * @param[in]  client_in       Carries the input parameters of Client API to Server\r
- * @param[out] server_out      Carries the output parameters of Client API from Server\r
- * @return             0 on success & other values on failure\r
+ *\r
+ * @param[in]  callinfo        Callback information\r
+ * @return             void\r
  * @remarks\r
  * @see\r
- * @since              0.1\r
+ * @since       0.1\r
  */\r
-int drm_client_comm(drm_request_data_s *client_in, drm_response_data_s *server_out)\r
+void __search_client_info_cb(drm_client_cb_data_s* callinfo)\r
+{\r
+       int i = 0;\r
+       for (i = 0; i < DRM_MAX_CLIENT_SUPPORTED; i++) {\r
+\r
+               DRM_CLIENT_LOG("client_cb_info[i].client_id = %d", client_cb_info[i].client_id);\r
+               DRM_CLIENT_LOG("callinfo->client_id = %d", callinfo->client_id);\r
+\r
+               if (client_cb_info[i].client_id == callinfo->client_id) {\r
+                       if (client_cb_info[i].operation_callback.callback) {\r
+\r
+                               client_cb_info[i].operation_callback.callback(\r
+                                               &callinfo->callback_operation_info,\r
+                                               &callinfo->call_bk_data);\r
+                       } else {\r
+                               DRM_CLIENT_EXCEPTION("Callback function is NULL here!!!!");\r
+                       }\r
+                       /* Callback found, return from here */\r
+                       return;\r
+               }\r
+       }\r
+\r
+       if (DRM_MAX_CLIENT_SUPPORTED == i) {\r
+               /* Client information for the process not yet stored */\r
+               DRM_CLIENT_EXCEPTION("Callback information not stored!!, i = %d", i);\r
+               return;\r
+       }\r
+}\r
+\r
+/**\r
+ *  Private function\r
+ *     Thread handler\r
+ *\r
+ * @param[in]  thread_arg      Thread argument\r
+ * @return             void\r
+ * @remarks\r
+ * @see\r
+ * @since       0.1\r
+ */\r
+void *client_async_cb_handler(void *thread_arg)\r
+{\r
+       drm_client_cb_data_s callinfo;\r
+       int retval = 0, result = 0;\r
+       memset(&callinfo, 0x00, sizeof(drm_client_cb_data_s));\r
+\r
+       /* This Async thread will be running for the entire process alive time\r
+        * to handle all the async related operations sent from the server\r
+        */\r
+       while(1)\r
+       {\r
+               /* waiting for data on async socket */\r
+               if ((retval = read(async_sockfd, &callinfo, sizeof(drm_client_cb_data_s))) < 0) {\r
+                       DRM_CLIENT_EXCEPTION(" Async call_back read error!!, retval = %d, error = %s",\r
+                                       retval, strerror(errno));\r
+                       result = DRM_RETURN_COMMUNICATION_ERROR;\r
+                       goto ErrorExit;\r
+               }\r
+               DRM_CLIENT_LOG("Calling application  call back function from client");\r
+\r
+               /* Search the client cb info from the received client_id and call corresponding handler */\r
+               __search_client_info_cb(&callinfo);\r
+       }\r
+       ErrorExit:\r
+       if(-1 != async_sockfd)\r
+               close(async_sockfd);\r
+       return NULL;\r
+}\r
+\r
+\r
+\r
+/**\r
+ *  Private function\r
+ *     Create Async socket\r
+ *\r
+ * @param[in]  client_in       Client request data\r
+ * @return             void\r
+ * @remarks\r
+ * @see\r
+ * @since       0.1\r
+ */\r
+static int  __create_async_socket(drm_request_data_s *client_in)\r
 {\r
-       int sockfd = 0;\r
        struct sockaddr_un clientaddr;\r
-       drm_request_data_s send_data;\r
-       drm_response_data_s recv_data;\r
        int temp_len_sock = 0;\r
-       int retval = 0;\r
+       unsigned int retval = 0;\r
        drm_result_e result = DRM_RETURN_SUCCESS;\r
+       pthread_t async_thread = 0;\r
+       int rv = 0;\r
+       /* Create a Async socket */\r
+       if ((async_sockfd = socket(AF_UNIX, SOCK_STREAM, 0)) < 0)\r
+       {\r
+               DRM_CLIENT_EXCEPTION("socket error!!, async_sockfd = %d, error = %s",async_sockfd, strerror(errno));\r
+               result = DRM_RETURN_COMMUNICATION_ERROR;\r
+               goto ErrorExit;\r
+       }\r
+       DRM_CLIENT_LOG(" async_sockfd created successful , async_sockfd = %d",async_sockfd);\r
 \r
-       unsigned int offset = 0;\r
-       int bytes_write = DRM_MAX_CHUNK_SIZE;\r
-       int bytes_read = DRM_MAX_CHUNK_SIZE;\r
-\r
-       /* memset the structures */\r
-       memset(&send_data, 0x0, sizeof(drm_request_data_s));\r
-       memset(&recv_data, 0x0, sizeof(drm_response_data_s));\r
+       temp_len_sock = strlen(DRM_SOCK_PATH);\r
+       memset(&clientaddr, 0x00, sizeof(clientaddr));\r
+       clientaddr.sun_family = AF_UNIX;\r
+       memcpy(clientaddr.sun_path, DRM_SOCK_PATH, temp_len_sock);\r
+       clientaddr.sun_path[temp_len_sock] = '\0';\r
 \r
-       /* Create a socket */\r
-       if ((sockfd = socket(AF_UNIX, SOCK_STREAM, 0)) < 0) {\r
-               DRM_CLIENT_EXCEPTION("socket error!!, sockfd = %d, error = %s",\r
-                               sockfd, strerror(errno));\r
+       /* connect to the server, on same server SOCK_PATH */\r
+       if ((retval = connect(async_sockfd, (struct sockaddr*) &clientaddr,sizeof(clientaddr))) < 0)\r
+       {\r
+               DRM_CLIENT_EXCEPTION("Async socket connect error!!, retval = %d, error = %s",retval, strerror(errno));\r
+               result = DRM_RETURN_COMMUNICATION_ERROR;\r
+               goto ErrorExit;\r
+       }\r
+       DRM_CLIENT_LOG("async_sockfd Connection success retval=%d ", retval);\r
+\r
+       /* Store the necessary information into the client info and send to server */\r
+       client_info.p_id = getpid();\r
+       client_info.thread_id = pthread_self();\r
+       client_info.client_id = client_info.p_id + client_info.thread_id;\r
+       DRM_CLIENT_LOG("Client_id = %d", client_info.client_id);\r
+       client_info.sync_sock_fd = -1;\r
+       client_info.async_sock_fd = async_sockfd;\r
+\r
+       /* Send the server */\r
+       if ((retval = write(async_sockfd, (char*) &client_info,sizeof(client_info))) < 0|| retval < sizeof(client_info))\r
+       {\r
+               DRM_CLIENT_EXCEPTION("Async write error!!, retval = %d, error = %s",retval, strerror(errno));\r
                result = DRM_RETURN_COMMUNICATION_ERROR;\r
                goto ErrorExit;\r
        }\r
+       DRM_CLIENT_LOG("async_sockfd Sent info to server");\r
 \r
-       /* Copy the data received from the client into local */\r
-       memcpy(&send_data, client_in, sizeof(drm_request_data_s));\r
+       /* Separate thread is created to handle async callback handling */\r
+       rv = pthread_create(&async_thread, NULL, client_async_cb_handler, NULL);\r
+       if (rv != 0) {\r
+               DRM_CLIENT_EXCEPTION("pthread_create creation failed for Async socket");\r
+               goto ErrorExit;\r
+       }\r
+       DRM_CLIENT_LOG("pthread_create success = [%d]", async_thread);\r
+       DRM_CLIENT_LOG("Async socket create success");\r
+       return 1;\r
+\r
+ErrorExit:\r
+       if(async_sockfd)\r
+               close(async_sockfd);\r
+       return 0;\r
+}\r
+\r
+/**\r
+ *  Private function\r
+ *     Create Sync socket\r
+ *\r
+ * @param[in]  client_in       Client request data\r
+ * @return             void\r
+ * @remarks\r
+ * @see\r
+ * @since       0.1\r
+ */\r
+static int __get_socket(drm_request_data_s *client_in)\r
+{\r
+       int fd;\r
+       int temp_len_sock = 0;\r
+       unsigned int retval = 0;\r
+       struct sockaddr_un clientaddr;\r
+       static int num_clients = 0;\r
+\r
+       if ((fd = socket(AF_UNIX, SOCK_STREAM, 0)) < 0) {\r
+               DRM_CLIENT_EXCEPTION("sockfd socket create error!!, sockfd = %d, error = %s",fd, strerror(errno));\r
+               goto ErrorExit;\r
+       }\r
+       DRM_CLIENT_LOG(" sockfd created successful , sockfd = %d",fd);\r
 \r
        /* Set parameters to be used in connect */\r
        temp_len_sock = strlen(DRM_SOCK_PATH);\r
-\r
        memset(&clientaddr, 0x00, sizeof(clientaddr));\r
        clientaddr.sun_family = AF_UNIX;\r
        memcpy(clientaddr.sun_path, DRM_SOCK_PATH, temp_len_sock);\r
        clientaddr.sun_path[temp_len_sock] = '\0';\r
 \r
-       if ((retval = connect(sockfd, (struct sockaddr*) &clientaddr,\r
-                       sizeof(clientaddr))) < 0) {\r
-               DRM_CLIENT_EXCEPTION("connect error!!, retval = %d, error = %s",\r
-                               retval, strerror(errno));\r
-               result = DRM_RETURN_COMMUNICATION_ERROR;\r
+       if ((retval = connect(fd, (struct sockaddr*)&clientaddr,sizeof(clientaddr))) < 0)\r
+       {\r
+               DRM_CLIENT_EXCEPTION("connect error!!, retval = %d, error = %s",retval, strerror(errno));\r
+               goto ErrorExit;\r
+       }\r
+       DRM_CLIENT_LOG("sync socket is created sockfd = %d retval = %d",fd,retval);\r
+\r
+       client_info.p_id = getpid();\r
+       client_info.thread_id = pthread_self();\r
+       client_info.client_id = client_info.p_id + client_info.thread_id;\r
+       DRM_CLIENT_LOG("Client_id = %d", client_info.client_id);\r
+       client_info.sync_sock_fd = fd;\r
+       client_info.async_sock_fd = async_sockfd;\r
+\r
+       /* Store the callback on a thread basis to be handled for each client */\r
+       if (((drm_initiator_info_s*) (client_in->fixed_data.request_data))->operation_callback.callback) {\r
+               if (num_clients <= (DRM_MAX_CLIENT_SUPPORTED - 1)) {\r
+                       DRM_CLIENT_LOG("num_clients = %d", num_clients);\r
+                       client_cb_info[num_clients].client_id = client_info.client_id;\r
+                       memcpy(&client_cb_info[num_clients].operation_callback,\r
+                                       &(((drm_initiator_info_s*) (client_in->fixed_data.request_data))->operation_callback),\r
+                                       sizeof(drm_operation_cb_s));\r
+                       num_clients++;\r
+               } else {\r
+                       DRM_CLIENT_EXCEPTION("Num of clients exceeded!!, num_clients = %d", num_clients);\r
+                       goto ErrorExit;\r
+               }\r
+       }\r
+\r
+       DRM_CLIENT_LOG("Writing socket sockfd = %d size=%d",fd,sizeof(client_info));\r
+\r
+       DRM_CLIENT_LOG("client_info.client_id before send = %d", client_info.client_id);\r
+       if ((retval = write(fd, (char*) &client_info,sizeof(client_info))) < 0 || retval < sizeof(client_info))\r
+       {\r
+               DRM_CLIENT_EXCEPTION("write error!!, retval = %d, error = %s",retval, strerror(errno));\r
                goto ErrorExit;\r
        }\r
+       DRM_CLIENT_LOG("Written socket sockfd = %d retval=%d",fd,retval);\r
+\r
+       return fd;\r
+ErrorExit:\r
 \r
+       if (fd)\r
+               close(fd);\r
+       return 0;\r
+}\r
+\r
+/**\r
+ *  This API is used to send a request to the Server to call corresponding API\r
+ *\r
+ * @param[in]  client_in       Carries the input parameters of Client API to Server\r
+ * @param[out] server_out      Carries the output parameters of Client API from Server\r
+ * @return             0 on success & other values on failure\r
+ * @remarks\r
+ * @see\r
+ * @since 0.1\r
+ */\r
+int drm_client_comm(drm_request_data_s *client_in, drm_response_data_s *server_out)\r
+{\r
+       unsigned int retval = 0;\r
+       drm_request_data_s send_data;\r
+       drm_response_data_s recv_data;\r
+       drm_result_e result = DRM_RETURN_SUCCESS;\r
+       unsigned int offset = 0;\r
+       unsigned int bytes_write = DRM_MAX_CHUNK_SIZE;\r
+       unsigned int bytes_read = DRM_MAX_CHUNK_SIZE;\r
+\r
+       /* memset the structures */\r
+       memset(&send_data, 0x0, sizeof(drm_request_data_s));\r
+       memset(&recv_data, 0x0, sizeof(drm_response_data_s));\r
+\r
+       DRM_CLIENT_LOG("drm_client_comm in");\r
+\r
+       /* Create Async socket if not created already for this process */\r
+       pthread_mutex_lock(&async_mutex);\r
+       if (-1 == async_sockfd) {\r
+               DRM_CLIENT_LOG("Creating async socket for current process!!");\r
+               if(!__create_async_socket(client_in))\r
+               {\r
+                       DRM_CLIENT_EXCEPTION("__create_async_socket returned error");\r
+                       pthread_mutex_unlock(&async_mutex);\r
+                       goto ErrorExit;\r
+               }\r
+       }\r
+       pthread_mutex_unlock(&async_mutex);\r
+\r
+       /* Create Sync Socket on a per thread basis */\r
+       if (-1 == sockfd) {\r
+               DRM_CLIENT_LOG("initial sockfd = %d", sockfd);\r
+               sockfd = __get_socket(client_in);\r
+               DRM_CLIENT_LOG("after get_socket sockfd = %d", sockfd);\r
+               if (!sockfd) {\r
+                       DRM_CLIENT_EXCEPTION("get_socket failed sockfd = %d", sockfd);\r
+                       result = DRM_RETURN_COMMUNICATION_ERROR;\r
+                       goto ErrorExit;\r
+               }\r
+       }\r
+\r
+       /* Copy the data received from the client into local */\r
+       memcpy(&send_data, client_in, sizeof(drm_request_data_s));\r
        /* First write the static structures */\r
        DRM_CLIENT_LOG("Writing socket sockfd = %d size=%d",sockfd,sizeof(drm_req_fixed_data_s));\r
-       if ((retval = write(sockfd, (char*) &send_data.fixed_data,\r
-                       sizeof(drm_req_fixed_data_s))) < 0) {\r
-               DRM_CLIENT_EXCEPTION("write error!!, retval = %d, error = %s",\r
-                               retval, strerror(errno));\r
+       if ((retval = write(sockfd, (char*) &send_data.fixed_data,sizeof(drm_req_fixed_data_s))) < 0|| retval < sizeof(drm_req_fixed_data_s))\r
+       {\r
+               DRM_CLIENT_EXCEPTION("write error!!, retval = %d, error = %s",retval, strerror(errno));\r
                result = DRM_RETURN_COMMUNICATION_ERROR;\r
                goto ErrorExit;\r
        }\r
@@ -112,38 +369,32 @@ int drm_client_comm(drm_request_data_s *client_in, drm_response_data_s *server_o
 \r
        /* Now send the additional data items if any */\r
        if (send_data.fixed_data.num_data_items > 0) {\r
-\r
-               for (int i = 0; i < send_data.fixed_data.num_data_items; i++) {\r
-\r
-                       if (send_data.fixed_data.data_length[i] > DRM_MAX_CHUNK_SIZE) {\r
-\r
-                               while (bytes_write > 0) {\r
+               for (unsigned int i = 0; i < send_data.fixed_data.num_data_items; i++)\r
+               {\r
+                       if (send_data.fixed_data.data_length[i] > DRM_MAX_CHUNK_SIZE)\r
+                       {\r
+                               while (bytes_write > 0)\r
+                               {\r
                                        DRM_CLIENT_LOG("Writing socket sockfd = %d size=%d",sockfd,bytes_write);\r
-                                       if ((retval = write(sockfd,\r
-                                                       (void*)(send_data.data_items[i] + offset), bytes_write))\r
-                                                       < 0) {\r
-                                               DRM_CLIENT_EXCEPTION(\r
-                                                               "write error!!, retval = %d, error = %s",\r
-                                                               retval, strerror(errno));\r
+                                       if ((retval = write(sockfd,(void*)(send_data.data_items[i] + offset), bytes_write)) < 0 || retval < bytes_write)\r
+                                       {\r
+                                               DRM_CLIENT_EXCEPTION("write error!!, retval = %d, error = %s",retval, strerror(errno));\r
                                                result = DRM_RETURN_COMMUNICATION_ERROR;\r
                                                goto ErrorExit;\r
                                        }\r
                                        DRM_CLIENT_LOG("Written socket sockfd = %d retval=%d",sockfd,retval);\r
-\r
                                        offset += DRM_MAX_CHUNK_SIZE;\r
-                                       bytes_write = (int)(send_data.fixed_data.data_length[i] - offset) > (int)DRM_MAX_CHUNK_SIZE ?\r
-                                                       DRM_MAX_CHUNK_SIZE :\r
-                                                       (int)(send_data.fixed_data.data_length[i] - offset);\r
-\r
+                                       bytes_write = (int)(send_data.fixed_data.data_length[i] - offset) > (int)DRM_MAX_CHUNK_SIZE ? DRM_MAX_CHUNK_SIZE :(int)(send_data.fixed_data.data_length[i] - offset);\r
                                        DRM_CLIENT_LOG("offset = %d, bytes_write = %d", offset, bytes_write);\r
-\r
                                }\r
-                               bytes_write = 0;\r
-                       } else {\r
+                               bytes_write = DRM_MAX_CHUNK_SIZE;\r
+                       }\r
+                       else\r
+                       {\r
                                DRM_CLIENT_LOG("Writing socket sockfd = %d size=%d",sockfd,send_data.fixed_data.data_length[i]);\r
-                               if ((retval = write(sockfd, send_data.data_items[i], send_data.fixed_data.data_length[i])) < 0) {\r
-                                       DRM_CLIENT_EXCEPTION("write error!!, retval = %d, error = %s",\r
-                                                       retval, strerror(errno));\r
+                               if ((retval = write(sockfd, send_data.data_items[i], send_data.fixed_data.data_length[i])) < 0 || retval < send_data.fixed_data.data_length[i])\r
+                               {\r
+                                       DRM_CLIENT_EXCEPTION("write error!!, retval = %d, error = %s",retval, strerror(errno));\r
                                        result = DRM_RETURN_COMMUNICATION_ERROR;\r
                                        goto ErrorExit;\r
                                }\r
@@ -151,87 +402,66 @@ int drm_client_comm(drm_request_data_s *client_in, drm_response_data_s *server_o
                        }\r
                }\r
        }\r
-\r
        /* Set offset to be used again */\r
        offset = 0;\r
-\r
        /* Read the fixed data into the receive structure */\r
        DRM_CLIENT_LOG("Reading socket sockfd = %d size=%d",sockfd,sizeof(drm_resp_fixed_data_s));\r
-       if ((retval = read(sockfd, (char*) &recv_data.fixed_data,\r
-                       sizeof(drm_resp_fixed_data_s))) < 0) {\r
-               DRM_CLIENT_EXCEPTION("read error!!, retval = %d, error = %s",\r
-                               retval, strerror(errno));\r
+       if ((retval = read(sockfd, (char*) &recv_data.fixed_data,sizeof(drm_resp_fixed_data_s))) < 0 || retval < sizeof(drm_resp_fixed_data_s))\r
+       {\r
+               DRM_CLIENT_EXCEPTION("read error!!, retval = %d, error = %s",retval, strerror(errno));\r
                result = DRM_RETURN_COMMUNICATION_ERROR;\r
                goto ErrorExit;\r
        }\r
        DRM_CLIENT_LOG("Read socket sockfd = %d retval=%d",sockfd,retval);\r
-\r
        if (recv_data.fixed_data.num_data_items > 0) {\r
-\r
-               for (int loop = 0; loop < recv_data.fixed_data.num_data_items; loop++) {\r
-\r
+               for (unsigned int loop = 0; loop < recv_data.fixed_data.num_data_items; loop++)\r
+               {\r
                        /* Allocate memory for the data items */\r
-                       recv_data.data_items[loop] = (char*) malloc(\r
-                                       recv_data.fixed_data.data_length[loop]);\r
+                       recv_data.data_items[loop] = (char*) malloc(recv_data.fixed_data.data_length[loop]);\r
                        if (!recv_data.data_items[loop]) {\r
-                               DRM_CLIENT_EXCEPTION(\r
-                                               "Memory Allocation Error!, buf = %p",\r
-                                               recv_data.data_items[loop]);\r
-                               recv_data.fixed_data.resp_result =\r
-                                               DRM_RETURN_INSUFFICIENT_MEMORY;\r
+                               DRM_CLIENT_EXCEPTION("Memory Allocation Error!, buf = %p",recv_data.data_items[loop]);\r
+                               recv_data.fixed_data.resp_result=DRM_RETURN_INSUFFICIENT_MEMORY;\r
                                goto ErrorExit;\r
                        }\r
-\r
-                       if (recv_data.fixed_data.data_length[loop] > DRM_MAX_CHUNK_SIZE) {\r
-\r
-                               while (bytes_read > 0) {\r
+                       if (recv_data.fixed_data.data_length[loop] > DRM_MAX_CHUNK_SIZE)\r
+                       {\r
+                               while (bytes_read > 0)\r
+                               {\r
                                        DRM_CLIENT_LOG("Reading socket sockfd = %d size=%d",sockfd,bytes_read);\r
-                                       if ((retval = read(sockfd,\r
-                                                       (void*)(recv_data.data_items[loop] + offset),\r
-                                                       bytes_read)) < 0) {\r
-                                               DRM_CLIENT_EXCEPTION(\r
-                                                               "Read error!!, retval = %d, error = %s", retval,\r
-                                                               strerror(errno));\r
-                                               recv_data.fixed_data.resp_result =\r
-                                                               DRM_RETURN_COMMUNICATION_ERROR;\r
+                                       if ((retval = read(sockfd,(void*)(recv_data.data_items[loop] + offset),bytes_read)) < 0 || retval < bytes_read)\r
+                                       {\r
+                                               DRM_CLIENT_EXCEPTION("Read error!!, retval = %d, error = %s", retval,strerror(errno));\r
+                                               recv_data.fixed_data.resp_result=DRM_RETURN_COMMUNICATION_ERROR;\r
                                                goto ErrorExit;\r
                                        }\r
                                        DRM_CLIENT_LOG("Read socket sockfd = %d retval=%d",sockfd,retval);\r
-\r
                                        offset += DRM_MAX_CHUNK_SIZE;\r
-                                       bytes_read = (int)(recv_data.fixed_data.data_length[loop] - offset) > (int) DRM_MAX_CHUNK_SIZE ?\r
-                                                       DRM_MAX_CHUNK_SIZE :\r
-                                                       (int)(recv_data.fixed_data.data_length[loop] - offset);\r
-\r
-                                       DRM_CLIENT_LOG("offset = %d, bytes_write = %d", offset, bytes_read);\r
-\r
+                                       bytes_read = (int)(recv_data.fixed_data.data_length[loop] - offset) > (int) DRM_MAX_CHUNK_SIZE ? DRM_MAX_CHUNK_SIZE :(int)(recv_data.fixed_data.data_length[loop] - offset);\r
+                                       DRM_CLIENT_LOG("offset = %d, bytes_read = %d", offset, bytes_read);\r
                                }\r
-                               bytes_write = 0;\r
-                       } else\r
+                               bytes_read = DRM_MAX_CHUNK_SIZE;\r
+                       }\r
+                       else\r
                        {\r
                                DRM_CLIENT_LOG("Reading socket sockfd = %d size=%d",sockfd,recv_data.fixed_data.data_length[loop]);\r
-                               if ((retval = read(sockfd,\r
-                                               recv_data.data_items[loop],\r
-                                               recv_data.fixed_data.data_length[loop])) < 0) {\r
-                                       DRM_CLIENT_EXCEPTION("Read error!!, retval = %d, error = %s",\r
-                                                       retval, strerror(errno));\r
-                                       recv_data.fixed_data.resp_result =\r
-                                                       DRM_RETURN_COMMUNICATION_ERROR;\r
+                               if ((retval = read(sockfd,recv_data.data_items[loop],recv_data.fixed_data.data_length[loop])) < 0 || retval < recv_data.fixed_data.data_length[loop])\r
+                               {\r
+                                       DRM_CLIENT_EXCEPTION("Read error!!, retval = %d, error = %s",retval, strerror(errno));\r
+                                       recv_data.fixed_data.resp_result=DRM_RETURN_COMMUNICATION_ERROR;\r
                                        goto ErrorExit;\r
                                }\r
                                DRM_CLIENT_LOG("Read socket sockfd = %d retval=%d",sockfd,retval);\r
                        }\r
                }\r
        }\r
-\r
        /* Copy the data from the server back to the client into the output parameter */\r
        memcpy(server_out, &recv_data, sizeof(drm_response_data_s));\r
-\r
        DRM_CLIENT_LOG("drm_client_comm success!!!, result = %d", result);\r
+       return result;\r
 \r
-ErrorExit:\r
-       if(-1 != sockfd)\r
+       ErrorExit:\r
+       if (sockfd) {\r
                close(sockfd);\r
-\r
+       }\r
        return result;\r
 }\r
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)