private StackPacket SwitchDecodeMcsSendDataIndicationPDU(
byte[] data,
byte[] decryptedUserData,
SecurityHeaderType securityHeaderType)
{
// Parse "share control header"
int currentIndex = 0;
TS_SHARECONTROLHEADER header = ParseTsShareControlHeader(decryptedUserData, ref currentIndex);
ShareControlHeaderType shareControlHeaderType = GetShareControlHeaderType(header);
// Switch decoder by share control header type
StackPacket pdu = null;
switch (shareControlHeaderType)
{
// Demand Active PDU
case ShareControlHeaderType.PDUTYPE_DEMANDACTIVEPDU:
pdu = DecodeDemandActivePDU(data, decryptedUserData, securityHeaderType);
break;
// Deactivate All PDU
case ShareControlHeaderType.PDUTYPE_DEACTIVATEALLPDU:
pdu = DecodeDeactivateAllPDU(data, decryptedUserData, securityHeaderType);
break;
// Data PDU
case ShareControlHeaderType.PDUTYPE_DATAPDU:
pdu = SwitchDecodeMcsDataPDU(data, decryptedUserData, securityHeaderType);
break;
// Server Redirection PDU
case ShareControlHeaderType.PDUTYPE_SERVER_REDIR_PKT:
pdu = DecodeEnhancedServerRedirectionPDU(data, decryptedUserData, securityHeaderType);
break;
default:
throw new FormatException(ConstValue.ERROR_MESSAGE_ENUM_UNRECOGNIZED);
}
return pdu;
}