edouard@2165: /* edouard@2165: edouard@2165: Stylesheet used to list EtherCat dictionnary entries. edouard@2165: edouard@2165: Copyright (C) 2011-2014: Laurent BESSARD edouard@2165: edouard@2165: Distributed under the terms of the GNU Lesser General Public License as edouard@2165: published by the Free Software Foundation; either version 2 of the License, or edouard@2165: (at your option) any later version. edouard@2165: edouard@2165: See COPYING file for copyrights details. edouard@2165: edouard@2165: */ edouard@2165: Laurent@2162: include yslt.yml2 Laurent@2162: estylesheet xmlns:ns="entries_list_ns" Laurent@2162: extension-element-prefixes="ns" Laurent@2162: exclude-result-prefixes="ns" { Laurent@2162: Laurent@2162: param "min_index"; Laurent@2162: param "max_index"; Laurent@2162: Laurent@2162: template "text()"; Laurent@2162: Laurent@2162: template "Device" { Laurent@2162: apply "Profile/Dictionary/Objects/Object"; Laurent@2162: foreach "RxPdo" { Laurent@2162: call "pdo_entries" with "direction", "'Receive'"; Laurent@2162: } Laurent@2162: foreach "TxPdo" { Laurent@2162: call "pdo_entries" with "direction", "'Transmit'"; Laurent@2162: } Laurent@2162: } Laurent@2162: Laurent@2162: template "Object" { Laurent@2162: variable "index" > «ns:HexDecValue(Index/text())» Laurent@2162: variable "entry_name" > «ns:EntryName(Name)» Laurent@2162: choose { Laurent@2162: when "$index >= $min_index and $index <= $max_index" { Laurent@2162: variable "datatype_name" > «Type/text()» edouard@2641: variable "default_value" > «Info/DefaultData/text()» Laurent@2162: choose { Laurent@2162: when "ancestor::Dictionary/child::DataTypes/DataType[Name/text()=$datatype_name][SubItem]" { Laurent@2162: apply "ancestor::Dictionary/child::DataTypes/DataType[Name/text()=$datatype_name][SubItem]" { Laurent@2162: with "index" > «$index» Laurent@2162: with "entry_name" > «$entry_name» edouard@2641: with "sub_default_value" > «Info/SubItem/Info/DefaultData/text()» Laurent@2162: } Laurent@2162: } Laurent@2162: otherwise { Laurent@2162: variable "subindex" > 0 edouard@2641: variable "sub_entry_flag" > 0 Laurent@2162: variable "entry" { edouard@2641: > «ns:AddEntry($index, $subindex, $entry_name, $datatype_name, BitSize/text(), Flags/Access/text(), Flags/PdoMapping/text(), $default_value, $sub_entry_flag)» Laurent@2162: } Laurent@2162: } Laurent@2162: } Laurent@2162: } Laurent@2162: } Laurent@2162: } Laurent@2162: Laurent@2162: template "DataType" { Laurent@2162: param "index"; Laurent@2162: param "entry_name"; edouard@2641: param "sub_default_value" Laurent@2162: foreach "SubItem" { Laurent@2162: variable "subindex" > «ns:HexDecValue(SubIdx/text())» Laurent@2162: variable "subentry_name" > «$entry_name» - «ns:EntryName(DisplayName, Name/text())» edouard@2641: variable "sub_entry_flag" > 1 Laurent@2162: variable "entry" { edouard@2641: > «ns:AddEntry($index, $subindex, $subentry_name, Type/text(), BitSize/text(), Flags/Access/text(), Flags/PdoMapping/text(), $sub_default_value, $sub_entry_flag)» Laurent@2162: } Laurent@2162: } Laurent@2162: } Laurent@2162: Laurent@2162: function "pdo_entries" { Laurent@2162: param "direction"; Laurent@2162: variable "pdo_index" > «ns:HexDecValue(Index/text())» Laurent@2162: variable "pdo_name" > «ns:EntryName(Name)» Laurent@2162: foreach "Entry" { Laurent@2162: variable "index" > «ns:HexDecValue(Index/text())» Laurent@2162: choose { Laurent@2162: when "$index >= $min_index and $index <= $max_index" { Laurent@2162: variable "subindex" > «ns:HexDecValue(SubIndex/text())» Laurent@2162: variable "subentry_name" > «ns:EntryName(Name)» Laurent@2162: variable "access" { Laurent@2162: choose { Laurent@2162: when "$direction='Transmit'" > ro Laurent@2162: otherwise > wo Laurent@2162: } Laurent@2162: } Laurent@2162: variable "pdo_mapping" { Laurent@2162: choose { Laurent@2162: when "$direction='Transmit'" > T Laurent@2162: otherwise > R Laurent@2162: } Laurent@2162: } Laurent@2162: variable "entry" { Laurent@2162: > «ns:AddEntry($index, $subindex, $subentry_name, DataType/text(), BitLen/text(), $access, $pdo_mapping, $pdo_index, $pdo_name, $direction)» Laurent@2162: } Laurent@2162: } Laurent@2162: } Laurent@2162: } Laurent@2162: } edouard@2165: }