summaryrefslogtreecommitdiff
path: root/spectro/specbos.h
diff options
context:
space:
mode:
Diffstat (limited to 'spectro/specbos.h')
-rw-r--r--spectro/specbos.h160
1 files changed, 160 insertions, 0 deletions
diff --git a/spectro/specbos.h b/spectro/specbos.h
new file mode 100644
index 0000000..2bc601e
--- /dev/null
+++ b/spectro/specbos.h
@@ -0,0 +1,160 @@
+#ifndef SPECBOS_H
+
+/*
+ * Argyll Color Correction System
+ *
+ * JETI specbos related defines
+ *
+ * Author: Graeme W. Gill
+ * Date: 13/3/2013
+ *
+ * Copyright 2001 - 2013, Graeme W. Gill
+ * All rights reserved.
+ *
+ * This material is licenced under the GNU GENERAL PUBLIC LICENSE Version 2 or later :-
+ * see the License2.txt file for licencing details.
+ *
+ * Based on DTP02.h
+ */
+
+/*
+ If you make use of the instrument driver code here, please note
+ that it is the author(s) of the code who take responsibility
+ for its operation. Any problems or queries regarding driving
+ instruments with the Argyll drivers, should be directed to
+ the Argyll's author(s), and not to any other party.
+
+ If there is some instrument feature or function that you
+ would like supported here, it is recommended that you
+ contact Argyll's author(s) first, rather than attempt to
+ modify the software yourself, if you don't have firm knowledge
+ of the instrument communicate protocols. There is a chance
+ that an instrument could be damaged by an incautious command
+ sequence, and the instrument companies generally cannot and
+ will not support developers that they have not qualified
+ and agreed to support.
+ */
+
+#include "inst.h"
+
+/* Fake Error codes */
+#define SPECBOS_INTERNAL_ERROR 0xff01 /* Internal software error */
+#define SPECBOS_TIMEOUT 0xff02 /* Communication timeout */
+#define SPECBOS_COMS_FAIL 0xff03 /* Communication failure */
+#define SPECBOS_UNKNOWN_MODEL 0xff04 /* Not a JETI specbos */
+#define SPECBOS_DATA_PARSE_ERROR 0xff05 /* Read data parsing error */
+
+#define SPECBOS_SPOS_EMIS 0xff06 /* Needs to be in emsissive configuration */
+#define SPECBOS_SPOS_AMB 0xff07 /* Needs to be in ambient configuration */
+
+/* Real instrument error code */
+#define SPECBOS_OK 0
+
+#define SPECBOS_COMMAND 4
+#define SPECBOS_PASSWORD 7
+#define SPECBOS_DIGIT 8
+#define SPECBOS_ARG_1 10
+#define SPECBOS_ARG_2 11
+#define SPECBOS_ARG_3 12
+#define SPECBOS_ARG_4 13
+#define SPECBOS_PARAM 20
+#define SPECBOS_CONFIG_ARG 21
+#define SPECBOS_CONTROL_ARG 22
+#define SPECBOS_READ_ARG 23
+#define SPECBOS_FETCH_ARG 24
+#define SPECBOS_MEAS_ARG 25
+#define SPECBOS_CALC_ARG 26
+#define SPECBOS_CAL_ARG 27
+#define SPECBOS_PARAM_CHSUM 101
+#define SPECBOS_USERFILE_CHSUM 102
+#define SPECBOS_USERFILE2_CHSUM 103
+#define SPECBOS_USERFILE2_ARG 104
+#define SPECBOS_OVEREXPOSED 120
+#define SPECBOS_UNDEREXPOSED 121
+#define SPECBOS_ADAPT_INT_TIME 123
+#define SPECBOS_NO_SHUTTER 130
+#define SPECBOS_NO_DARK_MEAS 131
+#define SPECBOS_NO_REF_MEAS 132
+#define SPECBOS_NO_TRANS_MEAS 133
+#define SPECBOS_NO_RADMTRC_CALC 134
+#define SPECBOS_NO_CCT_CALC 135
+#define SPECBOS_NO_CRI_CALC 136
+#define SPECBOS_NO_DARK_COMP 137
+#define SPECBOS_NO_LIGHT_MEAS 138
+#define SPECBOS_NO_PEAK_CALC 139
+#define SPECBOS_CAL_DATA 140
+#define SPECBOS_EXCEED_CAL_WL 141
+#define SPECBOS_SCAN_BREAK 147
+#define SPECBOS_TO_CYC_OPT_TRIG 160
+#define SPECBOS_DIV_CYC_TIME 161
+#define SPECBOS_WRITE_FLASH_PARM 170
+#define SPECBOS_READ_FLASH_PARM 171
+#define SPECBOS_FLASH_ERASE 172
+#define SPECBOS_NO_CALIB_FILE 180
+#define SPECBOS_CALIB_FILE_HEADER 181
+#define SPECBOS_WRITE_CALIB_FILE 182
+#define SPECBOS_CALIB_FILE_VALS 183
+#define SPECBOS_CALIB_FILE_NO 184
+#define SPECBOS_CLEAR_CALIB_FILE 186
+#define SPECBOS_CLEAR_CALIB_ARG 187
+#define SPECBOS_NO_LAMP_FILE 190
+#define SPECBOS_LAMP_FILE_HEADER 191
+#define SPECBOS_WRITE_LAMP_FILE 192
+#define SPECBOS_LAMP_FILE_VALS 193
+#define SPECBOS_LAMP_FILE_NO 194
+#define SPECBOS_CLEAR_LAMP_FILE 196
+#define SPECBOS_CLEAR_LAMP_FILE_ARG 197
+#define SPECBOS_RAM_CHECK 200
+#define SPECBOS_DATA_OUTPUT 220
+#define SPECBOS_RAM_LOW 225
+#define SPECBOS_FIRST_MEM_ALLOC 230
+#define SPECBOS_SECOND_MEM_ALLOC 231
+#define SPECBOS_THIRD_MEM_ALLOC 232
+#define SPECBOS_RADMTRC_WL_RANGE 251
+#define SPECBOS_BOOT_BAT_POWER 280
+#define SPECBOS_TRIG_CONF_1 500
+#define SPECBOS_TRIG_CONF_2 501
+
+/* Internal software errors */
+#define SPECBOS_INT_THREADFAILED 1000
+
+/* SPECBOS communication object */
+struct _specbos {
+ INST_OBJ_BASE
+
+ amutex lock; /* Command lock */
+
+ int model; /* JETI specbos model number */
+ /* 1201 */
+ /* 1211 */
+
+ inst_mode mode; /* Currently instrument mode */
+
+ int refrmode; /* nz if in refresh display mode */
+ /* (1201 has a refresh mode ?? but can't measure frequency) */
+ int rrset; /* Flag, nz if the refresh rate has been determined */
+ double refperiod; /* if > 0.0 in refmode, target int time quantization */
+ double refrate; /* Measured refresh rate in Hz */
+ int refrvalid; /* nz if refrate is valid */
+
+ inst_opt_type trig; /* Reading trigger mode */
+
+ double measto; /* Expected measurement timeout value */
+ int nbands; /* Number of spectral bands */
+ double wl_short;
+ double wl_long;
+
+ /* Other state */
+ athread *th; /* Diffuser position monitoring thread */
+ volatile int th_term; /* nz to terminate thread */
+ volatile int th_termed; /* nz when thread terminated */
+ int dpos; /* Diffuser position, 0 = emissive, 1 = ambient */
+
+ }; typedef struct _specbos specbos;
+
+/* Constructor */
+extern specbos *new_specbos(icoms *icom, instType itype);
+
+
+#define SPECBOS_H
+#endif /* SPECBOS_H */