提交 e7af4f28 编写于 作者: C calincerchez

working on parser

上级 dec30186
......@@ -41,8 +41,20 @@ void RRC::initialize(int stage) {
mcc.push_back(new Digit(0));
mnc.push_back(new Digit(0));
mnc.push_back(new Digit(2));
// char lac[2] = {0x5b, 0x10};
// char tmsi[4] = {0x19, 0x02, 0x2c, 0xba};
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);
......
......@@ -19,8 +19,39 @@
namespace rrc {
const void *DLDCCHMessageType::choicesInfo[1] = {
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,
......@@ -28,11 +59,60 @@ const DLDCCHMessageType::Info DLDCCHMessageType::theInfo = {
0,
false,
choicesInfo,
0
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[1] = {
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,
......@@ -40,11 +120,36 @@ const ULDCCHMessageType::Info ULDCCHMessageType::theInfo = {
0,
false,
choicesInfo,
0
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[1] = {
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,
......@@ -52,11 +157,32 @@ const DLCCCHMessageType::Info DLCCCHMessageType::theInfo = {
0,
false,
choicesInfo,
0
7
};
const void *ULCCCHMessageType::choicesInfo[1] = {
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,
......@@ -64,11 +190,30 @@ const ULCCCHMessageType::Info ULCCCHMessageType::theInfo = {
0,
false,
choicesInfo,
0
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[1] = {
const void *PCCHMessageType::choicesInfo[2] = {
&PagingType1::theInfo,
&PCCHMessageTypeSpare::theInfo,
};
const PCCHMessageType::Info PCCHMessageType::theInfo = {
PCCHMessageType::create,
......@@ -76,7 +221,7 @@ const PCCHMessageType::Info PCCHMessageType::theInfo = {
0,
false,
choicesInfo,
0
1
};
const void *PCCHMessage::itemsInfo[1] = {
......@@ -95,8 +240,9 @@ const PCCHMessage::Info PCCHMessage::theInfo = {
1, 0, 0
};
const void *DLSHCCHMessageType::choicesInfo[1] = {
const void *DLSHCCHMessageType::choicesInfo[2] = {
&PhysicalSharedChannelAllocation::theInfo,
&DLSHCCHMessageTypeSpare::theInfo,
};
const DLSHCCHMessageType::Info DLSHCCHMessageType::theInfo = {
DLSHCCHMessageType::create,
......@@ -104,7 +250,7 @@ const DLSHCCHMessageType::Info DLSHCCHMessageType::theInfo = {
0,
false,
choicesInfo,
0
1
};
const void *DLSHCCHMessage::itemsInfo[1] = {
......@@ -123,8 +269,9 @@ const DLSHCCHMessage::Info DLSHCCHMessage::theInfo = {
1, 0, 0
};
const void *ULSHCCHMessageType::choicesInfo[1] = {
const void *ULSHCCHMessageType::choicesInfo[2] = {
&PUSCHCapacityRequest::theInfo,
&ULSHCCHMessageTypeSpare::theInfo,
};
const ULSHCCHMessageType::Info ULSHCCHMessageType::theInfo = {
ULSHCCHMessageType::create,
......@@ -132,7 +279,7 @@ const ULSHCCHMessageType::Info ULSHCCHMessageType::theInfo = {
0,
false,
choicesInfo,
0
1
};
const void *ULSHCCHMessage::itemsInfo[1] = {
......@@ -151,8 +298,11 @@ const ULSHCCHMessage::Info ULSHCCHMessage::theInfo = {
1, 0, 0
};
const void *BCCHFACHMessageType::choicesInfo[1] = {
const void *BCCHFACHMessageType::choicesInfo[4] = {
&SystemInformationFACH::theInfo,
&SystemInformationChangeIndication::theInfo,
&BCCHFACHMessageTypeSpare2::theInfo,
&BCCHFACHMessageTypeSpare1::theInfo,
};
const BCCHFACHMessageType::Info BCCHFACHMessageType::theInfo = {
BCCHFACHMessageType::create,
......@@ -160,7 +310,7 @@ const BCCHFACHMessageType::Info BCCHFACHMessageType::theInfo = {
0,
false,
choicesInfo,
0
3
};
const void *BCCHFACHMessage::itemsInfo[1] = {
......@@ -195,8 +345,23 @@ const BCCHBCHMessage::Info BCCHBCHMessage::theInfo = {
1, 0, 0
};
const void *MCCHMessageType::choicesInfo[1] = {
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,
......@@ -204,7 +369,7 @@ const MCCHMessageType::Info MCCHMessageType::theInfo = {
0,
false,
choicesInfo,
0
15
};
const void *MCCHMessage::itemsInfo[1] = {
......@@ -223,8 +388,11 @@ const MCCHMessage::Info MCCHMessage::theInfo = {
1, 0, 0
};
const void *MSCHMessageType::choicesInfo[1] = {
const void *MSCHMessageType::choicesInfo[4] = {
&MBMSSchedulingInformation::theInfo,
&MSCHMessageTypeSpare3::theInfo,
&MSCHMessageTypeSpare2::theInfo,
&MSCHMessageTypeSpare1::theInfo,
};
const MSCHMessageType::Info MSCHMessageType::theInfo = {
MSCHMessageType::create,
......@@ -232,7 +400,7 @@ const MSCHMessageType::Info MSCHMessageType::theInfo = {
0,
false,
choicesInfo,
0
3
};
const void *MSCHMessage::itemsInfo[1] = {
......
......@@ -24,47 +24,111 @@
namespace rrc {
class DLDCCHMessageType : Choice {
typedef Null DLDCCHMessageTypeSpare3;
typedef Null DLDCCHMessageTypeSpare2;
typedef Null DLDCCHMessageTypeSpare1;
class DLDCCHMessageType : public Choice {
private:
static const void *choicesInfo[1];
static const void *choicesInfo[32];
public:
static const Info theInfo;
DLDCCHMessageType(): Choice(&theInfo) {}
};
class ULDCCHMessageType : Choice {
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[1];
static const void *choicesInfo[32];
public:
static const Info theInfo;
ULDCCHMessageType(): Choice(&theInfo) {}
};
class DLCCCHMessageType : Choice {
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[1];
static const void *choicesInfo[8];
public:
static const Info theInfo;
DLCCCHMessageType(): Choice(&theInfo) {}
};
class ULCCCHMessageType : Choice {
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[1];
static const void *choicesInfo[4];
public:
static const Info theInfo;
ULCCCHMessageType(): Choice(&theInfo) {}
};
class PCCHMessageType : Choice {
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[1];
static const void *choicesInfo[2];
public:
static const Info theInfo;
PCCHMessageType(): Choice(&theInfo) {}
};
class PCCHMessage : Sequence {
class PCCHMessage : public Sequence {
private:
static const void *itemsInfo[1];
static bool itemsPres[1];
......@@ -72,18 +136,20 @@ public:
static const Info theInfo;
PCCHMessage(): Sequence(&theInfo) {}
void setMessage(const PCCHMessageType& Message) { *static_cast<PCCHMessageType*>(items[0]) = Message; }
void setMessage(const PCCHMessageType& message) { *static_cast<PCCHMessageType*>(items[0]) = message; }
};
class DLSHCCHMessageType : Choice {
typedef Null DLSHCCHMessageTypeSpare;
class DLSHCCHMessageType : public Choice {
private:
static const void *choicesInfo[1];
static const void *choicesInfo[2];
public:
static const Info theInfo;
DLSHCCHMessageType(): Choice(&theInfo) {}
};
class DLSHCCHMessage : Sequence {
class DLSHCCHMessage : public Sequence {
private:
static const void *itemsInfo[1];
static bool itemsPres[1];
......@@ -91,18 +157,20 @@ public:
static const Info theInfo;
DLSHCCHMessage(): Sequence(&theInfo) {}
void setMessage(const DLSHCCHMessageType& Message) { *static_cast<DLSHCCHMessageType*>(items[0]) = Message; }
void setMessage(const DLSHCCHMessageType& message) { *static_cast<DLSHCCHMessageType*>(items[0]) = message; }
};
class ULSHCCHMessageType : Choice {
typedef Null ULSHCCHMessageTypeSpare;
class ULSHCCHMessageType : public Choice {
private:
static const void *choicesInfo[1];
static const void *choicesInfo[2];
public:
static const Info theInfo;
ULSHCCHMessageType(): Choice(&theInfo) {}
};
class ULSHCCHMessage : Sequence {
class ULSHCCHMessage : public Sequence {
private:
static const void *itemsInfo[1];
static bool itemsPres[1];
......@@ -110,18 +178,22 @@ public:
static const Info theInfo;
ULSHCCHMessage(): Sequence(&theInfo) {}
void setMessage(const ULSHCCHMessageType& Message) { *static_cast<ULSHCCHMessageType*>(items[0]) = Message; }
void setMessage(const ULSHCCHMessageType& message) { *static_cast<ULSHCCHMessageType*>(items[0]) = message; }
};
class BCCHFACHMessageType : Choice {
typedef Null BCCHFACHMessageTypeSpare2;
typedef Null BCCHFACHMessageTypeSpare1;
class BCCHFACHMessageType : public Choice {
private:
static const void *choicesInfo[1];
static const void *choicesInfo[4];
public:
static const Info theInfo;
BCCHFACHMessageType(): Choice(&theInfo) {}
};
class BCCHFACHMessage : Sequence {
class BCCHFACHMessage : public Sequence {
private:
static const void *itemsInfo[1];
static bool itemsPres[1];
......@@ -129,10 +201,10 @@ public:
static const Info theInfo;
BCCHFACHMessage(): Sequence(&theInfo) {}
void setMessage(const BCCHFACHMessageType& Message) { *static_cast<BCCHFACHMessageType*>(items[0]) = Message; }
void setMessage(const BCCHFACHMessageType& message) { *static_cast<BCCHFACHMessageType*>(items[0]) = message; }
};
class BCCHBCHMessage : Sequence {
class BCCHBCHMessage : public Sequence {
private:
static const void *itemsInfo[1];
static bool itemsPres[1];
......@@ -140,18 +212,36 @@ public:
static const Info theInfo;
BCCHBCHMessage(): Sequence(&theInfo) {}
void setMessage(const SystemInformationBCH& Message) { *static_cast<SystemInformationBCH*>(items[0]) = Message; }
void setMessage(const SystemInformationBCH& message) { *static_cast<SystemInformationBCH*>(items[0]) = message; }
};
class MCCHMessageType : Choice {
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[1];
static const void *choicesInfo[16];
public:
static const Info theInfo;
MCCHMessageType(): Choice(&theInfo) {}
};
class MCCHMessage : Sequence {
class MCCHMessage : public Sequence {
private:
static const void *itemsInfo[1];
static bool itemsPres[1];
......@@ -159,18 +249,24 @@ public:
static const Info theInfo;
MCCHMessage(): Sequence(&theInfo) {}
void setMessage(const MCCHMessageType& Message) { *static_cast<MCCHMessageType*>(items[0]) = Message; }
void setMessage(const MCCHMessageType& message) { *static_cast<MCCHMessageType*>(items[0]) = message; }
};
class MSCHMessageType : Choice {
typedef Null MSCHMessageTypeSpare3;
typedef Null MSCHMessageTypeSpare2;
typedef Null MSCHMessageTypeSpare1;
class MSCHMessageType : public Choice {
private:
static const void *choicesInfo[1];
static const void *choicesInfo[4];
public:
static const Info theInfo;
MSCHMessageType(): Choice(&theInfo) {}
};
class MSCHMessage : Sequence {
class MSCHMessage : public Sequence {
private:
static const void *itemsInfo[1];
static bool itemsPres[1];
......@@ -178,7 +274,7 @@ public:
static const Info theInfo;
MSCHMessage(): Sequence(&theInfo) {}
void setMessage(const MSCHMessageType& Message) { *static_cast<MSCHMessageType*>(items[0]) = Message; }
void setMessage(const MSCHMessageType& message) { *static_cast<MSCHMessageType*>(items[0]) = message; }
};
}
......
Internode-definitions DEFINITIONS AUTOMATIC TAGS ::=
PDU-definitions DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
--**************************************************************
--
-- IE parameter types from other modules
--
--**************************************************************
IMPORTS
......@@ -494,23 +502,276 @@ FROM InformationElements
maxURNTI-Group
FROM Constant-definitions;
-- ***************************************************
--
-- MBMS CURRENT CELL PTM RB INFORMATION
-- ACTIVE SET UPDATE (FDD only)
--
-- ***************************************************
Digit ::= INTEGER (0..9)
ActiveSetUpdate ::= CHOICE {
r3 SEQUENCE {
activeSetUpdate-r3 ActiveSetUpdate-r3-IEs,
laterNonCriticalExtensions SEQUENCE {
-- Container for additional R99 extensions
activeSetUpdate-r3-add-ext BIT STRING OPTIONAL,
v4b0NonCriticalExtensions SEQUENCE {
activeSetUpdate-v4b0ext ActiveSetUpdate-v4b0ext-IEs,
v590NonCriticalExtensions SEQUENCE {
activeSetUpdate-v590ext ActiveSetUpdate-v590ext-IEs,
v690NonCriticalExtensions SEQUENCE {
activeSetUpdate-v690ext ActiveSetUpdate-v690ext-IEs,
nonCriticalExtensions SEQUENCE {} OPTIONAL
} OPTIONAL
} OPTIONAL
} OPTIONAL
} OPTIONAL
},
later-than-r3 SEQUENCE {
rrc-TransactionIdentifier RRC-TransactionIdentifier,
criticalExtensions CHOICE {
r6 SEQUENCE {
activeSetUpdate-r6 ActiveSetUpdate-r6-IEs,
activeSetUpdate-r6-add-ext BIT STRING OPTIONAL,
v6b0NonCriticalExtensions SEQUENCE {
activeSetUpdate-v6b0ext ActiveSetUpdate-v6b0ext-IEs,
nonCriticalExtensions SEQUENCE {} OPTIONAL
} OPTIONAL
},
criticalExtensions CHOICE {
r7 SEQUENCE {
activeSetUpdate-r7 ActiveSetUpdate-r7-IEs,
activeSetUpdate-r7-add-ext BIT STRING OPTIONAL,
v780NonCriticalExtensions SEQUENCE {
activeSetUpdate-v780ext ActiveSetUpdate-v780ext-IEs,
v7f0NonCriticalExtensions SEQUENCE {
activeSetUdpate-v7f0ext ActiveSetUpdate-v7f0ext-IEs,
v7g0NonCriticalExtensions SEQUENCE {
activeSetUdpate-v7g0ext ActiveSetUpdate-v7g0ext-IEs,
nonCriticalExtensions SEQUENCE {} OPTIONAL
} OPTIONAL
} OPTIONAL
} OPTIONAL
},
criticalExtensions CHOICE {
r8 SEQUENCE {
activeSetUpdate-r8 ActiveSetUpdate-r8-IEs,
-- Container for adding non critical extensions after freezing REL-9
activeSetUpdate-r8-add-ext BIT STRING OPTIONAL,
v890NonCriticalExtensions SEQUENCE {
activeSetUpdate-v890ext ActiveSetUpdate-v890ext-IEs,
v7g0NonCriticalExtensions SEQUENCE {
activeSetUpdate-v7g0ext ActiveSetUpdate-v7g0ext-IEs,
nonCriticalExtensions SEQUENCE {} OPTIONAL
} OPTIONAL
} OPTIONAL
},
criticalExtensions CHOICE {
r9 SEQUENCE {
activeSetUpdate-r9 ActiveSetUpdate-r9-IEs,
-- Container for adding non critical extensions after freezing REL-10
activeSetUpdate-r9-add-ext BIT STRING OPTIONAL,
v950NonCriticalExtensions SEQUENCE {
activeSetUpdate-v950ext ActiveSetUpdate-v950ext-IEs,
nonCriticalExtensions SEQUENCE {} OPTIONAL
} OPTIONAL
},
criticalExtensions SEQUENCE {}
}
}
}
}
}
}
ActiveSetUpdate-r3-IEs ::= SEQUENCE {
-- User equipment IEs
rrc-TransactionIdentifier RRC-TransactionIdentifier,
-- dummy and dummy2 are not used in this version of the specification, they should
-- not be sent and if received they should be ignored.
dummy IntegrityProtectionModeInfo OPTIONAL,
dummy2 CipheringModeInfo OPTIONAL,
activationTime ActivationTime OPTIONAL,
newU-RNTI U-RNTI OPTIONAL,
-- Core network IEs
cn-InformationInfo CN-InformationInfo OPTIONAL,
-- Radio bearer IEs
-- dummy3 is not used in this version of the specification, it should
-- not be sent and if received it should be ignored.
dummy3 DL-CounterSynchronisationInfo OPTIONAL,
-- Physical channel IEs
maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL,
rl-AdditionInformationList RL-AdditionInformationList OPTIONAL,
rl-RemovalInformationList RL-RemovalInformationList OPTIONAL,
tx-DiversityMode TX-DiversityMode OPTIONAL,
-- dummy4 is not used in this version of the specification, it should
-- not be sent and if received it should be ignored.
dummy4 SSDT-Information OPTIONAL
}
ActiveSetUpdate-v4b0ext-IEs ::= SEQUENCE {
-- Physical channel IEs
-- dummy is not used in this version of the specification, it should
-- not be sent and if received it should be ignored.
dummy SSDT-UL OPTIONAL,
-- The order of the RLs in IE cell-id-PerRL-List is the same as
-- in IE RL-AdditionInformationList included in this message
cell-id-PerRL-List CellIdentity-PerRL-List OPTIONAL
}
ActiveSetUpdate-v590ext-IEs ::= SEQUENCE {
-- Physical channel IEs
dpc-Mode DPC-Mode,
dl-TPC-PowerOffsetPerRL-List DL-TPC-PowerOffsetPerRL-List OPTIONAL
}
ActiveSetUpdate-v690ext-IEs ::= SEQUENCE {
-- Core network IEs
primary-plmn-Identity PLMN-Identity OPTIONAL
}
ActiveSetUpdate-r6-IEs ::= SEQUENCE {
-- User equipment IEs
activationTime ActivationTime OPTIONAL,
newU-RNTI U-RNTI OPTIONAL,
newH-RNTI H-RNTI OPTIONAL,
newPrimary-E-RNTI E-RNTI OPTIONAL,
newSecondary-E-RNTI E-RNTI OPTIONAL,
-- Core network IEs
cn-InformationInfo CN-InformationInfo-r6 OPTIONAL,
-- Physical channel IEs
maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL,
rl-AdditionInformationList RL-AdditionInformationList-r6 OPTIONAL,
rl-RemovalInformationList RL-RemovalInformationList OPTIONAL,
tx-DiversityMode TX-DiversityMode OPTIONAL,
dpc-Mode DPC-Mode OPTIONAL,
serving-HSDSCH-CellInformation Serving-HSDSCH-CellInformation OPTIONAL,
e-dch-ReconfigurationInfo E-DCH-ReconfigurationInfo OPTIONAL
}
ActiveSetUpdate-v6b0ext-IEs ::= SEQUENCE {
-- Physical channel IEs
rl-AdditionInformation-list-v6b0ext RL-AdditionInformation-list-v6b0ext OPTIONAL
}
ActiveSetUpdate-r7-IEs ::= SEQUENCE {
-- User equipment IEs
activationTime ActivationTime OPTIONAL,
newU-RNTI U-RNTI OPTIONAL,
newH-RNTI H-RNTI OPTIONAL,
newPrimary-E-RNTI E-RNTI OPTIONAL,
newSecondary-E-RNTI E-RNTI OPTIONAL,
-- Core network IEs
cn-InformationInfo CN-InformationInfo-r6 OPTIONAL,
-- Physical channel IEs
dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL,
dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL,
hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL,
mimoParameters MIMO-Parameters-r7 OPTIONAL,
maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL,
rl-AdditionInformationList RL-AdditionInformationList-r7 OPTIONAL,
rl-RemovalInformationList RL-RemovalInformationList OPTIONAL,
tx-DiversityMode TX-DiversityMode OPTIONAL,
dpc-Mode DPC-Mode OPTIONAL,
serving-HSDSCH-CellInformation Serving-HSDSCH-CellInformation-r7 OPTIONAL,
e-dch-ReconfigurationInfo E-DCH-ReconfigurationInfo-r7 OPTIONAL,
ul-16QAM-Config UL-16QAM-Config OPTIONAL,
e-dch-ReconfInfoSameCell E-DCH-RL-InfoSameServingCell OPTIONAL,
e-TFC-Boost-Info E-TFC-Boost-Info-r7 OPTIONAL,
e-DPDCH-PowerInterpolation E-DPDCH-PowerInterpolation OPTIONAL
}
ActiveSetUpdate-v780ext-IEs ::= SEQUENCE {
-- Physical channel IEs
hs-DSCH-TBSizeTable HS-DSCH-TBSizeTable OPTIONAL
}
MCC ::= SEQUENCE (SIZE (3)) OF
Digit
ActiveSetUpdate-v7f0ext-IEs ::= SEQUENCE {
-- Physical channel IEs
mimoParameters MIMO-Parameters-v7f0ext OPTIONAL
}
MNC ::= SEQUENCE (SIZE (2..3)) OF
Digit
ActiveSetUpdate-v7g0ext-IEs ::= SEQUENCE {
-- Physical channel IEs
mimoParameters MIMO-Parameters-v7g0ext OPTIONAL
}
ActiveSetUpdate-r8-IEs ::= SEQUENCE {
-- User equipment IEs
activationTime ActivationTime OPTIONAL,
newU-RNTI U-RNTI OPTIONAL,
newH-RNTI H-RNTI OPTIONAL,
newPrimary-E-RNTI E-RNTI OPTIONAL,
newSecondary-E-RNTI E-RNTI OPTIONAL,
-- Core network IEs
cn-InformationInfo CN-InformationInfo-r6 OPTIONAL,
-- Physical channel IEs
dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL,
dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL,
hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL,
mimoParameters MIMO-Parameters-r8 OPTIONAL,
maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL,
rl-AdditionInformationList RL-AdditionInformationList-r8 OPTIONAL,
servingCellChangeParameters ServingCellChangeParameters OPTIONAL,
rl-RemovalInformationList RL-RemovalInformationList OPTIONAL,
tx-DiversityMode TX-DiversityMode OPTIONAL,
dpc-Mode DPC-Mode OPTIONAL,
serving-HSDSCH-CellInformation Serving-HSDSCH-CellInformation-r8 OPTIONAL,
e-dch-ReconfigurationInfo E-DCH-ReconfigurationInfo-r7 OPTIONAL,
ul-16QAM-Config UL-16QAM-Config OPTIONAL,
e-dch-ReconfInfoSameCell E-DCH-RL-InfoSameServingCell OPTIONAL,
e-TFC-Boost-Info E-TFC-Boost-Info-r7 OPTIONAL,
e-DPDCH-PowerInterpolation E-DPDCH-PowerInterpolation OPTIONAL,
dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD OPTIONAL
}
ActiveSetUpdate-v890ext-IEs ::= SEQUENCE {
-- Physical channel IEs
dl-SecondaryCellInfoFDD-v890ext DL-SecondaryCellInfoFDD-v890ext OPTIONAL,
mimoParameters MIMO-Parameters-v7f0ext OPTIONAL,
rl-AdditionInformationList RL-AdditionInformationList-v890ext OPTIONAL
}
ActiveSetUpdate-r9-IEs ::= SEQUENCE {
-- User equipment IEs
activationTime ActivationTime OPTIONAL,
newU-RNTI U-RNTI OPTIONAL,
newH-RNTI H-RNTI OPTIONAL,
newPrimary-E-RNTI E-RNTI OPTIONAL,
newSecondary-E-RNTI E-RNTI OPTIONAL,
-- Core network IEs
cn-InformationInfo CN-InformationInfo-r6 OPTIONAL,
-- Physical channel IEs
dtx-drx-TimingInfo DTX-DRX-TimingInfo-r7 OPTIONAL,
dtx-drx-Info DTX-DRX-Info-r7 OPTIONAL,
hs-scch-LessInfo HS-SCCH-LessInfo-r7 OPTIONAL,
mimoParameters MIMO-Parameters-r9 OPTIONAL,
maxAllowedUL-TX-Power MaxAllowedUL-TX-Power OPTIONAL,
ul-SecondaryCellInfoFDD UL-SecondaryCellInfoFDD OPTIONAL,
e-dch-ReconfigurationInfo-SecULFrequency
E-DCH-ReconfigurationInfo-SecULFrequency OPTIONAL,
rl-AdditionInformationList RL-AdditionInformationList-r9 OPTIONAL,
rl-AdditionInformationList-SecULFreq
RL-AdditionInformationList-SecULFreq OPTIONAL,
servingCellChangeParameters ServingCellChangeParameters OPTIONAL,
rl-RemovalInformationList RL-RemovalInformationList OPTIONAL,
rl-RemovalInformationList-SecULFreq
RL-RemovalInformationList-SecULFreq OPTIONAL,
tx-DiversityMode TX-DiversityMode OPTIONAL,
dpc-Mode DPC-Mode OPTIONAL,
serving-HSDSCH-CellInformation Serving-HSDSCH-CellInformation-r9 OPTIONAL,
e-dch-ReconfigurationInfo E-DCH-ReconfigurationInfo-r7 OPTIONAL,
ul-16QAM-Config UL-16QAM-Config OPTIONAL,
e-dch-ReconfInfoSameCell E-DCH-RL-InfoSameServingCell OPTIONAL,
e-TFC-Boost-Info E-TFC-Boost-Info-r7 OPTIONAL,
e-DPDCH-PowerInterpolation E-DPDCH-PowerInterpolation OPTIONAL,
dl-SecondaryCellInfoFDD DL-SecondaryCellInfoFDD-r9 OPTIONAL
}
PLMN-Identity ::= SEQUENCE {
mcc MCC,
mnc MNC
ActiveSetUpdate-v950ext-IEs ::= SEQUENCE {
-- Physical channel IEs
secondaryCellMimoParameters SecondaryCellMIMOparametersFDD-v950ext OPTIONAL,
rl-AdditionInformationList RL-AdditionInformationList-v950ext OPTIONAL
}
END
......@@ -45,7 +45,7 @@ def parsebracket(asnobj, string, cursor):
openbrackets = 0
objs = list()
for i in range(0, len(string)):
if string[i] == ',' and '{' == 0 and len(objstring) > 0:
if string[i] == ',' and openbrackets == 0 and len(objstring) > 0:
childobj = parsestring(objstring.strip())
objs.append(childobj)
childobj.parent = asnobj
......@@ -133,7 +133,7 @@ def parsetype(asnobj, string):
elif type == 'OCTET STRING':
asnobj.type = "OctetString"
elif type == 'SEQUENCE':
if 'OF' in string and '{' not in string:
if ' OF ' in string and '{' not in string:
asnobj.type = "SequenceOf"
else:
asnobj.type = "Sequence"
......@@ -205,7 +205,7 @@ def parsestring(string):
else:
words = string.split(' ', 1)
asnobj.name = words[0].replace("-", "_").strip()
#print string + "\n"
if len(words) > 1:
parsetype(asnobj, words[1])
if asnobj.type != "Enumerated" and asnobj.constrainttype != "CONSTANT":
......@@ -243,7 +243,7 @@ def parsestring(string):
if asnobj.type == "SequenceOf":
objs = list()
objstring = words[1].split('OF')[1]
objstring = words[1].split(' OF ')[1]
objstring = asnobj.name + "Item " + objstring
obj = parsestring(objstring.strip())
......
此差异已折叠。
......@@ -5,6 +5,9 @@ asnobjs = list()
imports = list()
includes = list()
def firstlower(string):
return string[0].lower() + string[1:]
def checkandhandledeps(asnobj, hdrfile, srcfile):
retval = 0
for i in range(0, len(asnobj.objs)):
......@@ -39,9 +42,9 @@ def writeobject(asnobj, hdrfile, srcfile):
objs.append(obj)
asnobj.objs = objs
#print asnobj.name
## if checkandhandledeps(asnobj, hdrfile, srcfile) != 0:
## return
## hdrfile.write("typedef " + asnobj.type + " " + asnobj.name + ";\n")
if checkandhandledeps(asnobj, hdrfile, srcfile) != 0:
return
hdrfile.write("typedef " + asnobj.type + " " + asnobj.name + ";\n")
# Null and Boolean
......@@ -50,6 +53,7 @@ def writeobject(asnobj, hdrfile, srcfile):
asnobj.type = asnobj.name
# Constraint types
if asnobj.type in constrainttypes:
if asnobj.constrainttype == "CONSTANT":
hdrfile.write("#define " + asnobj.name + " " + str(asnobj.value) + "\n")
......@@ -62,7 +66,7 @@ def writeobject(asnobj, hdrfile, srcfile):
if asnobj.upperlimit != '':
hdrfile.write(", " + asnobj.upperlimit)
hdrfile.write("> " + asnobj.name + ";\n")
asnobj.type = asnobj.name
asnobj.type = asnobj.name
# Enumerated
......@@ -83,7 +87,7 @@ def writeobject(asnobj, hdrfile, srcfile):
asnobj.type = asnobj.name
if checkandhandledeps(asnobj, hdrfile, srcfile) != 0:
return
hdrfile.write("class " + asnobj.name + " : Sequence {\n" +
hdrfile.write("class " + asnobj.name + " : public Sequence {\n" +
"private:\n" +
"\tstatic const void *itemsInfo[" + str(len(asnobj.objs)) + "];\n" +
"\tstatic bool itemsPres[" + str(len(asnobj.objs)) + "];\n" +
......@@ -92,7 +96,7 @@ def writeobject(asnobj, hdrfile, srcfile):
"\t" + asnobj.name + "(): Sequence(&theInfo) {}\n\n")
for j in range(0, len(asnobj.objs)):
obj = asnobj.objs[j]
hdrfile.write("\tvoid set" + obj.name + "(const " + obj.type + "& " + obj.name + ") { *static_cast<" + obj.type + "*>(items[" + str(j) + "]) = " + obj.name + "; }\n")
hdrfile.write("\tvoid set" + obj.name + "(const " + obj.type + "& " + firstlower(obj.name) + ") { *static_cast<" + obj.type + "*>(items[" + str(j) + "]) = " + firstlower(obj.name) + "; }\n")
hdrfile.write("};\n")
srcfile.write("const void *" + asnobj.name + "::itemsInfo[" + str(len(asnobj.objs)) + "] = {\n")
for j in range(0, len(asnobj.objs)):
......@@ -136,7 +140,7 @@ def writeobject(asnobj, hdrfile, srcfile):
asnobj.type = asnobj.name
if checkandhandledeps(asnobj, hdrfile, srcfile) != 0:
return
hdrfile.write("class " + asnobj.name + " : Choice {\n" +
hdrfile.write("class " + asnobj.name + " : public Choice {\n" +
"private:\n" +
"\tstatic const void *choicesInfo[" + str(len(asnobj.objs)) + "];\n" +
"public:\n" +
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册