mirror of
https://github.com/DSheirer/sdrtrunk.git
synced 2026-11-12 08:37:25 -05:00
Resolves #249 - removes the state monitor runnable from the channel
state and replaces it with a processing chain heartbeat that is generated by the sample source. Previously, the state monitor was running on a separate thread and this was causing multi-threading issues. With this update, all channel state operations (and all module operations) occur on the source's buffer processing thread.
This commit is contained in:
@@ -1713,33 +1713,41 @@ public class P25DecoderState extends DecoderState
|
||||
.build());
|
||||
break;
|
||||
case SNDCP_RF_CONFIRMED_DATA:
|
||||
SNDCPUserData sud = (SNDCPUserData)pduc;
|
||||
|
||||
StringBuilder sbFrom = new StringBuilder();
|
||||
StringBuilder sbTo = new StringBuilder();
|
||||
|
||||
sbFrom.append(sud.getSourceIPAddress());
|
||||
sbTo.append(sud.getDestinationIPAddress());
|
||||
|
||||
if(sud.getIPProtocol() == IPProtocol.UDP)
|
||||
if(pduc instanceof SNDCPUserData)
|
||||
{
|
||||
sbFrom.append(":");
|
||||
sbFrom.append(sud.getUDPSourcePort());
|
||||
sbTo.append(":");
|
||||
sbTo.append(sud.getUDPDestinationPort());
|
||||
SNDCPUserData sud = (SNDCPUserData)pduc;
|
||||
|
||||
StringBuilder sbFrom = new StringBuilder();
|
||||
StringBuilder sbTo = new StringBuilder();
|
||||
|
||||
sbFrom.append(sud.getSourceIPAddress());
|
||||
sbTo.append(sud.getDestinationIPAddress());
|
||||
|
||||
if(sud.getIPProtocol() == IPProtocol.UDP)
|
||||
{
|
||||
sbFrom.append(":");
|
||||
sbFrom.append(sud.getUDPSourcePort());
|
||||
sbTo.append(":");
|
||||
sbTo.append(sud.getUDPDestinationPort());
|
||||
}
|
||||
|
||||
broadcast(new DecoderStateEvent(this, Event.START, State.DATA));
|
||||
|
||||
broadcast(new P25CallEvent.Builder(CallEventType.DATA_CALL)
|
||||
.aliasList(getAliasList())
|
||||
.channel(mCurrentChannel)
|
||||
.details("DATA: " + sud.getPayload() +
|
||||
" RADIO IP:" + sbTo.toString())
|
||||
.frequency(mCurrentChannelFrequency)
|
||||
.from(sbFrom.toString())
|
||||
.to(pduc.getLogicalLinkID())
|
||||
.build());
|
||||
}
|
||||
else
|
||||
{
|
||||
mLog.error("Error - expected SNDCPUserData instance but class was: " + pduc.getClass() +
|
||||
" and PDU Type:" + pduc.getPDUType().name());
|
||||
}
|
||||
|
||||
broadcast(new DecoderStateEvent(this, Event.START, State.DATA));
|
||||
|
||||
broadcast(new P25CallEvent.Builder(CallEventType.DATA_CALL)
|
||||
.aliasList(getAliasList())
|
||||
.channel(mCurrentChannel)
|
||||
.details("DATA: " + sud.getPayload() +
|
||||
" RADIO IP:" + sbTo.toString())
|
||||
.frequency(mCurrentChannelFrequency)
|
||||
.from(sbFrom.toString())
|
||||
.to(pduc.getLogicalLinkID())
|
||||
.build());
|
||||
break;
|
||||
case SNDCP_RF_UNCONFIRMED_DATA:
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user