<?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="ZebraRfidReboot" />
    <Message id="ZebraRfidRebootResponse" />
    <Message id="ZebraRfidAlert">
      <Object id="Resource">
        <DataPointReference id="id" path="Zebra-RFID-Alert#Id" />
        <DataPointReference id="description" path="Zebra-RFID-Alert#Description" />
        <DataPointReference id="type" path="Zebra-RFID-Alert#Type" />
        <DataPointReference id="priority" path="Zebra-RFID-Alert#Priority" />
        <DataPointReference id="timestamp" path="Zebra-RFID-Alert#Timestamp" />
      </Object>
    </Message>
    <Message id="SetOS">
      <Object id="Resource">
        <Segment id="firmware" type="filestore" />
        <Segment id="authenticationType" type="string" />
        <Segment id="verificationType" type="string" />
      </Object>
    </Message>
    <Message id="SetOSResponse" />
    <Message id="InstallRootCertificate">
      <Object id="Resource">
        <Segment id="type" type="string" />
        <Segment id="ca_cert" type="filestore" />
      </Object>
    </Message>
    <Message id="InstallClientCertificate">
      <Object id="Resource">
        <Segment id="type" type="string" />
        <Segment id="client_cert" type="filestore" />
        <Segment id="client_key" type="filestore" />
        <Segment id="cert_key_password" type="string" />
      </Object>
    </Message>
    <Message id="InstallCertificateResponse" />
    <Message id="GetConfig" />
    <Message id="GetConfigResponse">
      <Object id="Resource">
        <Object id="currentConfig">
          <Object id="readerVersion">
            <DataPointReference id="firmwareVersion" path="base-module#version" />
            <DataPointReference id="model" path="base-module#model-id" />
            <DataPointReference id="serialNumber" path="GenericDeviceState#serial-number" />
            <DataPointReference id="sku" path="Zebra-RFID-General#sku" />
            <Object id="detailedVersions">
              <DataPointReference id="scannerFirmware" path="Zebra-RFID-General#scannerFirmware" />
              <DataPointReference id="radioFirmware" path="Zebra-RFID-General#radioFirmware" />
              <DataPointReference id="iotcVersion" path="Zebra-RFID-General#iotcVersion" />
            </Object>
          </Object>
          <Object id="deviceStatus">
            <Object id="ntp">
              <DataPointReference id="offset" path="Zebra-RFID-NTP#offset" />
              <DataPointReference id="reach" path="Zebra-RFID-NTP#reach" />
            </Object>
            <Object id="terminalConnection">
              <DataPointReference id="type" path="Zebra-RFID-TerminalConnection#type" />
              <DataPointReference id="status" path="Zebra-RFID-TerminalConnection#status" />
            </Object>
            <Object id="batteryStatus">
              <DataPointReference id="capacity" path="Zebra-RFID-Battery#BatteryCapacity" />
              <DataPointReference id="stateOfHealth" path="Zebra-RFID-Battery#stateOfHealth" />
              <DataPointReference id="chargePercentage" path="chargeModule#charge" />
              <DataPointReference id="chargeStatus" path="Zebra-RFID-Battery#chargeStatus" />
              <DataPointReference id="mfgDate"            path="Zebra-RFID-Battery#mfgDate"/>
              <DataPointReference id="cycleCount"         path="Zebra-RFID-Battery#cycleCount"/>
              <DataPointReference id="fullChargeCapacity" path="Zebra-RFID-Battery#fullChargeCapacity"/>
              <DataPointReference id="temperature"        path="Zebra-RFID-Battery#temperature"/>
              <DataPointReference id="designCapacity"     path="Zebra-RFID-Battery#designCapacity"/>
              <DataPointReference id="batteryType"        path="Zebra-RFID-Battery#batteryType"/>
            </Object>
            <DataPointReference id="radioActivity" path="Zebra-RFID-General#radioActivity" />
            <DataPointReference id="radioConnection" path="Zebra-RFID-General#radioConnection" />
            <DataPointReference id="systemTime" path="Zebra-RFID-General#systemTime" />
            <DataPointReference id="powerSource" path="Zebra-RFID-General#powerSource" />
          </Object>
          <Object id="currentRegion">
            <DataPointReference id="frequencyHopping"
              path="Zebra-RFID-CurrentRegion#frequencyHopping" />
            <DataPointReference id="channelData" path="Zebra-RFID-CurrentRegion#channelData" />
            <DataPointReference id="lbtEnabled" path="Zebra-RFID-CurrentRegion#lbtEnabled" />
            <DataPointReference id="country" path="Zebra-RFID-CurrentRegion#country" />
            <DataPointReference id="maxTxPowerSupported"
              path="Zebra-RFID-CurrentRegion#maxTxPowerSupported" />
            <DataPointReference id="minTxPowerSupported"
              path="Zebra-RFID-CurrentRegion#minTxPowerSupported" />
            <DataPointReference id="regulatoryStandard"
              path="Zebra-RFID-CurrentRegion#regulatoryStandard" />
          </Object>
          <Object id="ethConfig">
            <Object id="interfaceDetails">
              <Object id="linkStatus">
                <DataPointReference id="status" path="Zebra-RFID-LAN#linkStatus" />
                <DataPointReference id="linkSpeed" path="Zebra-RFID-LAN#linkSpeed" />
              </Object>
              <Object id="ipv4Configuration">
                <DataPointReference id="ipAddress"
                  path="GenericNetworkIP4Lan#generic-network-ipaddress" />
                <DataPointReference id="subnetMask"
                  path="GenericNetworkIP4Lan#generic-network-subnet-mask" />
                <DataPointReference id="gateway" path="GenericNetworkIP4Lan#generic-network-gateway" />
                <DataPointReference id="enableDhcp" path="Zebra-RFID-LAN#enableDhcp" />
                <DataPointReference id="dnsServer"
                  path="GenericNetworkIP4Lan#primary_dns_server_ip_address" />
                <DataPointReference id="domainName" path="Zebra-RFID-LAN#domainName" />
              </Object>
              <!--Commented
              out for now as we will add back in future release
			  <Object id="ipv6Configuration">
                <DataPointReference id="ipAddress" path="Zebra-RFID-LAN-ipv6#ipaddress" />
                <DataPointReference id="prefix" path="Zebra-RFID-LAN-ipv6#prefix" />
                <DataPointReference id="gateway" path="Zebra-RFID-LAN-ipv6#gateway" />
                <DataPointReference id="enableAuto" path="Zebra-RFID-LAN-ipv6#enableAuto" />
                <DataPointReference id="dnsServer" path="Zebra-RFID-LAN-ipv6#dnsServer" />
                <DataPointReference id="domainName" path="Zebra-RFID-LAN-ipv6#domainName" />
              </Object>-->
              <DataPointReference id="status" path="Zebra-RFID-LAN#status" />
              <DataPointReference id="hostName" path="Zebra-RFID-LAN#hostName" />
              <DataPointReference id="macAddress" path="GenericNetworkIP4Lan#generic-network-mac" />
              <DataPointReference id="interfaceName" path="Zebra-RFID-LAN#interfaceName" />
            </Object>
          </Object>
          <Object id="wifiConfig">
            <Object id="interfaceDetails">
              <Object id="accessPoint">
                <DataPointReference id="essid" path="Zebra-RFID-WLAN#essid" />
                <DataPointReference id="status" path="Zebra-RFID-WLAN#status" />
                <DataPointReference id="securityType" path="Zebra-RFID-WLAN#securityType" />
                <DataPointReference id="enableSecurity" path="Zebra-RFID-WLAN#enableSecurity" />
                <DataPointReference id="autoConn" path="Zebra-RFID-WLAN#autoConn" />
              </Object>
              <Object id="securityDetails">
                <Object id="WPA2Enterprise">
                  <DataPointReference id="authentication" path="Zebra-RFID-WLAN#wpa2Authentication" />
                  <DataPointReference id="innerAuthentication"
                    path="Zebra-RFID-WLAN#wpa2InnerAuthentication" />
                  <DataPointReference id="identity" path="Zebra-RFID-WLAN#wpa2Identity" />
                  <DataPointReference id="anonymousIdentity"
                    path="Zebra-RFID-WLAN#wpa2AnonymousIdentity" />
                  <DataPointReference id="protocol" path="Zebra-RFID-WLAN#wpa2protocol" />
                </Object>
                <Object id="WPA3Enterprise">
                  <DataPointReference id="authentication" path="Zebra-RFID-WLAN#wpa3Authentication" />
                  <DataPointReference id="innerAuthentication"
                    path="Zebra-RFID-WLAN#wpa3InnerAuthentication" />
                  <DataPointReference id="identity" path="Zebra-RFID-WLAN#wpa3Identity" />
                  <DataPointReference id="anonymousIdentity"
                    path="Zebra-RFID-WLAN#wpa3AnonymousIdentity" />
                  <DataPointReference id="protocol" path="Zebra-RFID-WLAN#wpa3protocol" />
                </Object>
                <Object id="OWEPublic">
                  <DataPointReference id="authentication"
                    path="Zebra-RFID-WLAN#owePublicAuthentication" />
                </Object>
              </Object>

              <Object id="ipv4Configuration">
                <DataPointReference id="ipAddress"
                  path="GenericNetworkIP4WLan#generic-network-ipaddress" />
                <DataPointReference id="subnetMask"
                  path="GenericNetworkIP4WLan#generic-network-subnet-mask" />
                <DataPointReference id="gateway"
                  path="GenericNetworkIP4WLan#generic-network-gateway" />
                <DataPointReference id="enableDhcp" path="Zebra-RFID-WLAN#enableDhcp" />
                <DataPointReference id="dnsServer"
                  path="GenericNetworkIP4WLan#primary_dns_server_ip_address" />
                <DataPointReference id="domainName" path="Zebra-RFID-WLAN#domainName" />
              </Object>
              <!--Commented
              out for now as we will add back in future release
			  <Object id="ipv6Configuration">
                <DataPointReference id="ipAddress"
                  path="GenericNetworkIP6WLan#generic-network-ipv6-ipaddress" />
                <DataPointReference id="prefix" path="Zebra-RFID-WLAN-ipv6#prefix" />
                <DataPointReference id="gateway" path="Zebra-RFID-WLAN-ipv6#gateway" />
                <DataPointReference id="enableAuto" path="Zebra-RFID-WLAN-ipv6#enableAuto" />
                <DataPointReference id="dnsServer" path="Zebra-RFID-WLAN-ipv6#dnsServer" />
                <DataPointReference id="domainName" path="Zebra-RFID-WLAN-ipv6#domainName" />
              </Object>-->
              <DataPointReference id="status" path="Zebra-RFID-WLAN#status" />
              <DataPointReference id="hostname" path="Zebra-RFID-WLAN#hostName" />
              <DataPointReference id="macAddress" path="GenericNetworkIP4WLan#generic-network-mac" />

            </Object>
          </Object>
          <Object id="epConfig">
            <Object id="configuration">
              <Object id="mqttParams">
                <DataPointReference id="keepAlive" path="Zebra-RFID-Mqtt#keepAlive" />
                <DataPointReference id="cleanSession" path="Zebra-RFID-Mqtt#cleanSession" />
                <DataPointReference id="reconnectDelayMin" path="Zebra-RFID-Mqtt#reconnectDelayMin" />
                <DataPointReference id="reconnectDelayMax" path="Zebra-RFID-Mqtt#reconnectDelayMax" />
                <DataPointReference id="username" path="MQTT-Settings#mqtt_user_name" />
              </Object>
              <Object id="eventConfiguration">
                <!--Commented
                out for now as we will add back in future release
                <Object id="heartBeatConfiguration">
                  <DataPointReference id="interval" path="Zebra-RFID-Events#interval" />
                  <DataPointReference id="inventoryStatus" path="Zebra-RFID-Events#inventoryStatus" />
                  <DataPointReference id="scanStatus" path="Zebra-RFID-Events#scanStatus" />
                  <DataPointReference id="batteryStatus" path="Zebra-RFID-Events#batteryStatus" />
                  <DataPointReference id="userApps" path="Zebra-RFID-Events#userApps" />
                </Object>             
				-->
                <DataPointReference id="firmwareUpdate" path="Zebra-RFID-Events#firmwareUpdate" />
                <DataPointReference id="network" path="Zebra-RFID-Events#network" />
                <DataPointReference id="ntp" path="Zebra-RFID-Events#ntp" />
                <DataPointReference id="power" path="Zebra-RFID-Events#power" />
                <DataPointReference id="battery" path="Zebra-RFID-Events#battery" />
                <DataPointReference id="fileDownload" path="Zebra-RFID-Events#fileDownload" />
              </Object>
              <DataPointReference id="protocol" path="Zebra-RFID-Mqtt#protocol" />
              <DataPointReference id="activate" path="Zebra-RFID-Mqtt#activate" />
              <DataPointReference id="url" path="MQTT-Settings#mqtt_server_ip_addr" />
              <DataPointReference id="verificationType" path="Zebra-RFID-Mqtt#verificationType" />
              <DataPointReference id="port" path="MQTT-Settings#mqtt_port_number" />
              <DataPointReference id="qosCommon" path="Zebra-RFID-Mqtt#qosCommon" />
              <DataPointReference id="tenantId" path="MQTT-Settings#tenant_id" />
            </Object>
          </Object>
          <Object id="deviceCapabilities">
            <DataPointReference id="isBluetoothSupported"
              path="GenericNetworkBluetooth#bluetoothEnabled" />
            <DataPointReference id="isScannerSupported" path="Zebra-RFID-General#isScannerSupported" />
            <DataPointReference id="isWifiSupported" path="GenericNetworkIP4WLan#wlanEnabled" />
          </Object>
          <Object id="installedCerts">
            <DataPointReference id="certInfo" path="Zebra-RFID-CertsList#certificates">
                <PropertyMapping id="type" mappingType="CertificateType">
                    <CertificateTypeEnumMappings>
                        <CertificateTypeEnumMapping connectValue="WIFI" deviceValue="wifi"/>
                        <CertificateTypeEnumMapping connectValue="MQTT" deviceValue="mqtt"/>
                        <CertificateTypeEnumMapping connectValue="FILESTORE" deviceValue="filestore"/>
                    </CertificateTypeEnumMappings>
                </PropertyMapping>
                <PropertyMapping id="validTill" mappingType="CertificateProperty" certificateProperty="ValidTo" />
            </DataPointReference>
          </Object>
        </Object>
      </Object>
    </Message>
    <Message id="SetConfig">
      <Object id="Resource">
        <Object id="ethConfig">
          <Segment id="interfaceName" type="string" />
          <Segment id="enableInterface" type="boolean" />
          <Object id="ipv4Configuration">
            <Segment id="ipAddress" type="ipv4" />
            <Segment id="subnetMask" type="ipv4" />
            <Segment id="gateway" type="ipv4" />
            <Segment id="enableDhcp" type="boolean" />
            <Segment id="dnsServer" type="string" />
            <Segment id="domainName" type="string" />
          </Object>
        <!--Commented
          out for now as we will add back in future release
			      <Object id="ipv6Configuration">
              <Segment id="ipAddress" type="ipv6" />
              <Segment id="prefix" type="string" />
              <Segment id="gateway" type="string" />
              <Segment id="enableAuto" type="boolean" />
              <Segment id="dnsServer" type="string" />
              <Segment id="domainName" type="string" />
            </Object>-->
        </Object>
        <Object id="wifiConfig">
          <Segment id="interfaceName" type="string" />
          <Segment id="enableInterface" type="boolean" />
          <Segment id="operation" type="string" />
          <Object id="accessPoint">
            <Segment id="essid" type="string" />
            <Segment id="connect" type="boolean" />
            <Segment id="status" type="string" />
            <Segment id="securityType" type="string" />
            <Segment id="autoConn" type="boolean" />
            <Segment id="enableSecurity" type="boolean" />
            <Segment id="isPreferred" type="boolean"/>
            <Object id="security">
              <Segment id="securityType" type="string" />
              <Object id="securityDetails">
                <Object id="WPA2Personal">
                  <Segment id="password" type="string" />
                </Object>
                <Object id="WPA3Personal">
                  <Segment id="password" type="string" />
                </Object>
                <Object id="WPA2Enterprise">
                  <Segment id="authentication" type="string" />
                  <Segment id="innerAuthentication" type="string" />
                  <Segment id="identity" type="string" />
                  <Segment id="anonymousIdentity" type="string" />
                  <Segment id="passphrase" type="string" />
                  <Segment id="password" type="string" />
                  <Segment id="protocol" type="string" />
                </Object>
                <Object id="WPA3Enterprise">
                  <Segment id="authentication" type="string" />
                  <Segment id="innerAuthentication" type="string" />
                  <Segment id="identity" type="string" />
                  <Segment id="anonymousIdentity" type="string" />
                  <Segment id="passphrase" type="string" />
                  <Segment id="password" type="string" />
                  <Segment id="protocol" type="string" />
                </Object>
                <Object id="OWEPublic">
                  <Segment id="authentication" type="string" />
                </Object>
              </Object>
            </Object>
          </Object>
          <Object id="ipv4Configuration">
            <Segment id="ipAddress" type="ipv4" />
            <Segment id="subnetMask" type="ipv4" />
            <Segment id="gateway" type="ipv4" />
            <Segment id="enableDhcp" type="boolean" />
            <Segment id="dnsServer" type="string" />
            <Segment id="domainName" type="string" />
          </Object>
          <!--Commented
          out for now as we will add back in future release
			    <Object id="ipv6Configuration">
              <Segment id="ipAddress" type="ipv6" />
              <Segment id="prefix" type="string" />
              <Segment id="gateway" type="string" />
              <Segment id="enableAuto" type="boolean" />
              <Segment id="dnsServer" type="string" />
              <Segment id="domainName" type="string" />
            </Object>-->
        </Object>
        <Object id="epConfig">
          <Segment id="operation" type="string" />
          <Object id="configuration">
            <Segment id="epType" type="string" />
            <Segment id="protocol" type="string" />
            <Segment id="activate" type="boolean" />
            <Segment id="url" type="string" />
            <Segment id="verificationType" type="string" />
            <Segment id="port" type="integer" />
            <Segment id="qosCommon" type="integer" />
            <Segment id="tenantId" type="string" />

            <Object id="mqttParams">
              <Segment id="username" type="string" />
              <Segment id="password" type="string" />
              <Segment id="keepAlive" type="integer" />
              <Segment id="cleanSession" type="boolean" />
              <Segment id="reconnectDelayMin" type="integer" />
              <Segment id="reconnectDelayMax" type="integer" />
              <Segment id="clientId" type="string" />
            </Object>
            <Object id="eventConfiguration">
              <Segment id="antenna" type="boolean" />
              <Segment id="terminalConnection" type="boolean" />
              <Segment id="firmwareUpdate" type="boolean" />
              <Segment id="gpi" type="boolean" />
              <Segment id="network" type="boolean" />
              <Segment id="exceptions" type="boolean" />
              <Segment id="ntp" type="boolean" />
              <Segment id="userApp" type="boolean" />
              <Segment id="power" type="boolean" />
              <Segment id="battery" type="boolean" />
              <Segment id="temperature" type="boolean" />
              <Segment id="fileDownload" type="boolean" />
              <!--Commented
              out for now as we will add back in future release
              <Segment id="cpuThreshold" type="integer" />
              <Segment id="ramThreshold" type="integer" />
              <Segment id="flashThreshold" type="integer" />
              <Object id="heartBeatConfiguration">
                <Segment id="interval" type="integer" />
                <Segment id="inventoryStatus" type="boolean" />
                <Segment id="scanStatus" type="boolean" />
                <Segment id="batteryStatus" type="boolean" />
                <Segment id="userApps" type="boolean" />
              </Object>-->
            </Object>
          </Object>
        </Object>
      </Object>
    </Message>
    <Message id="SetConfigResponse">
      <Object id="Resource">
        <Object id="cfgResponse">
          <Object id="ethConfig">
            <Object id="InterfaceDetails">
              <Object id="linkStatus">
                <DataPointReference id="status" path="Zebra-RFID-LAN#linkStatus" />
                <DataPointReference id="linkSpeed" path="Zebra-RFID-LAN#linkSpeed" />
              </Object>
              <Object id="ipv4Configuration">
                <DataPointReference id="ipAddress"
                  path="GenericNetworkIP4Lan#generic-network-ipaddress" />
                <DataPointReference id="subnetMask"
                  path="GenericNetworkIP4Lan#generic-network-subnet-mask" />
                <DataPointReference id="gateway" path="GenericNetworkIP4Lan#generic-network-gateway" />
                <DataPointReference id="enableDhcp" path="Zebra-RFID-LAN#enableDhcp" />
                <DataPointReference id="dnsServer"
                  path="GenericNetworkIP4Lan#primary_dns_server_ip_address" />
                <DataPointReference id="domainName" path="Zebra-RFID-LAN#domainName" />
              </Object>
              <!--Commented
              out for now as we will add back in future release
            <Object id="ipv6Configuration">
              <DataPointReference id="ipAddress" path="Zebra-RFID-LAN-ipv6#ipaddress" />
              <DataPointReference id="prefix" path="Zebra-RFID-LAN-ipv6#prefix" />
              <DataPointReference id="gateway" path="Zebra-RFID-LAN-ipv6#gateway" />
              <DataPointReference id="enableAuto" path="Zebra-RFID-LAN-ipv6#enableAuto" />
              <DataPointReference id="dnsServer" path="Zebra-RFID-LAN-ipv6#dnsServer" />
              <DataPointReference id="domainName" path="Zebra-RFID-LAN-ipv6#domainName" />
            </Object>
            -->
              <DataPointReference id="status" path="Zebra-RFID-LAN#status" />
              <DataPointReference id="hostName" path="Zebra-RFID-LAN#hostName" />
              <DataPointReference id="macAddress" path="GenericNetworkIP4Lan#generic-network-mac" />
              <DataPointReference id="interfaceName" path="Zebra-RFID-LAN#interfaceName" />
            </Object>
          </Object>
          <Object id="wifiConfig">
            <Object id="InterfaceDetails">
              <Object id="accessPoint">
                <DataPointReference id="essid" path="Zebra-RFID-WLAN#essid" />
                <DataPointReference id="status" path="Zebra-RFID-WLAN#status" />
                <DataPointReference id="enableSecurity" path="Zebra-RFID-WLAN#enableSecurity" />
                <DataPointReference id="securityType" path="Zebra-RFID-WLAN#securityType" />
                <Object id="security">
                  <Object id="securityDetails">
                    <Object id="WPA2Enterprise">
                      <DataPointReference id="authentication"
                        path="Zebra-RFID-WLAN#wpa2Authentication" />
                      <DataPointReference id="innerAuthentication"
                        path="Zebra-RFID-WLAN#wpa2InnerAuthentication" />
                      <DataPointReference id="identity" path="Zebra-RFID-WLAN#wpa2Identity" />
                      <DataPointReference id="anonymousIdentity"
                        path="Zebra-RFID-WLAN#wpa2AnonymousIdentity" />
                      <DataPointReference id="protocol" path="Zebra-RFID-WLAN#wpa2protocol" />
                    </Object>
                    <Object id="WPA3Enterprise">
                      <DataPointReference id="authentication"
                        path="Zebra-RFID-WLAN#wpa3Authentication" />
                      <DataPointReference id="innerAuthentication"
                        path="Zebra-RFID-WLAN#wpa3InnerAuthentication" />
                      <DataPointReference id="identity" path="Zebra-RFID-WLAN#wpa3Identity" />
                      <DataPointReference id="anonymousIdentity"
                        path="Zebra-RFID-WLAN#wpa3AnonymousIdentity" />
                      <DataPointReference id="protocol" path="Zebra-RFID-WLAN#wpa3protocol" />
                    </Object>
                    <Object id="OWEPublic">
                      <DataPointReference id="authentication"
                        path="Zebra-RFID-WLAN#owePublicAuthentication" />
                    </Object>
                  </Object>
                </Object>

              </Object>
              <Object id="ipv4Configuration">
                <DataPointReference id="ipAddress"
                  path="GenericNetworkIP4WLan#generic-network-ipaddress" />
                <DataPointReference id="subnetMask"
                  path="GenericNetworkIP4WLan#generic-network-subnet-mask" />
                <DataPointReference id="gateway"
                  path="GenericNetworkIP4WLan#generic-network-gateway" />
                <DataPointReference id="enableDhcp" path="Zebra-RFID-WLAN#enableDhcp" />
                <DataPointReference id="dnsServer"
                  path="GenericNetworkIP4WLan#primary_dns_server_ip_address" />
                <DataPointReference id="domainName" path="Zebra-RFID-WLAN#domainName" />
              </Object>
              <!-- Commented out for now as we will add back in future release
            <Object id="ipv6Configuration">
              <DataPointReference id="ipAddress"
                path="GenericNetworkIP6WLan#generic-network-ipv6-ipaddress" />
              <DataPointReference id="prefix" path="Zebra-RFID-WLAN-ipv6#prefix" />
              <DataPointReference id="gateway" path="Zebra-RFID-WLAN-ipv6#gateway" />
              <DataPointReference id="anableAuto" path="Zebra-RFID-WLAN-ipv6#enableAuto" />
              <DataPointReference id="dnsServer" path="Zebra-RFID-WLAN-ipv6#dnsServer" />
              <DataPointReference id="domainName" path="Zebra-RFID-WLAN-ipv6#domainName" />
            </Object>-->
              <DataPointReference id="status" path="Zebra-RFID-WLAN#status" />
              <DataPointReference id="hostName" path="Zebra-RFID-WLAN#hostName" />
              <DataPointReference id="macAddress" path="GenericNetworkIP4WLan#generic-network-mac" />
            </Object>
          </Object>
          <Object id="epConfig">
            <Object id="configuration">
              <Object id="mqttParams">
                <DataPointReference id="keepAlive" path="Zebra-RFID-Mqtt#keepAlive" />
                <DataPointReference id="cleanSession" path="Zebra-RFID-Mqtt#cleanSession" />
                <DataPointReference id="reconnectDelayMin" path="Zebra-RFID-Mqtt#reconnectDelayMin" />
                <DataPointReference id="reconnectDelayMax" path="Zebra-RFID-Mqtt#reconnectDelayMax" />
              </Object>
              <Object id="eventConfiguration">
                <DataPointReference id="firmwareUpdate" path="Zebra-RFID-Events#firmwareUpdate" />
                <DataPointReference id="network" path="Zebra-RFID-Events#network" />
                <DataPointReference id="ntp" path="Zebra-RFID-Events#ntp" />
                <DataPointReference id="power" path="Zebra-RFID-Events#power" />
                <DataPointReference id="battery" path="Zebra-RFID-Events#battery" />
                <DataPointReference id="fileDownload" path="Zebra-RFID-Events#fileDownload" />
              </Object>
              <DataPointReference id="protocol" path="Zebra-RFID-Mqtt#protocol" />
              <DataPointReference id="activate" path="Zebra-RFID-Mqtt#activate" />
              <DataPointReference id="url" path="MQTT-Settings#mqtt_server_ip_addr" />
              <DataPointReference id="verificationType" path="Zebra-RFID-Mqtt#verificationType" />
              <DataPointReference id="port" path="MQTT-Settings#mqtt_port_number" />
              <DataPointReference id="qosCommon" path="Zebra-RFID-Mqtt#qosCommon" />
              <DataPointReference id="tenantId" path="MQTT-Settings#tenant_id" />
              <DataPointReference id="username" path="MQTT-Settings#mqtt_user_name" />
            </Object>
          </Object>
          <Object id="wifiProfiles">
            <DataPointReference id="wifiConfig" path="Zebra-RFID-WifiProfiles#wifi-profiles"/>
          </Object>
        </Object>
      </Object>
    </Message>
    <Message id="DeleteWifiProfile">
      <Object id="Resource">
        <Segment id="essid" type="string"/>
      </Object>
    </Message>
    <Message id="DeleteWifiProfileResponse" />
    <Message id="GetWifi"/>
    <Message id="GetWifiResponse">
      <Object id="Resource">
      <Object id="wifiProfiles">
        <DataPointReference id="wifiConfig" path="Zebra-RFID-WifiProfiles#wifi-profiles"/>
      </Object>
      </Object>
    </Message>
  </Messages>


  <Transactions>
    <Transaction id="ZebraRfidDeleteProfiles" semanticid="Zebra-RFID-Delete-Wifi-Profile#delete-wifi-profile">
      <Blocks>
        <Block id="1">
          <SendMessage id="DeleteWifiProfile">
            <UserAssignment actionArgName="ESSID"
              path="Resource/essid" />
          </SendMessage>
          <Switch>
            <SwitchOnMessage>
              <MessageCase>
                <ReceiveMessage id="DeleteWifiProfileResponse" />
                <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="ZebraRfidCreateWifiProfiles" semanticid="Zebra-RFID-Create-WifiProile#create-wifi-profile">
      <Blocks>
        <Block id="1">
          <SendMessage id="SetConfig">
            <UserAssignment actionArgName="ESSID"
              path="Resource/wifiConfig/accessPoint/essid" />
            <UserAssignment actionArgName="Connect"
              path="Resource/wifiConfig/accessPoint/connect" defaultValue="false" />
            <UserAssignment actionArgName="Auto Connect"
              path="Resource/wifiConfig/accessPoint/autoConn" />
            <UserAssignment actionArgName="Wi-Fi Security Enabled"
              path="Resource/wifiConfig/accessPoint/enableSecurity" />
            <UserAssignment actionArgName="Security Type"
              path="Resource/wifiConfig/accessPoint/security/securityType" />
            <UserAssignment actionArgName="WPA2 Personal Password"
              path="Resource/wifiConfig/accessPoint/security/securityDetails/WPA2Personal/password" />
            <UserAssignment actionArgName="WPA3 Personal Password"
              path="Resource/wifiConfig/accessPoint/security/securityDetails/WPA3Personal/password" />
            <UserAssignment actionArgName="WPA2 Enterprise Authentication"
              path="Resource/wifiConfig/accessPoint/security/securityDetails/WPA2Enterprise/authentication" />
            <UserAssignment actionArgName="WPA2 Enterprise Inner Authentication"
              path="Resource/wifiConfig/accessPoint/security/securityDetails/WPA2Enterprise/innerAuthentication" />
            <UserAssignment actionArgName="WPA2 Enterprise Identity"
              path="Resource/wifiConfig/accessPoint/security/securityDetails/WPA2Enterprise/identity" />
            <UserAssignment actionArgName="WPA2 Enterprise Anonymous Identity"
              path="Resource/wifiConfig/accessPoint/security/securityDetails/WPA2Enterprise/anonymousIdentity" />
            <UserAssignment actionArgName="WPA2 Enterprise Password"
              path="Resource/wifiConfig/accessPoint/security/securityDetails/WPA2Enterprise/password" />
            <UserAssignment actionArgName="WPA2 Enterprise Passphrase"
              path="Resource/wifiConfig/accessPoint/security/securityDetails/WPA2Enterprise/passphrase" />
            <UserAssignment actionArgName="WPA2 Enterprise Protocol"
              path="Resource/wifiConfig/accessPoint/security/securityDetails/WPA2Enterprise/protocol" />
            <UserAssignment actionArgName="WPA3 Enterprise Authentication"
              path="Resource/wifiConfig/accessPoint/security/securityDetails/WPA3Enterprise/authentication" />
            <UserAssignment actionArgName="WPA3 Enterprise Inner Authentication"
              path="Resource/wifiConfig/accessPoint/security/securityDetails/WPA3Enterprise/innerAuthentication" />
            <UserAssignment actionArgName="WPA3 Enterprise Identity"
              path="Resource/wifiConfig/accessPoint/security/securityDetails/WPA3Enterprise/identity" />
            <UserAssignment actionArgName="WPA3 Enterprise Anonymous Identity"
              path="Resource/wifiConfig/accessPoint/security/securityDetails/WPA3Enterprise/anonymousIdentity" />
            <UserAssignment actionArgName="WPA3 Enterprise Password"
              path="Resource/wifiConfig/accessPoint/security/securityDetails/WPA3Enterprise/password" />
            <UserAssignment actionArgName="WPA3 Enterprise Passphrase"
              path="Resource/wifiConfig/accessPoint/security/securityDetails/WPA3Enterprise/passphrase" />
            <UserAssignment actionArgName="WPA3 Enterprise Protocol"
              path="Resource/wifiConfig/accessPoint/security/securityDetails/WPA3Enterprise/protocol" />
            <UserAssignment actionArgName="OWE Public Authentication"
              path="Resource/wifiConfig/accessPoint/security/securityDetails/OWEPublic/authentication" />
            <ConstantAssignment path="Resource/wifiConfig/operation" value="CREATE"/>
            <UserAssignment actionArgName="Set Active"
              path="Resource/wifiConfig/accessPoint/isPreferred" />
          </SendMessage>
          <Switch>
            <SwitchOnMessage>
              <MessageCase>
                <ReceiveMessage id="SetConfigResponse" />
                <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="ZebraRfidSetActiveWifiProfiles" semanticid="Zebra-RFID-Set-WifiProfile#set-active-profile">
      <Blocks>
        <Block id="1">
          <SendMessage id="SetConfig">
            <UserAssignment actionArgName="ESSID"
              path="Resource/wifiConfig/accessPoint/essid" />
            <ConstantAssignment path="Resource/wifiConfig/operation" value="MODIFY"/>
            <UserAssignment actionArgName="Set Active"
              path="Resource/wifiConfig/accessPoint/isPreferred" />
          </SendMessage>
          <Switch>
            <SwitchOnMessage>
              <MessageCase>
                <ReceiveMessage id="SetConfigResponse" />
                <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="ZebraRfidGetWifiProfiles" semanticid="Zebra-RFID-Get-Wifi-Profile#get-wifi-profile">
      <Blocks>
        <Block id="1">
        <SendMessage id="GetWifi" />
          <Switch>
            <SwitchOnMessage>
              <MessageCase>
                <ReceiveMessage id="GetWifiResponse" />
                <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="ZebraRfidUpdateWifiSettings" semanticid="Zebra-RFID-WLAN#change-wifi-settings">
      <Blocks>
        <Block id="1">
          <SendMessage id="SetConfig">
            <UserAssignment actionArgName="ESSID"
              path="Resource/wifiConfig/accessPoint/essid" />
            <UserAssignment actionArgName="Connect"
              path="Resource/wifiConfig/accessPoint/connect" defaultValue="false" />
            <UserAssignment actionArgName="Auto Connect"
              path="Resource/wifiConfig/accessPoint/autoConn" />
            <UserAssignment actionArgName="Wi-Fi Security Enabled"
              path="Resource/wifiConfig/accessPoint/enableSecurity" />
            <UserAssignment actionArgName="Security Type"
              path="Resource/wifiConfig/accessPoint/security/securityType" />
            <UserAssignment actionArgName="WPA2 Personal Password"
              path="Resource/wifiConfig/accessPoint/security/securityDetails/WPA2Personal/password" />
            <UserAssignment actionArgName="WPA3 Personal Password"
              path="Resource/wifiConfig/accessPoint/security/securityDetails/WPA3Personal/password" />
            <UserAssignment actionArgName="WPA2 Enterprise Authentication"
              path="Resource/wifiConfig/accessPoint/security/securityDetails/WPA2Enterprise/authentication" />
            <UserAssignment actionArgName="WPA2 Enterprise Inner Authentication"
              path="Resource/wifiConfig/accessPoint/security/securityDetails/WPA2Enterprise/innerAuthentication" />
            <UserAssignment actionArgName="WPA2 Enterprise Identity"
              path="Resource/wifiConfig/accessPoint/security/securityDetails/WPA2Enterprise/identity" />
            <UserAssignment actionArgName="WPA2 Enterprise Anonymous Identity"
              path="Resource/wifiConfig/accessPoint/security/securityDetails/WPA2Enterprise/anonymousIdentity" />
            <UserAssignment actionArgName="WPA2 Enterprise Password"
              path="Resource/wifiConfig/accessPoint/security/securityDetails/WPA2Enterprise/password" />
            <UserAssignment actionArgName="WPA2 Enterprise Passphrase"
              path="Resource/wifiConfig/accessPoint/security/securityDetails/WPA2Enterprise/passphrase" />
            <UserAssignment actionArgName="WPA2 Enterprise Protocol"
              path="Resource/wifiConfig/accessPoint/security/securityDetails/WPA2Enterprise/protocol" />
            <UserAssignment actionArgName="WPA3 Enterprise Authentication"
              path="Resource/wifiConfig/accessPoint/security/securityDetails/WPA3Enterprise/authentication" />
            <UserAssignment actionArgName="WPA3 Enterprise Inner Authentication"
              path="Resource/wifiConfig/accessPoint/security/securityDetails/WPA3Enterprise/innerAuthentication" />
            <UserAssignment actionArgName="WPA3 Enterprise Identity"
              path="Resource/wifiConfig/accessPoint/security/securityDetails/WPA3Enterprise/identity" />
            <UserAssignment actionArgName="WPA3 Enterprise Anonymous Identity"
              path="Resource/wifiConfig/accessPoint/security/securityDetails/WPA3Enterprise/anonymousIdentity" />
            <UserAssignment actionArgName="WPA3 Enterprise Password"
              path="Resource/wifiConfig/accessPoint/security/securityDetails/WPA3Enterprise/password" />
            <UserAssignment actionArgName="WPA3 Enterprise Passphrase"
              path="Resource/wifiConfig/accessPoint/security/securityDetails/WPA3Enterprise/passphrase" />
            <UserAssignment actionArgName="WPA3 Enterprise Protocol"
              path="Resource/wifiConfig/accessPoint/security/securityDetails/WPA3Enterprise/protocol" />
            <UserAssignment actionArgName="OWE Public Authentication"
              path="Resource/wifiConfig/accessPoint/security/securityDetails/OWEPublic/authentication" />
            <ConstantAssignment path="Resource/wifiConfig/operation" value="MODIFY"/>
          </SendMessage>
          <Switch>
            <SwitchOnMessage>
              <MessageCase>
                <ReceiveMessage id="SetConfigResponse" />
                <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="ZebraRfidCheckIn" semanticid="base-module#checkin">
      <Blocks>
        <Block id="1">
          <SendMessage id="GetConfig" />
          <Switch>
            <SwitchOnMessage>
              <MessageCase>
                <ReceiveMessage id="GetConfigResponse" />
                <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="ZebraRfidReboot" semanticid="Zebra-RFID-General#zebra-rfid-reboot">
      <Blocks>
        <Block id="1">
          <SendMessage id="ZebraRfidReboot" />
          <Switch>
            <SwitchOnMessage>
              <MessageCase>
                <ReceiveMessage id="ZebraRfidRebootResponse" />
                <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="ZebraRfidChangeLanSettings" semanticid="Zebra-RFID-LAN#change-lan-settings">
      <Blocks>
        <Block id="1">
          <SendMessage id="SetConfig">
            <UserAssignment actionArgName="Wired LAN IPv4 Address"
              path="Resource/ethConfig/ipv4Configuration/ipAddress" />
            <UserAssignment actionArgName="Wired LAN Subnet Mask"
              path="Resource/ethConfig/ipv4Configuration/subnetMask" />
            <UserAssignment actionArgName="Wired LAN Gateway"
              path="Resource/ethConfig/ipv4Configuration/gateway" />
            <UserAssignment actionArgName="Enable DHCP Wired LAN"
              path="Resource/ethConfig/ipv4Configuration/enableDhcp" />
            <UserAssignment actionArgName="Primary DNS Server Wired LAN IP Address"
              path="Resource/ethConfig/ipv4Configuration/dnsServer" />
            <UserAssignment actionArgName="Domain Name Wired LAN"
              path="Resource/ethConfig/ipv4Configuration/domainName" />
          </SendMessage>
          <Switch>
            <SwitchOnMessage>
              <MessageCase>
                <ReceiveMessage id="SetConfigResponse" />
                <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="ZebraRfidChangeWLanSettings" semanticid="Zebra-RFID-WLAN#change-wlan-settings">
      <Blocks>
        <Block id="1">
          <SendMessage id="SetConfig">
            <UserAssignment actionArgName="Wireless LAN IPv4 Address"
              path="Resource/wifiConfig/ipv4Configuration/ipAddress" />
            <UserAssignment actionArgName="Wireless LAN Subnet Mask"
              path="Resource/wifiConfig/ipv4Configuration/subnetMask" />
            <UserAssignment actionArgName="Wireless LAN Gateway"
              path="Resource/wifiConfig/ipv4Configuration/gateway" />
            <UserAssignment actionArgName="Enable DHCP Wireless LAN"
              path="Resource/wifiConfig/ipv4Configuration/enableDhcp" />
            <UserAssignment actionArgName="Primary DNS Server Wireless LAN IP Address"
              path="Resource/wifiConfig/ipv4Configuration/dnsServer" />
            <UserAssignment actionArgName="Domain Name Wireless LAN"
              path="Resource/wifiConfig/ipv4Configuration/domainName" />
          </SendMessage>
          <Switch>
            <SwitchOnMessage>
              <MessageCase>
                <ReceiveMessage id="SetConfigResponse" />
                <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="ZebraRfidChangeWifiSettings" semanticid="Zebra-RFID-WLAN#change-wifi-settings">
      <Blocks>
        <Block id="1">
          <SendMessage id="SetConfig">
            <UserAssignment actionArgName="ESSID"
              path="Resource/wifiConfig/accessPoint/essid" />
            <UserAssignment actionArgName="Connect"
              path="Resource/wifiConfig/accessPoint/connect" defaultValue="false" />
            <UserAssignment actionArgName="Auto Connect"
              path="Resource/wifiConfig/accessPoint/autoConn" />
            <UserAssignment actionArgName="Wi-Fi Security Enabled"
              path="Resource/wifiConfig/accessPoint/enableSecurity" />
            <UserAssignment actionArgName="Security Type"
              path="Resource/wifiConfig/accessPoint/security/securityType" />
            <UserAssignment actionArgName="WPA2 Personal Password"
              path="Resource/wifiConfig/accessPoint/security/securityDetails/WPA2Personal/password" />
            <UserAssignment actionArgName="WPA3 Personal Password"
              path="Resource/wifiConfig/accessPoint/security/securityDetails/WPA3Personal/password" />
            <UserAssignment actionArgName="WPA2 Enterprise Authentication"
              path="Resource/wifiConfig/accessPoint/security/securityDetails/WPA2Enterprise/authentication" />
            <UserAssignment actionArgName="WPA2 Enterprise Inner Authentication"
              path="Resource/wifiConfig/accessPoint/security/securityDetails/WPA2Enterprise/innerAuthentication" />
            <UserAssignment actionArgName="WPA2 Enterprise Identity"
              path="Resource/wifiConfig/accessPoint/security/securityDetails/WPA2Enterprise/identity" />
            <UserAssignment actionArgName="WPA2 Enterprise Anonymous Identity"
              path="Resource/wifiConfig/accessPoint/security/securityDetails/WPA2Enterprise/anonymousIdentity" />
            <UserAssignment actionArgName="WPA2 Enterprise Password"
              path="Resource/wifiConfig/accessPoint/security/securityDetails/WPA2Enterprise/password" />
            <UserAssignment actionArgName="WPA2 Enterprise Passphrase"
              path="Resource/wifiConfig/accessPoint/security/securityDetails/WPA2Enterprise/passphrase" />
            <UserAssignment actionArgName="WPA2 Enterprise Protocol"
              path="Resource/wifiConfig/accessPoint/security/securityDetails/WPA2Enterprise/protocol" />
            <UserAssignment actionArgName="WPA3 Enterprise Authentication"
              path="Resource/wifiConfig/accessPoint/security/securityDetails/WPA3Enterprise/authentication" />
            <UserAssignment actionArgName="WPA3 Enterprise Inner Authentication"
              path="Resource/wifiConfig/accessPoint/security/securityDetails/WPA3Enterprise/innerAuthentication" />
            <UserAssignment actionArgName="WPA3 Enterprise Identity"
              path="Resource/wifiConfig/accessPoint/security/securityDetails/WPA3Enterprise/identity" />
            <UserAssignment actionArgName="WPA3 Enterprise Anonymous Identity"
              path="Resource/wifiConfig/accessPoint/security/securityDetails/WPA3Enterprise/anonymousIdentity" />
            <UserAssignment actionArgName="WPA3 Enterprise Password"
              path="Resource/wifiConfig/accessPoint/security/securityDetails/WPA3Enterprise/password" />
            <UserAssignment actionArgName="WPA3 Enterprise Passphrase"
              path="Resource/wifiConfig/accessPoint/security/securityDetails/WPA3Enterprise/passphrase" />
            <UserAssignment actionArgName="WPA3 Enterprise Protocol"
              path="Resource/wifiConfig/accessPoint/security/securityDetails/WPA3Enterprise/protocol" />
            <UserAssignment actionArgName="OWE Public Authentication"
              path="Resource/wifiConfig/accessPoint/security/securityDetails/OWEPublic/authentication" />
          </SendMessage>
          <Switch>
            <SwitchOnMessage>
              <MessageCase>
                <ReceiveMessage id="SetConfigResponse" />
                <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="ZebraRfidChangeIpv6Settings"
      semanticid="Zebra-RFID-LAN-ipv6#change-lan-iv6-settings">
      <Blocks>
        <Block id="1">
          <SendMessage id="SetConfig">
            <UserAssignment actionArgName="Wired LAN IPv6 Prefix"
              path="Resource/ethConfig/ipv6Configuration/prefix" />
            <UserAssignment actionArgName="Wired LAN IPv6 Enable Auto"
              path="Resource/ethConfig/ipv6Configuration/enableAuto" />
            <UserAssignment actionArgName="Wired LAN IPv6 Gateway"
              path="Resource/ethConfig/ipv6Configuration/gateway" />
            <UserAssignment actionArgName="Wired LAN IPv6 DNS Server"
              path="Resource/ethConfig/ipv6Configuration/dnsServer" />
            <UserAssignment actionArgName="Wired LAN IPv6 Domain Name"
              path="Resource/ethConfig/ipv6Configuration/domainName" />
          </SendMessage>
          <Switch>
            <SwitchOnMessage>
              <MessageCase>
                <ReceiveMessage id="SetConfigResponse" />
                <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="ZebraRfidChangeWlanIpv6Settings"
      semanticid="Zebra-RFID-WLAN-ipv6#change-wlan-iv6-settings">
      <Blocks>
        <Block id="1">
          <SendMessage id="SetConfig">
            <UserAssignment actionArgName="Wireless LAN IPv6 Prefix"
              path="Resource/wifiConfig/ipv6Configuration/prefix" />
            <UserAssignment actionArgName="Wireless LAN IPv6 Enable Auto"
              path="Resource/wifiConfig/ipv6Configuration/enableAuto" />
            <UserAssignment actionArgName="Wireless LAN IPv6 Gateway"
              path="Resource/wifiConfig/ipv6Configuration/gateway" />
            <UserAssignment actionArgName="Wireless LAN IPv6 DNS Server"
              path="Resource/wifiConfig/ipv6Configuration/dnsServer" />
            <UserAssignment actionArgName="Wireless LAN IPv6 Domain Name"
              path="Resource/wifiConfig/ipv6Configuration/domainName" />
          </SendMessage>
          <Switch>
            <SwitchOnMessage>
              <MessageCase>
                <ReceiveMessage id="SetConfigResponse" />
                <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="ZebraRfidChangeEventsSettings"
      semanticid="Zebra-RFID-Events#change-events-settings">
      <Blocks>
        <Block id="1">
          <SendMessage id="SetConfig">
            <ConstantAssignment path="Resource/epConfig/operation" value="update" />
            <ConstantAssignment path="Resource/epConfig/configuration/epType" value="SOTI" />
            <UserAssignment actionArgName="Firmware Update Events Enabled"
              path="Resource/epConfig/configuration/eventConfiguration/firmwareUpdate" />
            <UserAssignment actionArgName="Network Events Enabled"
              path="Resource/epConfig/configuration/eventConfiguration/network" />
            <UserAssignment actionArgName="Ntp Events Enabled"
              path="Resource/epConfig/configuration/eventConfiguration/ntp" />
            <UserAssignment actionArgName="Power Events Enabled"
              path="Resource/epConfig/configuration/eventConfiguration/power" />
            <UserAssignment actionArgName="Battery Events Enabled"
              path="Resource/epConfig/configuration/eventConfiguration/battery" />
            <UserAssignment actionArgName="File Download Events Enabled"
              path="Resource/epConfig/configuration/eventConfiguration/fileDownload" />
          </SendMessage>
          <Switch>
            <SwitchOnMessage>
              <MessageCase>
                <ReceiveMessage id="SetConfigResponse" />
                <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="ZebraRfidChangeHeartBeatSettings"
      semanticid="Zebra-RFID-Events#change-heartbeat-settings">
      <Blocks>
        <Block id="1">
          <SendMessage id="SetConfig">
			<ConstantAssignment path="Resource/epConfig/operation" value="update" />
			<ConstantAssignment path="Resource/epConfig/configuration/epType" value="SOTI" />
            <UserAssignment actionArgName="Heartbeat Events Enabled"
              path="Resource/epConfig/configuration/eventConfiguration/heartbeat" />
            <UserAssignment actionArgName="Heart Beat Interval"
              path="Resource/epConfig/configuration/eventConfiguration/heartBeatConfiguration/interval" />
            <UserAssignment actionArgName="Heart Beat Inventory Status"
              path="Resource/epConfig/configuration/eventConfiguration/heartBeatConfiguration/inventoryStatus" />
            <UserAssignment actionArgName="Heart Beat Scan Status"
              path="Resource/epConfig/configuration/eventConfiguration/heartBeatConfiguration/scanStatus" />
            <UserAssignment actionArgName="Heart Beat Battery Status"
              path="Resource/epConfig/configuration/eventConfiguration/heartBeatConfiguration/batteryStatus" />
          </SendMessage>
          <Switch>
            <SwitchOnMessage>
              <MessageCase>
                <ReceiveMessage id="SetConfigResponse" />
                <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="ZebraRfidMqttServerSettings"
      semanticid="Zebra-RFID-Mqtt#change-mqtt-server-settings">
      <Blocks>
        <Block id="1">
          <SendMessage id="SetConfig">
            <ConstantAssignment path="Resource/epConfig/operation" value="update" />
            <ConstantAssignment path="Resource/epConfig/configuration/epType" value="SOTI" />
            <UserAssignment actionArgName="MQTT Server Address"
              path="Resource/epConfig/configuration/url" />
            <UserAssignment actionArgName="TLS Verification Type"
              path="Resource/epConfig/configuration/verificationType" />
            <UserAssignment actionArgName="MQTT Port" path="Resource/epConfig/configuration/port" />
            <UserAssignment actionArgName="MQTT Client Username"
              path="Resource/epConfig/configuration/mqttParams/username" />
            <UserAssignment actionArgName="MQTT Client Password"
              path="Resource/epConfig/configuration/mqttParams/password" />
            <UserAssignment actionArgName="MQTT Tenant ID"
              path="Resource/epConfig/configuration/tenantId" />
          </SendMessage>
          <Switch>
            <SwitchOnMessage>
              <MessageCase>
                <ReceiveMessage id="SetConfigResponse" />
                <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="ZebraRfidMqttSettings" semanticid="Zebra-RFID-Mqtt#change-mqtt-settings">
      <Blocks>
        <Block id="1">
          <SendMessage id="SetConfig">
            <ConstantAssignment path="Resource/epConfig/operation" value="update" />
            <ConstantAssignment path="Resource/epConfig/configuration/epType" value="SOTI" />
            <UserAssignment actionArgName="QOS" path="Resource/epConfig/configuration/qosCommon" />
            <UserAssignment actionArgName="MQTT Keep Alive"
              path="Resource/epConfig/configuration/mqttParams/keepAlive" />
            <UserAssignment actionArgName="MQTT Clean Session"
              path="Resource/epConfig/configuration/mqttParams/cleanSession" />
            <UserAssignment actionArgName="MQTT Reconnect Delay Minimum"
              path="Resource/epConfig/configuration/mqttParams/reconnectDelayMin" />
            <UserAssignment actionArgName="MQTT Reconnect Delay Maximum"
              path="Resource/epConfig/configuration/mqttParams/reconnectDelayMax" />
          </SendMessage>
          <Switch>
            <SwitchOnMessage>
              <MessageCase>
                <ReceiveMessage id="SetConfigResponse" />
                <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="ZebraRfidMqttRootCertificates"
      semanticid="Zebra-RFID-Mqtt#change-mqtt-root-certificate" isMetaTransaction="true">
      <Blocks>
        <Block id="1">
          <SendMessage id="InstallRootCertificate">
            <ConstantAssignment path="Resource/type" value="mqtt" />
            <UserAssignment actionArgName="Root Certificate" path="Resource/ca_cert" />
          </SendMessage>
          <Switch>
            <SwitchOnMessage>
              <MessageCase>
                <ReceiveMessage id="InstallCertificateResponse" />
                <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="ZebraRfidAlert"
          timeoutAlertId="MQTTRootCertificateTimeout">
          <SuccessCase>
            <Enumeration>
              <Value>MQTT_ROOT_CERT_DOWNLOAD_SUCCESS</Value>
            </Enumeration>
          </SuccessCase>
          <FailureCase>
            <Enumeration>
              <Value>MQTT_ROOT_CERT_DOWNLOAD_FAIL</Value>
            </Enumeration>
          </FailureCase>
        </AlertBlock>
      </AlertBlocks>
    </Transaction>
    <Transaction id="ZebraRfidMqttRootCertificatesv3"
      semanticid="Zebra-RFID-Mqtt-V3#change-mqtt-root-certificate-v3" isMetaTransaction="true">
          <Blocks>
              <Block id="1">
                  <SendMessage id="InstallRootCertificate">
                      <ConstantAssignment path="Resource/type" value="mqtt" />
                      <UserAssignment actionArgName="Root Certificate" path="Resource/ca_cert" />
                  </SendMessage>
                  <Switch>
                      <SwitchOnMessage>
                          <MessageCase>
                              <ReceiveMessage id="InstallCertificateResponse" />
                              <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="ZebraRfidAlert"
                timeoutAlertId="MQTTRootCertificateTimeout">
                  <SuccessCase>
                      <Enumeration>
                          <Value>MQTT_ROOT_CERT_INSTALL_SUCCESS</Value>
                      </Enumeration>
                  </SuccessCase>
                  <FailureCase>
                      <Enumeration>
                          <Value>MQTT_ROOT_CERT_DOWNLOAD_FAIL</Value>
                          <Value>MQTT_ROOT_CERT_INSTALL_FAIL</Value>
                      </Enumeration>
                  </FailureCase>
              </AlertBlock>
          </AlertBlocks>
      </Transaction>
    <Transaction id="ZebraRfidWifiRootCertificates"
        semanticid="Zebra-RFID-WLAN#change-wifi-root-certificate" isMetaTransaction="true">
          <Blocks>
              <Block id="1">
                  <SendMessage id="InstallRootCertificate">
                      <ConstantAssignment path="Resource/type" value="wifi" />
                      <UserAssignment actionArgName="Root Certificate" path="Resource/ca_cert" />
                  </SendMessage>
                  <Switch>
                      <SwitchOnMessage>
                          <MessageCase>
                              <ReceiveMessage id="InstallCertificateResponse" />
                              <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="ZebraRfidAlert"
                timeoutAlertId="WifiRootCertificateDownloadTimeout">
                  <SuccessCase>
                      <Enumeration>
                          <Value>WIFI_ROOT_CERT_DOWNLOAD_SUCCESS</Value>
                      </Enumeration>
                  </SuccessCase>
                  <FailureCase>
                      <Enumeration>
                          <Value>WIFI_ROOT_CERT_DOWNLOAD_FAIL</Value>
                      </Enumeration>
                  </FailureCase>
              </AlertBlock>
          </AlertBlocks>
      </Transaction>
    <Transaction id="ZebraRfidWifiRootCertificatesv3" semanticid="Zebra-RFID-WLAN-V3#change-wifi-root-certificate-V3" isMetaTransaction="true">
      <Blocks>
        <Block id="1">
          <SendMessage id="InstallRootCertificate">
            <ConstantAssignment path="Resource/type" value="wifi" />
            <UserAssignment actionArgName="Root Certificate" path="Resource/ca_cert" />
          </SendMessage>
          <Switch>
            <SwitchOnMessage>
              <MessageCase>
                <ReceiveMessage id="InstallCertificateResponse" />
                <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="ZebraRfidAlert"
          timeoutAlertId="WifiRootCertificateDownloadTimeout">
          <SuccessCase>
            <Enumeration>
              <Value>WIFI_ROOT_CERT_INSTALL_SUCCESS</Value>
            </Enumeration>
          </SuccessCase>
          <FailureCase>
            <Enumeration>
              <Value>WIFI_ROOT_CERT_DOWNLOAD_FAIL</Value>
              <Value>WIFI_ROOT_CERT_INSTALL_FAIL</Value>
            </Enumeration>
          </FailureCase>
        </AlertBlock>
      </AlertBlocks>
    </Transaction>
    <Transaction id="ZebraRfidWifiClientCertificates"
      semanticid="Zebra-RFID-WLAN#change-wifi-client-certificates" isMetaTransaction="true">
      <Blocks>
        <Block id="1">
          <SendMessage id="InstallClientCertificate">
            <ConstantAssignment path="Resource/type" value="wifi" />
            <UserAssignment actionArgName="Client Certificate" path="Resource/client_cert" />
            <UserAssignment actionArgName="Client Key" path="Resource/client_key" />
            <UserAssignment actionArgName="Client Key Password" path="Resource/cert_key_password" />
          </SendMessage>
          <Switch>
            <SwitchOnMessage>
              <MessageCase>
                <ReceiveMessage id="InstallCertificateResponse" />
                <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="ZebraRfidAlert"
          timeoutAlertId="WifiClientCertificateDownloadTimeout">
          <SuccessCase>
            <Enumeration>
              <Value>WIFI_CLIENT_CERT_DOWNLOAD_SUCCESS</Value>
            </Enumeration>
          </SuccessCase>
          <FailureCase>
            <Enumeration>
              <Value>WIFI_CLIENT_CERT_DOWNLOAD_FAIL</Value>
            </Enumeration>
          </FailureCase>
        </AlertBlock>
      </AlertBlocks>
    </Transaction>
    <Transaction id="ZebraRfidWifiClientCertificatesv3" semanticid="Zebra-RFID-WLAN-V3#change-wifi-client-certificates-V3" isMetaTransaction="true">
          <Blocks>
              <Block id="1">
                  <SendMessage id="InstallClientCertificate">
                      <ConstantAssignment path="Resource/type" value="wifi" />
                      <UserAssignment actionArgName="Client Certificate" path="Resource/client_cert" />
                      <UserAssignment actionArgName="Client Key" path="Resource/client_key" />
                      <UserAssignment actionArgName="Client Key Password" path="Resource/cert_key_password" />
                  </SendMessage>
                  <Switch>
                      <SwitchOnMessage>
                          <MessageCase>
                              <ReceiveMessage id="InstallCertificateResponse" />
                              <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="ZebraRfidAlert"
                timeoutAlertId="WifiClientCertificateDownloadTimeout">
                  <SuccessCase>
                      <Enumeration>
                          <Value>WIFI_CLIENT_CERT_INSTALL_SUCCESS</Value>
                      </Enumeration>
                  </SuccessCase>
                  <FailureCase>
                      <Enumeration>
                          <Value>WIFI_CLIENT_CERT_DOWNLOAD_FAIL</Value>
                          <Value>WIFI_CLIENT_CERT_INSTALL_FAIL</Value>
                      </Enumeration>
                  </FailureCase>
              </AlertBlock>
          </AlertBlocks>
      </Transaction>
    <Transaction id="ZebraRfidMqttClientCertificates"
      semanticid="Zebra-RFID-Mqtt#change-mqtt-client-certificates" isMetaTransaction="true">
      <Blocks>
        <Block id="1">
          <SendMessage id="InstallClientCertificate">
            <ConstantAssignment path="Resource/type" value="mqtt" />
            <UserAssignment actionArgName="Client Certificate" path="Resource/client_cert" />
            <UserAssignment actionArgName="Client Key" path="Resource/client_key" />
            <UserAssignment actionArgName="Client Key Password" path="Resource/cert_key_password" />
          </SendMessage>
          <Switch>
            <SwitchOnMessage>
              <MessageCase>
                <ReceiveMessage id="InstallCertificateResponse" />
                <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="ZebraRfidAlert"
          timeoutAlertId="MQTTClientCertificateTimeout">
          <SuccessCase>
            <Enumeration>
              <Value>MQTT_CLIENT_CERT_DOWNLOAD_SUCCESS</Value>
            </Enumeration>
          </SuccessCase>
          <FailureCase>
            <Enumeration>
              <Value>MQTT_CLIENT_CERT_DOWNLOAD_FAIL</Value>
            </Enumeration>
          </FailureCase>
        </AlertBlock>
      </AlertBlocks>
    </Transaction>
    <Transaction id="ZebraRfidMqttClientCertificatesv3" semanticid="Zebra-RFID-Mqtt-V3#change-mqtt-client-certificates-V3" isMetaTransaction="true">
          <Blocks>
              <Block id="1">
                  <SendMessage id="InstallClientCertificate">
                      <ConstantAssignment path="Resource/type" value="mqtt" />
                      <UserAssignment actionArgName="Client Certificate" path="Resource/client_cert" />
                      <UserAssignment actionArgName="Client Key" path="Resource/client_key" />
                      <UserAssignment actionArgName="Client Key Password" path="Resource/cert_key_password" />
                  </SendMessage>
                  <Switch>
                      <SwitchOnMessage>
                          <MessageCase>
                              <ReceiveMessage id="InstallCertificateResponse" />
                              <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="ZebraRfidAlert"
                timeoutAlertId="MQTTClientCertificateTimeout">
                  <SuccessCase>
                      <Enumeration>
                          <Value>MQTT_CLIENT_CERT_INSTALL_SUCCESS</Value>
                      </Enumeration>
                  </SuccessCase>
                  <FailureCase>
                      <Enumeration>
                          <Value>MQTT_CLIENT_CERT_DOWNLOAD_FAIL</Value>
                          <Value>MQTT_CLIENT_CERT_INSTALL_FAIL</Value>
                      </Enumeration>
                  </FailureCase>
              </AlertBlock>
          </AlertBlocks>
      </Transaction>
    <Transaction id="ZebraRfidFileStoreRootCertificate"
      semanticid="Zebra-RFID-General#zebra-rfid-filestore-certificate" isMetaTransaction="true">
      <Blocks>
        <Block id="1">
          <SendMessage id="InstallRootCertificate">
            <UserAssignment actionArgName="File Store Root Certificate" path="Resource/ca_cert" />
            <ConstantAssignment path="Resource/type" value="filestore" />
          </SendMessage>
          <Switch>
            <SwitchOnMessage>
              <MessageCase>
                <ReceiveMessage id="InstallCertificateResponse" />
                <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="ZebraRfidAlert"
          timeoutAlertId="MQTTRootCertificateTimeout">
          <SuccessCase>
            <Enumeration>
              <Value>FILESTORE_ROOT_CERT_DOWNLOAD_SUCCESS</Value>
            </Enumeration>
          </SuccessCase>
          <FailureCase>
            <Enumeration>
              <Value>FILESTORE_ROOT_CERT_DOWNLOAD_FAIL</Value>
            </Enumeration>
          </FailureCase>
        </AlertBlock>
      </AlertBlocks>
    </Transaction>
    <Transaction id="ZebraRfidFirmwareUpdate" semanticid="Firmware-Download#download-file-filestore"
      isMetaTransaction="true">
      <Blocks>
        <Block id="1">
          <SendMessage id="SetOS">
            <UserAssignment actionArgName="File" path="Resource/firmware" />
            <ConstantAssignment path="Resource/authenticationType" value="CERTIFICATE" />
            <ConstantAssignment path="Resource/verificationType" value="VERIFY_HOST" />
          </SendMessage>
          <Switch>
            <SwitchOnMessage>
              <MessageCase>
                <ReceiveMessage id="SetOSResponse" />
                <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="ZebraRfidAlert" timeoutAlertId="FirmwareDownloadTimeout"
          timeout="3600">
          <SuccessCase>
            <Enumeration>
              <Value>FIRMWARE_UPDATE_SUCCESS</Value>
            </Enumeration>
          </SuccessCase>
          <FailureCase>
            <Enumeration>
              <Value>FIRMWARE_UPDATE_FAIL</Value>
              <Value>FIRMWARE_DOWNLOAD_FAIL</Value>
            </Enumeration>
          </FailureCase>
        </AlertBlock>
      </AlertBlocks>
    </Transaction>
    <Transaction id="ZebraRfidAlert" semanticid="Zebra-RFID-Alert#alert">
      <Blocks>
        <Block id="1">
          <ReceiveMessage id="ZebraRfidAlert" />
          <BlockAction>
            <Terminate success="true" />
          </BlockAction>
        </Block>
      </Blocks>
    </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="Zebra-RFID-RFD40">
        <ApiTypeId id="Zebra@@RFD40@@1.1" />
        <Transaction id="DisconnectedNotification" />
        <Transaction id="ZebraRfidCheckIn" />
        <Transaction id="ZebraRfidReboot" />
        <Transaction id="ZebraRfidChangeWifiSettings" />
        <Transaction id="ZebraRfidChangeEventsSettings" />
        <Transaction id="ZebraRfidMqttServerSettings" />
        <Transaction id="ZebraRfidMqttSettings" />
        <Transaction id="ZebraRfidMqttRootCertificates" />
        <Transaction id="ZebraRfidMqttClientCertificates" />
        <Transaction id="ZebraRfidWifiRootCertificates" />
        <Transaction id="ZebraRfidWifiClientCertificates" />
        <Transaction id="ZebraRfidFileStoreRootCertificate" />
        <Transaction id="ZebraRfidFirmwareUpdate" />
        <Transaction id="ZebraRfidAlert" />
      </Device>
      <Device id="Zebra-RFID-RFD90">
        <ApiTypeId id="Zebra@@RFD90@@1.1" />
        <Transaction id="DisconnectedNotification" />
        <Transaction id="ZebraRfidCheckIn" />
        <Transaction id="ZebraRfidReboot" />
        <Transaction id="ZebraRfidChangeWifiSettings" />
        <Transaction id="ZebraRfidChangeEventsSettings" />
        <Transaction id="ZebraRfidMqttServerSettings" />
        <Transaction id="ZebraRfidMqttSettings" />
        <Transaction id="ZebraRfidMqttRootCertificates" />
        <Transaction id="ZebraRfidMqttClientCertificates" />
        <Transaction id="ZebraRfidWifiRootCertificates" />
        <Transaction id="ZebraRfidWifiClientCertificates" />
        <Transaction id="ZebraRfidFileStoreRootCertificate" />
        <Transaction id="ZebraRfidFirmwareUpdate" />
        <Transaction id="ZebraRfidAlert" />
      </Device>

      <Device id="Zebra-RFID-RFD40-V2">
        <ApiTypeId id="Zebra@@RFD40@@1.2" />
        <Transaction id="DisconnectedNotification" />
        <Transaction id="ZebraRfidCheckIn" />
        <Transaction id="ZebraRfidReboot" />
        <Transaction id="ZebraRfidChangeEventsSettings" />
        <Transaction id="ZebraRfidMqttServerSettings" />
        <Transaction id="ZebraRfidMqttSettings" />
        <Transaction id="ZebraRfidMqttRootCertificates" />
        <Transaction id="ZebraRfidMqttClientCertificates" />
        <Transaction id="ZebraRfidWifiRootCertificates" />
        <Transaction id="ZebraRfidWifiClientCertificates" />
        <Transaction id="ZebraRfidFileStoreRootCertificate" />
        <Transaction id="ZebraRfidFirmwareUpdate" />
        <Transaction id="ZebraRfidDeleteProfiles"/>
        <Transaction id="ZebraRfidCreateWifiProfiles"/>
        <Transaction id="ZebraRfidSetActiveWifiProfiles"/>
        <Transaction id="ZebraRfidGetWifiProfiles"/>
        <Transaction id="ZebraRfidUpdateWifiSettings"/>      
        <Transaction id="ZebraRfidAlert" />
      </Device>
      <Device id="Zebra-RFID-RFD90-V2">
        <ApiTypeId id="Zebra@@RFD90@@1.2" />
        <Transaction id="DisconnectedNotification" />
        <Transaction id="ZebraRfidCheckIn" />
        <Transaction id="ZebraRfidReboot" />
        <Transaction id="ZebraRfidChangeEventsSettings" />
        <Transaction id="ZebraRfidMqttServerSettings" />
        <Transaction id="ZebraRfidMqttSettings" />
        <Transaction id="ZebraRfidMqttRootCertificates" />
        <Transaction id="ZebraRfidMqttClientCertificates" />
        <Transaction id="ZebraRfidWifiRootCertificates" />
        <Transaction id="ZebraRfidWifiClientCertificates" />
        <Transaction id="ZebraRfidFileStoreRootCertificate" />
        <Transaction id="ZebraRfidFirmwareUpdate" />
        <Transaction id="ZebraRfidDeleteProfiles"/>
        <Transaction id="ZebraRfidCreateWifiProfiles"/>
        <Transaction id="ZebraRfidSetActiveWifiProfiles"/>
        <Transaction id="ZebraRfidGetWifiProfiles"/>
        <Transaction id="ZebraRfidUpdateWifiSettings"/>  
        <Transaction id="ZebraRfidAlert" />
      </Device>
      <Device id="Zebra-RFID-RFD40-V3">
          <ApiTypeId id="Zebra@@RFD40@@1.21" />
          <Transaction id="ZebraRfidCheckIn" />
          <Transaction id="ZebraRfidReboot" />
          <Transaction id="ZebraRfidChangeEventsSettings" />
          <Transaction id="ZebraRfidMqttServerSettings" />
          <Transaction id="ZebraRfidMqttSettings" />
          <Transaction id="ZebraRfidMqttRootCertificatesv3" />
          <Transaction id="ZebraRfidMqttClientCertificatesv3" />
          <Transaction id="ZebraRfidWifiRootCertificatesv3" />
          <Transaction id="ZebraRfidWifiClientCertificatesv3" />
          <Transaction id="ZebraRfidFileStoreRootCertificate" />
          <Transaction id="ZebraRfidFirmwareUpdate" />
          <Transaction id="ZebraRfidDeleteProfiles"/>
          <Transaction id="ZebraRfidCreateWifiProfiles"/>
          <Transaction id="ZebraRfidSetActiveWifiProfiles"/>
          <Transaction id="ZebraRfidGetWifiProfiles"/>
          <Transaction id="ZebraRfidUpdateWifiSettings"/>
          <Transaction id="ZebraRfidAlert" />
      </Device>
        <Device id="Zebra-RFID-RFD90-V3">
            <ApiTypeId id="Zebra@@RFD90@@1.21" />
            <Transaction id="ZebraRfidCheckIn" />
            <Transaction id="ZebraRfidReboot" />
            <Transaction id="ZebraRfidChangeEventsSettings" />
            <Transaction id="ZebraRfidMqttServerSettings" />
            <Transaction id="ZebraRfidMqttSettings" />
            <Transaction id="ZebraRfidMqttRootCertificatesv3" />
            <Transaction id="ZebraRfidMqttClientCertificatesv3" />
            <Transaction id="ZebraRfidWifiRootCertificatesv3" />
            <Transaction id="ZebraRfidWifiClientCertificatesv3" />
            <Transaction id="ZebraRfidFileStoreRootCertificate" />
            <Transaction id="ZebraRfidFirmwareUpdate" />
            <Transaction id="ZebraRfidDeleteProfiles"/>
            <Transaction id="ZebraRfidCreateWifiProfiles"/>
            <Transaction id="ZebraRfidSetActiveWifiProfiles"/>
            <Transaction id="ZebraRfidGetWifiProfiles"/>
            <Transaction id="ZebraRfidUpdateWifiSettings"/>
            <Transaction id="ZebraRfidAlert" />
        </Device>
    </Devices>
  </ProtocolDefinition>
</Domain>