@Override
  public void onGetInstances(String instancesXml) {
    if (DEBUG) Log.d(TAG, "onGetInstances(" + instancesXml + ")");

    ArrayList<String> collectionsPaths;
    try {
      collectionsPaths = (ArrayList<String>) XMLUPnPCPParseUtil.parseInstancePathList(instancesXml);
      for (int i = 0; i < collectionsPaths.size(); i++) {
        mSensors.add(new Sensor(mSensorMgtDevice, this, collectionsPaths.get(i)));
      }
      gotInstances = true;
      if (mSensorListener != null) mSensorListener.onSensorsChanged(this);
    } catch (UPnPException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
  }
  @Override
  public void onGetValues(String valuesXml) {
    if (DEBUG) Log.d(TAG, "onGetValues " + valuesXml);

    try {
      HashMap<String, String> lParameterMap =
          XMLUPnPCPParseUtil.parseParameterValuesList(valuesXml);
      for (Entry<String, String> entry : lParameterMap.entrySet()) {
        if (entry.getKey().startsWith(mPath + DatamodelDefinitions.COLLECTION_ID)) {
          mSensorCollectionId = entry.getValue();
          if (DEBUG) Log.d(TAG, DatamodelDefinitions.COLLECTION_ID + ": " + mSensorCollectionId);
        } else if (entry.getKey().startsWith(mPath + DatamodelDefinitions.COLLECTION_TYPE)) {
          mType = entry.getValue();
          if (DEBUG) Log.d(TAG, DatamodelDefinitions.COLLECTION_TYPE + ": " + mType);
        } else if (entry
            .getKey()
            .startsWith(mPath + DatamodelDefinitions.COLLECTION_FRIENDLYNAME)) {
          mFriendlyName = entry.getValue();
          if (DEBUG)
            Log.d(TAG, DatamodelDefinitions.COLLECTION_FRIENDLYNAME + ": " + mFriendlyName);
        } else if (entry.getKey().startsWith(mPath + DatamodelDefinitions.COLLECTION_INFORMATION)) {
          mInformation = entry.getValue();
          if (DEBUG) Log.d(TAG, DatamodelDefinitions.COLLECTION_INFORMATION + ": " + mInformation);
        } else if (entry
            .getKey()
            .startsWith(mPath + DatamodelDefinitions.COLLECTION_UNIQUEIDENTIFIER)) {
          mUniqueId = entry.getValue();
          if (DEBUG)
            Log.d(TAG, DatamodelDefinitions.COLLECTION_UNIQUEIDENTIFIER + ": " + mUniqueId);
        }
      }
      hasData = true;
      // signal parent that all data for SensorCollection, Sensor, sensorURN and dataItems are
      // available
      if (checkAllData()) mSensorMgtDevice.onSensorCollectionDataAvailable(this);

    } catch (UPnPException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
  }