OSDN Git Service

Fujiでカメラと接続する前にカメラのモードを変えてしまおうとするロジックを抑止する。
authorMRSa <mrsa@myad.jp>
Sun, 26 Apr 2020 05:07:58 +0000 (14:07 +0900)
committerMRSa <mrsa@myad.jp>
Sun, 26 Apr 2020 05:07:58 +0000 (14:07 +0900)
app/src/main/java/net/osdn/gokigen/gr2control/camera/fuji_x/wrapper/FujiXInterfaceProvider.java
app/src/main/java/net/osdn/gokigen/gr2control/camera/fuji_x/wrapper/FujiXRunMode.java
app/src/main/java/net/osdn/gokigen/gr2control/camera/fuji_x/wrapper/FujiXStatusHolder.java
app/src/main/java/net/osdn/gokigen/gr2control/camera/fuji_x/wrapper/command/FujiXCommandPublisher.java
app/src/main/java/net/osdn/gokigen/gr2control/camera/fuji_x/wrapper/command/messages/StatusRequestMessage.java
app/src/main/java/net/osdn/gokigen/gr2control/camera/fuji_x/wrapper/connection/FujiXCameraConnectSequence.java
app/src/main/java/net/osdn/gokigen/gr2control/camera/fuji_x/wrapper/connection/FujiXCameraModeChangeToLiveView.java
app/src/main/java/net/osdn/gokigen/gr2control/camera/fuji_x/wrapper/connection/FujiXConnection.java

index 7de477a..78bff2c 100644 (file)
@@ -98,7 +98,7 @@ public class FujiXInterfaceProvider implements IFujiXInterfaceProvider, IDisplay
         statusChecker = new FujiXStatusChecker(context, commandPublisher);
         playbackControl = new FujiXPlaybackControl(context, this);
         hardwareStatus = new FujiXHardwareStatus();
-        runMode = new FujiXRunMode(commandPublisher);
+        runMode = new FujiXRunMode(this);
     }
 
     public void prepare()
index f922922..12d2f74 100644 (file)
@@ -4,9 +4,10 @@ import android.util.Log;
 
 import androidx.annotation.NonNull;
 
+import net.osdn.gokigen.gr2control.camera.ICameraConnection;
 import net.osdn.gokigen.gr2control.camera.ICameraRunMode;
 import net.osdn.gokigen.gr2control.camera.ICameraRunModeCallback;
-import net.osdn.gokigen.gr2control.camera.fuji_x.wrapper.command.FujiXCommandPublisher;
+import net.osdn.gokigen.gr2control.camera.fuji_x.IFujiXInterfaceProvider;
 import net.osdn.gokigen.gr2control.camera.fuji_x.wrapper.command.IFujiXCommandCallback;
 import net.osdn.gokigen.gr2control.camera.fuji_x.wrapper.connection.FujiXCameraModeChangeToLiveView;
 import net.osdn.gokigen.gr2control.camera.fuji_x.wrapper.connection.FujiXCameraModeChangeToPlayback;
@@ -14,17 +15,19 @@ import net.osdn.gokigen.gr2control.camera.fuji_x.wrapper.connection.FujiXCameraM
 public class FujiXRunMode implements ICameraRunMode, IFujiXRunModeHolder, IFujiXCommandCallback
 {
     private final String TAG = toString();
+    private final IFujiXInterfaceProvider interfaceProvider;
     private final FujiXCameraModeChangeToLiveView toLiveViewCommand;
     private final FujiXCameraModeChangeToPlayback toPlaybackCommand;
     private boolean isChanging = false;
     private boolean isRecordingMode = false;
+    private boolean modeChangeIsPending = false;
     private ICameraRunModeCallback runModeCallback = null;
 
-    FujiXRunMode(@NonNull FujiXCommandPublisher commandPublisher)
+    FujiXRunMode(@NonNull IFujiXInterfaceProvider interfaceProvider)
     {
-        //
-        toLiveViewCommand = new FujiXCameraModeChangeToLiveView(commandPublisher, this);
-        toPlaybackCommand = new FujiXCameraModeChangeToPlayback(commandPublisher, this);
+        this.interfaceProvider = interfaceProvider;
+        toLiveViewCommand = new FujiXCameraModeChangeToLiveView(interfaceProvider.getCommandPublisher(), this);
+        toPlaybackCommand = new FujiXCameraModeChangeToPlayback(interfaceProvider.getCommandPublisher(), this);
     }
 
     @Override
@@ -32,6 +35,14 @@ public class FujiXRunMode implements ICameraRunMode, IFujiXRunModeHolder, IFujiX
     {
         // モードを切り替える
         Log.v(TAG, "changeRunMode() : " + isRecording);
+
+        if (interfaceProvider.getCameraConnection().getConnectionStatus() != ICameraConnection.CameraConnectionStatus.CONNECTED)
+        {
+            //
+            Log.v(TAG, " ===== DOES NOT CONNECT TO CAMERA, SO PENDING...");
+            return;
+        }
+
         this.runModeCallback = callback;
         if (isRecording)
         {
index 415872b..6e3785c 100644 (file)
@@ -180,6 +180,7 @@ class FujiXStatusHolder
                     int id = Integer.parseInt(key, 16);
                     int value = statusHolder.get(id);
                     Log.v(TAG, "getItemStatus() value : " + value + " key : " + key + " [" + id + "]");
+                    dumpStatus();
                     return (value + "");
                 }
                 catch (Exception e)
@@ -206,4 +207,25 @@ class FujiXStatusHolder
         return ("? [" + key + "]");
     }
 
+    private void dumpStatus()
+    {
+        try
+        {
+            Log.v(TAG, " - - - status - - - ");
+            for (int index = 0; index < statusHolder.size(); index++)
+            {
+                int key = statusHolder.keyAt(index);
+                int value = statusHolder.get(key);
+                Log.v(TAG, String.format("id : 0x%x value : %d (0x%x) ", key, value, value));
+            }
+            Log.v(TAG, " - - - status - - - ");
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+        }
+
+    }
+
+
 }
index b1b2220..7cdafc2 100644 (file)
@@ -162,7 +162,7 @@ public class FujiXCommandPublisher implements IFujiXCommandPublisher, IFujiXComm
     {
         try
         {
-            //Log.v(TAG, "Enqueue : "  + command.getId());
+            //Log.v(TAG, " --- Enqueue : "  + command.getId());
             return (commandQueue.offer(command));
         }
         catch (Exception e)
@@ -311,10 +311,10 @@ public class FujiXCommandPublisher implements IFujiXCommandPublisher, IFujiXComm
                 if (isDumpReceiveLog)
                 {
                     // ログに受信メッセージを出力する
-                    Log.v(TAG, "receive_from_camera() : " + read_bytes + " bytes.");
+                    Log.v(TAG, " receive_from_camera() : " + read_bytes + " bytes.");
                     dump_bytes("RECV[" + receive_body.length + "] ", receive_body);
                 }
-               if (callback != null)
+                if (callback != null)
                 {
                     callback.receivedMessage(id, receive_body);
                 }
index 8984f81..76fecbb 100644 (file)
@@ -68,6 +68,7 @@ public class FujiXCameraConnectSequence implements Runnable, IFujiXCommandCallba
             IFujiXCommandPublisher issuer = interfaceProvider.getCommandPublisher();
             if (!issuer.isConnected())
             {
+                Log.v(TAG, " --- CONNECT SOCKET --- ");
                 if (!interfaceProvider.getCommandCommunication().connect())
                 {
                     // 接続失敗...
@@ -109,7 +110,7 @@ public class FujiXCameraConnectSequence implements Runnable, IFujiXCommandCallba
     @Override
     public void receivedMessage(int id, byte[] rx_body)
     {
-        //Log.v(TAG, "receivedMessage : " + id + "[" + rx_body.length + " bytes]");
+        Log.v(TAG, "receivedMessage : " + id + "[" + rx_body.length + " bytes]");
         //int bodyLength = 0;
         switch (id)
         {
index e76d50d..6b0ad39 100644 (file)
@@ -33,7 +33,7 @@ public class FujiXCameraModeChangeToLiveView implements View.OnClickListener, IF
 
     public void startModeChange(IFujiXRunModeHolder runModeHolder)
     {
-        Log.v(TAG, "onClick");
+        Log.v(TAG, " startModeChange()");
         try
         {
             if (runModeHolder != null)
index 868e7b5..aee737e 100644 (file)
@@ -71,18 +71,26 @@ public class FujiXConnection implements ICameraConnection
             if (action.equals(ConnectivityManager.CONNECTIVITY_ACTION))
             {
                 Log.v(TAG, "onReceiveBroadcastOfConnection() : CONNECTIVITY_ACTION");
-
                 WifiManager wifiManager = (WifiManager) context.getApplicationContext().getSystemService(Context.WIFI_SERVICE);
-                if (wifiManager != null) {
+                if (wifiManager != null)
+                {
                     WifiInfo info = wifiManager.getConnectionInfo();
-                    if (wifiManager.isWifiEnabled() && info != null) {
-                        if (info.getNetworkId() != -1) {
+                    if (wifiManager.isWifiEnabled() && info != null)
+                    {
+                        int netWorkId = info.getNetworkId();
+                        if (netWorkId == -1)
+                        {
                             Log.v(TAG, "Network ID is -1, there is no currently connected network.");
                         }
+                        else
+                        {
+                            Log.v(TAG, " Network ID : " + netWorkId);
+                        }
                         // 自動接続が指示されていた場合は、カメラとの接続処理を行う
                         connectToCamera();
                     } else {
-                        if (info == null) {
+                        if (info == null)
+                        {
                             Log.v(TAG, "NETWORK INFO IS NULL.");
                         } else {
                             Log.v(TAG, "isWifiEnabled : " + wifiManager.isWifiEnabled() + " NetworkId : " + info.getNetworkId());
@@ -90,7 +98,9 @@ public class FujiXConnection implements ICameraConnection
                     }
                 }
             }
-        } catch (Exception e) {
+        }
+        catch (Exception e)
+        {
             Log.w(TAG, "onReceiveBroadcastOfConnection() EXCEPTION" + e.getMessage());
             e.printStackTrace();
         }
@@ -183,7 +193,7 @@ public class FujiXConnection implements ICameraConnection
     @Override
     public CameraConnectionStatus getConnectionStatus()
     {
-        Log.v(TAG, "getConnectionStatus()");
+        Log.v(TAG, "getConnectionStatus() : " + connectionStatus);
         return (connectionStatus);
     }