private Socket socket = null;
private DataOutputStream dos = null;
private BufferedReader bufferedReader = null;
+ private int sequenceNumber = 0x0000000a;
private final FujiStreamReceiver stream;
private final FujiAsyncResponseReceiver response;
System.gc();
}
- void send_to_camera(byte[] byte_array)
+ void send_to_camera(byte[] byte_array, boolean useSeqNumber)
{
//Log.v(TAG, "send_to_camera() : " + byte_array.length + " bytes.");
try
sendData[3] = 0x00;
System.arraycopy(byte_array,0,sendData,4, byte_array.length);
+ if (useSeqNumber)
+ {
+ sendData[8] = (byte) ((0x000000ff & sequenceNumber));
+ sendData[9] = (byte) (((0x0000ff00 & sequenceNumber) >>> 8) & 0x000000ff);
+ sendData[10] = (byte) (((0x00ff0000 & sequenceNumber) >>> 16) & 0x000000ff);
+ sendData[11] = (byte) (((0xff000000 & sequenceNumber) >>> 24) & 0x000000ff);
+
+ Log.v(TAG, "SEQ No. : " + sequenceNumber);
+
+ // シーケンス番号を増やす
+ sequenceNumber++;
+ }
// ログに送信メッセージを出力する
dump_bytes("SEND[" + sendData.length + "] ", sendData);
+
// (データを)送信
dos.write(sendData);
dos.flush();
ReceivedDataHolder rx_bytes;
comm.connect_socket();
- comm.send_to_camera(sequence.registration_message());
+ comm.send_to_camera(sequence.registration_message(), false);
rx_bytes = comm.receive_from_camera();
dump_bytes(0, rx_bytes);
Thread.sleep(50);
// 応答エラーの場合は この値が返ってくるはず = {0x05, 0x00, 0x00, 0x00, 0x19, 0x20, 0x00, 0x00};
// start_messageを送信
- comm.send_to_camera(sequence.start_message());
+ comm.send_to_camera(sequence.start_message(), false);
rx_bytes = comm.receive_from_camera();
dump_bytes(1, rx_bytes);
Thread.sleep(50);
// なんだろう?? (送信が必要なようだが)
- comm.send_to_camera(sequence.start_message2());
+ comm.send_to_camera(sequence.start_message2(), false);
rx_bytes = comm.receive_from_camera();
dump_bytes(2, rx_bytes);
Thread.sleep(50);
// two_part messageを発行 (その1)
- comm.send_to_camera(sequence.start_message3_1());
+ comm.send_to_camera(sequence.start_message3_1(), false);
rx_bytes = comm.receive_from_camera();
dump_bytes(3, rx_bytes);
Thread.sleep(50);
// two_part messageを発行 (その2)
- comm.send_to_camera(sequence.start_message3_2());
+ comm.send_to_camera(sequence.start_message3_2(), false);
rx_bytes = comm.receive_from_camera();
dump_bytes(4, rx_bytes);
Thread.sleep(50);
// remote mode
- comm.send_to_camera(sequence.start_message4());
+ comm.send_to_camera(sequence.start_message4(), false);
rx_bytes = comm.receive_from_camera();
dump_bytes(5, rx_bytes);
Thread.sleep(50);
// two_part messageを発行 (その1)
- comm.send_to_camera(sequence.start_message5_1());
+ comm.send_to_camera(sequence.start_message5_1(), false);
rx_bytes = comm.receive_from_camera();
dump_bytes(6, rx_bytes);
Thread.sleep(50);
// two_part messageを発行 (その2)
- comm.send_to_camera(sequence.start_message5_2());
+ comm.send_to_camera(sequence.start_message5_2(), false);
rx_bytes = comm.receive_from_camera();
dump_bytes(7, rx_bytes);
Thread.sleep(50);
// ????
- comm.send_to_camera(sequence.start_message6());
+ comm.send_to_camera(sequence.start_message6(), false);
rx_bytes = comm.receive_from_camera();
dump_bytes(8, rx_bytes);
Thread.sleep(50);
// ????
- comm.send_to_camera(sequence.start_message7());
+ comm.send_to_camera(sequence.start_message7(), false);
rx_bytes = comm.receive_from_camera();
dump_bytes(9, rx_bytes);
Thread.sleep(50);
// ????
- comm.send_to_camera(sequence.start_message8());
+ comm.send_to_camera(sequence.start_message8(), false);
rx_bytes = comm.receive_from_camera();
dump_bytes(10, rx_bytes);
Thread.sleep(50);
// ????
- comm.send_to_camera(sequence.start_message9());
+ comm.send_to_camera(sequence.start_message9(), false);
// 応答OKの場合は、8バイト ({0x03, 0x00, 0x01, 0x20} + {0x10, 0x02, 0x00, 0x00} )が応答されるはず
rx_bytes = comm.receive_from_camera();
{
try
{
- comm.send_to_camera(sequence.reset_message());
+ comm.send_to_camera(sequence.reset_message(), true);
ReceivedDataHolder rx_bytes = comm.receive_from_camera();
dump_bytes(0, rx_bytes);
Thread.sleep(150);
{
try
{
- comm.send_to_camera(sequence.status_request_message());
+ comm.send_to_camera(sequence.status_request_message(), true);
ReceivedDataHolder rx_bytes = comm.receive_from_camera();
dump_bytes(12, rx_bytes);
{
try
{
- comm.send_to_camera(sequence.execute_shutter_message());
+ comm.send_to_camera(sequence.execute_shutter_message(), true);
ReceivedDataHolder rx_bytes = comm.receive_from_camera();
dump_bytes(14, rx_bytes);