objdictgen/config/objdict.xsd
changeset 0 4472ee7c6c3e
equal deleted inserted replaced
-1:000000000000 0:4472ee7c6c3e
       
     1 <?xml version="1.0" encoding="ISO-8859-1" ?>
       
     2 <!-- 
       
     3 This file is part of CanFestival, a library implementing CanOpen Stack. 
       
     4 
       
     5 Copyright (C): Francis DUPIN
       
     6 
       
     7 See COPYING file for copyrights details.
       
     8 
       
     9 This library is free software; you can redistribute it and/or
       
    10 modify it under the terms of the GNU Lesser General Public
       
    11 License as published by the Free Software Foundation; either
       
    12 version 2.1 of the License, or (at your option) any later version.
       
    13 
       
    14 This library is distributed in the hope that it will be useful,
       
    15 but WITHOUT ANY WARRANTY; without even the implied warranty of
       
    16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
       
    17 Lesser General Public License for more details.
       
    18 
       
    19 You should have received a copy of the GNU Lesser General Public
       
    20 License along with this library; if not, write to the Free Software
       
    21 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
       
    22 -->
       
    23 
       
    24 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
       
    25 
       
    26   <!-- Rangement par ordre alphabétique -->
       
    27 
       
    28   <!-- Définition des types -->
       
    29 
       
    30  <xs:simpleType name="taccess"> <!-- "ro" ou "rw" -->
       
    31     <xs:restriction base="xs:NMTOKEN">
       
    32       <xs:pattern value="(ro|rw)" />
       
    33     </xs:restriction>
       
    34   </xs:simpleType>
       
    35 
       
    36 
       
    37   <xs:simpleType name="tevent_timer">
       
    38     <xs:restriction base="xs:unsignedInt"> 
       
    39       <xs:maxInclusive value="65535"/>
       
    40     </xs:restriction>
       
    41   </xs:simpleType>
       
    42 
       
    43   <xs:simpleType name="thex64"> <!-- Un nombre hexadecimal sur 64 bits -->
       
    44     <xs:restriction base="xs:NMTOKEN">
       
    45       <xs:pattern value="0(x|X)([0-F]|[a-f]){1,16}" />
       
    46     </xs:restriction>
       
    47   </xs:simpleType>
       
    48 
       
    49   <xs:simpleType name="thex32"> <!-- Un nombre hexadecimal sur 32 bits -->
       
    50     <xs:restriction base="xs:NMTOKEN">
       
    51       <xs:pattern value="0(x|X)([0-F]|[a-f]){1,8}" />
       
    52     </xs:restriction>
       
    53   </xs:simpleType>
       
    54 
       
    55   <xs:simpleType name="thex16"> <!-- Un nombre hexadecimal sur 16 bits -->
       
    56     <xs:restriction base="xs:NMTOKEN">
       
    57       <xs:pattern value="0(x|X)([0-F]|[a-f]){1,4}" />
       
    58     </xs:restriction>
       
    59   </xs:simpleType>
       
    60 
       
    61   <xs:simpleType name="thex11"> <!-- Un nombre entre 0x0 et 0x7FF (11 bits) -->
       
    62     <xs:restriction base="xs:NMTOKEN">
       
    63       <xs:pattern value="0(x|X)[0-7]?([0-F]|[a-f]){1,2}" />
       
    64     </xs:restriction>
       
    65   </xs:simpleType>
       
    66 
       
    67   <xs:simpleType name="thex8"> <!-- Un nombre hexadecimal sur 8 bits -->
       
    68     <xs:restriction base="xs:NMTOKEN">
       
    69       <xs:pattern value="0(x|X)([0-F]|[a-f]){1,4}" />
       
    70     </xs:restriction>
       
    71   </xs:simpleType>
       
    72 
       
    73   <xs:simpleType name="thex7"> <!-- Un nombre entre 0x0 et 0x7F -->
       
    74     <xs:restriction base="xs:NMTOKEN">
       
    75       <xs:pattern value="0(x|X)[0-7]?([0-F]|[a-f])" />
       
    76     </xs:restriction>
       
    77   </xs:simpleType>
       
    78 
       
    79   <xs:simpleType name="tindex_var"> <!-- Un nombre entre 0x2000 et 0x9FFF (16 bits) -->
       
    80     <xs:restriction base="xs:NMTOKEN">
       
    81       <xs:pattern value="0(x|X)[2-9]([0-F]|[a-f]){3}" />
       
    82     </xs:restriction>
       
    83   </xs:simpleType>
       
    84 
       
    85   <xs:simpleType name="tinhibit_time">
       
    86     <xs:restriction base="xs:unsignedInt">
       
    87       <xs:maxInclusive value="65535"/>
       
    88     </xs:restriction>
       
    89   </xs:simpleType>
       
    90 
       
    91   <xs:simpleType name="tmode_pdo"> <!-- "tx" ou "rx" -->
       
    92     <xs:restriction base="xs:NMTOKEN">
       
    93       <xs:pattern value="(tx|rx)" />
       
    94     </xs:restriction>
       
    95   </xs:simpleType>
       
    96 
       
    97   <xs:simpleType name="tnbr_elts_mapped_table"> <!-- Un nombre entre 1 et 50  -->
       
    98     <xs:restriction base="xs:unsignedShort">
       
    99       <xs:minInclusive value="1"/>
       
   100       <xs:maxInclusive value="50"/>
       
   101     </xs:restriction>
       
   102   </xs:simpleType>
       
   103 
       
   104   <xs:simpleType name="tnbr_heartbeat_consumers"> <!-- Un nombre entre 1 et 50  -->
       
   105     <xs:restriction base="xs:unsignedShort">
       
   106       <xs:minInclusive value="1"/>
       
   107       <xs:maxInclusive value="50"/>
       
   108     </xs:restriction>
       
   109   </xs:simpleType>
       
   110 
       
   111   <xs:simpleType name="tmax_objects_in_pdo"> <!-- Un nombre entre 1 et 8  -->
       
   112     <xs:restriction base="xs:unsignedShort">
       
   113       <xs:minInclusive value="1"/>
       
   114       <xs:maxInclusive value="8"/>
       
   115     </xs:restriction>
       
   116   </xs:simpleType>
       
   117 
       
   118   <xs:simpleType name="tnbr_pdo"> <!-- Un nombre entre 1 et 510  -->
       
   119     <xs:restriction base="xs:unsignedShort">
       
   120       <xs:minInclusive value="1"/>
       
   121       <xs:maxInclusive value="510"/>
       
   122     </xs:restriction>
       
   123   </xs:simpleType>
       
   124 
       
   125   <xs:simpleType name="tnbr_sdo_clients"> <!-- Un nombre entre 1 et 50  -->
       
   126     <xs:restriction base="xs:unsignedShort">
       
   127       <xs:minInclusive value="1"/>
       
   128       <xs:maxInclusive value="50"/>
       
   129     </xs:restriction>
       
   130   </xs:simpleType>
       
   131 
       
   132   <xs:simpleType name="tsize"> <!-- Un nombre entre 1 et 8  -->
       
   133     <xs:restriction base="xs:unsignedShort">
       
   134       <xs:minInclusive value="1"/>
       
   135       <xs:maxInclusive value="8"/>
       
   136     </xs:restriction>
       
   137   </xs:simpleType>
       
   138 
       
   139   <xs:simpleType name="tsize_in_bits"> <!-- 8, 16 ou 32 bits -->
       
   140     <xs:restriction base="xs:NMTOKEN">
       
   141       <xs:pattern value="(8)|(16)|(32)" />
       
   142     </xs:restriction>
       
   143   </xs:simpleType>
       
   144 
       
   145   <xs:simpleType name="ttransmission_type"> <!-- Un nombre entre 0 et 255  -->
       
   146     <xs:restriction base="xs:unsignedShort">
       
   147       <xs:minInclusive value="0"/>
       
   148       <xs:maxInclusive value="255"/>
       
   149     </xs:restriction>
       
   150   </xs:simpleType>
       
   151 
       
   152   <xs:simpleType name="ttype_node"> <!-- "master" ou "slave" -->
       
   153     <xs:restriction base="xs:NMTOKEN">
       
   154       <xs:pattern value="(master|slave)" />
       
   155     </xs:restriction>
       
   156   </xs:simpleType>
       
   157 
       
   158   <xs:simpleType name="ttype_var"> 
       
   159     <xs:restriction base="xs:NMTOKEN">
       
   160       <xs:pattern value="(UNS|REAL)" />
       
   161     </xs:restriction>
       
   162   </xs:simpleType>
       
   163 
       
   164   <!-- Définition des éléments de type simple -->
       
   165   <xs:element name="compatibility_entry" type="thex7"></xs:element>
       
   166   <xs:element name="event_timer" type="tevent_timer"></xs:element>
       
   167   <xs:element name="inhibit_time" type="tinhibit_time"></xs:element>
       
   168   <xs:element name="node_id" type="thex11"></xs:element>
       
   169   <xs:element name="size" type="tsize"></xs:element>
       
   170   <xs:element name="transmission_type" type="thex8"></xs:element>
       
   171   <xs:element name="value_int" type="thex64"></xs:element>
       
   172 
       
   173   <!-- Définition des éléments de type complexe -->
       
   174  
       
   175   <xs:element name="node">
       
   176     <xs:complexType>
       
   177       <xs:sequence  minOccurs="1" maxOccurs="1">
       
   178 	<xs:element ref="heartbeat_consumers" minOccurs="1" maxOccurs="1" />
       
   179         <xs:element ref="sdo_clients" minOccurs="1" maxOccurs="1" />
       
   180 	<!--<xs:element ref="pdo_param" minOccurs="1" maxOccurs="1" />  Obsolet -->
       
   181 	<!--<xs:element ref="pdo_receive" minOccurs="1" maxOccurs="1" /> Obsolet -->
       
   182 	<!--<xs:element ref="pdo_transmit" minOccurs="1" maxOccurs="1" /> Obsolet -->
       
   183         <xs:element ref="pdo" minOccurs="0" maxOccurs="500" />
       
   184 	<xs:element ref="mapped_variable" minOccurs="0" maxOccurs="200" />
       
   185 	<xs:element ref="mapped_table" minOccurs="0" maxOccurs="200" />
       
   186 	<xs:element ref="mapped_string_variable" minOccurs="0" maxOccurs="200" />
       
   187 	<!--<xs:element ref="mapped_string_table" minOccurs="0" maxOccurs="200" />-->
       
   188       </xs:sequence>
       
   189       <xs:attribute name="name" type="xs:NMTOKEN" use="required" />
       
   190       <xs:attribute name="type_node" type="ttype_node" use="required" />
       
   191       <xs:attribute name="node_id" type="thex11" use="optional" />
       
   192       <xs:attribute name="device_type_1000" type="thex32" use="optional" />
       
   193       <xs:attribute name="manufacturer_device_name_1008" type="xs:string" use="optional" />
       
   194       <xs:attribute name="manufacturer_hardware_version_1009" type="xs:string" use="optional" />
       
   195       <xs:attribute name="manufacturer_software_version_100A" type="xs:string" use="optional" />
       
   196       <xs:attribute name="vendor_id_1018" type="thex32" use="optional" />
       
   197       <xs:attribute name="product_code_1018" type="thex32" use="optional" />
       
   198       <xs:attribute name="revision_number_1018" type="thex32" use="optional" />
       
   199       <xs:attribute name="serial_number_1018" type="thex32" use="optional" />
       
   200     </xs:complexType>
       
   201   </xs:element>
       
   202 
       
   203   <xs:element name="heartbeat_consumers" >
       
   204     <xs:complexType>
       
   205       <xs:attribute name="nombre" type="tnbr_heartbeat_consumers" use="required"/>
       
   206     </xs:complexType>
       
   207   </xs:element>
       
   208 
       
   209   <xs:element name="sdo_clients" >
       
   210     <xs:complexType>
       
   211       <xs:attribute name="nombre" type="tnbr_sdo_clients" use="required"/>
       
   212     </xs:complexType>
       
   213   </xs:element>
       
   214 
       
   215   <xs:element name="pdo_param" > <!-- Obsolet -->
       
   216     <xs:complexType>
       
   217       <xs:attribute name="max_objects_in_pdo" type="tmax_objects_in_pdo" use="required"/>
       
   218     </xs:complexType>
       
   219   </xs:element>
       
   220 
       
   221   <xs:element name="pdo_receive" > <!-- Obsolet -->
       
   222     <xs:complexType>
       
   223       <xs:attribute name="nombre" type="tnbr_pdo" use="required"/>
       
   224     </xs:complexType>
       
   225   </xs:element>
       
   226 
       
   227   <xs:element name="pdo_transmit" >  <!-- Obsolet -->
       
   228     <xs:complexType>
       
   229       <xs:attribute name="nombre" type="tnbr_pdo" use="required"/>
       
   230     </xs:complexType>
       
   231   </xs:element>
       
   232 
       
   233   <xs:element name="pdo" >
       
   234     <xs:complexType>
       
   235       <xs:sequence  minOccurs="1" maxOccurs="1">
       
   236 	<xs:element ref="mapped_object" minOccurs="0" maxOccurs="8" />
       
   237       </xs:sequence>
       
   238       <xs:attribute name="type_rx_tx" type="tmode_pdo" use="required"/>
       
   239       <xs:attribute name="index_communication_parameter" type="thex16" use="optional"/>
       
   240       <xs:attribute name="cob_id" type="thex11" use="optional"/>
       
   241       <xs:attribute name="max_objects_in_pdo" type="tmax_objects_in_pdo" use="optional"/>
       
   242       <xs:attribute name="transmission_type" type="ttransmission_type" use="optional"/>
       
   243     </xs:complexType>
       
   244   </xs:element>
       
   245 
       
   246   <xs:element name="mapped_object" >
       
   247     <xs:complexType>
       
   248       <xs:attribute name="name" type="xs:NMTOKEN" use="optional"/>
       
   249       <xs:attribute name="size_in_bits" type="tsize_in_bits" use="required"/>
       
   250       <xs:attribute name="index" type="tindex_var" use="required"/>
       
   251       <xs:attribute name="sub_index" type="thex8" use="required"/>
       
   252     </xs:complexType>
       
   253   </xs:element>
       
   254 
       
   255   <xs:element name="mapped_variable" >
       
   256     <xs:complexType>
       
   257       <xs:attribute name="name" type="xs:NMTOKEN" use="required"/>
       
   258       <xs:attribute name="size_in_bits" type="tsize_in_bits" use="required"/>
       
   259       <xs:attribute name="index" type="tindex_var" use="required"/>
       
   260       <xs:attribute name="sub_index" type="thex8" use="required"/>
       
   261       <xs:attribute name="type" type="ttype_var" use="optional"/>
       
   262       <xs:attribute name="access" type="taccess" use="optional"/>
       
   263       <xs:attribute name="min_value" type="xs:anySimpleType" use="optional"/>
       
   264       <xs:attribute name="max_value" type="xs:anySimpleType" use="optional"/>
       
   265     </xs:complexType>
       
   266   </xs:element>
       
   267 
       
   268 
       
   269 
       
   270   <xs:element name="mapped_table" >
       
   271     <xs:complexType>
       
   272       <xs:attribute name="name" type="xs:NMTOKEN" use="required"/>
       
   273       <xs:attribute name="number_elements" type="tnbr_elts_mapped_table" use="required"/>
       
   274       <xs:attribute name="size_in_bits" type="tsize_in_bits" use="required"/>
       
   275       <xs:attribute name="index" type="tindex_var" use="required"/>
       
   276       <xs:attribute name="type" type="ttype_var" use="optional"/>
       
   277       <xs:attribute name="access" type="taccess" use="optional"/>
       
   278       <xs:attribute name="min_value" type="xs:decimal" use="optional"/>
       
   279       <xs:attribute name="max_value" type="xs:decimal" use="optional"/>
       
   280     </xs:complexType>
       
   281   </xs:element>
       
   282 
       
   283   <xs:element name="mapped_string_variable" >
       
   284     <xs:complexType>
       
   285       <xs:attribute name="name" type="xs:NMTOKEN" use="required"/>
       
   286       <xs:attribute name="size_in_byte" type="xs:unsignedInt" use="required"/>
       
   287       <xs:attribute name="index" type="tindex_var" use="required"/>
       
   288       <xs:attribute name="sub_index" type="thex8" use="required"/>
       
   289       <xs:attribute name="access" type="taccess" use="optional"/>
       
   290     </xs:complexType>
       
   291   </xs:element>
       
   292 
       
   293 
       
   294   <xs:element name="mapped_string_table" >
       
   295     <xs:complexType>
       
   296       <xs:attribute name="name" type="xs:NMTOKEN" use="required"/>
       
   297       <xs:attribute name="number_elements" type="tnbr_elts_mapped_table" use="required"/>
       
   298       <xs:attribute name="size_in_byte" type="xs:unsignedInt" use="required"/>
       
   299       <xs:attribute name="index" type="tindex_var" use="required"/>
       
   300       <xs:attribute name="access" type="taccess" use="optional"/>
       
   301     </xs:complexType>
       
   302   </xs:element>
       
   303 
       
   304 </xs:schema>