diff --git a/site_ansto/hardsup/Monitor/Makefile b/site_ansto/hardsup/Monitor/Makefile
index e2d9895c..638a7500 100644
--- a/site_ansto/hardsup/Monitor/Makefile
+++ b/site_ansto/hardsup/Monitor/Makefile
@@ -13,12 +13,12 @@ OBJECTS =
LIBS =
LIBFLAGS =
DDK_DIR = /home/dcl/nitest/nimhddk_linux26
-OBJECTS += $(DDK_DIR)/osiBus.o
-OBJECTS += $(DDK_DIR)/Linux26/osiUserCode.o
-TIO_DIR = /home/dcl/nitest/NI660x
-OBJECTS += $(TIO_DIR)/tTIO.o
+DEV_DIR = /home/dcl/nitest/NI660x
+OBJECTS += $(DEV_DIR)/osiBus.o
+OBJECTS += $(DEV_DIR)/osiUserCode.o
+OBJECTS += $(DEV_DIR)/tTIO.o
IFLAGS = -I$(DDK_DIR)
-IFLAGS += -I$(TIO_DIR)/ChipObjects/
+IFLAGS += -I$(DEV_DIR)/ChipObjects/
CXXFLAGS += -DkLittleEndian=1 -DREGISTER_LEVEL_PROGRAMMING=1
LIBFLAGS += $(OBJECTS)
CXXFLAGS += $(IFLAGS)
@@ -39,7 +39,7 @@ Monitor : $(OBJS)
Monitor.o: Monitor.c Monitor.h params.h utility.h sock.h device.h
-device.o: device.c device.h params.h sock.h
+device.o: device.c device.h params.h sock.h hware.h
display.o: display.c display.h utility.h params.h sock.h device.h
diff --git a/site_ansto/hardsup/Monitor/display.c b/site_ansto/hardsup/Monitor/display.c
index 7060897c..583b858c 100644
--- a/site_ansto/hardsup/Monitor/display.c
+++ b/site_ansto/hardsup/Monitor/display.c
@@ -351,9 +351,9 @@ void put_page(int n)
"
| Field | \r\n"
"Value |
\r\n");
buffer.length += strlen(bp);
- show_text(&buffer, "State", device->state == counter_stopped ? "STOPPED" :
- device->state == counter_running ? "RUNNING" :
- device->state == counter_paused ? "PAUSED" : "IDLE");
+ show_text(&buffer, "State", device->state == device_stopped ? "STOPPED" :
+ device->state == device_running ? "RUNNING" :
+ device->state == device_paused ? "PAUSED" : "IDLE");
show_text(&buffer, "Direction", pp->direction == COUNT_UP ? "UP" : "DOWN");
show_int(&buffer, "Scan", pp->poll_period);
show_int(&buffer, "Sample", pp->sample_period);
@@ -362,7 +362,7 @@ void put_page(int n)
show_time(&buffer, "Current Time", &device->current_time, false);
{
struct timeval tv = device->stop_time;
- if (device->state == counter_running || device->state == counter_paused)
+ if (device->state == device_running || device->state == device_paused)
{
tv = device->current_time;
}
diff --git a/site_ansto/hardsup/Monitor/hware.c b/site_ansto/hardsup/Monitor/hware.c
index 2efcf674..32dc19e7 100644
--- a/site_ansto/hardsup/Monitor/hware.c
+++ b/site_ansto/hardsup/Monitor/hware.c
@@ -89,7 +89,6 @@ static void initMite(iBus *bus);
static CARD* card[10];
#else
-static int make_dout_task(pHWARE ptr);
#endif
int hware_ctor(const char* device_name, pHWARE* ptr)
@@ -101,6 +100,7 @@ int hware_ctor(const char* device_name, pHWARE* ptr)
int error = 0;
bool flag = false;
char text_string[] = DEFAULT_DEVICE;
+ char port_range[40];
const char *name;
const char *text;
@@ -119,8 +119,6 @@ int hware_ctor(const char* device_name, pHWARE* ptr)
if (flag)
{
hware->channel_number = *name - '0';
- hware->sync_line_number = mapping[hware->channel_number].sync_num;
- hware->output_line_number = mapping[hware->channel_number].outp_num;
}
else
{
@@ -141,6 +139,8 @@ int hware_ctor(const char* device_name, pHWARE* ptr)
++text;
}
+ hware->sync_line_number = mapping[hware->channel_number].sync_num;
+ hware->output_line_number = mapping[hware->channel_number].outp_num;
#ifdef REGISTER_LEVEL_PROGRAMMING
if (card[hware->card_number] == NULL)
{
@@ -381,6 +381,7 @@ int hware_ctor(const char* device_name, pHWARE* ptr)
// Create a DAQmx task
/*********************************************/
DAQmxErrChk (DAQmxCreateTask("",&hware->taskHandle));
+ DAQmxErrChk (DAQmxCreateTask("",&hware->taskHandle_dout));
/*********************************************/
// Create a DAQmx device within the task
@@ -393,10 +394,22 @@ int hware_ctor(const char* device_name, pHWARE* ptr)
hware->count32,
DAQmx_Val_CountUp));
+ /*********************************************/
+ // Create the digital channel within the task
+ /*********************************************/
+ snprintf(port_range, sizeof(port_range), "DEV%d/LINE%d",
+ hware->card_number, hware->channel_number);
+ DAQmxErrChk (DAQmxCreateDOChan(hware->taskHandle_dout,
+ port_range,
+ "",
+ DAQmx_Val_ChanPerLine));
+
/*********************************************/
// Start the DAQmx task
/*********************************************/
DAQmxErrChk (DAQmxStartTask(hware->taskHandle));
+ DAQmxErrChk (DAQmxStartTask(hware->taskHandle_dout));
+ hware_outp(hware, 0);
#endif
return 0;
@@ -582,7 +595,6 @@ int hware_outp(pHWARE hware, int value)
if (value < 0)
{
// set the disabled line to logic low
- if (hware->taskHandle_dout != 0) {
data = 0;
DAQmxWriteDigitalLines(hware->taskHandle_dout,
1,
@@ -592,18 +604,9 @@ int hware_outp(pHWARE hware, int value)
&data,
NULL,
NULL);
- /*********************************************/
- // DAQmx Stop Code
- /*********************************************/
- DAQmxStopTask(hware->taskHandle_dout);
- DAQmxClearTask(hware->taskHandle_dout);
- hware->taskHandle_dout = 0;
- }
}
else
{
- if (hware->taskHandle_dout == 0)
- DAQmxErrChk (make_dout_task(hware));
if (value > 0)
data = 1;
else
@@ -807,32 +810,4 @@ void initMite(iBus *bus)
bus->destroyAddressSpace(Bar0);
}
#else
-int make_dout_task(pHWARE ptr)
-{
- int error = 0;
- char port_range[40];
- /*********************************************/
- // Create a DAQmx task to hold the counter
- /*********************************************/
- DAQmxErrChk (DAQmxCreateTask("",&ptr->taskHandle_dout));
-
- /*********************************************/
- // Create the digital channel within the task
- /*********************************************/
- snprintf(port_range, sizeof(port_range), "DEV%d/LINE%d",
- ptr->card_number, ptr->channel_number);
- DAQmxErrChk (DAQmxCreateDOChan(ptr->taskHandle_dout,
- port_range,
- "",
- DAQmx_Val_ChanPerLine));
-
- /*********************************************/
- // Start the DAQmx task
- /*********************************************/
- DAQmxErrChk (DAQmxStartTask(ptr->taskHandle_dout));
- return error;
-
-Error:
- return error;
-}
#endif
diff --git a/site_ansto/hardsup/Monitor/hware.h b/site_ansto/hardsup/Monitor/hware.h
index 8f7111f3..9d470bed 100644
--- a/site_ansto/hardsup/Monitor/hware.h
+++ b/site_ansto/hardsup/Monitor/hware.h
@@ -16,6 +16,7 @@
struct device_private_t;
typedef struct device_private_t* pHWARE;
+typedef unsigned long long HWARE_VALUE;
/**
* Create a 64-bit counter and start it counting
@@ -39,7 +40,7 @@ int hware_ctor(const char* card_name, pHWARE* ptr);
* 0 OK
* !0 Error
*/
-int hware_read(pHWARE hware, unsigned long long* value);
+int hware_read(pHWARE hware, HWARE_VALUE* value);
/**
* Select the source
diff --git a/site_ansto/hardsup/Monitor/params.c b/site_ansto/hardsup/Monitor/params.c
index 3de94f94..2a225aa3 100644
--- a/site_ansto/hardsup/Monitor/params.c
+++ b/site_ansto/hardsup/Monitor/params.c
@@ -187,7 +187,7 @@ bool param_set(pPARAMETERS pp, char* name, char* value)
pp->source = strtol(value, NULL, 10);
if (pp->source < 1)
pp->source = 0;
- else if (pp->source > 1000)
+ else if (pp->source > 3)
pp->source = 0;
dbg_printf(0, "=>%d\n", pp->source);
break;