示例#1
0
        @Override
        public void addSensor(int deviceID, int sensor, int sampleInterval) throws RemoteException {
          synchronized (mDeviceMap) {
            synchronized (mSeedNodeMap) {
              Device device = mDeviceMap.get(deviceID);
              device.addSensor(sensor, sampleInterval);
              SeedNode existingSeed = mSeedNodeMap.get(sensor);
              if (existingSeed != null) {
                existingSeed.attachDevice(device);
                existingSeed.startSensor();
              } else {
                SeedNode seed = new SeedNode(SensorType.getSensorName(sensor), sensor, device);
                mSeedNodeMap.put(sensor, seed);
                mNodeNameMap.put("|" + SensorType.getSensorName(sensor), seed);
              }
              DebugHelper.log(TAG, "Added sensor type: " + sensor);

              /*for (Map.Entry<Integer, SeedNode> entry: mSeedNodeMap.entrySet()) {
              	sensor = entry.getKey();
              	SeedNode node = entry.getValue();
              	DebugHelper.log(TAG, node.getClass().getName() + ": " + sensor + " device: " + node.getAttachedDevice());
              }*/
            }
          }
        }
示例#2
0
        @Override
        public void handleMessage(Message msg) {
          switch (msg.what) {
            case MSG_PUSH_DATA:
              Bundle bundle = (Bundle) msg.obj;
              int sensor = bundle.getInt(BUNDLE_SENSOR);
              SeedNode seed = mSeedNodeMap.get(sensor);

              if (seed == null) {
                // throw new UnsupportedOperationException("No SeedNode for SensorType: " + sensor);
                DebugHelper.log(TAG, "No SeedNode for SensorType: " + sensor);
                return;
              }

              int deviceID = bundle.getInt(BUNDLE_DEVICE_ID);

              if (seed.getAttachedDevice() != mDeviceMap.get(deviceID)) {
                DebugHelper.log(
                    TAG,
                    "Unmatched seed node and attached device(sensor: "
                        + sensor
                        + ", attempted device ID: "
                        + deviceID);
                return;
              }

              String type = bundle.getString(BUNDLE_TYPE);
              int length = bundle.getInt(BUNDLE_LENGTH);
              String name = SensorType.getSensorName(sensor);
              long timestamp = bundle.getLong(BUNDLE_TIMESTAMP);

              // show notification
              showNotification(sensor, name);

              if (type.equals("double[]")) {
                seed.input(name, type, bundle.getDoubleArray(BUNDLE_DATA), length, timestamp);
              } else if (type.equals("double")) {
                seed.input(name, type, bundle.getDouble(BUNDLE_DATA), length, timestamp);
              } else if (type.equals("int[]")) {
                seed.input(name, type, bundle.getIntArray(BUNDLE_DATA), length, timestamp);
              } else if (type.equals("int")) {
                seed.input(name, type, bundle.getInt(BUNDLE_DATA), length, timestamp);
              } else if (type.equals("String")) {
                seed.input(name, type, bundle.getString(BUNDLE_DATA), length, timestamp);
              } else {
                throw new IllegalArgumentException("Unknown data_type: " + type);
              }
              break;

            default:
              super.handleMessage(msg);
              break;
          }
        }
示例#3
0
        @Override
        public void removeDevice(int deviceID) throws RemoteException {
          synchronized (mDeviceMap) {
            synchronized (mSeedNodeMap) {
              Device removedDevice = mDeviceMap.remove(deviceID);
              if (removedDevice != null) {
                Sensor[] sensors = removedDevice.getSensorList();
                for (Sensor sensor : sensors) {
                  SeedNode seed = mSeedNodeMap.get(sensor.getSensorID());
                  if (seed.isConnected()) {
                    seed.detachDevice();
                  } else {
                    mSeedNodeMap.remove(sensor.getSensorID());
                    mNodeNameMap.remove("|" + SensorType.getSensorName(sensor.getSensorID()));
                  }
                }
                DebugHelper.log(TAG, "Removed device ID: " + deviceID);
                mNotification.showNotificationNow("Removed device ID " + deviceID);
              }
            }
          }
          // print seed map
          DebugHelper.log(TAG, "Printing mSeedNodeMap..");
          for (Map.Entry<Integer, SeedNode> entry : mSeedNodeMap.entrySet()) {
            int sensor = entry.getKey();
            SeedNode node1 = entry.getValue();
            DebugHelper.log(
                TAG,
                node1.getClass().getName()
                    + ": "
                    + sensor
                    + " device: "
                    + node1.getAttachedDevice());
          }
          DebugHelper.log(TAG, "Done.");

          // print node name map
          DebugHelper.log(TAG, "Printing mNodeNameMap..");
          for (Map.Entry<String, DataFlowNode> entry : mNodeNameMap.entrySet()) {
            String nodeName = entry.getKey();
            DataFlowNode node2 = entry.getValue();
            DebugHelper.log(TAG, nodeName + ": " + node2.getClass().getName());
          }
          DebugHelper.log(TAG, "Done.");
        }