#!/usr/bin/env tclsh source streamtestlib.tcl # Define records, protocol and startup (text goes to files) # The asynPort "device" is connected to a network TCP socket # Talk to the socket with send/receive/assure # Send commands to the ioc shell with ioccmd set records { record (longout, "DZ:testout") { field (DTYP, "stream") field (OUT, "@test.proto out device") } record (longin, "DZ:testin") { field (DTYP, "stream") field (INP, "@test.proto in device") } record (longout, "DZ:testout1") { field (DTYP, "stream") field (OUT, "@test.proto out1 device") } record (longin, "DZ:testin1") { field (DTYP, "stream") field (INP, "@test.proto in1 device") } record (longout, "DZ:testout2") { field (DTYP, "stream") field (OUT, "@test.proto out2 device") } record (longin, "DZ:testin2") { field (DTYP, "stream") field (INP, "@test.proto in2 device") } record (longin, "DZ:testin3") { field (DTYP, "stream") field (INP, "@test.proto in3 device") } } set protocol { Terminator = LF; out {out "%{zero|one|two}bla";} in {in "%{zero|one|two}bla"; out "%d";} out1 {out "%#{zero|one|two}bla";} in1 {in "%#{zero|one|two}bla"; out "%d";} out2 {out "%#{zero=-1|one|two=5|default=?}bla";} in2 {in "%#{zero=-1|one|two=5}bla"; out "%d";} in3 {in "%{\x00|\r|}bla"; out "%d";} } set startup { var streamDebug 1 } set debug 0 startioc ioccmd {dbpf DZ:testout 0} assure "zerobla\n" ioccmd {dbpf DZ:testout 1} assure "onebla\n" ioccmd {dbpf DZ:testout 2} assure "twobla\n" ioccmd {dbpf DZ:testout1 0} assure "zerobla\n" ioccmd {dbpf DZ:testout1 1} assure "onebla\n" ioccmd {dbpf DZ:testout1 2} assure "twobla\n" ioccmd {dbpf DZ:testout2 -1} assure "zerobla\n" ioccmd {dbpf DZ:testout2 0} assure "onebla\n" ioccmd {dbpf DZ:testout2 5} assure "twobla\n" ioccmd {dbpf DZ:testout2 17} assure "defaultbla\n" ioccmd {dbpf DZ:testin.PROC 1} send "zerobla\n" assure "0\n" ioccmd {dbpf DZ:testin.PROC 1} send "onebla\n" assure "1\n" ioccmd {dbpf DZ:testin.PROC 1} send "twobla\n" assure "2\n" ioccmd {dbpf DZ:testin1.PROC 1} send "zerobla\n" assure "0\n" ioccmd {dbpf DZ:testin1.PROC 1} send "onebla\n" assure "1\n" ioccmd {dbpf DZ:testin1.PROC 1} send "twobla\n" assure "2\n" ioccmd {dbpf DZ:testin2.PROC 1} send "zerobla\n" assure "-1\n" ioccmd {dbpf DZ:testin2.PROC 1} send "onebla\n" assure "0\n" ioccmd {dbpf DZ:testin2.PROC 1} send "twobla\n" assure "5\n" ioccmd {dbpf DZ:testin3.PROC 1} send "\000bla\n" assure "0\n" ioccmd {dbpf DZ:testin3.PROC 1} send "\rbla\n" assure "1\n" ioccmd {dbpf DZ:testin3.PROC 1} send "bla\n" assure "2\n" finish