mirror of
https://github.com/DSheirer/sdrtrunk.git
synced 2026-11-11 08:07:24 -05:00
* #576 Updates P25 activity summaries to list values in hex and decimal. Resolves issue with P25 explicit channel uplink frequency calculations. Resolves issue with Motorola base station id messages and traffic channel messages. Resolves issue with RFSS link control message control channel frequency calculations. Resolves issue with error when using recording tuners.
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
*
|
||||
* * ******************************************************************************
|
||||
* * Copyright (C) 2014-2019 Dennis Sheirer
|
||||
* * Copyright (C) 2014-2020 Dennis Sheirer
|
||||
* *
|
||||
* * This program is free software: you can redistribute it and/or modify
|
||||
* * it under the terms of the GNU General Public License as published by
|
||||
@@ -55,7 +55,8 @@ public class P25ExplicitChannel extends P25Channel implements Comparable<P25Chan
|
||||
{
|
||||
if(mUplinkFrequencyBand != null)
|
||||
{
|
||||
return mUplinkFrequencyBand.getUplinkFrequency(getUplinkChannelNumber());
|
||||
//Note: we explicitly use the downlink frequency from the uplink channel frequency band here
|
||||
return mUplinkFrequencyBand.getDownlinkFrequency(getUplinkChannelNumber());
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
*
|
||||
* * ******************************************************************************
|
||||
* * Copyright (C) 2014-2019 Dennis Sheirer
|
||||
* * Copyright (C) 2014-2020 Dennis Sheirer
|
||||
* *
|
||||
* * This program is free software: you can redistribute it and/or modify
|
||||
* * it under the terms of the GNU General Public License as published by
|
||||
@@ -1357,7 +1357,7 @@ public class P25P1DecoderState extends DecoderState implements IChannelEventList
|
||||
//Network Configuration Messages
|
||||
case MOTOROLA_OSP_TRAFFIC_CHANNEL_ID:
|
||||
case MOTOROLA_OSP_SYSTEM_LOADING:
|
||||
case MOTOROLA_OSP_CONTROL_CHANNEL_ID:
|
||||
case MOTOROLA_OSP_BASE_STATION_ID:
|
||||
case MOTOROLA_OSP_CONTROL_CHANNEL_PLANNED_SHUTDOWN:
|
||||
case OSP_IDENTIFIER_UPDATE_TDMA:
|
||||
case OSP_IDENTIFIER_UPDATE_VHF_UHF_BANDS:
|
||||
|
||||
@@ -177,7 +177,7 @@ public class P25P1NetworkConfigurationMonitor
|
||||
mSNDCPDataChannel = (SNDCPDataChannelAnnouncementExplicit)tsbk;
|
||||
}
|
||||
break;
|
||||
case MOTOROLA_OSP_TRAFFIC_CHANNEL_ID:
|
||||
case MOTOROLA_OSP_BASE_STATION_ID:
|
||||
if(tsbk instanceof MotorolaBaseStationId)
|
||||
{
|
||||
mMotorolaBaseStationId = (MotorolaBaseStationId)tsbk;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
*
|
||||
* * ******************************************************************************
|
||||
* * Copyright (C) 2014-2019 Dennis Sheirer
|
||||
* * Copyright (C) 2014-2020 Dennis Sheirer
|
||||
* *
|
||||
* * This program is free software: you can redistribute it and/or modify
|
||||
* * it under the terms of the GNU General Public License as published by
|
||||
@@ -42,12 +42,12 @@ import java.util.List;
|
||||
public class LCRFSSStatusBroadcastExplicit extends LinkControlWord implements IFrequencyBandReceiver
|
||||
{
|
||||
private static final int[] LRA = {8, 9, 10, 11, 12, 13, 14, 15};
|
||||
private static final int[] DOWNLINK_FREQUENCY_BAND = {16, 17, 18, 19};
|
||||
private static final int[] DOWNLINK_CHANNEL_NUMBER = {20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31};
|
||||
private static final int[] UPLINK_FREQUENCY_BAND = {16, 17, 18, 19};
|
||||
private static final int[] UPLINK_CHANNEL_NUMBER = {20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31};
|
||||
private static final int[] RFSS = {32, 33, 34, 35, 36, 37, 38, 39};
|
||||
private static final int[] SITE = {40, 41, 42, 43, 44, 45, 46, 47};
|
||||
private static final int[] UPLINK_FREQUENCY_BAND = {48, 49, 50, 51};
|
||||
private static final int[] UPLINK_CHANNEL_NUMBER = {52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63};
|
||||
private static final int[] DOWNLINK_FREQUENCY_BAND = {48, 49, 50, 51};
|
||||
private static final int[] DOWNLINK_CHANNEL_NUMBER = {52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63};
|
||||
private static final int[] SERVICE_CLASS = {64, 65, 66, 67, 68, 69, 70, 71};
|
||||
|
||||
private List<Identifier> mIdentifiers;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
*
|
||||
* * ******************************************************************************
|
||||
* * Copyright (C) 2014-2019 Dennis Sheirer
|
||||
* * Copyright (C) 2014-2020 Dennis Sheirer
|
||||
* *
|
||||
* * This program is free software: you can redistribute it and/or modify
|
||||
* * it under the terms of the GNU General Public License as published by
|
||||
@@ -171,10 +171,10 @@ public enum Opcode
|
||||
MOTOROLA_OSP_PATCH_GROUP_DELETE(1, "PATCH GROUP DELE", "MOTOROLA PATCH GROUP DELETE"),
|
||||
MOTOROLA_OSP_PATCH_GROUP_CHANNEL_GRANT(2, "PTCH GRP VCHN GR", "MOTOROLA PATCH GROUP CHANNEL GRANT"),
|
||||
MOTOROLA_OSP_PATCH_GROUP_CHANNEL_GRANT_UPDATE(3, "PTCH GRP VCH UPD", "MOTOROLA PATCH GROUP CHANNEL GRANT UPDATE"),
|
||||
MOTOROLA_OSP_TRAFFIC_CHANNEL_ID(5, "CHANNEL CWID", "CHANNEL CWID"),
|
||||
MOTOROLA_OSP_TRAFFIC_CHANNEL_ID(5, "TRAFFIC CHANNEL", "TRAFFIC CHANNEL"),
|
||||
MOTOROLA_OSP_DENY_RESPONSE(7, "DENY RESPONSE", "MOTOROLA DENY RESPONSE"),
|
||||
MOTOROLA_OSP_SYSTEM_LOADING(9, "SYSTEM LOADING", "SYSTEM LOADING"),
|
||||
MOTOROLA_OSP_CONTROL_CHANNEL_ID(11, "CCH BASE STAT ID", "CONTROL CHANNEL BASE STATION ID"),
|
||||
MOTOROLA_OSP_BASE_STATION_ID(11, "CCH BASE STAT ID", "CONTROL CHANNEL BASE STATION ID"),
|
||||
MOTOROLA_OSP_CONTROL_CHANNEL_PLANNED_SHUTDOWN(14, "CCH PLND SHUTDWN", "CONTROL CHANNEL PLANNED SHUTDOWN"),
|
||||
MOTOROLA_OSP_UNKNOWN(-1, "MOTOROLA OSP UNKNOWN OPCODE", "MOTOROLA OSP UNKNOWN OPCODE"),
|
||||
|
||||
@@ -332,7 +332,7 @@ public enum Opcode
|
||||
case 0x09:
|
||||
return MOTOROLA_OSP_SYSTEM_LOADING;
|
||||
case 0x0B:
|
||||
return MOTOROLA_OSP_CONTROL_CHANNEL_ID;
|
||||
return MOTOROLA_OSP_BASE_STATION_ID;
|
||||
case 0x0E:
|
||||
return MOTOROLA_OSP_CONTROL_CHANNEL_PLANNED_SHUTDOWN;
|
||||
default:
|
||||
|
||||
@@ -305,7 +305,7 @@ public class TSBKMessageFactory
|
||||
|
||||
case MOTOROLA_ISP_UNKNOWN:
|
||||
return new UnknownMotorolaISPMessage(dataUnitID, message, nac, timestamp);
|
||||
case MOTOROLA_OSP_CONTROL_CHANNEL_ID:
|
||||
case MOTOROLA_OSP_BASE_STATION_ID:
|
||||
return new MotorolaBaseStationId(dataUnitID, message, nac, timestamp);
|
||||
case MOTOROLA_OSP_CONTROL_CHANNEL_PLANNED_SHUTDOWN:
|
||||
return new PlannedChannelShutdown(dataUnitID, message, nac, timestamp);
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
/*
|
||||
*
|
||||
* * ******************************************************************************
|
||||
* * Copyright (C) 2014-2020 Dennis Sheirer
|
||||
* *
|
||||
* * This program is free software: you can redistribute it and/or modify
|
||||
* * it under the terms of the GNU General Public License as published by
|
||||
* * the Free Software Foundation, either version 3 of the License, or
|
||||
* * (at your option) any later version.
|
||||
* *
|
||||
* * This program is distributed in the hope that it will be useful,
|
||||
* * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* * GNU General Public License for more details.
|
||||
* *
|
||||
* * You should have received a copy of the GNU General Public License
|
||||
* * along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
* * *****************************************************************************
|
||||
*
|
||||
*
|
||||
*/
|
||||
package io.github.dsheirer.module.decode.p25.phase1.message.tsbk.motorola.osp;
|
||||
|
||||
import io.github.dsheirer.bits.CorrectedBinaryMessage;
|
||||
import io.github.dsheirer.identifier.Identifier;
|
||||
import io.github.dsheirer.module.decode.p25.phase1.P25P1DataUnitID;
|
||||
import io.github.dsheirer.module.decode.p25.phase1.message.tsbk.OSPMessage;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
public class MotorolaTrafficChannel extends OSPMessage
|
||||
{
|
||||
public MotorolaTrafficChannel(P25P1DataUnitID dataUnitID, CorrectedBinaryMessage message, int nac, long timestamp)
|
||||
{
|
||||
super(dataUnitID, message, nac, timestamp);
|
||||
}
|
||||
|
||||
public String toString()
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append(getMessageStub());
|
||||
sb.append(" TRAFFIC CHANNEL ");
|
||||
sb.append(getMessage().toHexString());
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Identifier> getIdentifiers()
|
||||
{
|
||||
return Collections.EMPTY_LIST;
|
||||
}
|
||||
}
|
||||
@@ -1,18 +1,24 @@
|
||||
/*******************************************************************************
|
||||
* sdr-trunk
|
||||
* Copyright (C) 2014-2019 Dennis Sheirer
|
||||
/*
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public
|
||||
* License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any
|
||||
* later version.
|
||||
* * ******************************************************************************
|
||||
* * Copyright (C) 2014-2020 Dennis Sheirer
|
||||
* *
|
||||
* * This program is free software: you can redistribute it and/or modify
|
||||
* * it under the terms of the GNU General Public License as published by
|
||||
* * the Free Software Foundation, either version 3 of the License, or
|
||||
* * (at your option) any later version.
|
||||
* *
|
||||
* * This program is distributed in the hope that it will be useful,
|
||||
* * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* * GNU General Public License for more details.
|
||||
* *
|
||||
* * You should have received a copy of the GNU General Public License
|
||||
* * along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
* * *****************************************************************************
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with this program.
|
||||
* If not, see <http://www.gnu.org/licenses/>
|
||||
*
|
||||
******************************************************************************/
|
||||
*/
|
||||
|
||||
package io.github.dsheirer.source.tuner.manager;
|
||||
|
||||
@@ -62,7 +68,6 @@ public class PassThroughSourceManager extends ChannelSourceManager
|
||||
PassThroughChannelSource channelSource = new PassThroughChannelSource(new SourceEventProxy(),
|
||||
mTunerController, tunerChannel);
|
||||
|
||||
mLog.debug("Returning a pass through channel");
|
||||
mTunerChannels.add(tunerChannel);
|
||||
|
||||
return channelSource;
|
||||
@@ -77,16 +82,18 @@ public class PassThroughSourceManager extends ChannelSourceManager
|
||||
if(event.hasSource() && event.getSource() instanceof PassThroughChannelSource)
|
||||
{
|
||||
mTunerController.addBufferListener((PassThroughChannelSource)event.getSource());
|
||||
broadcast(SourceEvent.channelCountChange(mTunerChannels.size()));
|
||||
}
|
||||
break;
|
||||
case REQUEST_STOP_SAMPLE_STREAM:
|
||||
if(event.hasSource() && event.getSource() instanceof PassThroughChannelSource)
|
||||
{
|
||||
mTunerController.removeBufferListener((PassThroughChannelSource)event.getSource());
|
||||
PassThroughChannelSource source = (PassThroughChannelSource)event.getSource();
|
||||
mTunerController.removeBufferListener(source);
|
||||
mTunerChannels.remove(source.getTunerChannel());
|
||||
broadcast(SourceEvent.channelCountChange(mTunerChannels.size()));
|
||||
}
|
||||
break;
|
||||
default:
|
||||
mLog.debug("Got source event: " + event);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
*
|
||||
* * ******************************************************************************
|
||||
* * Copyright (C) 2014-2019 Dennis Sheirer
|
||||
* * Copyright (C) 2014-2020 Dennis Sheirer
|
||||
* *
|
||||
* * This program is free software: you can redistribute it and/or modify
|
||||
* * it under the terms of the GNU General Public License as published by
|
||||
@@ -27,7 +27,6 @@ import io.github.dsheirer.source.SourceEvent;
|
||||
import io.github.dsheirer.source.tuner.Tuner;
|
||||
import io.github.dsheirer.source.tuner.TunerClass;
|
||||
import io.github.dsheirer.source.tuner.TunerType;
|
||||
import io.github.dsheirer.source.tuner.manager.ChannelSourceManager;
|
||||
import io.github.dsheirer.source.tuner.manager.HeterodyneChannelSourceManager;
|
||||
import io.github.dsheirer.source.tuner.manager.PassThroughSourceManager;
|
||||
import io.github.dsheirer.source.tuner.manager.PolyphaseChannelSourceManager;
|
||||
@@ -50,8 +49,6 @@ public class RecordingTuner extends Tuner
|
||||
|
||||
mUserPreferences = userPreferences;
|
||||
|
||||
ChannelSourceManager channelSourceManager = null;
|
||||
|
||||
if(getTunerController().getCurrentSampleRate() < 100000.0d)
|
||||
{
|
||||
setChannelSourceManager(new PassThroughSourceManager(getTunerController()));
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
*
|
||||
* * ******************************************************************************
|
||||
* * Copyright (C) 2014-2019 Dennis Sheirer
|
||||
* * Copyright (C) 2014-2020 Dennis Sheirer
|
||||
* *
|
||||
* * This program is free software: you can redistribute it and/or modify
|
||||
* * it under the terms of the GNU General Public License as published by
|
||||
@@ -177,7 +177,7 @@ public class RecordingTunerController extends TunerController
|
||||
}
|
||||
catch(IOException ioe)
|
||||
{
|
||||
mLog.debug("Error loading recording tuner baseband recording: " + rtc.getPath(), ioe);
|
||||
mLog.debug("Error loading recording tuner baseband recording [" + rtc.getPath() + "] Error: " + ioe.getLocalizedMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user