root/WaveDev/trunk/WaveDev/XML_gen/softcomponent_gen.py @ 569

Revision 569, 3.8 KB (checked in by depriest, 8 years ago)

Just some bug fixes for compatability

Line 
1import sys
2import commands
3from amara import binderytools
4
5#
6# UUID Generator
7#
8def uuidgen():
9   return commands.getoutput('uuidgen -t')
10
11
12def componentGen(componentName, portName, waveformDir):
13   portName = u'DefaultPort'
14   portType = u'data'
15   
16   commentLine = u'<!--Created with duct tape and toothpicks pre-alpha 0.0.1 by BrunoSchwarz-->\n<!--Powered by Python-->\n'
17
18   extension_spd = u'.spd.xml'
19   extension_scd = u'.scd.xml'
20   extension_prf = u'.prf.xml'
21   extension_exe = u'.exe'
22 
23   outputFileName_scd = componentName + 'Resource' + extension_scd
24   outputFileName_spd = componentName + 'Resource' + extension_spd
25   outputFileName_prf = componentName + 'Resource' + extension_prf
26 
27   preProcessed_scd = open(waveformDir + '.' + outputFileName_scd + '.tmp', 'w')
28   preProcessed_spd = open(waveformDir + '.' + outputFileName_spd + '.tmp', 'w')
29   preProcessed_prf = open(waveformDir + '.' + outputFileName_prf + '.tmp', 'w')
30   
31   postProcessed_scd = open(waveformDir + outputFileName_scd, 'w')
32   postProcessed_spd = open(waveformDir + outputFileName_spd, 'w')
33   postProcessed_prf = open(waveformDir + outputFileName_prf, 'w')
34 
35   #
36   # SPD Parser / Generator
37   #
38   
39   softpkgName = u'ossie' + componentName + u'Resource'
40   
41   doc_spd = binderytools.bind_file('../XML_gen/_spd.xml.tpl')
42   
43   doc_spd.softpkg.name = softpkgName
44   doc_spd.softpkg.id = u'DCE:' + unicode(uuidgen())
45 
46   doc_spd.softpkg.propertyfile.localfile.name = u'/waveforms/' \
47                                                + componentName \
48                                                + u'Resource' \
49                                                + extension_prf \
50   
51   doc_spd.softpkg.descriptor.localfile.name =  u'/waveforms/' \
52                                                + componentName \
53                                                + u'Resource' \
54                                                + extension_scd \
55   
56   doc_spd.softpkg.implementation.id = u'DCE:' + unicode(uuidgen())
57   doc_spd.softpkg.implementation.code.localfile.name = u'./' + componentName + u'/' + componentName
58   doc_spd.softpkg.implementation.code.entrypoint = componentName + extension_exe
59   
60   print >> preProcessed_spd, doc_spd.xml()
61   
62   #
63   # SCD Parser / Generator
64   #
65   
66   doc_scd = binderytools.bind_file('../XML_gen/_scd.xml.tpl')
67   
68   doc_scd.softwarecomponent.componentfeatures.ports.uses.usesname = portName
69   doc_scd.softwarecomponent.componentfeatures.ports.uses.porttype.type = portType
70 
71   print >> preProcessed_scd, doc_scd.xml()
72 
73   #
74   # PRF Parser / Generator
75   #
76   
77   doc_prf = binderytools.bind_file('../XML_gen/_prf.xml.tpl')
78   
79   print >> preProcessed_prf, doc_prf.xml()
80 
81   #
82   # Post Processing
83   #
84   preProcessed_scd = open(waveformDir + '.' + outputFileName_scd + '.tmp', 'r')
85   preProcessed_spd = open(waveformDir + '.' + outputFileName_spd + '.tmp', 'r')
86   preProcessed_prf = open(waveformDir + '.' + outputFileName_prf + '.tmp', 'r')
87 
88   #
89   # Specify external DTD
90   #
91 
92   #
93   # SPD
94   #
95   line0 = preProcessed_spd.readline()
96   remaining = preProcessed_spd.readlines()
97   postProcessed_spd.writelines(line0)
98   postProcessed_spd.writelines(u'<!DOCTYPE softpkg SYSTEM \"dtd/softpkg.dtd\">\n')
99   postProcessed_spd.writelines(commentLine)
100   postProcessed_spd.writelines(remaining)
101   postProcessed_spd.close()
102   
103   #
104   # SCD
105   #
106   line0 = preProcessed_scd.readline()
107   remaining = preProcessed_scd.readlines()
108   postProcessed_scd.writelines(line0)
109   postProcessed_scd.writelines(u'<!DOCTYPE softwarecomponent SYSTEM \"dtd/softwarecomponent.dtd\">\n')
110   postProcessed_scd.writelines(commentLine)
111   postProcessed_scd.writelines(remaining)
112   postProcessed_scd.close()
113   
114   #
115   # PRF
116   #
117   line0 = preProcessed_prf.readline()
118   remaining = preProcessed_prf.readlines()
119   postProcessed_prf.writelines(line0)
120   postProcessed_prf.writelines(u'<!DOCTYPE properties SYSTEM \"dtd/properties.dtd\">\n')
121   postProcessed_prf.writelines(commentLine)
122   postProcessed_prf.writelines(remaining)
123   postProcessed_prf.close()
Note: See TracBrowser for help on using the browser.