Made 'platform_getVolumeLevel' and 'platform_getMicLevel' API functions return a normalised 8 bit value ranging from 0 to 255 (TG-293 #closed)
This commit is contained in:
parent
379f5aa71b
commit
8e0a5d1c0f
|
|
@ -58,11 +58,11 @@ typedef struct
|
||||||
{
|
{
|
||||||
char name[10]; /* Manufacturer-assigned hardware name. */
|
char name[10]; /* Manufacturer-assigned hardware name. */
|
||||||
|
|
||||||
uint16_t uhf_maxFreq; /* Upper bound for UHF band, in MHz. */
|
uint16_t uhf_maxFreq; /* Upper bound for UHF band, in MHz. */
|
||||||
uint16_t uhf_minFreq; /* Lower bound for UHF band, in MHz. */
|
uint16_t uhf_minFreq; /* Lower bound for UHF band, in MHz. */
|
||||||
|
|
||||||
uint16_t vhf_maxFreq; /* Upper bound for VHF band, in MHz. */
|
uint16_t vhf_maxFreq; /* Upper bound for VHF band, in MHz. */
|
||||||
uint16_t vhf_minFreq; /* Lower bound for VHF band, in MHz. */
|
uint16_t vhf_minFreq; /* Lower bound for VHF band, in MHz. */
|
||||||
|
|
||||||
uint8_t _unused : 4,
|
uint8_t _unused : 4,
|
||||||
uhf_band : 1, /* Device allows UHF band operation. */
|
uhf_band : 1, /* Device allows UHF band operation. */
|
||||||
|
|
@ -89,14 +89,16 @@ void platform_terminate();
|
||||||
float platform_getVbat();
|
float platform_getVbat();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This function reads and returns the current microphone input level.
|
* This function reads and returns the current microphone input level as a
|
||||||
|
* normalised value between 0 and 255.
|
||||||
*/
|
*/
|
||||||
float platform_getMicLevel();
|
uint8_t platform_getMicLevel();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This function reads and returns the current volume selector level.
|
* This function reads and returns the current volume selector level as a
|
||||||
|
* normalised value between 0 and 255.
|
||||||
*/
|
*/
|
||||||
float platform_getVolumeLevel();
|
uint8_t platform_getVolumeLevel();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This function reads and returns the current channel selector level.
|
* This function reads and returns the current channel selector level.
|
||||||
|
|
|
||||||
|
|
@ -36,14 +36,14 @@
|
||||||
* digital value to be fed into the HR_C6000 lineout DAC gain. We thus have to
|
* digital value to be fed into the HR_C6000 lineout DAC gain. We thus have to
|
||||||
* provide the helper function below to keep the real volume level consistent
|
* provide the helper function below to keep the real volume level consistent
|
||||||
* with the knob position.
|
* with the knob position.
|
||||||
* Current knob position corresponds to an analog signal in the range 0 - 1500mV,
|
|
||||||
* which has to be mapped in a range between 1 and 31.
|
|
||||||
*/
|
*/
|
||||||
#ifdef PLATFORM_MDUV3x0
|
#ifdef PLATFORM_MDUV3x0
|
||||||
void _setVolume()
|
void _setVolume()
|
||||||
{
|
{
|
||||||
float level = (platform_getVolumeLevel() / 1560.0f) * 30.0f;
|
// Volume level range is 0 - 255, by right shifting by 3 we get a value in
|
||||||
uint8_t volume = ((uint8_t) (level + 0.5f));
|
// range 0 - 31.
|
||||||
|
uint8_t volume = platform_getVolumeLevel();
|
||||||
|
volume >>= 3;
|
||||||
|
|
||||||
// Mute volume when knob is set below 10%
|
// Mute volume when knob is set below 10%
|
||||||
if(volume < 1)
|
if(volume < 1)
|
||||||
|
|
|
||||||
|
|
@ -69,12 +69,12 @@ void platform_init()
|
||||||
memset(&calibration, 0x00, sizeof(gdxCalibration_t));
|
memset(&calibration, 0x00, sizeof(gdxCalibration_t));
|
||||||
|
|
||||||
/* Initialise hardware information structure */
|
/* Initialise hardware information structure */
|
||||||
hwInfo.vhf_maxFreq = 174;
|
hwInfo.vhf_maxFreq = 174;
|
||||||
hwInfo.vhf_minFreq = 136;
|
hwInfo.vhf_minFreq = 136;
|
||||||
hwInfo.vhf_band = 1;
|
hwInfo.vhf_band = 1;
|
||||||
hwInfo.uhf_maxFreq = 470;
|
hwInfo.uhf_maxFreq = 470;
|
||||||
hwInfo.uhf_minFreq = 400;
|
hwInfo.uhf_minFreq = 400;
|
||||||
hwInfo.uhf_band = 1;
|
hwInfo.uhf_band = 1;
|
||||||
hwInfo.lcd_type = 0;
|
hwInfo.lcd_type = 0;
|
||||||
memcpy(hwInfo.name, "DM-1801", 7);
|
memcpy(hwInfo.name, "DM-1801", 7);
|
||||||
hwInfo.name[7] = '\0';
|
hwInfo.name[7] = '\0';
|
||||||
|
|
@ -100,28 +100,27 @@ void platform_terminate()
|
||||||
|
|
||||||
float platform_getVbat()
|
float platform_getVbat()
|
||||||
{
|
{
|
||||||
float value = 0.0f;
|
|
||||||
pthread_mutex_lock(&adc_mutex);
|
pthread_mutex_lock(&adc_mutex);
|
||||||
value = adc0_getMeasurement(1);
|
uint16_t value = adc0_getMeasurement(1);
|
||||||
pthread_mutex_unlock(&adc_mutex);
|
pthread_mutex_unlock(&adc_mutex);
|
||||||
|
|
||||||
return (value * 3.0f)/1000.0f;
|
return (((float) value) * 3.0f)/1000.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
float platform_getMicLevel()
|
uint8_t platform_getMicLevel()
|
||||||
{
|
{
|
||||||
float value = 0.0f;
|
|
||||||
pthread_mutex_lock(&adc_mutex);
|
pthread_mutex_lock(&adc_mutex);
|
||||||
value = adc0_getMeasurement(3);
|
uint16_t value = adc0_getRawSample(3);
|
||||||
pthread_mutex_unlock(&adc_mutex);
|
pthread_mutex_unlock(&adc_mutex);
|
||||||
|
|
||||||
return value;
|
/* Value from ADC is 12 bit wide: shift right by four to get 0 - 255 */
|
||||||
|
return value >> 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
float platform_getVolumeLevel()
|
uint8_t platform_getVolumeLevel()
|
||||||
{
|
{
|
||||||
/* TODO */
|
/* TODO */
|
||||||
return 0.0f;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int8_t platform_getChSelector()
|
int8_t platform_getChSelector()
|
||||||
|
|
|
||||||
|
|
@ -99,28 +99,27 @@ void platform_terminate()
|
||||||
|
|
||||||
float platform_getVbat()
|
float platform_getVbat()
|
||||||
{
|
{
|
||||||
float value = 0.0f;
|
|
||||||
pthread_mutex_lock(&adc_mutex);
|
pthread_mutex_lock(&adc_mutex);
|
||||||
value = adc0_getMeasurement(1);
|
uint16_t value = adc0_getMeasurement(1);
|
||||||
pthread_mutex_unlock(&adc_mutex);
|
pthread_mutex_unlock(&adc_mutex);
|
||||||
|
|
||||||
return (value * 3.0f)/1000.0f;
|
return (((float) value) * 3.0f)/1000.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
float platform_getMicLevel()
|
uint8_t platform_getMicLevel()
|
||||||
{
|
{
|
||||||
float value = 0.0f;
|
|
||||||
pthread_mutex_lock(&adc_mutex);
|
pthread_mutex_lock(&adc_mutex);
|
||||||
value = adc0_getMeasurement(3);
|
uint16_t value = adc0_getRawSample(3);
|
||||||
pthread_mutex_unlock(&adc_mutex);
|
pthread_mutex_unlock(&adc_mutex);
|
||||||
|
|
||||||
return value;
|
/* Value from ADC is 12 bit wide: shift right by four to get 0 - 255 */
|
||||||
|
return value >> 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
float platform_getVolumeLevel()
|
uint8_t platform_getVolumeLevel()
|
||||||
{
|
{
|
||||||
/* TODO */
|
/* TODO */
|
||||||
return 0.0f;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int8_t platform_getChSelector()
|
int8_t platform_getChSelector()
|
||||||
|
|
|
||||||
|
|
@ -99,14 +99,24 @@ float platform_getVbat()
|
||||||
return adc1_getMeasurement(ADC_VBAT_CH)*3.0f/1000.0f;
|
return adc1_getMeasurement(ADC_VBAT_CH)*3.0f/1000.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
float platform_getMicLevel()
|
uint8_t platform_getMicLevel()
|
||||||
{
|
{
|
||||||
return adc1_getMeasurement(ADC_VOX_CH);
|
/* Value from ADC is 12 bit wide: shift right by four to get 0 - 255 */
|
||||||
|
return (adc1_getRawSample(ADC_VOX_CH) >> 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
float platform_getVolumeLevel()
|
uint8_t platform_getVolumeLevel()
|
||||||
{
|
{
|
||||||
return adc1_getMeasurement(ADC_VOL_CH);
|
/*
|
||||||
|
* Knob position corresponds to an analog signal in the range 0 - 1600mV,
|
||||||
|
* converted to a value in range 0 - 255 using fixed point math: divide by
|
||||||
|
* 1600 and then multiply by 256.
|
||||||
|
*/
|
||||||
|
uint16_t value = adc1_getMeasurement(ADC_VOL_CH);
|
||||||
|
if(value > 1599) value = 1599;
|
||||||
|
uint32_t level = value << 16;
|
||||||
|
level /= 1600;
|
||||||
|
return ((uint8_t) (level >> 8));
|
||||||
}
|
}
|
||||||
|
|
||||||
int8_t platform_getChSelector()
|
int8_t platform_getChSelector()
|
||||||
|
|
|
||||||
|
|
@ -114,14 +114,24 @@ float platform_getVbat()
|
||||||
return (adc1_getMeasurement(ADC_VBAT_CH)*5.7f)/1000.0f;
|
return (adc1_getMeasurement(ADC_VBAT_CH)*5.7f)/1000.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
float platform_getMicLevel()
|
uint8_t platform_getMicLevel()
|
||||||
{
|
{
|
||||||
return 0.0f;
|
/* Value from ADC is 12 bit wide: shift right by four to get 0 - 255 */
|
||||||
|
return (adc1_getRawSample(ADC_VOX_CH) >> 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
float platform_getVolumeLevel()
|
uint8_t platform_getVolumeLevel()
|
||||||
{
|
{
|
||||||
return 0.0f;
|
/*
|
||||||
|
* Knob position corresponds to an analog signal in the range 0 - 1600mV,
|
||||||
|
* converted to a value in range 0 - 255 using fixed point math: divide by
|
||||||
|
* 1600 and then multiply by 256.
|
||||||
|
*/
|
||||||
|
uint16_t value = adc1_getMeasurement(ADC_VOL_CH);
|
||||||
|
if(value > 1599) value = 1599;
|
||||||
|
uint32_t level = value << 16;
|
||||||
|
level /= 1600;
|
||||||
|
return ((uint8_t) (level >> 8));
|
||||||
}
|
}
|
||||||
|
|
||||||
bool platform_getPttStatus()
|
bool platform_getPttStatus()
|
||||||
|
|
|
||||||
|
|
@ -102,14 +102,24 @@ float platform_getVbat()
|
||||||
return adc1_getMeasurement(ADC_VBAT_CH)*3.0f/1000.0f;
|
return adc1_getMeasurement(ADC_VBAT_CH)*3.0f/1000.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
float platform_getMicLevel()
|
uint8_t platform_getMicLevel()
|
||||||
{
|
{
|
||||||
return 0.0f;
|
/* Value from ADC is 12 bit wide: shift right by four to get 0 - 255 */
|
||||||
|
return (adc1_getRawSample(ADC_VOX_CH) >> 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
float platform_getVolumeLevel()
|
uint8_t platform_getVolumeLevel()
|
||||||
{
|
{
|
||||||
return adc1_getMeasurement(ADC_VOL_CH);
|
/*
|
||||||
|
* Knob position corresponds to an analog signal in the range 0 - 1600mV,
|
||||||
|
* converted to a value in range 0 - 255 using fixed point math: divide by
|
||||||
|
* 1600 and then multiply by 256.
|
||||||
|
*/
|
||||||
|
uint16_t value = adc1_getMeasurement(ADC_VOL_CH);
|
||||||
|
if(value > 1599) value = 1599;
|
||||||
|
uint32_t level = value << 16;
|
||||||
|
level /= 1600;
|
||||||
|
return ((uint8_t) (level >> 8));
|
||||||
}
|
}
|
||||||
|
|
||||||
bool platform_getPttStatus()
|
bool platform_getPttStatus()
|
||||||
|
|
|
||||||
|
|
@ -29,13 +29,13 @@ void platform_init()
|
||||||
// Fill hwinfo struct
|
// Fill hwinfo struct
|
||||||
memset(&hwInfo, 0x00, sizeof(hwInfo));
|
memset(&hwInfo, 0x00, sizeof(hwInfo));
|
||||||
snprintf(hwInfo.name, 10, "Linux");
|
snprintf(hwInfo.name, 10, "Linux");
|
||||||
// Frequencies are in MHz
|
// Frequencies are in MHz
|
||||||
hwInfo.vhf_maxFreq = 174;
|
hwInfo.vhf_maxFreq = 174;
|
||||||
hwInfo.vhf_minFreq = 136;
|
hwInfo.vhf_minFreq = 136;
|
||||||
hwInfo.vhf_band = 1;
|
hwInfo.vhf_band = 1;
|
||||||
hwInfo.uhf_maxFreq = 480;
|
hwInfo.uhf_maxFreq = 480;
|
||||||
hwInfo.uhf_minFreq = 400;
|
hwInfo.uhf_minFreq = 400;
|
||||||
hwInfo.uhf_band = 1;
|
hwInfo.uhf_band = 1;
|
||||||
|
|
||||||
emulator_start();
|
emulator_start();
|
||||||
}
|
}
|
||||||
|
|
@ -57,15 +57,23 @@ float platform_getVbat()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
float platform_getMicLevel()
|
uint8_t platform_getMicLevel()
|
||||||
{
|
{
|
||||||
return Radio_State.micLevel;
|
float level = Radio_State.micLevel;
|
||||||
|
if(level < 0.0f) level = 0.0f;
|
||||||
|
if(level > 255.0f) level = 255.0f;
|
||||||
|
|
||||||
|
return ((uint8_t) level);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
float platform_getVolumeLevel()
|
uint8_t platform_getVolumeLevel()
|
||||||
{
|
{
|
||||||
return Radio_State.volumeLevel;
|
float level = Radio_State.volumeLevel;
|
||||||
|
if(level < 0.0f) level = 0.0f;
|
||||||
|
if(level > 255.0f) level = 255.0f;
|
||||||
|
|
||||||
|
return ((uint8_t) level);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue