• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2022 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 #include "packet_payload_factory.h"
16 #include "payload_data/close_session_data.h"
17 #include "payload_data/copy_object_data.h"
18 #include "payload_data/delete_object_data.h"
19 #include "payload_data/get_device_info_data.h"
20 #include "payload_data/get_device_prop_desc_data.h"
21 #include "payload_data/get_device_prop_value_data.h"
22 #include "payload_data/get_num_objects_data.h"
23 #include "payload_data/get_object_data.h"
24 #include "payload_data/get_object_handles_data.h"
25 #include "payload_data/get_object_info_data.h"
26 #include "payload_data/get_object_prop_desc_data.h"
27 #include "payload_data/get_object_prop_list_data.h"
28 #include "payload_data/get_object_prop_value_data.h"
29 #include "payload_data/get_object_props_supported_data.h"
30 #include "payload_data/get_object_references_data.h"
31 #include "payload_data/get_partial_object_data.h"
32 #include "payload_data/get_storage_ids_data.h"
33 #include "payload_data/get_storage_info_data.h"
34 #include "payload_data/get_thumb_data.h"
35 #include "payload_data/move_object_data.h"
36 #include "payload_data/open_session_data.h"
37 #include "payload_data/send_object_data.h"
38 #include "payload_data/send_object_info_data.h"
39 #include "payload_data/set_device_prop_value_data.h"
40 #include "payload_data/set_object_prop_value_data.h"
41 #include "payload_data/set_object_references_data.h"
42 
43 using namespace std;
44 namespace OHOS {
45 namespace Media {
PacketPayloadFactory()46 PacketPayloadFactory::PacketPayloadFactory()
47 {
48 }
49 
~PacketPayloadFactory()50 PacketPayloadFactory::~PacketPayloadFactory()
51 {
52 }
53 
CreatePayload(std::shared_ptr<MtpOperationContext> & context,const uint16_t code,const uint16_t stage)54 std::shared_ptr<PayloadData> PacketPayloadFactory::CreatePayload(std::shared_ptr<MtpOperationContext> &context,
55     const uint16_t code, const uint16_t stage)
56 {
57     shared_ptr<PayloadData> payloadData;
58     switch (code) {
59         case MTP_OPERATION_GET_DEVICE_INFO_CODE:
60             payloadData = make_shared<GetDeviceInfoData>(context);
61             break;
62         case MTP_OPERATION_OPEN_SESSION_CODE:
63             payloadData = make_shared<OpenSessionData>(context);
64             break;
65         case MTP_OPERATION_RESET_DEVICE_CODE:
66         case MTP_OPERATION_CLOSE_SESSION_CODE:
67             payloadData = make_shared<CloseSessionData>(context);
68             break;
69         case MTP_OPERATION_GET_OBJECT_PROPS_SUPPORTED_CODE:
70             payloadData = make_shared<GetObjectPropsSupportedData>(context);
71             break;
72         case MTP_OPERATION_GET_OBJECT_HANDLES_CODE:
73             payloadData = make_shared<GetObjectHandlesData>(context);
74             break;
75         case MTP_OPERATION_GET_NUM_OBJECTS_CODE:
76             payloadData = make_shared<GetNumObjectsData>(context);
77             break;
78         case MTP_OPERATION_GET_OBJECT_INFO_CODE:
79             payloadData = make_shared<GetObjectInfoData>(context);
80             break;
81         case MTP_OPERATION_GET_OBJECT_PROP_DESC_CODE:
82             payloadData = make_shared<GetObjectPropDescData>(context);
83             break;
84         case MTP_OPERATION_GET_OBJECT_PROP_VALUE_CODE:
85             payloadData = make_shared<GetObjectPropValueData>(context);
86             break;
87         case MTP_OPERATION_SET_OBJECT_PROP_VALUE_CODE:
88             payloadData = make_shared<SetObjectPropValueData>(context);
89             break;
90         case MTP_OPERATION_GET_OBJECT_PROP_LIST_CODE:
91             payloadData = make_shared<GetObjectPropListData>(context);
92             break;
93         case MTP_OPERATION_GET_OBJECT_REFERENCES_CODE:
94             payloadData = make_shared<GetObjectReferencesData>(context);
95             break;
96         case MTP_OPERATION_SET_OBJECT_REFERENCES_CODE:
97             payloadData = make_shared<SetObjectReferencesData>(context);
98             break;
99         case MTP_OPERATION_DELETE_OBJECT_CODE:
100             payloadData = make_shared<DeleteObjectData>(context);
101             break;
102         default:
103             payloadData = CreatePayloadMore(context, code, stage);
104             break;
105     }
106     return payloadData;
107 }
108 
CreatePayloadMore(std::shared_ptr<MtpOperationContext> & context,const uint16_t code,const uint16_t stage)109 std::shared_ptr<PayloadData> PacketPayloadFactory::CreatePayloadMore(std::shared_ptr<MtpOperationContext> &context,
110     const uint16_t code, const uint16_t stage)
111 {
112     shared_ptr<PayloadData> payloadData;
113     switch (code) {
114         case MTP_OPERATION_MOVE_OBJECT_CODE:
115             payloadData = make_shared<MoveObjectData>(context);
116             break;
117         case MTP_OPERATION_COPY_OBJECT_CODE:
118             payloadData = make_shared<CopyObjectData>(context);
119             break;
120         case MTP_OPERATION_GET_OBJECT_CODE:
121             payloadData = make_shared<GetObjectData>(context);
122             break;
123         case MTP_OPERATION_SEND_OBJECT_CODE:
124             payloadData = make_shared<SendObjectData>(context);
125             break;
126         case MTP_OPERATION_GET_THUMB_CODE:
127             payloadData = make_shared<GetThumbData>(context);
128             break;
129         case MTP_OPERATION_SEND_OBJECT_INFO_CODE:
130             payloadData = make_shared<SendObjectInfoData>(context);
131             break;
132         case MTP_OPERATION_GET_PARTIAL_OBJECT_CODE:
133             payloadData = make_shared<GetPartialObjectData>(context);
134             break;
135         case MTP_OPERATION_GET_STORAGE_IDS_CODE:
136             payloadData = make_shared<GetStorageIdsData>(context);
137             break;
138         case MTP_OPERATION_GET_STORAGE_INFO_CODE:
139             payloadData = make_shared<GetStorageInfoData>(context);
140             break;
141         case MTP_OPERATION_GET_DEVICE_PROP_DESC_CODE: // 0x1004 device_prop_desc
142             payloadData = make_shared<GetDevicePropDescData>(context);
143             break;
144         case MTP_OPERATION_GET_DEVICE_PROP_VALUE_CODE:
145             payloadData = make_shared<GetDevicePropValueData>(context);
146             break;
147         case MTP_OPERATION_SET_DEVICE_PROP_VALUE_CODE:
148             payloadData = make_shared<SetDevicePropValueData>(context);
149             break;
150         default:
151             break;
152     }
153     return payloadData;
154 }
155 } // namespace Media
156 } // namespace OHOS