1 package net.osdn.gokigen.cameratest.fuji;
3 import android.util.Log;
5 import androidx.annotation.NonNull;
7 import java.io.BufferedReader;
8 import java.io.DataOutputStream;
9 import java.io.InputStream;
10 import java.net.Socket;
14 private final String TAG = toString();
15 private static final int BUFFER_SIZE = 1024 * 1024 + 8;
17 private static final int CONTROL_PORT = 55740;
18 private static final int ASYNC_RESPONSE_PORT = 55741;
19 private static final int STREAM_PORT = 55742;
20 private static final String CAMERA_IP = "192.168.0.1";
22 private Socket socket = null;
23 private DataOutputStream dos = null;
24 private BufferedReader bufferedReader = null;
26 private final FujiStreamReceiver stream;
27 private final FujiAsyncResponseReceiver response;
29 Communication(@NonNull ILiveViewImage imageViewer)
31 this.stream = new FujiStreamReceiver(CAMERA_IP, STREAM_PORT, imageViewer);
32 this.response = new FujiAsyncResponseReceiver(CAMERA_IP, ASYNC_RESPONSE_PORT);
39 socket = new Socket(CAMERA_IP, CONTROL_PORT);
47 void disconnect_socket()
61 bufferedReader.close();
67 bufferedReader = null;
82 void send_to_camera(byte[] byte_array)
84 //Log.v(TAG, "send_to_camera() : " + byte_array.length + " bytes.");
87 dos = new DataOutputStream(socket.getOutputStream());
89 // 最初に4バイトのレングス長をつけて送る
90 byte[] sendData = new byte[byte_array.length + 4];
92 sendData[0] = (byte) (byte_array.length + 4);
96 System.arraycopy(byte_array,0,sendData,4, byte_array.length);
99 dump_bytes("SEND[" + sendData.length + "] ", sendData);
111 ReceivedDataHolder receive_from_camera()
115 byte[] byte_array = new byte[BUFFER_SIZE];
116 InputStream is = socket.getInputStream();
119 int read_bytes = is.read(byte_array, 0, BUFFER_SIZE);
120 Log.v(TAG, "receive_from_camera() : " + read_bytes + " bytes.");
121 return (new ReceivedDataHolder(byte_array, read_bytes));
128 return (new ReceivedDataHolder(new byte[0], 0));
131 private void dump_bytes(String header, byte[] data)
134 StringBuffer message;
135 message = new StringBuffer();
136 for (byte item : data)
139 message.append(String.format("%02x ", item));
142 Log.v(TAG, header + " " + message);
144 message = new StringBuffer();
149 Log.v(TAG, header + " " + message);
164 void start_response()