Merged latest changes in Tizen 2.0 2.0alpha master 2.0_alpha submit/master/20120920.151107
authorMahendra Kumar Prajapat <mahendra.p@samsung.com>
Wed, 5 Sep 2012 12:04:31 +0000 (17:34 +0530)
committerMahendra Kumar Prajapat <mahendra.p@samsung.com>
Wed, 5 Sep 2012 12:04:31 +0000 (17:34 +0530)
include/drm_client_types.h
packaging/drm-client.spec
service/drm_client.cpp
service/drm_client_ipc.cpp

index 97c7235..37f283f 100755 (executable)
@@ -507,7 +507,7 @@ typedef enum {
 \r
 /**\r
  * @enum drm_initiator_type\r
- * @brief DRM Initiator type.\r
+ * @brief DRM Initiator type\r
  */\r
 typedef enum {\r
        DRM_INITIATOR_TYPE_NONE = -1,\r
@@ -518,6 +518,22 @@ typedef enum {
 } drm_initiator_type;\r
 \r
 /**\r
+ * @enum drm_const_type_e\r
+ * @brief DRM constraint types\r
+ */\r
+typedef enum {\r
+       DRM_CONSTRAINT_TYPE_RENTAL = 0,\r
+       DRM_CONSTRAINT_TYPE_RENTAL_UNLIMITED,\r
+       DRM_CONSTRAINT_TYPE_PURCHASE,\r
+       DRM_CONSTRAINT_TYPE_BASE,\r
+       DRM_CONSTRAINT_TYPE_EXPIRED,\r
+       DRM_CONSTRAINT_TYPE_NOT_AUTHORIZED,\r
+       DRM_CONSTRAINT_TYPE_INVALID_DRM_VERSION,\r
+       DRM_CONSTRAINT_TYPE_UNKNOWN_TYPE,\r
+       DRM_CONSTRAINT_TYPE_GENERAL_ERROR\r
+} drm_const_type_e;\r
+\r
+/**\r
  * @struct drm_content_info_s\r
  * @brief DRM content info structure.\r
  */\r
@@ -589,14 +605,15 @@ typedef struct {
  * @brief DRM Constraint type structure.\r
  */\r
 typedef struct {\r
-       int is_unlimited;               /**< Unlimited constraints */\r
-       int is_count;                   /**< Count constraint present/not present */\r
-       int is_datetime;                /**< Datetime constraint present/not present */\r
-       int is_interval;                /**< Interval constraint present/not present */\r
-       int is_timedcount;              /**< TimedCount constraint present/not present */\r
-       int is_accumulated;             /**< Accumulated constraint present/not present */\r
-       int is_individual;              /**< Individual constraint present/not present */\r
-       int is_system;                  /**< System constraint present/not present */\r
+       int is_unlimited;                                 /**< Unlimited constraints */\r
+       int is_count;                                     /**< Count constraint present/not present */\r
+       int is_datetime;                                  /**< Datetime constraint present/not present */\r
+       int is_interval;                                  /**< Interval constraint present/not present */\r
+       int is_timedcount;                                /**< TimedCount constraint present/not present */\r
+       int is_accumulated;                               /**< Accumulated constraint present/not present */\r
+       int is_individual;                                /**< Individual constraint present/not present */\r
+       int is_system;                                    /**< System constraint present/not present */\r
+       drm_const_type_e constraint_type;         /**< Divx constraint types */\r
 } drm_constraint_type_s;\r
 \r
 /**\r
index e2b722e..3ad8c00 100755 (executable)
@@ -1,6 +1,6 @@
 Name:       drm-client
 Summary:    DRM client Package
-Version:    0.0.26
+Version:    0.0.28
 Release:    0
 Group:      TO_BE/FILLED_IN
 License:    Apache
index 9a74e03..7c2882f 100755 (executable)
@@ -1025,6 +1025,18 @@ EXPORT_API int drm_process_request(drm_request_type_e request_type,
                                        input, output);\r
                        return DRM_RETURN_INVALID_ARG;\r
                } else {\r
+\r
+                       DRM_CLIENT_LOG("initiator_url[%s]", ((drm_initiator_info_s*)input)->initiator_url);\r
+                       DRM_CLIENT_LOG("initiator_url_len[%u]", ((drm_initiator_info_s*)input)->initiator_url_len);\r
+                       DRM_CLIENT_LOG("operation_callback.callback[%p]", ((drm_initiator_info_s*)input)->operation_callback.callback);\r
+                       DRM_CLIENT_LOG("init_type[%d]", ((drm_initiator_info_s*)input)->init_type);\r
+                       DRM_CLIENT_LOG("custom_data.app_id[%s]", ((drm_initiator_info_s*)input)->custom_data.app_id);\r
+                       DRM_CLIENT_LOG("custom_data.user_guid[%s]", ((drm_initiator_info_s*)input)->custom_data.user_guid);\r
+                       DRM_CLIENT_LOG("custom_data.device_id[%s]", ((drm_initiator_info_s*)input)->custom_data.device_id);\r
+                       DRM_CLIENT_LOG("custom_data.order_id[%s]", ((drm_initiator_info_s*)input)->custom_data.order_id);\r
+                       DRM_CLIENT_LOG("custom_data.service_id[%s]", ((drm_initiator_info_s*)input)->custom_data.service_id);\r
+                       DRM_CLIENT_LOG("custom_data.account_id[%s]", ((drm_initiator_info_s*)input)->custom_data.account_id);\r
+\r
                        /* Copy the input to Request Structure */\r
                        memcpy(req_data.fixed_data.request_data, input,\r
                                        sizeof(drm_initiator_info_s));\r
index 8781311..ac31c13 100755 (executable)
@@ -27,6 +27,7 @@
  * @brief       DRM Client Inter process communication definitions.\r
  * @author      Mahendra Kumar Prajapat (mahendra.p@samsung.com)\r
  * @author      Harsha Shekar (h.shekar@samsung.com)\r
+ * @author      Ravi S (ravi.cs@samsung.com)\r
  * @version     0.1\r
  * @history     0.1: DRM Client Inter process communication definitions.\r
  */\r
@@ -175,7 +176,7 @@ static int  __create_async_socket(drm_request_data_s *client_in)
 {\r
        struct sockaddr_un clientaddr;\r
        int temp_len_sock = 0;\r
-       unsigned int retval = 0;\r
+       int retval = 0;\r
        drm_result_e result = DRM_RETURN_SUCCESS;\r
        pthread_t async_thread = 0;\r
        int rv = 0;\r
@@ -250,7 +251,7 @@ static int __get_socket(drm_request_data_s *client_in)
 {\r
        int fd;\r
        int temp_len_sock = 0;\r
-       unsigned int retval = 0;\r
+       int retval = 0;\r
        struct sockaddr_un clientaddr;\r
        static int num_clients = 0;\r
 \r
@@ -281,21 +282,6 @@ static int __get_socket(drm_request_data_s *client_in)
        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
@@ -326,7 +312,7 @@ ErrorExit:
  */\r
 int drm_client_comm(drm_request_data_s *client_in, drm_response_data_s *server_out)\r
 {\r
-       unsigned int retval = 0;\r
+       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
@@ -365,6 +351,34 @@ int drm_client_comm(drm_request_data_s *client_in, drm_response_data_s *server_o
                }\r
        }\r
 \r
+       /* Store the callback on a thread basis to be handled for each client */\r
+       DRM_CLIENT_LOG("Callback = %p", ((drm_initiator_info_s*) (client_in->fixed_data.request_data))->operation_callback.callback);\r
+       DRM_CLIENT_LOG("Client id = %d", client_info.client_id);\r
+\r
+       if (((drm_initiator_info_s*) (client_in->fixed_data.request_data))->operation_callback.callback) {\r
+               /* Callback present, store if not yet stored\r
+                * Loop through the list checking for client id if stored */\r
+               int loop = 0;\r
+               for (; loop < DRM_MAX_CLIENT_SUPPORTED; loop++) {\r
+                       if (client_cb_info[loop].client_id == client_info.client_id) {\r
+                               DRM_CLIENT_LOG("Callback info already stored!!, client_id[%d] = %d",\r
+                                               loop, client_cb_info[loop].client_id);\r
+                               break;\r
+                       } else if (client_cb_info[loop].client_id == 0) {\r
+                               DRM_CLIENT_LOG("No entry for cb yet, loop = %d", loop);\r
+                               DRM_CLIENT_LOG("Empty structure, storing client callback here, id = %d", client_info.client_id);\r
+                               client_cb_info[loop].client_id = client_info.client_id;\r
+                               memcpy(&client_cb_info[loop].operation_callback,\r
+                                               &(((drm_initiator_info_s*) (client_in->fixed_data.request_data))->operation_callback),\r
+                                               sizeof(drm_operation_cb_s));\r
+                               break;\r
+                       }\r
+               }\r
+               if (DRM_MAX_CLIENT_SUPPORTED == loop) {\r
+                       DRM_CLIENT_LOG("loop = %d, Maximum clients reached!!!", loop);\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