code: synchronized void updateValue(long value) {
          if (value != currentValue) {
              currentValue = value;
              IOEvent evt = new IOEvent(this);
              getDevice().pinChanged(evt); // the device listeners receive the event first
              for (PinEventListener listener : listeners) { // then pin listeners receive the event
                  listener.onValueChange(evt);
              }
          }
      }
docs: Permits the {@link FirmataDevice} to update input pin value.
  
  @param value the new value