1 package net.osdn.gokigen.gr2control.camera.fuji_x.wrapper.connection;
3 import android.util.Log;
4 import android.view.View;
6 import androidx.annotation.NonNull;
7 import androidx.annotation.Nullable;
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;
24 public class FujiXCameraModeChangeToPlayback implements View.OnClickListener, IFujiXCommandCallback
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;
32 public FujiXCameraModeChangeToPlayback(@NonNull IFujiXCommandPublisher publisher, @Nullable IFujiXCommandCallback callback)
34 this.publisher = publisher;
35 this.callback = callback;
38 public void startModeChange(@Nullable IFujiXRunModeHolder runModeHolder)
40 Log.v(TAG, " startModeChange() : FujiXCameraModeChangeToPlayback");
44 if (runModeHolder != null)
46 this.runModeHolder = runModeHolder;
47 this.runModeHolder.transitToPlaybackMode(false);
48 seqNumber = runModeHolder.getStartLiveViewSequenceNumber();
50 publisher.enqueueCommand(new ChangeToPlaybackZero(COMMANDID_CHANGE_TO_PLAYBACK, seqNumber, this));
59 public void onClick(View v)
61 Log.v(TAG, "onClick");
62 startModeChange(null);
66 public void onReceiveProgress(int currentBytes, int totalBytes, byte[] body)
68 Log.v(TAG, " " + currentBytes + "/" + totalBytes);
72 public boolean isReceiveMulti()
78 public void receivedMessage(int id, byte[] rx_body)
84 case IFujiXMessages.SEQ_CHANGE_TO_PLAYBACK_ZERO:
85 enqueueCommand(id, rx_body, new ChangeToPlayback1st(COMMANDID_CHANGE_TO_PLAYBACK,this));
88 case IFujiXMessages.SEQ_CHANGE_TO_PLAYBACK_1ST:
89 enqueueCommand(id, rx_body, new ChangeToPlayback3rd(COMMANDID_CHANGE_TO_PLAYBACK,this));
92 case IFujiXMessages.SEQ_CHANGE_TO_PLAYBACK_2ND:
93 enqueueCommand(id, rx_body, new ChangeToPlayback7th(COMMANDID_CHANGE_TO_PLAYBACK,this));
96 case IFujiXMessages.SEQ_CHANGE_TO_PLAYBACK_3RD:
97 //if (callback != null)
99 //callback.receivedMessage(id, rx_body);
101 enqueueCommand(id, rx_body, new ChangeToPlayback4th(COMMANDID_CHANGE_TO_PLAYBACK,this));
104 case IFujiXMessages.SEQ_CHANGE_TO_PLAYBACK_4TH:
105 enqueueCommand(id, rx_body, new ChangeToPlayback2nd(COMMANDID_CHANGE_TO_PLAYBACK,this));
108 case IFujiXMessages.SEQ_CHANGE_TO_PLAYBACK_5TH:
109 enqueueCommand(id, rx_body, new ChangeToPlayback6th(COMMANDID_CHANGE_TO_PLAYBACK,this));
112 case IFujiXMessages.SEQ_CHANGE_TO_PLAYBACK_6TH:
113 enqueueCommand(id, rx_body, new StatusRequestMessage(this));
116 case IFujiXMessages.SEQ_CHANGE_TO_PLAYBACK_7TH:
117 enqueueCommand(id, rx_body, new ChangeToPlayback5th(COMMANDID_CHANGE_TO_PLAYBACK,this));
120 case IFujiXMessages.SEQ_STATUS_REQUEST:
121 if (callback != null)
123 callback.receivedMessage(id, rx_body);
125 if (runModeHolder != null)
127 runModeHolder.transitToPlaybackMode(true);
129 Log.v(TAG, " - - - - - CHANGED PLAYBACK MODE : DONE.");
133 Log.v(TAG, " RECEIVED UNKNOWN ID : " + id);
143 private void enqueueCommand(int id, byte[] rx_body, IFujiXCommand command)
145 //Log.v(TAG, " --- receivedMessage : " + id + "[" + rx_body.length + " bytes]");
146 publisher.enqueueCommand(command);