4 * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
6 * Contact: JuHak Park <juhaki.park@samsung.com>,
7 * JuneHyuk Lee <junhyuk7.lee@samsung.com>,
8 * SunBong Ha <sunbong.ha@samsung.com>
10 * Licensed under the Apache License, Version 2.0 (the "License");
11 * you may not use this file except in compliance with the License.
12 * You may obtain a copy of the License at
14 * http://www.apache.org/licenses/LICENSE-2.0
16 * Unless required by applicable law or agreed to in writing, software
17 * distributed under the License is distributed on an "AS IS" BASIS,
18 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19 * See the License for the specific language governing permissions and
20 * limitations under the License.
28 * For any sort of issue you concern as to this software,
29 * you may use following point of contact.
30 * All resources contributed on this software
31 * are orinigally written by S-Core Inc., a member of Samsung Group.
33 * Wook Choi <wook.choi@samsung.com>
36 #ifndef ENGINE_CONTROLLER_MESSAGE_H_
37 #define ENGINE_CONTROLLER_MESSAGE_H_
41 #include "engine_controller_define.h"
42 #include "engine_controller.h"
43 #include "param_value.h"
44 #include "param_spec.h"
45 #include "task_spec.h"
47 typedef enum engine_controller_msg_type_e {
48 ENGINE_CONTROLLER_UNKNOWN_MSG_TYPE = 0,
49 ENGINE_CONTROLLER_REGISTER_MSG_TYPE,
50 ENGINE_CONTROLLER_UNREGISTER_MSG_TYPE,
51 ENGINE_CONTROLLER_REGISTER_QUEUING_RULE_SPEC_MSG_TYPE,
52 ENGINE_CONTROLLER_REQUEST_MSG_TYPE,
53 ENGINE_CONTROLLER_CANCEL_MSG_TYPE,
54 ENGINE_CONTROLLER_CANCEL_ALL_MSG_TYPE,
55 } engine_controller_msg_type_t;
57 typedef struct engine_controller_msg_head_s engine_controller_msg_head_t;
58 struct engine_controller_msg_head_s {
59 engine_controller_msg_type_t msg_type;
63 typedef struct engine_controller_request_msg_s engine_controller_request_msg_t;
64 struct engine_controller_request_msg_s {
65 engine_controller_msg_head_t msg_head;
72 ec_int *in_param_index_array;
73 param_value_t *in_param_value_array;
75 /* aynchronous finish callback */
76 task_finish_callback_func task_finish_callback;
77 ec_pointer simple_task_finish_callback_usr_data;
80 typedef struct engine_controller_cancel_all_msg_s engine_controller_cancel_all_msg_t;
81 struct engine_controller_cancel_all_msg_s {
82 engine_controller_msg_head_t msg_head;
85 typedef struct engine_controller_cancel_msg_s engine_controller_cancel_msg_t;
86 struct engine_controller_cancel_msg_s {
87 engine_controller_msg_head_t msg_head;
89 ec_uint request_msg_id_to_cancel;
92 typedef struct engine_controller_register_msg_s engine_controller_register_msg_t;
93 struct engine_controller_register_msg_s {
94 engine_controller_msg_head_t msg_head;
97 task_spec_t *pTask_spec;
98 calculate_identifier_func id_calc_func;
101 typedef struct engine_controller_register_queuing_rule_spec_msg_s engine_controller_register_queuing_rule_spec_msg_t;
102 struct engine_controller_register_queuing_rule_spec_msg_s {
103 engine_controller_msg_head_t msg_head;
105 queuing_rule_spec_t *pSpec;
107 /* aynchronous finish callback */
108 register_finish_callback_func register_finish_callback;
112 void engine_controller_msg_set_msg_head(engine_controller_msg_head_t *pMsg_head, engine_controller_msg_type_t msg_type, ec_uint msg_id);
114 engine_controller_register_msg_t *engine_controller_msg_create_register_msg(ec_uint task_spec_id, task_spec_t *pTask_spec, calculate_identifier_func id_calc_func);
116 void engine_controller_msg_free_register_msg(engine_controller_register_msg_t *pRegister_msg);
118 engine_controller_register_queuing_rule_spec_msg_t *engine_controller_msg_create_register_queuing_rule_spec_msg(queuing_rule_spec_t *pSpec, register_finish_callback_func register_finish_callback, ec_pointer usr_data);
120 void engine_controller_msg_free_register_queuing_rule_spec_msg(engine_controller_register_queuing_rule_spec_msg_t *pMsg);
122 /* TODO : unregister msg */
124 engine_controller_request_msg_t *engine_controller_msg_create_request_msg(ec_uint task_spec_id, ec_uint identifier, ec_int cnt_in_param, ec_int *in_param_index_array, ECValueType * in_param_value_type_array, ec_pointer * in_param_value_array, task_finish_callback_func task_finish_callback, ec_pointer simple_task_finish_callback_usr_data);
126 void engine_controller_msg_free_request_msg(engine_controller_request_msg_t *pMsg);
128 engine_controller_cancel_all_msg_t *engine_controller_msg_create_cancel_all_msg();
129 void engine_controller_msg_free_cancel_all_msg(engine_controller_cancel_all_msg_t *pCancel_all_msg);
131 engine_controller_cancel_msg_t *engine_controller_msg_create_cancel_msg(ec_uint request_msg_id_to_cancel);
132 void engine_controller_msg_free_cancel_msg(engine_controller_cancel_msg_t *pCancel_msg);
134 ec_boolean engine_controller_msg_check_same_msg_type(engine_controller_msg_head_t *pHead, engine_controller_msg_type_t msg_type);
135 ec_boolean engine_controller_msg_is_register_msg(engine_controller_msg_head_t *pHead);
136 ec_boolean engine_controller_msg_is_unregister_msg(engine_controller_msg_head_t *pHead);
137 ec_boolean engine_controller_msg_is_register_queuing_rule_spec_msg(engine_controller_msg_head_t *pHead);
138 ec_boolean engine_controller_msg_is_request_msg(engine_controller_msg_head_t *pHead);
139 ec_boolean engine_controller_msg_is_cancel_msg(engine_controller_msg_head_t *pHead);
140 ec_boolean engine_controller_msg_is_cancel_all_msg(engine_controller_msg_head_t *pHead);
142 #endif /* ENGINE_CONTROLLER_MESSAGE_H_ */