anchor.diff:      });
     }
   
  -  /// Analyse the change and dispatch wich pin as change
     void analogPinStatesChanged(Map<int, int> states){
       states.forEach((pin, state){
           analogInputData[pin] = state;
  
positive.code:     });
    }
  
    /// Asks the arduino to set the pin to a certain mode.
    void pinMode(int pin, int mode) {
      pins[pin] = mode;
      serialPort.write([PIN_MODE, pin, mode]);
    }
  
    Future<bool> reset() {
      return serialPort.write([SYSTEM_RESET]);
    }
  
  
    /// Resquest a QUERY_FIRMWARE call
    Future<bool> queryFirmware() => serialPort.write([START_SYSEX, QUERY_FIRMWARE, END_SYSEX]);
  
    /// Asks the arduino to tell us the current state of a pin
    //Future<bool> queryPinState(int pin) => _serialPort.write(([START_SYSEX, PIN_STATE_QUERY, pin, END_SYSEX]));
  
    /// Request a CAPABILITY_RESPONSE call
    Future<bool> queryCapability() => serialPort.write([START_SYSEX, CAPABILITY_QUERY, END_SYSEX]);
  
    /// Asks the arduino to tell us its analog pin mapping
    Future<bool> queryAnalogMapping() => serialPort.write([START_SYSEX, ANALOG_MAPPING_QUERY, END_SYSEX]);
  
    /// Close the connection
    Future<bool> close() => serialPort.close();
  
    /// Asks the arduino to write a value to a digital pin
    Future<bool> digitalWrite(int pin, int value) {
      final portNumber = (pin >> 3) & 0x0F;
      if (value == 0) {
        digitalOutputData[portNumber] &= ~(1 << (pin & 0x07)); // Clear bit
  
negative.code:   final Map<int, int> analogInputData = {};
    FirmataVersion firmware;
  
    _Board(String portname) : serialPort = new SerialPort(portname, baudrate: 57600);
  
    Future open() {
      final completer = new Completer<bool>();
      serialPort.open().then((_) {
        serialPort.onRead.listen(parser.append);
  