Browse Source

add check sensor.

renevy 5 years ago
parent
commit
20898ebc52

+ 2 - 1
.gitignore

@@ -1,3 +1,4 @@
 /build
 .gradle
-.idea
+.idea
+*.iml

+ 1 - 0
DialogUtilsLibrary/.gitignore

@@ -1 +1,2 @@
 /build
+*.iml

+ 4 - 4
app/app.iml

@@ -30,15 +30,15 @@
     <output-test url="file://$MODULE_DIR$/build/intermediates/javac/debugUnitTest/classes" />
     <exclude-output />
     <content url="file://$MODULE_DIR$">
-      <sourceFolder url="file://$MODULE_DIR$/build/generated/ap_generated_sources/debug/out" isTestSource="false" generated="true" />
       <sourceFolder url="file://$MODULE_DIR$/build/generated/aidl_source_output_dir/debug/out" isTestSource="false" generated="true" />
-      <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/debug" isTestSource="false" generated="true" />
+      <sourceFolder url="file://$MODULE_DIR$/build/generated/ap_generated_sources/debug/out" isTestSource="false" generated="true" />
       <sourceFolder url="file://$MODULE_DIR$/build/generated/renderscript_source_output_dir/debug/out" isTestSource="false" generated="true" />
+      <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/debug" isTestSource="false" generated="true" />
       <sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/debug" type="java-resource" generated="true" />
-      <sourceFolder url="file://$MODULE_DIR$/build/generated/ap_generated_sources/debugAndroidTest/out" isTestSource="true" generated="true" />
-      <sourceFolder url="file://$MODULE_DIR$/build/generated/aidl_source_output_dir/debugAndroidTest/out" isTestSource="true" generated="true" />
       <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/androidTest/debug" isTestSource="true" generated="true" />
+      <sourceFolder url="file://$MODULE_DIR$/build/generated/ap_generated_sources/debugAndroidTest/out" isTestSource="true" generated="true" />
       <sourceFolder url="file://$MODULE_DIR$/build/generated/renderscript_source_output_dir/debugAndroidTest/out" isTestSource="true" generated="true" />
+      <sourceFolder url="file://$MODULE_DIR$/build/generated/aidl_source_output_dir/debugAndroidTest/out" isTestSource="true" generated="true" />
       <sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/androidTest/debug" type="java-test-resource" generated="true" />
       <sourceFolder url="file://$MODULE_DIR$/build/generated/ap_generated_sources/debugUnitTest/out" isTestSource="true" generated="true" />
       <sourceFolder url="file://$MODULE_DIR$/src/debug/res" type="java-resource" />

+ 1 - 0
app/src/main/java/com/ifastore/maintain/common/Contants.java

@@ -15,6 +15,7 @@ public class Contants {
     public static final String CMD_MQ_REAL_WEIGHT    =  "mq_getRealWeight";
     public static final String CMD_MQ_CALIBRATION    =  "mq_calibration";
     public static final String CMD_MQ_SET_ZERO       =  "mq_adjustZero";
+    public static final String CMD_MQ_CHECK_SENSOR   =  "mq_check_sensor";
     public static final String CMD_MQ_SET_THRESHOLD  =  "mq_setThreshold";
     public static final String CMD_MQ_ADJUST_EVENT   =  "mq_adjust_zero";
     public static final String CMD_MQ_SENSOR_EVENT   =  "mq_sensor_event";

+ 30 - 0
app/src/main/java/com/ifastore/maintain/repository/remote/mqtt/flatbuffer/MaintainFlatHandler.java

@@ -15,6 +15,7 @@ import com.ifastore.maintain.repository.remote.mqtt.flatbuffer.src.weightbox.msg
 import com.ifastore.maintain.repository.remote.mqtt.flatbuffer.src.weightbox.msg.AdjustZeroEvent;
 import com.ifastore.maintain.repository.remote.mqtt.flatbuffer.src.weightbox.msg.Alerts;
 import com.ifastore.maintain.repository.remote.mqtt.flatbuffer.src.weightbox.msg.Calibration;
+import com.ifastore.maintain.repository.remote.mqtt.flatbuffer.src.weightbox.msg.CheckSensor;
 import com.ifastore.maintain.repository.remote.mqtt.flatbuffer.src.weightbox.msg.Close;
 import com.ifastore.maintain.repository.remote.mqtt.flatbuffer.src.weightbox.msg.Eventdata;
 import com.ifastore.maintain.repository.remote.mqtt.flatbuffer.src.weightbox.msg.Evtdata;
@@ -509,6 +510,35 @@ public class MaintainFlatHandler {
         return ByteBufUtils.bytebuffer2ByteArray(builder.dataBuffer());
     }
 
+    /**
+     *create weight sensor buffer
+     *
+     * @param reply
+     * @param result
+     * @return
+     */
+    public  byte[] createCheckSensorBuffer(String reply,  int result){
+        FlatBufferBuilder builder = new FlatBufferBuilder();
+        try {
+            int replyOffset    = builder.createString(reply);
+            CheckSensor.startCheckSensor(builder);
+            CheckSensor.addReply(builder, replyOffset);
+            CheckSensor.addResult(builder, (byte) result);
+            int tableOfset = CheckSensor.endCheckSensor(builder);
+
+            Payload.startPayload(builder);
+            Payload.addTypeType(builder, Payloads.CheckSensor);
+            Payload.addType(builder, tableOfset);
+            int paylod = Payload.endPayload(builder);
+            builder.finish(paylod);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return null;
+        }
+        return ByteBufUtils.bytebuffer2ByteArray(builder.dataBuffer());
+    }
+
+
 
     /**
      *create Gratings buffer

+ 8 - 2
app/src/main/java/com/ifastore/maintain/repository/remote/mqtt/flatbuffer/schema/weight.fbs

@@ -2,7 +2,7 @@ namespace weightbox.msg;
 
 enum Result:byte { Success = 0, Failure }
 
-union Payloads { Open, Tally,  Monitoring, Reboot, Shutdown, Setup, Gratings, Close, Status, TempStatus, Alerts, Upgrade, AdjustZero, Calibration, SetWeightThreshold, SensorEvent, AdjustZeroEvent }
+union Payloads { Open, Tally,  Monitoring, Reboot, Shutdown, Setup, Gratings, Close, Status, TempStatus, Alerts, Upgrade, AdjustZero, Calibration, SetWeightThreshold, AdjustZeroEvent, SensorEvent, CheckSensor }
 
 //optype:buy/manage
 //reply:random
@@ -123,7 +123,7 @@ table AdjustZero {
 
 table AdjustZeroEvent {
   result:Result;
-  reason:string;
+   reason:string;
 }
 
 table Calibration {
@@ -134,7 +134,13 @@ table Calibration {
   reason:string;
 }
 
+table CheckSensor {
+  reply:string;
+  result:Result;
+}
+// type = 0 Calibration result, type = 1 checkSensor result,
 table SensorEvent {
+  type:int;
   gratings:[string];
 }
 

+ 39 - 0
app/src/main/java/com/ifastore/maintain/repository/remote/mqtt/flatbuffer/src/weightbox/msg/CheckSensor.java

@@ -0,0 +1,39 @@
+// automatically generated by the FlatBuffers compiler, do not modify
+
+package com.ifastore.maintain.repository.remote.mqtt.flatbuffer.src.weightbox.msg;
+
+import com.google.flatbuffers.FlatBufferBuilder;
+import com.google.flatbuffers.Table;
+
+import java.nio.ByteBuffer;
+import java.nio.ByteOrder;
+
+@SuppressWarnings("unused")
+public final class CheckSensor extends Table {
+  public static CheckSensor getRootAsCheckSensor(ByteBuffer _bb) { return getRootAsCheckSensor(_bb, new CheckSensor()); }
+  public static CheckSensor getRootAsCheckSensor(ByteBuffer _bb, CheckSensor obj) { _bb.order(ByteOrder.LITTLE_ENDIAN); return (obj.__assign(_bb.getInt(_bb.position()) + _bb.position(), _bb)); }
+  public void __init(int _i, ByteBuffer _bb) { __reset(_i, _bb); }
+  public CheckSensor __assign(int _i, ByteBuffer _bb) { __init(_i, _bb); return this; }
+
+  public String reply() { int o = __offset(4); return o != 0 ? __string(o + bb_pos) : null; }
+  public ByteBuffer replyAsByteBuffer() { return __vector_as_bytebuffer(4, 1); }
+  public ByteBuffer replyInByteBuffer(ByteBuffer _bb) { return __vector_in_bytebuffer(_bb, 4, 1); }
+  public byte result() { int o = __offset(6); return o != 0 ? bb.get(o + bb_pos) : 0; }
+
+  public static int createCheckSensor(FlatBufferBuilder builder,
+                                      int replyOffset,
+                                      byte result) {
+    builder.startTable(2);
+    CheckSensor.addReply(builder, replyOffset);
+    CheckSensor.addResult(builder, result);
+    return CheckSensor.endCheckSensor(builder);
+  }
+
+  public static void startCheckSensor(FlatBufferBuilder builder) { builder.startTable(2); }
+  public static void addReply(FlatBufferBuilder builder, int replyOffset) { builder.addOffset(0, replyOffset, 0); }
+  public static void addResult(FlatBufferBuilder builder, byte result) { builder.addByte(1, result, 0); }
+  public static int endCheckSensor(FlatBufferBuilder builder) {
+    int o = builder.endTable();
+    return o;
+  }
+}

+ 2 - 1
app/src/main/java/com/ifastore/maintain/repository/remote/mqtt/flatbuffer/src/weightbox/msg/Payloads.java

@@ -22,8 +22,9 @@ public final class Payloads {
   public static final byte SetWeightThreshold = 15;
   public static final byte AdjustZeroEvent = 16;
   public static final byte SensorEvent = 17;
+  public static final byte CheckSensor = 18;
 
-  public static final String[] names = { "NONE", "Open", "Tally", "Monitoring", "Reboot", "Shutdown", "Setup", "Gratings", "Close", "Status", "TempStatus", "Alerts", "Upgrade", "AdjustZero", "Calibration", "SetWeightThreshold", "AdjustZeroEvent", "SensorEvent", };
+  public static final String[] names = { "NONE", "Open", "Tally", "Monitoring", "Reboot", "Shutdown", "Setup", "Gratings", "Close", "Status", "TempStatus", "Alerts", "Upgrade", "AdjustZero", "Calibration", "SetWeightThreshold", "AdjustZeroEvent", "SensorEvent", "CheckSensor", };
 
   public static String name(int e) { return names[e]; }
 }

+ 22 - 16
app/src/main/java/com/ifastore/maintain/repository/remote/mqtt/flatbuffer/src/weightbox/msg/SensorEvent.java

@@ -2,36 +2,42 @@
 
 package com.ifastore.maintain.repository.remote.mqtt.flatbuffer.src.weightbox.msg;
 
-import java.nio.*;
-import java.lang.*;
-import java.util.*;
-import com.google.flatbuffers.*;
+import com.google.flatbuffers.FlatBufferBuilder;
+import com.google.flatbuffers.Table;
 
-  @SuppressWarnings("unused")
-  public final class SensorEvent extends Table {
+import java.nio.ByteBuffer;
+import java.nio.ByteOrder;
+
+@SuppressWarnings("unused")
+public final class SensorEvent extends Table {
     public static SensorEvent getRootAsSensorEvent(ByteBuffer _bb) { return getRootAsSensorEvent(_bb, new SensorEvent()); }
     public static SensorEvent getRootAsSensorEvent(ByteBuffer _bb, SensorEvent obj) { _bb.order(ByteOrder.LITTLE_ENDIAN); return (obj.__assign(_bb.getInt(_bb.position()) + _bb.position(), _bb)); }
     public void __init(int _i, ByteBuffer _bb) { __reset(_i, _bb); }
     public SensorEvent __assign(int _i, ByteBuffer _bb) { __init(_i, _bb); return this; }
 
-    public String gratings(int j) { int o = __offset(4); return o != 0 ? __string(__vector(o) + j * 4) : null; }
-    public int gratingsLength() { int o = __offset(4); return o != 0 ? __vector_len(o) : 0; }
+    public int type() { int o = __offset(4); return o != 0 ? bb.getInt(o + bb_pos) : 0; }
+    public String gratings(int j) { int o = __offset(6); return o != 0 ? __string(__vector(o) + j * 4) : null; }
+    public int gratingsLength() { int o = __offset(6); return o != 0 ? __vector_len(o) : 0; }
 
     public static int createSensorEvent(FlatBufferBuilder builder,
+                                        int type,
                                         int gratingsOffset) {
-      builder.startTable(1);
-      SensorEvent.addGratings(builder, gratingsOffset);
-      return SensorEvent.endSensorEvent(builder);
+        builder.startTable(2);
+        SensorEvent.addGratings(builder, gratingsOffset);
+        SensorEvent.addType(builder, type);
+        return SensorEvent.endSensorEvent(builder);
     }
 
-    public static void startSensorEvent(FlatBufferBuilder builder) { builder.startTable(1); }
-    public static void addGratings(FlatBufferBuilder builder, int gratingsOffset) { builder.addOffset(0, gratingsOffset, 0); }
+    public static void startSensorEvent(FlatBufferBuilder builder) { builder.startTable(2); }
+    public static void addType(FlatBufferBuilder builder, int type) { builder.addInt(0, type, 0); }
+    public static void addGratings(FlatBufferBuilder builder, int gratingsOffset) { builder.addOffset(1, gratingsOffset, 0); }
     public static int createGratingsVector(FlatBufferBuilder builder, int[] data) { builder.startVector(4, data.length, 4); for (int i = data.length - 1; i >= 0; i--) builder.addOffset(data[i]); return builder.endVector(); }
     public static void startGratingsVector(FlatBufferBuilder builder, int numElems) { builder.startVector(4, numElems, 4); }
     public static int endSensorEvent(FlatBufferBuilder builder) {
-      int o = builder.endTable();
-      return o;
+        int o = builder.endTable();
+        return o;
     }
-  }
+}
+
 
 

+ 23 - 2
app/src/main/java/com/ifastore/maintain/service/ControlService.java

@@ -29,6 +29,7 @@ import com.ifastore.maintain.repository.remote.mqtt.flatbuffer.MaintainFlatHandl
 import com.ifastore.maintain.repository.remote.mqtt.flatbuffer.src.weightbox.msg.AdjustZero;
 import com.ifastore.maintain.repository.remote.mqtt.flatbuffer.src.weightbox.msg.AdjustZeroEvent;
 import com.ifastore.maintain.repository.remote.mqtt.flatbuffer.src.weightbox.msg.Calibration;
+import com.ifastore.maintain.repository.remote.mqtt.flatbuffer.src.weightbox.msg.CheckSensor;
 import com.ifastore.maintain.repository.remote.mqtt.flatbuffer.src.weightbox.msg.Gratings;
 import com.ifastore.maintain.repository.remote.mqtt.flatbuffer.src.weightbox.msg.Monitoring;
 import com.ifastore.maintain.repository.remote.mqtt.flatbuffer.src.weightbox.msg.Open;
@@ -50,6 +51,7 @@ import static android.os.Build.ID;
 import static android.provider.CalendarContract.Calendars.NAME;
 import static com.ifastore.maintain.common.Contants.CMD_MQ_ADJUST_EVENT;
 import static com.ifastore.maintain.common.Contants.CMD_MQ_CALIBRATION;
+import static com.ifastore.maintain.common.Contants.CMD_MQ_CHECK_SENSOR;
 import static com.ifastore.maintain.common.Contants.CMD_MQ_GRATINGS;
 import static com.ifastore.maintain.common.Contants.CMD_MQ_MONITORING;
 import static com.ifastore.maintain.common.Contants.CMD_MQ_OPENDOOR;
@@ -123,6 +125,7 @@ public class ControlService extends Service {
         IntentFilter filter = new IntentFilter();
         filter.addAction(CMD_MQ_SET_ZERO);
         filter.addAction(CMD_MQ_CALIBRATION);
+        filter.addAction(CMD_MQ_CHECK_SENSOR);
         registerReceiver(messageRecvice, filter);
         Logger.debug("initBoardCast");
     }
@@ -165,6 +168,13 @@ public class ControlService extends Service {
                     data = maintainFlatHandler.createCalibrationBuffer(bean);
                     mqttManager.publishControlMessage(CMD_MQ_CALIBRATION, sn, data, bean.getReply());
                     break;
+                case CMD_MQ_CHECK_SENSOR:
+                    sn = intent.getStringExtra("sn");
+                    String reply = "maintain-"+CMD_MQ_CHECK_SENSOR+"-"+clientID;
+                    int result = 0;
+                    data = maintainFlatHandler.createCheckSensorBuffer(reply, result);
+                    mqttManager.publishControlMessage(CMD_MQ_CHECK_SENSOR, sn, data, reply);
+                    break;
             }
         }
     }
@@ -266,6 +276,9 @@ public class ControlService extends Service {
             case CMD_MQ_SENSOR_EVENT:
                 remoteReqSensorEvent((SensorEvent) reqmsg.getMesg());
                 break;
+            case CMD_MQ_CHECK_SENSOR:
+                remoteReqSensorEvent((SensorEvent) reqmsg.getMesg());
+                break;
         }
     }
 
@@ -347,6 +360,11 @@ public class ControlService extends Service {
 
     }
 
+    /**
+     * @param sensorEvent
+     * type = 0 Calibration result
+     * type = 1 checkSensor result,
+     */
     private  void remoteReqSensorEvent(SensorEvent sensorEvent){
         List<String> gratingsList = new ArrayList<>();
         for(int i = 0; i < sensorEvent.gratingsLength(); i ++){
@@ -355,13 +373,16 @@ public class ControlService extends Service {
             gratingsList.add(sensorEvent.gratings(i));
         }
         Intent intent = new Intent();
-        intent.setAction(CMD_MQ_SENSOR_EVENT+MQ_ACK);
+        if(sensorEvent.type()==0){
+            intent.setAction(CMD_MQ_SENSOR_EVENT+MQ_ACK);
+        }else if(sensorEvent.type()==1){
+            intent.setAction(CMD_MQ_CHECK_SENSOR+MQ_ACK);
+        }
         intent.putStringArrayListExtra("result", (ArrayList<String>) gratingsList);
         sendBroadcast(intent);
     }
 
 
-
     @Override
     public void onDestroy() {
         Logger.error("onDestroy");

+ 29 - 0
app/src/main/java/com/ifastore/maintain/ui/calibration/CalibrationFragment.java

@@ -45,6 +45,7 @@ import butterknife.Unbinder;
 import static android.content.Context.MODE_PRIVATE;
 import static com.ifastore.maintain.common.Contants.CMD_MQ_ADJUST_EVENT;
 import static com.ifastore.maintain.common.Contants.CMD_MQ_CALIBRATION;
+import static com.ifastore.maintain.common.Contants.CMD_MQ_CHECK_SENSOR;
 import static com.ifastore.maintain.common.Contants.CMD_MQ_OPENDOOR;
 import static com.ifastore.maintain.common.Contants.CMD_MQ_SENSOR_EVENT;
 import static com.ifastore.maintain.common.Contants.CMD_MQ_SET_ZERO;
@@ -180,6 +181,7 @@ public class CalibrationFragment extends Fragment implements AdapterView.OnItemS
         filter.addAction(CMD_MQ_CALIBRATION+MQ_ACK);
         filter.addAction(CMD_MQ_ADJUST_EVENT+MQ_ACK);
         filter.addAction(CMD_MQ_SENSOR_EVENT+MQ_ACK);
+        filter.addAction(CMD_MQ_CHECK_SENSOR+MQ_ACK);
         this.getContext().registerReceiver(messageRecvice, filter);
         Logger.debug("initBoardCast");
     }
@@ -202,6 +204,16 @@ public class CalibrationFragment extends Fragment implements AdapterView.OnItemS
         }
     }
 
+    private void checkSensor(String sn){
+        Intent intent = new Intent();
+        intent.setAction(CMD_MQ_CHECK_SENSOR);
+        intent.putExtra("sn", sn);
+        this.getContext().sendBroadcast(intent);
+        for(Button button:buttonList){
+            button.setBackgroundColor(getResources().getColor(R.color.holo_green_light));
+        }
+    }
+
 
     private void adjustZero(String sn){
         Intent intent = new Intent();
@@ -271,6 +283,22 @@ public class CalibrationFragment extends Fragment implements AdapterView.OnItemS
                         calibrationView.setBackground(getResources().getDrawable(R.drawable.bg_btn_normal_red));
                     }
                     break;
+                case CMD_MQ_CHECK_SENSOR+MQ_ACK:
+                    arrayList = intent.getStringArrayListExtra("result");
+                    assert arrayList != null;
+                    if(arrayList.size()==0){
+                        pupWindows( "全部秤正常.");
+                    }else {
+                        for(String tx:arrayList){
+                            for(Button button:buttonList){
+                                if(tx.contentEquals(button.getText())){
+                                    button.setBackgroundColor(getResources().getColor(R.color.black_overlay));
+                                }
+                            }
+                        }
+                        pupWindows( "部分秤异常");
+                    }
+                    break;
             }
         }
     }
@@ -287,6 +315,7 @@ public class CalibrationFragment extends Fragment implements AdapterView.OnItemS
             case R.id.boxSpin:
                 boxSn =  boxSnList.get(position);
                 Log.d("current box id:", boxSn);
+                checkSensor(boxSn);
                 break;
         }
         adjustZeroView.setBackground(getResources().getDrawable(R.drawable.bg_btn_normal));