code: public int getValue() throws ControlException{
  		int v = 0;
  
  		if(type==V4L4JConstants.CTRL_TYPE_STRING)
  			throw new UnsupportedMethod("This control is a string control and does not accept calls to getValue()");
  		if(type==V4L4JConstants.CTRL_TYPE_LONG)
  			throw new UnsupportedMethod("This control is a long control and does not support calls to setValue()");
  		
  		state.get();
  		if(type==V4L4JConstants.CTRL_TYPE_BUTTON) {
  			state.put();
  			return 0;
  		}
  		
  		try {v = doGetValue(v4l4jObject, id);}
  		catch (ControlException ce){
  			state.put();
  			throw ce;
  		}
  		state.put();
  		return v;
  	}
docs: This method retrieves the current value of this control. Some controls
  (for example relative values like pan or tilt) are write-only and getting
  their value does not make sense. Invoking this method on this kind of
  controls will trigger a ControlException.
  @return the current value of this control (0 if it is a button)
  @throws ControlException if the value cannot be retrieved
  @throws UnsupportedMethod if this control is of type {@link V4L4JConstants#CTRL_TYPE_STRING}
  (and you should be using {@link #getStringValue()} instead) or
  if this control is of type {@link V4L4JConstants#CTRL_TYPE_LONG}
  (and you should be using {@link #setLongValue(long)} instead).
  @throws StateException if this control has been released and must not be used anymore.