Finish parsing d868uv channels.

This commit is contained in:
Serge Vakulenko 2018-10-31 20:52:20 -07:00
parent 5ce12ee6d6
commit 91287480df
7 changed files with 44 additions and 24 deletions

View File

@ -1456,20 +1456,17 @@ static void setup_channel(int i, int mode, char *name, double rx_mhz, double tx_
memset(ch, 0, sizeof(channel_t)); memset(ch, 0, sizeof(channel_t));
ascii_decode(ch->name, name, 16, 0); ascii_decode(ch->name, name, 16, 0);
//TODO ch->rx_frequency = mhz_to_ghefcdab(rx_mhz);
#if 0
ch->rx_frequency = freq_to_bcd(rx_mhz);
if (tx_mhz > rx_mhz) { if (tx_mhz > rx_mhz) {
ch->repeater_mode = RM_TXPOS; ch->repeater_mode = RM_TXPOS;
ch->tx_offset = offset_to_bcd(tx_mhz - rx_mhz); ch->tx_offset = mhz_to_ghefcdab(tx_mhz - rx_mhz);
} else if (tx_mhz < rx_mhz) { } else if (tx_mhz < rx_mhz) {
ch->repeater_mode = RM_TXNEG; ch->repeater_mode = RM_TXNEG;
ch->tx_offset = offset_to_bcd(rx_mhz - tx_mhz); ch->tx_offset = mhz_to_ghefcdab(rx_mhz - tx_mhz);
} else { } else {
ch->repeater_mode = RM_SIMPLEX; ch->repeater_mode = RM_SIMPLEX;
ch->tx_offset = 0; ch->tx_offset = 0;
} }
#endif
ch->channel_mode = mode; ch->channel_mode = mode;
ch->power = power; ch->power = power;

4
gd77.c
View File

@ -707,8 +707,8 @@ static void setup_channel(int i, int mode, char *name, double rx_mhz, double tx_
ch->tot = tot; ch->tot = tot;
ch->scan_list_index = scanlist; ch->scan_list_index = scanlist;
ch->group_list_index = grouplist; ch->group_list_index = grouplist;
ch->rx_frequency = mhz_to_bcd(rx_mhz); ch->rx_frequency = mhz_to_abcdefgh(rx_mhz);
ch->tx_frequency = mhz_to_bcd(tx_mhz); ch->tx_frequency = mhz_to_abcdefgh(tx_mhz);
ch->ctcss_dcs_receive = rxtone; ch->ctcss_dcs_receive = rxtone;
ch->ctcss_dcs_transmit = txtone; ch->ctcss_dcs_transmit = txtone;

View File

@ -592,8 +592,8 @@ static void setup_channel(int i, int mode, char *name, double rx_mhz, double tx_
ch->tot = tot; ch->tot = tot;
ch->scan_list_index = scanlist; ch->scan_list_index = scanlist;
ch->group_list_index = grouplist; ch->group_list_index = grouplist;
ch->rx_frequency = mhz_to_bcd(rx_mhz); ch->rx_frequency = mhz_to_abcdefgh(rx_mhz);
ch->tx_frequency = mhz_to_bcd(tx_mhz); ch->tx_frequency = mhz_to_abcdefgh(tx_mhz);
ch->ctcss_dcs_receive = rxtone; ch->ctcss_dcs_receive = rxtone;
ch->ctcss_dcs_transmit = txtone; ch->ctcss_dcs_transmit = txtone;

4
rd5r.c
View File

@ -711,8 +711,8 @@ static void setup_channel(int i, int mode, char *name, double rx_mhz, double tx_
ch->tot = tot; ch->tot = tot;
ch->scan_list_index = scanlist; ch->scan_list_index = scanlist;
ch->group_list_index = grouplist; ch->group_list_index = grouplist;
ch->rx_frequency = mhz_to_bcd(rx_mhz); ch->rx_frequency = mhz_to_abcdefgh(rx_mhz);
ch->tx_frequency = mhz_to_bcd(tx_mhz); ch->tx_frequency = mhz_to_abcdefgh(tx_mhz);
ch->ctcss_dcs_receive = rxtone; ch->ctcss_dcs_receive = rxtone;
ch->ctcss_dcs_transmit = txtone; ch->ctcss_dcs_transmit = txtone;

40
util.c
View File

@ -483,19 +483,41 @@ void print_freq(FILE *out, unsigned data)
// //
// Convert frequency in MHz from floating point to // Convert frequency in MHz from floating point to
// a binary coded decimal format (8 digits). // a binary coded decimal format (8 digits).
// Format: abcdefgh
// //
unsigned mhz_to_bcd(double mhz) unsigned mhz_to_abcdefgh(double mhz)
{ {
unsigned hz = iround(mhz * 1000000.0); unsigned hz = iround(mhz * 1000000.0);
unsigned a = (hz / 100000000) % 10;
unsigned b = (hz / 10000000) % 10;
unsigned c = (hz / 1000000) % 10;
unsigned d = (hz / 100000) % 10;
unsigned e = (hz / 10000) % 10;
unsigned f = (hz / 1000) % 10;
unsigned g = (hz / 100) % 10;
unsigned h = (hz / 10) % 10;
return ((hz / 100000000) % 10) << 28 | return a << 28 | b << 24 | c << 20 | d << 16 | e << 12 | f << 8 | g << 4 | h;
((hz / 10000000) % 10) << 24 | }
((hz / 1000000) % 10) << 20 |
((hz / 100000) % 10) << 16 | //
((hz / 10000) % 10) << 12 | // Convert frequency in MHz from floating point to
((hz / 1000) % 10) << 8 | // a binary coded decimal format (8 digits).
((hz / 100) % 10) << 4 | // Format: ghefcdab
((hz / 10) % 10); //
unsigned mhz_to_ghefcdab(double mhz)
{
unsigned hz = iround(mhz * 1000000.0);
unsigned a = (hz / 100000000) % 10;
unsigned b = (hz / 10000000) % 10;
unsigned c = (hz / 1000000) % 10;
unsigned d = (hz / 100000) % 10;
unsigned e = (hz / 10000) % 10;
unsigned f = (hz / 1000) % 10;
unsigned g = (hz / 100) % 10;
unsigned h = (hz / 10) % 10;
return g << 28 | h << 24 | e << 20 | f << 16 | c << 12 | d << 8 | a << 4 | b;
} }
// //

3
util.h
View File

@ -87,7 +87,8 @@ int is_file(char *filename);
// Convert frequency in MHz from floating point to // Convert frequency in MHz from floating point to
// a binary coded decimal format (8 digits). // a binary coded decimal format (8 digits).
// //
unsigned mhz_to_bcd(double mhz); unsigned mhz_to_abcdefgh(double mhz);
unsigned mhz_to_ghefcdab(double mhz);
// //
// Get a binary value of the parameter: On/Off, // Get a binary value of the parameter: On/Off,

View File

@ -648,8 +648,8 @@ static void setup_channel(int i, int mode, char *name, double rx_mhz, double tx_
ch->scan_list_index = scanlist; ch->scan_list_index = scanlist;
ch->group_list_index = grouplist; ch->group_list_index = grouplist;
ch->squelch = squelch; ch->squelch = squelch;
ch->rx_frequency = mhz_to_bcd(rx_mhz); ch->rx_frequency = mhz_to_abcdefgh(rx_mhz);
ch->tx_frequency = mhz_to_bcd(tx_mhz); ch->tx_frequency = mhz_to_abcdefgh(tx_mhz);
ch->ctcss_dcs_receive = rxtone; ch->ctcss_dcs_receive = rxtone;
ch->ctcss_dcs_transmit = txtone; ch->ctcss_dcs_transmit = txtone;
ch->power = power; ch->power = power;