docs: private int read(final byte memAddr) throws IOException {
  
  		// ask device for reading data - see FIGURE 7-5
  		byte[] cmd = new byte[] { (byte) ((memAddr << 4) | CMD_READ) };
  
  		// read two bytes
  		byte[] buf = new byte[2];
  		int read = i2cDevice.read(cmd, 0, cmd.length,
  				buf, 0, buf.length);
  		if (read != 2) {
  			throw new IOException("Expected to read two bytes but got: " + read);
  		}
  
  		// transform signed byte to unsigned byte stored as int
  		int first = buf[0] & 0xFF;
  		int second = buf[1] & 0xFF;
  
  		// interpret two bytes as one integer
  		return (first << 8) | second;
  
  	}