Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
wisp
GitHub Repository: wisp/impinj-reader-app
Path: blob/master/LLRP/templates.xslt
179 views
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
	xmlns:llrp="http://www.llrp.org/ltk/schema/core/encoding/binary/1.0"
  xmlns:h="http://www.w3.org/1999/xhtml">
  <xsl:output omit-xml-declaration='yes' method='text' indent='yes'/>

  <xsl:template name="DefineDataType" match="field">
    <xsl:choose>
      <xsl:when test="@enumeration and @type!='u8v'">
        ENUM_<xsl:value-of select="@enumeration"/>
      </xsl:when>
      <xsl:otherwise>
        <xsl:choose>
          <xsl:when test="@type = 'u1'">bool</xsl:when>
          <xsl:when test="@type = 'u1v'">LLRPBitArray</xsl:when>
          <xsl:when test="@type = 'u2'">TwoBits</xsl:when>
          <xsl:when test="@type = 'u8'">byte</xsl:when>
          <xsl:when test="@type = 's8'">sbyte</xsl:when>
          <xsl:when test="@type = 'u8v'">ByteArray</xsl:when>
          <xsl:when test="@type = 'u16'">UInt16</xsl:when>
          <xsl:when test="@type = 'u16v'">UInt16Array</xsl:when>
          <xsl:when test="@type = 's16'">Int16</xsl:when>
          <xsl:when test="@type = 'u32'">UInt32</xsl:when>
          <xsl:when test="@type = 'u32v'">UInt32Array</xsl:when>
          <xsl:when test="@type = 'u64'">UInt64</xsl:when>
          <xsl:when test="@type = 'utf8v'">string</xsl:when>
          <xsl:when test="@type = 'u96'">LLRPBitArray</xsl:when>
          <xsl:when test="@type = 'bytesToEnd'">ByteArray</xsl:when>
          <xsl:otherwise>Unkown_Type</xsl:otherwise>
        </xsl:choose>
      </xsl:otherwise>
    </xsl:choose>
  </xsl:template>
  <xsl:template name="DefineDefaultValue" match="field">
    <xsl:choose>
      <xsl:when test="@enumeration">;</xsl:when>
      <xsl:otherwise>
        <xsl:choose>
          <xsl:when test="@type = 'u1'">=false;</xsl:when>
          <xsl:when test="@type = 'u1v'">=new LLRPBitArray();</xsl:when>
          <xsl:when test="@type = 'u2'">=new TwoBits(0);</xsl:when>
          <xsl:when test="@type = 'u8'">=0;</xsl:when>
          <xsl:when test="@type = 's8'">=0;</xsl:when>
          <xsl:when test="@type = 'u8v'">=new ByteArray();</xsl:when>
          <xsl:when test="@type = 'u16'">=0;</xsl:when>
          <xsl:when test="@type = 'u16v'">=new UInt16Array();</xsl:when>
          <xsl:when test="@type = 's16'">=0;</xsl:when>
          <xsl:when test="@type = 'u32'">=0;</xsl:when>
          <xsl:when test="@type = 'u32v'">=new UInt32Array();</xsl:when>
          <xsl:when test="@type = 'u64'">=0;</xsl:when>
          <xsl:when test="@type = 'utf8v'">=string.Empty;</xsl:when>
          <xsl:when test="@type = 'u96'">=new LLRPBitArray();</xsl:when>
          <xsl:when test="@type = 'bytesToEnd'">=new ByteArray();</xsl:when>
          <xsl:otherwise>Unkown_Type</xsl:otherwise>
        </xsl:choose>
      </xsl:otherwise>
    </xsl:choose>
  </xsl:template>
  <xsl:template name="DefineDataLength" match="field">
    <xsl:choose>
      <xsl:when test="@enumeration and @type!='u8v'">
        private Int16 <xsl:value-of select="@name"/>_len = <xsl:choose>
          <xsl:when test="@type = 'u1'">1;</xsl:when>
          <xsl:when test="@type = 'u2'">2;</xsl:when>
          <xsl:when test="@type = 'u8'">8;</xsl:when>
          <xsl:when test="@type = 'u16'">16;</xsl:when>
          <xsl:when test="@type = 'u32'">32;</xsl:when>
          <xsl:otherwise>Unknown_Length;</xsl:otherwise>
        </xsl:choose>
      </xsl:when>
      <xsl:when test="@format='Hex'">
        private Int16 <xsl:value-of select="@name"/>_len;
      </xsl:when>
      <xsl:when test="@format='UTF8'">
        private Int16 <xsl:value-of select="@name"/>_len;
      </xsl:when>
      <xsl:otherwise>
        private Int16 <xsl:value-of select="@name"/>_len=0;
      </xsl:otherwise>
    </xsl:choose>
  </xsl:template>
  <xsl:template name="DefineParameterName" match="field">
    <xsl:choose>
      <xsl:when test="@name">
        <xsl:value-of select="@name"/>
      </xsl:when>
      <xsl:otherwise>
        <xsl:value-of select="@type"/>
      </xsl:otherwise>
    </xsl:choose>
  </xsl:template>
  <xsl:template name="DefineParameterType" match="parameter">
    <xsl:choose>
      <xsl:when test="@repeat = '1'"></xsl:when>
      <xsl:when test="@repeat = '0-1'"></xsl:when>
      <xsl:when test="@repeat = '1-N'">[]</xsl:when>
      <xsl:when test="@repeat = '0-N'">[]</xsl:when>
      <xsl:otherwise>Unknown_Type</xsl:otherwise>
    </xsl:choose>
  </xsl:template>
  
</xsl:stylesheet>