powersync-plugins-modbus/libnymea-sunspec/tools/models/smdx/smdx_00005.xml

174 lines
9.9 KiB
XML

<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>