1 package net.osdn.gokigen.cameratest.fuji;
3 import android.util.Log;
5 public class Connection
7 private final String TAG = toString();
8 private final MessageSequence sequence;
9 private final Communication comm;
13 this.comm = new Communication();
14 this.sequence = new MessageSequence();
17 public boolean start_connect()
21 if (connect_to_camera())
23 ret = get_current_settings();
29 private boolean connect_to_camera()
35 comm.connect_socket();
37 comm.send_to_camera(sequence.registration_message());
39 ReceivedData rx_bytes = comm.receive_from_camera();
40 dump_bytes(indexNumber, rx_bytes);
43 応答エラーの場合は この値が返ってくるはず = {0x05, 0x00, 0x00, 0x00, 0x19, 0x20, 0x00, 0x00};
47 comm.send_to_camera(sequence.start_message());
49 rx_bytes = comm.receive_from_camera();
50 dump_bytes(indexNumber, rx_bytes);
55 comm.send_to_camera(sequence.start_message2());
57 rx_bytes = comm.receive_from_camera();
58 dump_bytes(indexNumber, rx_bytes);
62 // two_part messageを発行 (その1)
63 comm.send_to_camera(sequence.start_message3_1());
65 rx_bytes = comm.receive_from_camera();
66 dump_bytes(indexNumber, rx_bytes);
69 // two_part messageを発行 (その2)
70 comm.send_to_camera(sequence.start_message3_2());
72 rx_bytes = comm.receive_from_camera();
73 dump_bytes(indexNumber, rx_bytes);
77 comm.send_to_camera(sequence.start_message4());
79 rx_bytes = comm.receive_from_camera();
80 dump_bytes(indexNumber, rx_bytes);
84 // two_part messageを発行 (その1)
85 comm.send_to_camera(sequence.start_message5_1());
87 rx_bytes = comm.receive_from_camera();
88 dump_bytes(indexNumber, rx_bytes);
91 // two_part messageを発行 (その2)
92 comm.send_to_camera(sequence.start_message5_2());
94 rx_bytes = comm.receive_from_camera();
95 dump_bytes(indexNumber, rx_bytes);
100 comm.send_to_camera(sequence.start_message6());
102 rx_bytes = comm.receive_from_camera();
103 dump_bytes(indexNumber, rx_bytes);
108 comm.send_to_camera(sequence.start_message7());
110 rx_bytes = comm.receive_from_camera();
111 dump_bytes(indexNumber, rx_bytes);
115 comm.send_to_camera(sequence.start_message8());
117 rx_bytes = comm.receive_from_camera();
118 dump_bytes(indexNumber, rx_bytes);
122 comm.send_to_camera(sequence.start_message9());
124 rx_bytes = comm.receive_from_camera();
125 dump_bytes(indexNumber, rx_bytes);
130 comm.send_to_camera(sequence.start_message2());
132 //byte[] rx_bytes = comm.receive_from_camera();
133 rx_bytes = comm.receive_from_camera();
134 dump_bytes(indexNumber, rx_bytes);
138 応答OKの場合は、8バイト ({0x03, 0x00, 0x01, 0x20} + {0x10, 0x02, 0x00, 0x00} )が応答されるはず
145 make_static_message(message_type::two_part, 0x01, 0xdf, 0x00, 0x00);
146 auto const msg4_2 = make_static_message_followup(msg4_1, 0x05, 0x00);
147 fuji_twopart_message(sockfd, msg4_1, msg4_2);
152 comm.start_response();
154 Log.v(TAG, "connect_to_camera DONE.");
165 private boolean get_current_settings()
169 comm.send_to_camera(sequence.status_request_message());
171 ReceivedData rx_bytes = comm.receive_from_camera();
172 dump_bytes(12, rx_bytes);
175 rx_bytes = comm.receive_from_camera();
176 dump_bytes(13, rx_bytes);
188 private void dump_bytes(int indexNumber,ReceivedData data)
191 StringBuffer message;
192 message = new StringBuffer();
193 for (byte item : data.getData())
196 message.append(String.format("%02x ", item));
199 Log.v(TAG, " RX [" + indexNumber + "] " + message);
201 message = new StringBuffer();
206 Log.v(TAG, " RX [" + indexNumber + "] " + message);
211 public boolean execute_shutter()
215 comm.send_to_camera(sequence.execute_shutter_message());
217 ReceivedData rx_bytes = comm.receive_from_camera();
218 dump_bytes(14, rx_bytes);
221 rx_bytes = comm.receive_from_camera();
222 dump_bytes(15, rx_bytes);