1 package net.osdn.gokigen.a01d.camera.kodak.wrapper;
3 import android.app.Activity;
4 import android.util.Log;
6 import androidx.annotation.NonNull;
8 import net.osdn.gokigen.a01d.IInformationReceiver;
9 import net.osdn.gokigen.a01d.camera.ICameraConnection;
10 import net.osdn.gokigen.a01d.camera.ICameraInformation;
11 import net.osdn.gokigen.a01d.camera.ICameraStatus;
12 import net.osdn.gokigen.a01d.camera.ICameraStatusReceiver;
13 import net.osdn.gokigen.a01d.camera.ICameraStatusWatcher;
14 import net.osdn.gokigen.a01d.camera.ICaptureControl;
15 import net.osdn.gokigen.a01d.camera.IDisplayInjector;
16 import net.osdn.gokigen.a01d.camera.IFocusingControl;
17 import net.osdn.gokigen.a01d.camera.IFocusingModeNotify;
18 import net.osdn.gokigen.a01d.camera.ILiveViewControl;
19 import net.osdn.gokigen.a01d.camera.IZoomLensControl;
20 import net.osdn.gokigen.a01d.camera.kodak.IKodakInterfaceProvider;
21 import net.osdn.gokigen.a01d.camera.kodak.operation.KodakCaptureControl;
22 import net.osdn.gokigen.a01d.camera.kodak.operation.KodakFocusingControl;
23 import net.osdn.gokigen.a01d.camera.kodak.operation.KodakZoomLensControl;
24 import net.osdn.gokigen.a01d.camera.kodak.wrapper.command.IKodakCommandCallback;
25 import net.osdn.gokigen.a01d.camera.kodak.wrapper.command.IKodakCommandPublisher;
26 import net.osdn.gokigen.a01d.camera.kodak.wrapper.command.IKodakCommunication;
27 import net.osdn.gokigen.a01d.camera.kodak.wrapper.command.KodakCommandCommunicator;
28 import net.osdn.gokigen.a01d.camera.kodak.wrapper.connection.KodakConnection;
29 import net.osdn.gokigen.a01d.camera.kodak.wrapper.hardware.KodakCameraInformation;
30 import net.osdn.gokigen.a01d.camera.kodak.wrapper.liveview.KodakLiveViewControl;
31 import net.osdn.gokigen.a01d.camera.kodak.wrapper.status.IKodakRunModeHolder;
32 import net.osdn.gokigen.a01d.camera.kodak.wrapper.status.KodakRunMode;
33 import net.osdn.gokigen.a01d.camera.kodak.wrapper.status.KodakStatusChecker;
34 import net.osdn.gokigen.a01d.liveview.IAutoFocusFrameDisplay;
35 import net.osdn.gokigen.a01d.liveview.ICameraStatusUpdateNotify;
36 import net.osdn.gokigen.a01d.liveview.IIndicatorControl;
37 import net.osdn.gokigen.a01d.liveview.liveviewlistener.ILiveViewListener;
39 public class KodakInterfaceProvider implements IKodakInterfaceProvider, IDisplayInjector
41 private final String TAG = toString();
43 private static final int CONTROL_PORT = 9175;
44 private static final int LIVEVIEW_PORT = 9176;
45 private static final String CAMERA_IP = "172.16.0.254";
47 private final Activity activity;
48 private final KodakRunMode runmode;
49 private final KodakCameraInformation cameraInformation;
50 private KodakCaptureControl captureControl;
51 private KodakFocusingControl focusingControl;
52 private KodakConnection canonConnection;
53 private KodakCommandCommunicator commandPublisher;
54 private KodakLiveViewControl liveViewControl;
55 private KodakZoomLensControl zoomControl;
56 private KodakStatusChecker statusChecker;
57 private ICameraStatusUpdateNotify statusListener;
58 private IInformationReceiver informationReceiver;
60 public KodakInterfaceProvider(@NonNull Activity context, @NonNull ICameraStatusReceiver provider, @NonNull ICameraStatusUpdateNotify statusListener, @NonNull IInformationReceiver informationReceiver)
62 this.activity = context;
63 commandPublisher = new KodakCommandCommunicator(CAMERA_IP, CONTROL_PORT, true, false);
64 liveViewControl = new KodakLiveViewControl(context, CAMERA_IP, LIVEVIEW_PORT);
65 statusChecker = new KodakStatusChecker();
66 canonConnection = new KodakConnection(context, provider, this, statusChecker);
67 cameraInformation = new KodakCameraInformation();
68 zoomControl = new KodakZoomLensControl();
69 this.statusListener = statusListener;
70 this.runmode = new KodakRunMode();
71 this.informationReceiver = informationReceiver;
75 public void injectDisplay(IAutoFocusFrameDisplay frameDisplayer, IIndicatorControl indicator, IFocusingModeNotify focusingModeNotify)
77 Log.v(TAG, "injectDisplay()");
78 captureControl = new KodakCaptureControl(commandPublisher, frameDisplayer);
79 focusingControl = new KodakFocusingControl(activity, commandPublisher, frameDisplayer, indicator);
83 public ICameraConnection getCameraConnection()
85 return (canonConnection);
89 public ILiveViewControl getLiveViewControl()
91 return (liveViewControl);
95 public ILiveViewListener getLiveViewListener()
97 return (liveViewControl.getLiveViewListener());
101 public IFocusingControl getFocusingControl()
103 return (focusingControl);
107 public ICameraInformation getCameraInformation()
109 return (cameraInformation);
113 public IZoomLensControl getZoomLensControl()
115 return (zoomControl);
119 public ICaptureControl getCaptureControl()
121 return (captureControl);
125 public IDisplayInjector getDisplayInjector()
131 public IKodakRunModeHolder getRunModeHolder()
137 public IKodakCommandCallback getStatusHolder() {
138 return (statusChecker);
142 public IKodakCommandPublisher getCommandPublisher()
144 return (commandPublisher);
148 public IKodakCommunication getCommandCommunication() {
149 return (commandPublisher);
153 public ICameraStatusWatcher getCameraStatusWatcher()
155 return (statusChecker);
159 public ICameraStatusUpdateNotify getStatusListener()
161 return (statusListener);
165 public ICameraStatus getCameraStatusListHolder()
167 return (statusChecker);
171 public IInformationReceiver getInformationReceiver()
173 // ちょっとこの引き回しは気持ちがよくない...
174 return (informationReceiver);
178 public ICameraStatusWatcher getStatusWatcher()
180 return (statusChecker);