SimpleVOX* setting question

  • 1
  • Question
  • Updated 4 years ago
In the FlexLib API code, I'm not sure what is going on with the SimpleVOXLevel and SimpleVOXDelay code. On most of the settings, there is a check to make sure the min/max levels aren't exceeded (like 0 or 100). But not on those two settings. Also, on SimpleVOXDelay, it is multiplied by 20 when sent to the radio. Could someone explain how that works, or if that was just an oversight? Especially the * 20 multiplier. Thanks!

private int _simpleVOXLevel;
///
/// The vox level from 0 to 100
///
public int SimpleVOXLevel
{
get { return _simpleVOXLevel; }
set
{
if (_simpleVOXLevel != value)
{
_simpleVOXLevel = value;
SendCommand("transmit set vox_level=" + _simpleVOXLevel);
RaisePropertyChanged("SimpleVOXLevel");
}
}
}

private int _simpleVOXDelay;
///
/// Sets the VOX delay from 0 to 100
///
public int SimpleVOXDelay
{
get { return _simpleVOXDelay; }
set
{
if (_simpleVOXDelay != value)
{
_simpleVOXDelay = value;
SendCommand("transmit set vox_delay=" + _simpleVOXDelay * 20);
RaisePropertyChanged("SimpleVOXDelay");
}
}
}
Photo of Robbie - KI4TTZ

Robbie - KI4TTZ

  • 479 Posts
  • 77 Reply Likes

Posted 4 years ago

  • 1
Photo of Richard Clafton W4/G7EIX

Richard Clafton W4/G7EIX, Elmer

  • 455 Posts
  • 117 Reply Likes


Seems, looking at the Obj-C code, that whatever you pass will be divided by 20, so yes - multiplying by 20 is the correct way - as for why...... can't answer that.
Photo of Eric - KE5DTO

Eric - KE5DTO, Employee

  • 673 Posts
  • 203 Reply Likes
We probably should be range checking the values in FlexLib since that is one level of API that we are offering.  We also do range checking in the over-the-wire TCP protocol inside the radio.  Thanks for bringing this to our attention.

As for the *20 and /20, this is likely just a units/range mapping thing.  I would have to ask Ed Gonzalez as he is the expert on our codec interface code, but we often map a slider range of 0-100 on the client side of the interface just to simplify things.  Then we will adjust the value internally to fit nicely with the data the command modifies.  This could probably be moved inside the radio for the sake of clarity.