####################################################################################
# Copyright (c)  2017  Ericsson 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
#
# Contributors:
#   Lenard Nagy
# version R1A
####################################################################################

[MODULE_PARAMETERS]
# This section shall contain the values of all parameters that are defined in your TTCN-3 modules.

[LOGGING]
# In this section you can specify the name of the log file and the classes of events
# you want to log into the file or display on console (standard error).

LogFile := "logs/%e.%h-%r.%s"
FileMask := LOG_ALL | DEBUG | MATCHING
ConsoleMask := ERROR | WARNING | TESTCASE | STATISTICS | PORTEVENT
LogSourceInfo := Yes
AppendFile := No
TimeStampFormat := DateTime
LogEventTypes := Yes
SourceInfoFormat := Single
LogEntityName := Yes

[TESTPORT_PARAMETERS]
# In this section you can specify parameters that are passed to Test Ports.
*.SerialPort1.deviceFileName := "/dev/ttyS4"      #"/dev/ttyUSB0"
*.SerialPort2.deviceFileName := "/dev/ttyS5"      #"/dev/ttyUSB1"

## Baud rate of port
# Valid values:
# B0  B50  B75  B110  B134  B150  B200
# B300  B600  B1200  B1800  B2400  B4800
# B9600  B19200  B38400  B57600  B115200
# B230400  B460800
##
*.SerialPort1.deviceSpeed := "B9600"
*.SerialPort2.deviceSpeed := "B9600"

## Parity setting
#  Valid values: none, even, odd, mark, space
##
*.SerialPort1.deviceParity := "none"
*.SerialPort2.deviceParity := "none"

## Set blockink or nonblocking
#
# "yes" sets whether a read() on the port waits for the 
#       specified number of charactes to arrive. 
#
# "no"  means that a read() returns however many 
#       characters are available without waiting
#       for more, up to the buffer limit.
##
*.SerialPort1.deviceBlocking := "yes"
*.SerialPort2.deviceBlocking := "yes"

## EOL character 
#
# !!WARNING!! Mandatory parameter
# Please set minimum 1 EOL char for each port
##
*.SerialPort1.EOLChar := "\n"
*.SerialPort1.EOLChar := ">"
*.SerialPort2.EOLChar := "\n"

## Number of data bits
#  Valid values: 5, 6, 7, 8
##
*.SerialPort1.dataBits := "8"
*.SerialPort2.dataBits := "8"

## Number of stop bit(s)
#  Valid values: 1, 2
##
*.SerialPort1.stopBit := "1"
*.SerialPort2.stopBits := "1"


[DEFINE]
# In this section you can create macro definitions,
# that can be used in other configuration file sections except [INCLUDE] and [ORDERED_INCLUDE].

[INCLUDE]
# To use configuration settings given in other configuration files,
# the configuration files just need to be listed in this section, with their full or relative pathnames.

[ORDERED_INCLUDE]
# To use configuration settings given in other configuration files,
# the configuration files just need to be listed in this section, with their full or relative pathnames.

[EXTERNAL_COMMANDS]
# This section can define external commands (shell scripts) to be executed by the ETS
# whenever a control part or test case is started or terminated.

#BeginTestCase := ""
#EndTestCase := ""
#BeginControlPart := ""
#EndControlPart := ""

[EXECUTE]
# In this section you can specify what parts of your test suite you want to execute.
SerialPortTests.TC_SerialPortTestSend
#SerialPortTests.TC_SerialPortTestReceive

[GROUPS]
# In this section you can specify groups of hosts. These groups can be used inside the
# [COMPONENTS] section to restrict the creation of certain PTCs to a given set of hosts.

[COMPONENTS]
# This section consists of rules restricting the location of created PTCs.

[MAIN_CONTROLLER]
# The options herein control the behavior of MC.

TCPPort := 0
KillTimer := 10.0
# NumHCs := 0
# LocalAddress := 
