|
1 <xsl:stylesheet version="1.0" |
|
2 xmlns:xsl="http://www.w3.org/1999/XSL/Transform" |
|
3 xmlns:ns="entries_list_ns" |
|
4 extension-element-prefixes="ns" |
|
5 exclude-result-prefixes="ns"> |
|
6 <xsl:param name="min_index"/> |
|
7 <xsl:param name="max_index"/> |
|
8 <xsl:template match="Device"> |
|
9 <xsl:apply-templates select="Profile/Dictionary/Objects/Object"/> |
|
10 <xsl:for-each select="RxPdo"> |
|
11 <xsl:call-template name="pdo_entries"> |
|
12 <xsl:with-param name="direction" select="'Receive'"/> |
|
13 </xsl:call-template> |
|
14 </xsl:for-each> |
|
15 <xsl:for-each select="TxPdo"> |
|
16 <xsl:call-template name="pdo_entries"> |
|
17 <xsl:with-param name="direction" select="'Transmit'"/> |
|
18 </xsl:call-template> |
|
19 </xsl:for-each> |
|
20 </xsl:template> |
|
21 <xsl:template match="Object"> |
|
22 <xsl:variable name="index"> |
|
23 <xsl:value-of select="ns:HexDecValue(Index/text())"/> |
|
24 </xsl:variable> |
|
25 <xsl:variable name="entry_name"> |
|
26 <xsl:value-of select="ns:EntryName(Name)"/> |
|
27 </xsl:variable> |
|
28 <xsl:choose> |
|
29 <xsl:when test="$index >= $min_index and $index <= $max_index"> |
|
30 <xsl:variable name="datatype_name"> |
|
31 <xsl:value-of select="Type/text()"/> |
|
32 </xsl:variable> |
|
33 <xsl:choose> |
|
34 <xsl:when test="ancestor::Dictionary/child::DataTypes/DataType[Name/text()=$datatype_name][SubItem]"> |
|
35 <xsl:apply-templates select="ancestor::Dictionary/child::DataTypes/DataType[Name/text()=$datatype_name][SubItem]"> |
|
36 <xsl:with-param name="index"> |
|
37 <xsl:value-of select="$index"/> |
|
38 </xsl:with-param> |
|
39 <xsl:with-param name="entry_name"> |
|
40 <xsl:value-of select="$entry_name"/> |
|
41 </xsl:with-param> |
|
42 </xsl:apply-templates> |
|
43 </xsl:when> |
|
44 <xsl:otherwise> |
|
45 <ns:add_entry> |
|
46 <Index><xsl:value-of select="$index"/></Index> |
|
47 <SubIndex><xsl:text>0</xsl:text></SubIndex> |
|
48 <Name><xsl:value-of select="$entry_name"/></Name> |
|
49 <Type><xsl:value-of select="$datatype_name"/></Type> |
|
50 <BitSize><xsl:value-of select="BitSize/text()"/></BitSize> |
|
51 <Access><xsl:value-of select="Flags/Access/text()"/></Access> |
|
52 <PDOMapping><xsl:value-of select="Flags/PdoMapping/text()"/></PDOMapping> |
|
53 </ns:add_entry> |
|
54 </xsl:otherwise> |
|
55 </xsl:choose> |
|
56 </xsl:when> |
|
57 </xsl:choose> |
|
58 </xsl:template> |
|
59 <xsl:template match="DataType"> |
|
60 <xsl:param name="index"/> |
|
61 <xsl:param name="entry_name"/> |
|
62 <xsl:for-each select="SubItem"> |
|
63 <xsl:variable name="subentry_names"> |
|
64 <xsl:value-of select="DisplayName"/> |
|
65 <Default><xsl:value-of select="Name/text()"/></Default> |
|
66 </xsl:variable> |
|
67 <ns:add_entry> |
|
68 <Index><xsl:value-of select="$index"/></Index> |
|
69 <SubIndex><xsl:value-of select="ns:HexDecValue(SubIdx/text())"/></SubIndex> |
|
70 <Name> |
|
71 <xsl:value-of select="$entry_name"/> |
|
72 <xsl:text> - </xsl:text> |
|
73 <xsl:value-of select="ns:EntryName($subentry_names)"/> |
|
74 </Name> |
|
75 <Type><xsl:value-of select="Type/text()"/></Type> |
|
76 <BitSize><xsl:value-of select="BitSize/text()"/></BitSize> |
|
77 <Access><xsl:value-of select="Flags/Access/text()"/></Access> |
|
78 <PDOMapping><xsl:value-of select="Flags/PdoMapping/text()"/></PDOMapping> |
|
79 </ns:add_entry> |
|
80 </xsl:for-each> |
|
81 </xsl:template> |
|
82 <xsl:template name="pdo_entries"> |
|
83 <xsl:param name="direction"/> |
|
84 <xsl:variable name="pdo_index"> |
|
85 <xsl:value-of select="ns:HexDecValue(Index/text())"/> |
|
86 </xsl:variable> |
|
87 <xsl:variable name="pdo_name"> |
|
88 <xsl:value-of select="ns:EntryName(Name)"/> |
|
89 </xsl:variable> |
|
90 <xsl:for-each select="Entry"> |
|
91 <xsl:variable name="index"> |
|
92 <xsl:value-of select="ns:HexDecValue(Index/text())"/> |
|
93 </xsl:variable> |
|
94 <xsl:choose> |
|
95 <xsl:when test="$index >= $min_index and $index <= $max_index"> |
|
96 <ns:add_entry> |
|
97 <Index><xsl:value-of select="$index"/></Index> |
|
98 <SubIndex><xsl:value-of select="ns:HexDecValue(SubIndex/text())"/></SubIndex> |
|
99 <Name><xsl:value-of select="ns:EntryName(Name)"/></Name> |
|
100 <Type><xsl:value-of select="Type/text()"/></Type> |
|
101 <BitSize><xsl:value-of select="BitLen/text()"/></BitSize> |
|
102 <xsl:choose> |
|
103 <xsl:when test="$direction='Transmit'"> |
|
104 <Access><xsl:text>ro</xsl:text></Access> |
|
105 <PDOMapping><xsl:text>T</xsl:text></PDOMapping> |
|
106 </xsl:when> |
|
107 <xsl:otherwise> |
|
108 <Access><xsl:text>wo</xsl:text></Access> |
|
109 <PDOMapping><xsl:text>R</xsl:text></PDOMapping> |
|
110 </xsl:otherwise> |
|
111 </xsl:choose> |
|
112 <PDO> |
|
113 <index><xsl:value-of select="$pdo_index"/></index> |
|
114 <name><xsl:value-of select="$pdo_name"/></name> |
|
115 <type><xsl:value-of select="$direction"/></type> |
|
116 </PDO> |
|
117 </ns:add_entry> |
|
118 </xsl:when> |
|
119 </xsl:choose> |
|
120 </xsl:for-each> |
|
121 </xsl:template> |
|
122 <xsl:template match="text()"/> |
|
123 </xsl:stylesheet> |