///////////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 2000-2018 Ericsson Telecom AB
//
// All rights reserved. This program and the accompanying materials
// are made available under the terms of the Eclipse Public License v2.0
// which accompanies this distribution, and is available at
// https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html
///////////////////////////////////////////////////////////////////////////////
//
//  File:          XTDP_Templates.ttcn
//  Description:
//  References:
//  Rev:           <RnXnn>
//  Prodnr:        CNL 113 663
//  Updated:       Tue Jan 11 10:53:39 2011
//  Contact:       http://ttcn.ericsson.se
//
////////////////////////////////////////////////////////////////////////////////
module XTDP_Templates
{

//=========================================================================
// Import Part
//=========================================================================
import from www_mozilla_org_keymaster_gatekeeper_there_is_only_xul all;
import from NoTargetNamespace all

//=========================================================================
// Module Parameters
//=========================================================================

//=========================================================================
// Constants
//=========================================================================

// Insert constants here if applicable!
// You can use the constant skeleton!

//=========================================================================
// Templates
//=========================================================================
template XTDP_Message t_XTDP_layoutRequest(template integer pl_reqId) := {
  noNamespaceSchemaLocation := omit,
  choice := {xTDP_LayoutRequest := {
      requestId := pl_reqId,
      widgetId := omit
    }}
}
template XTDP_Message t_singleRqPutValueToStr(
  template integer pl_rqId, //requestID
  template XTDP_Identifier pl_strId, // widgetId of the xtdp_string field to modify
  template charstring pl_str //the xtdp_string to set the widget to
) :=
{
  noNamespaceSchemaLocation := omit,
  choice := {
    xTDP_Requests := { xTDP_Request_list :={ 
        { requestId := pl_rqId,
          widget := { widgetId := pl_strId, widgetType := string },
          action_ := put,
          argument := pl_str,
          argumentList := omit,
          timeout_ := omit 
        }
      }
    }// xtdp-message
  }
}
template XTDP_Message t_setTooltipForStatusLed(
  template  integer pl_rqId, //requestID
  template XTDP_Identifier pl_strId, // widgetId of the xtdp_string field to modify
  template charstring pl_str //the xtdp_string to set the tooltip to
) :=
{
  noNamespaceSchemaLocation := omit,
  choice  := {
    xTDP_Requests := {xTDP_Request_list :={
        { requestId := pl_rqId,
          widget := { widgetId := pl_strId, widgetType := statusLEDWithText },
          action_ := settooltip,
          argument := pl_str,
          argumentList := omit,
          timeout_ := omit 
        }
      }
    }
  }
}
template XTDP_Message t_singleRqPutValueToLedWithText(
  template integer pl_rqId, //requestID
  template XTDP_Identifier pl_LedId, // widgetId of LED 
  template charstring pl_arg 
) :=
{
  noNamespaceSchemaLocation := omit,
  choice := {
    xTDP_Requests := {xTDP_Request_list :={
        { requestId := pl_rqId,
          widget := { widgetId := pl_LedId, widgetType := statusLEDWithText },
          action_ := put,
          argument := pl_arg,
          argumentList := omit,
          timeout_ := omit 
        }
      }
    }// xtdp-message
  }
}
template XTDP_Message t_singleSuccessResp (
  template integer pl_rqId //requestId
) :=
{
  noNamespaceSchemaLocation := *,
  choice := {
    xTDP_Responses := {xTDP_Response_list :={
        { requestId := pl_rqId,
          responseCode := success,
          argument := omit,
          errorSource := omit,
          errorCode := omit,
          errorMessage := omit
        }
      }
    }
  }
}

template XTDP_Message t_singleErrorResp (
  template integer pl_rqId, //requestId
  template charstring pl_argument,
  template XTDP_ErrorSource pl_errorSource,
  template XTDP_ErrorCode pl_errorCode,
  template charstring pl_errorMessage
) :=
{
  noNamespaceSchemaLocation := *,
  choice := {
    xTDP_Responses := {xTDP_Response_list :={
        { requestId := pl_rqId,
          responseCode := error_,
          argument := pl_argument,
          errorSource := pl_errorSource,
          errorCode := pl_errorCode,
          errorMessage := pl_errorMessage
        }
      }
    }
  }
}

template XTDP_Message t_snapshotButtonPressed(
  template integer pl_rqId, //requestID
  template XTDL_WidgetType pl_wtype,
  template charstring pl_argument,
  template float pl_timeout
) := {
    noNamespaceSchemaLocation := *,
    choice := {
    xTDP_Requests := {xTDP_Request_list :={
        { requestId := pl_rqId,
          widget := { widgetId := "snapshot", widgetType := pl_wtype },
          action_ := put,
          argument := pl_argument,
          argumentList := omit,
          timeout_ := pl_timeout 
        }
      }
    }
  }
}
template XTDP_Message t_exitTTCNButtonPressed(
  template integer pl_rqId, //requestID
  template XTDL_WidgetType pl_wtype,
  template charstring pl_argument,
  template float pl_timeout
) := {
    noNamespaceSchemaLocation := *,
    choice := {
    xTDP_Requests := {xTDP_Request_list :={
        { requestId := pl_rqId,
          widget := { widgetId := "exit_ttcn", widgetType := pl_wtype },
          action_ := put,
          argument := pl_argument,
          argumentList := omit,
          timeout_ := pl_timeout 
        }
      }
    }
  }
}

template XTDP_Message t_starttestButtonPressed(
  template integer pl_rqId, //requestID
  template XTDL_WidgetType pl_wtype,
  template charstring pl_argument,
  template float pl_timeout
) := {
    noNamespaceSchemaLocation := *,
    choice := {
    xTDP_Requests := {xTDP_Request_list :={
        { requestId := pl_rqId,
          widget := { widgetId := "start_test", widgetType := pl_wtype },
          action_ := put,
          argument := pl_argument,
          argumentList := omit,
          timeout_ := pl_timeout 
        }
      }
    }
  }
}
template XTDP_Message t_stoptestButtonPressed(
  template integer pl_rqId, //requestID
  template XTDL_WidgetType pl_wtype,
  template charstring pl_argument,
  template float pl_timeout
) := {
    noNamespaceSchemaLocation := *,
    choice := {
    xTDP_Requests := {xTDP_Request_list :={
        { requestId := pl_rqId,
          widget := { widgetId := "stop_test", widgetType := pl_wtype },
          action_ := put,
          argument := pl_argument,
          argumentList := omit,
          timeout_ := pl_timeout 
        }
      }
    }
  }
}
template XTDP_Message t_enableWidget(
    template integer pl_rqId, //requestID
    template XTDP_Identifier pl_strId, // widgetId of the xtdp_string field to modify
    template XTDL_WidgetType pl_wtype
) :=
{
    noNamespaceSchemaLocation := omit,
    choice := {
    xTDP_Requests := {xTDP_Request_list :={
        { requestId :=  pl_rqId,
          widget := { widgetId := pl_strId, widgetType := pl_wtype },
          action_ := enable,
          argument := "xtdp_enable",
          argumentList := omit,
          timeout_ := omit 
        }
      }
    }// xtdp-message
  }
}
template XTDP_Message t_disableWidget(
    template integer pl_rqId, //requestID
    XTDP_Identifier pl_strId , // widgetId of the xtdp_string field to modify
    template XTDL_WidgetType pl_wtype
    ) :=
{
    noNamespaceSchemaLocation := omit,
    choice := {
    xTDP_Requests := {xTDP_Request_list :={
        { requestId :=  pl_rqId,
          widget := { widgetId := pl_strId, widgetType := pl_wtype },
          action_ := disable,
          argument := "xtdp_disable",
          argumentList := omit,
          timeout_ := omit 
        }
      }
    }// xtdp-message
  }
}
template XTDP_Message t_singleRqPutValueToInt(
    template integer pl_rqId, //requestID
    template XTDP_Identifier pl_intId, // widgetId of the integer field to modify
    template charstring pl_intString //the integer to set the widget to
) :=
{
    noNamespaceSchemaLocation := omit,
    choice := {
    xTDP_Requests := {xTDP_Request_list :={
        { requestId := pl_rqId,
          widget := { widgetId := pl_intId, widgetType := integerField },
          action_ := put,
          argument := pl_intString,
          argumentList := omit,
          timeout_ := omit 
        }
      }
    }// xtdp-message
  }
}
template XTDP_Message t_singleRqPutValueTostr(
    template integer pl_rqId, //requestID
    template XTDP_Identifier pl_intId, // widgetId of the integer field to modify
    template charstring pl_string //the string to set the widget to
) :=
{
    noNamespaceSchemaLocation := omit,
    choice := {
    xTDP_Requests := {xTDP_Request_list :={
        { requestId := pl_rqId,
          widget := { widgetId := pl_intId, widgetType := string },
          action_ := put,
          argument := pl_string,
          argumentList := omit,
          timeout_ := omit 
        }
      }
    }// xtdp-message
  }
}


//=========================================================================
// Altsteps
//=========================================================================

// Insert altsteps here if applicable!
// You can use the altstep skeleton!

//=========================================================================
// Functions
//=========================================================================

// Insert functions here if applicable!
// You can use the function skeleton!

//=========================================================================
// Testcases
//=========================================================================

// Insert test cases here if applicable!
// You can use the test_case skeleton!

//=========================================================================
// Control
//=========================================================================

// Insert control part here if applicable!

}  // end of module
