<ButtonConf ButtonName="HMLD FIX3" Description="Checks all HMLD device links; sets any B or D device to U" QuickCommand="">
  <RunCommand ClearScreen="True">HMLD</RunCommand>
  <GetString VarName="DeviceLines"><![CDATA[([A-Z0-9]{6}D\s+[UBD])]]></GetString>
  <ForEach>
    <ElementsList>[DeviceLines]</ElementsList>
    <Action>
      <StringOperation Type="Regex" VarName="DeviceAddr" Source="[@]">
        <Arguments>
          <Argument Name="Pattern"><![CDATA[([A-Z0-9]{6})D\s+[UBD]]]></Argument>
          <Argument Name="IgnoreCase">False</Argument>
          <Argument Name="SingleLineMethod">False</Argument>
          <Argument Name="SingleMatch">True</Argument>
          <Argument Name="MatchGroups">GroupNumber</Argument>
          <Argument Name="GroupNumberValue">1</Argument>
        </Arguments>
      </StringOperation>
      <StringOperation Type="Regex" VarName="DeviceStatus" Source="[@]">
        <Arguments>
          <Argument Name="Pattern"><![CDATA[[A-Z0-9]{6}D\s+([UBD])]]></Argument>
          <Argument Name="IgnoreCase">False</Argument>
          <Argument Name="SingleLineMethod">False</Argument>
          <Argument Name="SingleMatch">True</Argument>
          <Argument Name="MatchGroups">GroupNumber</Argument>
          <Argument Name="GroupNumberValue">1</Argument>
        </Arguments>
      </StringOperation>
      <ConditionalAction Condition="[DeviceStatus]==B">
        <True>
          <RunCommand ClearScreen="True">HQX[DeviceAddr]</RunCommand>
          <GetString VarName="HQXResponse"><![CDATA[(ALL OK|QUEUE EMPTY|RESTART IN PROGRESS - PLEASE WAIT)]]></GetString>
          <ConditionalAction Condition="[HQXResponse]==ALL OK OR [HQXResponse]==QUEUE EMPTY OR [HQXResponse]==RESTART IN PROGRESS - PLEASE WAIT">
            <True>
              <RunCommand ClearScreen="True">HMOM[DeviceAddr]-U</RunCommand>
              <ShowMessage>Device [DeviceAddr] was B - cleared with HQX ([HQXResponse]) and set to UP</ShowMessage>
            </True>
            <False>
              <ShowMessage>Device [DeviceAddr] - HQX returned unexpected response. Manual check required.</ShowMessage>
            </False>
          </ConditionalAction>
        </True>
        <False>
          <ConditionalAction Condition="[DeviceStatus]!=U">
            <True>
              <RunCommand ClearScreen="True">HMOM[DeviceAddr]-U</RunCommand>
              <ShowMessage>Device [DeviceAddr] was [DeviceStatus] - set to UP</ShowMessage>
            </True>
          </ConditionalAction>
        </False>
      </ConditionalAction>
    </Action>
  </ForEach>
  <RunCommand ClearScreen="True">HMLD</RunCommand>
  <ShowMessage>HMLD check complete - all devices verified/set to UP</ShowMessage>
</ButtonConf>