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;