Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Achou.Wang
4Gsim
提交
8276971b
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 搜索 >>
提交
8276971b
编写于
8月 19, 2012
作者:
C
calin
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
working on parser
上级
74d1f182
变更
10
展开全部
隐藏空白更改
内联
并排
Showing
10 changed file
with
6035 addition
and
9130 deletion
+6035
-9130
src/applications/s1ap/message/S1APContainer.h
src/applications/s1ap/message/S1APContainer.h
+2
-2
src/linklayer/lte/rrc/message/RRCConstantDefinitions.cc
src/linklayer/lte/rrc/message/RRCConstantDefinitions.cc
+0
-154
src/linklayer/lte/rrc/message/RRCConstantDefinitions.h
src/linklayer/lte/rrc/message/RRCConstantDefinitions.h
+153
-157
src/linklayer/lte/rrc/message/RRCInformationElements.cc
src/linklayer/lte/rrc/message/RRCInformationElements.cc
+2240
-5298
src/linklayer/lte/rrc/message/RRCInformationElements.h
src/linklayer/lte/rrc/message/RRCInformationElements.h
+3464
-3465
src/linklayer/lte/rrc/message/RRCInternodeDefinitions.cc
src/linklayer/lte/rrc/message/RRCInternodeDefinitions.cc
+37
-0
src/linklayer/lte/rrc/message/RRCInternodeDefinitions.h
src/linklayer/lte/rrc/message/RRCInternodeDefinitions.h
+35
-0
src/linklayer/lte/rrc/message/test.asn
src/linklayer/lte/rrc/message/test.asn
+48
-11
src/util/asn/ASNTypes.h
src/util/asn/ASNTypes.h
+6
-23
src/util/asn/parser/asnparser.py
src/util/asn/parser/asnparser.py
+50
-20
未找到文件。
src/applications/s1ap/message/S1APContainer.h
浏览文件 @
8276971b
...
...
@@ -38,12 +38,12 @@ public:
typedef
ProtocolIeField
ProtocolIeSingleContainer
;
typedef
SequenceOf
<
ProtocolIeField
,
SizeConstraint
<
CONSTRAINED
,
0
,
maxProtocolIEs
>
>
ProtocolIeContainer
;
typedef
SequenceOf
<
ProtocolIeField
,
CONSTRAINED
,
0
,
maxProtocolIEs
>
ProtocolIeContainer
;
OpenType
*
findValue
(
ProtocolIeContainer
*
container
,
unsigned
short
id
);
typedef
ProtocolIeField
ProtocolExtField
;
typedef
SequenceOf
<
ProtocolExtField
,
SizeConstraint
<
CONSTRAINED
,
0
,
maxProtocolIEs
>
>
ProtocolExtContainer
;
typedef
SequenceOf
<
ProtocolExtField
,
CONSTRAINED
,
0
,
maxProtocolIEs
>
ProtocolExtContainer
;
#endif
/* S1APCONTAINER_H_ */
src/linklayer/lte/rrc/message/RRCConstantDefinitions.cc
浏览文件 @
8276971b
...
...
@@ -16,158 +16,4 @@
//
#include "RRCConstantDefinitions.h"
const
IntegerBase
maxCNdomains
(
4
);
src/linklayer/lte/rrc/message/RRCConstantDefinitions.h
浏览文件 @
8276971b
...
...
@@ -20,314 +20,310 @@
#include "ASNTypes.h"
#define hiPDSCHidentities 64
const
IntegerBase
hiPDSCHidentities
(
64
);
#define hiPUSCHidentities 64
const
IntegerBase
hiPUSCHidentities
(
64
);
#define hiRM 256
const
IntegerBase
hiRM
(
256
);
#define maxAC 16
const
IntegerBase
maxAC
(
16
);
#define maxAdditionalMeas 4
const
IntegerBase
maxAdditionalMeas
(
4
);
#define maxASC 8
const
IntegerBase
maxASC
(
8
);
#define maxASCmap 7
const
IntegerBase
maxASCmap
(
7
);
#define maxASCpersist 6
const
IntegerBase
maxASCpersist
(
6
);
#define maxCCTrCH 8
const
IntegerBase
maxCCTrCH
(
8
);
#define maxCellMeas 32
const
IntegerBase
maxCellMeas
(
32
);
#define maxCellMeasOnSecULFreq 32
const
IntegerBase
maxCellMeasOnSecULFreq
(
32
);
#define maxCellMeas_1 31
const
IntegerBase
maxCellMeas_1
(
31
);
#define maxCellMeasOnSecULFreq_1 31
const
IntegerBase
maxCellMeasOnSecULFreq_1
(
31
);
#define maxCNdomains 4
extern
const
IntegerBase
maxCNdomains
;
#define maxCommonHRNTI 4
const
IntegerBase
maxCommonHRNTI
(
4
);
#define maxCommonQueueID 2
const
IntegerBase
maxCommonQueueID
(
2
);
#define maxCPCHsets 16
const
IntegerBase
maxCPCHsets
(
16
);
#define maxDedicatedCSGFreq 4
const
IntegerBase
maxDedicatedCSGFreq
(
4
);
#define maxDPCH_DLchan 8
const
IntegerBase
maxDPCH_DLchan
(
8
);
#define maxDPDCH_UL 6
const
IntegerBase
maxDPDCH_UL
(
6
);
#define maxDRACclasses 8
const
IntegerBase
maxDRACclasses
(
8
);
#define maxE_DCHMACdFlow 8
const
IntegerBase
maxE_DCHMACdFlow
(
8
);
#define maxE_DCHMACdFlow_1 7
const
IntegerBase
maxE_DCHMACdFlow_1
(
7
);
#define maxEUTRACellPerFreq 16
const
IntegerBase
maxEUTRACellPerFreq
(
16
);
#define maxEUTRATargetFreqs 8
const
IntegerBase
maxEUTRATargetFreqs
(
8
);
#define maxEDCHRL 4
const
IntegerBase
maxEDCHRL
(
4
);
#define maxEDCHRL_1 3
const
IntegerBase
maxEDCHRL_1
(
3
);
#define maxEDCHs 32
const
IntegerBase
maxEDCHs
(
32
);
#define maxEDCHTxPattern_TDD128 4
const
IntegerBase
maxEDCHTxPattern_TDD128
(
4
);
#define maxEDCHTxPattern_TDD128_1 3
const
IntegerBase
maxEDCHTxPattern_TDD128_1
(
3
);
#define maxERNTIgroup 32
const
IntegerBase
maxERNTIgroup
(
32
);
#define maxERNTIperGroup 2
const
IntegerBase
maxERNTIperGroup
(
2
);
#define maxERUCCH 256
const
IntegerBase
maxERUCCH
(
256
);
#define maxFACHPCH 8
const
IntegerBase
maxFACHPCH
(
8
);
#define maxFreq 8
const
IntegerBase
maxFreq
(
8
);
#define maxFreqBandsEUTRA 16
const
IntegerBase
maxFreqBandsEUTRA
(
16
);
#define maxFreqBandsFDD 8
const
IntegerBase
maxFreqBandsFDD
(
8
);
#define maxFreqBandsFDD_ext 15
const
IntegerBase
maxFreqBandsFDD_ext
(
15
);
#define maxFreqBandsTDD 4
const
IntegerBase
maxFreqBandsTDD
(
4
);
#define maxFreqBandsTDD_ext 16
const
IntegerBase
maxFreqBandsTDD_ext
(
16
);
#define maxFreqBandsGSM 16
const
IntegerBase
maxFreqBandsGSM
(
16
);
#define maxGANSS 8
const
IntegerBase
maxGANSS
(
8
);
#define maxGANSS_1 7
const
IntegerBase
maxGANSS_1
(
7
);
#define maxGANSSSat 64
const
IntegerBase
maxGANSSSat
(
64
);
#define maxGANSSSat_1 63
const
IntegerBase
maxGANSSSat_1
(
63
);
#define maxGERAN_SI 8
const
IntegerBase
maxGERAN_SI
(
8
);
#define maxGSMTargetCells 32
const
IntegerBase
maxGSMTargetCells
(
32
);
#define maxHNBNameSize 48
const
IntegerBase
maxHNBNameSize
(
48
);
#define maxHProcesses 8
const
IntegerBase
maxHProcesses
(
8
);
#define maxHS_SCCHLessTrBlk 4
const
IntegerBase
maxHS_SCCHLessTrBlk
(
4
);
#define maxHSDSCHTBIndex 64
const
IntegerBase
maxHSDSCHTBIndex
(
64
);
#define maxHSDSCHTBIndex_tdd384 512
const
IntegerBase
maxHSDSCHTBIndex_tdd384
(
512
);
#define maxHSSCCHs 4
const
IntegerBase
maxHSSCCHs
(
4
);
#define maxHSSCCHs_1 3
const
IntegerBase
maxHSSCCHs_1
(
3
);
#define maxHSSICH_TDD128 4
const
IntegerBase
maxHSSICH_TDD128
(
4
);
#define maxHSSICH_TDD128_1 3
const
IntegerBase
maxHSSICH_TDD128_1
(
3
);
#define maxInterSysMessages 4
const
IntegerBase
maxInterSysMessages
(
4
);
#define maxLoCHperRLC 2
const
IntegerBase
maxLoCHperRLC
(
2
);
#define maxMAC_d_PDUsizes 8
const
IntegerBase
maxMAC_d_PDUsizes
(
8
);
#define maxMBMS_CommonCCTrCh 32
const
IntegerBase
maxMBMS_CommonCCTrCh
(
32
);
#define maxMBMS_CommonPhyCh 32
const
IntegerBase
maxMBMS_CommonPhyCh
(
32
);
#define maxMBMS_CommonRB 32
const
IntegerBase
maxMBMS_CommonRB
(
32
);
#define maxMBMS_CommonTrCh 32
const
IntegerBase
maxMBMS_CommonTrCh
(
32
);
#define maxMBMS_Freq 4
const
IntegerBase
maxMBMS_Freq
(
4
);
#define maxMBMS_L1CP 4
const
IntegerBase
maxMBMS_L1CP
(
4
);
#define maxMBMSservCount 8
const
IntegerBase
maxMBMSservCount
(
8
);
#define maxMBMSservModif 32
const
IntegerBase
maxMBMSservModif
(
32
);
#define maxMBMSservSched 16
const
IntegerBase
maxMBMSservSched
(
16
);
#define maxMBMSservSelect 8
const
IntegerBase
maxMBMSservSelect
(
8
);
#define maxMBMSservUnmodif 64
const
IntegerBase
maxMBMSservUnmodif
(
64
);
#define maxMBMSTransmis 4
const
IntegerBase
maxMBMSTransmis
(
4
);
#define maxMBSFNClusters 16
const
IntegerBase
maxMBSFNClusters
(
16
);
#define maxMeasCSGRange 4
const
IntegerBase
maxMeasCSGRange
(
4
);
#define maxMeasEvent 8
const
IntegerBase
maxMeasEvent
(
8
);
#define maxMeasEventOnSecULFreq 8
const
IntegerBase
maxMeasEventOnSecULFreq
(
8
);
#define maxMeasIntervals 3
const
IntegerBase
maxMeasIntervals
(
3
);
#define maxMeasOccasionPattern 5
const
IntegerBase
maxMeasOccasionPattern
(
5
);
#define maxMeasOccasionPattern_1 4
const
IntegerBase
maxMeasOccasionPattern_1
(
4
);
#define maxMeasParEvent 2
const
IntegerBase
maxMeasParEvent
(
2
);
#define maxNumCDMA2000Freqs 8
const
IntegerBase
maxNumCDMA2000Freqs
(
8
);
#define maxNumE_AGCH 4
const
IntegerBase
maxNumE_AGCH
(
4
);
#define maxNumE_HICH 4
const
IntegerBase
maxNumE_HICH
(
4
);
#define maxNumEUTRAFreqs 8
const
IntegerBase
maxNumEUTRAFreqs
(
8
);
#define maxNumGSMCellGroup 16
const
IntegerBase
maxNumGSMCellGroup
(
16
);
#define maxNumGSMFreqRanges 32
const
IntegerBase
maxNumGSMFreqRanges
(
32
);
#define maxNumFDDFreqs 8
const
IntegerBase
maxNumFDDFreqs
(
8
);
#define maxNumTDDFreqs 8
const
IntegerBase
maxNumTDDFreqs
(
8
);
#define maxNoOfMeas 16
const
IntegerBase
maxNoOfMeas
(
16
);
#define maxOtherRAT 15
const
IntegerBase
maxOtherRAT
(
15
);
#define maxOtherRAT_16 16
const
IntegerBase
maxOtherRAT_16
(
16
);
#define maxPage1 8
const
IntegerBase
maxPage1
(
8
);
#define maxPCPCH_APsig 16
const
IntegerBase
maxPCPCH_APsig
(
16
);
#define maxPCPCH_APsubCh 12
const
IntegerBase
maxPCPCH_APsubCh
(
12
);
#define maxPCPCH_CDsig 16
const
IntegerBase
maxPCPCH_CDsig
(
16
);
#define maxPCPCH_CDsubCh 12
const
IntegerBase
maxPCPCH_CDsubCh
(
12
);
#define maxPCPCH_SF 7
const
IntegerBase
maxPCPCH_SF
(
7
);
#define maxPCPCHs 64
const
IntegerBase
maxPCPCHs
(
64
);
#define maxPDCPAlgoType 8
const
IntegerBase
maxPDCPAlgoType
(
8
);
#define maxPDSCH 8
const
IntegerBase
maxPDSCH
(
8
);
#define maxPDSCH_TFCIgroups 256
const
IntegerBase
maxPDSCH_TFCIgroups
(
256
);
#define maxPRACH 16
const
IntegerBase
maxPRACH
(
16
);
#define maxPRACH_FPACH 8
const
IntegerBase
maxPRACH_FPACH
(
8
);
#define maxPredefConfig 16
const
IntegerBase
maxPredefConfig
(
16
);
#define maxPrio 8
const
IntegerBase
maxPrio
(
8
);
#define maxPrio_1 7
const
IntegerBase
maxPrio_1
(
7
);
#define maxPUSCH 8
const
IntegerBase
maxPUSCH
(
8
);
#define maxQueueIDs 8
const
IntegerBase
maxQueueIDs
(
8
);
#define maxRABsetup 16
const
IntegerBase
maxRABsetup
(
16
);
#define maxRAT 16
const
IntegerBase
maxRAT
(
16
);
#define maxRB 32
const
IntegerBase
maxRB
(
32
);
#define maxRBallRABs 27
const
IntegerBase
maxRBallRABs
(
27
);
#define maxRBMuxOptions 8
const
IntegerBase
maxRBMuxOptions
(
8
);
#define maxRBperRAB 8
const
IntegerBase
maxRBperRAB
(
8
);
#define maxRBperTrCh 16
const
IntegerBase
maxRBperTrCh
(
16
);
#define maxReportedEUTRACellPerFreq 4
const
IntegerBase
maxReportedEUTRACellPerFreq
(
4
);
#define maxReportedEUTRAFreqs 4
const
IntegerBase
maxReportedEUTRAFreqs
(
4
);
#define maxReportedGSMCells 8
const
IntegerBase
maxReportedGSMCells
(
8
);
#define maxRL 8
const
IntegerBase
maxRL
(
8
);
#define maxRL_1 7
const
IntegerBase
maxRL_1
(
7
);
#define maxRLCPDUsizePerLogChan 32
const
IntegerBase
maxRLCPDUsizePerLogChan
(
32
);
#define maxRFC3095_CID 16384
const
IntegerBase
maxRFC3095_CID
(
16384
);
#define maxROHC_PacketSizes_r4 16
const
IntegerBase
maxROHC_PacketSizes_r4
(
16
);
#define maxROHC_Profile_r4 8
const
IntegerBase
maxROHC_Profile_r4
(
8
);
#define maxRxPatternForHSDSCH_TDD128 4
const
IntegerBase
maxRxPatternForHSDSCH_TDD128
(
4
);
#define maxRxPatternForHSDSCH_TDD128_1 3
const
IntegerBase
maxRxPatternForHSDSCH_TDD128_1
(
3
);
#define maxSat 16
const
IntegerBase
maxSat
(
16
);
#define maxSatClockModels 4
const
IntegerBase
maxSatClockModels
(
4
);
#define maxSCCPCH 16
const
IntegerBase
maxSCCPCH
(
16
);
#define maxSgnType 8
const
IntegerBase
maxSgnType
(
8
);
#define maxSIB 32
const
IntegerBase
maxSIB
(
32
);
#define maxSIB_FACH 8
const
IntegerBase
maxSIB_FACH
(
8
);
#define maxSIBperMsg 16
const
IntegerBase
maxSIBperMsg
(
16
);
#define maxSIrequest 4
const
IntegerBase
maxSIrequest
(
4
);
#define maxSRBsetup 8
const
IntegerBase
maxSRBsetup
(
8
);
#define maxSystemCapability 16
const
IntegerBase
maxSystemCapability
(
16
);
#define maxTDD128Carrier 6
const
IntegerBase
maxTDD128Carrier
(
6
);
#define maxTbsForHSDSCH_TDD128 4
const
IntegerBase
maxTbsForHSDSCH_TDD128
(
4
);
#define maxTbsForHSDSCH_TDD128_1 3
const
IntegerBase
maxTbsForHSDSCH_TDD128_1
(
3
);
#define maxTF 32
const
IntegerBase
maxTF
(
32
);
#define maxTF_CPCH 16
const
IntegerBase
maxTF_CPCH
(
16
);
#define maxTFC 1024
const
IntegerBase
maxTFC
(
1024
);
#define maxTFCsub 1024
const
IntegerBase
maxTFCsub
(
1024
);
#define maxTFCI_2_Combs 512
const
IntegerBase
maxTFCI_2_Combs
(
512
);
#define maxTGPS 6
const
IntegerBase
maxTGPS
(
6
);
#define maxTrCH 32
const
IntegerBase
maxTrCH
(
32
);
#define maxTrCHpreconf 32
const
IntegerBase
maxTrCHpreconf
(
32
);
#define maxTS 14
const
IntegerBase
maxTS
(
14
);
#define maxTS_1 13
const
IntegerBase
maxTS_1
(
13
);
#define maxTS_2 12
const
IntegerBase
maxTS_2
(
12
);
#define maxTS_LCR 6
const
IntegerBase
maxTS_LCR
(
6
);
#define maxTS_LCR_1 5
const
IntegerBase
maxTS_LCR_1
(
5
);
const
IntegerBase
maxURA
(
8
);
const
IntegerBase
maxURNTI_Group
(
8
);
//typedef SequenceOf<CNDomainInformationFull, CONSTRAINED, 1, maxCNdomains> CNDomainInformationListFull;
#define maxURA 8
#define maxURNTI_Group 8
#endif
/* RRCCONSTANTDEFINITIONS_H_ */
src/linklayer/lte/rrc/message/RRCInformationElements.cc
浏览文件 @
8276971b
此差异已折叠。
点击以展开。
src/linklayer/lte/rrc/message/RRCInformationElements.h
浏览文件 @
8276971b
此差异已折叠。
点击以展开。
src/linklayer/lte/rrc/message/RRCInternodeDefinitions.cc
0 → 100644
浏览文件 @
8276971b
//
// 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 "RRCInternodeDefinitions.h"
const
void
*
SecurityCapability
::
itemsInfo
[
2
]
=
{
&
SecurityCapabilityCipheringAlgorithmCap
::
theInfo
,
&
SecurityCapabilityIntegrityProtectionAlgorithmCap
::
theInfo
,
};
bool
SecurityCapability
::
itemsPres
[
2
]
=
{
1
,
1
,
};
const
SecurityCapability
::
Info
SecurityCapability
::
theInfo
=
{
SecurityCapability
::
create
,
SEQUENCE
,
0
,
false
,
itemsInfo
,
itemsPres
,
2
,
0
,
0
};
src/linklayer/lte/rrc/message/RRCInternodeDefinitions.h
0 → 100644
浏览文件 @
8276971b
//
// 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 RRCINTERNODEDEFINITIONS_H_
#define RRCINTERNODEDEFINITIONS_H_
#include "ASNTypes.h"
#include "RRCPDUDefinitions.h"
#include "RRCInformationElements.h"
#include "RRCConstantDefinitions.h"
typedef
BitString
<
CONSTRAINED
,
16
,
16
>
SecurityCapabilityCipheringAlgorithmCap
;
typedef
BitString
<
CONSTRAINED
,
16
,
16
>
SecurityCapabilityIntegrityProtectionAlgorithmCap
;
class
SecurityCapability
:
Sequence
{
private:
static
const
void
*
itemsInfo
[
2
];
static
bool
itemsPres
[
2
];
public:
static
const
Info
theInfo
;
SecurityCapability
()
:
Sequence
(
&
theInfo
)
{}
};
src/linklayer/lte/rrc/message/test.asn
浏览文件 @
8276971b
...
...
@@ -184,19 +184,56 @@ FROM InformationElements
FROM Constant-definitions;
AllowedTFI-List ::= SEQUENCE (SIZE (1..maxTF)) OF
INTEGER (0..31)
SecurityCapability ::= SEQUENCE {
cipheringAlgorithmCap BIT STRING {
-- For each bit value "0" means false/ not supported
spare15(0),
spare14(1),
spare13(2),
spare12(3),
spare11(4),
spare10(5),
spare9(6),
spare8(7),
spare7(8),
spare6(9),
spare5(10),
spare4(11),
spare3(12),
uea2(13),
uea1(14),
uea0(15)
} (SIZE (16)),
integrityProtectionAlgorithmCap BIT STRING {
-- For each bit value "0" means false/ not supported
spare15(0),
spare14(1),
spare13(2),
spare12(3),
spare11(4),
spare10(5),
spare9(6),
spare8(7),
spare7(8),
spare6(9),
spare5(10),
spare4(11),
spare3(12),
uia2(13),
uia1(14),
spare0(15)
} (SIZE (16))
}
GSM-MessageList ::= SEQUENCE (SIZE (1..maxInterSysMessages)) OF
BIT STRING (SIZE (1..512))
EUTRA-RadioAccessCapability ::= SEQUENCE {
ue-EUTRA-Capability OCTET STRING
SIR-TFCS ::= TFCS-IdentityPlain
ReqDataBitAssistance ::= SEQUENCE {
ganssSignalID DGANSS-Sig-Id-Req,
ganssDataBitInterval INTEGER(0..15),
ganssSatelliteInfo SEQUENCE (SIZE (1..maxGANSSSat)) OF INTEGER(0..63) OPTIONAL
}
MBSFN-TDM-Info-List ::= SEQUENCE (SIZE (1..maxMBMSservUnmodif)) OF
MBSFN-TDM-Info
SIR-TFCS-List ::= SEQUENCE (SIZE (1..maxCCTrCH)) OF
SIR-TFCS
}
END
src/util/asn/ASNTypes.h
浏览文件 @
8276971b
...
...
@@ -98,23 +98,6 @@ public:
virtual
int64_t
compare
(
const
AbstractType
&
other
)
const
=
0
;
};
struct
EmptyConstraint
{
enum
{
type
=
UNCONSTRAINED
,
lowerBound
=
0
,
upperBound
=
UINT_MAX
};
};
template
<
char
type_
,
int64_t
lowerBound_
,
int64_t
upperBound_
>
struct
SizeConstraint
{
enum
{
type
=
type_
,
lowerBound
=
lowerBound_
,
upperBound
=
upperBound_
};
};
/*
* Base class for all constrained ASN.1 types.
*/
...
...
@@ -619,7 +602,7 @@ public:
bool
encode
(
PerEncoder
&
encoder
)
const
;
};
template
<
class
T
,
class
Constraint
>
template
<
class
T
,
ConstraintType
type
,
int64_t
lowerBound
,
int64_t
upperBound
>
class
SequenceOf
:
public
SequenceOfBase
{
public:
static
const
Info
theInfo
;
...
...
@@ -637,14 +620,14 @@ public:
int64_t
size
()
const
{
return
items
.
size
();
}
};
template
<
class
T
,
class
Constraint
>
const
typename
SequenceOf
<
T
,
Constraint
>::
Info
SequenceOf
<
T
,
Constraint
>::
theInfo
=
{
template
<
class
T
,
ConstraintType
type
,
int64_t
lowerBound
,
int64_t
upperBound
>
const
typename
SequenceOf
<
T
,
type
,
lowerBound
,
upperBound
>::
Info
SequenceOf
<
T
,
type
,
lowerBound
,
upperBound
>::
theInfo
=
{
SequenceOfBase
::
create
,
SEQUENCEOF
,
0
,
Constraint
::
type
,
Constraint
::
lowerBound
,
Constraint
::
upperBound
,
type
,
lowerBound
,
upperBound
,
&
T
::
theInfo
};
...
...
src/util/asn/parser/asnparser.py
浏览文件 @
8276971b
...
...
@@ -27,15 +27,27 @@ comment = '--'
comma
=
','
colon
=
':'
tripledash
=
'...'
typeslist
=
[
'Integer'
,
types
=
[
'Integer'
,
'IntegerBase'
,
'BitString'
,
'BitStringBase'
,
'OctetString'
,
'OctetStringBase'
,
'Enumerated'
,
'EnumeratedBase'
,
'Sequence'
,
'SequenceOf'
,
'Choice'
,
'Null'
,
'Boolean'
]
constrainttypes
=
[
'Integer'
,
'IntegerBase'
,
'BitString'
,
'BitStringBase'
,
'OctetString'
,
'OctetStringBase'
,
'Enumerated'
,
'EnumeratedBase'
]
module
=
"RRC"
outfilename
=
''
includes
=
list
()
...
...
@@ -158,7 +170,7 @@ def parsetype(asnobj, string):
else
:
asnobj
.
type
=
type
.
replace
(
"-"
,
""
)
if
string
.
index
(
type
)
<
string
.
index
(
assign
):
if
assign
in
string
and
string
.
index
(
type
)
<
string
.
index
(
assign
):
asnobj
.
constrainttype
=
"CONSTANT"
def
findfilename
(
string
):
...
...
@@ -219,15 +231,21 @@ def parsestring(string):
parsesize
(
asnobj
,
words
[
1
])
break
elif
string
[
i
]
==
openbracket
:
words
=
words
[
1
].
split
(
openbracket
,
1
)
tmpstring
=
words
[
1
].
strip
()
while
len
(
tmpstring
)
>
0
:
if
tmpstring
[
len
(
tmpstring
)
-
1
]
==
closedbracket
:
if
asnobj
.
type
in
constrainttypes
:
words
=
words
[
1
].
split
(
closedbracket
,
1
)
words
=
words
[
1
].
split
(
openparantheses
,
1
)
parsesize
(
asnobj
,
words
[
1
])
break
else
:
words
=
words
[
1
].
split
(
openbracket
,
1
)
tmpstring
=
words
[
1
].
strip
()
while
len
(
tmpstring
)
>
0
:
if
tmpstring
[
len
(
tmpstring
)
-
1
]
==
closedbracket
:
tmpstring
=
tmpstring
[:
-
1
]
break
tmpstring
=
tmpstring
[:
-
1
]
break
tmpstring
=
tmpstring
[:
-
1
]
parsebracket
(
asnobj
,
tmpstring
,
0
)
break
parsebracket
(
asnobj
,
tmpstring
,
0
)
break
else
:
asnobj
.
constrainttype
=
"UNCONSTRAINED"
...
...
@@ -265,7 +283,7 @@ def checkandhandledeps(asnobj, hdrfile, srcfile):
retval
=
0
for
i
in
range
(
0
,
len
(
asnobj
.
objs
)):
obj
=
asnobj
.
objs
[
i
]
if
obj
.
type
in
types
list
:
if
obj
.
type
in
types
:
writeobject
(
obj
,
hdrfile
,
srcfile
)
else
:
found
=
0
...
...
@@ -280,7 +298,7 @@ def checkandhandledeps(asnobj, hdrfile, srcfile):
return
retval
def
writeobject
(
asnobj
,
hdrfile
,
srcfile
):
if
asnobj
.
written
==
0
:
if
asnobj
.
written
==
0
and
asnobj
.
name
!=
''
:
if
asnobj
.
parent
!=
None
:
asnobj
.
name
=
asnobj
.
parent
.
name
+
asnobj
.
name
...
...
@@ -291,10 +309,12 @@ def writeobject(asnobj, hdrfile, srcfile):
asnobj
.
type
=
asnobj
.
name
# Constraint types
if
asnobj
.
constrainttype
==
"CONSTANT"
:
hdrfile
.
write
(
"const "
+
asnobj
.
type
+
"Base "
+
asnobj
.
name
+
"("
+
str
(
asnobj
.
value
)
+
");
\n
"
)
else
:
if
asnobj
.
type
==
"Integer"
or
asnobj
.
type
==
"BitString"
or
asnobj
.
type
==
"OctetString"
:
if
asnobj
.
type
in
constrainttypes
:
if
asnobj
.
constrainttype
==
"CONSTANT"
:
hdrfile
.
write
(
"#define "
+
asnobj
.
name
+
" "
+
str
(
asnobj
.
value
)
+
"
\n
"
)
if
asnobj
.
constrainttype
==
"UNCONSTRAINED"
:
hdrfile
.
write
(
"typedef "
+
asnobj
.
type
+
" "
+
asnobj
.
name
+
";
\n
"
)
else
:
hdrfile
.
write
(
"typedef "
+
asnobj
.
type
+
"<"
+
asnobj
.
constrainttype
)
if
asnobj
.
lowerlimit
!=
''
:
hdrfile
.
write
(
", "
+
asnobj
.
lowerlimit
)
...
...
@@ -310,7 +330,7 @@ def writeobject(asnobj, hdrfile, srcfile):
hdrfile
.
write
(
"enum "
+
asnobj
.
name
+
"Values {
\n
"
)
for
j
in
range
(
0
,
len
(
asnobj
.
objs
)):
childobj
=
asnobj
.
objs
[
j
]
hdrfile
.
write
(
"
\t
"
+
childobj
.
name
+
" = "
+
str
(
j
)
+
",
\n
"
)
hdrfile
.
write
(
"
\t
"
+
childobj
.
name
+
"
_"
+
asnobj
.
name
+
"
= "
+
str
(
j
)
+
",
\n
"
)
hdrfile
.
write
(
"};
\n
"
)
hdrfile
.
write
(
"typedef Enumerated<"
+
asnobj
.
constrainttype
+
", "
+
str
(
len
(
asnobj
.
objs
)
-
1
)
+
"> "
+
asnobj
.
name
+
";
\n
"
)
...
...
@@ -335,7 +355,7 @@ def writeobject(asnobj, hdrfile, srcfile):
obj
=
asnobj
.
objs
[
j
]
srcfile
.
write
(
"
\t
&"
+
obj
.
type
+
"::theInfo,
\n
"
)
srcfile
.
write
(
"};
\n
"
)
srcfile
.
write
(
"
const void *
"
+
asnobj
.
name
+
"::itemsPres["
+
str
(
len
(
asnobj
.
objs
))
+
"] = {
\n
"
)
srcfile
.
write
(
"
bool
"
+
asnobj
.
name
+
"::itemsPres["
+
str
(
len
(
asnobj
.
objs
))
+
"] = {
\n
"
)
for
j
in
range
(
0
,
len
(
asnobj
.
objs
)):
obj
=
asnobj
.
objs
[
j
]
if
obj
.
opt
==
0
:
...
...
@@ -356,6 +376,7 @@ def writeobject(asnobj, hdrfile, srcfile):
"
\t
itemsPres,
\n
"
"
\t
"
+
str
(
len
(
asnobj
.
objs
))
+
", "
+
str
(
optnr
)
+
", "
+
str
(
extnr
)
+
"
\n
"
+
"};
\n
"
)
srcfile
.
write
(
"
\n
"
)
# Sequence Of
...
...
@@ -394,9 +415,18 @@ def writeobject(asnobj, hdrfile, srcfile):
srcfile
.
write
(
"
\t
choicesInfo,
\n
"
+
"
\t
"
+
str
(
len
(
asnobj
.
objs
)
-
1
)
+
"
\n
"
+
"};
\n
"
)
srcfile
.
write
(
"
\n
"
)
if
asnobj
.
type
not
in
types
:
obj
=
ASNObject
()
obj
.
type
=
asnobj
.
type
asnobj
.
objs
.
append
(
obj
)
if
checkandhandledeps
(
asnobj
,
hdrfile
,
srcfile
)
!=
0
:
return
hdrfile
.
write
(
"typedef "
+
asnobj
.
type
+
" "
+
asnobj
.
name
+
";
\n
"
)
hdrfile
.
write
(
"
\n
"
)
srcfile
.
write
(
"
\n
"
)
asnobj
.
written
=
1
def
writeheader
(
file
):
...
...
@@ -427,7 +457,7 @@ def main():
#directory = "/root/Desktop/omnetpp-4.2.2/samples/4Gsim/src/linklayer/lte/rrc/message/"
directory
=
"F:
\\
omnetpp-4.2.2
\\
samples
\\
4Gsim
\\
src
\\
linklayer
\\
lte
\\
rrc
\\
message
\\
"
filename
=
"
Constant-definitions
"
filename
=
"
test
"
file
=
open
(
directory
+
filename
+
".asn"
,
"r"
)
lines
=
file
.
readlines
()
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录