<sunSpecModels v="1">
  <!-- 5: security write request model -->
  <model id="5" len="89">
    <block len="88">
      <point id="X" offset="0" type="uint16" access="rw" mandatory="true"/>
      <point id="Off1" offset="1" type="uint16" access="rw" mandatory="true" />
      <point id="Val1" offset="2" type="uint16" access="rw" mandatory="true" />
      <point id="Off2" offset="3" type="uint16" access="rw" mandatory="true" />
      <point id="Val2" offset="4" type="uint16" access="rw" mandatory="true" />
      <point id="Off3" offset="5" type="uint16" access="rw" mandatory="true" />
      <point id="Val3" offset="6" type="uint16" access="rw" mandatory="true" />
      <point id="Off4" offset="7" type="uint16" access="rw" mandatory="true" />
      <point id="Val4" offset="8" type="uint16" access="rw" mandatory="true" />
      <point id="Off5" offset="9" type="uint16" access="rw" mandatory="true" />
      <point id="Val5" offset="10" type="uint16" access="rw" mandatory="true" />
      <point id="Off6" offset="11" type="uint16" access="rw" mandatory="true" />
      <point id="Val6" offset="12" type="uint16" access="rw" mandatory="true" />
      <point id="Off7" offset="13" type="uint16" access="rw" mandatory="true" />
      <point id="Val7" offset="14" type="uint16" access="rw" mandatory="true" />
      <point id="Off8" offset="15" type="uint16" access="rw" mandatory="true" />
      <point id="Val8" offset="16" type="uint16" access="rw" mandatory="true" />
      <point id="Off9" offset="17" type="uint16" access="rw" mandatory="true" />
      <point id="Val9" offset="18" type="uint16" access="rw" mandatory="true" />
      <point id="Off10" offset="19" type="uint16" access="rw" mandatory="true" />
      <point id="Val10" offset="20" type="uint16" access="rw" mandatory="true" />
      <point id="Off11" offset="21" type="uint16" access="rw" mandatory="true" />
      <point id="Val11" offset="22" type="uint16" access="rw" mandatory="true" />
      <point id="Off12" offset="23" type="uint16" access="rw" mandatory="true" />
      <point id="Val12" offset="24" type="uint16" access="rw" mandatory="true" />
      <point id="Off13" offset="25" type="uint16" access="rw" mandatory="true" />
      <point id="Val13" offset="26" type="uint16" access="rw" mandatory="true" />
      <point id="Off14" offset="27" type="uint16" access="rw" mandatory="true" />
      <point id="Val14" offset="28" type="uint16" access="rw" mandatory="true" />
      <point id="Off15" offset="29" type="uint16" access="rw" mandatory="true" />
      <point id="Val15" offset="30" type="uint16" access="rw" mandatory="true" />
      <point id="Off16" offset="31" type="uint16" access="rw" mandatory="true" />
      <point id="Val16" offset="32" type="uint16" access="rw" mandatory="true" />
      <point id="Off17" offset="33" type="uint16" access="rw" mandatory="true" />
      <point id="Val17" offset="34" type="uint16" access="rw" mandatory="true" />
      <point id="Off18" offset="35" type="uint16" access="rw" mandatory="true" />
      <point id="Val18" offset="36" type="uint16" access="rw" mandatory="true" />
      <point id="Off19" offset="37" type="uint16" access="rw" mandatory="true" />
      <point id="Val19" offset="38" type="uint16" access="rw" mandatory="true" />
      <point id="Off20" offset="39" type="uint16" access="rw" mandatory="true" />
      <point id="Val20" offset="40" type="uint16" access="rw" mandatory="true" />
      <point id="Off21" offset="41" type="uint16" access="rw" mandatory="true" />
      <point id="Val21" offset="42" type="uint16" access="rw" mandatory="true" />
      <point id="Off22" offset="43" type="uint16" access="rw" mandatory="true" />
      <point id="Val22" offset="44" type="uint16" access="rw" mandatory="true" />
      <point id="Off23" offset="45" type="uint16" access="rw" mandatory="true" />
      <point id="Val23" offset="46" type="uint16" access="rw" mandatory="true" />
      <point id="Off24" offset="47" type="uint16" access="rw" mandatory="true" />
      <point id="Val24" offset="48" type="uint16" access="rw" mandatory="true" />
      <point id="Off25" offset="49" type="uint16" access="rw" mandatory="true" />
      <point id="Val25" offset="50" type="uint16" access="rw" mandatory="true" />
      <point id="Off26" offset="51" type="uint16" access="rw" mandatory="true" />
      <point id="Val26" offset="52" type="uint16" access="rw" mandatory="true" />
      <point id="Off27" offset="53" type="uint16" access="rw" mandatory="true" />
      <point id="Val27" offset="54" type="uint16" access="rw" mandatory="true" />
      <point id="Off28" offset="55" type="uint16" access="rw" mandatory="true" />
      <point id="Val28" offset="56" type="uint16" access="rw" mandatory="true" />
      <point id="Off29" offset="57" type="uint16" access="rw" mandatory="true" />
      <point id="Val29" offset="58" type="uint16" access="rw" mandatory="true" />
      <point id="Off30" offset="59" type="uint16" access="rw" mandatory="true" />
      <point id="Val30" offset="60" type="uint16" access="rw" mandatory="true" />
      <point id="Off31" offset="61" type="uint16" access="rw" mandatory="true" />
      <point id="Val31" offset="62" type="uint16" access="rw" mandatory="true" />
      <point id="Off32" offset="63" type="uint16" access="rw" mandatory="true" />
      <point id="Val32" offset="64" type="uint16" access="rw" mandatory="true" />
      <point id="Off33" offset="65" type="uint16" access="rw" mandatory="true" />
      <point id="Val33" offset="66" type="uint16" access="rw" mandatory="true" />
      <point id="Off34" offset="67" type="uint16" access="rw" mandatory="true" />
      <point id="Val34" offset="68" type="uint16" access="rw" mandatory="true" />
      <point id="Off35" offset="69" type="uint16" access="rw" mandatory="true" />
      <point id="Val35" offset="70" type="uint16" access="rw" mandatory="true" />
      <point id="Off36" offset="71" type="uint16" access="rw" mandatory="true" />
      <point id="Val36" offset="72" type="uint16" access="rw" mandatory="true" />
      <point id="Off37" offset="73" type="uint16" access="rw" mandatory="true" />
      <point id="Val37" offset="74" type="uint16" access="rw" mandatory="true" />
      <point id="Off38" offset="75" type="uint16" access="rw" mandatory="true" />
      <point id="Val38" offset="76" type="uint16" access="rw" mandatory="true" />
      <point id="Off39" offset="77" type="uint16" access="rw" mandatory="true" />
      <point id="Val39" offset="78" type="uint16" access="rw" mandatory="true" />
      <point id="Off40" offset="79" type="uint16" access="rw" mandatory="true" />
      <point id="Val40" offset="80" type="uint16" access="rw" mandatory="true" />
      <point id="Ts"   offset="81" type="uint32" access="rw" mandatory="true" />
      <point id="Ms" offset="83" type="uint16" access="rw" mandatory="true" />
      <point id="Seq" offset="84" type="uint16" access="rw" mandatory="true" />
      <point id="Role" offset="85" type="uint16" access="rw" mandatory="true" />
      <point id="Alg"   offset="86" type="enum16" access="rw" mandatory="true">
        <symbol id="NONE">0</symbol>
        <symbol id="AES-GMAC-64">1</symbol>
        <symbol id="ECC-256">2</symbol>
      </point>
      <point id="N" offset="87" type="uint16" access="rw" mandatory="true" />
    </block>
    <block type="repeating" len="1">
      <point id="DS" offset="0" type="uint16" access="rw" mandatory="true" />
    </block>
  </model>
  <strings id="5" locale="en">
    <model>
      <label>Secure Write Request</label>
      <description>Include a digital signature along with the control data</description>
      <notes></notes>
    </model>
    <point id="Alg">
      <label>Algorithm</label>
      <description>Algorithm used to compute the digital signature</description>
      <notes>For future proof</notes>
      <symbol id="NONE">
        <label>NONE</label>
        <description>No digital signature</description>
        <notes>For test purposes only</notes>
      </symbol>
      <symbol id="AES-GMAC-64">
        <label>AES-GMAC-64</label>
        <description>64 bit AES signature algorithm is used</description>
        <notes></notes>
      </symbol>
      <symbol id="ECC-256">
        <label>ECC-256</label>
        <description>256 bit ECC signature algorithm is used</description>
        <notes></notes>
      </symbol>
    </point>
    <point id="Ts">
      <label>Timestamp</label>
      <description>Timestamp value is the number of seconds since January 1, 2000</description>
      <notes></notes>
    </point>
    <point id="Ms">
      <label>Milliseconds</label>
      <description>Millisecond counter 0-999</description>
      <notes></notes>
    </point>
    <point id="Seq">
      <label>Sequence</label>
      <description>Sequence number of request</description>
      <notes>Shall be advanced for each request</notes>
    </point>
    <point id="Role">
      <label>Role</label>
      <description>Signing key used 0-5</description>
      <notes>Each controller is assigned a key index that maps to their access control role</notes>
    </point>
    <point id="N">
      <label>N</label>
      <description>Number of registers comprising the digital signature.</description>
      <notes>The value of N must be at least 4 (64 bits)</notes>
    </point>
    <point id="X">
      <label>X</label>
      <description>Number of (offset, value) pairs being written</description>
      <notes>A max of 50 (offset, value) pairs are allocated</notes>
    </point>
    <point id="Off1">
      <label>Offset1</label>
      <description>Offset of control register to write value to</description>
      <notes></notes>
    </point>
    <point id="Val1">
      <label>Value1</label>
      <description>Value to write to control register at offset</description>
      <notes></notes>
    </point>
    <point id="DS">
      <label>DS</label>
      <description>Digital Signature</description>
      <notes>The DS covers all registers from X to N and is N registers in length</notes>
    </point>
  </strings>
</sunSpecModels>
