Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Achou.Wang
4Gsim
提交
e7af4f28
4
4Gsim
项目概览
Achou.Wang
/
4Gsim
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
4
4Gsim
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
e7af4f28
编写于
8月 23, 2012
作者:
C
calincerchez
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
working on parser
上级
dec30186
变更
17
展开全部
隐藏空白更改
内联
并排
Showing
17 changed file
with
75475 addition
and
29109 deletion
+75475
-29109
src/linklayer/lte/rrc/RRC.cc
src/linklayer/lte/rrc/RRC.cc
+14
-2
src/linklayer/lte/rrc/message/Class-definitions.asn
src/linklayer/lte/rrc/message/Class-definitions.asn
+0
-0
src/linklayer/lte/rrc/message/Constant-definitions.asn
src/linklayer/lte/rrc/message/Constant-definitions.asn
+0
-0
src/linklayer/lte/rrc/message/InformationElements.asn
src/linklayer/lte/rrc/message/InformationElements.asn
+0
-0
src/linklayer/lte/rrc/message/PDU-definitions.asn
src/linklayer/lte/rrc/message/PDU-definitions.asn
+0
-0
src/linklayer/lte/rrc/message/RRCClassDefinitions.cc
src/linklayer/lte/rrc/message/RRCClassDefinitions.cc
+188
-20
src/linklayer/lte/rrc/message/RRCClassDefinitions.h
src/linklayer/lte/rrc/message/RRCClassDefinitions.h
+130
-34
src/linklayer/lte/rrc/message/RRCInformationElements.cc
src/linklayer/lte/rrc/message/RRCInformationElements.cc
+36515
-11782
src/linklayer/lte/rrc/message/RRCInformationElements.h
src/linklayer/lte/rrc/message/RRCInformationElements.h
+32089
-10991
src/linklayer/lte/rrc/message/RRCPDUDefinitions.cc
src/linklayer/lte/rrc/message/RRCPDUDefinitions.cc
+149
-149
src/linklayer/lte/rrc/message/RRCPDUDefinitions.h
src/linklayer/lte/rrc/message/RRCPDUDefinitions.h
+5656
-5656
src/linklayer/lte/rrc/message/test.asn.bk
src/linklayer/lte/rrc/message/test.asn.bk
+271
-10
src/util/asn/parser/asnparser.py
src/util/asn/parser/asnparser.py
+4
-4
src/util/asn/parser/asnparser.py.bk
src/util/asn/parser/asnparser.py.bk
+448
-454
src/util/asn/parser/asnparser.pyc
src/util/asn/parser/asnparser.pyc
+0
-0
src/util/asn/parser/asnwriter.py
src/util/asn/parser/asnwriter.py
+11
-7
src/util/asn/parser/asnwriter.pyc
src/util/asn/parser/asnwriter.pyc
+0
-0
未找到文件。
src/linklayer/lte/rrc/RRC.cc
浏览文件 @
e7af4f28
...
...
@@ -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);
...
...
src/linklayer/lte/rrc/message/Class-definitions.asn
.bk
→
src/linklayer/lte/rrc/message/Class-definitions.asn
浏览文件 @
e7af4f28
文件已移动
src/linklayer/lte/rrc/message/Constant-definitions.asn
.bk
→
src/linklayer/lte/rrc/message/Constant-definitions.asn
浏览文件 @
e7af4f28
文件已移动
src/linklayer/lte/rrc/message/InformationElements.asn
.bk
→
src/linklayer/lte/rrc/message/InformationElements.asn
浏览文件 @
e7af4f28
文件已移动
src/linklayer/lte/rrc/message/PDU-definitions.asn
.bk
→
src/linklayer/lte/rrc/message/PDU-definitions.asn
浏览文件 @
e7af4f28
文件已移动
src/linklayer/lte/rrc/message/RRCClassDefinitions.cc
浏览文件 @
e7af4f28
...
...
@@ -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
[
1
6
]
=
{
&
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
]
=
{
...
...
src/linklayer/lte/rrc/message/RRCClassDefinitions.h
浏览文件 @
e7af4f28
...
...
@@ -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
])
=
M
essage
;
}
void
setMessage
(
const
PCCHMessageType
&
message
)
{
*
static_cast
<
PCCHMessageType
*>
(
items
[
0
])
=
m
essage
;
}
};
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
])
=
M
essage
;
}
void
setMessage
(
const
DLSHCCHMessageType
&
message
)
{
*
static_cast
<
DLSHCCHMessageType
*>
(
items
[
0
])
=
m
essage
;
}
};
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
])
=
M
essage
;
}
void
setMessage
(
const
ULSHCCHMessageType
&
message
)
{
*
static_cast
<
ULSHCCHMessageType
*>
(
items
[
0
])
=
m
essage
;
}
};
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
])
=
M
essage
;
}
void
setMessage
(
const
BCCHFACHMessageType
&
message
)
{
*
static_cast
<
BCCHFACHMessageType
*>
(
items
[
0
])
=
m
essage
;
}
};
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
])
=
M
essage
;
}
void
setMessage
(
const
SystemInformationBCH
&
message
)
{
*
static_cast
<
SystemInformationBCH
*>
(
items
[
0
])
=
m
essage
;
}
};
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
[
1
6
];
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
])
=
M
essage
;
}
void
setMessage
(
const
MCCHMessageType
&
message
)
{
*
static_cast
<
MCCHMessageType
*>
(
items
[
0
])
=
m
essage
;
}
};
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
])
=
M
essage
;
}
void
setMessage
(
const
MSCHMessageType
&
message
)
{
*
static_cast
<
MSCHMessageType
*>
(
items
[
0
])
=
m
essage
;
}
};
}
...
...
src/linklayer/lte/rrc/message/RRCInformationElements.cc
浏览文件 @
e7af4f28
此差异已折叠。
点击以展开。
src/linklayer/lte/rrc/message/RRCInformationElements.h
浏览文件 @
e7af4f28
此差异已折叠。
点击以展开。
src/linklayer/lte/rrc/message/RRCPDUDefinitions.cc
浏览文件 @
e7af4f28
此差异已折叠。
点击以展开。
src/linklayer/lte/rrc/message/RRCPDUDefinitions.h
浏览文件 @
e7af4f28
此差异已折叠。
点击以展开。
src/linklayer/lte/rrc/message/test.asn
→
src/linklayer/lte/rrc/message/test.asn
.bk
浏览文件 @
e7af4f28
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
src/util/asn/parser/asnparser.py
浏览文件 @
e7af4f28
...
...
@@ -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
())
...
...
src/util/asn/parser/asnparser.py.bk
浏览文件 @
e7af4f28
此差异已折叠。
点击以展开。
src/util/asn/parser/asnparser.pyc
浏览文件 @
e7af4f28
无法预览此类型文件
src/util/asn/parser/asnwriter.py
浏览文件 @
e7af4f28
...
...
@@ -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
"
+
"
\t
static const void *itemsInfo["
+
str
(
len
(
asnobj
.
objs
))
+
"];
\n
"
+
"
\t
static 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
(
"
\t
void set"
+
obj
.
name
+
"(const "
+
obj
.
type
+
"& "
+
obj
.
name
+
") { *static_cast<"
+
obj
.
type
+
"*>(items["
+
str
(
j
)
+
"]) = "
+
obj
.
name
+
"; }
\n
"
)
hdrfile
.
write
(
"
\t
void 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
"
+
"
\t
static const void *choicesInfo["
+
str
(
len
(
asnobj
.
objs
))
+
"];
\n
"
+
"public:
\n
"
+
...
...
src/util/asn/parser/asnwriter.pyc
浏览文件 @
e7af4f28
无法预览此类型文件
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录