better support simplex channel selection via iden table; update iden_channel_calc.py helper to support doing conversion to channel no and FROM channel no;

pull/1/head
Bryan Biedenkapp 5 years ago
parent afe79d66b0
commit b7b88b3c84

@ -1241,14 +1241,6 @@ bool Host::readParams()
return false;
}
if (entry.txOffsetMhz() == 0U) {
::LogError(LOG_HOST, "Channel Id %u has an invalid Tx offset.", m_channelId);
return false;
}
uint32_t calcSpace = (uint32_t)(entry.chSpaceKhz() / 0.125);
float calcTxOffset = entry.txOffsetMhz() * 1000000;
m_channelNo = (uint32_t)::strtoul(rfssConfig["channelNo"].as<std::string>("1").c_str(), NULL, 16);
if (m_channelNo == 0U) { // clamp to 1
m_channelNo = 1U;
@ -1257,8 +1249,24 @@ bool Host::readParams()
m_channelNo = 4095U;
}
if (m_duplex) {
if (entry.txOffsetMhz() == 0U) {
::LogError(LOG_HOST, "Channel Id %u has an invalid Tx offset.", m_channelId);
return false;
}
uint32_t calcSpace = (uint32_t)(entry.chSpaceKhz() / 0.125);
float calcTxOffset = entry.txOffsetMhz() * 1000000;
m_rxFrequency = (uint32_t)((entry.baseFrequency() + ((calcSpace * 125) * m_channelNo)) + calcTxOffset);
m_txFrequency = (uint32_t)((entry.baseFrequency() + ((calcSpace * 125) * m_channelNo)));
}
else {
uint32_t calcSpace = (uint32_t)(entry.chSpaceKhz() / 0.125);
m_rxFrequency = (uint32_t)((entry.baseFrequency() + ((calcSpace * 125) * m_channelNo)));
m_txFrequency = m_rxFrequency;
}
yaml::Node& voiceChList = rfssConfig["voiceChNo"];
for (size_t i = 0; i < voiceChList.size(); i++) {

@ -46,9 +46,17 @@ if __name__ == '__main__':
parser.add_argument('--spacing', action = 'store', dest = 'Spacing', type = float, help = 'Channel Spacing (in KHz)', required = True)
parser.add_argument('--offset', action = 'store', dest = 'InputOffset', type = float, help = 'Input Offset (in MHz)', required = True)
parser.add_argument('--bandwidth', action = 'store', dest = 'Bandwidth', type = float, help = 'Bandwidth (in KHz)', required = True)
parser.add_argument('--tx', action = 'store', dest = 'TxFrequency', type = int, help = 'Transmit Frequency (in Hz, this should be within the band of the Base Frequency)', required = True)
parser.add_argument('--tx', action = 'store', dest = 'TxFrequency', type = int, help = 'Transmit Frequency (in Hz, this should be within the band of the Base Frequency)', required = False)
parser.add_argument('--ch-no', action = 'store', dest = 'ChannelNo', type = str, help = 'Logical Channel Number', required = False)
cli_args = parser.parse_args()
if (not cli_args.TxFrequency) and (not cli_args.ChannelNo):
print ('ERROR: Tx Frequency or Channel Number must be spcified!')
quit()
if (cli_args.TxFrequency) and (cli_args.ChannelNo):
print ('ERROR: Tx Frequency or Channel Number must be spcified!')
quit()
if (cli_args.TxFrequency):
if (cli_args.TxFrequency < cli_args.BaseFrequency):
print ('ERROR: Tx Frequency (' + '%.5f' % float(cli_args.TxFrequency / HZ_MHZ) + ') is out of band range for base frequency (' + '%.5f' % float(cli_args.BaseFrequency / HZ_MHZ) + '). ' + \
'Tx Frequency must be greater then the base frequency!')
@ -69,9 +77,22 @@ if __name__ == '__main__':
'%.3f' % cli_args.InputOffset + ',' + str(cli_args.Bandwidth) + ',"')
print ('\r\nChannel Data:')
offsetHz = cli_args.InputOffset * HZ_MHZ
if cli_args.ChannelNo:
space = cli_args.Spacing / 0.125
chNo = int(cli_args.ChannelNo, 16)
rxFrequency = (cli_args.BaseFrequency + ((space * 125) * chNo)) + offsetHz
txFrequency = (cli_args.BaseFrequency + ((space * 125) * chNo))
print ('\r\nChannel Number: ' + '%x' % chNo)
print ('\r\nTx Frequency: ' + '%.5f' % (float(txFrequency / HZ_MHZ)) + ' MHz' +
'\r\nRx Frequency: ' + '%.5f' % (float(rxFrequency / HZ_MHZ)) + ' MHz')
else:
rxFrequency = int(cli_args.TxFrequency + offsetHz)
print ('Tx Frequency: ' + '%.5f' % (float(cli_args.TxFrequency / HZ_MHZ)) + ' MHz' +
'\r\nRx Frequency: ' + '%.5f' % (float(rxFrequency / HZ_MHZ)) + ' MHz')

Loading…
Cancel
Save

Powered by TurnKey Linux.