protected final void read(InputStream in, ByteArrayOutputStream sink, DataListener listener) {
   final byte[] buf = new byte[1024];
   try {
     int len = -1;
     boolean reading = true;
     while (reading) {
       final int sinkSize = sink.size();
       final int readSize =
           (listener == null
               ? buf.length
               : Math.min(buf.length, listener.getDesiredByteCount(this, sinkSize)));
       if ((len = in.read(buf, 0, readSize)) > 0) {
         if (listener == null) {
           sink.write(buf, 0, len);
           reading = false;
         } else {
           if (len > 0 && !listener.receivedData(this, buf, 0, len, sink, sink.size())) {
             reading = false;
             ;
           }
         }
       } else if (listener == null) {
         reading = false;
       }
     }
   } catch (IOException e) {
     log.warn("IOException reading serial data: {}", e.getMessage());
   }
   if (eventLog.isTraceEnabled()) {
     eventLog.trace("Finished reading data: {}", asciiDebugValue(sink.toByteArray()));
   }
 }
 /** @param inPacket */
 private void notifyDataReceived(CrtpPacket packet) {
   boolean found = false;
   for (DataListener dataListener : mDataListeners) {
     if (dataListener.getPort() == packet.getHeader().getPort()) {
       dataListener.dataReceived(packet);
       found = true;
     }
   }
   if (!found) {
     // mLogger.warn("Got packet on port [" + packet.getHeader().getPort() + "] but found no data
     // listener to handle it.");
   }
 }
示例#3
0
  private void updateScreenNail(long version, Future<Bitmap> future) {
    ImageEntry entry = mImageCache.get(version);
    if (entry == null || entry.screenNailTask != future) {
      Bitmap screenNail = future.get();
      if (screenNail != null) screenNail.recycle();
      return;
    }

    entry.screenNailTask = null;
    entry.screenNail = future.get();

    if (entry.screenNail == null) {
      entry.failToLoad = true;
      /*a@nufront start*/
      for (int i = -1; i <= 1; ++i) {
        if (version == getVersion(mCurrentIndex + i)) {
          if (0 == i) updateTileProvider(entry);
          mPhotoView.notifyImageInvalidated(i);
        }
      }
      /*a@nufront end*/
    } else {
      if (mDataListener != null) {
        mDataListener.onPhotoAvailable(version, false);
      }
      for (int i = -1; i <= 1; ++i) {
        if (version == getVersion(mCurrentIndex + i)) {
          if (i == 0) updateTileProvider(entry);
          mPhotoView.notifyImageInvalidated(i);
        }
      }
    }
    updateImageRequests();
  }
  /**
   * Constructor.
   *
   * @param connection the XMPP connection
   */
  private InBandBytestreamManager(Connection connection) {
    this.connection = connection;

    // register bytestream open packet listener
    initiationListener = new InitiationListener(this);
    this.connection.addPacketListener(initiationListener, initiationListener.getFilter());

    // register bytestream data packet listener
    dataListener = new DataListener(this);
    this.connection.addPacketListener(dataListener, dataListener.getFilter());

    // register bytestream close packet listener
    closeListener = new CloseListener(this);
    this.connection.addPacketListener(closeListener, closeListener.getFilter());
  }
示例#5
0
  private void updateCurrentIndex(int index) {
    mCurrentIndex = index;
    updateSlidingWindow();

    MediaItem item = mData[index % DATA_CACHE_SIZE];
    mItemPath = item == null ? null : item.getPath();

    updateImageCache();
    updateImageRequests();
    updateTileProvider();
    mPhotoView.notifyOnNewImage();

    if (mDataListener != null) {
      mDataListener.onPhotoChanged(index, mItemPath);
    }
    fireModelInvalidated();
  }
示例#6
0
  private void updateFullImage(long version, Future<BitmapRegionDecoder> future) {
    ImageEntry entry = mImageCache.get(version);
    if (entry == null || entry.fullImageTask != future) {
      BitmapRegionDecoder fullImage = future.get();
      if (fullImage != null) fullImage.recycle();
      return;
    }

    entry.fullImageTask = null;
    entry.fullImage = future.get();
    if (entry.fullImage != null) {
      if (mDataListener != null) {
        mDataListener.onPhotoAvailable(version, true);
      }
      if (version == getVersion(mCurrentIndex)) {
        updateTileProvider(entry);
        mPhotoView.notifyImageInvalidated(0);
      }
    }
    updateImageRequests();
  }
示例#7
0
 /**
  * Post marker data to subscribed listeners.
  *
  * @param cmap the channel map containing the marker data
  */
 protected void fireMarkersUpdated(ChannelMap cmap) {
   for (DataListener listener : markerListeners) {
     SimpleResponse r = new SimpleResponse(cmap);
     listener.postData(r);
   }
 }
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Button refreshButton = (Button) findViewById(R.id.refresh);
    refreshButton.setOnClickListener(this);
    Button connectButton = (Button) findViewById(R.id.connect);
    connectButton.setOnClickListener(this);
    Button disconnectButton = (Button) findViewById(R.id.disconnect);
    disconnectButton.setOnClickListener(this);
    Button pauseButton = (Button) findViewById(R.id.pause);
    pauseButton.setOnClickListener(this);
    // // Uncommet to test Muse File Reader
    //
    // // file can be big, read it in a separate thread
    // Thread thread = new Thread(new Runnable() {
    //     public void run() {
    //         playMuseFile("testfile.muse");
    //     }
    // });
    // thread.start();

    // kt: start the audio feedback thread
    Thread thread =
        new Thread(
            new Runnable() {
              public void run() {
                stopSounds = 0;
                playAudioFeedback(0);
              }
            });
    thread.start();

    File dir = getExternalFilesDir(Environment.DIRECTORY_DOCUMENTS);
    fileWriter = MuseFileFactory.getMuseFileWriter(new File(dir, "new_muse_file.muse"));
    Log.i("Muse Headband", "libmuse version=" + LibMuseVersion.SDK_VERSION);
    fileWriter.addAnnotationString(1, "MainActivity onCreate");
    dataListener.setFileWriter(fileWriter);

    boolean append_to_file = false;
    // GettingCurrentDate gcd = new GettingCurrentDate();
    // DateFormat df = new SimpleDateFormat("dd-MM-yy_HH:mm:ss");
    DateFormat df = new SimpleDateFormat("yy-MM-dd_HH:mm:ss");
    Date dateobj = new Date();
    // System.out.println(df.format(dateobj));
    String ldt = df.format(dateobj);
    // String ldt = gcd.getCurrentDateTime();
    try {
      String fdname = dir + "/muse_data_file" + ldt + ".csv";
      writeData = new FileWriter(fdname, append_to_file);
    } catch (Exception e) {
      Log.e("Muse Headband", e.toString());
    }
    print_line = new PrintWriter(writeData);
    // fileWriterData.addAnnotationString(1, "alpha, beta, delta, gamma, theta,");

    // String strData = "Time ms,AlphaAbs0,AlphaAbs1,AlphaAbs2,AlphaAbs3, BetaAbs0, BetaAbs1,
    // BetaAbs2, BetaAbs3, DeltaAbs0, DeltaAbs1, DeltaAbs2, DeltaAbs3, GammaAbs0, GammaAbs1,
    // GammaAbs2, GammaAbs3, ThetaAbs0, ThetaAbs1, ThetaAbs2, ThetaAbs3, Horseshoe0, Horseshoe1,
    // Horseshoe2, Horseshoe4 " + "\r\n";
    // Sensor1, Sensor2, Sensor3, Sensor4 " + "\r\n";
    // old setup: all sensors
    // String strData = "Packet time,Time ms,Eeg TP9,Eeg TP10,Eeg FP1,Eeg FP2,AlphaAbs TP9,AlphaAbs
    // TP10,AlphaAbs FP1,AlphaAbs FP2,BetaAbs TP9,BetaAbs TP10,BetaAbs FP1,BetaAbs FP2,Delta
    // TP9,Delta TP10,Delta FP1,Delta FP2,GammaAbs TP9,GammaAbs TP10,GammaAbs FP1,GammaAbs
    // FP2,ThetaAbs TP9,ThetaAbs TP10,ThetaAbs FP1,ThetaAbs FP2,Horseshoe tp9,Horseshoe
    // TP10,Horseshoe FP1,Horseshoe FP2 " + "\r\n";

    // new setu[p : only fp1, fp2 eeg sensors
    String strData =
        "Packet time,Time ms,Eeg FP1,Eeg FP2,AlphaAbs FP1,AlphaAbs FP2,BetaAbs FP1,BetaAbs FP2,Delta FP1,Delta FP2,GammaAbs FP1,GammaAbs FP2,ThetaAbs FP1,ThetaAbs FP2,,Horseshoe FP1,Horseshoe FP2 "
            + "\r\n";

    print_line.printf(strData);
  }
示例#9
0
 public void removeDataListener(JSObject event) {
   super.removeDataListener(DataListener.get(event));
 }
示例#10
0
 public void addDataListener(JSObject event) {
   super.addDataListener(DataListener.get(event));
 }
 /**
  * Remove a data listener for data that comes on a specific port
  *
  * @param dataListener
  */
 public void removeDataListener(DataListener dataListener) {
   mLogger.debug("Removing data listener for port [" + dataListener.getPort() + "]");
   this.mDataListeners.remove(dataListener);
 }
 /**
  * Add a data listener for data that comes on a specific port
  *
  * @param dataListener
  */
 public void addDataListener(DataListener dataListener) {
   mLogger.debug("Adding data listener for port [" + dataListener.getPort() + "]");
   this.mDataListeners.add(dataListener);
 }