From 32341853c6b17bef4aa792e375cc1c3e53dd07e2 Mon Sep 17 00:00:00 2001
From: Keenan Lang <klang@aps.anl.gov>
Date: Fri, 5 Aug 2016 11:40:52 -0500
Subject: [PATCH] tyGSAsynInit uses characters for handshaking and parity,
 iocsh doesn't recognize the difference between characters and strins.
 Switched startup file to use a more standard asyn setup to run under iocsh.

---
 iocBoot/iocxxx/vxWorks/serial.cmd | 89 +++++++++++++++++++++++--------
 1 file changed, 66 insertions(+), 23 deletions(-)

diff --git a/iocBoot/iocxxx/vxWorks/serial.cmd b/iocBoot/iocxxx/vxWorks/serial.cmd
index ba16014..bee8105 100644
--- a/iocBoot/iocxxx/vxWorks/serial.cmd
+++ b/iocBoot/iocxxx/vxWorks/serial.cmd
@@ -13,39 +13,58 @@ tyGSOctalDrv(1)
 #           defined in ipacAddXYZ() calls.)
 # slot    - location of module on carrier -- 0..3 for slot A..slot D
 tyGSOctalModuleInit("UART_0", "232", 0x80, 0, 0)
+tyGSOctalDevCreateAll("serial", "UART_0", 1000, 1000) # Creates octet ports serial0 - serial6
+
+#serial0 - SR570
+#serial1 - 
+#serial2 - Newport PM500
+#serial3 - 
+#serial4 - ACS MCB-4B
+#serial5 - 
+#serial6 - Newport MM4000
+#serial7 - Love Controllers
 
-# int tyGSAsynInit(char *port, char *moduleName, int channel, int baud,
-# char parity, int sbits, int dbits, char handshake, 
-# char *inputEos, char *outputEos)
-tyGSAsynInit("serial1",  "UART_0", 0, 9600,'N',2,8,'N',"\r","\r")  /* SRS570 */
-tyGSAsynInit("serial2",  "UART_0", 1, 9600,'E',1,7,'N',"\r\n","\r\n")  /*  */
-tyGSAsynInit("serial3",  "UART_0", 2, 9600,'E',1,7,'N',"","\n")  /* Digitel */
-tyGSAsynInit("serial4",  "UART_0", 3, 9600,'N',1,8,'N',"\n","\n")  /* MPC */
-tyGSAsynInit("serial5",  "UART_0", 4,19200,'N',1,8,'N',"\r","\r")  /* ACS MCB-4B */
-tyGSAsynInit("serial6",  "UART_0", 5, 9600,'N',1,8,'N',"\r\n","\r") /* XIA slit */
-tyGSAsynInit("serial7",  "UART_0", 6,38400,'N',1,8,'N',"\r","\r")  /* Newport MM4000 */
-tyGSAsynInit("serial8",  "UART_0", 7,19200,'N',1,8,'N',"","")      /* Love controllers */
 
 # Newport MM4000 driver setup parameters:
 #     (1) maximum # of controllers,
 #     (2) motor task polling rate (min=1Hz, max=60Hz)
 #MM4000Setup(1, 10)
 
+# Newport MM4000 serial connection settings
+#asynSetOption("serial6", -1, "baud", "38400")
+#asynSetOption("serial6", -1, "bits", "8")
+#asynSetOption("serial6", -1, "stop", "1")
+#asynSetOption("serial6", -1, "parity", "none")
+#asynSetOption("serial6", -1, "clocal", "Y")
+#asynSetOption("serial6", -1, "crtscts", "N")
+#asynOctetSetInputEos("serial6", -1, "\r")
+#asynOctetSetOutputEos("serial6", -1, "\r")
+
 # Newport MM4000 driver configuration parameters:
 #     (1) controller
-#     (2) asyn port name (e.g. serial1 or gpib1)
+#     (2) asyn port name (e.g. serial0 or gpib1)
 #     (3) GPIB address (0 for serial)
-#MM4000Config(0, "serial7", 0)
+#MM4000Config(0, "serial6", 0)
 
 # Newport PM500 driver setup parameters:
 #     (1) maximum number of controllers in system
 #     (2) motor task polling rate (min=1Hz,max=60Hz)
 #PM500Setup(1, 10)
 
+# Newport PM500 serial connection settings
+#asynSetOption("serial2", -1, "baud", "9600")
+#asynSetOption("serial2", -1, "bits", "7")
+#asynSetOption("serial2", -1, "stop", "2")
+#asynSetOption("serial2", -1, "parity", "even")
+#asynSetOption("serial2", -1, "clocal", "N")  # Hardware handshaking
+#asynSetOption("serial2", -1, "crtscts", "N")
+#asynOctetSetInputEos("serial2", -1, "\r")
+#asynOctetSetOutputEos("serial2", -1, "\r")
+
 # Newport PM500 configuration parameters:
 #     (1) controller
-#     (2) asyn port name (e.g. serial1 or gpib1)
-#PM500Config(0, "serial3")
+#     (2) asyn port name (e.g. serial0 or gpib1)
+#PM500Config(0, "serial2")
 
 # McClennan PM304 driver setup parameters:
 #     (1) maximum number of controllers in system
@@ -56,43 +75,67 @@ tyGSAsynInit("serial8",  "UART_0", 7,19200,'N',1,8,'N',"","")      /* Love contr
 #     (1) controller being configured
 #     (2) MPF serial server name (string)
 #     (3) Number of axes on this controller
-#PM304Config(0, "serial4", 1)
+#PM304Config(0, "serial3", 1)
 
 # ACS MCB-4B driver setup parameters:
 #     (1) maximum number of controllers in system
 #     (2) motor task polling rate (min=1Hz, max=60Hz)
 #MCB4BSetup(1, 10)
 
+# ACS MCB-4B serial connection settings
+#asynSetOption("serial4", -1, "baud", "19200")
+#asynSetOption("serial4", -1, "bits", "8")
+#asynSetOption("serial4", -1, "stop", "1")
+#asynSetOption("serial4", -1, "parity", "none")
+#asynSetOption("serial4", -1, "clocal", "Y")
+#asynSetOption("serial4", -1, "crtscts", "N")
+#asynOctetSetInputEos("serial4", -1, "\r")
+#asynOctetSetOutputEos("serial4", -1, "\r")
+
 # ACS MCB-4B driver configuration parameters:
 #     (1) controller being configured
 #     (2) asyn port name (string)
-#MCB4BConfig(0, "serial5")
+#MCB4BConfig(0, "serial4")
 
 # Load asynRecord records on all ports
 dbLoadTemplate("asynRecord.substitutions")
 
 # send impromptu message to serial device, parse reply
 # (was serial_OI_block)
-dbLoadRecords("$(IP)/ipApp/Db/deviceCmdReply.db","P=$(PREFIX),N=1,PORT=serial1,ADDR=0,OMAX=100,IMAX=100")
+dbLoadRecords("$(IP)/ipApp/Db/deviceCmdReply.db","P=$(PREFIX),N=1,PORT=serial0,ADDR=0,OMAX=100,IMAX=100")
 
 # Stanford Research Systems SR570 Current Preamplifier
-#dbLoadRecords("$(IP)/ipApp/Db/SR570.db", "P=$(PREFIX),A=A1,PORT=serial1")
+#asynSetOption("serial0", -1, "baud", "9600")
+#asynSetOption("serial0", -1, "bits", "8")
+#asynSetOption("serial0", -1, "stop", "2")
+#asynSetOption("serial0", -1, "parity", "none")
+#asynSetOption("serial0", -1, "clocal", "Y")
+#asynSetOption("serial0", -1, "crtscts", "N")
+#asynOctetSetInputEos("serial0", -1, "\r")
+#asynOctetSetOutputEos("serial0", -1, "\r")
+#dbLoadRecords("$(IP)/ipApp/Db/SR570.db", "P=$(PREFIX),A=A1,PORT=serial0")
 
 # Keithley 2000 DMM
-#dbLoadRecords("$(IP)/ipApp/Db/Keithley2kDMM_mf.db","P=$(PREFIX),Dmm=D1,PORT=serial1")
+#dbLoadRecords("$(IP)/ipApp/Db/Keithley2kDMM_mf.db","P=$(PREFIX),Dmm=D1,PORT=serial0")
 # channels: 10, 20, or 22;  model: 2000 or 2700
 #doAfterIocInit("seq &Keithley2kDMM,('P=$(PREFIX), Dmm=D1, channels=22, model=2700')")
 #doAfterIocInit("seq &Keithley2kDMM,('P=$(PREFIX), Dmm=D2, channels=10, model=2000')")
 
 # Oxford Cyberstar X1000 Scintillation detector and pulse processing unit
-#dbLoadRecords("$(IP)/ipApp/Db/Oxford_X1k.db","P=$(PREFIX),S=s1,PORT=serial4")
+#dbLoadRecords("$(IP)/ipApp/Db/Oxford_X1k.db","P=$(PREFIX),S=s1,PORT=serial3")
 
 # Oxford ILM202 Cryogen Level Meter (Serial)
-#dbLoadRecords("$(IP)/ipApp/Db/Oxford_ILM202.db","P=$(PREFIX),S=s1,PORT=serial5")
+#dbLoadRecords("$(IP)/ipApp/Db/Oxford_ILM202.db","P=$(PREFIX),S=s1,PORT=serial4")
 
 # Love Controllers
 #epicsEnvSet("devLoveDebug",1)
 #epicsEnvSet("loveServerDebug",1)
-#dbLoadRecords("$(IP)/ipApp/Db/love.db", "P=$(PREFIX),Q=Love_0,C=0,PORT=PORT2,ADDR=1")
+#asynSetOption("serial7", -1, "baud", "19200")
+#asynSetOption("serial7", -1, "bits", "8")
+#asynSetOption("serial7", -1, "stop", "1")
+#asynSetOption("serial7", -1, "parity", "none")
+#asynSetOption("serial7", -1, "clocal", "Y")
+#asynSetOption("serial7", -1, "crtscts", "N")
+#dbLoadRecords("$(IP)/ipApp/Db/love.db", "P=$(PREFIX),Q=Love_0,C=0,PORT=serial7,ADDR=1")
 
 # END serial.cmd --------------------------------------------------------------
-- 
GitLab