1 package net.osdn.gokigen.gr2control.camera.fuji_x.wrapper;
3 import android.app.Activity;
4 import android.util.Log;
6 import androidx.annotation.NonNull;
8 import net.osdn.gokigen.gr2control.camera.ICameraButtonControl;
9 import net.osdn.gokigen.gr2control.camera.ICameraConnection;
10 import net.osdn.gokigen.gr2control.camera.ICameraHardwareStatus;
11 import net.osdn.gokigen.gr2control.camera.ICameraInformation;
12 import net.osdn.gokigen.gr2control.camera.ICameraRunMode;
13 import net.osdn.gokigen.gr2control.camera.ICameraStatus;
14 import net.osdn.gokigen.gr2control.camera.ICameraStatusReceiver;
15 import net.osdn.gokigen.gr2control.camera.ICameraStatusWatcher;
16 import net.osdn.gokigen.gr2control.camera.ICaptureControl;
17 import net.osdn.gokigen.gr2control.camera.IDisplayInjector;
18 import net.osdn.gokigen.gr2control.camera.IFocusingControl;
19 import net.osdn.gokigen.gr2control.camera.IFocusingModeNotify;
20 import net.osdn.gokigen.gr2control.camera.ILiveViewControl;
21 import net.osdn.gokigen.gr2control.camera.IZoomLensControl;
22 import net.osdn.gokigen.gr2control.camera.fuji_x.IFujiXInterfaceProvider;
23 import net.osdn.gokigen.gr2control.camera.fuji_x.operation.FujiXButtonControl;
24 import net.osdn.gokigen.gr2control.camera.fuji_x.operation.FujiXCaptureControl;
25 import net.osdn.gokigen.gr2control.camera.fuji_x.operation.FujiXFocusingControl;
26 import net.osdn.gokigen.gr2control.camera.fuji_x.operation.FujiXHardwareStatus;
27 import net.osdn.gokigen.gr2control.camera.fuji_x.operation.FujiXZoomControl;
28 import net.osdn.gokigen.gr2control.camera.fuji_x.wrapper.command.FujiXAsyncResponseReceiver;
29 import net.osdn.gokigen.gr2control.camera.fuji_x.wrapper.command.FujiXCommandPublisher;
30 import net.osdn.gokigen.gr2control.camera.fuji_x.wrapper.command.IFujiXCommandCallback;
31 import net.osdn.gokigen.gr2control.camera.fuji_x.wrapper.command.IFujiXCommandPublisher;
32 import net.osdn.gokigen.gr2control.camera.fuji_x.wrapper.command.IFujiXCommunication;
33 import net.osdn.gokigen.gr2control.camera.fuji_x.wrapper.connection.FujiXConnection;
34 import net.osdn.gokigen.gr2control.camera.fuji_x.wrapper.playback.FujiXPlaybackControl;
35 import net.osdn.gokigen.gr2control.camera.playback.IPlaybackControl;
36 import net.osdn.gokigen.gr2control.liveview.IAutoFocusFrameDisplay;
37 import net.osdn.gokigen.gr2control.liveview.ICameraStatusUpdateNotify;
38 import net.osdn.gokigen.gr2control.liveview.IIndicatorControl;
39 import net.osdn.gokigen.gr2control.liveview.liveviewlistener.ILiveViewListener;
41 public class FujiXInterfaceProvider implements IFujiXInterfaceProvider, IDisplayInjector
43 private final String TAG = toString();
45 private static final int STREAM_PORT = 55742;
46 private static final int ASYNC_RESPONSE_PORT = 55741;
47 private static final int CONTROL_PORT = 55740;
48 private static final String CAMERA_IP = "192.168.0.1";
50 private final Activity activity;
51 private final FujiXCommandPublisher commandPublisher;
52 private final FujiXLiveViewControl liveViewControl;
53 private final FujiXAsyncResponseReceiver asyncReceiver;
54 private final FujiXConnection fujiXConnection;
56 private final FujiXButtonControl buttonControl;
57 private final FujiXStatusChecker statusChecker;
58 private final FujiXPlaybackControl playbackControl;
59 private final FujiXHardwareStatus hardwareStatus;
60 private final FujiXRunMode runMode;
61 private final FujiXZoomControl zoomControl;
63 private FujiXCaptureControl captureControl = null;
64 private FujiXFocusingControl focusControl = null;
70 public FujiXInterfaceProvider(@NonNull Activity context, @NonNull ICameraStatusReceiver provider)
72 this.activity = context;
73 this.commandPublisher = new FujiXCommandPublisher(CAMERA_IP, CONTROL_PORT);
74 fujiXConnection = new FujiXConnection(context, provider, this);
75 liveViewControl = new FujiXLiveViewControl(context, CAMERA_IP, STREAM_PORT);
76 asyncReceiver = new FujiXAsyncResponseReceiver(CAMERA_IP, ASYNC_RESPONSE_PORT);
77 zoomControl = new FujiXZoomControl();
78 buttonControl = new FujiXButtonControl();
79 statusChecker = new FujiXStatusChecker(context, commandPublisher);
80 playbackControl = new FujiXPlaybackControl(context, this);
81 hardwareStatus = new FujiXHardwareStatus();
82 runMode = new FujiXRunMode(this, statusChecker);
87 Log.v(TAG, "prepare()");
91 public void injectDisplay(IAutoFocusFrameDisplay frameDisplayer, IIndicatorControl indicator, IFocusingModeNotify focusingModeNotify)
93 Log.v(TAG, " injectDisplay()");
94 focusControl = new FujiXFocusingControl(activity, commandPublisher, frameDisplayer, indicator);
95 captureControl = new FujiXCaptureControl(commandPublisher, frameDisplayer);
99 public ICameraConnection getCameraConnection()
101 return (fujiXConnection);
105 public ILiveViewControl getLiveViewControl()
107 return (liveViewControl);
111 public ILiveViewListener getLiveViewListener()
113 if (liveViewControl == null)
117 return (liveViewControl.getLiveViewListener());
121 public IFocusingControl getFocusingControl()
123 return (focusControl);
127 public ICameraInformation getCameraInformation()
133 public IZoomLensControl getZoomLensControl()
135 return (zoomControl);
139 public ICaptureControl getCaptureControl()
141 return (captureControl);
145 public IDisplayInjector getDisplayInjector()
151 public ICameraStatus getCameraStatusListHolder()
153 return (statusChecker);
157 public ICameraButtonControl getButtonControl()
159 return (buttonControl);
163 public ICameraStatusWatcher getCameraStatusWatcher()
165 return (statusChecker);
169 public IPlaybackControl getPlaybackControl()
171 return (playbackControl);
175 public ICameraHardwareStatus getHardwareStatus()
177 return (hardwareStatus);
181 public ICameraRunMode getCameraRunMode()
187 public IFujiXCommunication getLiveviewCommunication() {
188 return (liveViewControl);
192 public IFujiXCommunication getAsyncEventCommunication() {
193 return (asyncReceiver);
197 public IFujiXCommunication getCommandCommunication()
199 return (commandPublisher);
203 public IFujiXCommandPublisher getCommandPublisher()
205 return (commandPublisher);
209 public void setAsyncEventReceiver(@NonNull IFujiXCommandCallback receiver)
211 asyncReceiver.setEventSubscriber(receiver);