18 #include "../include/tscope5/cedrusbox.h"
19 #include "../include/tscope5/cedrusbox_internal.h"
20 #include "../include/tscope5/system_internal.h"
45 ts5_log(TS5_LOGLEVEL_3,
"ts5_define_cedrusbox_button(%d,%d)\n", device, button);
47 if (device<1 || device>_ts5_status.timer.num_cedrusboxes) {
48 ts5_fatal(
"%s: %s %d, %s %d\n",
"ts5_define_cedrusbox_button",
49 "device argument is", device,
"number of cedrusboxes is",
50 _ts5_status.timer.num_cedrusboxes);
54 ts5_fatal(
"%s: %s\n",
"ts5_define_cedrusbox_button",
55 "button argument is 0, response buttons are numbered from 1");
58 if (abs(button)>_ts5_status.timer.cedrusbox[device-1].num_buttons) {
59 ts5_fatal(
"%s: %s %d, %s %d is %d\n",
"ts5_define_cedrusbox_button",
60 "button argument is ", button,
61 "number of cedrusbox buttons for device", device,
62 _ts5_status.timer.cedrusbox[device-1].num_buttons);
65 if (button>0 && _ts5_status.timer.cedrusbox[device-1]
66 .button_press_defined[button-1] !=0) {
67 ts5_fatal(
"%s: %s %d %s\n",
"ts5_define_cedrusbox_button",
68 "button press", button,
"is already defined");
71 if (button<0 && _ts5_status.timer.cedrusbox[device-1]
72 .button_release_defined[-button-1]!=0) {
73 ts5_fatal(
"%s: %s %d %s\n",
"ts5_define_cedrusbox_button",
74 "button release", button,
"is already defined");
77 _ts5_status.timer.cedrusbox_is_response_device = 1;
78 _ts5_status.timer.num_defined_buttons++;
79 _ts5_status.timer.num_active_buttons++;
80 _ts5_status.timer.cedrusbox[device-1].num_defined_buttons++;
81 _ts5_status.timer.cedrusbox[device-1].num_active_buttons++;
84 _ts5_status.timer.cedrusbox[device-1]
85 .button_press_defined[button-1] =
86 _ts5_status.timer.num_defined_buttons;
88 _ts5_status.timer.cedrusbox[device-1]
89 .button_press_active[button-1] =
90 _ts5_status.timer.num_defined_buttons;
94 _ts5_status.timer.cedrusbox[device-1]
95 .button_release_defined[-button-1] =
96 _ts5_status.timer.num_defined_buttons;
98 _ts5_status.timer.cedrusbox[device-1]
99 .button_release_active[-button-1] =
100 _ts5_status.timer.num_defined_buttons;
103 return _ts5_status.timer.num_defined_buttons;
115 ts5_log(TS5_LOGLEVEL_4,
"ts5_get_num_cedrusboxes()\n");
117 return _ts5_status.timer.num_cedrusboxes;
131 ts5_log(TS5_LOGLEVEL_4,
"ts5_get_num_cedrusbox_buttons(%d)\n", device);
133 if (device<1 || device>_ts5_status.timer.num_cedrusboxes) {
134 ts5_fatal(
"%s: %s %d, %s %d\n",
"ts5_get_num_cedrusbox_buttons",
135 "device argument is", device,
"number of cedrusboxes is",
136 _ts5_status.timer.num_cedrusboxes);
139 return _ts5_status.timer.cedrusbox[device-1].num_buttons;
164 ts5_log(TS5_LOGLEVEL_3,
"ts5_define_cedrusbox_trigger_input(%d)\n", device);
166 if (device<1 || device>_ts5_status.timer.num_cedrusboxes) {
167 ts5_fatal(
"%s: %s %d, %s %d\n",
"ts5_define_cedrusbox_trigger_input",
168 "device argument is", device,
"number of cedrusboxes is",
169 _ts5_status.timer.num_cedrusboxes);
172 _ts5_status.timer.cedrusbox_is_trigger_device = 1;
173 _ts5_status.timer.cedrusbox[device-1].is_trigger_input_device = 1;
186 ts5_log(TS5_LOGLEVEL_3,
"ts5_simulate_cedrusbox_trigger_input(%d,%f)\n",
189 if (device<1 || device>_ts5_status.timer.num_cedrusboxes) {
190 ts5_fatal(
"%s: %s %d, %s %d\n",
"ts5_simulate_cedrusbox_trigger_input",
191 "device argument is", device,
"number of cedrusboxes is",
192 _ts5_status.timer.num_cedrusboxes);
195 _ts5_status.timer.cedrusbox[device-1].simulate_trigger_input = 1;
197 _ts5_status.timer.cedrusbox[device-1].trigger_simulation_interval =
void ts5_simulate_cedrusbox_trigger_input(int device, double interval)
Turn on cedrusbox trigger input simulation.
void ts5_log(const unsigned int level, const char *format,...)
Send info to a logging window.
int ts5_define_cedrusbox_button(int device, int button)
Define a cedrusbox button as a response button.
int ts5_get_num_cedrusboxes()
Get the number of cedrusboxes that are connected to the system.
int ts5_get_num_cedrusbox_buttons(int device)
Get the number of buttons available on a cedrusbox.
void ts5_define_cedrusbox_trigger_input(int device)
Define a cedrusbox as a trigger input device.
void ts5_check_cedrusbox(char *calling_function)
Do some checks at the start of each cedrusbox function.
void ts5_fatal(const char *format,...)
Exit safely with an error message.