00001 #include "stim_tracker_t.h" 00002 #include "xid_con_t.h" 00003 00004 cedrus::stim_tracker_t::stim_tracker_t( 00005 boost::shared_ptr<xid_con_t> xid_con, 00006 const std::wstring &devconfig_path) 00007 : base_device_t(xid_con, devconfig_path) 00008 { 00009 clear_lines(255); 00010 } 00011 00012 00013 cedrus::stim_tracker_t::~stim_tracker_t(void) 00014 { 00015 } 00016 00017 void cedrus::stim_tracker_t::raise_lines( 00018 unsigned int lines_bitmask, 00019 bool leave_remaining_lines) 00020 { 00021 xid_con_->set_digital_output_lines( 00022 lines_bitmask, leave_remaining_lines); 00023 } 00024 00025 void cedrus::stim_tracker_t::clear_lines( 00026 unsigned int lines_bitmask, 00027 bool leave_remaining_lines) 00028 { 00029 xid_con_->clear_digital_output_lines( 00030 lines_bitmask, leave_remaining_lines); 00031 } 00032 00033 void cedrus::stim_tracker_t::set_pulse_duration(unsigned int duration) 00034 { 00035 union { 00036 unsigned int as_int; 00037 unsigned char as_char[8]; 00038 } dur; 00039 00040 dur.as_int = duration; 00041 00042 unsigned char command[10]; 00043 command[0] = 'm'; 00044 command[1] = 'p'; 00045 00046 for(int i = 2; i < 10; ++i) 00047 { 00048 command[i] = dur.as_char[i-2]; 00049 } 00050 00051 int written = 0; 00052 xid_con_->write( 00053 command, 00054 10, 00055 written); 00056 }