diff -r 4bea1d98db46 -r 43ab74687f45 etherlab/entries_list.ysl2 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etherlab/entries_list.ysl2 Wed Oct 02 10:46:18 2013 +0200 @@ -0,0 +1,86 @@ +include yslt.yml2 +estylesheet xmlns:ns="entries_list_ns" + extension-element-prefixes="ns" + exclude-result-prefixes="ns" { + + param "min_index"; + param "max_index"; + + template "text()"; + + template "Device" { + apply "Profile/Dictionary/Objects/Object"; + foreach "RxPdo" { + call "pdo_entries" with "direction", "'Receive'"; + } + foreach "TxPdo" { + call "pdo_entries" with "direction", "'Transmit'"; + } + } + + template "Object" { + variable "index" > «ns:HexDecValue(Index/text())» + variable "entry_name" > «ns:EntryName(Name)» + choose { + when "$index >= $min_index and $index <= $max_index" { + variable "datatype_name" > «Type/text()» + choose { + when "ancestor::Dictionary/child::DataTypes/DataType[Name/text()=$datatype_name][SubItem]" { + apply "ancestor::Dictionary/child::DataTypes/DataType[Name/text()=$datatype_name][SubItem]" { + with "index" > «$index» + with "entry_name" > «$entry_name» + } + } + otherwise { + variable "subindex" > 0 + variable "entry" { + > «ns:AddEntry($index, $subindex, $entry_name, $datatype_name, BitSize/text(), Flags/Access/text(), Flags/PdoMapping/text())» + } + } + } + } + } + } + + template "DataType" { + param "index"; + param "entry_name"; + foreach "SubItem" { + variable "subindex" > «ns:HexDecValue(SubIdx/text())» + variable "subentry_name" > «$entry_name» - «ns:EntryName(DisplayName, Name/text())» + variable "entry" { + > «ns:AddEntry($index, $subindex, $subentry_name, Type/text(), BitSize/text(), Flags/Access/text(), Flags/PdoMapping/text())» + } + } + } + + function "pdo_entries" { + param "direction"; + variable "pdo_index" > «ns:HexDecValue(Index/text())» + variable "pdo_name" > «ns:EntryName(Name)» + foreach "Entry" { + variable "index" > «ns:HexDecValue(Index/text())» + choose { + when "$index >= $min_index and $index <= $max_index" { + variable "subindex" > «ns:HexDecValue(SubIndex/text())» + variable "subentry_name" > «ns:EntryName(Name)» + variable "access" { + choose { + when "$direction='Transmit'" > ro + otherwise > wo + } + } + variable "pdo_mapping" { + choose { + when "$direction='Transmit'" > T + otherwise > R + } + } + variable "entry" { + > «ns:AddEntry($index, $subindex, $subentry_name, DataType/text(), BitLen/text(), $access, $pdo_mapping, $pdo_index, $pdo_name, $direction)» + } + } + } + } + } +} \ No newline at end of file