1 package net.osdn.gokigen.cameratest.fuji.statuses;
3 import android.util.Log;
5 import androidx.annotation.NonNull;
7 import net.osdn.gokigen.cameratest.fuji.ReceivedDataHolder;
9 public class FujiStatusChecker implements IFujiStatusReceiver
11 private final String TAG = toString();
12 private final IFujiStatusRequest comm;
13 private final IFujiStatusNotify notify;
14 private final FujiStatusHolder statusHolder;
15 private boolean threadIsRunning = false;
16 private final int WAIT_MS = 400;
18 public FujiStatusChecker(@NonNull IFujiStatusRequest comm, @NonNull IFujiStatusNotify notify)
22 this.statusHolder = new FujiStatusHolder();
26 public void statusReceived(ReceivedDataHolder data)
28 statusReceivedImpl(data.getData());
34 Thread thread = new Thread(new Runnable() {
40 threadIsRunning = true;
41 while (threadIsRunning)
44 Thread.sleep(WAIT_MS);
51 threadIsRunning = false;
52 Log.v(TAG, "--- FINISH STATUS WATCH ---");
60 Log.v(TAG, "--- START STATUS WATCH ---");
73 threadIsRunning = false;
78 private void statusReceivedImpl(byte[] data)
80 boolean isStatusUpdated = false;
83 int nofStatus = (data[13] * 256) + data[12];
84 //Log.v(TAG, "status Received. " + data.length + " bytes. [status : " + nofStatus + "]");
88 while ((statusCount < nofStatus)&&(index < data.length))
90 int dataId = ((((int)data[index + 1]) & 0xff) * 256) + (((int) data[index]) & 0xff);
91 statusHolder.updateValue(dataId, data[index + 2], data[index + 3], data[index +4], data[index + 5]);
94 isStatusUpdated = true;
98 notify.statusUpdated(statusHolder);