6.3. Configuration File

The configuration file contains a number of commands that are used at startup. These commands give the driver its initial, static configuration.

A configuration file can also be invoked at run time, either programmatically or during an interactive session. The special command include is used for this purpose. This command lets you send a predetermined block of commands to the driver on the fly.

Below is a sample configuration file. This file, sstdvn_sample.cfg, is included in the distribution. Because this is Lisp syntax, comment lines start with one or more semicolon (;) characters.

;;;
;;; Sample Driver Configuration File for the drsstdvn Driver
;;;	Modify to suit requirements of specific system

;;;
;;; Set driver debug/error reporting level:
;;;	(debug level)
;;; where
;;;	0 for no output (only terminal errors produce output)
;;;	1 or 2, normal setting, reports errors and other significant events
;;;	3... reports increasing levels of debug information
(debug 2)

;;;
;;; Initialize card(s) 
;;; ------------------
;;; (cardInit [id [port [addr [irq]]]])
;;;
;;; id	 	is 0-3, the id for the interface card (default is 0)
;;; port	for ISA cards, the port address set by the SW1 switches
;;; addr	for ISA cards, location of 16K memory window
;;; irq   	for ISA, interrupt number, or -1 for polling mode
;;;
; probe for all PCI cards available, use interrupts
(cardInit)
; init card 0 at port x260, using 16K memory block at xCC00, polled
;(cardInit 0 0x260 0xCC00)
; init card 0 at port x260, using 16K memory block at xCC00, using interrupt 7
;(cardInit 0 0x260 0xCC00 7)

;;; profile the cards
;(cardProfile)

;;;
;;; polled cards must have a specific polling period (ms) assigned
;;;
;(cardPoll 0 10)

;;; Publish alternate driver name to Cogent nameserver (see nserve and nsnames)
(attachNS myName)

;;;
;;; Configure and Start DeviceNet Activity
;;; --------------------------------------
;;; Bring card online
;;;  (dnsOnline card ScannerMacId BaudRate [ServerOutputSize ServerInputSize [ConnectionType]]
;;; where
;;;	BaudRate is one of 0 | 1 | 2 or BAUD_125K | BAUD_250K | BAUD_500K
;;;
;;; Start Scanning DeviceNet
;;;  (dnsScanStart card)
;;;
;;; Add/Configure devices
;;;  (dnsAddDevice card DeviceMacId) autoprobes for Polled connection I/O sizes
;;;  (dnsAddDevice card DeviceMacId OutputSize InputSize [OutputOfs InputOfs [MsgSize [ConnectionType]]])
;;; where
;;;	ConnectionType is combination of
;;;		CONN_FLAG_EX, CONN_FLAG_AKS and one of the following IO flags
;;;		CONN_FLAG_P, CONN_FLAG_ST, CONN_FLAG_COS, CONN_FLAG_CYC
;;;		 if not specified, default is CONN_FLAG_P (recommended)
;;;

;;; load some helpful command definitions
(include /usr/cogent/src/drsstdvn/dnsDefines.cfg)
(include /usr/cogent/src/drsstdvn/dnsMsg.cfg)

(dnsOnline 0 0 BAUD_125K)
(dnsScanStart 0)
(dnsDeviceAdd 0 2)

;;;
;;; Connect to the DataHub
;;; ----------------------
;;;  Enable connection to Cascade real-time datahub
(datahub y)

;;;  Publish status driver status
;(statusPointDefine)

;;;
;;; Analog and digital points are created through the generic commands below,
;;; where address = 
;;;		[[card:]buffer[.device]:]word[;flags]
;;;			for 16-bit analog values
;;;		[[card:]buffer[.device]:]word.bit_ofs[;flags]
;;;			for digital bit values
;;;		[[card:]buffer[.device]:]word.bit_ofs[.bit_width[;flags]]
;;;			for digital fields
;;;		   
;;; card	0..3 card id
;;; buffer	0 scanner write, 1 scanner read, 2 server write, 3 server read
;;; device	word offset is relative to specified field device id
;;; word 	16 bit word offset into buffer memory
;;; bit_ofs	1..16 bit offset into word
;;; bif_width	1..32 width of field in bits.
;;; flags 	-e0 | -eN (endian swap), -s (signed value)
;;;
;;; NOTE: Points MUST be collected into a group (see below) to be updated automatically
;;; -----
;;;
;;; Cogent-specific testbed configuration (ref for point definitions examples) is in
;;; (include /usr/cogent/src/drsstdvn/testbed.cfg)

;;;
;;; Define analog points
;;; (analog enable-flag name address R|W|RW cycle-millisecs exception-flag
;;;  raw-min raw-max eng-unit-min eng-unit-max)
;;;
;(analog t <name> <address> r 0 t 0 32767 0 <max>)

;;;
;;; Define digital points
;;; (digital enable-flag name address R|W|RW cycle-millisecs exception-flag)
;;;
;(digital t <name> <address> r 0 t)

;;;
;;; Define groups.
;;;	Groups collect together a set of points to be automatically updated.
;;;	The update can occur on the group's specified cycle interval,
;;;	or can be linked to the card's update cycle, using the cardGroup command below.
;;; (group enable-flag name address R|W|RW cycle-millisecs point...)
;;;
;(group t <name> 0 R <ms> inpnt1 inpnt2 inpnt3)
;(group t <name> 0 RW <ms> outpnt1 outpnt2 outpnt3)

;;; 
;;; Associate a group with the cycle of the card (group's cycle-millisecs must be 0)
;;; (cardGroup 0 groupName)
;;;
;(cardGroup 0 <name>)