private void processTSBK(TSBKMessage tsbk){
  broadcast(new DecoderStateEvent(this,Event.CONTINUATION,State.CONTROL));
  if (tsbk.getVendor() == Vendor.STANDARD) {
switch (tsbk.getOpcode()) {
case ADJACENT_STATUS_BROADCAST:
      if (tsbk instanceof AdjacentStatusBroadcast) {
        IAdjacentSite ias=(IAdjacentSite)tsbk;
        mNeighborMap.put(ias.getUniqueID(),ias);
        updateSystem(ias.getSystemID());
      }
    break;
case ACKNOWLEDGE_RESPONSE:
  processTSBKResponse(tsbk);
break;
case AUTHENTICATION_COMMAND:
processTSBKCommand(tsbk);
break;
case CALL_ALERT:
processTSBKPage(tsbk);
break;
case DENY_RESPONSE:
processTSBKResponse(tsbk);
break;
case EXTENDED_FUNCTION_COMMAND:
processTSBKCommand(tsbk);
break;
case GROUP_AFFILIATION_QUERY:
processTSBKQuery(tsbk);
break;
case GROUP_AFFILIATION_RESPONSE:
processTSBKResponse(tsbk);
break;
case GROUP_DATA_CHANNEL_ANNOUNCEMENT:
case GROUP_DATA_CHANNEL_ANNOUNCEMENT_EXPLICIT:
processTSBKDataChannelAnnouncement(tsbk);
break;
case GROUP_DATA_CHANNEL_GRANT:
case GROUP_VOICE_CHANNEL_GRANT:
case GROUP_VOICE_CHANNEL_GRANT_UPDATE:
case GROUP_VOICE_CHANNEL_GRANT_UPDATE_EXPLICIT:
case INDIVIDUAL_DATA_CHANNEL_GRANT:
case TELEPHONE_INTERCONNECT_VOICE_CHANNEL_GRANT:
case TELEPHONE_INTERCONNECT_VOICE_CHANNEL_GRANT_UPDATE:
case UNIT_TO_UNIT_VOICE_CHANNEL_GRANT:
case UNIT_TO_UNIT_VOICE_CHANNEL_GRANT_UPDATE:
processTSBKChannelGrant(tsbk);
break;
case IDENTIFIER_UPDATE_NON_VUHF:
case IDENTIFIER_UPDATE_VHF_UHF_BANDS:
IdentifierUpdate iu=(IdentifierUpdate)tsbk;
if (!mBands.containsKey(iu.getIdentifier())) {
mBands.put(iu.getIdentifier(),iu);
}
break;
case LOCATION_REGISTRATION_RESPONSE:
case UNIT_DEREGISTRATION_ACKNOWLEDGE:
processTSBKResponse(tsbk);
break;
case MESSAGE_UPDATE:
processTSBKMessage(tsbk);
break;
case NETWORK_STATUS_BROADCAST:
mNetworkStatus=(module.decode.p25.message.tsbk.osp.control.NetworkStatusBroadcast)tsbk;
break;
case PROTECTION_PARAMETER_UPDATE:
processTSBKResponse(tsbk);
break;
case QUEUED_RESPONSE:
processTSBKResponse(tsbk);
break;
case RADIO_UNIT_MONITOR_COMMAND:
processTSBKCommand(tsbk);
break;
case RFSS_STATUS_BROADCAST:
processTSBKRFSSStatus((RFSSStatusBroadcast)tsbk);
break;
case ROAMING_ADDRESS_COMMAND:
processTSBKCommand(tsbk);
break;
case SECONDARY_CONTROL_CHANNEL_BROADCAST:
module.decode.p25.message.tsbk.osp.control.SecondaryControlChannelBroadcast sccb=(module.decode.p25.message.tsbk.osp.control.SecondaryControlChannelBroadcast)tsbk;
if (sccb.getDownlinkFrequency1() > 0) {
mSecondaryControlChannels.add(sccb);
}
break;
case SNDCP_DATA_CHANNEL_ANNOUNCEMENT_EXPLICIT:
mSNDCPDataChannel=(SNDCPDataChannelAnnouncementExplicit)tsbk;
break;
case SNDCP_DATA_CHANNEL_GRANT:
processTSBKChannelGrant(tsbk);
break;
case STATUS_QUERY:
processTSBKQuery(tsbk);
break;
case STATUS_UPDATE:
processTSBKResponse(tsbk);
break;
case TELEPHONE_INTERCONNECT_ANSWER_REQUEST:
case UNIT_TO_UNIT_ANSWER_REQUEST:
processTSBKPage(tsbk);
break;
case UNIT_REGISTRATION_COMMAND:
processTSBKCommand(tsbk);
break;
case UNIT_REGISTRATION_RESPONSE:
processTSBKResponse(tsbk);
break;
default :
break;
}
}
 else if (tsbk.getVendor() == Vendor.MOTOROLA) {
processMotorolaTSBK((MotorolaTSBKMessage)tsbk);
}
}

private void processTSBK ( TSBKMessage tsbk ) { broadcast ( new DecoderStateEvent ( this , Event . CONTINUATION , State . CONTROL ) ) ; if ( tsbk . getVendor ( ) == Vendor . STANDARD ) { switch ( tsbk . getOpcode ( ) ) { case ADJACENT_STATUS_BROADCAST : if ( tsbk instanceof AdjacentStatusBroadcast ) { IAdjacentSite ias = ( IAdjacentSite ) tsbk ; mNeighborMap . put ( ias . getUniqueID ( ) , ias ) ; updateSystem ( ias . getSystemID ( ) ) ; } break ; case ACKNOWLEDGE_RESPONSE : processTSBKResponse ( tsbk ) ; break ; case AUTHENTICATION_COMMAND : processTSBKCommand ( tsbk ) ; break ; case CALL_ALERT : processTSBKPage ( tsbk ) ; break ; case DENY_RESPONSE : processTSBKResponse ( tsbk ) ; break ; case EXTENDED_FUNCTION_COMMAND : processTSBKCommand ( tsbk ) ; break ; case GROUP_AFFILIATION_QUERY : processTSBKQuery ( tsbk ) ; break ; case GROUP_AFFILIATION_RESPONSE : processTSBKResponse ( tsbk ) ; break ; case GROUP_DATA_CHANNEL_ANNOUNCEMENT : case GROUP_DATA_CHANNEL_ANNOUNCEMENT_EXPLICIT : processTSBKDataChannelAnnouncement ( tsbk ) ; break ; case GROUP_DATA_CHANNEL_GRANT : case GROUP_VOICE_CHANNEL_GRANT : case GROUP_VOICE_CHANNEL_GRANT_UPDATE : case GROUP_VOICE_CHANNEL_GRANT_UPDATE_EXPLICIT : case INDIVIDUAL_DATA_CHANNEL_GRANT : case TELEPHONE_INTERCONNECT_VOICE_CHANNEL_GRANT : case TELEPHONE_INTERCONNECT_VOICE_CHANNEL_GRANT_UPDATE : case UNIT_TO_UNIT_VOICE_CHANNEL_GRANT : case UNIT_TO_UNIT_VOICE_CHANNEL_GRANT_UPDATE : processTSBKChannelGrant ( tsbk ) ; break ; case IDENTIFIER_UPDATE_NON_VUHF : case IDENTIFIER_UPDATE_VHF_UHF_BANDS : IdentifierUpdate iu = ( IdentifierUpdate ) tsbk ; if ( ! mBands . containsKey ( iu . getIdentifier ( ) ) ) { mBands . put ( iu . getIdentifier ( ) , iu ) ; } break ; case LOCATION_REGISTRATION_RESPONSE : case UNIT_DEREGISTRATION_ACKNOWLEDGE : processTSBKResponse ( tsbk ) ; break ; case MESSAGE_UPDATE : processTSBKMessage ( tsbk ) ; break ; case NETWORK_STATUS_BROADCAST : mNetworkStatus = ( module . decode . p25 . message . tsbk . osp . control . NetworkStatusBroadcast ) tsbk ; break ; case PROTECTION_PARAMETER_UPDATE : processTSBKResponse ( tsbk ) ; break ; case QUEUED_RESPONSE : processTSBKResponse ( tsbk ) ; break ; case RADIO_UNIT_MONITOR_COMMAND : processTSBKCommand ( tsbk ) ; break ; case RFSS_STATUS_BROADCAST : processTSBKRFSSStatus ( ( RFSSStatusBroadcast ) tsbk ) ; break ; case ROAMING_ADDRESS_COMMAND : processTSBKCommand ( tsbk ) ; break ; case SECONDARY_CONTROL_CHANNEL_BROADCAST : module . decode . p25 . message . tsbk . osp . control . SecondaryControlChannelBroadcast sccb = ( module . decode . p25 . message . tsbk . osp . control . SecondaryControlChannelBroadcast ) tsbk ; if ( sccb . getDownlinkFrequency1 ( ) > 0 ) { mSecondaryControlChannels . add ( sccb ) ; } break ; case SNDCP_DATA_CHANNEL_ANNOUNCEMENT_EXPLICIT : mSNDCPDataChannel = ( SNDCPDataChannelAnnouncementExplicit ) tsbk ; break ; case SNDCP_DATA_CHANNEL_GRANT : processTSBKChannelGrant ( tsbk ) ; break ; case STATUS_QUERY : processTSBKQuery ( tsbk ) ; break ; case STATUS_UPDATE : processTSBKResponse ( tsbk ) ; break ; case TELEPHONE_INTERCONNECT_ANSWER_REQUEST : case UNIT_TO_UNIT_ANSWER_REQUEST : processTSBKPage ( tsbk ) ; break ; case UNIT_REGISTRATION_COMMAND : processTSBKCommand ( tsbk ) ; break ; case UNIT_REGISTRATION_RESPONSE : processTSBKResponse ( tsbk ) ; break ; default : break ; } } else if ( tsbk . getVendor ( ) == Vendor . MOTOROLA ) { processMotorolaTSBK ( ( MotorolaTSBKMessage ) tsbk ) ; } }
process a trunking signalling block message
