Skip to content

Commit b3743f9

Browse files
committed
build out documentation
1 parent bbac4a5 commit b3743f9

10 files changed

Lines changed: 714 additions & 18 deletions

File tree

docs/_config.yml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,13 @@
11
remote_theme: BCDA-APS/bcda-pages-style
2+
3+
callouts_level: quiet
4+
callouts:
5+
note:
6+
title: Note
7+
color: purple
8+
important:
9+
title: Important
10+
color: blue
11+
warning:
12+
title: Warning
13+
color: red

docs/bnc505.md

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
---
2+
layout: default
3+
title: BNC 505
4+
parent: Supported Devices
5+
nav_order: 5
6+
---
7+
8+
# Berkeley Nucleonics 505
9+
{: .no_toc}
10+
11+
## Table of contents
12+
{: .no_toc .text-delta}
13+
14+
- TOC
15+
{:toc}
16+
17+
## Description
18+
19+
The Berkeley Nucleonics 505 is a multi-channel pulse/delay generator.
20+
The delaygen module provides support using StreamDevice with a
21+
protocol file. No custom driver initialization is needed beyond
22+
configuring the asyn serial port.
23+
24+
## Communication
25+
26+
| Setting | Value |
27+
| - | - |
28+
| Input EOS | `\r\n` |
29+
| Output EOS | `\r\n` |
30+
31+
```
32+
drvAsynSerialPortConfigure("serial1", "/dev/ttyS0", 0, 0, 0)
33+
asynOctetSetInputEos("serial1", -1, "\r\n")
34+
asynOctetSetOutputEos("serial1", -1, "\r\n")
35+
```
36+
37+
## Setup
38+
39+
The BNC 505 uses StreamDevice, so the protocol search path must be
40+
set before loading the databases:
41+
42+
```
43+
epicsEnvSet("STREAM_PROTOCOL_PATH", "$(DELAYGEN)/db")
44+
```
45+
46+
No driver initialization command is needed. The databases reference
47+
the asyn port name directly.
48+
49+
## Databases
50+
51+
The BNC 505 uses two database files: one for global instrument
52+
settings and one loaded per pulse channel.
53+
54+
### BNC_505.db
55+
56+
Global instrument controls. Load once per instrument.
57+
58+
| Macro | Description |
59+
| - | - |
60+
| P | PV name prefix |
61+
| R | PV name infix |
62+
| PORT | Asyn port name (e.g., "serial1") |
63+
64+
```
65+
dbLoadRecords("$(DELAYGEN)/db/BNC_505.db", "P=delaygen:,R=BNC:,PORT=serial1")
66+
```
67+
68+
### BNC_505_Pn.db
69+
70+
Per-pulse-channel controls. Load once for each pulse channel, setting
71+
the `N` macro to the channel number.
72+
73+
| Macro | Description |
74+
| - | - |
75+
| P | PV name prefix |
76+
| R | PV name infix |
77+
| N | Pulse channel number (e.g., 1, 2, 3, ...) |
78+
| PORT | Asyn port name (e.g., "serial1") |
79+
80+
```
81+
dbLoadRecords("$(DELAYGEN)/db/BNC_505_Pn.db", "P=delaygen:,R=BNC:,N=1,PORT=serial1")
82+
dbLoadRecords("$(DELAYGEN)/db/BNC_505_Pn.db", "P=delaygen:,R=BNC:,N=2,PORT=serial1")
83+
```
84+
85+
## Features
86+
87+
The global database (`BNC_505.db`) provides:
88+
89+
- **Run/Stop** -- Start and stop pulse generation, with running
90+
status feedback.
91+
- **Period** -- Set the pulse period with tweak controls.
92+
- **Mode** -- Normal, single, burst, or duty cycle operation.
93+
- **External input** -- Mode, level, edge, and polarity settings for
94+
the external trigger input.
95+
96+
The per-pulse database (`BNC_505_Pn.db`) provides for each channel:
97+
98+
- **State** -- Enable or disable the pulse channel.
99+
- **Width and Delay** -- Set pulse width and delay, each with tweak
100+
controls.
101+
- **Sync** -- Select the synchronization source (T0-T8).
102+
- **Polarity and Amplitude** -- Output signal configuration.
103+
- **Mode** -- Channel-specific operating mode.
104+
- **Gating** -- Gate control for the pulse channel.

docs/coherentSDG.md

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
---
2+
layout: default
3+
title: Coherent SDG
4+
parent: Supported Devices
5+
nav_order: 4
6+
---
7+
8+
# Coherent Synchronization Delay Generator
9+
{: .no_toc}
10+
11+
## Table of contents
12+
{: .no_toc .text-delta}
13+
14+
- TOC
15+
{:toc}
16+
17+
## Description
18+
19+
The Coherent SDG is a 3-channel synchronization delay generator. The
20+
delaygen module provides an asyn port driver
21+
(`drvAsynCoherentSDG`) that communicates with the instrument over a
22+
serial connection.
23+
24+
## Communication
25+
26+
| Setting | Value |
27+
| - | - |
28+
| Input EOS | `\r` |
29+
| Output EOS | `\r` |
30+
31+
```
32+
drvAsynSerialPortConfigure("serial1", "/dev/ttyS0", 0, 0, 0)
33+
asynOctetSetOutputEos("serial1", 0, "\r")
34+
asynOctetSetInputEos("serial1", 0, "\r")
35+
```
36+
37+
## Driver Initialization
38+
39+
```
40+
drvAsynCoherentSDG(myport, ioport, ioaddr)
41+
```
42+
43+
| Parameter | Type | Description |
44+
| - | - | - |
45+
| myport | string | Name for the driver's asyn port (e.g., "SDG"). |
46+
| ioport | string | Name of the communication asyn port (e.g., "serial1"). |
47+
| ioaddr | int | Address on the communication port. Use -1 for serial. |
48+
49+
Example:
50+
51+
```
52+
drvAsynCoherentSDG("SDG", "serial1", -1)
53+
```
54+
55+
## Database
56+
57+
Load `drvAsynCoherentSDG.db` with the following macros:
58+
59+
| Macro | Description |
60+
| - | - |
61+
| P | PV name prefix |
62+
| R | PV name infix |
63+
| PORT | Driver port name, must match the `myport` argument |
64+
65+
```
66+
dbLoadRecords("$(DELAYGEN)/db/drvAsynCoherentSDG.db", "P=delaygen:,R=sdg:,PORT=SDG")
67+
```
68+
69+
## Features
70+
71+
The Coherent SDG database provides:
72+
73+
- **Trigger** -- Rate selection (1, 2, 5, or 10 Hz), mode
74+
(continuous or single-shot), and manual trigger.
75+
- **Output channels Ch1-Ch3** -- Each channel has an enable/disable
76+
switch, delay value, and delay step with increment/decrement tweak
77+
controls.
78+
- **Status** -- BWD switch, photodiode (PD1/PD2), Vdc interlock
79+
readback, RF sync, and reset.

docs/colby.md

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
---
2+
layout: default
3+
title: Colby PDL100A
4+
parent: Supported Devices
5+
nav_order: 3
6+
---
7+
8+
# Colby Instruments PDL100A
9+
{: .no_toc}
10+
11+
## Table of contents
12+
{: .no_toc .text-delta}
13+
14+
- TOC
15+
{:toc}
16+
17+
## Description
18+
19+
The Colby Instruments PDL100A is a programmable delay line. The
20+
delaygen module provides an asyn port driver (`drvAsynColby`) that
21+
communicates with the instrument over serial or Ethernet.
22+
23+
## Communication
24+
25+
### Serial
26+
27+
| Setting | Value |
28+
| - | - |
29+
| Input EOS | `:` |
30+
| Output EOS | `\r\n` |
31+
32+
```
33+
drvAsynSerialPortConfigure("serial1", "/dev/ttyS0", 0, 0, 0)
34+
asynOctetSetInputEos("serial1", -1, ":")
35+
asynOctetSetOutputEos("serial1", -1, "\r\n")
36+
```
37+
38+
### Ethernet
39+
40+
```
41+
drvAsynIPPortConfigure("serial1", "x.x.x.x:7000", 0, 0, 0)
42+
asynOctetSetInputEos("serial1", -1, ":")
43+
asynOctetSetOutputEos("serial1", -1, "\r\n")
44+
```
45+
46+
## Driver Initialization
47+
48+
```
49+
drvAsynColby(myport, ioport, addr, units, iface)
50+
```
51+
52+
| Parameter | Type | Description |
53+
| - | - | - |
54+
| myport | string | Name for the driver's asyn port (e.g., "COL"). |
55+
| ioport | string | Name of the communication asyn port (e.g., "serial1"). |
56+
| addr | int | Address on the communication port. Use -1 for serial/Ethernet. |
57+
| units | string | Default delay units: `"ps"` (picoseconds) or `"ns"` (nanoseconds). |
58+
| iface | int | Communication interface: 0 for Ethernet, 1 for serial. |
59+
60+
Example:
61+
62+
```
63+
drvAsynColby("COL", "serial1", -1, "ns", 1)
64+
```
65+
66+
## Database
67+
68+
Load `colbyPDL100A.db` with the following macros:
69+
70+
| Macro | Description |
71+
| - | - |
72+
| P | PV name prefix |
73+
| R | PV name infix |
74+
| PORT | Driver port name, must match the `myport` argument |
75+
| PREC | Display precision for delay values |
76+
| A | Asyn record name used by sseq records for connect/disconnect |
77+
78+
```
79+
dbLoadRecords("$(DELAYGEN)/db/colbyPDL100A.db", "P=delaygen:,R=Colby:,PREC=3,A=Colby,PORT=COL")
80+
```
81+
82+
## Features
83+
84+
The Colby database provides:
85+
86+
- **Delay** -- Set and read the delay value, with
87+
increment/decrement tweak support.
88+
- **Units** -- Select nanoseconds or picoseconds.
89+
- **Network configuration** -- Read IP address, gateway, netmask,
90+
TCP port, DHCP status, and MAC address (Ethernet mode).
91+
- **Connection control** -- Connect and disconnect sequences.

docs/delaygenReleaseNotes.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
layout: default
33
title: Release Notes
4-
nav_order: 2
4+
nav_order: 4
55
---
66

77

docs/devices.md

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
---
2+
layout: default
3+
title: Supported Devices
4+
nav_order: 3
5+
has_children: true
6+
---
7+
8+
# Supported Devices
9+
{: .no_toc}
10+
11+
The delaygen module provides EPICS support for the following delay
12+
generator and programmable delay line instruments:
13+
14+
| Device | Description | Communication | Driver Type |
15+
| - | - | - | - |
16+
| [SRS DG645](dg645) | 8-channel digital delay generator with sub-picosecond resolution | Serial, Ethernet | asyn port driver |
17+
| [SRS DG535](dg535) | 4-channel digital delay generator | GPIB | devGpib device support |
18+
| [Colby PDL100A](colby) | Programmable delay line | Serial, Ethernet | asyn port driver |
19+
| [Coherent SDG](coherentSDG) | 3-channel synchronization delay generator | Serial | asyn port driver |
20+
| [BNC 505](bnc505) | Multi-channel pulse/delay generator | Serial | StreamDevice |
21+
22+
The three asyn port driver devices (DG645, Colby, Coherent SDG) each
23+
register an iocsh command to create a driver instance. The DG535 uses
24+
the devGpib framework and requires no driver initialization command.
25+
The BNC 505 uses StreamDevice with a protocol file and requires no
26+
driver initialization beyond the asyn port.

0 commit comments

Comments
 (0)