2 * Copyright (c) 2017 Samsung Electronics Co., Ltd All Rights Reserved
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
20 #include <gmock/gmock.h>
21 #include <gtest/gtest.h>
23 #include "mtpResponder.h"
25 MtpResponder::MtpResponder(void)
30 MtpResponder::~MtpResponder(void)
36 int MtpResponder::mtp_init(add_rem_store_t sel)
43 int MtpResponder::mtp_deinit(void)
45 add_rem_store_t sel = MTP_ADDREM_AUTO;
53 int MtpResponder::hutil_get_storage_entry(void)
56 add_rem_store_t sel = MTP_ADDREM_AUTO;
59 ret = _hutil_get_storage_entry(0, NULL);
64 int MtpResponder::hutil_get_storage_ids(void)
67 add_rem_store_t sel = MTP_ADDREM_AUTO;
70 ptp_array_t store_ids = {UINT32_TYPE, 0, 0, NULL};
72 ret = _hutil_get_storage_ids(&store_ids);
77 int MtpResponder::hutil_get_device_property(void)
80 add_rem_store_t sel = MTP_ADDREM_AUTO;
83 ret = _hutil_get_device_property(0, NULL);
88 int MtpResponder::hutil_set_device_property(void)
91 add_rem_store_t sel = MTP_ADDREM_AUTO;
94 ret = _hutil_set_device_property(0, NULL, 0);
99 int MtpResponder::hutil_reset_device_entry(void)
102 add_rem_store_t sel = MTP_ADDREM_AUTO;
105 ret = _hutil_reset_device_entry(0);
110 int MtpResponder::hutil_add_object_entry(void)
113 add_rem_store_t sel = MTP_ADDREM_AUTO;
116 ret = _hutil_add_object_entry(NULL, NULL, NULL);
121 int MtpResponder::hutil_remove_object_entry(void)
124 add_rem_store_t sel = MTP_ADDREM_AUTO;
127 ret = _hutil_remove_object_entry(0, 0);
132 int MtpResponder::hutil_get_object_entry(void)
135 add_rem_store_t sel = MTP_ADDREM_AUTO;
138 mtp_obj_t *ptr_mtp_obj = NULL;
139 ret = _hutil_get_object_entry(0, &ptr_mtp_obj);
144 int MtpResponder::hutil_copy_object_entries(void)
147 add_rem_store_t sel = MTP_ADDREM_AUTO;
150 mtp_uint32 new_hobj = 0;
151 ret = _hutil_copy_object_entries(0, 0, 0, 0, &new_hobj, 0);
156 int MtpResponder::hutil_move_object_entry(void)
159 add_rem_store_t sel = MTP_ADDREM_AUTO;
162 ret = _hutil_move_object_entry(0, 0, 0);
167 int MtpResponder::hutil_duplicate_object_entry(void)
170 add_rem_store_t sel = MTP_ADDREM_AUTO;
173 mtp_uint32 new_handle = 0;
174 ret = _hutil_duplicate_object_entry(0, 0, 0, &new_handle);
179 int MtpResponder::hutil_read_file_data_from_offset(void)
182 add_rem_store_t sel = MTP_ADDREM_AUTO;
185 mtp_uint32 data_sz = 0;
186 mtp_char data[] = "aaaaaaaaaa";
187 ret = _hutil_read_file_data_from_offset(0, (off_t)0, (void*)data, &data_sz);
192 int MtpResponder::hutil_write_file_data(void)
195 add_rem_store_t sel = MTP_ADDREM_AUTO;
198 mtp_char fpath[] = "/Phone/DCIM/abc.txt";
199 ret = _hutil_write_file_data(0, NULL, fpath);
204 int MtpResponder::hutil_get_object_entry_size(void)
207 add_rem_store_t sel = MTP_ADDREM_AUTO;
210 mtp_uint64 obj_sz = 0;
211 ret = _hutil_get_object_entry_size(0, &obj_sz);
216 #ifdef MTP_SUPPORT_SET_PROTECTION
217 int MtpResponder::hutil_set_protection(void)
220 add_rem_store_t sel = MTP_ADDREM_AUTO;
223 ret = _hutil_set_protection(0, 0);
227 #endif /* MTP_SUPPORT_SET_PROTECTION */
229 int MtpResponder::hutil_get_num_objects(void)
232 add_rem_store_t sel = MTP_ADDREM_AUTO;
235 mtp_uint32 num_obj = 0;
236 ret = _hutil_get_num_objects(0, 0, 0, &num_obj);
241 int MtpResponder::hutil_get_object_handles(void)
244 add_rem_store_t sel = MTP_ADDREM_AUTO;
247 ptp_array_t handle_arr = {UINT32_TYPE, 0, 0, NULL};
248 ret = _hutil_get_object_handles(0, 0, 0, &handle_arr);
253 int MtpResponder::hutil_construct_object_entry(void)
256 add_rem_store_t sel = MTP_ADDREM_AUTO;
259 obj_data_t obj_data = {0, 0, NULL};
260 mtp_obj_t *mtp_obj = NULL;
261 mtp_char data[] = "aaaaaaaaa";
262 ret = _hutil_construct_object_entry(0, 0, &obj_data, &mtp_obj, (void*)data, 0);
267 //========================================
269 int MtpResponder::hutil_construct_object_entry_prop_list(void)
272 add_rem_store_t sel = MTP_ADDREM_AUTO;
275 obj_data_t obj_data = {0, 0, NULL};
276 mtp_obj_t *mtp_obj = NULL;
277 mtp_char data[] = "aaaaaaaaa";
278 mtp_uint32 err_idx = 0;
279 ret = _hutil_construct_object_entry_prop_list(0, 0, 0, 0, &obj_data, &mtp_obj, (void*)data, 0, &err_idx);
284 int MtpResponder::hutil_get_object_prop_value(void)
287 add_rem_store_t sel = MTP_ADDREM_AUTO;
290 mtp_obj_t *mtp_obj = NULL;
291 ret = _hutil_get_object_prop_value(0, 0, NULL, &mtp_obj);
296 int MtpResponder::hutil_update_object_property(void)
299 add_rem_store_t sel = MTP_ADDREM_AUTO;
302 mtp_uint16 data_type = 0;
303 mtp_char buf[] = "aaaaaa";
304 mtp_uint32 prop_sz = 0;
305 ret = _hutil_update_object_property(0, 0, &data_type, (void*)buf, 0, &prop_sz);
310 int MtpResponder::hutil_get_prop_desc(void)
313 add_rem_store_t sel = MTP_ADDREM_AUTO;
316 mtp_char data[] = "aaaaaa";
317 ret = _hutil_get_prop_desc(0, 0, &data);
322 int MtpResponder::hutil_get_object_prop_supported(void)
325 add_rem_store_t sel = MTP_ADDREM_AUTO;
328 ptp_array_t prop_arr = {UINT32_TYPE, 0, 0, NULL};
330 ret = _hutil_get_object_prop_supported(0, &prop_arr);
335 int MtpResponder::hutil_get_object_prop_list(void)
338 add_rem_store_t sel = MTP_ADDREM_AUTO;
341 ptp_array_t obj_arr = {UINT32_TYPE, 0, 0, NULL};
343 #ifdef MTP_USE_RUNTIME_GETOBJECTPROPVALUE
344 ret = _hutil_get_object_prop_list(0, 0, 0, 0, 0, NULL, &obj_arr);
345 #else /* MTP_USE_RUNTIME_GETOBJECTPROPVALUE */
346 ret = _hutil_get_object_prop_list(0, 0, 0, 0, 0, NULL);
347 #endif /* MTP_USE_RUNTIME_GETOBJECTPROPVALUE */
352 int MtpResponder::hutil_add_object_references_enhanced(void)
355 add_rem_store_t sel = MTP_ADDREM_AUTO;
358 mtp_uchar buffer[] = "aaaaaaaa";
359 ret = _hutil_add_object_references_enhanced(0, buffer, 0);
364 int MtpResponder::hutil_remove_object_reference(void)
367 add_rem_store_t sel = MTP_ADDREM_AUTO;
370 ret = _hutil_remove_object_reference(0, 0);
375 int MtpResponder::hutil_get_object_references(void)
378 add_rem_store_t sel = MTP_ADDREM_AUTO;
381 ptp_array_t parray = {UINT32_TYPE, 0, 0, NULL};
382 mtp_uint32 num_ele = 0;
383 ret = _hutil_get_object_references(0, &parray, &num_ele);
388 int MtpResponder::hutil_get_number_of_objects(void)
391 add_rem_store_t sel = MTP_ADDREM_AUTO;
394 mtp_uint32 num_obj = 0;
395 ret = _hutil_get_number_of_objects(0, &num_obj);
400 int MtpResponder::hutil_get_interdep_prop_config_list_size(void)
403 add_rem_store_t sel = MTP_ADDREM_AUTO;
406 mtp_uint32 list_sz = 0;
407 ret = _hutil_get_interdep_prop_config_list_size(&list_sz, 0);
412 int MtpResponder::hutil_get_interdep_prop_config_list_data(void)
415 add_rem_store_t sel = MTP_ADDREM_AUTO;
418 mtp_char data[] = "aaaaaaaa";
419 ret = _hutil_get_interdep_prop_config_list_data(data, 0, 0);
424 int MtpResponder::hutil_get_playback_skip(void)
427 add_rem_store_t sel = MTP_ADDREM_AUTO;
430 ret = _hutil_get_playback_skip(0);
435 int MtpResponder::hutil_format_storage(void)
438 add_rem_store_t sel = MTP_ADDREM_AUTO;
441 ret = _hutil_format_storage(0, 0);
446 int MtpResponder::hutil_get_storage_info_size(void)
448 add_rem_store_t sel = MTP_ADDREM_AUTO;
452 store_info_t store_info;
453 ret_size = _hutil_get_storage_info_size(&store_info);
457 return ERROR_OPERATION_FAILED;
460 //================== _MTP_CMD_HANDLER_H_ ======================
462 int MtpResponder::cmd_hdlr_send_response(void)
465 add_rem_store_t sel = MTP_ADDREM_AUTO;
468 mtp_uint32 params = 0;
469 ret = _cmd_hdlr_send_response(NULL, 0, 0, ¶ms);
474 int MtpResponder::cmd_hdlr_send_response_code(void)
477 add_rem_store_t sel = MTP_ADDREM_AUTO;
480 ret = _cmd_hdlr_send_response_code(NULL, 0);
485 //================== _MTP_EVENT_HANDLER_H_ ======================
487 int MtpResponder::hdlr_get_param_cmd_container(void)
491 cmd_container_t cntr;
492 mtp_uint32 index = 0;
493 _hdlr_init_cmd_container(&cntr);
495 ret = _hdlr_get_param_cmd_container(&cntr, index);
500 int MtpResponder::hdlr_add_param_resp_container(void)
504 cmd_container_t cntr;
506 mtp_uint32 param = 0;
507 _hdlr_init_cmd_container(&cntr);
508 _hdlr_copy_cmd_container(&cntr, &dst);
510 ret = _hdlr_add_param_resp_container(&dst, 0, ¶m);
515 int MtpResponder::hdlr_validate_cmd_container(void)
519 cmd_container_t cntr;
520 _hdlr_init_cmd_container(&cntr);
522 ret = _hdlr_validate_cmd_container((mtp_uchar*)&cntr, 0);
527 int MtpResponder::hdlr_alloc_buf_data_container(void)
529 data_container_t dst;
530 _hdlr_init_data_container(&dst, 0, 0);
532 mtp_uchar *ptr = NULL;
533 ptr = _hdlr_alloc_buf_data_container(&dst, 0, 0);
536 return ERROR_OPERATION_FAILED;
540 int MtpResponder::hdlr_send_data_container(void)
544 data_container_t dst;
545 _hdlr_init_data_container(&dst, 0, 0);
546 _hdlr_alloc_buf_data_container(&dst, 0, 0);
548 ret = _hdlr_send_data_container(&dst);
553 int MtpResponder::hdlr_send_bulk_data(void)
557 data_container_t dst;
558 _hdlr_init_data_container(&dst, 0, 0);
560 ret = _hdlr_send_bulk_data((mtp_uchar*)&dst, sizeof(data_container_t));
565 int MtpResponder::hdlr_rcv_data_container(void)
569 data_container_t dst;
570 _hdlr_init_data_container(&dst, 0, 0);
572 ret = _hdlr_rcv_data_container(&dst, 0);
577 int MtpResponder::hdlr_get_payload_size(void)
579 int payload_size = -1;
581 data_container_t dst;
582 _hdlr_init_data_container(&dst, 0, 0);
584 payload_size = _hdlr_get_payload_size(&dst);
586 if (payload_size >= 0)
588 return ERROR_OPERATION_FAILED;
591 int MtpResponder::hdlr_get_payload_data(void)
593 mtp_uchar *ptr = NULL;
595 data_container_t dst;
596 _hdlr_init_data_container(&dst, 0, 0);
597 _hdlr_alloc_buf_data_container(&dst, 0, 0);
599 ptr = _hdlr_get_payload_data(&dst);
603 return ERROR_OPERATION_FAILED;
606 int MtpResponder::hdlr_resp_container_init(void)
609 _hdlr_resp_container_init(&dst, 0, 0);
614 int MtpResponder::hdlr_init_event_container(void)
617 _hdlr_init_event_container(&dst, 0, 0, 0, 0);
622 int MtpResponder::hdlr_init_event_container_with_param(void)
625 _hdlr_init_event_container_with_param(&dst, 0, 0, 0, 0);
630 int MtpResponder::hdlr_conv_cmd_container_byte_order(void)
633 _hdlr_conv_cmd_container_byte_order(&dst);
638 int MtpResponder::hdlr_conv_data_container_byte_order(void)
640 data_container_t dst;
641 _hdlr_conv_data_container_byte_order(&dst);