#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
--- /dev/null
+/*\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
+++ /dev/null
-/*\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
+++ /dev/null
-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
+++ /dev/null
-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
+++ /dev/null
-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
+++ /dev/null
-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
+++ /dev/null
-@PREFIX@/lib/*
\ No newline at end of file
+++ /dev/null
-#!/bin/sh
-#if [ ${USER} = "root" ]
-#then
-# Do post installation operations as a root
-#else
-# Do post installation operations as a non-root
-#fi
-
+++ /dev/null
-@PREFIX@/include/drm-client/drm_client.h
-@PREFIX@/include/drm-client/drm_client_types.h
+++ /dev/null
-#!/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
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
/**\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
} 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
\r
#include "tizen_error.h"\r
\r
+\r
/******************************************************************/\r
\r
/*\r
*/\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
} 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
}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
\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
} 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
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
%{_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
*\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
*/\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
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
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
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
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
*/\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
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
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
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
\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
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
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
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
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
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
\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
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
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
\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
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
\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
*/\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
}\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
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
\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(®istration_info,0,sizeof(registration_info));\r
\r
/* Copy from response data into local structure */\r
memcpy(®istration_info, resp_data.fixed_data.response_data,\r
\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
}\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
*\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
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
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
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
\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
}\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
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
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
#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
\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
}\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