OSDN Git Service

コマンド送信ダイアログで、送信可能最大データ長を16バイトまで拡張する。
[gokigen/Gr2Control.git] / app / src / main / java / net / osdn / gokigen / gr2control / camera / fuji_x / wrapper / command / messages / CommandGeneric.java
index daba715..327d1a6 100644 (file)
@@ -18,6 +18,14 @@ public class CommandGeneric extends FujiXCommandBase
     private final byte data5;
     private final byte data6;
     private final byte data7;
+    private final byte data8;
+    private final byte data9;
+    private final byte dataA;
+    private final byte dataB;
+    private final byte dataC;
+    private final byte dataD;
+    private final byte dataE;
+    private final byte dataF;
 
     public CommandGeneric(@NonNull IFujiXCommandCallback callback, int id)
     {
@@ -36,6 +44,16 @@ public class CommandGeneric extends FujiXCommandBase
         data5 = 0;
         data6 = 0;
         data7 = 0;
+
+        data8 = 0;
+        data9 = 0;
+        dataA = 0;
+        dataB = 0;
+
+        dataC = 0;
+        dataD = 0;
+        dataE = 0;
+        dataF = 0;
     }
 
     public CommandGeneric(@NonNull IFujiXCommandCallback callback, int id, int bodySize, int value)
@@ -55,6 +73,16 @@ public class CommandGeneric extends FujiXCommandBase
         data5 = ((byte)((0x0000ff00 & value) >> 8));
         data6 = ((byte)((0x00ff0000 & value) >> 16));
         data7 = ((byte)((0xff000000 & value) >> 24));
+
+        data8 = 0;
+        data9 = 0;
+        dataA = 0;
+        dataB = 0;
+
+        dataC = 0;
+        dataD = 0;
+        dataE = 0;
+        dataF = 0;
     }
 
     public CommandGeneric(@NonNull IFujiXCommandCallback callback, int id, int bodySize, int value, int value2)
@@ -74,6 +102,74 @@ public class CommandGeneric extends FujiXCommandBase
         data5 = ((byte)((0x0000ff00 & value2) >> 8));
         data6 = ((byte)((0x00ff0000 & value2) >> 16));
         data7 = ((byte)((0xff000000 & value2) >> 24));
+
+        data8 = 0;
+        data9 = 0;
+        dataA = 0;
+        dataB = 0;
+
+        dataC = 0;
+        dataD = 0;
+        dataE = 0;
+        dataF = 0;
+    }
+
+    public CommandGeneric(@NonNull IFujiXCommandCallback callback, int id, int bodySize, int value, int value2, int value3)
+    {
+        this.callback = callback;
+        this.bodySize = bodySize;
+
+        id0 = ((byte) (0x000000ff & id));
+        id1 = ((byte)((0x0000ff00 & id) >> 8));
+
+        data0 = ((byte) (0x000000ff & value));
+        data1 = ((byte)((0x0000ff00 & value) >> 8));
+        data2 = ((byte)((0x00ff0000 & value) >> 16));
+        data3 = ((byte)((0xff000000 & value) >> 24));
+
+        data4 = ((byte) (0x000000ff & value2));
+        data5 = ((byte)((0x0000ff00 & value2) >> 8));
+        data6 = ((byte)((0x00ff0000 & value2) >> 16));
+        data7 = ((byte)((0xff000000 & value2) >> 24));
+
+        data8 = ((byte) (0x000000ff & value3));
+        data9 = ((byte)((0x0000ff00 & value3) >> 8));
+        dataA = ((byte)((0x00ff0000 & value3) >> 16));
+        dataB = ((byte)((0xff000000 & value3) >> 24));
+
+        dataC = 0;
+        dataD = 0;
+        dataE = 0;
+        dataF = 0;
+    }
+
+    public CommandGeneric(@NonNull IFujiXCommandCallback callback, int id, int bodySize, int value, int value2, int value3, int value4)
+    {
+        this.callback = callback;
+        this.bodySize = bodySize;
+
+        id0 = ((byte) (0x000000ff & id));
+        id1 = ((byte)((0x0000ff00 & id) >> 8));
+
+        data0 = ((byte) (0x000000ff & value));
+        data1 = ((byte)((0x0000ff00 & value) >> 8));
+        data2 = ((byte)((0x00ff0000 & value) >> 16));
+        data3 = ((byte)((0xff000000 & value) >> 24));
+
+        data4 = ((byte) (0x000000ff & value2));
+        data5 = ((byte)((0x0000ff00 & value2) >> 8));
+        data6 = ((byte)((0x00ff0000 & value2) >> 16));
+        data7 = ((byte)((0xff000000 & value2) >> 24));
+
+        data8 = ((byte) (0x000000ff & value3));
+        data9 = ((byte)((0x0000ff00 & value3) >> 8));
+        dataA = ((byte)((0x00ff0000 & value3) >> 16));
+        dataB = ((byte)((0xff000000 & value3) >> 24));
+
+        dataC = ((byte) (0x000000ff & value4));
+        dataD = ((byte)((0x0000ff00 & value4) >> 8));
+        dataE = ((byte)((0x00ff0000 & value4) >> 16));
+        dataF = ((byte)((0xff000000 & value4) >> 24));
     }
 
 
@@ -143,7 +239,43 @@ public class CommandGeneric extends FujiXCommandBase
                     data0, data1, data2, data3, data4, data5, data6, data7,
             });
         }
-        else //  ボディ長が 2, 4, 8 以外の場合...
+        else if (bodySize == 12)
+        {
+            return (new byte[]{
+
+                    // message_header.index : uint16 (0: terminate, 2: two_part_message, 1: other)
+                    (byte) 0x01, (byte) 0x00,
+
+                    // message_header.type
+                    id0, id1,
+
+                    // sequence number
+                    (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+
+                    // data ...
+                    data0, data1, data2, data3, data4, data5, data6, data7,
+                    data8, data9, dataA, dataB,
+            });
+        }
+        else if (bodySize == 16)
+        {
+            return (new byte[]{
+
+                    // message_header.index : uint16 (0: terminate, 2: two_part_message, 1: other)
+                    (byte) 0x01, (byte) 0x00,
+
+                    // message_header.type
+                    id0, id1,
+
+                    // sequence number
+                    (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+
+                    // data ...
+                    data0, data1, data2, data3, data4, data5, data6, data7,
+                    data8, data9, dataA, dataB, dataC, dataD, dataE, dataF,
+            });
+        }
+        else //  ボディ長が 2, 4, 8, 12, 16 以外の場合...
         {
             return (new byte[]{