OSDN Git Service

なんどか取得に失敗するのに対策中。
[gokigen/PKRemote.git] / app / src / main / java / net / osdn / gokigen / pkremote / camera / vendor / ptpip / wrapper / command / messages / PtpIpCommandGeneric.java
1 package net.osdn.gokigen.pkremote.camera.vendor.ptpip.wrapper.command.messages;
2
3 import androidx.annotation.NonNull;
4
5 import net.osdn.gokigen.pkremote.camera.vendor.ptpip.wrapper.command.IPtpIpCommandCallback;
6
7
8 public class PtpIpCommandGeneric extends PtpIpCommandBase
9 {
10     private final IPtpIpCommandCallback callback;
11     private final boolean isDumpLog;
12     private final int bodySize;
13     private final int id;
14     private final int holdId;
15     private final int estimatedObjectSize;
16
17     private final byte opCode0;
18     private final byte opCode1;
19
20     private final byte data0;
21     private final byte data1;
22     private final byte data2;
23     private final byte data3;
24
25     private final byte data4;
26     private final byte data5;
27     private final byte data6;
28     private final byte data7;
29
30     private final byte data8;
31     private final byte data9;
32     private final byte dataA;
33     private final byte dataB;
34
35     private final byte dataC;
36     private final byte dataD;
37     private final byte dataE;
38     private final byte dataF;
39
40     public PtpIpCommandGeneric(@NonNull IPtpIpCommandCallback callback, int id, boolean isDumpLog, int holdId, int opcode)
41     {
42         this.callback = callback;
43         this.bodySize = 0;
44         this.isDumpLog = isDumpLog;
45         this.estimatedObjectSize = -1;
46
47         this.id = id;
48         this.holdId = holdId;
49         opCode0 = ((byte) (0x000000ff & opcode));
50         opCode1 = ((byte)((0x0000ff00 & opcode) >> 8));
51
52         data0 = 0;
53         data1 = 0;
54         data2 = 0;
55         data3 = 0;
56
57         data4 = 0;
58         data5 = 0;
59         data6 = 0;
60         data7 = 0;
61
62         data8 = 0; // ((byte) (0x000000ff & value3));
63         data9 = 0; // ((byte)((0x0000ff00 & value3) >> 8));
64         dataA = 0; // ((byte)((0x00ff0000 & value3) >> 16));
65         dataB = 0; // ((byte)((0xff000000 & value3) >> 24));
66
67         dataC = 0; // ((byte) (0x000000ff & value4));
68         dataD = 0; // ((byte)((0x0000ff00 & value4) >> 8));
69         dataE = 0; // ((byte)((0x00ff0000 & value4) >> 16));
70         dataF = 0; // ((byte)((0xff000000 & value4) >> 24));
71     }
72
73     public PtpIpCommandGeneric(@NonNull IPtpIpCommandCallback callback, int id, boolean isDumpLog, int holdId, int opcode, int bodySize, int value)
74     {
75         this.callback = callback;
76         this.bodySize = bodySize;
77         this.isDumpLog = isDumpLog;
78         this.estimatedObjectSize = -1;
79
80         this.id = id;
81         this.holdId = holdId;
82         opCode0 = ((byte) (0x000000ff & opcode));
83         opCode1 = ((byte)((0x0000ff00 & opcode) >> 8));
84
85         data0 = ((byte) (0x000000ff & value));
86         data1 = ((byte)((0x0000ff00 & value) >> 8));
87         data2 = ((byte)((0x00ff0000 & value) >> 16));
88         data3 = ((byte)((0xff000000 & value) >> 24));
89
90         data4 = 0; // ((byte) (0x000000ff & value));
91         data5 = 0; // ((byte)((0x0000ff00 & value) >> 8));
92         data6 = 0; // ((byte)((0x00ff0000 & value) >> 16));
93         data7 = 0; // ((byte)((0xff000000 & value) >> 24));
94
95         data8 = 0; // ((byte) (0x000000ff & value3));
96         data9 = 0; // ((byte)((0x0000ff00 & value3) >> 8));
97         dataA = 0; // ((byte)((0x00ff0000 & value3) >> 16));
98         dataB = 0; // ((byte)((0xff000000 & value3) >> 24));
99
100         dataC = 0; // ((byte) (0x000000ff & value4));
101         dataD = 0; // ((byte)((0x0000ff00 & value4) >> 8));
102         dataE = 0; // ((byte)((0x00ff0000 & value4) >> 16));
103         dataF = 0; // ((byte)((0xff000000 & value4) >> 24));
104     }
105
106     public PtpIpCommandGeneric(@NonNull IPtpIpCommandCallback callback, int id, boolean isDumpLog, int holdId, int opcode, int bodySize, int value, int value2)
107     {
108         this.callback = callback;
109         this.bodySize = bodySize;
110         this.isDumpLog = isDumpLog;
111         this.estimatedObjectSize = -1;
112
113         this.id = id;
114         this.holdId = holdId;
115         opCode0 = ((byte) (0x000000ff & opcode));
116         opCode1 = ((byte)((0x0000ff00 & opcode) >> 8));
117
118         data0 = ((byte) (0x000000ff & value));
119         data1 = ((byte)((0x0000ff00 & value) >> 8));
120         data2 = ((byte)((0x00ff0000 & value) >> 16));
121         data3 = ((byte)((0xff000000 & value) >> 24));
122
123         data4 = ((byte) (0x000000ff & value2));
124         data5 = ((byte)((0x0000ff00 & value2) >> 8));
125         data6 = ((byte)((0x00ff0000 & value2) >> 16));
126         data7 = ((byte)((0xff000000 & value2) >> 24));
127
128         data8 = 0; // ((byte) (0x000000ff & value3));
129         data9 = 0; // ((byte)((0x0000ff00 & value3) >> 8));
130         dataA = 0; // ((byte)((0x00ff0000 & value3) >> 16));
131         dataB = 0; // ((byte)((0xff000000 & value3) >> 24));
132
133         dataC = 0; // ((byte) (0x000000ff & value4));
134         dataD = 0; // ((byte)((0x0000ff00 & value4) >> 8));
135         dataE = 0; // ((byte)((0x00ff0000 & value4) >> 16));
136         dataF = 0; // ((byte)((0xff000000 & value4) >> 24));
137     }
138
139     public PtpIpCommandGeneric(@NonNull IPtpIpCommandCallback callback, int id, boolean isDumpLog, int holdId, int opcode, int bodySize, int value, int value2, int value3)
140     {
141         this.callback = callback;
142         this.bodySize = bodySize;
143         this.isDumpLog = isDumpLog;
144         this.estimatedObjectSize = -1;
145
146         this.id = id;
147         this.holdId = holdId;
148         opCode0 = ((byte) (0x000000ff & opcode));
149         opCode1 = ((byte)((0x0000ff00 & opcode) >> 8));
150
151         data0 = ((byte) (0x000000ff & value));
152         data1 = ((byte)((0x0000ff00 & value) >> 8));
153         data2 = ((byte)((0x00ff0000 & value) >> 16));
154         data3 = ((byte)((0xff000000 & value) >> 24));
155
156         data4 = ((byte) (0x000000ff & value2));
157         data5 = ((byte)((0x0000ff00 & value2) >> 8));
158         data6 = ((byte)((0x00ff0000 & value2) >> 16));
159         data7 = ((byte)((0xff000000 & value2) >> 24));
160
161         data8 = ((byte) (0x000000ff & value3));
162         data9 = ((byte)((0x0000ff00 & value3) >> 8));
163         dataA = ((byte)((0x00ff0000 & value3) >> 16));
164         dataB = ((byte)((0xff000000 & value3) >> 24));
165
166         dataC = 0; // ((byte) (0x000000ff & value4));
167         dataD = 0; // ((byte)((0x0000ff00 & value4) >> 8));
168         dataE = 0; // ((byte)((0x00ff0000 & value4) >> 16));
169         dataF = 0; // ((byte)((0xff000000 & value4) >> 24));
170
171     }
172
173     public PtpIpCommandGeneric(@NonNull IPtpIpCommandCallback callback, int id, boolean isDumpLog, int holdId, int opcode, int bodySize, int value, int value2, int value3, int value4)
174     {
175         this.callback = callback;
176         this.bodySize = bodySize;
177         this.isDumpLog = isDumpLog;
178         this.estimatedObjectSize = -1;
179
180         this.id = id;
181         this.holdId = holdId;
182         opCode0 = ((byte) (0x000000ff & opcode));
183         opCode1 = ((byte)((0x0000ff00 & opcode) >> 8));
184
185         data0 = ((byte) (0x000000ff & value));
186         data1 = ((byte)((0x0000ff00 & value) >> 8));
187         data2 = ((byte)((0x00ff0000 & value) >> 16));
188         data3 = ((byte)((0xff000000 & value) >> 24));
189
190         data4 = ((byte) (0x000000ff & value2));
191         data5 = ((byte)((0x0000ff00 & value2) >> 8));
192         data6 = ((byte)((0x00ff0000 & value2) >> 16));
193         data7 = ((byte)((0xff000000 & value2) >> 24));
194
195         data8 = ((byte) (0x000000ff & value3));
196         data9 = ((byte)((0x0000ff00 & value3) >> 8));
197         dataA = ((byte)((0x00ff0000 & value3) >> 16));
198         dataB = ((byte)((0xff000000 & value3) >> 24));
199
200         dataC = ((byte) (0x000000ff & value4));
201         dataD = ((byte)((0x0000ff00 & value4) >> 8));
202         dataE = ((byte)((0x00ff0000 & value4) >> 16));
203         dataF = ((byte)((0xff000000 & value4) >> 24));
204     }
205
206     @Override
207     public IPtpIpCommandCallback responseCallback()
208     {
209         return (callback);
210     }
211
212     @Override
213     public int getId()
214     {
215         return (id);
216     }
217
218     @Override
219     public int estimatedReceiveDataSize()
220     {
221         return (estimatedObjectSize);
222     }
223
224     @Override
225     public byte[] commandBody()
226     {
227         if (bodySize == 2)
228         {
229             return (new byte[]{
230
231                     // packet type
232                     (byte) 0x06, (byte) 0x00, (byte) 0x00, (byte) 0x00,
233
234                     // data phase info
235                     (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
236
237                     // operation code
238                     opCode0, opCode1,
239
240                     // sequence number
241                     (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
242
243                     // data ...
244                     data0, data1,
245             });
246         }
247         else if (bodySize == 4)
248         {
249             return (new byte[]{
250
251                     // packet type
252                     (byte) 0x06, (byte) 0x00,  (byte) 0x00, (byte) 0x00,
253
254                     // data phase info
255                     (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
256
257                     // operation code
258                     opCode0, opCode1,
259
260                     // sequence number
261                     (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
262
263                     // data ...
264                     data0, data1, data2, data3,
265             });
266         }
267         else if (bodySize == 8)
268         {
269             return (new byte[]{
270
271                     // packet type
272                     (byte) 0x06, (byte) 0x00,  (byte) 0x00, (byte) 0x00,
273
274                     // data phase info
275                     (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
276
277                     // operation code
278                     opCode0, opCode1,
279
280                     // sequence number
281                     (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
282
283                     // data ...
284                     data0, data1, data2, data3,
285                     data4, data5, data6, data7,
286             });
287         }
288         else if (bodySize == 12)
289         {
290             return (new byte[]{
291
292                     // packet type
293                     (byte) 0x06, (byte) 0x00,  (byte) 0x00, (byte) 0x00,
294
295                     // data phase info
296                     (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
297
298                     // operation code
299                     opCode0, opCode1,
300
301                     // sequence number
302                     (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
303
304                     // data ...
305                     data0, data1, data2, data3,
306                     data4, data5, data6, data7,
307                     data8, data9, dataA, dataB,
308             });
309         }
310         else if (bodySize == 16)
311         {
312             return (new byte[]{
313
314                     // packet type
315                     (byte) 0x06, (byte) 0x00,  (byte) 0x00, (byte) 0x00,
316
317                     // data phase info
318                     (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
319
320                     // operation code
321                     opCode0, opCode1,
322
323                     // sequence number
324                     (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
325
326                     // data ...
327                     data0, data1, data2, data3,
328                     data4, data5, data6, data7,
329                     data8, data9, dataA, dataB,
330                     dataC, dataD, dataE, dataF,
331             });
332         }
333         else //  ボディ長が 2, 4, 8, 12 以外の場合... (ボディなし)
334         {
335             return (new byte[]{
336
337                     // packet type
338                     (byte) 0x06, (byte) 0x00,  (byte) 0x00, (byte) 0x00,
339
340                     // data phase info
341                     (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
342
343                     // operation code
344                     opCode0, opCode1,
345
346                     // sequence number
347                     (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
348             });
349         }
350     }
351
352     @Override
353     public int getHoldId()
354     {
355         return (holdId);
356     }
357
358     @Override
359     public boolean dumpLog()
360     {
361         return (isDumpLog);
362     }
363 }