提交 68c52c4e 编写于 作者: C calin.cerchez

continue rrc

上级 4e518920
//
// Copyright (C) 2012 Calin Cerchez
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see http://www.gnu.org/licenses/.
//
#include "RRC.h"
//#include "RRCMessage.h"
#include "PerEncoder.h"
#include "LTEUtils.h"
Define_Module(RRC);
RRC::RRC() {
// TODO Auto-generated constructor stub
}
RRC::~RRC() {
// TODO Auto-generated destructor stub
}
void RRC::initialize(int stage) {
using namespace rrc;
ULCCCHMessage ulcchMessage = ULCCCHMessage();
MNC mnc = MNC();
MCC mcc = MCC();
mcc.push_back(new Digit(2));
mcc.push_back(new Digit(6));
mcc.push_back(new Digit(0));
mnc.push_back(new Digit(0));
mnc.push_back(new Digit(2));
PLMNIdentity plmnId = PLMNIdentity();
plmnId.setMcc(mcc);
plmnId.setMnc(mnc);
char lac[2] = {0x5b, 0x10};
LAI lai = LAI();
lai.setPlmnIdentity(plmnId);
lai.setLAILac(LAILac(lac));
TMSIandLAIGSMMAP *tMSIandLAIGSMMAP = new TMSIandLAIGSMMAP();
char tmsi[4] = {0x19, 0x02, 0x2c, 0xba};
tMSIandLAIGSMMAP->setTmsi(TMSIGSMMAP(tmsi));
tMSIandLAIGSMMAP->setLai(lai);
InitialUEIdentity initUeId = InitialUEIdentity();
// std::vector<unsigned char> mcc;
// std::vector<unsigned char> mnc;
// mcc.push_back(2);
// mcc.push_back(6);
// mcc.push_back(0);
// mnc.push_back(0);
// mnc.push_back(2);
// PlmnIdentity plmnId = PlmnIdentity(mcc, mnc);
// Lai lai = Lai(plmnId, lac);
// TmsiAndLaiGsmMap *tmsiAndLaiGsmMap = new TmsiAndLaiGsmMap(tmsi, lai);
// InitialUeIdentity initUeId = InitialUeIdentity();
// initUeId.setValue(tmsiAndLaiGsmMap, tmsiAndLai);
// RRCConnectionRequest *rrcConnReq = new RRCConnectionRequest(initUeId, interRATCellReselection, noError);
// UlCcchMessageType ulCchMessageType = UlCcchMessageType();
// ulCchMessageType.setValue(rrcConnReq, rrcConnectionRequest);
// UlCcchMessage ulCchMessage = UlCcchMessage(ulCchMessageType);
// PerEncoder perEnc = PerEncoder(UNALIGNED);
// perEnc.encodeSequence(ulCchMessage);
// LTEUtils().printBytes(perEnc.getBuffer(), perEnc.getLength());
}
//
// Copyright (C) 2012 Calin Cerchez
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see http://www.gnu.org/licenses/.
//
#ifndef RRC_H_
#define RRC_H_
#include <omnetpp.h>
#include "RRCClassDefinitions.h"
class RRC : public cSimpleModule {
public:
RRC();
virtual ~RRC();
void initialize(int stage);
};
#endif /* RRC_H_ */
//
// Copyright (C) 2012 Calin Cerchez
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see http://www.gnu.org/licenses/.
//
package inet.linklayer.lte.rrc;
simple RRC
{
}
\ No newline at end of file
at the moment only mandatory information elements are inserted in messages (add optional elements too).
\ No newline at end of file
Class-definitions DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
IMPORTS
ActiveSetUpdate,
ActiveSetUpdateComplete,
ActiveSetUpdateFailure,
AssistanceDataDelivery,
CellChangeOrderFromUTRAN,
CellChangeOrderFromUTRANFailure,
CellUpdate,
CellUpdateConfirm-CCCH,
CellUpdateConfirm,
CounterCheck,
CounterCheckResponse,
DownlinkDirectTransfer,
ETWSPrimaryNotificationWithSecurity,
HandoverToUTRANComplete,
InitialDirectTransfer,
HandoverFromUTRANCommand-EUTRA,
HandoverFromUTRANCommand-GERANIu,
HandoverFromUTRANCommand-GSM,
HandoverFromUTRANCommand-CDMA2000,
HandoverFromUTRANFailure,
MBMSAccessInformation,
MBMSCommonPTMRBInformation,
MBMSCurrentCellPTMRBInformation,
MBMSGeneralInformation,
MBMSModificationRequest,
MBMSModifiedServicesInformation,
MBMSNeighbouringCellPTMRBInformation,
MBMSSchedulingInformation,
MBMSUnmodifiedServicesInformation,
MeasurementControl,
MeasurementControlFailure,
MeasurementReport,
PagingType1,
PagingType2,
PhysicalChannelReconfiguration,
PhysicalChannelReconfigurationComplete,
PhysicalChannelReconfigurationFailure,
PhysicalSharedChannelAllocation,
PUSCHCapacityRequest,
RadioBearerReconfiguration,
RadioBearerReconfigurationComplete,
RadioBearerReconfigurationFailure,
RadioBearerRelease,
RadioBearerReleaseComplete,
RadioBearerReleaseFailure,
RadioBearerSetup,
RadioBearerSetupComplete,
RadioBearerSetupFailure,
RRCConnectionReject,
RRCConnectionRelease,
RRCConnectionRelease-CCCH,
RRCConnectionReleaseComplete,
RRCConnectionRequest,
RRCConnectionSetup,
RRCConnectionSetupComplete,
RRCStatus,
SecurityModeCommand,
SecurityModeComplete,
SecurityModeFailure,
SignallingConnectionRelease,
SignallingConnectionReleaseIndication,
SystemInformation-BCH,
SystemInformation-FACH,
SystemInformationChangeIndication,
TransportChannelReconfiguration,
TransportChannelReconfigurationComplete,
TransportChannelReconfigurationFailure,
TransportFormatCombinationControl,
TransportFormatCombinationControlFailure,
UECapabilityEnquiry,
UECapabilityInformation,
UECapabilityInformationConfirm,
UplinkDirectTransfer,
UplinkPhysicalChannelControl,
URAUpdate,
URAUpdateConfirm,
URAUpdateConfirm-CCCH,
UTRANMobilityInformation,
UTRANMobilityInformationConfirm,
UTRANMobilityInformationFailure
FROM PDU-definitions
-- User Equipment IEs :
IntegrityCheckInfo
FROM InformationElements;
--**************************************************************
--
-- Downlink DCCH messages
--
--**************************************************************
DL-DCCH-Message ::= SEQUENCE {
integrityCheckInfo IntegrityCheckInfo OPTIONAL,
message DL-DCCH-MessageType
}
DL-DCCH-MessageType ::= CHOICE {
activeSetUpdate ActiveSetUpdate,
assistanceDataDelivery AssistanceDataDelivery,
cellChangeOrderFromUTRAN CellChangeOrderFromUTRAN,
cellUpdateConfirm CellUpdateConfirm,
counterCheck CounterCheck,
downlinkDirectTransfer DownlinkDirectTransfer,
handoverFromUTRANCommand-GSM HandoverFromUTRANCommand-GSM,
handoverFromUTRANCommand-CDMA2000 HandoverFromUTRANCommand-CDMA2000,
measurementControl MeasurementControl,
pagingType2 PagingType2,
physicalChannelReconfiguration PhysicalChannelReconfiguration,
physicalSharedChannelAllocation PhysicalSharedChannelAllocation,
radioBearerReconfiguration RadioBearerReconfiguration,
radioBearerRelease RadioBearerRelease,
radioBearerSetup RadioBearerSetup,
rrcConnectionRelease RRCConnectionRelease,
securityModeCommand SecurityModeCommand,
signallingConnectionRelease SignallingConnectionRelease,
transportChannelReconfiguration TransportChannelReconfiguration,
transportFormatCombinationControl TransportFormatCombinationControl,
ueCapabilityEnquiry UECapabilityEnquiry,
ueCapabilityInformationConfirm UECapabilityInformationConfirm,
uplinkPhysicalChannelControl UplinkPhysicalChannelControl,
uraUpdateConfirm URAUpdateConfirm,
utranMobilityInformation UTRANMobilityInformation,
handoverFromUTRANCommand-GERANIu HandoverFromUTRANCommand-GERANIu,
mbmsModifiedServicesInformation MBMSModifiedServicesInformation,
etwsPrimaryNotificationWithSecurity ETWSPrimaryNotificationWithSecurity,
handoverFromUTRANCommand-EUTRA HandoverFromUTRANCommand-EUTRA,
spare3 NULL,
spare2 NULL,
spare1 NULL
}
--**************************************************************
--
-- Uplink DCCH messages
--
--**************************************************************
UL-DCCH-Message ::= SEQUENCE {
integrityCheckInfo IntegrityCheckInfo OPTIONAL,
message UL-DCCH-MessageType
}
UL-DCCH-MessageType ::= CHOICE {
activeSetUpdateComplete ActiveSetUpdateComplete,
activeSetUpdateFailure ActiveSetUpdateFailure,
cellChangeOrderFromUTRANFailure CellChangeOrderFromUTRANFailure,
counterCheckResponse CounterCheckResponse,
handoverToUTRANComplete HandoverToUTRANComplete,
initialDirectTransfer InitialDirectTransfer,
handoverFromUTRANFailure HandoverFromUTRANFailure,
measurementControlFailure MeasurementControlFailure,
measurementReport MeasurementReport,
physicalChannelReconfigurationComplete
PhysicalChannelReconfigurationComplete,
physicalChannelReconfigurationFailure
PhysicalChannelReconfigurationFailure,
radioBearerReconfigurationComplete RadioBearerReconfigurationComplete,
radioBearerReconfigurationFailure RadioBearerReconfigurationFailure,
radioBearerReleaseComplete RadioBearerReleaseComplete,
radioBearerReleaseFailure RadioBearerReleaseFailure,
radioBearerSetupComplete RadioBearerSetupComplete,
radioBearerSetupFailure RadioBearerSetupFailure,
rrcConnectionReleaseComplete RRCConnectionReleaseComplete,
rrcConnectionSetupComplete RRCConnectionSetupComplete,
rrcStatus RRCStatus,
securityModeComplete SecurityModeComplete,
securityModeFailure SecurityModeFailure,
signallingConnectionReleaseIndication
SignallingConnectionReleaseIndication,
transportChannelReconfigurationComplete
TransportChannelReconfigurationComplete,
transportChannelReconfigurationFailure
TransportChannelReconfigurationFailure,
transportFormatCombinationControlFailure
TransportFormatCombinationControlFailure,
ueCapabilityInformation UECapabilityInformation,
uplinkDirectTransfer UplinkDirectTransfer,
utranMobilityInformationConfirm UTRANMobilityInformationConfirm,
utranMobilityInformationFailure UTRANMobilityInformationFailure,
mbmsModificationRequest MBMSModificationRequest,
spare1 NULL
}
--**************************************************************
--
-- Downlink CCCH messages
--
--**************************************************************
DL-CCCH-Message ::= SEQUENCE {
integrityCheckInfo IntegrityCheckInfo OPTIONAL,
message DL-CCCH-MessageType
}
DL-CCCH-MessageType ::= CHOICE {
cellUpdateConfirm CellUpdateConfirm-CCCH,
rrcConnectionReject RRCConnectionReject,
rrcConnectionRelease RRCConnectionRelease-CCCH,
rrcConnectionSetup RRCConnectionSetup,
uraUpdateConfirm URAUpdateConfirm-CCCH,
etwsPrimaryNotificationWithSecurity ETWSPrimaryNotificationWithSecurity,
spare2 NULL,
spare1 NULL
}
--**************************************************************
--
-- Uplink CCCH messages
--
--**************************************************************
UL-CCCH-Message ::= SEQUENCE {
integrityCheckInfo IntegrityCheckInfo OPTIONAL,
message UL-CCCH-MessageType
}
UL-CCCH-MessageType ::= CHOICE {
cellUpdate CellUpdate,
rrcConnectionRequest RRCConnectionRequest,
uraUpdate URAUpdate,
spare NULL
}
--**************************************************************
--
-- PCCH messages
--
--**************************************************************
PCCH-Message ::= SEQUENCE {
message PCCH-MessageType
}
PCCH-MessageType ::= CHOICE {
pagingType1 PagingType1,
spare NULL
}
--**************************************************************
--
-- Downlink SHCCH messages
--
--**************************************************************
DL-SHCCH-Message ::= SEQUENCE {
message DL-SHCCH-MessageType
}
DL-SHCCH-MessageType ::= CHOICE {
physicalSharedChannelAllocation PhysicalSharedChannelAllocation,
spare NULL
}
--**************************************************************
--
-- Uplink SHCCH messages
--
--**************************************************************
UL-SHCCH-Message ::= SEQUENCE {
message UL-SHCCH-MessageType
}
UL-SHCCH-MessageType ::= CHOICE {
puschCapacityRequest PUSCHCapacityRequest,
spare NULL
}
--**************************************************************
--
-- BCCH messages sent on FACH
--
--**************************************************************
BCCH-FACH-Message ::= SEQUENCE {
message BCCH-FACH-MessageType
}
BCCH-FACH-MessageType ::= CHOICE {
systemInformation SystemInformation-FACH,
systemInformationChangeIndication SystemInformationChangeIndication,
spare2 NULL,
spare1 NULL
}
--**************************************************************
--
-- BCCH messages sent on BCH
--
--**************************************************************
BCCH-BCH-Message ::= SEQUENCE {
message SystemInformation-BCH
}
--**************************************************************
--
-- MCCH messages
--
--**************************************************************
MCCH-Message ::= SEQUENCE {
message MCCH-MessageType
}
MCCH-MessageType ::= CHOICE {
mbmsAccessInformation MBMSAccessInformation,
mbmsCommonPTMRBInformation MBMSCommonPTMRBInformation,
mbmsCurrentCellPTMRBInformation MBMSCurrentCellPTMRBInformation,
mbmsGeneralInformation MBMSGeneralInformation,
mbmsModifiedServicesInformation MBMSModifiedServicesInformation,
mbmsNeighbouringCellPTMRBInformation
MBMSNeighbouringCellPTMRBInformation,
mbmsUnmodifiedServicesInformation MBMSUnmodifiedServicesInformation,
spare9 NULL,
spare8 NULL,
spare7 NULL,
spare6 NULL,
spare5 NULL,
spare4 NULL,
spare3 NULL,
spare2 NULL,
spare1 NULL
}
--**************************************************************
--
-- MSCH messages
--
--**************************************************************
MSCH-Message ::= SEQUENCE {
message MSCH-MessageType
}
MSCH-MessageType ::= CHOICE {
mbmsSchedulingInformation MBMSSchedulingInformation,
spare3 NULL,
spare2 NULL,
spare1 NULL
}
END
\ No newline at end of file
Constant-definitions DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
hiPDSCHidentities INTEGER ::= 64
hiPUSCHidentities INTEGER ::= 64
hiRM INTEGER ::= 256
maxAC INTEGER ::= 16
maxAdditionalMeas INTEGER ::= 4
maxASC INTEGER ::= 8
maxASCmap INTEGER ::= 7
maxASCpersist INTEGER ::= 6
maxCCTrCH INTEGER ::= 8
maxCellMeas INTEGER ::= 32
maxCellMeasOnSecULFreq INTEGER ::= 32
maxCellMeas-1 INTEGER ::= 31
maxCellMeasOnSecULFreq-1 INTEGER ::= 31
maxCNdomains INTEGER ::= 4
maxCommonHRNTI INTEGER ::= 4
maxCommonQueueID INTEGER ::= 2
maxCPCHsets INTEGER ::= 16
maxDedicatedCSGFreq INTEGER ::= 4
maxDPCH-DLchan INTEGER ::= 8
maxDPDCH-UL INTEGER ::= 6
maxDRACclasses INTEGER ::= 8
maxE-DCHMACdFlow INTEGER ::= 8
maxE-DCHMACdFlow-1 INTEGER ::= 7
maxEUTRACellPerFreq INTEGER ::= 16
maxEUTRATargetFreqs INTEGER ::= 8
maxEDCHRL INTEGER ::= 4
maxEDCHRL-1 INTEGER ::= 3
maxEDCHs INTEGER ::= 32
maxEDCHTxPattern-TDD128 INTEGER ::= 4 -- maxEDCHTxPattern-TDD128 should be 3
maxEDCHTxPattern-TDD128-1 INTEGER ::= 3 -- maxEDCHTxPattern-TDD128-1 should be 2
maxERNTIgroup INTEGER ::= 32
maxERNTIperGroup INTEGER ::= 2
maxERUCCH INTEGER ::= 256
maxFACHPCH INTEGER ::= 8
maxFreq INTEGER ::= 8
maxFreqBandsEUTRA INTEGER ::= 16
maxFreqBandsFDD INTEGER ::= 8
maxFreqBandsFDD-ext INTEGER ::= 15 -- maxFreqBandsFDD-ext ::= 22 - (maxFreqBandsFDD - 1)
maxFreqBandsTDD INTEGER ::= 4
maxFreqBandsTDD-ext INTEGER ::= 16
maxFreqBandsGSM INTEGER ::= 16
maxGANSS INTEGER ::= 8
maxGANSS-1 INTEGER ::= 7
maxGANSSSat INTEGER ::= 64
maxGANSSSat-1 INTEGER ::= 63
maxGERAN-SI INTEGER ::= 8
maxGSMTargetCells INTEGER ::= 32
maxHNBNameSize INTEGER ::= 48
maxHProcesses INTEGER ::= 8
maxHS-SCCHLessTrBlk INTEGER ::= 4
maxHSDSCHTBIndex INTEGER ::= 64
maxHSDSCHTBIndex-tdd384 INTEGER ::= 512
maxHSSCCHs INTEGER ::= 4
maxHSSCCHs-1 INTEGER ::= 3
maxHSSICH-TDD128 INTEGER ::= 4
maxHSSICH-TDD128-1 INTEGER ::= 3
maxInterSysMessages INTEGER ::= 4
maxLoCHperRLC INTEGER ::= 2
maxMAC-d-PDUsizes INTEGER ::= 8
maxMBMS-CommonCCTrCh INTEGER ::= 32
maxMBMS-CommonPhyCh INTEGER ::= 32
maxMBMS-CommonRB INTEGER ::= 32
maxMBMS-CommonTrCh INTEGER ::= 32
maxMBMS-Freq INTEGER ::= 4
maxMBMS-L1CP INTEGER ::= 4
maxMBMSservCount INTEGER ::= 8
maxMBMSservModif INTEGER ::= 32
maxMBMSservSched INTEGER ::= 16
maxMBMSservSelect INTEGER ::= 8
maxMBMSservUnmodif INTEGER ::= 64
maxMBMSTransmis INTEGER ::= 4
maxMBSFNClusters INTEGER ::= 16
maxMeasCSGRange INTEGER ::= 4
maxMeasEvent INTEGER ::= 8
maxMeasEventOnSecULFreq INTEGER ::= 8
maxMeasIntervals INTEGER ::= 3
maxMeasOccasionPattern INTEGER ::= 5
maxMeasOccasionPattern-1 INTEGER ::= 4
maxMeasParEvent INTEGER ::= 2
maxNumCDMA2000Freqs INTEGER ::= 8
maxNumE-AGCH INTEGER ::= 4
maxNumE-HICH INTEGER ::= 4
maxNumEUTRAFreqs INTEGER ::= 8
maxNumGSMCellGroup INTEGER ::= 16
maxNumGSMFreqRanges INTEGER ::= 32
maxNumFDDFreqs INTEGER ::= 8
maxNumTDDFreqs INTEGER ::= 8
maxNoOfMeas INTEGER ::= 16
maxOtherRAT INTEGER ::= 15
maxOtherRAT-16 INTEGER ::= 16
maxPage1 INTEGER ::= 8
maxPCPCH-APsig INTEGER ::= 16
maxPCPCH-APsubCh INTEGER ::= 12
maxPCPCH-CDsig INTEGER ::= 16
maxPCPCH-CDsubCh INTEGER ::= 12
maxPCPCH-SF INTEGER ::= 7
maxPCPCHs INTEGER ::= 64
maxPDCPAlgoType INTEGER ::= 8
maxPDSCH INTEGER ::= 8
maxPDSCH-TFCIgroups INTEGER ::= 256
maxPRACH INTEGER ::= 16
maxPRACH-FPACH INTEGER ::= 8
maxPredefConfig INTEGER ::= 16
maxPrio INTEGER ::= 8
maxPrio-1 INTEGER ::= 7
maxPUSCH INTEGER ::= 8
maxQueueIDs INTEGER ::= 8
maxRABsetup INTEGER ::= 16
maxRAT INTEGER ::= 16
maxRB INTEGER ::= 32
maxRBallRABs INTEGER ::= 27
maxRBMuxOptions INTEGER ::= 8
maxRBperRAB INTEGER ::= 8
maxRBperTrCh INTEGER ::= 16
maxReportedEUTRACellPerFreq INTEGER ::= 4
maxReportedEUTRAFreqs INTEGER ::= 4
maxReportedGSMCells INTEGER ::= 8
maxRL INTEGER ::= 8
maxRL-1 INTEGER ::= 7
maxRLCPDUsizePerLogChan INTEGER ::= 32
maxRFC3095-CID INTEGER ::= 16384
maxROHC-PacketSizes-r4 INTEGER ::= 16
maxROHC-Profile-r4 INTEGER ::= 8
maxRxPatternForHSDSCH-TDD128 INTEGER ::= 4 -- maxRxPatternForHSDSCH-TDD128 should be 3
maxRxPatternForHSDSCH-TDD128-1 INTEGER ::= 3 -- maxRxPatternForHSDSCH-TDD128-1 should be 2
maxSat INTEGER ::= 16
maxSatClockModels INTEGER ::= 4
maxSCCPCH INTEGER ::= 16
maxSgnType INTEGER ::= 8
maxSIB INTEGER ::= 32
maxSIB-FACH INTEGER ::= 8
maxSIBperMsg INTEGER ::= 16
maxSIrequest INTEGER ::= 4
maxSRBsetup INTEGER ::= 8
maxSystemCapability INTEGER ::= 16
maxTDD128Carrier INTEGER ::= 6
maxTbsForHSDSCH-TDD128 INTEGER ::= 4
maxTbsForHSDSCH-TDD128-1 INTEGER ::= 3
maxTF INTEGER ::= 32
maxTF-CPCH INTEGER ::= 16
maxTFC INTEGER ::= 1024
maxTFCsub INTEGER ::= 1024
maxTFCI-2-Combs INTEGER ::= 512
maxTGPS INTEGER ::= 6
maxTrCH INTEGER ::= 32
-- maxTrCHpreconf should be 16 but has been set to 32 for compatibility
maxTrCHpreconf INTEGER ::= 32
maxTS INTEGER ::= 14
maxTS-1 INTEGER ::= 13
maxTS-2 INTEGER ::= 12
maxTS-LCR INTEGER ::= 6
maxTS-LCR-1 INTEGER ::= 5
maxURA INTEGER ::= 8
maxURNTI-Group INTEGER ::= 8
END
此差异已折叠。
此差异已折叠。
//
// Copyright (C) 2012 Calin Cerchez
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see http://www.gnu.org/licenses/.
//
#include "RRCClassDefinitions.h"
namespace rrc {
const void *DLDCCHMessageType::choicesInfo[32] = {
&ActiveSetUpdate::theInfo,
&AssistanceDataDelivery::theInfo,
&CellChangeOrderFromUTRAN::theInfo,
&CellUpdateConfirm::theInfo,
&CounterCheck::theInfo,
&DownlinkDirectTransfer::theInfo,
&HandoverFromUTRANCommandGSM::theInfo,
&HandoverFromUTRANCommandCDMA2000::theInfo,
&MeasurementControl::theInfo,
&PagingType2::theInfo,
&PhysicalChannelReconfiguration::theInfo,
&PhysicalSharedChannelAllocation::theInfo,
&RadioBearerReconfiguration::theInfo,
&RadioBearerRelease::theInfo,
&RadioBearerSetup::theInfo,
&RRCConnectionRelease::theInfo,
&SecurityModeCommand::theInfo,
&SignallingConnectionRelease::theInfo,
&TransportChannelReconfiguration::theInfo,
&TransportFormatCombinationControl::theInfo,
&UECapabilityEnquiry::theInfo,
&UECapabilityInformationConfirm::theInfo,
&UplinkPhysicalChannelControl::theInfo,
&URAUpdateConfirm::theInfo,
&UTRANMobilityInformation::theInfo,
&HandoverFromUTRANCommandGERANIu::theInfo,
&MBMSModifiedServicesInformation::theInfo,
&ETWSPrimaryNotificationWithSecurity::theInfo,
&HandoverFromUTRANCommandEUTRA::theInfo,
&DLDCCHMessageTypeSpare3::theInfo,
&DLDCCHMessageTypeSpare2::theInfo,
&DLDCCHMessageTypeSpare1::theInfo,
};
const DLDCCHMessageType::Info DLDCCHMessageType::theInfo = {
DLDCCHMessageType::create,
CHOICE,
0,
false,
choicesInfo,
31
};
const void *DLDCCHMessage::itemsInfo[2] = {
&IntegrityCheckInfo::theInfo,
&DLDCCHMessageType::theInfo,
};
bool DLDCCHMessage::itemsPres[2] = {
0,
1,
};
const DLDCCHMessage::Info DLDCCHMessage::theInfo = {
DLDCCHMessage::create,
SEQUENCE,
0,
false,
itemsInfo,
itemsPres,
2, 1, 0
};
const void *ULDCCHMessageType::choicesInfo[32] = {
&ActiveSetUpdateComplete::theInfo,
&ActiveSetUpdateFailure::theInfo,
&CellChangeOrderFromUTRANFailure::theInfo,
&CounterCheckResponse::theInfo,
&HandoverToUTRANComplete::theInfo,
&InitialDirectTransfer::theInfo,
&HandoverFromUTRANFailure::theInfo,
&MeasurementControlFailure::theInfo,
&MeasurementReport::theInfo,
&PhysicalChannelReconfigurationComplete::theInfo,
&PhysicalChannelReconfigurationFailure::theInfo,
&RadioBearerReconfigurationComplete::theInfo,
&RadioBearerReconfigurationFailure::theInfo,
&RadioBearerReleaseComplete::theInfo,
&RadioBearerReleaseFailure::theInfo,
&RadioBearerSetupComplete::theInfo,
&RadioBearerSetupFailure::theInfo,
&RRCConnectionReleaseComplete::theInfo,
&RRCConnectionSetupComplete::theInfo,
&RRCStatus::theInfo,
&SecurityModeComplete::theInfo,
&SecurityModeFailure::theInfo,
&SignallingConnectionReleaseIndication::theInfo,
&TransportChannelReconfigurationComplete::theInfo,
&TransportChannelReconfigurationFailure::theInfo,
&TransportFormatCombinationControlFailure::theInfo,
&UECapabilityInformation::theInfo,
&UplinkDirectTransfer::theInfo,
&UTRANMobilityInformationConfirm::theInfo,
&UTRANMobilityInformationFailure::theInfo,
&MBMSModificationRequest::theInfo,
&ULDCCHMessageTypeSpare1::theInfo,
};
const ULDCCHMessageType::Info ULDCCHMessageType::theInfo = {
ULDCCHMessageType::create,
CHOICE,
0,
false,
choicesInfo,
31
};
const void *ULDCCHMessage::itemsInfo[2] = {
&IntegrityCheckInfo::theInfo,
&ULDCCHMessageType::theInfo,
};
bool ULDCCHMessage::itemsPres[2] = {
0,
1,
};
const ULDCCHMessage::Info ULDCCHMessage::theInfo = {
ULDCCHMessage::create,
SEQUENCE,
0,
false,
itemsInfo,
itemsPres,
2, 1, 0
};
const void *DLCCCHMessageType::choicesInfo[8] = {
&CellUpdateConfirmCCCH::theInfo,
&RRCConnectionReject::theInfo,
&RRCConnectionReleaseCCCH::theInfo,
&RRCConnectionSetup::theInfo,
&URAUpdateConfirmCCCH::theInfo,
&ETWSPrimaryNotificationWithSecurity::theInfo,
&DLCCCHMessageTypeSpare2::theInfo,
&DLCCCHMessageTypeSpare1::theInfo,
};
const DLCCCHMessageType::Info DLCCCHMessageType::theInfo = {
DLCCCHMessageType::create,
CHOICE,
0,
false,
choicesInfo,
7
};
const void *DLCCCHMessage::itemsInfo[2] = {
&IntegrityCheckInfo::theInfo,
&DLCCCHMessageType::theInfo,
};
bool DLCCCHMessage::itemsPres[2] = {
0,
1,
};
const DLCCCHMessage::Info DLCCCHMessage::theInfo = {
DLCCCHMessage::create,
SEQUENCE,
0,
false,
itemsInfo,
itemsPres,
2, 1, 0
};
const void *ULCCCHMessageType::choicesInfo[4] = {
&CellUpdate::theInfo,
&RRCConnectionRequest::theInfo,
&URAUpdate::theInfo,
&ULCCCHMessageTypeSpare::theInfo,
};
const ULCCCHMessageType::Info ULCCCHMessageType::theInfo = {
ULCCCHMessageType::create,
CHOICE,
0,
false,
choicesInfo,
3
};
const void *ULCCCHMessage::itemsInfo[2] = {
&IntegrityCheckInfo::theInfo,
&ULCCCHMessageType::theInfo,
};
bool ULCCCHMessage::itemsPres[2] = {
0,
1,
};
const ULCCCHMessage::Info ULCCCHMessage::theInfo = {
ULCCCHMessage::create,
SEQUENCE,
0,
false,
itemsInfo,
itemsPres,
2, 1, 0
};
const void *PCCHMessageType::choicesInfo[2] = {
&PagingType1::theInfo,
&PCCHMessageTypeSpare::theInfo,
};
const PCCHMessageType::Info PCCHMessageType::theInfo = {
PCCHMessageType::create,
CHOICE,
0,
false,
choicesInfo,
1
};
const void *PCCHMessage::itemsInfo[1] = {
&PCCHMessageType::theInfo,
};
bool PCCHMessage::itemsPres[1] = {
1,
};
const PCCHMessage::Info PCCHMessage::theInfo = {
PCCHMessage::create,
SEQUENCE,
0,
false,
itemsInfo,
itemsPres,
1, 0, 0
};
const void *DLSHCCHMessageType::choicesInfo[2] = {
&PhysicalSharedChannelAllocation::theInfo,
&DLSHCCHMessageTypeSpare::theInfo,
};
const DLSHCCHMessageType::Info DLSHCCHMessageType::theInfo = {
DLSHCCHMessageType::create,
CHOICE,
0,
false,
choicesInfo,
1
};
const void *DLSHCCHMessage::itemsInfo[1] = {
&DLSHCCHMessageType::theInfo,
};
bool DLSHCCHMessage::itemsPres[1] = {
1,
};
const DLSHCCHMessage::Info DLSHCCHMessage::theInfo = {
DLSHCCHMessage::create,
SEQUENCE,
0,
false,
itemsInfo,
itemsPres,
1, 0, 0
};
const void *ULSHCCHMessageType::choicesInfo[2] = {
&PUSCHCapacityRequest::theInfo,
&ULSHCCHMessageTypeSpare::theInfo,
};
const ULSHCCHMessageType::Info ULSHCCHMessageType::theInfo = {
ULSHCCHMessageType::create,
CHOICE,
0,
false,
choicesInfo,
1
};
const void *ULSHCCHMessage::itemsInfo[1] = {
&ULSHCCHMessageType::theInfo,
};
bool ULSHCCHMessage::itemsPres[1] = {
1,
};
const ULSHCCHMessage::Info ULSHCCHMessage::theInfo = {
ULSHCCHMessage::create,
SEQUENCE,
0,
false,
itemsInfo,
itemsPres,
1, 0, 0
};
const void *BCCHFACHMessageType::choicesInfo[4] = {
&SystemInformationFACH::theInfo,
&SystemInformationChangeIndication::theInfo,
&BCCHFACHMessageTypeSpare2::theInfo,
&BCCHFACHMessageTypeSpare1::theInfo,
};
const BCCHFACHMessageType::Info BCCHFACHMessageType::theInfo = {
BCCHFACHMessageType::create,
CHOICE,
0,
false,
choicesInfo,
3
};
const void *BCCHFACHMessage::itemsInfo[1] = {
&BCCHFACHMessageType::theInfo,
};
bool BCCHFACHMessage::itemsPres[1] = {
1,
};
const BCCHFACHMessage::Info BCCHFACHMessage::theInfo = {
BCCHFACHMessage::create,
SEQUENCE,
0,
false,
itemsInfo,
itemsPres,
1, 0, 0
};
const void *BCCHBCHMessage::itemsInfo[1] = {
&SystemInformationBCH::theInfo,
};
bool BCCHBCHMessage::itemsPres[1] = {
1,
};
const BCCHBCHMessage::Info BCCHBCHMessage::theInfo = {
BCCHBCHMessage::create,
SEQUENCE,
0,
false,
itemsInfo,
itemsPres,
1, 0, 0
};
const void *MCCHMessageType::choicesInfo[16] = {
&MBMSAccessInformation::theInfo,
&MBMSCommonPTMRBInformation::theInfo,
&MBMSCurrentCellPTMRBInformation::theInfo,
&MBMSGeneralInformation::theInfo,
&MBMSModifiedServicesInformation::theInfo,
&MBMSNeighbouringCellPTMRBInformation::theInfo,
&MBMSUnmodifiedServicesInformation::theInfo,
&MCCHMessageTypeSpare9::theInfo,
&MCCHMessageTypeSpare8::theInfo,
&MCCHMessageTypeSpare7::theInfo,
&MCCHMessageTypeSpare6::theInfo,
&MCCHMessageTypeSpare5::theInfo,
&MCCHMessageTypeSpare4::theInfo,
&MCCHMessageTypeSpare3::theInfo,
&MCCHMessageTypeSpare2::theInfo,
&MCCHMessageTypeSpare1::theInfo,
};
const MCCHMessageType::Info MCCHMessageType::theInfo = {
MCCHMessageType::create,
CHOICE,
0,
false,
choicesInfo,
15
};
const void *MCCHMessage::itemsInfo[1] = {
&MCCHMessageType::theInfo,
};
bool MCCHMessage::itemsPres[1] = {
1,
};
const MCCHMessage::Info MCCHMessage::theInfo = {
MCCHMessage::create,
SEQUENCE,
0,
false,
itemsInfo,
itemsPres,
1, 0, 0
};
const void *MSCHMessageType::choicesInfo[4] = {
&MBMSSchedulingInformation::theInfo,
&MSCHMessageTypeSpare3::theInfo,
&MSCHMessageTypeSpare2::theInfo,
&MSCHMessageTypeSpare1::theInfo,
};
const MSCHMessageType::Info MSCHMessageType::theInfo = {
MSCHMessageType::create,
CHOICE,
0,
false,
choicesInfo,
3
};
const void *MSCHMessage::itemsInfo[1] = {
&MSCHMessageType::theInfo,
};
bool MSCHMessage::itemsPres[1] = {
1,
};
const MSCHMessage::Info MSCHMessage::theInfo = {
MSCHMessage::create,
SEQUENCE,
0,
false,
itemsInfo,
itemsPres,
1, 0, 0
};
}
//
// Copyright (C) 2012 Calin Cerchez
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see http://www.gnu.org/licenses/.
//
#ifndef RRCCLASSDEFINITIONS_H_
#define RRCCLASSDEFINITIONS_H_
#include "ASNTypes.h"
#include "RRCPDUDefinitions.h"
#include "RRCInformationElements.h"
namespace rrc {
typedef Null DLDCCHMessageTypeSpare3;
typedef Null DLDCCHMessageTypeSpare2;
typedef Null DLDCCHMessageTypeSpare1;
class DLDCCHMessageType : public Choice {
private:
static const void *choicesInfo[32];
public:
enum DLDCCHMessageTypeChoices {
activeSetUpdate = 0,
assistanceDataDelivery = 1,
cellChangeOrderFromUTRAN = 2,
cellUpdateConfirm = 3,
counterCheck = 4,
downlinkDirectTransfer = 5,
handoverFromUTRANCommandGSM = 6,
handoverFromUTRANCommandCDMA2000 = 7,
measurementControl = 8,
pagingType2 = 9,
physicalChannelReconfiguration = 10,
physicalSharedChannelAllocation = 11,
radioBearerReconfiguration = 12,
radioBearerRelease = 13,
radioBearerSetup = 14,
rrcConnectionRelease = 15,
securityModeCommand = 16,
signallingConnectionRelease = 17,
transportChannelReconfiguration = 18,
transportFormatCombinationControl = 19,
ueCapabilityEnquiry = 20,
ueCapabilityInformationConfirm = 21,
uplinkPhysicalChannelControl = 22,
uraUpdateConfirm = 23,
utranMobilityInformation = 24,
handoverFromUTRANCommandGERANIu = 25,
mbmsModifiedServicesInformation = 26,
etwsPrimaryNotificationWithSecurity = 27,
handoverFromUTRANCommandEUTRA = 28,
dLDCCHMessageTypeSpare3 = 29,
dLDCCHMessageTypeSpare2 = 30,
dLDCCHMessageTypeSpare1 = 31,
};
static const Info theInfo;
DLDCCHMessageType(): Choice(&theInfo) {}
};
class DLDCCHMessage : public Sequence {
private:
static const void *itemsInfo[2];
static bool itemsPres[2];
public:
static const Info theInfo;
DLDCCHMessage(): Sequence(&theInfo) {}
void setIntegrityCheckInfo(const IntegrityCheckInfo& integrityCheckInfo) { *static_cast<IntegrityCheckInfo*>(items[0]) = integrityCheckInfo; }
void setMessage(const DLDCCHMessageType& message) { *static_cast<DLDCCHMessageType*>(items[1]) = message; }
};
typedef Null ULDCCHMessageTypeSpare1;
class ULDCCHMessageType : public Choice {
private:
static const void *choicesInfo[32];
public:
enum ULDCCHMessageTypeChoices {
activeSetUpdateComplete = 0,
activeSetUpdateFailure = 1,
cellChangeOrderFromUTRANFailure = 2,
counterCheckResponse = 3,
handoverToUTRANComplete = 4,
initialDirectTransfer = 5,
handoverFromUTRANFailure = 6,
measurementControlFailure = 7,
measurementReport = 8,
physicalChannelReconfigurationComplete = 9,
physicalChannelReconfigurationFailure = 10,
radioBearerReconfigurationComplete = 11,
radioBearerReconfigurationFailure = 12,
radioBearerReleaseComplete = 13,
radioBearerReleaseFailure = 14,
radioBearerSetupComplete = 15,
radioBearerSetupFailure = 16,
rrcConnectionReleaseComplete = 17,
rrcConnectionSetupComplete = 18,
rrcStatus = 19,
securityModeComplete = 20,
securityModeFailure = 21,
signallingConnectionReleaseIndication = 22,
transportChannelReconfigurationComplete = 23,
transportChannelReconfigurationFailure = 24,
transportFormatCombinationControlFailure = 25,
ueCapabilityInformation = 26,
uplinkDirectTransfer = 27,
utranMobilityInformationConfirm = 28,
utranMobilityInformationFailure = 29,
mbmsModificationRequest = 30,
uLDCCHMessageTypeSpare1 = 31,
};
static const Info theInfo;
ULDCCHMessageType(): Choice(&theInfo) {}
};
class ULDCCHMessage : public Sequence {
private:
static const void *itemsInfo[2];
static bool itemsPres[2];
public:
static const Info theInfo;
ULDCCHMessage(): Sequence(&theInfo) {}
void setIntegrityCheckInfo(const IntegrityCheckInfo& integrityCheckInfo) { *static_cast<IntegrityCheckInfo*>(items[0]) = integrityCheckInfo; }
void setMessage(const ULDCCHMessageType& message) { *static_cast<ULDCCHMessageType*>(items[1]) = message; }
};
typedef Null DLCCCHMessageTypeSpare2;
typedef Null DLCCCHMessageTypeSpare1;
class DLCCCHMessageType : public Choice {
private:
static const void *choicesInfo[8];
public:
enum DLCCCHMessageTypeChoices {
cellUpdateConfirm = 0,
rrcConnectionReject = 1,
rrcConnectionRelease = 2,
rrcConnectionSetup = 3,
uraUpdateConfirm = 4,
etwsPrimaryNotificationWithSecurity = 5,
dLCCCHMessageTypeSpare2 = 6,
dLCCCHMessageTypeSpare1 = 7,
};
static const Info theInfo;
DLCCCHMessageType(): Choice(&theInfo) {}
};
class DLCCCHMessage : public Sequence {
private:
static const void *itemsInfo[2];
static bool itemsPres[2];
public:
static const Info theInfo;
DLCCCHMessage(): Sequence(&theInfo) {}
void setIntegrityCheckInfo(const IntegrityCheckInfo& integrityCheckInfo) { *static_cast<IntegrityCheckInfo*>(items[0]) = integrityCheckInfo; }
void setMessage(const DLCCCHMessageType& message) { *static_cast<DLCCCHMessageType*>(items[1]) = message; }
};
typedef Null ULCCCHMessageTypeSpare;
class ULCCCHMessageType : public Choice {
private:
static const void *choicesInfo[4];
public:
enum ULCCCHMessageTypeChoices {
cellUpdate = 0,
rrcConnectionRequest = 1,
uraUpdate = 2,
uLCCCHMessageTypeSpare = 3,
};
static const Info theInfo;
ULCCCHMessageType(): Choice(&theInfo) {}
};
class ULCCCHMessage : public Sequence {
private:
static const void *itemsInfo[2];
static bool itemsPres[2];
public:
static const Info theInfo;
ULCCCHMessage(): Sequence(&theInfo) {}
void setIntegrityCheckInfo(const IntegrityCheckInfo& integrityCheckInfo) { *static_cast<IntegrityCheckInfo*>(items[0]) = integrityCheckInfo; }
void setMessage(const ULCCCHMessageType& message) { *static_cast<ULCCCHMessageType*>(items[1]) = message; }
};
typedef Null PCCHMessageTypeSpare;
class PCCHMessageType : public Choice {
private:
static const void *choicesInfo[2];
public:
enum PCCHMessageTypeChoices {
pagingType1 = 0,
pCCHMessageTypeSpare = 1,
};
static const Info theInfo;
PCCHMessageType(): Choice(&theInfo) {}
};
class PCCHMessage : public Sequence {
private:
static const void *itemsInfo[1];
static bool itemsPres[1];
public:
static const Info theInfo;
PCCHMessage(): Sequence(&theInfo) {}
void setMessage(const PCCHMessageType& message) { *static_cast<PCCHMessageType*>(items[0]) = message; }
};
typedef Null DLSHCCHMessageTypeSpare;
class DLSHCCHMessageType : public Choice {
private:
static const void *choicesInfo[2];
public:
enum DLSHCCHMessageTypeChoices {
physicalSharedChannelAllocation = 0,
dLSHCCHMessageTypeSpare = 1,
};
static const Info theInfo;
DLSHCCHMessageType(): Choice(&theInfo) {}
};
class DLSHCCHMessage : public Sequence {
private:
static const void *itemsInfo[1];
static bool itemsPres[1];
public:
static const Info theInfo;
DLSHCCHMessage(): Sequence(&theInfo) {}
void setMessage(const DLSHCCHMessageType& message) { *static_cast<DLSHCCHMessageType*>(items[0]) = message; }
};
typedef Null ULSHCCHMessageTypeSpare;
class ULSHCCHMessageType : public Choice {
private:
static const void *choicesInfo[2];
public:
enum ULSHCCHMessageTypeChoices {
puschCapacityRequest = 0,
uLSHCCHMessageTypeSpare = 1,
};
static const Info theInfo;
ULSHCCHMessageType(): Choice(&theInfo) {}
};
class ULSHCCHMessage : public Sequence {
private:
static const void *itemsInfo[1];
static bool itemsPres[1];
public:
static const Info theInfo;
ULSHCCHMessage(): Sequence(&theInfo) {}
void setMessage(const ULSHCCHMessageType& message) { *static_cast<ULSHCCHMessageType*>(items[0]) = message; }
};
typedef Null BCCHFACHMessageTypeSpare2;
typedef Null BCCHFACHMessageTypeSpare1;
class BCCHFACHMessageType : public Choice {
private:
static const void *choicesInfo[4];
public:
enum BCCHFACHMessageTypeChoices {
systemInformation = 0,
systemInformationChangeIndication = 1,
bCCHFACHMessageTypeSpare2 = 2,
bCCHFACHMessageTypeSpare1 = 3,
};
static const Info theInfo;
BCCHFACHMessageType(): Choice(&theInfo) {}
};
class BCCHFACHMessage : public Sequence {
private:
static const void *itemsInfo[1];
static bool itemsPres[1];
public:
static const Info theInfo;
BCCHFACHMessage(): Sequence(&theInfo) {}
void setMessage(const BCCHFACHMessageType& message) { *static_cast<BCCHFACHMessageType*>(items[0]) = message; }
};
class BCCHBCHMessage : public Sequence {
private:
static const void *itemsInfo[1];
static bool itemsPres[1];
public:
static const Info theInfo;
BCCHBCHMessage(): Sequence(&theInfo) {}
void setMessage(const SystemInformationBCH& message) { *static_cast<SystemInformationBCH*>(items[0]) = message; }
};
typedef Null MCCHMessageTypeSpare9;
typedef Null MCCHMessageTypeSpare8;
typedef Null MCCHMessageTypeSpare7;
typedef Null MCCHMessageTypeSpare6;
typedef Null MCCHMessageTypeSpare5;
typedef Null MCCHMessageTypeSpare4;
typedef Null MCCHMessageTypeSpare3;
typedef Null MCCHMessageTypeSpare2;
typedef Null MCCHMessageTypeSpare1;
class MCCHMessageType : public Choice {
private:
static const void *choicesInfo[16];
public:
enum MCCHMessageTypeChoices {
mbmsAccessInformation = 0,
mbmsCommonPTMRBInformation = 1,
mbmsCurrentCellPTMRBInformation = 2,
mbmsGeneralInformation = 3,
mbmsModifiedServicesInformation = 4,
mbmsNeighbouringCellPTMRBInformation = 5,
mbmsUnmodifiedServicesInformation = 6,
mCCHMessageTypeSpare9 = 7,
mCCHMessageTypeSpare8 = 8,
mCCHMessageTypeSpare7 = 9,
mCCHMessageTypeSpare6 = 10,
mCCHMessageTypeSpare5 = 11,
mCCHMessageTypeSpare4 = 12,
mCCHMessageTypeSpare3 = 13,
mCCHMessageTypeSpare2 = 14,
mCCHMessageTypeSpare1 = 15,
};
static const Info theInfo;
MCCHMessageType(): Choice(&theInfo) {}
};
class MCCHMessage : public Sequence {
private:
static const void *itemsInfo[1];
static bool itemsPres[1];
public:
static const Info theInfo;
MCCHMessage(): Sequence(&theInfo) {}
void setMessage(const MCCHMessageType& message) { *static_cast<MCCHMessageType*>(items[0]) = message; }
};
typedef Null MSCHMessageTypeSpare3;
typedef Null MSCHMessageTypeSpare2;
typedef Null MSCHMessageTypeSpare1;
class MSCHMessageType : public Choice {
private:
static const void *choicesInfo[4];
public:
enum MSCHMessageTypeChoices {
mbmsSchedulingInformation = 0,
mSCHMessageTypeSpare3 = 1,
mSCHMessageTypeSpare2 = 2,
mSCHMessageTypeSpare1 = 3,
};
static const Info theInfo;
MSCHMessageType(): Choice(&theInfo) {}
};
class MSCHMessage : public Sequence {
private:
static const void *itemsInfo[1];
static bool itemsPres[1];
public:
static const Info theInfo;
MSCHMessage(): Sequence(&theInfo) {}
void setMessage(const MSCHMessageType& message) { *static_cast<MSCHMessageType*>(items[0]) = message; }
};
}
#endif /* RRCCLASSDEFINITIONS_H_ */
//
// Copyright (C) 2012 Calin Cerchez
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see http://www.gnu.org/licenses/.
//
#include "RRCConstantDefinitions.h"
namespace rrc {
}
//
// Copyright (C) 2012 Calin Cerchez
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see http://www.gnu.org/licenses/.
//
#ifndef RRCCONSTANTDEFINITIONS_H_
#define RRCCONSTANTDEFINITIONS_H_
#include "ASNTypes.h"
namespace rrc {
#define hiPDSCHidentities 64
#define hiPUSCHidentities 64
#define hiRM 256
#define maxAC 16
#define maxAdditionalMeas 4
#define maxASC 8
#define maxASCmap 7
#define maxASCpersist 6
#define maxCCTrCH 8
#define maxCellMeas 32
#define maxCellMeasOnSecULFreq 32
#define maxCellMeas_1 31
#define maxCellMeasOnSecULFreq_1 31
#define maxCNdomains 4
#define maxCommonHRNTI 4
#define maxCommonQueueID 2
#define maxCPCHsets 16
#define maxDedicatedCSGFreq 4
#define maxDPCH_DLchan 8
#define maxDPDCH_UL 6
#define maxDRACclasses 8
#define maxE_DCHMACdFlow 8
#define maxE_DCHMACdFlow_1 7
#define maxEUTRACellPerFreq 16
#define maxEUTRATargetFreqs 8
#define maxEDCHRL 4
#define maxEDCHRL_1 3
#define maxEDCHs 32
#define maxEDCHTxPattern_TDD128 4
#define maxEDCHTxPattern_TDD128_1 3
#define maxERNTIgroup 32
#define maxERNTIperGroup 2
#define maxERUCCH 256
#define maxFACHPCH 8
#define maxFreq 8
#define maxFreqBandsEUTRA 16
#define maxFreqBandsFDD 8
#define maxFreqBandsFDD_ext 15
#define maxFreqBandsTDD 4
#define maxFreqBandsTDD_ext 16
#define maxFreqBandsGSM 16
#define maxGANSS 8
#define maxGANSS_1 7
#define maxGANSSSat 64
#define maxGANSSSat_1 63
#define maxGERAN_SI 8
#define maxGSMTargetCells 32
#define maxHNBNameSize 48
#define maxHProcesses 8
#define maxHS_SCCHLessTrBlk 4
#define maxHSDSCHTBIndex 64
#define maxHSDSCHTBIndex_tdd384 512
#define maxHSSCCHs 4
#define maxHSSCCHs_1 3
#define maxHSSICH_TDD128 4
#define maxHSSICH_TDD128_1 3
#define maxInterSysMessages 4
#define maxLoCHperRLC 2
#define maxMAC_d_PDUsizes 8
#define maxMBMS_CommonCCTrCh 32
#define maxMBMS_CommonPhyCh 32
#define maxMBMS_CommonRB 32
#define maxMBMS_CommonTrCh 32
#define maxMBMS_Freq 4
#define maxMBMS_L1CP 4
#define maxMBMSservCount 8
#define maxMBMSservModif 32
#define maxMBMSservSched 16
#define maxMBMSservSelect 8
#define maxMBMSservUnmodif 64
#define maxMBMSTransmis 4
#define maxMBSFNClusters 16
#define maxMeasCSGRange 4
#define maxMeasEvent 8
#define maxMeasEventOnSecULFreq 8
#define maxMeasIntervals 3
#define maxMeasOccasionPattern 5
#define maxMeasOccasionPattern_1 4
#define maxMeasParEvent 2
#define maxNumCDMA2000Freqs 8
#define maxNumE_AGCH 4
#define maxNumE_HICH 4
#define maxNumEUTRAFreqs 8
#define maxNumGSMCellGroup 16
#define maxNumGSMFreqRanges 32
#define maxNumFDDFreqs 8
#define maxNumTDDFreqs 8
#define maxNoOfMeas 16
#define maxOtherRAT 15
#define maxOtherRAT_16 16
#define maxPage1 8
#define maxPCPCH_APsig 16
#define maxPCPCH_APsubCh 12
#define maxPCPCH_CDsig 16
#define maxPCPCH_CDsubCh 12
#define maxPCPCH_SF 7
#define maxPCPCHs 64
#define maxPDCPAlgoType 8
#define maxPDSCH 8
#define maxPDSCH_TFCIgroups 256
#define maxPRACH 16
#define maxPRACH_FPACH 8
#define maxPredefConfig 16
#define maxPrio 8
#define maxPrio_1 7
#define maxPUSCH 8
#define maxQueueIDs 8
#define maxRABsetup 16
#define maxRAT 16
#define maxRB 32
#define maxRBallRABs 27
#define maxRBMuxOptions 8
#define maxRBperRAB 8
#define maxRBperTrCh 16
#define maxReportedEUTRACellPerFreq 4
#define maxReportedEUTRAFreqs 4
#define maxReportedGSMCells 8
#define maxRL 8
#define maxRL_1 7
#define maxRLCPDUsizePerLogChan 32
#define maxRFC3095_CID 16384
#define maxROHC_PacketSizes_r4 16
#define maxROHC_Profile_r4 8
#define maxRxPatternForHSDSCH_TDD128 4
#define maxRxPatternForHSDSCH_TDD128_1 3
#define maxSat 16
#define maxSatClockModels 4
#define maxSCCPCH 16
#define maxSgnType 8
#define maxSIB 32
#define maxSIB_FACH 8
#define maxSIBperMsg 16
#define maxSIrequest 4
#define maxSRBsetup 8
#define maxSystemCapability 16
#define maxTDD128Carrier 6
#define maxTbsForHSDSCH_TDD128 4
#define maxTbsForHSDSCH_TDD128_1 3
#define maxTF 32
#define maxTF_CPCH 16
#define maxTFC 1024
#define maxTFCsub 1024
#define maxTFCI_2_Combs 512
#define maxTGPS 6
#define maxTrCH 32
#define maxTrCHpreconf 32
#define maxTS 14
#define maxTS_1 13
#define maxTS_2 12
#define maxTS_LCR 6
#define maxTS_LCR_1 5
#define maxURA 8
#define maxURNTI_Group 8
}
#endif /* RRCCONSTANTDEFINITIONS_H_ */
//
// Copyright (C) 2012 Calin Cerchez
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see http://www.gnu.org/licenses/.
//
#include "RRCIe.h"
const void *Fdd::itemsInfo[1] = {
&MeasurementQuantity::theInfo
};
bool Fdd::itemsPres[1] = {
1
};
const Fdd::Info Fdd::theInfo = {
Fdd::create,
SEQUENCE,
0,
false,
itemsInfo,
itemsPres,
1, 0, 0
};
const void *ImsiAndEsnDs41::itemsInfo[2] = {
&ImsiDs41::theInfo,
&EsnDs41::theInfo,
};
bool ImsiAndEsnDs41::itemsPres[2] = {
1,
1
};
const ImsiAndEsnDs41::Info ImsiAndEsnDs41::theInfo = {
ImsiAndEsnDs41::create,
SEQUENCE,
0,
false,
itemsInfo,
itemsPres,
2, 0, 0
};
const void *IntegrityCheckInfo::itemsInfo[2] = {
&MessageAuthenticationCode::theInfo,
&RrcMessageSequenceNumber::theInfo,
};
bool IntegrityCheckInfo::itemsPres[2] = {
1,
1
};
const IntegrityCheckInfo::Info IntegrityCheckInfo::theInfo = {
IntegrityCheckInfo::create,
SEQUENCE,
0,
false,
itemsInfo,
itemsPres,
2, 0, 0
};
Mcc *toMcc(std::vector<unsigned char> mcc) {
Mcc *ret = new Mcc();
for (unsigned i = 0; i < mcc.size(); i++)
ret->push_back(Digit(mcc.at(i)));
return ret;
}
std::vector<unsigned char> fromMcc(Mcc *mcc) {
std::vector<unsigned char> ret;
for (unsigned i = 0; i < mcc->size(); i++)
ret.push_back(static_cast<const Digit>(mcc->at(i)).getValue());
return ret;
}
Mnc *toMnc(std::vector<unsigned char> mnc) {
Mnc *ret = new Mnc();
for (unsigned i = 0; i < mnc.size(); i++)
ret->push_back(Digit(mnc.at(i)));
return ret;
}
std::vector<unsigned char> fromMnc(Mcc *mnc) {
std::vector<unsigned char> ret;
for (unsigned i = 0; i < mnc->size(); i++)
ret.push_back(static_cast<const Digit>(mnc->at(i)).getValue());
return ret;
}
const void *MeasurementQuantity::choicesInfo[4] = {
&CpichEcN0::theInfo,
&CpichRscp::theInfo,
&Pathloss::theInfo,
&Spare::theInfo,
};
const MeasurementQuantity::Info MeasurementQuantity::theInfo = {
MeasurementQuantity::create,
CHOICE,
0,
false,
choicesInfo,
3
};
const void *MeasuredResultsOnRACH::itemsInfo[2] = {
&DummyIe::theInfo,
&DummyIe::theInfo,
};
bool MeasuredResultsOnRACH::itemsPres[2] = {
1,
0
};
const MeasuredResultsOnRACH::Info MeasuredResultsOnRACH::theInfo = {
MeasuredResultsOnRACH::create,
SEQUENCE,
0,
false,
itemsInfo,
itemsPres,
2, 1, 0
};
const void *PlmnIdentity::itemsInfo[2] = {
&Mcc::theInfo,
&Mnc::theInfo,
};
bool PlmnIdentity::itemsPres[2] = {
1,
1
};
const PlmnIdentity::Info PlmnIdentity::theInfo = {
PlmnIdentity::create,
SEQUENCE,
0,
false,
itemsInfo,
itemsPres,
2, 0, 0
};
PlmnIdentity::PlmnIdentity(std::vector<unsigned char>mcc, std::vector<unsigned char>mnc) : Sequence(&theInfo) {
setMcc(mcc);
setMnc(mnc);
}
const void *Lai::itemsInfo[2] = {
&PlmnIdentity::theInfo,
&Lac::theInfo,
};
bool Lai::itemsPres[2] = {
1,
1
};
const Lai::Info Lai::theInfo = {
Lai::create,
SEQUENCE,
0,
false,
itemsInfo,
itemsPres,
2, 0, 0
};
Lai::Lai(PlmnIdentity& plmnId, char *lac) : Sequence(&theInfo) {
setPlmnIdentity(plmnId);
setLac(lac);
}
const void *Rai::itemsInfo[2] = {
&Lai::theInfo,
&RoutingAreaCode::theInfo,
};
bool Rai::itemsPres[2] = {
1,
1
};
const Rai::Info Rai::theInfo = {
Rai::create,
SEQUENCE,
0,
false,
itemsInfo,
itemsPres,
2, 0, 0
};
const void *PTmsiAndRaiGsmMap::itemsInfo[2] = {
&PTmsiGsmMap::theInfo,
&Rai::theInfo,
};
bool PTmsiAndRaiGsmMap::itemsPres[2] = {
1,
1
};
const PTmsiAndRaiGsmMap::Info PTmsiAndRaiGsmMap::theInfo = {
PTmsiAndRaiGsmMap::create,
SEQUENCE,
0,
false,
itemsInfo,
itemsPres,
2, 0, 0
};
const void *SfnSfnObsTimeDifference::choicesInfo[2] = {
&SfnSfnObsTimeDifference1::theInfo,
&SfnSfnObsTimeDifference2::theInfo,
};
const SfnSfnObsTimeDifference::Info SfnSfnObsTimeDifference::theInfo = {
SfnSfnObsTimeDifference::create,
CHOICE,
0,
false,
choicesInfo,
1
};
const void *Tdd::itemsInfo[2] = {
&TimeslotIscp::theInfo,
&PrimaryCcphRscp::theInfo
};
bool Tdd::itemsPres[2] = {
0,
0
};
const Tdd::Info Tdd::theInfo = {
Tdd::create,
SEQUENCE,
0,
false,
itemsInfo,
itemsPres,
2, 2, 0
};
const void *TmsiAndLaiGsmMap::itemsInfo[2] = {
&TmsiGsmMap::theInfo,
&Lai::theInfo,
};
bool TmsiAndLaiGsmMap::itemsPres[2] = {
1,
1
};
const TmsiAndLaiGsmMap::Info TmsiAndLaiGsmMap::theInfo = {
TmsiAndLaiGsmMap::create,
SEQUENCE,
0,
false,
itemsInfo,
itemsPres,
2, 0, 0
};
TmsiAndLaiGsmMap::TmsiAndLaiGsmMap(char *tmsi, Lai& lai) : Sequence(&theInfo) {
setTmsiGsmMap(tmsi);
setLai(lai);
}
const void *InitialUeIdentity::choicesInfo[8] = {
&ImsiGsmMap::theInfo,
&TmsiAndLaiGsmMap::theInfo,
&PTmsiAndRaiGsmMap::theInfo,
&Imei::theInfo,
&EsnDs41::theInfo,
&ImsiDs41::theInfo,
&ImsiAndEsnDs41::theInfo,
&TmsiDs41::theInfo,
};
const InitialUeIdentity::Info InitialUeIdentity::theInfo = {
InitialUeIdentity::create,
CHOICE,
0,
false,
choicesInfo,
7
};
const void *V3d0NonCriticalExtensions::itemsInfo[2] = {
&DummyIe::theInfo,
&DummyIe::theInfo,
};
bool V3d0NonCriticalExtensions::itemsPres[2] = {
1,
0
};
const V3d0NonCriticalExtensions::Info V3d0NonCriticalExtensions::theInfo = {
V3d0NonCriticalExtensions::create,
SEQUENCE,
0,
false,
itemsInfo,
itemsPres,
2, 1, 0
};
此差异已折叠。
此差异已折叠。
此差异已折叠。
//
// Copyright (C) 2012 Calin Cerchez
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see http://www.gnu.org/licenses/.
//
#include "RRCMessage.h"
const void *UlCcchMessageType::choicesInfo[4] = {
&CellUpdate::theInfo,
&RRCConnectionRequest::theInfo,
&URAUpdate::theInfo,
&Spare::theInfo,
};
const UlCcchMessageType::Info UlCcchMessageType::theInfo = {
UlCcchMessageType::create,
CHOICE,
0,
false,
choicesInfo,
3
};
const void *UlCcchMessage::itemsInfo[2] = {
&IntegrityCheckInfo::theInfo,
&UlCcchMessageType::theInfo,
};
bool UlCcchMessage::itemsPres[2] = {
0,
1
};
const UlCcchMessage::Info UlCcchMessage::theInfo = {
UlCcchMessage::create,
SEQUENCE,
0,
false,
itemsInfo,
itemsPres,
2, 1, 0
};
UlCcchMessage::UlCcchMessage(UlCcchMessageType& message, IntegrityCheckInfo *integrityCheckInfo) : Sequence(&theInfo) {
setUlCchMessageType(message);
}
//
// Copyright (C) 2012 Calin Cerchez
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see http://www.gnu.org/licenses/.
//
#ifndef RRCMESSAGE_H_
#define RRCMESSAGE_H_
#include "RRCPdu.h"
enum UlCcchMessageTypes {
cellUpdate = 0,
rrcConnectionRequest = 1,
uraUpdate = 2,
spareUlCcchMessageType = 3
};
class UlCcchMessageType : public Choice {
private:
static const void *choicesInfo[4];
public:
static const Info theInfo;
UlCcchMessageType() : Choice(&theInfo) {}
// void setId(char *id);
// char *getId();
};
class UlCcchMessage : public Sequence {
private:
static const void *itemsInfo[2];
static bool itemsPres[2];
public:
static const Info theInfo;
UlCcchMessage(UlCcchMessageType& message, IntegrityCheckInfo *integrityCheckInfo = NULL);
// unsigned char getProcedureCode() { return static_cast<IntegerBase*>(items.at(0))->getValue(); }
// OpenType *getValue() { return static_cast<OpenType*>(items.at(2)); }
//
void setUlCchMessageType(UlCcchMessageType& message) { *static_cast<UlCcchMessageType*>(items[1]) = message; }
// void setEstablishmentCause(unsigned char estCause) { static_cast<EstablishmentCause*>(items[1])->setValue(estCause); }
// void setProtocolErrorIndicator(unsigned char protErrInd) { static_cast<ProtocolErrorIndicator*>(items[1])->setValue(protErrInd); }
};
#endif /* RRCMESSAGE_H_ */
此差异已折叠。
此差异已折叠。
//
// Copyright (C) 2012 Calin Cerchez
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see http://www.gnu.org/licenses/.
//
#include "RRCPdu.h"
const void *CellUpdate::itemsInfo[9] = {
&DummyIe::theInfo,
&DummyIe::theInfo,
&DummyIe::theInfo,
&DummyIe::theInfo,
&DummyIe::theInfo,
&DummyIe::theInfo,
&DummyIe::theInfo,
&DummyIe::theInfo,
&DummyIe::theInfo,
};
bool CellUpdate::itemsPres[9] = {
1,
1,
1,
1,
1,
0,
1,
0,
0,
};
const CellUpdate::Info CellUpdate::theInfo = {
CellUpdate::create,
SEQUENCE,
0,
false,
itemsInfo,
itemsPres,
9, 3, 0
};
const void *RRCConnectionRequest::itemsInfo[5] = {
&InitialUeIdentity::theInfo,
&EstablishmentCause::theInfo,
&ProtocolErrorIndicator::theInfo,
&MeasuredResultsOnRACH::theInfo,
&V3d0NonCriticalExtensions::theInfo,
};
bool RRCConnectionRequest::itemsPres[5] = {
1,
1,
1,
0,
0
};
const RRCConnectionRequest::Info RRCConnectionRequest::theInfo = {
RRCConnectionRequest::create,
SEQUENCE,
0,
false,
itemsInfo,
itemsPres,
5, 2, 0
};
RRCConnectionRequest::RRCConnectionRequest(InitialUeIdentity& initUeId, unsigned char estCause, bool protErrInd, MeasuredResultsOnRACH *measResOnRach, V3d0NonCriticalExtensions *v3d0NonCritExt) : Sequence(&theInfo) {
setInitialUeIdentity(initUeId);
setEstablishmentCause(estCause);
setProtocolErrorIndicator(protErrInd);
}
const void *URAUpdate::itemsInfo[4] = {
&DummyIe::theInfo,
&DummyIe::theInfo,
&DummyIe::theInfo,
&DummyIe::theInfo,
};
bool URAUpdate::itemsPres[4] = {
1,
1,
1,
0
};
const URAUpdate::Info URAUpdate::theInfo = {
URAUpdate::create,
SEQUENCE,
0,
false,
itemsInfo,
itemsPres,
4, 1, 0
};
//
// Copyright (C) 2012 Calin Cerchez
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see http://www.gnu.org/licenses/.
//
#ifndef RRCPDU_H_
#define RRCPDU_H_
#include "RRCIe.h"
class CellUpdate : public Sequence {
private:
static const void *itemsInfo[9];
static bool itemsPres[9];
public:
static const Info theInfo;
// RRCConnectionRequest(InitialUeIdentity& initUeId, unsigned char estCause, bool protErrInd, MeasuredResultsOnRACH *measResOnRach = NULL, V3d0NonCriticalExtensions *v3d0NonCritExt = NULL);
// unsigned char getProcedureCode() { return static_cast<IntegerBase*>(items.at(0))->getValue(); }
// OpenType *getValue() { return static_cast<OpenType*>(items.at(2)); }
//
// void setInitialUeIdentity(InitialUeIdentity& initUeId) { *static_cast<InitialUeIdentity*>(items[0]) = initUeId; }
// void setEstablishmentCause(unsigned char estCause) { static_cast<EstablishmentCause*>(items[1])->setValue(estCause); }
// void setProtocolErrorIndicator(unsigned char protErrInd) { static_cast<ProtocolErrorIndicator*>(items[1])->setValue(protErrInd); }
};
class RRCConnectionRequest : public Sequence {
private:
static const void *itemsInfo[5];
static bool itemsPres[5];
public:
static const Info theInfo;
RRCConnectionRequest(InitialUeIdentity& initUeId, unsigned char estCause, bool protErrInd, MeasuredResultsOnRACH *measResOnRach = NULL, V3d0NonCriticalExtensions *v3d0NonCritExt = NULL);
// unsigned char getProcedureCode() { return static_cast<IntegerBase*>(items.at(0))->getValue(); }
// OpenType *getValue() { return static_cast<OpenType*>(items.at(2)); }
//
void setInitialUeIdentity(InitialUeIdentity& initUeId) { *static_cast<InitialUeIdentity*>(items[0]) = initUeId; }
void setEstablishmentCause(unsigned char estCause) { static_cast<EstablishmentCause*>(items[1])->setValue(estCause); }
void setProtocolErrorIndicator(unsigned char protErrInd) { static_cast<ProtocolErrorIndicator*>(items[1])->setValue(protErrInd); }
};
class URAUpdate : public Sequence {
private:
static const void *itemsInfo[4];
static bool itemsPres[4];
public:
static const Info theInfo;
// RRCConnectionRequest(InitialUeIdentity& initUeId, unsigned char estCause, bool protErrInd, MeasuredResultsOnRACH *measResOnRach = NULL, V3d0NonCriticalExtensions *v3d0NonCritExt = NULL);
// unsigned char getProcedureCode() { return static_cast<IntegerBase*>(items.at(0))->getValue(); }
// OpenType *getValue() { return static_cast<OpenType*>(items.at(2)); }
//
// void setInitialUeIdentity(InitialUeIdentity& initUeId) { *static_cast<InitialUeIdentity*>(items[0]) = initUeId; }
// void setEstablishmentCause(unsigned char estCause) { static_cast<EstablishmentCause*>(items[1])->setValue(estCause); }
// void setProtocolErrorIndicator(unsigned char protErrInd) { static_cast<ProtocolErrorIndicator*>(items[1])->setValue(protErrInd); }
};
#endif /* RRCPDU_H_ */
此差异已折叠。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册