OSDN Git Service

FUJIのモードでステータスを表示するようにした。
[gokigen/Gr2Control.git] / app / src / main / java / net / osdn / gokigen / gr2control / camera / fuji_x / wrapper / FujiXInterfaceProvider.java
1 package net.osdn.gokigen.gr2control.camera.fuji_x.wrapper;
2
3 import android.app.Activity;
4 import android.util.Log;
5
6 import androidx.annotation.NonNull;
7
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;
40
41 public class FujiXInterfaceProvider implements IFujiXInterfaceProvider, IDisplayInjector
42 {
43     private final String TAG = toString();
44
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";
49
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;
55
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;
62
63     private FujiXCaptureControl captureControl = null;
64     private FujiXFocusingControl focusControl = null;
65
66     /**
67      *
68      *
69      */
70     public FujiXInterfaceProvider(@NonNull Activity context, @NonNull ICameraStatusReceiver provider)
71     {
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);
83     }
84
85     public void prepare()
86     {
87         Log.v(TAG, "prepare()");
88     }
89
90     @Override
91     public void injectDisplay(IAutoFocusFrameDisplay frameDisplayer, IIndicatorControl indicator, IFocusingModeNotify focusingModeNotify)
92     {
93         Log.v(TAG, " injectDisplay()");
94         focusControl = new FujiXFocusingControl(activity, commandPublisher, frameDisplayer, indicator);
95         captureControl = new FujiXCaptureControl(commandPublisher, frameDisplayer);
96     }
97
98     @Override
99     public ICameraConnection getCameraConnection()
100     {
101         return (fujiXConnection);
102     }
103
104     @Override
105     public ILiveViewControl getLiveViewControl()
106     {
107         return (liveViewControl);
108     }
109
110     @Override
111     public ILiveViewListener getLiveViewListener()
112     {
113         if (liveViewControl == null)
114         {
115             return (null);
116         }
117         return (liveViewControl.getLiveViewListener());
118     }
119
120     @Override
121     public IFocusingControl getFocusingControl()
122     {
123         return (focusControl);
124     }
125
126     @Override
127     public ICameraInformation getCameraInformation()
128     {
129         return (null);
130     }
131
132     @Override
133     public IZoomLensControl getZoomLensControl()
134     {
135         return (zoomControl);
136     }
137
138     @Override
139     public ICaptureControl getCaptureControl()
140     {
141         return (captureControl);
142     }
143
144     @Override
145     public IDisplayInjector getDisplayInjector()
146     {
147         return (this);
148     }
149
150     @Override
151     public ICameraStatus getCameraStatusListHolder()
152     {
153         return (statusChecker);
154     }
155
156     @Override
157     public ICameraButtonControl getButtonControl()
158     {
159         return (buttonControl);
160     }
161
162     @Override
163     public ICameraStatusWatcher getCameraStatusWatcher()
164     {
165         return (statusChecker);
166     }
167
168     @Override
169     public IPlaybackControl getPlaybackControl()
170     {
171         return (playbackControl);
172     }
173
174     @Override
175     public ICameraHardwareStatus getHardwareStatus()
176     {
177         return (hardwareStatus);
178     }
179
180     @Override
181     public ICameraRunMode getCameraRunMode()
182     {
183         return (runMode);
184     }
185
186     @Override
187     public IFujiXCommunication getLiveviewCommunication() {
188         return (liveViewControl);
189     }
190
191     @Override
192     public IFujiXCommunication getAsyncEventCommunication() {
193         return (asyncReceiver);
194     }
195
196     @Override
197     public IFujiXCommunication getCommandCommunication()
198     {
199         return (commandPublisher);
200     }
201
202     @Override
203     public IFujiXCommandPublisher getCommandPublisher()
204     {
205         return (commandPublisher);
206     }
207
208     @Override
209     public void setAsyncEventReceiver(@NonNull IFujiXCommandCallback receiver)
210     {
211         asyncReceiver.setEventSubscriber(receiver);
212     }
213 }