From 91102f9d5dc03f9ca8f492c8b2207da59b682f72 Mon Sep 17 00:00:00 2001 From: calin cerchez Date: Mon, 20 Aug 2012 23:12:03 +0300 Subject: [PATCH] working on parser --- examples/diameter/results/General-0.vci | 2 +- src/linklayer/lte/rrc/RRC.h | 4 +- .../lte/rrc/message/RRCClassDefinitions.cc | 2 +- .../lte/rrc/message/RRCClassDefinitions.h | 3 +- .../lte/rrc/message/RRCConstantDefinitions.cc | 3 + .../lte/rrc/message/RRCConstantDefinitions.h | 4 ++ .../lte/rrc/message/RRCInformationElements.cc | 2 +- .../lte/rrc/message/RRCInformationElements.h | 2 +- .../lte/rrc/message/RRCPDUDefinitions.cc | 2 +- .../lte/rrc/message/RRCPDUDefinitions.h | 5 +- .../lte/rrc/message/{test.asn => test.asn.bk} | 0 src/util/asn/parser/asnparser.py | 60 ++++++++++++------- 12 files changed, 58 insertions(+), 31 deletions(-) rename src/linklayer/lte/rrc/message/{test.asn => test.asn.bk} (100%) diff --git a/examples/diameter/results/General-0.vci b/examples/diameter/results/General-0.vci index 2cf977e..90ae646 100644 --- a/examples/diameter/results/General-0.vci +++ b/examples/diameter/results/General-0.vci @@ -1,4 +1,4 @@ -file 13724 1341907082 +file 13724 1342196896 version 2 run General-0-20120709-16:16:37-6492 attr configname General diff --git a/src/linklayer/lte/rrc/RRC.h b/src/linklayer/lte/rrc/RRC.h index 11cd3b6..48a314d 100644 --- a/src/linklayer/lte/rrc/RRC.h +++ b/src/linklayer/lte/rrc/RRC.h @@ -19,9 +19,7 @@ #define RRC_H_ #include -#include "RRCPDUDefinitions.h" - -using namespace RRC; +//#include "RRCPDUDefinitions.h" class RRC : public cSimpleModule { public: diff --git a/src/linklayer/lte/rrc/message/RRCClassDefinitions.cc b/src/linklayer/lte/rrc/message/RRCClassDefinitions.cc index 812f023..19773f4 100644 --- a/src/linklayer/lte/rrc/message/RRCClassDefinitions.cc +++ b/src/linklayer/lte/rrc/message/RRCClassDefinitions.cc @@ -17,7 +17,7 @@ #include "RRCClassDefinitions.h" -namespace RRC { +namespace rrcNamespace { const void *DLDCCHMessageType::choicesInfo[32] = { &ActiveSetUpdate::theInfo, diff --git a/src/linklayer/lte/rrc/message/RRCClassDefinitions.h b/src/linklayer/lte/rrc/message/RRCClassDefinitions.h index a6cfadb..d7ccad9 100644 --- a/src/linklayer/lte/rrc/message/RRCClassDefinitions.h +++ b/src/linklayer/lte/rrc/message/RRCClassDefinitions.h @@ -22,7 +22,7 @@ #include "RRCPDUDefinitions.h" #include "RRCInformationElements.h" -namespace RRC { +namespace rrcNamespace { typedef Null DLDCCHMessageTypeSpare3; @@ -252,4 +252,5 @@ public: }; } + #endif /* RRCCLASSDEFINITIONS_H_ */ diff --git a/src/linklayer/lte/rrc/message/RRCConstantDefinitions.cc b/src/linklayer/lte/rrc/message/RRCConstantDefinitions.cc index 6c028c4..2f8c93b 100644 --- a/src/linklayer/lte/rrc/message/RRCConstantDefinitions.cc +++ b/src/linklayer/lte/rrc/message/RRCConstantDefinitions.cc @@ -17,3 +17,6 @@ #include "RRCConstantDefinitions.h" +namespace rrcNamespace { + +} diff --git a/src/linklayer/lte/rrc/message/RRCConstantDefinitions.h b/src/linklayer/lte/rrc/message/RRCConstantDefinitions.h index 71666c6..bd2815d 100644 --- a/src/linklayer/lte/rrc/message/RRCConstantDefinitions.h +++ b/src/linklayer/lte/rrc/message/RRCConstantDefinitions.h @@ -20,6 +20,8 @@ #include "ASNTypes.h" +namespace rrcNamespace { + #define hiPDSCHidentities 64 #define hiPUSCHidentities 64 @@ -326,4 +328,6 @@ #define maxURNTI_Group 8 +} + #endif /* RRCCONSTANTDEFINITIONS_H_ */ diff --git a/src/linklayer/lte/rrc/message/RRCInformationElements.cc b/src/linklayer/lte/rrc/message/RRCInformationElements.cc index f854a76..6e263cd 100644 --- a/src/linklayer/lte/rrc/message/RRCInformationElements.cc +++ b/src/linklayer/lte/rrc/message/RRCInformationElements.cc @@ -17,7 +17,7 @@ #include "RRCInformationElements.h" -namespace RRC { +namespace rrcNamespace { const void *CNDomainInformation::itemsInfo[2] = { &CNDomainIdentity::theInfo, diff --git a/src/linklayer/lte/rrc/message/RRCInformationElements.h b/src/linklayer/lte/rrc/message/RRCInformationElements.h index 58b5519..46d9c71 100644 --- a/src/linklayer/lte/rrc/message/RRCInformationElements.h +++ b/src/linklayer/lte/rrc/message/RRCInformationElements.h @@ -21,7 +21,7 @@ #include "ASNTypes.h" #include "RRCConstantDefinitions.h" -namespace RRC { +namespace rrcNamespace { typedef BitString Ansi41IDNNS; diff --git a/src/linklayer/lte/rrc/message/RRCPDUDefinitions.cc b/src/linklayer/lte/rrc/message/RRCPDUDefinitions.cc index 0fb5c98..f646935 100644 --- a/src/linklayer/lte/rrc/message/RRCPDUDefinitions.cc +++ b/src/linklayer/lte/rrc/message/RRCPDUDefinitions.cc @@ -17,7 +17,7 @@ #include "RRCPDUDefinitions.h" -namespace RRC { +namespace rrcNamespace { const void *ActiveSetUpdater3IEs::itemsInfo[12] = { &RRCTransactionIdentifier::theInfo, diff --git a/src/linklayer/lte/rrc/message/RRCPDUDefinitions.h b/src/linklayer/lte/rrc/message/RRCPDUDefinitions.h index c57b34c..39aba95 100644 --- a/src/linklayer/lte/rrc/message/RRCPDUDefinitions.h +++ b/src/linklayer/lte/rrc/message/RRCPDUDefinitions.h @@ -22,7 +22,7 @@ #include "RRCInformationElements.h" #include "RRCConstantDefinitions.h" -namespace RRC { +namespace rrcNamespace { class ActiveSetUpdater3IEs : Sequence { private: @@ -14595,5 +14595,6 @@ public: SystemInformationContainer(): Sequence(&theInfo) {} }; -#endif /* RRCPDUDEFINITIONS_H_ */ } + +#endif /* RRCPDUDEFINITIONS_H_ */ diff --git a/src/linklayer/lte/rrc/message/test.asn b/src/linklayer/lte/rrc/message/test.asn.bk similarity index 100% rename from src/linklayer/lte/rrc/message/test.asn rename to src/linklayer/lte/rrc/message/test.asn.bk diff --git a/src/util/asn/parser/asnparser.py b/src/util/asn/parser/asnparser.py index d901f90..43a18fc 100644 --- a/src/util/asn/parser/asnparser.py +++ b/src/util/asn/parser/asnparser.py @@ -1,5 +1,6 @@ import re from optparse import OptionParser +import os openbracket = '{' closedbracket = '}' @@ -49,6 +50,8 @@ constrainttypes = ['Integer', 'OctetString', 'OctetStringBase'] module = "RRC" +#directory = "/root/Desktop/omnetpp-4.2.2/samples/4Gsim/src/linklayer/lte/rrc/message/" +directory = "D:\\omnetpp-4.2.2\\samples\\4Gsim\\src\\linklayer\\lte\\rrc\\message\\" outfilename = '' includes = list() imports = list() @@ -345,7 +348,7 @@ def writeobject(asnobj, hdrfile, srcfile): if asnobj.type in constrainttypes: if asnobj.constrainttype == "CONSTANT": hdrfile.write("#define " + asnobj.name + " " + str(asnobj.value) + "\n") - if asnobj.constrainttype == "UNCONSTRAINED": + elif asnobj.constrainttype == "UNCONSTRAINED": hdrfile.write("typedef " + asnobj.type + " " + asnobj.name + ";\n") else: hdrfile.write("typedef " + asnobj.type + "<" + asnobj.constrainttype) @@ -469,27 +472,16 @@ def writeheader(file): "//\n" + "// You should have received a copy of the GNU Lesser General Public License\n" + "// along with this program. If not, see http://www.gnu.org/licenses/.\n" + - "//\n\n") + "//\n\n") -def main(): - usage = "usage: %prog [options] input filename" - parser = OptionParser(usage) - parser.add_option("-o", "--output", dest="filename", - help="name of output file", metavar="FILENAME") - - (options, args) = parser.parse_args() - - #directory = "/root/Desktop/omnetpp-4.2.2/samples/4Gsim/src/linklayer/lte/rrc/message/" - directory = "D:\\omnetpp-4.2.2\\samples\\4Gsim\\src\\linklayer\\lte\\rrc\\message\\" - filename = "InformationElements" - - file = open(directory + filename + ".asn", "r") +def parsefile(filename): + file = open(directory + filename, "r") lines = file.readlines() file.close() objectstring = "" - print ("parsing file...") + print ("parsing file " + filename + "...") for i, line in enumerate(lines): if assign in line: if len(objectstring) > 0: @@ -500,8 +492,12 @@ def main(): asnobjs.append(parsestring(objectstring)) - #printobjects(asnobjs) - print ("writing source files...") +def writefile(filename): + global asnobjs + global includes + global imports + + print ("writing source files for " + filename + "...") hdrfile = open(directory + outfilename + ".h", 'w') srcfile = open(directory + outfilename + ".cc", 'w') writeheader(hdrfile) @@ -516,8 +512,8 @@ def main(): srcfile.write("#include \"" + outfilename + ".h\"\n\n") - srcfile.write("namespace " + module + " {\n\n") - hdrfile.write("namespace " + module + " {\n\n") + srcfile.write("namespace " + module.lower() + "Namespace {\n\n") + hdrfile.write("namespace " + module.lower() + "Namespace {\n\n") for i in range (0, len(asnobjs)): asnobj = asnobjs[i] @@ -530,6 +526,30 @@ def main(): srcfile.close() hdrfile.close() + + + includes = list() + imports = list() + asnobjs = list() + +def main(): + os.chdir(directory) + for filename in os.listdir("."): + if filename.endswith(".asn"): + parsefile(filename) + writefile(filename) + +## usage = "usage: %prog [options] input filename" +## parser = OptionParser(usage) +## parser.add_option("-o", "--output", dest="filename", +## help="name of output file", metavar="FILENAME") +## +## (options, args) = parser.parse_args() +## + +## +## #printobjects(asnobjs) + if __name__ == "__main__": main() -- GitLab