OSDN Git Service

FUJIカメラに接続したときの一括ダウンロードが動かなかったのを修正する。
[gokigen/Gr2Control.git] / app / src / main / java / net / osdn / gokigen / gr2control / camera / fuji_x / wrapper / connection / FujiXCameraModeChangeToPlayback.java
1 package net.osdn.gokigen.gr2control.camera.fuji_x.wrapper.connection;
2
3 import android.util.Log;
4 import android.view.View;
5
6 import androidx.annotation.NonNull;
7 import androidx.annotation.Nullable;
8
9 import net.osdn.gokigen.gr2control.camera.fuji_x.wrapper.IFujiXRunModeHolder;
10 import net.osdn.gokigen.gr2control.camera.fuji_x.wrapper.command.IFujiXCommand;
11 import net.osdn.gokigen.gr2control.camera.fuji_x.wrapper.command.IFujiXCommandCallback;
12 import net.osdn.gokigen.gr2control.camera.fuji_x.wrapper.command.IFujiXCommandPublisher;
13 import net.osdn.gokigen.gr2control.camera.fuji_x.wrapper.command.IFujiXMessages;
14 import net.osdn.gokigen.gr2control.camera.fuji_x.wrapper.command.messages.StatusRequestMessage;
15 import net.osdn.gokigen.gr2control.camera.fuji_x.wrapper.command.messages.changemode.ChangeToPlayback1st;
16 import net.osdn.gokigen.gr2control.camera.fuji_x.wrapper.command.messages.changemode.ChangeToPlayback2nd;
17 import net.osdn.gokigen.gr2control.camera.fuji_x.wrapper.command.messages.changemode.ChangeToPlayback3rd;
18 import net.osdn.gokigen.gr2control.camera.fuji_x.wrapper.command.messages.changemode.ChangeToPlayback6th;
19 import net.osdn.gokigen.gr2control.camera.fuji_x.wrapper.command.messages.changemode.ChangeToPlayback7th;
20 import net.osdn.gokigen.gr2control.camera.fuji_x.wrapper.command.messages.changemode.ChangeToPlaybackZero;
21 import net.osdn.gokigen.gr2control.camera.fuji_x.wrapper.command.messages.changemode.ChangeToPlayback4th;
22 import net.osdn.gokigen.gr2control.camera.fuji_x.wrapper.command.messages.changemode.ChangeToPlayback5th;
23
24 public class FujiXCameraModeChangeToPlayback implements View.OnClickListener, IFujiXCommandCallback
25 {
26     private final String TAG = toString();
27     private static final int COMMANDID_CHANGE_TO_PLAYBACK = 200;
28     private final IFujiXCommandPublisher publisher;
29     private final IFujiXCommandCallback callback;
30     private IFujiXRunModeHolder runModeHolder = null;
31
32     public FujiXCameraModeChangeToPlayback(@NonNull IFujiXCommandPublisher publisher, @Nullable IFujiXCommandCallback callback)
33     {
34         this.publisher = publisher;
35         this.callback = callback;
36     }
37
38     public void startModeChange(@Nullable IFujiXRunModeHolder runModeHolder)
39     {
40         Log.v(TAG, " startModeChange() : FujiXCameraModeChangeToPlayback");
41         try
42         {
43             int seqNumber = 8;
44             if (runModeHolder != null)
45             {
46                 this.runModeHolder = runModeHolder;
47                 this.runModeHolder.transitToPlaybackMode(false);
48                 seqNumber = runModeHolder.getStartLiveViewSequenceNumber();
49             }
50             publisher.enqueueCommand(new ChangeToPlaybackZero(COMMANDID_CHANGE_TO_PLAYBACK, seqNumber, this));
51         }
52         catch (Exception e)
53         {
54             e.printStackTrace();
55         }
56     }
57
58     @Override
59     public void onClick(View v)
60     {
61         Log.v(TAG, "onClick");
62         startModeChange(null);
63     }
64
65     @Override
66     public void onReceiveProgress(int currentBytes, int totalBytes, byte[] body)
67     {
68         Log.v(TAG, " " + currentBytes + "/" + totalBytes);
69     }
70
71     @Override
72     public boolean isReceiveMulti()
73     {
74         return (false);
75     }
76
77     @Override
78     public void receivedMessage(int id, byte[] rx_body)
79     {
80         try
81         {
82             switch (id)
83             {
84                 case IFujiXMessages.SEQ_CHANGE_TO_PLAYBACK_ZERO:
85                     enqueueCommand(id, rx_body, new ChangeToPlayback1st(COMMANDID_CHANGE_TO_PLAYBACK,this));
86                     break;
87
88                 case IFujiXMessages.SEQ_CHANGE_TO_PLAYBACK_1ST:
89                     enqueueCommand(id, rx_body, new ChangeToPlayback3rd(COMMANDID_CHANGE_TO_PLAYBACK,this));
90                     break;
91
92                 case IFujiXMessages.SEQ_CHANGE_TO_PLAYBACK_2ND:
93                     enqueueCommand(id, rx_body, new ChangeToPlayback7th(COMMANDID_CHANGE_TO_PLAYBACK,this));
94                     break;
95
96                 case IFujiXMessages.SEQ_CHANGE_TO_PLAYBACK_3RD:
97                     //if (callback != null)
98                     {
99                         //callback.receivedMessage(id, rx_body);
100                     }
101                     enqueueCommand(id, rx_body, new ChangeToPlayback4th(COMMANDID_CHANGE_TO_PLAYBACK,this));
102                     break;
103
104                 case IFujiXMessages.SEQ_CHANGE_TO_PLAYBACK_4TH:
105                     enqueueCommand(id, rx_body, new ChangeToPlayback2nd(COMMANDID_CHANGE_TO_PLAYBACK,this));
106                     break;
107
108                 case IFujiXMessages.SEQ_CHANGE_TO_PLAYBACK_5TH:
109                     enqueueCommand(id, rx_body, new ChangeToPlayback6th(COMMANDID_CHANGE_TO_PLAYBACK,this));
110                     break;
111
112                 case IFujiXMessages.SEQ_CHANGE_TO_PLAYBACK_6TH:
113                     enqueueCommand(id, rx_body, new StatusRequestMessage(this));
114                     break;
115
116                 case IFujiXMessages.SEQ_CHANGE_TO_PLAYBACK_7TH:
117                     enqueueCommand(id, rx_body, new ChangeToPlayback5th(COMMANDID_CHANGE_TO_PLAYBACK,this));
118                     break;
119
120                 case IFujiXMessages.SEQ_STATUS_REQUEST:
121                     if (callback != null)
122                     {
123                         callback.receivedMessage(id, rx_body);
124                     }
125                     if (runModeHolder != null)
126                     {
127                         runModeHolder.transitToPlaybackMode(true);
128                     }
129                     Log.v(TAG, " - - - - - CHANGED PLAYBACK MODE : DONE.");
130                     break;
131
132                 default:
133                     Log.v(TAG, " RECEIVED UNKNOWN ID : " + id);
134                     break;
135             }
136         }
137         catch (Exception e)
138         {
139             e.printStackTrace();
140         }
141     }
142
143     private void enqueueCommand(int id, byte[] rx_body, IFujiXCommand command)
144     {
145         //Log.v(TAG, "  --- receivedMessage : " + id + "[" + rx_body.length + " bytes]");
146         publisher.enqueueCommand(command);
147     }
148
149 }