\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
} 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
* @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
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
* @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
{\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
{\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
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
*/\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
}\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