anchor.diff:      return _serialPort.write([DIGITAL_MESSAGE | portNumber, _digitalOutputData[portNumber] & 0x7F, _digitalOutputData[portNumber] >> 7]);
     }
   
  -  /// Asks the arduino to read the value of digital pin
  -  //Future<int> digitalRead(int pin) => new Future.value((_digitalInputData[pin>>3] >> (pin & 0x07)) & 0x01);
  +  /// Stream that sent FirmataVersion
  +  Stream<PinState> get onDigitalRead => _digitalReadController.stream;
  +
  +  // Read the digatal value from pin;
  +  //int digitalRead(int pin) => _digitalOutputData[pin];
   
     /// Asks the arduino to write an analog message.
     Future<bool> analogWrite(int pin, int value) {
  
positive.code:   final Map<int, int> _pins = {};
    final SysexParser _parser = new SysexParser();
    final List<int> _digitalOutputData = new List.filled(16, 0);
  
    // Firmware version return by Firmata protocol, only read access
    FirmataVersion _firmaware;
  
negative.code:     return _serialPort.write([ANALOG_MESSAGE | (pin & 0x0F), value & 0x7F, value >> 7]);
    }
  
    // TODO analog read stream
  
    // Read the analog value from pin;
    //int analogRead(int pin) => _analoglOutputData[pin];
  
  }
  
  