diff --git a/bin/bootstrap_epics b/bin/bootstrap_epics
index 85d5d3f97c334c6aea5e8244544708d03d95625f..8ce7b414fc2754419e6de31899801af2b40bf86d 100755
--- a/bin/bootstrap_epics
+++ b/bin/bootstrap_epics
@@ -67,7 +67,7 @@ set -- "${POSITIONAL[@]}" # restore positional parameters
# print_the_help
# exit
#fi
-
+#
#if [ -d "${NAME}" ]
#then
# echo "Directory ${NAME} exists."
@@ -80,61 +80,66 @@ set -- "${POSITIONAL[@]}" # restore positional parameters
source setup.sh
-#lsb_release -d | grep -i "ubuntu"
-#
-#if [[ "$?" == "0" ]] ; then
-# sudo apt-get install -y \
-# re2c libreadline-dev libusb-dev \
-# libusb-java libusb-1.0-0-dev libnet1-dev \
-# python-pip \
-# libpcap-dev libx11-dev libxext-dev python-numpy
-# if [[ "$(uname -m)" == "aarch64" ]] ; then
-# sudo apt-get install -y python-rpi.gpio python3-rpi.gpio
-# fi
-# sudo pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org spidev
-#fi
-#
-#git clone --recursive -b 7.0 https://git.launchpad.net/epics-base base-7.0
-#ln -s base-7.0 base
-#
-#pushd base
-#make
-#popd
-#
-#wget -qO- https://epics.anl.gov/bcda/synApps/tar/synApps_6_0.tar.gz | tar -zxf -
-
-#pushd synApps/support
-#ln -s calc-R3-7-1 calc
-#ln -s asyn-R4-33 asyn
-#ln -s stream-R2-7-7c stream
-#sed -i '1d' configure/RELEASE
-#sed -i '1iSUPPORT = /opt/epics/synApps/support' configure/RELEASE
-#sed -i '3d' configure/RELEASE
-#sed -i '3iEPICS_BASE=/opt/epics/base' configure/RELEASE
-#sed -i '17d' configure/RELEASE
-#sed -i '17i#DXP=$(SUPPORT)/dxp-R5-0' configure/RELEASE
-#
-#sed -i '34d' configure/RELEASE
-#sed -i '34i#SSCAN=$(SUPPORT)/sscan-R2-11-1' configure/RELEASE
-#
-#
-#sed -i '46d' configure/RELEASE
-#sed -i '45d' configure/RELEASE
-#sed -i '44d' configure/RELEASE
-#sed -i '43d' configure/RELEASE
-#sed -i '42d' configure/RELEASE
-#sed -i '41d' configure/RELEASE
-#echo '#AREA_DETECTOR=$(SUPPORT)/areaDetector-R3-3-1' >> configure/RELEASE
-#echo '#ADCORE=$(AREA_DETECTOR)/ADCore' >> configure/RELEASE
-#echo '#ADSUPPORT=$(AREA_DETECTOR)/ADSupport' >> configure/RELEASE
-#echo '#ADSIMDETECTOR=$(AREA_DETECTOR)/ADSimDetector' >> configure/RELEASE
-#echo '#SNCSEQ=$(SUPPORT)/seq-2-2-5' >> configure/RELEASE
-#echo '#ALLEN_BRADLEY=$(SUPPORT)/allenBradley-2-3' >> configure/RELEASE
-#
-#make release
-#make
-#
-#popd
+yes_or_no "build epics base"
+if [[ $? ]] ; then
+
+ lsb_release -d | grep -i "ubuntu"
+
+ if [[ "$?" == "0" ]] ; then
+ sudo apt-get install -y \
+ re2c libreadline-dev libusb-dev \
+ libusb-java libusb-1.0-0-dev libnet1-dev \
+ python-pip \
+ libpcap-dev libx11-dev libxext-dev python-numpy
+ if [[ "$(uname -m)" == "aarch64" ]] ; then
+ sudo apt-get install -y python-rpi.gpio python3-rpi.gpio
+ fi
+ sudo pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org spidev
+ fi
+
+ git clone --recursive -b 7.0 https://git.launchpad.net/epics-base base-7.0
+ ln -s base-7.0 base
+
+ pushd base
+ make
+ popd
+
+ wget -qO- https://epics.anl.gov/bcda/synApps/tar/synApps_6_0.tar.gz | tar -zxf -
+
+ pushd synApps/support
+ ln -s calc-R3-7-1 calc
+ ln -s asyn-R4-33 asyn
+ ln -s stream-R2-7-7c stream
+ sed -i '1d' configure/RELEASE
+ sed -i '1iSUPPORT = /opt/epics/synApps/support' configure/RELEASE
+ sed -i '3d' configure/RELEASE
+ sed -i '3iEPICS_BASE=/opt/epics/base' configure/RELEASE
+ sed -i '17d' configure/RELEASE
+ sed -i '17i#DXP=$(SUPPORT)/dxp-R5-0' configure/RELEASE
+
+ sed -i '34d' configure/RELEASE
+ sed -i '34i#SSCAN=$(SUPPORT)/sscan-R2-11-1' configure/RELEASE
+
+
+ sed -i '46d' configure/RELEASE
+ sed -i '45d' configure/RELEASE
+ sed -i '44d' configure/RELEASE
+ sed -i '43d' configure/RELEASE
+ sed -i '42d' configure/RELEASE
+ sed -i '41d' configure/RELEASE
+ echo '#AREA_DETECTOR=$(SUPPORT)/areaDetector-R3-3-1' >> configure/RELEASE
+ echo '#ADCORE=$(AREA_DETECTOR)/ADCore' >> configure/RELEASE
+ echo '#ADSUPPORT=$(AREA_DETECTOR)/ADSupport' >> configure/RELEASE
+ echo '#ADSIMDETECTOR=$(AREA_DETECTOR)/ADSimDetector' >> configure/RELEASE
+ echo '#SNCSEQ=$(SUPPORT)/seq-2-2-5' >> configure/RELEASE
+ echo '#ALLEN_BRADLEY=$(SUPPORT)/allenBradley-2-3' >> configure/RELEASE
+
+ make release
+ make
+
+ popd
+
+fi
yes_or_no "Build extenstions"
if [[ "$?" ]] ; then
diff --git a/dm/test_laser.ui b/dm/test_laser.ui
new file mode 100644
index 0000000000000000000000000000000000000000..66e8362bffd16e47da9a802a9ef9f556c5bab805
--- /dev/null
+++ b/dm/test_laser.ui
@@ -0,0 +1,410 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>MainWindow</class>
+ <widget class="QMainWindow" name="MainWindow">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>800</width>
+ <height>600</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>MainWindow</string>
+ </property>
+ <widget class="QWidget" name="centralwidget">
+ <widget class="QGroupBox" name="groupBox">
+ <property name="geometry">
+ <rect>
+ <x>40</x>
+ <y>140</y>
+ <width>241</width>
+ <height>381</height>
+ </rect>
+ </property>
+ <property name="title">
+ <string>Laser 1</string>
+ </property>
+ <widget class="caThermo" name="cathermo">
+ <property name="geometry">
+ <rect>
+ <x>20</x>
+ <y>40</y>
+ <width>20</width>
+ <height>331</height>
+ </rect>
+ </property>
+ <property name="channel" stdset="0">
+ <string notr="true">raytum:l1:gcur</string>
+ </property>
+ </widget>
+ <widget class="caByte" name="cabyte">
+ <property name="geometry">
+ <rect>
+ <x>50</x>
+ <y>50</y>
+ <width>20</width>
+ <height>311</height>
+ </rect>
+ </property>
+ <property name="channel" stdset="0">
+ <string notr="true">raytum:l1:glstat</string>
+ </property>
+ </widget>
+ <widget class="caTextEntry" name="catextentry">
+ <property name="geometry">
+ <rect>
+ <x>169</x>
+ <y>150</y>
+ <width>51</width>
+ <height>22</height>
+ </rect>
+ </property>
+ <property name="channel" stdset="0">
+ <string notr="true">raytum:l1:scur</string>
+ </property>
+ <property name="precision">
+ <number>1</number>
+ </property>
+ <property name="precisionMode">
+ <enum>caLineEdit::User</enum>
+ </property>
+ </widget>
+ <widget class="caToggleButton" name="catogglebutton">
+ <property name="geometry">
+ <rect>
+ <x>80</x>
+ <y>60</y>
+ <width>100</width>
+ <height>22</height>
+ </rect>
+ </property>
+ <property name="text">
+ <string>on/off</string>
+ </property>
+ <property name="channel" stdset="0">
+ <string notr="true">raytum:l1:switch</string>
+ </property>
+ </widget>
+ <widget class="caLed" name="caled">
+ <property name="geometry">
+ <rect>
+ <x>100</x>
+ <y>30</y>
+ <width>30</width>
+ <height>30</height>
+ </rect>
+ </property>
+ <property name="channel" stdset="0">
+ <string notr="true">raytum:l1:state</string>
+ </property>
+ </widget>
+ <widget class="caLineEdit" name="calineedit">
+ <property name="geometry">
+ <rect>
+ <x>120</x>
+ <y>90</y>
+ <width>51</width>
+ <height>20</height>
+ </rect>
+ </property>
+ <property name="channel" stdset="0">
+ <string notr="true">raytum:l1:glstat</string>
+ </property>
+ </widget>
+ <widget class="caLineEdit" name="calineedit_2">
+ <property name="geometry">
+ <rect>
+ <x>170</x>
+ <y>120</y>
+ <width>51</width>
+ <height>20</height>
+ </rect>
+ </property>
+ <property name="channel" stdset="0">
+ <string notr="true">raytum:l1:gcur</string>
+ </property>
+ </widget>
+ <widget class="QLabel" name="label">
+ <property name="geometry">
+ <rect>
+ <x>80</x>
+ <y>90</y>
+ <width>31</width>
+ <height>16</height>
+ </rect>
+ </property>
+ <property name="text">
+ <string>lstat</string>
+ </property>
+ </widget>
+ <widget class="QLabel" name="label_2">
+ <property name="geometry">
+ <rect>
+ <x>80</x>
+ <y>120</y>
+ <width>81</width>
+ <height>16</height>
+ </rect>
+ </property>
+ <property name="text">
+ <string>diode current</string>
+ </property>
+ </widget>
+ <widget class="QLabel" name="label_3">
+ <property name="geometry">
+ <rect>
+ <x>80</x>
+ <y>150</y>
+ <width>81</width>
+ <height>16</height>
+ </rect>
+ </property>
+ <property name="text">
+ <string>set current</string>
+ </property>
+ </widget>
+ <widget class="caLineEdit" name="calineedit_3">
+ <property name="geometry">
+ <rect>
+ <x>10</x>
+ <y>20</y>
+ <width>71</width>
+ <height>20</height>
+ </rect>
+ </property>
+ <property name="channel" stdset="0">
+ <string notr="true">raytum:l1:gserial</string>
+ </property>
+ </widget>
+ <zorder>cathermo</zorder>
+ <zorder>cabyte</zorder>
+ <zorder>catextentry</zorder>
+ <zorder>catogglebutton</zorder>
+ <zorder>caled</zorder>
+ <zorder>calineedit</zorder>
+ <zorder>calineedit_2</zorder>
+ <zorder>label</zorder>
+ <zorder>label_2</zorder>
+ <zorder>label_3</zorder>
+ <zorder>calineedit_3</zorder>
+ <zorder>canumeric</zorder>
+ </widget>
+ <widget class="caGraphics" name="cagraphics">
+ <property name="geometry">
+ <rect>
+ <x>100</x>
+ <y>10</y>
+ <width>481</width>
+ <height>111</height>
+ </rect>
+ </property>
+ </widget>
+ <widget class="QGroupBox" name="groupBox_2">
+ <property name="geometry">
+ <rect>
+ <x>340</x>
+ <y>140</y>
+ <width>241</width>
+ <height>381</height>
+ </rect>
+ </property>
+ <property name="title">
+ <string>Laser 2</string>
+ </property>
+ <widget class="caThermo" name="cathermo_2">
+ <property name="geometry">
+ <rect>
+ <x>20</x>
+ <y>40</y>
+ <width>20</width>
+ <height>331</height>
+ </rect>
+ </property>
+ <property name="channel" stdset="0">
+ <string notr="true">raytum:l2:gcur</string>
+ </property>
+ </widget>
+ <widget class="caByte" name="cabyte_2">
+ <property name="geometry">
+ <rect>
+ <x>50</x>
+ <y>50</y>
+ <width>20</width>
+ <height>311</height>
+ </rect>
+ </property>
+ <property name="channel" stdset="0">
+ <string notr="true">raytum:l2:glstat</string>
+ </property>
+ </widget>
+ <widget class="caTextEntry" name="catextentry_2">
+ <property name="geometry">
+ <rect>
+ <x>169</x>
+ <y>150</y>
+ <width>51</width>
+ <height>22</height>
+ </rect>
+ </property>
+ <property name="channel" stdset="0">
+ <string notr="true">raytum:l2:scur</string>
+ </property>
+ <property name="precision">
+ <number>1</number>
+ </property>
+ <property name="precisionMode">
+ <enum>caLineEdit::User</enum>
+ </property>
+ </widget>
+ <widget class="caToggleButton" name="catogglebutton_2">
+ <property name="geometry">
+ <rect>
+ <x>80</x>
+ <y>60</y>
+ <width>100</width>
+ <height>22</height>
+ </rect>
+ </property>
+ <property name="text">
+ <string>on/off</string>
+ </property>
+ <property name="channel" stdset="0">
+ <string notr="true">raytum:l2:switch</string>
+ </property>
+ </widget>
+ <widget class="caLed" name="caled_2">
+ <property name="geometry">
+ <rect>
+ <x>100</x>
+ <y>30</y>
+ <width>30</width>
+ <height>30</height>
+ </rect>
+ </property>
+ <property name="channel" stdset="0">
+ <string notr="true">raytum:l2:state</string>
+ </property>
+ </widget>
+ <widget class="caLineEdit" name="calineedit_4">
+ <property name="geometry">
+ <rect>
+ <x>120</x>
+ <y>90</y>
+ <width>51</width>
+ <height>20</height>
+ </rect>
+ </property>
+ <property name="channel" stdset="0">
+ <string notr="true">raytum:l2:glstat</string>
+ </property>
+ </widget>
+ <widget class="caLineEdit" name="calineedit_5">
+ <property name="geometry">
+ <rect>
+ <x>170</x>
+ <y>120</y>
+ <width>51</width>
+ <height>20</height>
+ </rect>
+ </property>
+ <property name="channel" stdset="0">
+ <string notr="true">raytum:l2:gcur</string>
+ </property>
+ </widget>
+ <widget class="QLabel" name="label_4">
+ <property name="geometry">
+ <rect>
+ <x>80</x>
+ <y>90</y>
+ <width>31</width>
+ <height>16</height>
+ </rect>
+ </property>
+ <property name="text">
+ <string>lstat</string>
+ </property>
+ </widget>
+ <widget class="QLabel" name="label_5">
+ <property name="geometry">
+ <rect>
+ <x>80</x>
+ <y>120</y>
+ <width>81</width>
+ <height>16</height>
+ </rect>
+ </property>
+ <property name="text">
+ <string>diode current</string>
+ </property>
+ </widget>
+ <widget class="QLabel" name="label_6">
+ <property name="geometry">
+ <rect>
+ <x>80</x>
+ <y>150</y>
+ <width>81</width>
+ <height>16</height>
+ </rect>
+ </property>
+ <property name="text">
+ <string>set current</string>
+ </property>
+ </widget>
+ <widget class="caLineEdit" name="calineedit_6">
+ <property name="geometry">
+ <rect>
+ <x>10</x>
+ <y>20</y>
+ <width>71</width>
+ <height>20</height>
+ </rect>
+ </property>
+ <property name="channel" stdset="0">
+ <string notr="true">raytum:l2:gserial</string>
+ </property>
+ </widget>
+ </widget>
+ </widget>
+ </widget>
+ <customwidgets>
+ <customwidget>
+ <class>caTextEntry</class>
+ <extends>caLineEdit</extends>
+ <header>caTextEntry</header>
+ </customwidget>
+ <customwidget>
+ <class>caToggleButton</class>
+ <extends>QCheckBox</extends>
+ <header>caToggleButton</header>
+ </customwidget>
+ <customwidget>
+ <class>caGraphics</class>
+ <extends>QWidget</extends>
+ <header>caGraphics</header>
+ </customwidget>
+ <customwidget>
+ <class>caLed</class>
+ <extends>QWidget</extends>
+ <header>caLed</header>
+ </customwidget>
+ <customwidget>
+ <class>caLineEdit</class>
+ <extends>QLineEdit</extends>
+ <header>caLineEdit</header>
+ </customwidget>
+ <customwidget>
+ <class>caThermo</class>
+ <extends>QWidget</extends>
+ <header>caThermo</header>
+ </customwidget>
+ <customwidget>
+ <class>caByte</class>
+ <extends>QWidget</extends>
+ <header>caByte</header>
+ </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/opi/lasers.bob b/opi/lasers.bob
index fe0e5a152db6dfff9d07b58c0de0db8a7556073c..91773b9ed8fa7d8b08f1d836b000aa2af9066f0d 100644
--- a/opi/lasers.bob
+++ b/opi/lasers.bob
@@ -60,8 +60,8 @@
<name>Laser</name>
<x>70</x>
<y>300</y>
- <width>530</width>
- <height>70</height>
+ <width>690</width>
+ <height>110</height>
<widget type="led" version="2.0.0">
<name>LED</name>
<pv_name>daq:l1:state</pv_name>
@@ -102,6 +102,29 @@
<y>2</y>
<height>30</height>
</widget>
+ <widget type="slide_button" version="2.0.0">
+ <name>Slide Button_1</name>
+ <pv_name>daq:l1:switch</pv_name>
+ <x>532</x>
+ <y>2</y>
+ </widget>
+ <widget type="textentry" version="3.0.0">
+ <name>Text Entry</name>
+ <pv_name>daq:l1:scur</pv_name>
+ <x>42</x>
+ <y>34</y>
+ <width>110</width>
+ <height>30</height>
+ <precision>3</precision>
+ </widget>
+ <widget type="textupdate" version="2.0.0">
+ <name>Text Update_2</name>
+ <pv_name>daq:l1:gcur</pv_name>
+ <x>182</x>
+ <y>34</y>
+ <width>130</width>
+ <height>40</height>
+ </widget>
</widget>
<widget type="byte_monitor" version="2.0.0">
<name>Byte Monitor</name>
@@ -111,10 +134,57 @@
<width>450</width>
<height>40</height>
</widget>
- <widget type="slide_button" version="2.0.0">
- <name>Slide Button_1</name>
- <pv_name>daq:l1:switch</pv_name>
- <x>680</x>
- <y>330</y>
+ <widget type="group" version="2.0.0">
+ <name>Laser_1</name>
+ <x>70</x>
+ <y>410</y>
+ <width>690</width>
+ <height>70</height>
+ <widget type="led" version="2.0.0">
+ <name>LED_1</name>
+ <pv_name>daq:l2:state</pv_name>
+ <x>232</x>
+ <y>2</y>
+ <width>40</width>
+ <height>32</height>
+ <on_color>
+ <color red="255" green="0" blue="0">
+ </color>
+ </on_color>
+ </widget>
+ <widget type="bool_button" version="2.0.0">
+ <name>Boolean Button_2</name>
+ <pv_name>daq:l2:off</pv_name>
+ <x>382</x>
+ <y>2</y>
+ <width>80</width>
+ <height>32</height>
+ <off_label>Turn Off</off_label>
+ <off_image>Turning off ...</off_image>
+ <show_led>false</show_led>
+ </widget>
+ <widget type="bool_button" version="2.0.0">
+ <name>Boolean Button_3</name>
+ <pv_name>daq:l2:on</pv_name>
+ <x>282</x>
+ <y>2</y>
+ <width>90</width>
+ <height>32</height>
+ <off_label>Turn On</off_label>
+ <show_led>false</show_led>
+ </widget>
+ <widget type="textupdate" version="2.0.0">
+ <name>Text Update_1</name>
+ <pv_name>daq:l2:gserial</pv_name>
+ <x>122</x>
+ <y>2</y>
+ <height>30</height>
+ </widget>
+ <widget type="slide_button" version="2.0.0">
+ <name>Slide Button_2</name>
+ <pv_name>daq:l2:switch</pv_name>
+ <x>532</x>
+ <y>2</y>
+ </widget>
</widget>
</display>
diff --git a/setup.sh b/setup.sh
index 03f323c0b7c0b70eab7c536a81f6472f79346a45..48ab445dbc545ba934e98b63a1ac108e1fc5be10 100644
--- a/setup.sh
+++ b/setup.sh
@@ -17,8 +17,8 @@ export LD_LIBRARY_PATH=$EPICS_ROOT/lib:$LD_LIBRARY_PATH
export PATH=$EPICS_BASE/bin/$EPICS_HOST_ARCH:$PATH
export LD_LIBRARY_PATH=$EPICS_BASE/lib/$EPICS_HOST_ARCH:$LD_LIBRARY_PATH
-export EPICS_CA_AUTO_ADDR_LIST=NO
-export EPICS_CA_ADDR_LIST=10.10.241.0
+export EPICS_CA_AUTO_ADDR_LIST=YES
+#export EPICS_CA_ADDR_LIST=10.10.241.0
# support
export ASYN=$EPICS_ROOT/synApps/support/asyn