<?xml version="1.0" encoding="UTF-8"?>
<Domain xmlns="http://www.soti.net/connect-definitions"
  xmlns:xi="http://www.w3.org/2001/XInclude"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.soti.net/connect-definitions ../../../Soti.Connect.ProtocolDefinitions/Soti.Connect.ProtocolDefinitions.Parser/protocol.xsd">
  <Imports>
    <xi:include href="./base-rest-protocol.xml" parse="xml" />
  </Imports>

  <Messages>
    <Message id="NotSupported" />

    <Message id="FactoryReset" />

    <Message id="Reboot" />

    <Message id="ObserveBatteryCharge" />

    <Message id="CancelObserveBatteryCharge" />

    <Message id="ObserveLocation" />

    <Message id="CancelObserveLocation" />

    <Message id="GetPrinterState" />

    <Message id="PrintTestPage" />

    <Message id="InstallPackage">
      <Object id="Resource">
        <Segment id="File" type="file" />
        <!--optional-->
        <Segment id="Type" type="string" />
      </Object>
    </Message>

    <Message id="InstallPackageFromUrl">
      <Object id="Resource">
        <Segment id="Url" type="uri" />
      </Object>
    </Message>

    <Message id="InstallPackageFromFileStore">
      <Object id="Resource">
        <Segment id="File" type="filestore" />
      </Object>
    </Message>

    <Message id="SOTIFactoryReset" />

    <Message id="SOTIReboot" />

    <Message id="SOTIGetLogFile">
      <Segment id="Resource" type="string" />
    </Message>

    <Message id="SOTILogFile">
      <Object id="Resource">
        <Segment id="content" type="datafile" reference="content" />
        <Segment id="contentName" type="datafile" reference="contentName" />
        <Segment id="contentLength" type="datafile" reference="contentLength" />
        <Segment id="contentType" type="datafile" reference="contentType" />
      </Object>
    </Message>

    <Message id="SOTIObserveBatteryCharge" />

    <Message id="SOTICancelObserveBatteryCharge" />

    <Message id="SOTIGetPrinterState" />

    <Message id="SOTIPrintTestPage" />

    <Message id="SOTIInstallPackage">
      <Object id="Resource">
        <Segment id="File" type="file" />
        <!--optional-->
        <Segment id="Type" type="string" />
      </Object>
    </Message>

    <Message id="SOTIInstallPackageFromUrl">
      <Object id="Resource">
        <Segment id="Url" type="uri" />
      </Object>
    </Message>

    <Message id="SOTIInstallPackageFromFileStore">
      <Object id="Resource">
        <Segment id="File" type="filestore" />
      </Object>
    </Message>

    <Message id="SOTIBatteryChargeNotification">
      <DataPointReference id="Resource" path="chargeModule#charge" />
    </Message>

    <Message id="SimLocationNotification">
      <DataPointReference id="Resource" path="Location#location">
        <PropertyMapping id="longitude" property="longitude" />
        <PropertyMapping id="latitude" property="latitude" />
        <PropertyMapping id="altitude" property="altitude" />
      </DataPointReference>
    </Message>
    <Message id="Alert">
      <Object id="Resource">
        <DataPointReference id="id" path="MqttSdkPrinterAlert#AlertId" />
        <DataPointReference id="description" path="MqttSdkPrinterAlert#AlertDescription" />
        <DataPointReference id="type" path="MqttSdkPrinterAlert#AlertType" />
        <DataPointReference id="priority" path="MqttSdkPrinterAlert#AlertPriority" />
        <DataPointReference id="timestamp" path="MqttSdkPrinterAlert#Timestamp" />
      </Object>
    </Message>

    <Message id="SOTIChangePrinterSettings">
      <Object id="Resource">
        <Segment id="darkness" type="integer" />
        <Segment id="speed" type="float" />

        <Segment id="print_mode" type="string" />
        <Segment id="media_handling" type="string" />

        <Segment id="enable_wifi" type="boolean" />
      </Object>
    </Message>

    <Message id="SOTIChangeMQTTSettings">
      <Object id="Resource">
        <Segment id="server_address" type="string" />
        <Segment id="server_port" type="integer" />
        <Segment id="use_tls" type="boolean" />
        <Segment id="tenant_id" type="string" />
        <Segment id="qos" type="integer" />
        <Segment id="ca_cert" type="filestore" />
        <Segment id="client_cert" type="filestore" />
        <Segment id="client_key" type="filestore" />
        <Segment id="client_key_password" type="string" />
        <Segment id="username" type="string" />
        <Segment id="password" type="string" />
      </Object>
    </Message>

    <Message id="SOTIUpdateWifiCerts">
      <Object id="Resource">
        <Segment id="ca_cert" type="filestore" />
        <Segment id="client_cert" type="filestore" />
        <Segment id="client_key" type="filestore" />
        <Segment id="client_key_password" type="string" />
      </Object>
    </Message>

    <Message id="SOTIUpdateHTTPRootCert">
      <Object id="Resource">
        <Segment id="Url" type="uri" />
      </Object>
    </Message>

    <Message id="SOTIPrinterSettings">
      <Object id="Resource">
        <DataPointReference id="darkness" path="PrintDarkness#darkness" />
        <DataPointReference id="speed" path="MqttSdkPrinter#printing-speed" />

        <DataPointReference id="print_mode" path="MqttSdkPrinter#media-print-mode" />
        <DataPointReference id="media_handling" path="MqttSdkPrinter#media-handling" />

        <DataPointReference id="enable_wifi" path="MqttSdkPrinter#EnableWifi" />
      </Object>
    </Message>

    <Message id="SOTIDeviceMQTTSettings">
      <Object id="Resource">
        <DataPointReference id="server_address" path="MQTT-Settings#mqtt_server_ip_addr" />
        <DataPointReference id="server_port" path="MQTT-Settings#mqtt_port_number" />
        <DataPointReference id="use_tls" path="MqttSpecificSettingsSDK#use_tls" />
        <DataPointReference id="tenant_id" path="MQTT-Settings#tenant_id" />
        <DataPointReference id="qos" path="MqttSpecificSettingsSDK#qos" />
        <DataPointReference id="ca_cert" path="MqttSpecificSettingsSDK#ca_cert" />
        <DataPointReference id="client_cert" path="MqttSpecificSettingsSDK#client_cert" />
        <DataPointReference id="client_key" path="MqttSpecificSettingsSDK#client_key" />
        <DataPointReference id="username" path="MQTT-Settings#mqtt_user_name" />
      </Object>
    </Message>

    <Message id="SOTIPrinterState">
      <Object id="Resource">
        <Object id="device_info">
          <DataPointReference id="device_id" path="base-module#device-id" />
          <DataPointReference id="model" path="base-module#model-id" />
          <DataPointReference id="name" path="base-module#device-name" />
          <DataPointReference id="manufacturer" path="base-module#manufacturer" />
          <DataPointReference id="version" path="base-module#version" />

          <DataPointReference id="mac" path="GenericNetworkIP4WLan#generic-network-mac" />
          <DataPointReference id="ip_addr" path="GenericNetworkIP4WLan#generic-network-ipaddress" />

        </Object>

        <Object id="battery">
          <DataPointReference id="temperature" path="BatteryInfo#temperature" />
          <DataPointReference id="voltage" path="voltageModule#voltage" />
          <DataPointReference id="charge_state" path="chargeModule#charge" />
          <DataPointReference id="status" path="BatteryInfo#status" />

        </Object>

        <Object id="settings">
          <DataPointReference id="darkness" path="PrintDarkness#darkness" />
          <DataPointReference id="speed" path="MqttSdkPrinter#printing-speed" />

          <DataPointReference id="print_mode" path="MqttSdkPrinter#media-print-mode" />
          <DataPointReference id="media_handling" path="MqttSdkPrinter#media-handling" />

          <DataPointReference id="enable_wifi" path="MqttSdkPrinter#EnableWifi" />
        </Object>
        <Object id="mqtt_settings">
          <DataPointReference id="server_address" path="MQTT-Settings#mqtt_server_ip_addr" />
          <DataPointReference id="server_port" path="MQTT-Settings#mqtt_port_number" />
          <DataPointReference id="use_tls" path="MqttSpecificSettingsSDK#use_tls" />
          <DataPointReference id="tenant_id" path="MQTT-Settings#tenant_id" />
          <DataPointReference id="qos" path="MqttSpecificSettingsSDK#qos" />
          <DataPointReference id="ca_cert" path="MqttSpecificSettingsSDK#ca_cert" />
          <DataPointReference id="client_cert" path="MqttSpecificSettingsSDK#client_cert" />
          <DataPointReference id="client_key" path="MqttSpecificSettingsSDK#client_key" />
          <DataPointReference id="username" path="MQTT-Settings#mqtt_user_name" />
        </Object>
      </Object>
    </Message>

    <Message id="SimAlert">
      <Object id="Resource">
        <DataPointReference id="Id" path="MqttLabelPrinterAlert#AlertId" />
        <DataPointReference id="Description" path="MqttLabelPrinterAlert#AlertDescription" />
        <DataPointReference id="Type" path="MqttLabelPrinterAlert#AlertType" />
        <DataPointReference id="Priority" path="MqttLabelPrinterAlert#AlertPriority" />
        <DataPointReference id="Timestamp" path="MqttLabelPrinterAlert#Timestamp" />
      </Object>
    </Message>

    <Message id="SimSensAlert">
      <Object id="Resource">
        <DataPointReference id="Id" path="sim-sens-alert#AlertId" />
        <DataPointReference id="Description" path="sim-sens-alert#AlertDescription" />
        <DataPointReference id="Type" path="sim-sens-alert#AlertType" />
        <DataPointReference id="Priority" path="sim-sens-alert#AlertPriority" />
        <DataPointReference id="Timestamp" path="sim-sens-alert#Timestamp" />
      </Object>
    </Message>

    <Message id="SimBatteryChargeNotification">
      <DataPointReference id="Resource" path="chargeModule#charge" />
    </Message>

    <Message id="SimSensState">
      <Object id="Resource">
        <DataPointReference id="StateOfCharge" path="chargeModule#charge" />
        <DataPointReference id="SignalStrength" path="sim-sens-state#signal-strength" />
        <DataPointReference id="Temperature" path="Temperature#temperature" />
        <DataPointReference id="Humidity" path="Humidity#humidity" />
        <DataPointReference id="longitude" path="Location#location">
          <PropertyMapping id="longitude" />
        </DataPointReference>
        <DataPointReference id="latitude" path="Location#location">
          <PropertyMapping id="latitude" />
        </DataPointReference>
        <DataPointReference id="altitude" path="Location#location">
          <PropertyMapping id="altitude" />
        </DataPointReference>
      </Object>
    </Message>

    <Message id="SimSensGetDeviceSystemInfo">
    </Message>

    <Message id="SimSensChangeSettings">
      <Segment id="Resource" type="integer" />
    </Message>

    <Message id="SimSensInfo">
      <Object id="Resource">
        <Object id="Info">
          <DataPointReference id="DeviceId" path="Sensor-Base-Module#DeviceId" />
          <DataPointReference id="Model" path="sim-sens-system#model-id" />
          <DataPointReference id="Manufacturer" path="sim-sens-system#manufacturer" />
          <DataPointReference id="Version" path="sim-sens-system#version" />
          <DataPointReference id="MacAddress" path="sim-sens-system#mac-addr" />
        </Object>

        <Object id="Settings">
          <DataPointReference id="Heartbeat" path="sim-sens-system#heartbeat" />
        </Object>

        <DataPointReference id="Location" path="Location#location">
          <PropertyMapping id="longitude" property="longitude" />
          <PropertyMapping id="latitude" property="latitude" />
          <PropertyMapping id="altitude" property="altitude" />
        </DataPointReference>
      </Object>
    </Message>

    <Message id="SimSensSettings">
      <Object id="Resource">
        <DataPointReference id="Heartbeat" path="sim-sens-system#heartbeat" />
      </Object>
    </Message>

    <Message id="SimPrinterState">
      <Object id="Resource">
        <Object id="GeneralInfo">
          <DataPointReference id="DeviceId" path="base-module#device-id" />
          <DataPointReference id="Model" path="base-module#model-id" />
          <DataPointReference id="Name" path="base-module#device-name" />
          <DataPointReference id="SerialNumber" path="GenericDeviceState#serial-number" />
          <DataPointReference id="Manufacturer" path="base-module#manufacturer" />
          <DataPointReference id="Version" path="base-module#version" />

          <DataPointReference id="LabelCounter" path="MqttLabelPrinter#LabelCounter" />
          <DataPointReference id="PrintResolution" path="MqttLabelPrinter#PrintResolution" />
          <DataPointReference id="MediaLoaded" path="MqttLabelPrinter#MediaLoaded" />
          <DataPointReference id="Connected" path="MqttLabelPrinter#Connected" />

          <DataPointReference id="TotalMemory" path="MemoryInfo#total-memory" />
          <DataPointReference id="AvailableMemory" path="MemoryInfo#available-memory" />
          <DataPointReference id="TotalStorage" path="MemoryInfo#total-storage" />
          <DataPointReference id="AvailableStorage" path="MemoryInfo#available-storage" />

          <DataPointReference id="MacAddress" path="GenericNetworkIP4WLan#generic-network-mac" />
          <DataPointReference id="BluetoothAddress" path="GenericNetworkBluetooth#bluetooth-device-address" />
          <DataPointReference id="SignalStrength" path="MqttLabelPrinterNetwork#generic-wifi-rssi" />
        </Object>

        <Object id="Battery">
          <DataPointReference id="Temperature" path="BatteryInfo#temperature" />
          <DataPointReference id="Voltage" path="voltageModule#voltage" />
          <DataPointReference id="StateOfCharge" path="chargeModule#charge" />
          <DataPointReference id="Status" path="BatteryInfo#status" />
          <DataPointReference id="SerialNumber" path="BatterySerialNumberModule#BatterySerialNumber" />
          <DataPointReference id="Model" path="BatteryModelModule#BatteryModel" />
        </Object>

        <Object id="Settings">
          <Object id="Bluetooth">
            <DataPointReference id="Name" path="BluetoothInfo#generic-bluetooth-device-name" />
            <DataPointReference id="Discoverable" path="BluetoothInfo#generic-bluetooth-discoverable" />
            <DataPointReference id="Passkey" path="BluetoothInfo#generic-bluetooth-passkey" />
          </Object>

          <Object id="Network">
            <DataPointReference id="ActiveInterface" path="MqttLabelPrinterNetwork#ActiveInterface" />
            <DataPointReference id="EnableWifi" path="MqttLabelPrinterNetwork#EnableWifi" />
            <DataPointReference id="EnableBluetooth" path="BluetoothInfo#generic-bluetooth-enable" />
            <DataPointReference id="EnableStaticDNS" path="MqttLabelPrinterNetwork#EnableStaticDNS" />
            <DataPointReference id="DNS_Server" path="GenericNetworkIP4WLan#primary_dns_server_ip_address" />
            <DataPointReference id="IP_Address" path="GenericNetworkIP4WLan#generic-network-ipaddress" />
            <DataPointReference id="SubnetMask" path="GenericNetworkIP4WLan#generic-network-subnet-mask" />
            <DataPointReference id="Gateway" path="GenericNetworkIP4WLan#generic-network-gateway" />
            <DataPointReference id="InactiveDisconnect" path="MqttLabelPrinterNetwork#InactiveDisconnect" />
            <DataPointReference id="NetworkMode" path="MqttLabelPrinterNetwork#generic-network-mode" />
            <DataPointReference id="DnsServer" path="GenericNetworkIP4WLan#primary_dns_server_ip_address" />
            <DataPointReference id="Fqdn" path="generic-fqdn#fqdn" />
            <DataPointReference id="Port" path="MqttLabelPrinterNetwork#tcp-port" />
          </Object>
            
          <Object id="MediaHandling">
            <DataPointReference id="LabelLength" path="MqttLabelPrinterMedia#label-length" />
            <DataPointReference id="SensorType" path="GenericPrintMediaHandling#generic-media-sensor-type" />
            <DataPointReference id="LabelWidth" path="MqttLabelPrinterMedia#label-width" />

            <DataPointReference id="LabelRotation" path="MqttLabelPrinterMedia#label-orientation" />
          </Object>

          <Object id="PrintControl">
            <DataPointReference id="Darkness" path="PrintDarkness#darkness" />
            <DataPointReference id="PrintSpeed" path="MqttLabelPrinterPrintControl#printing-speed" />

            <DataPointReference id="RowOffset" path="MqttLabelPrinterPrintControl#RowOffset" />
            <DataPointReference id="ColumnOffset" path="MqttLabelPrinterPrintControl#ColumnOffset" />
            <DataPointReference id="DpiEmulation" path="MqttLabelPrinterPrintControl#DpiEmulation" />
            <DataPointReference id="PrintMode" path="MqttLabelPrinterPrintControl#media-print-mode" />
            <DataPointReference id="MediaHandling" path="MqttLabelPrinterPrintControl#media-handling" />
          </Object>

          <Object id="SystemSettings">
            <DataPointReference id="CharacterEncoding" path="MqttLabelPrinterSystemSettings#CharacterEncoding" />
            <DataPointReference id="BuzzerEnable" path="MqttLabelPrinterSystemSettings#BuzzerEnable" />
            <DataPointReference id="PowerButtonEnable" path="MqttLabelPrinterSystemSettings#PowerButtonEnable" />
            <DataPointReference id="FeedButtonEnable" path="MqttLabelPrinterSystemSettings#FeedButtonEnable" />
            <DataPointReference id="InactivePowerDownTime" path="MqttLabelPrinterSystemSettings#InactivePowerDownTime" />
            <DataPointReference id="InactiveSleepTime" path="MqttLabelPrinterSystemSettings#InactiveSleepTime" />
            <DataPointReference id="MqttServerAddr" path="MQTT-Settings#mqtt_server_ip_addr" />
            <DataPointReference id="MqttServerPort" path="MQTT-Settings#mqtt_port_number" />

          </Object>
          <Object id="Wifi">
            <DataPointReference id="SSID" path="GenericWIFI#ssid" />

            <DataPointReference id="NetworkAuthenType" path="MqttLabelPrinterWIFI#NetworkAuthenType" />
            <DataPointReference id="Type" path="MqttLabelPrinterWIFI#Type" />
            <DataPointReference id="WifiMode" path="WIFIInfo#generic-wifi-mode" />
          </Object>
        </Object>

        <DataPointReference id="Location" path="Location#location">
          <PropertyMapping id="longitude" property="longitude" />
          <PropertyMapping id="latitude" property="latitude" />
          <PropertyMapping id="altitude" property="altitude" />
        </DataPointReference>
        <DataPointReference id="folder" path="MqttLabelPrinterFolders#folder" />
      </Object>
    </Message>

    <Message id="SimChangePrinterSettings">
      <Object id="Resource">
        <Object id="MediaHandling">
          <Segment id="LabelRotation" type="integer" />
          <Segment id="LabelLength" type="float" />
          <Segment id="SensorType" type="string" />
          <Segment id="LabelWidth" type="float" />

        </Object>
        <Object id="PrintControl">
          <Segment id="RowOffset" type="float" />
          <Segment id="ColumnOffset" type="float" />
          <Segment id="Darkness" type="integer" />
          <Segment id="DpiEmulation" type="integer" />
          <Segment id="PrintSpeed" type="float" />

          <Segment id="PrintMode" type="string" />
          <Segment id="MediaHandling" type="string" />

        </Object>
        <Object id="SystemSettings">
          <Segment id="CharacterEncoding" type="string" />
          <Segment id="MqttServerAddr" type="string" />
          <Segment id="MqttServerPort" type="integer" />

          <Segment id="FeedButtonEnable" type="boolean" />
          <Segment id="PowerButtonEnable" type="boolean" />
          <Segment id="BuzzerEnable" type="boolean" />

          <Segment id="InactivePowerDownTime" type="integer" />
          <Segment id="InactiveSleepTime" type="integer" />

        </Object>

        <Object id="Network">
          <Segment id="ActiveInterface" type="string" />
          <Segment id="InactiveDisconnect" type="integer" />
          <Segment id="Gateway" type="ipv4" />
          <Segment id="SubnetMask" type="ipv4" />
          <Segment id="IP_Address" type="ipv4" />
          <Segment id="DNS_Server" type="string" />
          <Segment id="EnableStaticDNS" type="boolean" />
          <Segment id="EnableBluetooth" type="boolean" />
          <Segment id="EnableWifi" type="boolean" />
          <Segment id="NetworkMode" type="string" />
          <Segment id="DnsServer" type="string" />

        </Object>
        <Object id="Wifi">
          <Segment id="Type" type="string" />
          <Segment id="SSID" type="string" />
          <Segment id="NetworkAuthenType" type="string" />
          <Segment id="PassPhrase" type="string" />
          <Segment id="WifiMode" type="string" />

        </Object>
        <Object id="Bluetooth">
          <Segment id="Name" type="string" />
          <Segment id="Discoverable" type="boolean" />
          <Segment id="Passkey" type="string" />

        </Object>
      </Object>
    </Message>

    <Message id="SimPrinterSettings">
      <Object id="Resource">
        <Object id="Bluetooth">
          <DataPointReference id="Name" path="BluetoothInfo#generic-bluetooth-device-name" />
          <DataPointReference id="Discoverable" path="BluetoothInfo#generic-bluetooth-discoverable" />
          <DataPointReference id="Passkey" path="BluetoothInfo#generic-bluetooth-passkey" />
        </Object>
        <Object id="Network">
          <DataPointReference id="ActiveInterface" path="MqttLabelPrinterNetwork#ActiveInterface" />
          <DataPointReference id="EnableWifi" path="MqttLabelPrinterNetwork#EnableWifi" />
          <DataPointReference id="EnableBluetooth" path="BluetoothInfo#generic-bluetooth-enable" />
          <DataPointReference id="EnableStaticDNS" path="MqttLabelPrinterNetwork#EnableStaticDNS" />
          <DataPointReference id="DNS_Server" path="GenericNetworkIP4WLan#primary_dns_server_ip_address" />
          <DataPointReference id="IP_Address" path="GenericNetworkIP4WLan#generic-network-ipaddress" />
          <DataPointReference id="SubnetMask" path="GenericNetworkIP4WLan#generic-network-subnet-mask" />
          <DataPointReference id="Gateway" path="GenericNetworkIP4WLan#generic-network-gateway" />
          <DataPointReference id="InactiveDisconnect" path="MqttLabelPrinterNetwork#InactiveDisconnect" />
          <DataPointReference id="NetworkMode" path="MqttLabelPrinterNetwork#generic-network-mode" />
          <DataPointReference id="DnsServer" path="GenericNetworkIP4WLan#primary_dns_server_ip_address" />
        </Object>
        <Object id="MediaHandling">
          <DataPointReference id="LabelLength" path="MqttLabelPrinterMedia#label-length" />
          <DataPointReference id="SensorType" path="GenericPrintMediaHandling#generic-media-sensor-type" />
          <DataPointReference id="LabelWidth" path="MqttLabelPrinterMedia#label-width" />

          <DataPointReference id="LabelRotation" path="MqttLabelPrinterMedia#label-orientation" />
        </Object>

        <Object id="PrintControl">
          <DataPointReference id="Darkness" path="PrintDarkness#darkness" />
          <DataPointReference id="PrintSpeed" path="MqttLabelPrinterPrintControl#printing-speed" />

          <DataPointReference id="RowOffset" path="MqttLabelPrinterPrintControl#RowOffset" />
          <DataPointReference id="ColumnOffset" path="MqttLabelPrinterPrintControl#ColumnOffset" />
          <DataPointReference id="DpiEmulation" path="MqttLabelPrinterPrintControl#DpiEmulation" />
          <DataPointReference id="PrintMode" path="MqttLabelPrinterPrintControl#media-print-mode" />
          <DataPointReference id="MediaHandling" path="MqttLabelPrinterPrintControl#media-handling" />

        </Object>

        <Object id="SystemSettings">
          <DataPointReference id="CharacterEncoding" path="MqttLabelPrinterSystemSettings#CharacterEncoding" />
          <DataPointReference id="BuzzerEnable" path="MqttLabelPrinterSystemSettings#BuzzerEnable" />
          <DataPointReference id="PowerButtonEnable" path="MqttLabelPrinterSystemSettings#PowerButtonEnable" />
          <DataPointReference id="FeedButtonEnable" path="MqttLabelPrinterSystemSettings#FeedButtonEnable" />
          <DataPointReference id="InactivePowerDownTime" path="MqttLabelPrinterSystemSettings#InactivePowerDownTime" />
          <DataPointReference id="InactiveSleepTime" path="MqttLabelPrinterSystemSettings#InactiveSleepTime" />
          <DataPointReference id="MqttServerAddr" path="MQTT-Settings#mqtt_server_ip_addr" />
          <DataPointReference id="MqttServerPort" path="MQTT-Settings#mqtt_port_number" />

        </Object>
        <Object id="Wifi">
          <DataPointReference id="SSID" path="GenericWIFI#ssid" />

          <DataPointReference id="NetworkAuthenType" path="MqttLabelPrinterWIFI#NetworkAuthenType" />
          <DataPointReference id="Type" path="MqttLabelPrinterWIFI#Type" />
          <DataPointReference id="WifiMode" path="WIFIInfo#generic-wifi-mode" />
        </Object>

        <DataPointReference id="Location" path="Location#location">
          <PropertyMapping id="longitude" property="longitude" />
          <PropertyMapping id="latitude" property="latitude" />
          <PropertyMapping id="altitude" property="altitude" />
        </DataPointReference>
      </Object>
    </Message>

    <Message id="MqttPrinterWLANCertFromUrl">
      <Object id="Resource">
        <Segment id="CaCrt" type="filestore" />
        <Segment id="ClientCrt" type="filestore" />
        <Segment id="ClientKey" type="filestore" />
        <Segment id="ClientKeyPassword" type="string" />
      </Object>
    </Message>
  </Messages>

  <Transactions>
    <Transaction id="Register" hint="Registering an MQTT server will create matching protocol instances for every protocol belonging to the MQTT PA.">
      <Blocks>
        <Block id="1">
          <SendMessage id="RegisterAPI">
            <UserAssignment actionArgName="Host Address" path="Settings/ApiIpAddress" defaultValue="127.0.0.1" hint="FDQN of server to connect to." />
            <UserAssignment actionArgName="Port" path="Settings/Port" />
            <UserAssignment actionArgName="Use Connect Tenant ID" path="Settings/UseTenantId" defaultValue="false" optional="true"
              hint="Check this box if your devices are configured with this SOTI Connect Instance's Tenant ID." />
            <UserAssignment actionArgName="Username" path="Settings/ApiKey" optional="true" />
            <UserAssignment actionArgName="Password" path="Settings/ApiSecret" optional="true" secret="true" />
            <UserAssignment actionArgName="PA Client Certificate" path="Settings/Certificate" optional="true" />
            <UserAssignment actionArgName="PA Client Certificate Password" path="Settings/CertificatePassword" optional="true" secret="true" />
            <UserAssignment actionArgName="CA Certificate" path="Settings/CaCertificate" optional="true" />
          </SendMessage>
          <Switch>
            <SwitchOnMessage>
              <MessageCase>
                <ReceiveMessage id="RegisterAPISettings" />
                <BlockAction>
                  <Terminate success="true" />
                </BlockAction>
              </MessageCase>
              <MessageCase>
                <ReceiveMessage id="Error">
                  <VariableDefinition id="Resource" path="Resource" />
                </ReceiveMessage>
                <BlockAction>
                  <Terminate success="false">
                    <Log variableId="Resource" />
                  </Terminate>
                </BlockAction>
              </MessageCase>
            </SwitchOnMessage>
          </Switch>
        </Block>
      </Blocks>
    </Transaction>

    <Transaction id="SearchNewDevices">
      <Blocks>
        <Block id="1">
          <SendMessage id="SearchNewDevices" />
          <Switch>
            <SwitchOnMessage>
              <MessageCase>
                <ReceiveMessage id="Success" />
                <BlockAction>
                  <Terminate success="true" />
                </BlockAction>
              </MessageCase>
              <MessageCase>
                <ReceiveMessage id="Error">
                  <VariableDefinition id="Resource" path="Resource" />
                </ReceiveMessage>
                <BlockAction>
                  <Terminate success="false">
                    <Log variableId="Resource" />
                  </Terminate>
                </BlockAction>
              </MessageCase>
            </SwitchOnMessage>
          </Switch>
        </Block>
      </Blocks>
    </Transaction>

    <Transaction id="SimCheckIn" semanticid="base-module#checkin">
      <Blocks>
        <Block id="1">
          <SendMessage id="GetPrinterState">
          </SendMessage>
          <Switch>
            <SwitchOnMessage>
              <MessageCase>
                <ReceiveMessage id="SimPrinterState" />
                <BlockAction>
                  <Terminate success="true"></Terminate>
                </BlockAction>
              </MessageCase>
              <MessageCase>
                <ReceiveMessage id="Error">
                  <VariableDefinition id="Resource" path="Resource" />
                </ReceiveMessage>
                <BlockAction>
                  <Terminate success="false">
                    <Log variableId="Resource" />
                  </Terminate>
                </BlockAction>
              </MessageCase>
            </SwitchOnMessage>
          </Switch>
        </Block>
      </Blocks>
    </Transaction>

    <Transaction id="CheckIn" semanticid="base-module#checkin">
      <Blocks>
        <Block id="1">
          <SendMessage id="SOTIGetPrinterState">
          </SendMessage>
          <Switch>
            <SwitchOnMessage>
              <MessageCase>
                <ReceiveMessage id="SOTIPrinterState" />
                <BlockAction>
                  <Terminate success="true"></Terminate>
                </BlockAction>
              </MessageCase>
              <MessageCase>
                <ReceiveMessage id="Error">
                  <VariableDefinition id="Resource" path="Resource" />
                </ReceiveMessage>
                <BlockAction>
                  <Terminate success="false">
                    <Log variableId="Resource" />
                  </Terminate>
                </BlockAction>
              </MessageCase>
            </SwitchOnMessage>
          </Switch>
        </Block>
      </Blocks>
    </Transaction>

    <Transaction id="Reboot" semanticid="GenericPrinterState#reboot">
      <Blocks>
        <Block id="1">
          <SendMessage id="SOTIReboot" />
          <Switch>
            <SwitchOnMessage>
              <MessageCase>
                <ReceiveMessage id="Success" />
                <BlockAction>
                  <Terminate success="true" />
                </BlockAction>
              </MessageCase>
              <MessageCase>
                <ReceiveMessage id="Error">
                  <VariableDefinition id="Resource" path="Resource" />
                </ReceiveMessage>
                <BlockAction>
                  <Terminate success="false">
                    <Log variableId="Resource" />
                  </Terminate>
                </BlockAction>
              </MessageCase>
            </SwitchOnMessage>
          </Switch>
        </Block>
      </Blocks>
    </Transaction>

    <Transaction id="PrinterSimReboot" semanticid="GenericPrinterState#reboot">
      <Blocks>
        <Block id="1">
          <SendMessage id="Reboot" />
          <Switch>
            <SwitchOnMessage>
              <MessageCase>
                <ReceiveMessage id="Success" />
                <BlockAction>
                  <Terminate success="true" />
                </BlockAction>
              </MessageCase>
              <MessageCase>
                <ReceiveMessage id="Error">
                  <VariableDefinition id="Resource" path="Resource" />
                </ReceiveMessage>
                <BlockAction>
                  <Terminate success="false">
                    <Log variableId="Resource" />
                  </Terminate>
                </BlockAction>
              </MessageCase>
            </SwitchOnMessage>
          </Switch>
        </Block>
      </Blocks>
    </Transaction>

    <Transaction id="SimFactoryReset" semanticid="GenericPrinterState#factory-reset">
      <Blocks>
        <Block id="1">
          <SendMessage id="FactoryReset" />
          <Switch>
            <SwitchOnMessage>
              <MessageCase>
                <ReceiveMessage id="Success" />
                <BlockAction>
                  <Terminate success="true" />
                </BlockAction>
              </MessageCase>
              <MessageCase>
                <ReceiveMessage id="Error">
                  <VariableDefinition id="Resource" path="Resource" />
                </ReceiveMessage>
                <BlockAction>
                  <Terminate success="false">
                    <Log variableId="Resource" />
                  </Terminate>
                </BlockAction>
              </MessageCase>
            </SwitchOnMessage>
          </Switch>
        </Block>
      </Blocks>
    </Transaction>

    <Transaction id="SimSensFactoryReset" semanticid="sim-sens-system#factory-reset">
      <Blocks>
        <Block id="1">
          <SendMessage id="FactoryReset" />
          <Switch>
            <SwitchOnMessage>
              <MessageCase>
                <ReceiveMessage id="Success" />
                <BlockAction>
                  <Terminate success="true" />
                </BlockAction>
              </MessageCase>
              <MessageCase>
                <ReceiveMessage id="Error">
                  <VariableDefinition id="Resource" path="Resource" />
                </ReceiveMessage>
                <BlockAction>
                  <Terminate success="false">
                    <Log variableId="Resource" />
                  </Terminate>
                </BlockAction>
              </MessageCase>
            </SwitchOnMessage>
          </Switch>
        </Block>
      </Blocks>
    </Transaction>

    <Transaction id="FactoryReset" semanticid="GenericPrinterState#factory-reset">
      <Blocks>
        <Block id="1">
          <SendMessage id="SOTIFactoryReset" />
          <Switch>
            <SwitchOnMessage>
              <MessageCase>
                <ReceiveMessage id="SOTIPrinterState" />
                <BlockAction>
                  <Terminate success="true" />
                </BlockAction>
              </MessageCase>
              <MessageCase>
                <ReceiveMessage id="Error">
                  <VariableDefinition id="Resource" path="Resource" />
                </ReceiveMessage>
                <BlockAction>
                  <Terminate success="false">
                    <Log variableId="Resource" />
                  </Terminate>
                </BlockAction>
              </MessageCase>
            </SwitchOnMessage>
          </Switch>
        </Block>
      </Blocks>
    </Transaction>

    <Transaction id="SimPrintTestPage" semanticid="GenericPrinterState#print-test-page">
      <Blocks>
        <Block id="1">
          <SendMessage id="PrintTestPage">
          </SendMessage>
          <Switch>
            <SwitchOnMessage>
              <MessageCase>
                <ReceiveMessage id="Success" />
                <BlockAction>
                  <Terminate success="true" />
                </BlockAction>
              </MessageCase>
              <MessageCase>
                <ReceiveMessage id="Error">
                  <VariableDefinition id="Resource" path="Resource" />
                </ReceiveMessage>
                <BlockAction>
                  <Terminate success="false">
                    <Log variableId="Resource" />
                  </Terminate>
                </BlockAction>
              </MessageCase>
            </SwitchOnMessage>
          </Switch>

        </Block>
      </Blocks>
    </Transaction>

    <Transaction id="InstallUpdatePackage" semanticid="MqttSdkPrinter#install-update">
      <Blocks>
        <Block id="1">
          <SendMessage id="SOTIInstallPackage">
            <UserAssignment actionArgName="Package File" path="Resource/File" />
          </SendMessage>
          <Switch>
            <SwitchOnMessage>
              <MessageCase>
                <ReceiveMessage id="Success" />
                <BlockAction>
                  <Terminate success="true" />
                </BlockAction>
              </MessageCase>
              <MessageCase>
                <ReceiveMessage id="Error">
                  <VariableDefinition id="Resource" path="Resource" />
                </ReceiveMessage>
                <BlockAction>
                  <Terminate success="false">
                    <Log variableId="Resource" />
                  </Terminate>
                </BlockAction>
              </MessageCase>
            </SwitchOnMessage>
          </Switch>
        </Block>
      </Blocks>
    </Transaction>

    <Transaction id="SimInstallUpdatePackage" semanticid="MqttLabelPrinter#install-update" isMetaTransaction ="true" >
      <Blocks>
        <Block id="1">
          <SendMessage id="InstallPackage">
            <UserAssignment actionArgName="Package File" path="Resource/File" />
            <!--optional-->
            <UserAssignment actionArgName="Package Type" path="Resource/Type" />
          </SendMessage>
          <Switch>
            <SwitchOnMessage>
              <MessageCase>
                <ReceiveMessage id="Success" />
                <BlockAction>
                  <Terminate success="true" />
                </BlockAction>
              </MessageCase>
              <MessageCase>
                <ReceiveMessage id="Error">
                  <VariableDefinition id="Resource" path="Resource" />
                </ReceiveMessage>
                <BlockAction>
                  <Terminate success="false">
                    <Log variableId="Resource" />
                  </Terminate>
                </BlockAction>
              </MessageCase>
            </SwitchOnMessage>
          </Switch>

        </Block>
      </Blocks>
        <AlertBlocks>
            <AlertBlock MessageId="SimAlert" timeoutAlertId="InstallUpdatePackageTimeout" timeout ="3600">
                <SuccessCase>
                    <Enumeration>
                        <Value>InstallPackageSuccess</Value>
                    </Enumeration>
                </SuccessCase>
                <FailureCase>
                    <Enumeration>
                        <Value>InstallPackageFailure</Value>
                    </Enumeration>
                </FailureCase>
            </AlertBlock>
        </AlertBlocks>
        
    </Transaction>

    <Transaction id="InstallUpdatePackageFromUrl" semanticid="MqttSdkPrinter#install-update-url">
      <Blocks>
        <Block id="1">
          <SendMessage id="SOTIInstallPackageFromUrl">
            <UserAssignment actionArgName="Download Url" path="Resource/Url" />
          </SendMessage>
          <Switch>
            <SwitchOnMessage>
              <MessageCase>
                <ReceiveMessage id="Success" />
                <BlockAction>
                  <Terminate success="true" />
                </BlockAction>
              </MessageCase>
              <MessageCase>
                <ReceiveMessage id="Error">
                  <VariableDefinition id="Resource" path="Resource" />
                </ReceiveMessage>
                <BlockAction>
                  <Terminate success="false">
                    <Log variableId="Resource" />
                  </Terminate>
                </BlockAction>
              </MessageCase>
            </SwitchOnMessage>
          </Switch>
        </Block>
      </Blocks>
    </Transaction>

    <Transaction id="InstallUpdatePackageFromFileStore" semanticid="MqttSdkPrinter#install-update-filestore">
      <Blocks>
        <Block id="1">
          <SendMessage id="SOTIInstallPackageFromFileStore">
            <UserAssignment actionArgName="File" path="Resource/File" />
          </SendMessage>
          <Switch>
            <SwitchOnMessage>
              <MessageCase>
                <ReceiveMessage id="Success" />
                <BlockAction>
                  <Terminate success="true" />
                </BlockAction>
              </MessageCase>
              <MessageCase>
                <ReceiveMessage id="Error">
                  <VariableDefinition id="Resource" path="Resource" />
                </ReceiveMessage>
                <BlockAction>
                  <Terminate success="false">
                    <Log variableId="Resource" />
                  </Terminate>
                </BlockAction>
              </MessageCase>
            </SwitchOnMessage>
          </Switch>
        </Block>
      </Blocks>
    </Transaction>

    <Transaction id="SimInstallUpdatePackageFromFileStore" semanticid="MqttLabelPrinter#install-update-filestore" isMetaTransaction="true" >
      <Blocks>
        <Block id="1">
          <SendMessage id="InstallPackageFromFileStore">
            <UserAssignment actionArgName="File" path="Resource/File" />
          </SendMessage>
          <Switch>
            <SwitchOnMessage>
              <MessageCase>
                <ReceiveMessage id="Success" />
                <BlockAction>
                  <Terminate success="true" />
                </BlockAction>
              </MessageCase>
              <MessageCase>
                <ReceiveMessage id="Error">
                  <VariableDefinition id="Resource" path="Resource" />
                </ReceiveMessage>
                <BlockAction>
                  <Terminate success="false">
                    <Log variableId="Resource" />
                  </Terminate>
                </BlockAction>
              </MessageCase>
            </SwitchOnMessage>
          </Switch>
        </Block>
      </Blocks>
        <AlertBlocks>
            <AlertBlock MessageId="SimAlert" timeoutAlertId="InstallUpdatePackageFromFileStoreTimeout" timeout ="3600" >
                <SuccessCase>
                    <Enumeration>
                        <Value>InstallPackagefromFilestoreSuccess</Value>
                    </Enumeration>
                </SuccessCase>
                <FailureCase>
                    <Enumeration>
                        <Value>InstallPackagefromFilestoreFailure</Value>
                    </Enumeration>
                </FailureCase>
            </AlertBlock>
        </AlertBlocks>
       
    </Transaction>

    <Transaction id="SimInstallUpdateCertificateFromFileStore" semanticid="MqttLabelPrinter#install-update-filestore-certificate" isMetaTransaction ="true">
      <Blocks>
        <Block id="1">
          <SendMessage id="InstallPackageFromFileStore">
            <UserAssignment actionArgName="File" path="Resource/File" />
          </SendMessage>
          <Switch>
            <SwitchOnMessage>
              <MessageCase>
                <ReceiveMessage id="Success" />
                <BlockAction>
                  <Terminate success="true" />
                </BlockAction>
              </MessageCase>
              <MessageCase>
                <ReceiveMessage id="Error">
                  <VariableDefinition id="Resource" path="Resource" />
                </ReceiveMessage>
                <BlockAction>
                  <Terminate success="false">
                    <Log variableId="Resource" />
                  </Terminate>
                </BlockAction>
              </MessageCase>
            </SwitchOnMessage>
          </Switch>
        </Block>
      </Blocks>
        <AlertBlocks>
            <AlertBlock MessageId="SimAlert" timeoutAlertId="InstallUpdateCertificateFromFileStoreTimeout" >
                <SuccessCase>
                    <Enumeration>
                        <Value>InstallPackagefromFilestoreSuccess</Value>
                    </Enumeration>
                </SuccessCase>
                <FailureCase>
                    <Enumeration>
                        <Value>InstallPackagefromFilestoreFailure</Value>
                    </Enumeration>
                </FailureCase>
            </AlertBlock>
        </AlertBlocks>
        
    </Transaction>

    <Transaction id="SimSensInstallUpdatePackageFromFileStore" semanticid="sim-sens-system#install-update-filestore">
      <Blocks>
        <Block id="1">
          <SendMessage id="InstallPackageFromFileStore">
            <UserAssignment actionArgName="File" path="Resource/File" />
          </SendMessage>
          <Switch>
            <SwitchOnMessage>
              <MessageCase>
                <ReceiveMessage id="Success" />
                <BlockAction>
                  <Terminate success="true" />
                </BlockAction>
              </MessageCase>
              <MessageCase>
                <ReceiveMessage id="Error">
                  <VariableDefinition id="Resource" path="Resource" />
                </ReceiveMessage>
                <BlockAction>
                  <Terminate success="false">
                    <Log variableId="Resource" />
                  </Terminate>
                </BlockAction>
              </MessageCase>
            </SwitchOnMessage>
          </Switch>
        </Block>
      </Blocks>
    </Transaction>

    <Transaction id="ChangePrintControl" semanticid="MqttSdkPrinter#change-print-control">
      <Blocks>
        <Block id="1">
          <SendMessage id="SOTIChangePrinterSettings">
            <UserAssignment actionArgName="Darkness" path="Resource/darkness" />
            <UserAssignment actionArgName="Print Speed" path="Resource/speed" />
            <UserAssignment actionArgName="Print Mode" path="Resource/print_mode" />
            <UserAssignment actionArgName="Media Handling" path="Resource/media_handling" />
          </SendMessage>
          <Switch>
            <SwitchOnMessage>
              <MessageCase>
                <ReceiveMessage id="SOTIPrinterSettings" />
                <BlockAction>
                  <Terminate success="true" />
                </BlockAction>
              </MessageCase>
              <MessageCase>
                <ReceiveMessage id="Error">
                  <VariableDefinition id="Resource" path="Resource" />
                </ReceiveMessage>
                <BlockAction>
                  <Terminate success="false">
                    <Log variableId="Resource" />
                  </Terminate>
                </BlockAction>
              </MessageCase>
            </SwitchOnMessage>
          </Switch>
        </Block>
      </Blocks>
    </Transaction>

    <Transaction id="ChangeNetwork" semanticid="MqttSdkPrinter#change-network">
      <Blocks>
        <Block id="1">
          <SendMessage id="SOTIChangePrinterSettings">
            <UserAssignment actionArgName="Enable Wi-Fi" path="Resource/enable_wifi" />
          </SendMessage>
          <Switch>
            <SwitchOnMessage>
              <MessageCase>
                <ReceiveMessage id="SOTIPrinterSettings" />
                <BlockAction>
                  <Terminate success="true" />
                </BlockAction>
              </MessageCase>
              <MessageCase>
                <ReceiveMessage id="Error">
                  <VariableDefinition id="Resource" path="Resource" />
                </ReceiveMessage>
                <BlockAction>
                  <Terminate success="false">
                    <Log variableId="Resource" />
                  </Terminate>
                </BlockAction>
              </MessageCase>
            </SwitchOnMessage>
          </Switch>
        </Block>
      </Blocks>
    </Transaction>

    <Transaction id="ChangeMQTTSettings" semanticid="MQTT-MutualTLS#Change-MQTT-Settings">
      <Blocks>
        <Block id="1">
          <SendMessage id="SOTIChangeMQTTSettings">
            <UserAssignment actionArgName="Server IP Address" path="Resource/server_address" />
            <UserAssignment actionArgName="Port" path="Resource/server_port" />
            <UserAssignment actionArgName="Username" path="Resource/username" />
            <UserAssignment actionArgName="Password" path="Resource/password" />
            <UserAssignment actionArgName="Tenant ID" path="Resource/tenant_id" />
            <UserAssignment actionArgName="Root Certificate" path="Resource/ca_cert" />
            <UserAssignment actionArgName="Client Certificate" path="Resource/client_cert" />
            <UserAssignment actionArgName="Client Certificate Key" path="Resource/client_key" />
            <UserAssignment actionArgName="Client Certificate Key Password" path="Resource/client_key_password" />
          </SendMessage>
          <Switch>
            <SwitchOnMessage>
              <MessageCase>
                <ReceiveMessage id="SOTIDeviceMQTTSettings" />
                <BlockAction>
                  <Terminate success="true" />
                </BlockAction>
              </MessageCase>
              <MessageCase>
                <ReceiveMessage id="Error">
                  <VariableDefinition id="Resource" path="Resource" />
                </ReceiveMessage>
                <BlockAction>
                  <Terminate success="false">
                    <Log variableId="Resource" />
                  </Terminate>
                </BlockAction>
              </MessageCase>
            </SwitchOnMessage>
          </Switch>
        </Block>
      </Blocks>
    </Transaction>

    <Transaction id="ChangeMQTTCertificates" semanticid="MqttSpecificSettingsSDK#change-mqtt-specific-settings">
      <Blocks>
        <Block id="1">
          <SendMessage id="SOTIChangeMQTTSettings">
            <UserAssignment actionArgName="Server IP Address" path="Resource/server_address" />
            <UserAssignment actionArgName="Port" path="Resource/server_port" />
            <UserAssignment actionArgName="Use TLS" path="Resource/use_tls" />
            <UserAssignment actionArgName="Root Certificate" path="Resource/ca_cert" />
            <UserAssignment actionArgName="Client Certificate" path="Resource/client_cert" />
            <UserAssignment actionArgName="Client Certificate Key" path="Resource/client_key" />
            <UserAssignment actionArgName="Client Certificate Key Password" path="Resource/client_key_password" />
          </SendMessage>
          <Switch>
            <SwitchOnMessage>
              <MessageCase>
                <ReceiveMessage id="SOTIDeviceMQTTSettings" />
                <BlockAction>
                  <Terminate success="true" />
                </BlockAction>
              </MessageCase>
              <MessageCase>
                <ReceiveMessage id="Error">
                  <VariableDefinition id="Resource" path="Resource" />
                </ReceiveMessage>
                <BlockAction>
                  <Terminate success="false">
                    <Log variableId="Resource" />
                  </Terminate>
                </BlockAction>
              </MessageCase>
            </SwitchOnMessage>
          </Switch>
        </Block>
      </Blocks>
    </Transaction>

    <Transaction id="ChangeQoS" semanticid="MqttSpecificSettingsSDK#change-qos">
      <Blocks>
        <Block id="1">
          <SendMessage id="SOTIChangeMQTTSettings">
            <UserAssignment actionArgName="QoS" path="Resource/qos" />
          </SendMessage>
          <Switch>
            <SwitchOnMessage>
              <MessageCase>
                <ReceiveMessage id="SOTIDeviceMQTTSettings" />
                <BlockAction>
                  <Terminate success="true" />
                </BlockAction>
              </MessageCase>
              <MessageCase>
                <ReceiveMessage id="Error">
                  <VariableDefinition id="Resource" path="Resource" />
                </ReceiveMessage>
                <BlockAction>
                  <Terminate success="false">
                    <Log variableId="Resource" />
                  </Terminate>
                </BlockAction>
              </MessageCase>
            </SwitchOnMessage>
          </Switch>
        </Block>
      </Blocks>
    </Transaction>

    <Transaction id="ChangeWifiCertificates" semanticid="MqttSdkPrinter#change-wifi-certificates">
      <Blocks>
        <Block id="1">
          <SendMessage id="SOTIUpdateWifiCerts">
            <UserAssignment actionArgName="CA Certificate" path="Resource/ca_cert" />
            <UserAssignment actionArgName="Client Certificate" path="Resource/client_cert" />
            <UserAssignment actionArgName="Client Key" path="Resource/client_key" />
            <UserAssignment actionArgName="Client Key Password" path="Resource/client_key_password" />
          </SendMessage>
          <Switch>
            <SwitchOnMessage>
              <MessageCase>
                <ReceiveMessage id="Success" />
                <BlockAction>
                  <Terminate success="true" />
                </BlockAction>
              </MessageCase>
              <MessageCase>
                <ReceiveMessage id="Error">
                  <VariableDefinition id="Resource" path="Resource" />
                </ReceiveMessage>
                <BlockAction>
                  <Terminate success="false">
                    <Log variableId="Resource" />
                  </Terminate>
                </BlockAction>
              </MessageCase>
            </SwitchOnMessage>
          </Switch>
        </Block>
      </Blocks>
    </Transaction>

    <Transaction id="ChangeHTTPCertificate" semanticid="MqttSdkPrinter#change-http-certificate">
      <Blocks>
        <Block id="1">
          <SendMessage id="SOTIUpdateHTTPRootCert">
            <UserAssignment actionArgName="CA Certificate" path="Resource/Url" />
          </SendMessage>
          <Switch>
            <SwitchOnMessage>
              <MessageCase>
                <ReceiveMessage id="Success" />
                <BlockAction>
                  <Terminate success="true" />
                </BlockAction>
              </MessageCase>
              <MessageCase>
                <ReceiveMessage id="Error">
                  <VariableDefinition id="Resource" path="Resource" />
                </ReceiveMessage>
                <BlockAction>
                  <Terminate success="false">
                    <Log variableId="Resource" />
                  </Terminate>
                </BlockAction>
              </MessageCase>
            </SwitchOnMessage>
          </Switch>
        </Block>
      </Blocks>
    </Transaction>

    <Transaction id="SimSensChangeSettings" semanticid="sim-sens-system#change-settings">
      <Blocks>
        <Block id="1">
          <SendMessage id="SimSensChangeSettings">
            <UserAssignment actionArgName="Heartbeat Interval" path="Resource" defaultValue="10" />
          </SendMessage>
          <Switch>
            <SwitchOnMessage>
              <MessageCase>
                <ReceiveMessage id="SimSensSettings" />
                <BlockAction>
                  <Terminate success="true" />
                </BlockAction>
              </MessageCase>
              <MessageCase>
                <ReceiveMessage id="Error">
                  <VariableDefinition id="Resource" path="Resource" />
                </ReceiveMessage>
                <BlockAction>
                  <Terminate success="false">
                    <Log variableId="Resource" />
                  </Terminate>
                </BlockAction>
              </MessageCase>
            </SwitchOnMessage>
          </Switch>
        </Block>
      </Blocks>
    </Transaction>

    <Transaction id="SimSensGetDeviceSystemInfo" semanticid="sim-sens-system#get-device-system-info">
      <Blocks>
        <Block id="1">
          <SendMessage id="SimSensGetDeviceSystemInfo">
          </SendMessage>
          <Switch>
            <SwitchOnMessage>
              <MessageCase>
                <ReceiveMessage id="SimSensInfo" />
                <BlockAction>
                  <Terminate success="true" />
                </BlockAction>
              </MessageCase>
              <MessageCase>
                <ReceiveMessage id="Error">
                  <VariableDefinition id="Resource" path="Resource" />
                </ReceiveMessage>
                <BlockAction>
                  <Terminate success="false">
                    <Log variableId="Resource" />
                  </Terminate>
                </BlockAction>
              </MessageCase>
            </SwitchOnMessage>
          </Switch>
        </Block>
      </Blocks>
    </Transaction>

    <Transaction id="SimChangePrintControl" semanticid="MqttLabelPrinterPrintControl#change-print-control">
      <Blocks>
        <Block id="1">
          <SendMessage id="SimChangePrinterSettings">
            <UserAssignment actionArgName="Row Offset" path="Resource/PrintControl/RowOffset" defaultValue="0.0" />
            <UserAssignment actionArgName="Column Offset" path="Resource/PrintControl/ColumnOffset" defaultValue="0.0" />
            <UserAssignment actionArgName="Darkness" path="Resource/PrintControl/Darkness" defaultValue="50" />
            <UserAssignment actionArgName="Print Speed" path="Resource/PrintControl/PrintSpeed" defaultValue="4.0" />
            <UserAssignment actionArgName="DPI Emulation" path="Resource/PrintControl/DpiEmulation" defaultValue="200" />
            <UserAssignment actionArgName="Print Mode" path="Resource/PrintControl/PrintMode" defaultValue="Direct Thermal" />
            <UserAssignment actionArgName="Media Handling" path="Resource/PrintControl/MediaHandling" defaultValue="Tear Off" />
          </SendMessage>
          <Switch>
            <SwitchOnMessage>
              <MessageCase>
                <ReceiveMessage id="SimPrinterSettings" />
                <BlockAction>
                  <Terminate success="true" />
                </BlockAction>
              </MessageCase>
              <MessageCase>
                <ReceiveMessage id="Error">
                  <VariableDefinition id="Resource" path="Resource" />
                </ReceiveMessage>
                <BlockAction>
                  <Terminate success="false">
                    <Log variableId="Resource" />
                  </Terminate>
                </BlockAction>
              </MessageCase>
            </SwitchOnMessage>
          </Switch>
        </Block>
      </Blocks>
    </Transaction>

    <Transaction id="ChangeMediaLabel" semanticid="MqttLabelPrinterMedia#change-label-handling">
      <Blocks>
        <Block id="1">
          <SendMessage id="SimChangePrinterSettings">
            <UserAssignment actionArgName="Label Length" path="Resource/MediaHandling/LabelLength" />
            <UserAssignment actionArgName="Sensor Type" path="Resource/MediaHandling/SensorType" />
            <UserAssignment actionArgName="Label Width" path="Resource/MediaHandling/LabelWidth" />
            <UserAssignment actionArgName="Label Orientation" path="Resource/MediaHandling/LabelRotation" />

          </SendMessage>
          <Switch>
            <SwitchOnMessage>
              <MessageCase>
                <ReceiveMessage id="SimPrinterSettings" />
                <BlockAction>
                  <Terminate success="true" />
                </BlockAction>
              </MessageCase>
              <MessageCase>
                <ReceiveMessage id="Error">
                  <VariableDefinition id="Resource" path="Resource" />
                </ReceiveMessage>
                <BlockAction>
                  <Terminate success="false">
                    <Log variableId="Resource" />
                  </Terminate>
                </BlockAction>
              </MessageCase>
            </SwitchOnMessage>
          </Switch>
        </Block>
      </Blocks>
    </Transaction>

    <Transaction id="ChangeSystemSettings" semanticid="MqttLabelPrinterSystemSettings#change-system-configuration">
      <Blocks>
        <Block id="1">
          <SendMessage id="SimChangePrinterSettings">
            <UserAssignment actionArgName="Character Encoding" path="Resource/SystemSettings/CharacterEncoding" defaultValue="UTF-8" />
            <UserAssignment actionArgName="Enable Buzzer" path="Resource/SystemSettings/BuzzerEnable" defaultValue="false" />
            <UserAssignment actionArgName="Enable Power Button" path="Resource/SystemSettings/PowerButtonEnable" defaultValue="true" />
            <UserAssignment actionArgName="Enable Feed Button" path="Resource/SystemSettings/FeedButtonEnable" defaultValue="true" />
            <UserAssignment actionArgName="Inactive Power Down Time" path="Resource/SystemSettings/InactivePowerDownTime" defaultValue="60" />
            <UserAssignment actionArgName="Inactive Sleep Time" path="Resource/SystemSettings/InactiveSleepTime" defaultValue="10" />
            <UserAssignment actionArgName="Server Address" path="Resource/SystemSettings/MqttServerAddr" defaultValue="127.0.0.1" />
            <UserAssignment actionArgName="Server Port" path="Resource/SystemSettings/MqttServerPort" defaultValue="1883" />
          </SendMessage>
          <Switch>
            <SwitchOnMessage>
              <MessageCase>
                <ReceiveMessage id="SimPrinterSettings" />
                <BlockAction>
                  <Terminate success="true" />
                </BlockAction>
              </MessageCase>
              <MessageCase>
                <ReceiveMessage id="Error">
                  <VariableDefinition id="Resource" path="Resource" />
                </ReceiveMessage>
                <BlockAction>
                  <Terminate success="false">
                    <Log variableId="Resource" />
                  </Terminate>
                </BlockAction>
              </MessageCase>
            </SwitchOnMessage>
          </Switch>
        </Block>
      </Blocks>
    </Transaction>


    <Transaction id="ChangeNetworkSettings" semanticid="MqttLabelPrinterNetwork#change-network">
      <Blocks>
        <Block id="1">
          <SendMessage id="SimChangePrinterSettings">
            <UserAssignment actionArgName="Enable Wi-Fi" path="Resource/Network/EnableWifi" defaultValue="true" />
            <UserAssignment actionArgName="Enable Bluetooth" path="Resource/Network/EnableBluetooth" defaultValue="true" />
            <UserAssignment actionArgName="Enable Static DNS" path="Resource/Network/EnableStaticDNS" defaultValue="false" />
            <UserAssignment actionArgName="DNS Server" path="Resource/Network/DNS_Server" />
            <UserAssignment actionArgName="Gateway" path="Resource/Network/Gateway" />
            <UserAssignment actionArgName="Subnet Mask" path="Resource/Network/SubnetMask" />
            <UserAssignment actionArgName="IP Address" path="Resource/Network/IP_Address" />
            <UserAssignment actionArgName="Connection Inactive Timeout" path="Resource/Network/InactiveDisconnect" />
            <UserAssignment actionArgName="Active Network Interface" path="Resource/Network/ActiveInterface" />
            <UserAssignment actionArgName="Network Mode" path="Resource/Network/NetworkMode" />
            <UserAssignment actionArgName="DNS Server" path="Resource/Network/DnsServer" />

          </SendMessage>
          <Switch>
            <SwitchOnMessage>
              <MessageCase>
                <ReceiveMessage id="SimPrinterSettings" />
                <BlockAction>
                  <Terminate success="true" />
                </BlockAction>
              </MessageCase>
              <MessageCase>
                <ReceiveMessage id="Error">
                  <VariableDefinition id="Resource" path="Resource" />
                </ReceiveMessage>
                <BlockAction>
                  <Terminate success="false">
                    <Log variableId="Resource" />
                  </Terminate>
                </BlockAction>
              </MessageCase>
            </SwitchOnMessage>
          </Switch>
        </Block>
      </Blocks>
    </Transaction>


    <Transaction id="ChangeWIFISettings" semanticid="MqttLabelPrinterWIFI#change-wifi-settings">
      <Blocks>
        <Block id="1">
          <SendMessage id="SimChangePrinterSettings">
            <UserAssignment actionArgName="Connection Type" path="Resource/Wifi/Type" />
            <UserAssignment actionArgName="Wi-Fi SSID" path="Resource/Wifi/SSID" />
            <UserAssignment actionArgName="Network Authentication Type" path="Resource/Wifi/NetworkAuthenType" />
            <UserAssignment actionArgName="Pass Key" path="Resource/Wifi/PassPhrase" defaultValue="secret" />
            <UserAssignment actionArgName="Wi-Fi Mode" path="Resource/Wifi/WifiMode" />
          </SendMessage>
          <Switch>
            <SwitchOnMessage>
              <MessageCase>
                <ReceiveMessage id="SimPrinterSettings" />
                <BlockAction>
                  <Terminate success="true" />
                </BlockAction>
              </MessageCase>
              <MessageCase>
                <ReceiveMessage id="Error">
                  <VariableDefinition id="Resource" path="Resource" />
                </ReceiveMessage>
                <BlockAction>
                  <Terminate success="false">
                    <Log variableId="Resource" />
                  </Terminate>
                </BlockAction>
              </MessageCase>
            </SwitchOnMessage>
          </Switch>
        </Block>
      </Blocks>
    </Transaction>

    <Transaction id="ChangeBluetooth" semanticid="MqttLabelPrinterNetwork#change-bluetooth">
      <Blocks>
        <Block id="1">
          <SendMessage id="SimChangePrinterSettings">
            <UserAssignment actionArgName="Bluetooth Device Name" path="Resource/Bluetooth/Name" />
            <UserAssignment actionArgName="Enable Bluetooth Discovery" path="Resource/Bluetooth/Discoverable" defaultValue="true" />
            <UserAssignment actionArgName="Bluetooth PIN Code" path="Resource/Bluetooth/Passkey" />
          </SendMessage>
          <Switch>
            <SwitchOnMessage>
              <MessageCase>
                <ReceiveMessage id="SimPrinterSettings" />
                <BlockAction>
                  <Terminate success="true" />
                </BlockAction>
              </MessageCase>
              <MessageCase>
                <ReceiveMessage id="Error">
                  <VariableDefinition id="Resource" path="Resource" />
                </ReceiveMessage>
                <BlockAction>
                  <Terminate success="false">
                    <Log variableId="Resource" />
                  </Terminate>
                </BlockAction>
              </MessageCase>
            </SwitchOnMessage>
          </Switch>
        </Block>
      </Blocks>
    </Transaction>

    <Transaction id="SimSensState" semanticid="sim-sens-state#SensorStateNotification">
      <Blocks>
        <Block id="1">
          <ReceiveMessage id="SimSensState" />
          <BlockAction>
            <Terminate success="true" />
          </BlockAction>
        </Block>
      </Blocks>
    </Transaction>

    <Transaction id="SimAlert" semanticid="MqttLabelPrinterAlert#Alert">
      <Blocks>
        <Block id="1">
          <ReceiveMessage id="SimAlert" />
          <BlockAction>
            <Terminate success="true" />
          </BlockAction>
        </Block>
      </Blocks>
    </Transaction>

    <Transaction id="SimSensAlert" semanticid="sim-sens-alert#Alert">
      <Blocks>
        <Block id="1">
          <ReceiveMessage id="SimSensAlert" />
          <BlockAction>
            <Terminate success="true" />
          </BlockAction>
        </Block>
      </Blocks>
    </Transaction>

    <Transaction id="Alert" semanticid="MqttSdkPrinterAlert#Alert">
      <Blocks>
        <Block id="1">
          <ReceiveMessage id="Alert" />
          <BlockAction>
            <Terminate success="true" />
          </BlockAction>
        </Block>
      </Blocks>
    </Transaction>

    <Transaction id="SimBatteryNotification" semanticid="MqttLabelPrinter#BatteryNotification">
      <Blocks>
        <Block id="1">
          <ReceiveMessage id="SimBatteryChargeNotification" />
          <BlockAction>
            <Terminate success="true" />
          </BlockAction>
        </Block>
      </Blocks>
    </Transaction>

    <Transaction id="SimObserveBattery" semanticid="MqttLabelPrinter#ObserveBattery">
      <Blocks>
        <Block id="1">
          <SendMessage id="ObserveBatteryCharge" />
          <Switch>
            <SwitchOnMessage>
              <MessageCase>
                <ReceiveMessage id="Success" />
                <BlockAction>
                  <Terminate success="true" />
                </BlockAction>
              </MessageCase>
              <MessageCase>
                <ReceiveMessage id="Error">
                  <VariableDefinition id="Resource" path="Resource" />
                </ReceiveMessage>
                <BlockAction>
                  <Terminate success="false">
                    <Log variableId="Resource" />
                  </Terminate>
                </BlockAction>
              </MessageCase>
            </SwitchOnMessage>
          </Switch>
        </Block>
      </Blocks>
    </Transaction>

    <Transaction id="SimCancelObserveBattery" semanticid="MqttLabelPrinter#CancelObserveBattery">
      <Blocks>
        <Block id="1">
          <SendMessage id="CancelObserveBatteryCharge" />
          <Switch>
            <SwitchOnMessage>
              <MessageCase>
                <ReceiveMessage id="Success" />
                <BlockAction>
                  <Terminate success="true" />
                </BlockAction>
              </MessageCase>
              <MessageCase>
                <ReceiveMessage id="Error">
                  <VariableDefinition id="Resource" path="Resource" />
                </ReceiveMessage>
                <BlockAction>
                  <Terminate success="false">
                    <Log variableId="Resource" />
                  </Terminate>
                </BlockAction>
              </MessageCase>
            </SwitchOnMessage>
          </Switch>
        </Block>
      </Blocks>
    </Transaction>

    <Transaction id="SimObserveLocation" semanticid="MqttLabelPrinter#ObserveLocation">
      <Blocks>
        <Block id="1">
          <SendMessage id="ObserveLocation" />
          <Switch>
            <SwitchOnMessage>
              <MessageCase>
                <ReceiveMessage id="Success" />
                <BlockAction>
                  <Terminate success="true" />
                </BlockAction>
              </MessageCase>
              <MessageCase>
                <ReceiveMessage id="Error">
                  <VariableDefinition id="Resource" path="Resource" />
                </ReceiveMessage>
                <BlockAction>
                  <Terminate success="false">
                    <Log variableId="Resource" />
                  </Terminate>
                </BlockAction>
              </MessageCase>
            </SwitchOnMessage>
          </Switch>
        </Block>
      </Blocks>
    </Transaction>

    <Transaction id="SimCancelObserveLocation" semanticid="MqttLabelPrinter#CancelObserveLocation">
      <Blocks>
        <Block id="1">
          <SendMessage id="CancelObserveLocation" />
          <Switch>
            <SwitchOnMessage>
              <MessageCase>
                <ReceiveMessage id="Success" />
                <BlockAction>
                  <Terminate success="true" />
                </BlockAction>
              </MessageCase>
              <MessageCase>
                <ReceiveMessage id="Error">
                  <VariableDefinition id="Resource" path="Resource" />
                </ReceiveMessage>
                <BlockAction>
                  <Terminate success="false">
                    <Log variableId="Resource" />
                  </Terminate>
                </BlockAction>
              </MessageCase>
            </SwitchOnMessage>
          </Switch>
        </Block>
      </Blocks>
    </Transaction>

    <Transaction id="BatteryNotification" semanticid="MqttSdkPrinter#BatteryNotification">
      <Blocks>
        <Block id="1">
          <ReceiveMessage id="SOTIBatteryChargeNotification" />
          <BlockAction>
            <Terminate success="true" />
          </BlockAction>
        </Block>
      </Blocks>
    </Transaction>

    <Transaction id="LocationNotification" semanticid="MqttLabelPrinter#LocationNotification">
      <Blocks>
        <Block id="1">
          <ReceiveMessage id="SimLocationNotification" />
          <BlockAction>
            <Terminate success="true" />
          </BlockAction>
        </Block>
      </Blocks>
    </Transaction>

    <Transaction id="ObserveBattery" semanticid="MqttSdkPrinter#ObserveBattery">
      <Blocks>
        <Block id="1">
          <SendMessage id="SOTIObserveBatteryCharge" />
          <Switch>
            <SwitchOnMessage>
              <MessageCase>
                <ReceiveMessage id="Success" />
                <BlockAction>
                  <Terminate success="true" />
                </BlockAction>
              </MessageCase>
              <MessageCase>
                <ReceiveMessage id="Error">
                  <VariableDefinition id="Resource" path="Resource" />
                </ReceiveMessage>
                <BlockAction>
                  <Terminate success="false">
                    <Log variableId="Resource" />
                  </Terminate>
                </BlockAction>
              </MessageCase>
            </SwitchOnMessage>
          </Switch>
        </Block>
      </Blocks>
    </Transaction>

    <Transaction id="CancelObserveBattery" semanticid="MqttSdkPrinter#CancelObserveBattery">
      <Blocks>
        <Block id="1">
          <SendMessage id="SOTICancelObserveBatteryCharge" />
          <Switch>
            <SwitchOnMessage>
              <MessageCase>
                <ReceiveMessage id="Success" />
                <BlockAction>
                  <Terminate success="true" />
                </BlockAction>
              </MessageCase>
              <MessageCase>
                <ReceiveMessage id="Error">
                  <VariableDefinition id="Resource" path="Resource" />
                </ReceiveMessage>
                <BlockAction>
                  <Terminate success="false">
                    <Log variableId="Resource" />
                  </Terminate>
                </BlockAction>
              </MessageCase>
            </SwitchOnMessage>
          </Switch>
        </Block>
      </Blocks>
    </Transaction>

    <Transaction id="PrintTestPage" semanticid="GenericPrinterState#print-test-page">
      <Blocks>
        <Block id="1">
          <SendMessage id="SOTIPrintTestPage">
          </SendMessage>
          <Switch>
            <SwitchOnMessage>
              <MessageCase>
                <ReceiveMessage id="Success" />
                <BlockAction>
                  <Terminate success="true" />
                </BlockAction>
              </MessageCase>
              <MessageCase>
                <ReceiveMessage id="Error">
                  <VariableDefinition id="Resource" path="Resource" />
                </ReceiveMessage>
                <BlockAction>
                  <Terminate success="false">
                    <Log variableId="Resource" />
                  </Terminate>
                </BlockAction>
              </MessageCase>
            </SwitchOnMessage>
          </Switch>

        </Block>
      </Blocks>
    </Transaction>

    <Transaction id="GetDeviceLogs" semanticid="Logs#GetLogs">
      <Blocks>
        <Block id="1">
          <SendMessage id="SOTIGetLogFile">
          </SendMessage>
          <Switch>
            <SwitchOnMessage>
              <MessageCase>
                <ReceiveMessage id="SOTILogFile" />
                <BlockAction>
                  <Terminate success="true" />
                </BlockAction>
              </MessageCase>
              <MessageCase>
                <ReceiveMessage id="Error">
                  <VariableDefinition id="Resource" path="Resource" />
                </ReceiveMessage>
                <BlockAction>
                  <Terminate success="false">
                    <Log variableId="Resource" />
                  </Terminate>
                </BlockAction>
              </MessageCase>
            </SwitchOnMessage>
          </Switch>

        </Block>
      </Blocks>
    </Transaction>

    <Transaction id="ChangeMediaSensorType" semanticid="GenericPrintMediaHandling#change-media-sensor-type">
      <Blocks>
        <Block id="1">
          <SendMessage id="SOTIChangePrinterSettings">
            <UserAssignment actionArgName="Media Sensor" path="Resource/media_handling" />
          </SendMessage>
          <Switch>
            <SwitchOnMessage>
              <MessageCase>
                <ReceiveMessage id="SOTIPrinterSettings" />
                <BlockAction>
                  <Terminate success="true" />
                </BlockAction>
              </MessageCase>
              <MessageCase>
                <ReceiveMessage id="Error">
                  <VariableDefinition id="Resource" path="Resource" />
                </ReceiveMessage>
                <BlockAction>
                  <Terminate success="false">
                    <Log variableId="Resource" />
                  </Terminate>
                </BlockAction>
              </MessageCase>
            </SwitchOnMessage>
          </Switch>
        </Block>
      </Blocks>
    </Transaction>
	
	<Transaction id="MqttPrinterInstallWifiCerts" semanticid="MqttWifiCertificate#MqttInstallWifiCertificates" isMetaTransaction="true">
            <Blocks>
                <Block id="1">
                    <SendMessage id="MqttPrinterWLANCertFromUrl">
                        <UserAssignment actionArgName="CA Certificate File" path="Resource/CaCrt" />
                        <UserAssignment actionArgName="Client Certificate File" path="Resource/ClientCrt" />
                        <UserAssignment actionArgName="Client Key File" path="Resource/ClientKey" />
                        <UserAssignment actionArgName="Client Key Password" path="Resource/ClientKeyPassword" secret="true" />
                    </SendMessage>
                    <Switch>
                        <SwitchOnMessage>
                            <MessageCase>
                                <ReceiveMessage id="Success" />
                                <BlockAction>
                                    <Terminate success="true" />
                                </BlockAction>
                            </MessageCase>
                            <MessageCase>
                                <ReceiveMessage id="Error">
                                    <VariableDefinition id="Resource" path="Resource" />
                                </ReceiveMessage>
                                <BlockAction>
                                    <Terminate success="false">
                                        <Log variableId="Resource" />
                                    </Terminate>
                                </BlockAction>
                            </MessageCase>
                        </SwitchOnMessage>
                    </Switch>
                </Block>
            </Blocks>
        <AlertBlocks>
            <AlertBlock MessageId="SimAlert" timeoutAlertId="WifiCertificateTimeout" >
                <SuccessCase>
                    <Enumeration>
                        <Value>WifiRootCertificateDownloadSuccess</Value>
                        <Value>WifiClientCertificateDownloadSuccess</Value>
                    </Enumeration>
                </SuccessCase>
                <FailureCase>
                    <Enumeration>
                        <Value>WifiRootCertificateDownloadFailure</Value>
                        <Value>WifiClientCertificateDownloadFailure</Value>
                    </Enumeration>
                </FailureCase>
            </AlertBlock>
        </AlertBlocks>
       
        </Transaction>

  </Transactions>


  <ProtocolDefinition id="E1138DF8-B607-4463-8D70-347F702FEE14" name="SOTI MQTT">
    <Protocol>
      <Transaction id="InitializeProtocol" hidden="true" />
      <Transaction id="Register" />
      <Transaction id="NewDevices" />
      <Transaction id="SearchNewDevices" instanceIdRequired="true" />
      <Transaction id="Unregister" instanceIdRequired="true" />
      <Transaction id="DeployCertificate" hidden="true" />
      <Transaction id="ActivateCertificate" hidden="true" />
      <Transaction id="CancelCertificateActivation" hidden="true" />
      <Transaction id="RemoteControlRequest" hidden="true" />
    </Protocol>

    <Devices>
      <Device id="mqtt-simulated-sensor">
        <ApiTypeId id="SOTI@@MQTT-SDK-Simulated-Temperature-Sensor@@1" />
        <Transaction id="DisconnectedNotification" />
        <Transaction id="SimSensChangeSettings" />
        <Transaction id="SimSensGetDeviceSystemInfo" />
        <Transaction id="SimSensState" />

        <Transaction id="SimSensFactoryReset" />
        <Transaction id="SimSensAlert" />
        <Transaction id="SimSensInstallUpdatePackageFromFileStore" />

      </Device>
      <Device id="mqtt-simulated-printer">
        <ApiTypeId id="SOTI@@MQTT-Mobile-Label-Printer@@1" />
        <Transaction id="DisconnectedNotification" />
        <Transaction id="SimCheckIn" />
        <Transaction id="PrinterSimReboot" />
        <Transaction id="SimFactoryReset" />
        <Transaction id="SimPrintTestPage" />
        <Transaction id="GetDeviceLogs" />
        <Transaction id="SimInstallUpdatePackage" />
        <Transaction id="SimChangePrintControl" />
        <Transaction id="ChangeMediaLabel" />
        <Transaction id="ChangeSystemSettings" />
        <Transaction id="ChangeNetworkSettings" />
        <Transaction id="ChangeWIFISettings" />
        <Transaction id="ChangeBluetooth" />
        <Transaction id="SimAlert" />
        <Transaction id="SimBatteryNotification" />
        <Transaction id="SimObserveBattery" />
        <Transaction id="SimCancelObserveBattery" />
        <Transaction id="SimObserveLocation" />
        <Transaction id="SimCancelObserveLocation" />
        <Transaction id="LocationNotification" />
        <Transaction id="SimInstallUpdatePackageFromFileStore" />
        <Transaction id="SimInstallUpdateCertificateFromFileStore" />
        <Transaction id="MqttPrinterInstallWifiCerts" />
      </Device>

      <Device id="mqtt-sdk-printer">
        <ApiTypeId id="SOTI@@MQTT-SDK-Printer@@1" />
        <Transaction id="DisconnectedNotification" />
        <Transaction id="CheckIn" />
        <Transaction id="Reboot" />
        <Transaction id="FactoryReset" />
        <Transaction id="PrintTestPage" />
        <Transaction id="ChangePrintControl" />
        <Transaction id="ChangeNetwork" />
        <Transaction id="ChangeWifiCertificates" />
        <Transaction id="ChangeHTTPCertificate" />
        <Transaction id="ChangeMQTTSettings" />
        <Transaction id="ChangeMQTTCertificates" />
        <Transaction id="ChangeQoS" />
        <Transaction id="Alert" />
        <Transaction id="InstallUpdatePackage" />
        <Transaction id="InstallUpdatePackageFromUrl" />
        <Transaction id="InstallUpdatePackageFromFileStore" />
        <Transaction id="BatteryNotification" />
        <Transaction id="ObserveBattery" />
        <Transaction id="CancelObserveBattery" />
        <Transaction id="ChangeMediaSensorType" />
      </Device>

    </Devices>
  </ProtocolDefinition>
</Domain>