From 7d353b99719230c1f2117ca19cc4136aa8aada1d Mon Sep 17 00:00:00 2001 From: PhilDakin Date: Thu, 17 May 2018 12:05:18 -0400 Subject: [PATCH] Add files via upload --- OSC136H.m | 605 +++++++++++++++++++ OSCGUI.m | 267 +++++++++ config.bit | Bin 0 -> 464307 bytes example_config.txt | 40 ++ okFrontPanel.dll | Bin 0 -> 217600 bytes okFrontPanelDLL.h | 1433 ++++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 2345 insertions(+) create mode 100644 OSC136H.m create mode 100644 OSCGUI.m create mode 100644 config.bit create mode 100644 example_config.txt create mode 100644 okFrontPanel.dll create mode 100644 okFrontPanelDLL.h diff --git a/OSC136H.m b/OSC136H.m new file mode 100644 index 0000000..722ac96 --- /dev/null +++ b/OSC136H.m @@ -0,0 +1,605 @@ +classdef OSC136H < handle + % OSC136H Stimulation System + % Controller class for the OSC136H Stimulation System. + % Phil Dakin, 2018 @University of Michigan + % Note 1-indexing on function calls + + properties + % Channels is a (36, 3) matrix, row corresponds to an individual + % channel, columns are (pipe_in wf, trigger select, on_fpga wf) + % Pipe_In wf - not used in current iteration + % trigger select - 0 for PC trigger, 1 for external + % on_fpga wf - waveform selector for generated wf 1:4 are options + Channels + + % Waveforms is a (4, 4) matrix, row corresponds to an individual + % pre-programmed waveform, columns are (num_pulses, amp, pw, period) + % num_pulses - num_pulses sent on trigger + % amp - amplitude of wave + % pw - pulse width (describes duty cycle) + % period - frequency (ms) + Waveforms + + % OKFP Dev object for using the Opal Kelly FP Library + dev + + end + + methods(Static) + % MapChannel + % Maps a headstage number and channel number to a value in range + % [1, 36] that is used by the library to identify the proper + % communication locations to the OK FPGA. + % Returns -1 on error. + function chan = MapChannel(headstage_num, chan_num) + NUM_HEADSTAGES = 3; + CHANNELS_PER_HS = 12; + if chan_num <= 0 || chan_num > CHANNELS_PER_HS || floor(chan_num) ~= chan_num + fprintf('Invalid channel number.\n'); + chan = -1; + return + end + if headstage_num <= 0 || headstage_num > NUM_HEADSTAGES + fprintf('Invalid headstage number.\n'); + chan = -1; + return + end + chan = (NUM_HEADSTAGES - headstage_num ) * CHANNELS_PER_HS + chan_num; + end + + % GetChannelWireInfo + % Takes a channel identifier in range [1, 36] to the OK endpoint + % that contains the parameters for this channel. Also returns a + % value "begin" which represents the least significant bit of the + % channels parameter information, in the OK WireIn. + function [endpoint, begin] = GetChannelWireInfo(chan) + INDEX_OFFSET = 1; + CHANNELS_PER_WIRE = 4; + INITIAL_WIRE_ENDPOINT = hex2dec('09'); + PARAMETER_BITS = 4; + + wire_offset = floor((chan - INDEX_OFFSET) / CHANNELS_PER_WIRE); + endpoint = INITIAL_WIRE_ENDPOINT + wire_offset; + in_wire_offset = mod(chan - INDEX_OFFSET, CHANNELS_PER_WIRE); + begin = PARAMETER_BITS * in_wire_offset; + end + + function [endpoint_a, endpoint_b] = GetWaveformWireInfo(wf) + INITIAL_WF_WIRE = hex2dec('01'); + WF_OFFSET = 1; + WIRES_PER_WF = 2; + endpoint_a = INITIAL_WF_WIRE + (wf - WF_OFFSET) * WIRES_PER_WF; + endpoint_b = endpoint_a + 1; + end + end + + methods + % OSC136H Constructor + % Initializes the channel and waveform information to all zeroes. + % Also loads the OK library, and constructs a dev object that will + % be used for all library interactions with FrontPanel. + function obj = OSC136H() + if ~libisloaded('okFrontPanel') + loadlibrary('okFrontPanel', 'okFrontPanelDLL.h'); + end + % Initialize a new OSC136H object + obj.Channels = zeros(36, 3); + obj.Waveforms = zeros(4, 4); + obj.dev = calllib('okFrontPanel', 'okFrontPanel_Construct'); + fprintf('Successfully loaded okFrontPanel.\n'); + end + + % OSC136H Destructor + % Disconnects from the board to prevent connection issues when + % using multiple instances of the classes. + function delete(this) + this.Disconnect() + end + + % isOpen + % Checks if we are currently connected to a board. + function open = isOpen(this) + open = calllib('okFrontPanel', 'okFrontPanel_IsOpen', this.dev); + end + + % OutputWireInVal + % Reads the value at a given WireIn endpoint using FP and outputs + % the 16-bit wire. Useful for checking whether updates worked + % correctly. + function OutputWireInVal(this, endpoint) + WIREIN_SIZE = 16; + buf = libpointer('uint32Ptr', 10); + calllib('okFrontPanel', 'okFrontPanel_GetWireInValue', this.dev, endpoint, buf); + fprintf('WireIn %d: ', endpoint); + fprintf(dec2bin(get(buf, 'Value'), WIREIN_SIZE)); + fprintf('\n'); + end + + % WriteToWireIn + % Takes an OK FP WireIn endpoint, a beginning bit, a write length, + % and a value. Writes the first write_length bits of value into the + % WireIn specified by endpoint, starting at the location begin. + function WriteToWireIn(this, endpoint, begin, write_length, value) + % Mask constructed to isolate desired bits. + mask = (2 ^ write_length) - 1; + shifter = begin; + mask = bitshift(mask, shifter); + val = bitshift(bitor(0, value), shifter); + calllib('okFrontPanel', 'okFrontPanel_SetWireInValue', this.dev, endpoint, val, mask); + calllib('okFrontPanel', 'okFrontPanel_UpdateWireIns', this.dev); + end + + % Disconnect + % Attempts to disconnect a connected OK FPGA. + function ec = Disconnect(this) + if ~this.isOpen() + fprintf('No open board to disconnect!\n'); + ec = 0; + return + end + calllib('okFrontPanel', 'okFrontPanel_Close', this.dev); + if this.isOpen() + fprintf('Failed to close board\n') + ec = -1; + return + end + fprintf('Successfully closed board\n') + ec = 0; + end + + % Configure + % Takes a filename as a path to the bitfile, and loads it onto the + % FPGA. The desired bitfile is titled 'config.bit'. + function Configure(this, filename) + ec = calllib('okFrontPanel', 'okFrontPanel_ConfigureFPGA', this.dev, filename); + if ec ~= "ok_NoError" + ec + fprintf('Error loading bitfile\n') + return + end + fprintf("Succesfully loaded bitfile\n"); + + pll = calllib('okFrontPanel', 'okPLL22150_Construct'); + calllib('okFrontPanel', 'okPLL22150_SetReference', pll, 48.0, 0); + calllib('okFrontPanel', 'okPLL22150_SetVCOParameters', pll, 512, 125); + + calllib('okFrontPanel', 'okPLL22150_SetDiv1', pll, 'ok_DivSrc_VCO', 15); + calllib('okFrontPanel', 'okPLL22150_SetDiv2', pll, 'ok_DivSrc_VCO', 8); + + calllib('okFrontPanel', 'okPLL22150_SetOutputSource', pll, 0, 'ok_ClkSrc22150_Div1ByN'); + calllib('okFrontPanel', 'okPLL22150_SetOutputEnable', pll, 0, 1); + + calllib('okFrontPanel', 'okPLL22150_SetOutputSource', pll, 1, 'ok_ClkSrc22150_Div2ByN'); + calllib('okFrontPanel', 'okPLL22150_SetOutputEnable', pll, 1, 1); + + calllib('okFrontPanel', 'okFrontPanel_SetPLL22150Configuration', this.dev, pll); + end + + % Connect + % Connects the board to the first openly available FPGA. + function ec = Connect(this, serial) + % For now, all this function does is connect to the first + % available board. + this.dev = calllib('okFrontPanel', 'okFrontPanel_Construct'); + calllib('okFrontPanel', 'okFrontPanel_OpenBySerial', this.dev, serial); + open = calllib('okFrontPanel', 'okFrontPanel_IsOpen', this.dev); + if ~open + fprintf('Failed to open board\n') + ec = -1; + return + end + this.SysReset(); + fprintf('Successfully opened board\n') + ec = 0; + end + + % OutputBoardState + % Outputs all possible board paramaters in readable format. + function OutputBoardState(this) + fprintf('Outputting OSC136H Board State\n') + counter = 1; + + for hs = 1:3 + for chan = 1:12 + fprintf('Headstage %d Channel %d ', hs, chan); + fprintf('pipe_wf %d trigger select %d wf %d\n', this.Channels(counter, 1),... + this.Channels(counter, 2), this.Channels(counter, 3)); + counter = counter + 1; + end + end + totWaveforms = 4; + for wave = 1:totWaveforms + fprintf('Wave %d num_pulses %d amp(uA) %d pulse_width(ms) %d period(ms) %d', wave, this.Waveforms(wave, 1),... + this.Waveforms(wave, 2), this.Waveforms(wave, 3), this.Waveforms(wave, 4)); + fprintf('\n') + end + end + + % InitBoardFromConfigFile + % Takes no arguments, initializes board from config.txt. + function InitBoardFromConfigFile(this, filename) + fprintf('Initializing board state from %s\n', filename) + fd = fopen(filename, 'r'); + if fd == -1 + fprintf('Error opening config file.\n'); + return + end + this.Channels = fscanf(fd, '%f', size(this.Channels.')); + this.Waveforms = fscanf(fd, '%f', size(this.Waveforms.')); + this.Channels = this.Channels.'; + this.Waveforms = this.Waveforms.'; + fclose(fd); + + NUM_HS = 3; + NUM_CHANNELS = 12; + counter = 1; + for hs = 1:NUM_HS + for chan = 1:NUM_CHANNELS + this.UpdateChannelParams(hs, chan, this.Channels(counter, 2), this.Channels(counter, 3)); + counter = counter + 1; + end + end + for wf = 1:4 + this.UpdateWaveformParams(wf, this.Waveforms(wf, 1),... + this.Waveforms(wf, 2), this.Waveforms(wf, 3), this.Waveforms(wf, 4)); + end + end + + % Saves State of Board to Config File with name Filename + function SaveBoardToConfigFile(this, filename) + fprintf('Writing board configuration to file %s\n', filename); + fd = fopen(filename, 'w'); + fprintf(fd, '%f %f %f\n', this.Channels.'); + fprintf(fd, '%f %f %f %f\n', this.Waveforms.'); + + end + + % Gets list of serial numbers for all connected boards + function serials = GetBoardSerials(this) + serials = 'No connected devices'; + device_count = calllib('okFrontPanel', 'okFrontPanel_GetDeviceCount', this.dev); + for d = 0:(device_count - 1) + sn = calllib('okFrontPanel', 'okFrontPanel_GetDeviceListSerial', this.dev, d, ''); + if ~exist('snlist', 'var') + snlist = sn; + else + snlist = char(snlist, sn); + end + end + if exist('snlist', 'var') + serials = snlist; + end + end + + % TriggerChannel + % Triggers a specific headstage channel. + function TriggerChannel(this, headstage, chan) + if ~this.isOpen() + fprintf('Board not connected\n') + return + end + chan_num = this.MapChannel(headstage, chan); + if chan_num == -1 + return + end + INITIAL_ENDPOINT = hex2dec('40'); + CHANNELS_PER_TRIG = 16; + INDEX_OFFSET = 1; + + endpoint = INITIAL_ENDPOINT + floor(chan_num / CHANNELS_PER_TRIG); + bit = mod(chan_num - INDEX_OFFSET, CHANNELS_PER_TRIG); % matlab one indexed + ec = calllib('okFrontPanel', 'okFrontPanel_ActivateTriggerIn', this.dev, endpoint, bit); + if ec ~= "ok_NoError" + fprintf('Error triggering channel\n') + return + end + fprintf("Triggered channel %d hs %d\n", chan, headstage); + end + + % Channel Update Functions + % Each of these functions is used to update the parameters of an + % individual channel. There are three functions that update the 3 + % individual parameters, and one function that can be used to + % update all three parameters. + function ec = UpdateChannelTriggerType(this, headstage, chan, trig) + if ~this.isOpen() + fprintf('Board not open\n') + ec = -1; + return + end + if trig ~= 0 && trig ~= 1 + fprintf('Valid arguments to trig_select are 1 and 0. Error.\n'); + ec = -1; + return + end + + chan_num = this.MapChannel(headstage, chan); + if chan_num == -1 + ec = -1; + return + end + PARAM_SIZE = 1; % One bit of trig information. + PARAM_OFFSET = 2; % 2 bits of offset for param location. + + [endpoint, begin] = this.GetChannelWireInfo(chan_num); + this.OutputWireInVal(endpoint); + this.WriteToWireIn(endpoint, begin + PARAM_OFFSET, PARAM_SIZE, trig); + this.OutputWireInVal(endpoint); + this.Channels((headstage - 1) * 12 + chan, 2) = trig; + ec = 0; + end + + function ec = UpdateChannelPipeWf(this, headstage, chan, pipe_wf) + if ~this.isOpen() + fprintf('Board not open\n') + ec = -1; + return + end + % Check for boolean nature of pipe_wf. + if pipe_wf ~= 0 && pipe_wf ~= 1 + fprintf('Valid arguments to pipe_wf are 1 and 0. Error.\n'); + ec = -1; + return + end + + chan_num = this.MapChannel(headstage, chan); + if chan_num == -1 + ec = -1; + return + end + PARAM_SIZE = 1; % One bit of PipeWf information. + PARAM_OFFSET = 3; % 3 bits of offset for param location. + + [endpoint, begin] = this.GetChannelWireInfo(chan_num); + this.OutputWireInVal(endpoint); + this.WriteToWireIn(endpoint, begin + PARAM_OFFSET, PARAM_SIZE, pipe_wf); + this.OutputWireInVal(endpoint); + this.Channels((headstage - 1) * 12 + chan, 1) = pipe_wf; + ec = 0; + end + + function ec = UpdateChannelWaveform(this, headstage, chan, wf) + if ~this.isOpen() + fprintf('Board not open\n') + ec = -1; + return + end + if wf <= 0 || wf > 4 + fprintf('Valid fpga_wf in range [1, 4]. Error.\n'); + ec = 1; + return + end + + chan_num = this.MapChannel(headstage, chan); + if chan_num == -1 + ec = -1; + return + end + PARAM_SIZE = 2; % Two bits of waveform selector. + PARAM_OFFSET = 0; % 0 bits of offset for param location. + WF_IDX_OFFSET = 1; + + [endpoint, begin] = this.GetChannelWireInfo(chan_num); + this.OutputWireInVal(endpoint); + this.WriteToWireIn(endpoint, begin + PARAM_OFFSET, PARAM_SIZE, wf - WF_IDX_OFFSET); + this.OutputWireInVal(endpoint); + this.Channels((headstage - 1) * 12 + chan, 3) = wf; + ec = 0; + end + + function UpdateChannelParams(this, headstage, chan, trig_select, fpga_wf) + pipe_wf = 0; + if this.UpdateChannelTriggerType(headstage, chan, trig_select) == -1 + return + elseif this.UpdateChannelWaveform(headstage, chan, fpga_wf) == -1 + return + elseif this.UpdateChannelPipeWf(headstage, chan, pipe_wf) == -1 + return + else + fprintf('Succesfully updated channel parameters.\n'); + end + end + + % Waveform Update Functions + % Each of these functions is used to update the parameters of an + % individual waveform. + + % Sets number of pulses in the waveform + function ec = UpdateWaveformPulses(this, wf_num, num_pulses) + if ~this.isOpen() + fprintf('Board not open\n') + ec = -1; + return + end + if wf_num <= 0 || wf_num > 4 + fprintf('Invalid waveform selector. Error.\n'); + ec = -1; + return + end + if num_pulses < 0 || num_pulses > 63 + fprintf('Invalid num_pulses. Valid range [0, 63].\n'); + ec = -1; + return + end + + [~, endpoint_b] = this.GetWaveformWireInfo(wf_num); + this.OutputWireInVal(endpoint_b); + + PARAM_OFFSET = 10; + PARAM_SIZE = 6; + this.WriteToWireIn(endpoint_b, PARAM_OFFSET, PARAM_SIZE, num_pulses); + this.OutputWireInVal(endpoint_b); + this.Waveforms(wf_num, 1) = num_pulses; + ec = 0; + + end + + % Sets waveform amplitude in uA + function ec = UpdateWaveformAmplitude(this, wf_num, amp) + if ~this.isOpen() + fprintf('Board not open\n') + ec = -1; + return + end + if wf_num <= 0 || wf_num > 4 + fprintf('Invalid waveform selector. Error.\n'); + ec = -1; + return + end + if amp < 0 || amp > 1023 + fprintf('Invalid amplitude. Valid range [0, 1023].\n'); + ec = -1; + return + end + [~, endpoint_b] = this.GetWaveformWireInfo(wf_num); + this.OutputWireInVal(endpoint_b); + PARAM_OFFSET = 0; + PARAM_SIZE = 10; + this.WriteToWireIn(endpoint_b, PARAM_OFFSET, PARAM_SIZE, amp); + this.OutputWireInVal(endpoint_b); + this.Waveforms(wf_num, 2) = amp; + ec = 0; + end + + % Sets waveform pulse width in mS + function ec = UpdateWaveformPulseWidth(this, wf_num, pw) + if ~this.isOpen() + fprintf('Board not open\n') + ec = -1; + return + end + if wf_num <= 0 || wf_num > 4 + fprintf('Invalid waveform selector. Error.\n'); + ec = -1; + return + end + PULSE_WIDTH_STEP = 2.5; %ms + pw_val = pw / PULSE_WIDTH_STEP; + + if floor(pw_val) ~= pw_val + fprintf('Please enter pulse width as a multiple of 2.5.\n'); + ec = -1; + return + end + if pw_val < 0 || pw_val > 255 + fprintf('Pulse width out of range.\n'); + ec = -1; + return + end + [endpoint_a, ~] = this.GetWaveformWireInfo(wf_num); + + this.OutputWireInVal(endpoint_a); + PARAM_OFFSET = 8; + PARAM_SIZE = 8; + this.WriteToWireIn(endpoint_a, PARAM_OFFSET, PARAM_SIZE, pw_val); + this.OutputWireInVal(endpoint_a); + this.Waveforms(wf_num, 3) = pw; + ec = 0; + end + + % Sets waveform period in mS + function ec = UpdateWaveformPeriod(this, wf_num, period) + if ~this.isOpen() + fprintf('Board not open\n') + ec = -1; + return + end + if wf_num <= 0 || wf_num > 4 + fprintf('Invalid waveform selector. Error.\n'); + ec = -1; + return + end + PERIOD_STEP = 5; %ms + period_val = period / PERIOD_STEP; + if floor(period_val) ~= period_val + fprintf('Please enter pulse width as a multiple of 2.5, period as a multiple of 5. \n'); + ec = -1; + return + end + if period_val < 0 || period_val > 255 + fprintf('Period value out of range.\n'); + ec = -1; + return + end + [endpoint_a, ~] = this.GetWaveformWireInfo(wf_num); + + this.OutputWireInVal(endpoint_a); + PARAM_OFFSET = 0; + PARAM_SIZE = 8; + this.WriteToWireIn(endpoint_a, PARAM_OFFSET, PARAM_SIZE, period_val); + this.OutputWireInVal(endpoint_a); + this.Waveforms(wf_num, 4) = period; + ec = 0; + end + + function UpdateWaveformParams(this, wf_num, num_pulses, amp, pw, period) + % wf_num is one indexed in software, valid range is [1,4]. + + if this.UpdateWaveformPulses(wf_num, num_pulses) == -1 + return + elseif this.UpdateWaveformAmplitude(wf_num, amp) == -1 + return + elseif this.UpdateWaveformPulseWidth(wf_num, pw) == -1 + return + elseif this.UpdateWaveformPeriod(wf_num, period) == -1 + return + else + fprintf('Succesfully updated waveform parameters.\n'); + end + end + + % Reset the electronics, as well as setting all parameters to 0. + function ec = SysReset(this) + ec = 0; + open = calllib('okFrontPanel', 'okFrontPanel_IsOpen', this.dev); + if ~open + fprintf('Failed to open board\n') + ec = -1; + return + end + + fprintf('Reseting system to default state\n') + this.Channels = zeros(36, 3); + this.Waveforms = zeros(4, 4); + calllib('okFrontPanel', 'okFrontPanel_SetWireInValue', this.dev, hex2dec('00'), 1, 1); + calllib('okFrontPanel', 'okFrontPanel_UpdateWireIns', this.dev); + calllib('okFrontPanel', 'okFrontPanel_SetWireInValue', this.dev, hex2dec('00'), 0, 1); + calllib('okFrontPanel', 'okFrontPanel_UpdateWireIns', this.dev); + for head = 1:3 + for chan = 1:12 + this.UpdateChannelParams(head, chan, 0, 1); + this.ToggleContinuous(head, chan, 0); + end + end + fprintf('\n'); + for wf = 1:4 + this.UpdateWaveformParams(wf, 0, 0, 0, 0); + end + end + + % Toggle continuous streaming for an individual channel. + function ToggleContinuous(this, headstage, chan, toggle) + if ~this.isOpen() + fprintf('Board not open\n') + return + end + + chan_num = this.MapChannel(headstage, chan); + if chan_num == -1 + return + end + offset = floor((chan_num - 1) / 16); + endpoint = hex2dec('12') + offset; + in_wire_offset = mod((chan_num -1), 16); + + this.OutputWireInVal(endpoint); + + calllib('okFrontPanel', 'okFrontPanel_SetWireInValue', this.dev, endpoint, bitshift(toggle, in_wire_offset), bitshift(1, in_wire_offset)); + calllib('okFrontPanel', 'okFrontPanel_UpdateWireIns', this.dev); + + this.OutputWireInVal(endpoint); + + end + end +end + diff --git a/OSCGUI.m b/OSCGUI.m new file mode 100644 index 0000000..41547e1 --- /dev/null +++ b/OSCGUI.m @@ -0,0 +1,267 @@ +classdef OSCGUI < handle + + properties + os + f + + serial_selector + + Channel_WF_selectors + Channel_Trig_selectors + + WF_pulse_selectors + WF_period_selectors + WF_amp_selectors + WF_pw_selectors + end + + methods + function obj = OSCGUI() + obj.f = figure('Name', 'OSC136H Stim Control', 'NumberTitle', 'off', 'Visible','off','Units', 'characters', 'Position',[0 0 400 80]); + set(obj.f, 'MenuBar', 'none'); + set(obj.f, 'ToolBar', 'none'); + + obj.os = OSC136H(); + + obj.Channel_WF_selectors = zeros(3, 12); + obj.Channel_Trig_selectors = zeros(3, 12); + + obj.WF_pulse_selectors = zeros(4, 1); + obj.WF_period_selectors = zeros(4, 1); + obj.WF_amp_selectors = zeros(4, 1); + obj.WF_pw_selectors = zeros(4, 1); + + obj.CreateSetup(); + obj.CreateHeadstagePanels(); + obj.CreateWaveformPanels(); + obj.f.Visible = 'on'; + end + + function CreateHeadstagePanels(this) + for hs = 1:3 + hs_panel = uipanel('Title', strcat("Headstage ", num2str(hs)), 'FontUnits', 'normalized', 'FontSize', (1/14), 'BackgroundColor', 'white', 'Units', 'normalized',... + 'Position', [.4 .7 - (.05 + ((hs - 1) * .3)) .55 .3]); + this.PopulateHeadstagePanel(hs_panel, hs); + end + end + + function PopulateHeadstagePanel(this, parent, hs) + for chan = 1:12 + uicontrol('Style', 'text', 'String', strcat('Shank ', num2str(ceil(chan / 3)), ' LED ', num2str(mod(chan - 1, 3) + 1)), 'Units', 'normalized', 'Parent',... + parent, 'Position', [.0 .90 - (chan - 1) * (1/13) .1 1/13], 'Background', 'white'); + this.Channel_WF_selectors(hs, chan) = uicontrol('Style', 'popupmenu', 'String', {'Waveform 1', 'Waveform 2', 'Waveform 3', 'Waveform 4'}, 'Units', 'normalized', 'Parent',... + parent, 'Position', [.1 .90 - (chan - 1) * (1/13) .2 1/13], 'Background', 'white', 'UserData', struct('hs', hs, 'chan', chan), 'Callback', @this.WFSelectorCB); + this.Channel_Trig_selectors(hs, chan)= uicontrol('Style', 'popupmenu', 'String', {'PC Trigger', 'External Trigger'}, 'Units', 'normalized', 'Parent',... + parent, 'Position', [.3 .90 - (chan - 1) * (1/13) .2 1/13], 'Background', 'white', 'UserData', struct('hs', hs, 'chan', chan), 'UserData', struct('hs', hs, 'chan', chan),... + 'Callback', @this.TrigSelectorCB); + uicontrol('Style', 'togglebutton', 'String', 'Continuous Stream', 'Units', 'normalized', 'Parent', parent, 'UserData', struct('hs', hs, 'chan', chan),... + 'Position', [.5 .90 - (chan - 1) * (1/13) .25 1/13], 'Background', 'y', 'UserData', struct('hs', hs, 'chan', chan), 'Callback', @this.ContinuousButtonCB); + uicontrol('Style', 'pushbutton', 'String', ['Trigger Channel ', num2str(chan)], 'Units', 'normalized', 'Callback', @this.TriggerCallback, 'Parent',... + parent, 'Position', [.75 .90 - (chan - 1) * (1/13) .25 1/13], 'UserData', struct('Headstage', hs, 'Channel', chan)); + end + end + + function WFSelectorCB(this, source, eventdata) + this.os.UpdateChannelWaveform(source.UserData.hs, source.UserData.chan, get(source, 'Value')); + end + + function TrigSelectorCB(this, source, eventdata) + this.os.UpdateChannelTriggerType(source.UserData.hs, source.UserData.chan, get(source, 'Value') - 1); + end + + function ContinuousButtonCB(this, source, eventdata) + state = get(source, 'Value'); + if state == get(source, 'Max') + this.os.ToggleContinuous(source.UserData.hs, source.UserData.chan, 1); + set(source, 'Background', 'g'); + else + this.os.ToggleContinuous(source.UserData.hs, source.UserData.chan, 0); + set(source, 'Background', 'y'); + end + end + + function CreateSetup(this) + setup_panel = uipanel('Title', 'Setup', 'FontSize', 12, 'BackgroundColor', 'white', 'Units', 'normalized',... + 'Position', [.05 .78 .34 .17]); + hbutton = uicontrol('Style','pushbutton','String','Connect','Units', 'normalized', 'Position',[.55 .65 .4 .3],'Callback',@this.ConnectCallback, 'Parent', setup_panel); + align(hbutton,'Center','None'); + config_button = uicontrol('Style','pushbutton','String','Configure','Units', 'normalized', 'Position',[.05 .05 .30 .45],'Callback',@this.ConfigCallback, 'Parent', setup_panel); + align(config_button,'Center','None'); + load_parameter_button = uicontrol('Style','pushbutton','String','Load Parameters from File','Units', 'normalized', 'Position',[.35 .05 .30 .45],... + 'Callback',@this.LoadParameterCallback, 'Parent', setup_panel); + align(load_parameter_button,'Center','None'); + save_parameter_button = uicontrol('Style','pushbutton','String','Save Parameters To File','Units', 'normalized', 'Position',[.65 .05 .30 .45],... + 'Callback',@this.SaveParameterCallback, 'Parent', setup_panel); + align(save_parameter_button,'Center','None'); + this.serial_selector = uicontrol('Style', 'popupmenu', 'String', this.os.GetBoardSerials(), 'Units', 'normalized', 'Parent',... + setup_panel, 'Position', [.05 .65 .4 .2], 'Background', 'white'); + uicontrol('Style', 'text', 'String', 'Select your OSC136H Opal Kelly Serial', 'Units', 'normalized', 'Parent',... + setup_panel, 'Position', [.05, .90, .4, .1], 'Background' , 'White') + + reset = uicontrol('Style','pushbutton','String','Reset','Units', 'normalized', 'Position',[.05 .05 .1 .05],'Callback',@this.ResetCallback, 'Background', 'r'); + align(reset,'Center','None'); + end + + function ResetCallback(this, source, eventdata) + ec = this.os.SysReset(); + if ec == 0 + this.UpdateParamDisplay(); + end + end + + function SaveParameterCallback(this, source, eventdata) + [filename, path] = uiputfile('*.txt', 'Name Configuration File to Save'); + if ~isequal(filename, 0) + this.os.SaveBoardToConfigFile(strcat(path, filename)); + end + + end + function LoadParameterCallback(this, source, eventdata) + [config_file, path] = uigetfile('*.txt', 'Select configuration txt file'); + if ~isequal(config_file, 0) + this.os.InitBoardFromConfigFile(strcat(path, config_file)); + this.UpdateParamDisplay(); + end + end + + function UpdateParamDisplay(this) + for hs = 1:3 + for chan = 1:12 + set(this.Channel_WF_selectors(hs,chan), 'Value', this.os.Channels((hs-1) * 12 + chan, 3)); + set(this.Channel_Trig_selectors(hs,chan), 'Value', this.os.Channels((hs-1) * 12 + chan, 2) + 1); + end + end + for wf = 1:4 + set(this.WF_pulse_selectors(wf), 'String', num2str(this.os.Waveforms(wf, 1))); + set(this.WF_amp_selectors(wf), 'String', num2str(this.os.Waveforms(wf, 2))); + set(this.WF_pw_selectors(wf), 'String', num2str(this.os.Waveforms(wf, 3))); + set(this.WF_period_selectors(wf), 'String', num2str(this.os.Waveforms(wf, 4))); + end + end + + function ConfigCallback(this, source, eventdata) + [bitfile, path] = uigetfile('*.bit', 'Select the control bitfile'); + if ~isequal(bitfile, 0) + this.os.Configure(strcat(path, bitfile)); + end + end + function CreateWaveformPanels(this) + for wf = 1:4 + wf_panel = uipanel('Title', strcat("Waveform ", num2str(wf)), 'FontSize', 12, 'BackgroundColor', 'white', 'Units', 'normalized',... + 'Position', [.05 .60 - ((wf -1) * .15) .34 .15]); + this.PopulateWaveformPanels(wf_panel, wf); + end + end + + function PopulateWaveformPanels(this, parent, wf) + uicontrol('Style', 'text', 'String', 'Number of Pulses', 'Units', 'normalized', 'Parent',... + parent, 'Position', [.1 .75 .2 .2], 'Background', 'white'); + uicontrol('Style', 'text', 'String', 'Amplitude (uA)', 'Units', 'normalized', 'Parent',... + parent, 'Position', [.6 .75 .2 .2], 'Background', 'white'); + uicontrol('Style', 'text', 'String', 'Pulse Width(ms)', 'Units', 'normalized', 'Parent',... + parent, 'Position', [.1 .25 .2 .2], 'Background', 'white'); + uicontrol('Style', 'text', 'String', 'Period(ms)', 'Units', 'normalized', 'Parent',... + parent, 'Position', [.6 .25 .2 .2], 'Background', 'white'); + + this.WF_pulse_selectors(wf) = uicontrol('Style', 'edit', 'String', '0', 'Units', 'normalized', 'Parent',... + parent, 'Position', [.1 .55 .2 .2], 'Background', 'white', 'UserData', struct('wf', wf), 'Callback', @this.PulseSelectCB); + this.WF_amp_selectors(wf) = uicontrol('Style', 'edit', 'String', '0', 'Units', 'normalized', 'Parent',... + parent, 'Position', [.6 .55 .2 .2], 'Background', 'white', 'UserData', struct('wf', wf), 'Callback', @this.AmpSelectCB); + this.WF_pw_selectors(wf) = uicontrol('Style', 'edit', 'String', '0', 'Units', 'normalized', 'Parent',... + parent, 'Position', [.1 .05 .2 .2], 'Background', 'white', 'UserData', struct('wf', wf), 'Callback', @this.PWSelectCB); + this.WF_period_selectors(wf) = uicontrol('Style', 'edit', 'String', '0', 'Units', 'normalized', 'Parent',... + parent, 'Position', [.6 .05 .2 .2], 'Background', 'white', 'UserData', struct('wf', wf), 'Callback', @this.PeriodSelectCB); + end + + function PulseSelectCB(this, source, eventdata) + ec = 0; + val = get(source, 'String'); + num = str2double(val); + if ~isnan(num) + ec = this.os.UpdateWaveformPulses(source.UserData.wf, num); + end + if isnan(num) + errordlg('Please enter only numeric values for number of pulses.', 'Type Error'); + this.UpdateParamDisplay(); + end + if ec == -1 + errordlg('Invalid value for num pulses, valid values integers in range 0 to 63', 'Num Pulses Range Error'); + this.UpdateParamDisplay(); + end + end + + function AmpSelectCB(this, source, eventdata) + ec = 0; + val = get(source, 'String'); + num = str2double(val); + if ~isnan(num) + ec = this.os.UpdateWaveformAmplitude(source.UserData.wf, num); + end + if isnan(num) + errordlg('Please enter only numeric values for amplitude.', 'Type Error'); + this.UpdateParamDisplay(); + end + if ec == -1 + errordlg('Invalid value for amplitude, valid values integers in range 0 to 1023 uA', 'Amplitude Range Error'); + this.UpdateParamDisplay(); + end + end + + function PWSelectCB(this,source, eventdata) + ec = 0; + val = get(source, 'String'); + num = str2double(val); + if ~isnan(num) + ec = this.os.UpdateWaveformPulseWidth(source.UserData.wf, num); + end + if isnan(num) + errordlg('Please enter only numeric values for pulse width.', 'Type Error'); + this.UpdateParamDisplay(); + end + if ec == -1 + errordlg('Invalid value for pulse width, valid values multiples of 2.5 in range 0 to 637.5 ms', 'Pulse Width Range Error'); + this.UpdateParamDisplay(); + end + end + + function PeriodSelectCB(this, source, eventdata) + ec = 0; + val = get(source, 'String'); + num = str2double(val); + if ~isnan(num) + ec = this.os.UpdateWaveformPeriod(source.UserData.wf, num); + end + if ec == -1 + errordlg('Invalid value for period, valid values multiples of 5 in range 0 to 1275 ms', 'Period Range Error'); + this.UpdateParamDisplay(); + end + if isnan(num) + errordlg('Please enter only numeric values for period.', 'Type Error'); + this.UpdateParamDisplay(); + end + end + + function TriggerCallback(this, source, eventdata) + this.os.TriggerChannel(source.UserData.Headstage, source.UserData.Channel) + end + + function ConnectCallback(this, source, eventdata) + if source.String == "Connect" + contents = get(this.serial_selector, 'String'); + serial_string = contents(get(this.serial_selector, 'Value'),:); + ec = this.os.Connect(serial_string); + if ec == 0 + set(source, 'String', 'Disconnect'); + end + else + ec = this.os.Disconnect(); + if ec == 0 + set(source, 'String', 'Connect'); + end + end + end + + + + end +end \ No newline at end of file diff --git a/config.bit b/config.bit new file mode 100644 index 0000000000000000000000000000000000000000..5bcea4204b2f421c88e5a1d259e23462a4d42c76 GIT binary patch literal 464307 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 B!esye literal 0 HcmV?d00001 diff --git a/okFrontPanelDLL.h b/okFrontPanelDLL.h new file mode 100644 index 0000000..aa91b1c --- /dev/null +++ b/okFrontPanelDLL.h @@ -0,0 +1,1433 @@ +///------------------------------------------------------------------------ +// okFrontPanelDLL.h +// +// This is the header file for C/C++ compilation of the FrontPanel DLL +// import library. This file must be included within any C/C++ source +// which references the FrontPanel DLL methods. +// +//------------------------------------------------------------------------ +// Copyright (c) 2005-2010 Opal Kelly Incorporated +// $Rev$ $Date$ +//------------------------------------------------------------------------ + +#ifndef __okFrontPanelDLL_h__ +#define __okFrontPanelDLL_h__ + +// The following ifdef block is the standard way of creating macros which make exporting +// from a DLL simpler. All files within this DLL are compiled with the FRONTPANELDLL_EXPORTS +// symbol defined on the command line. This symbol should not be defined on any project +// that uses this DLL. +#if defined(_WIN32) + #ifdef FRONTPANELDLL_EXPORTS + #define okDLLEXPORT __declspec(dllexport) + #else + #define okDLLEXPORT __declspec(dllimport) + + #ifdef _MSC_VER + #pragma comment(lib, "okFrontPanel") + + // If the user code delay loads this DLL, we provide a way to + // verify if loading it during run-time succeeded. Predefine + // okNO_DELAY_LOAD_FRONTPANEL to completely disable this code. + #ifndef okNO_DELAY_LOAD_FRONTPANEL + #define okDELAY_LOAD_FRONTPANEL + #endif + + #ifdef okDELAY_LOAD_FRONTPANEL + #include + #include + + // Exception filter used for handling exceptions thrown by MSVC + // CRT when delay-loading DLLs. + inline + LONG WINAPI ok_DelayLoadDllExceptionFilter(PEXCEPTION_POINTERS pExcPointers) + { + switch (pExcPointers->ExceptionRecord->ExceptionCode) { + case 0xc06d007e: // FACILITY_VISUALCPP ERROR_MOD_NOT_FOUND + case 0xc06d007f: // FACILITY_VISUALCPP ERROR_PROC_NOT_FOUND + return EXCEPTION_EXECUTE_HANDLER; + } + + return EXCEPTION_CONTINUE_SEARCH; + } + #endif + #endif + #endif + #define DLL_ENTRY __stdcall + typedef unsigned int UINT32; + typedef unsigned char UINT8; +#elif defined(__linux__) || defined(__APPLE__) || defined(__QNX__) + #define okDLLEXPORT __attribute__ ((visibility("default"))) + #define DLL_ENTRY + typedef unsigned int UINT32; + typedef unsigned char UINT8; +#endif + + +#if defined(_WIN32) && defined(_UNICODE) + typedef wchar_t const * okFP_dll_pchar; +#elif defined(_WIN32) + typedef const char * okFP_dll_pchar; +#else + typedef const char * okFP_dll_pchar; +#endif + +#ifdef __cplusplus +#include +#include +#include +#include + +extern "C" { +#endif // __cplusplus + +typedef unsigned long okPLL22150_HANDLE; +typedef unsigned long okPLL22393_HANDLE; +typedef struct okDeviceSensorsHandle* okDeviceSensors_HANDLE; +typedef struct okDeviceSettingsHandle* okDeviceSettings_HANDLE; +typedef struct okFirmwareHandle* okFirmware_HANDLE; +typedef struct okFirmwarePackageHandle* okFirmwarePackage_HANDLE; +typedef unsigned long okFrontPanel_HANDLE; +typedef struct okFrontPanelManagerHandle* okFrontPanelManager_HANDLE; +typedef struct okCFrontPanelManagerHandle* okCFrontPanelManager_HANDLE; +typedef struct okCFrontPanelDevicesHandle* okCFrontPanelDevices_HANDLE; +typedef int Bool; +#ifdef __cplusplus + typedef bool okBool; +#else + typedef char okBool; +#endif + +#define MAX_SERIALNUMBER_LENGTH 10 // 10 characters + Does NOT include termination NULL. +#define MAX_DEVICEID_LENGTH 32 // 32 characters + Does NOT include termination NULL. +#define MAX_BOARDMODELSTRING_LENGTH 64 // 64 characters including termination NULL. + +#ifndef TRUE + #define TRUE 1 + #define FALSE 0 +#endif + +typedef enum { + ok_ClkSrc22150_Ref=0, + ok_ClkSrc22150_Div1ByN=1, + ok_ClkSrc22150_Div1By2=2, + ok_ClkSrc22150_Div1By3=3, + ok_ClkSrc22150_Div2ByN=4, + ok_ClkSrc22150_Div2By2=5, + ok_ClkSrc22150_Div2By4=6 +} ok_ClockSource_22150; + +typedef enum { + ok_ClkSrc22393_Ref=0, + ok_ClkSrc22393_PLL0_0=2, + ok_ClkSrc22393_PLL0_180=3, + ok_ClkSrc22393_PLL1_0=4, + ok_ClkSrc22393_PLL1_180=5, + ok_ClkSrc22393_PLL2_0=6, + ok_ClkSrc22393_PLL2_180=7 +} ok_ClockSource_22393; + +typedef enum { + ok_DivSrc_Ref = 0, + ok_DivSrc_VCO = 1 +} ok_DividerSource; + +typedef enum { + ok_brdUnknown = 0, + ok_brdXEM3001v1 = 1, + ok_brdXEM3001v2 = 2, + ok_brdXEM3010 = 3, + ok_brdXEM3005 = 4, + ok_brdXEM3001CL = 5, + ok_brdXEM3020 = 6, + ok_brdXEM3050 = 7, + ok_brdXEM9002 = 8, + ok_brdXEM3001RB = 9, + ok_brdXEM5010 = 10, + ok_brdXEM6110LX45 = 11, + ok_brdXEM6110LX150 = 15, + ok_brdXEM6001 = 12, + ok_brdXEM6010LX45 = 13, + ok_brdXEM6010LX150 = 14, + ok_brdXEM6006LX9 = 16, + ok_brdXEM6006LX16 = 17, + ok_brdXEM6006LX25 = 18, + ok_brdXEM5010LX110 = 19, + ok_brdZEM4310=20, + ok_brdXEM6310LX45=21, + ok_brdXEM6310LX150=22, + ok_brdXEM6110v2LX45=23, + ok_brdXEM6110v2LX150=24, + ok_brdXEM6002LX9=25, + ok_brdXEM6310MTLX45T=26, + ok_brdXEM6320LX130T=27, + ok_brdXEM7350K70T=28, + ok_brdXEM7350K160T=29, + ok_brdXEM7350K410T=30, + ok_brdXEM6310MTLX150T=31, + ok_brdZEM5305A2 = 32, + ok_brdZEM5305A7 = 33, + ok_brdXEM7001A15 = 34, + ok_brdXEM7001A35 = 35, + ok_brdXEM7360K160T = 36, + ok_brdXEM7360K410T = 37, + ok_brdZEM5310A4 = 38, + ok_brdZEM5310A7 = 39, + ok_brdZEM5370A5 = 40, + ok_brdXEM7010A50 = 41, + ok_brdXEM7010A200 = 42, + ok_brdXEM7310A75 = 43, + ok_brdXEM7310A200 = 44 +} ok_BoardModel; + +typedef enum { + ok_NoError = 0, + ok_Failed = -1, + ok_Timeout = -2, + ok_DoneNotHigh = -3, + ok_TransferError = -4, + ok_CommunicationError = -5, + ok_InvalidBitstream = -6, + ok_FileError = -7, + ok_DeviceNotOpen = -8, + ok_InvalidEndpoint = -9, + ok_InvalidBlockSize = -10, + ok_I2CRestrictedAddress = -11, + ok_I2CBitError = -12, + ok_I2CNack = -13, + ok_I2CUnknownStatus = -14, + ok_UnsupportedFeature = -15, + ok_FIFOUnderflow = -16, + ok_FIFOOverflow = -17, + ok_DataAlignmentError = -18, + ok_InvalidResetProfile = -19, + ok_InvalidParameter = -20 +} ok_ErrorCode; + +#ifndef FRONTPANELDLL_EXPORTS + +#define OK_MAX_DEVICEID_LENGTH (33) // 32-byte content + NULL termination +#define OK_MAX_SERIALNUMBER_LENGTH (11) // 10-byte content + NULL termination +#define OK_MAX_PRODUCT_NAME_LENGTH (128) // 127-byte content + NULL termination +#define OK_MAX_BOARD_MODEL_STRING_LENGTH (128) + +// ok_USBSpeed types +#define OK_USBSPEED_UNKNOWN (0) +#define OK_USBSPEED_FULL (1) +#define OK_USBSPEED_HIGH (2) +#define OK_USBSPEED_SUPER (3) + +// ok_Interface types +#define OK_INTERFACE_UNKNOWN (0) +#define OK_INTERFACE_USB2 (1) +#define OK_INTERFACE_PCIE (2) +#define OK_INTERFACE_USB3 (3) + +// ok_Product types +#define OK_PRODUCT_UNKNOWN (0) +#define OK_PRODUCT_XEM3001V1 (1) +#define OK_PRODUCT_XEM3001V2 (2) +#define OK_PRODUCT_XEM3010 (3) +#define OK_PRODUCT_XEM3005 (4) +#define OK_PRODUCT_XEM3001CL (5) +#define OK_PRODUCT_XEM3020 (6) +#define OK_PRODUCT_XEM3050 (7) +#define OK_PRODUCT_XEM9002 (8) +#define OK_PRODUCT_XEM3001RB (9) +#define OK_PRODUCT_XEM5010 (10) +#define OK_PRODUCT_XEM6110LX45 (11) +#define OK_PRODUCT_XEM6001 (12) +#define OK_PRODUCT_XEM6010LX45 (13) +#define OK_PRODUCT_XEM6010LX150 (14) +#define OK_PRODUCT_XEM6110LX150 (15) +#define OK_PRODUCT_XEM6006LX9 (16) +#define OK_PRODUCT_XEM6006LX16 (17) +#define OK_PRODUCT_XEM6006LX25 (18) +#define OK_PRODUCT_XEM5010LX110 (19) +#define OK_PRODUCT_ZEM4310 (20) +#define OK_PRODUCT_XEM6310LX45 (21) +#define OK_PRODUCT_XEM6310LX150 (22) +#define OK_PRODUCT_XEM6110V2LX45 (23) +#define OK_PRODUCT_XEM6110V2LX150 (24) +#define OK_PRODUCT_XEM6002LX9 (25) +#define OK_PRODUCT_XEM6310MTLX45T (26) +#define OK_PRODUCT_XEM6320LX130T (27) +#define OK_PRODUCT_XEM7350K70T (28) +#define OK_PRODUCT_XEM7350K160T (29) +#define OK_PRODUCT_XEM7350K410T (30) +#define OK_PRODUCT_XEM6310MTLX150T (31) +#define OK_PRODUCT_ZEM5305A2 (32) +#define OK_PRODUCT_ZEM5305A7 (33) +#define OK_PRODUCT_XEM7001A15 (34) +#define OK_PRODUCT_XEM7001A35 (35) +#define OK_PRODUCT_XEM7360K160T (36) +#define OK_PRODUCT_XEM7360K410T (37) +#define OK_PRODUCT_ZEM5310A4 (38) +#define OK_PRODUCT_ZEM5310A7 (39) +#define OK_PRODUCT_ZEM5370A5 (40) +#define OK_PRODUCT_XEM7010A50 (41) +#define OK_PRODUCT_XEM7010A200 (42) +#define OK_PRODUCT_XEM7310A75 (43) +#define OK_PRODUCT_XEM7310A200 (44) + +#define OK_PRODUCT_OEM_START 11000 + +#define OK_FPGACONFIGURATIONMETHOD_NVRAM (0) +#define OK_FPGACONFIGURATIONMETHOD_JTAG (1) +enum okEFPGAConfigurationMethod { + ok_FPGAConfigurationMethod_NVRAM = OK_FPGACONFIGURATIONMETHOD_NVRAM, + ok_FPGAConfigurationMethod_JTAG = OK_FPGACONFIGURATIONMETHOD_JTAG +}; + + +typedef struct { + UINT32 address; + UINT32 data; +} okTRegisterEntry; + +#ifdef __cplusplus +typedef std::vector okTRegisterEntries; +#endif // __cplusplus + +typedef struct { + UINT32 address; + UINT32 mask; +} okTTriggerEntry; + + +typedef struct { + // Magic number indicating the profile is valid. (4 byte = 0xBE097C3D) + UINT32 magic; + + // Location of the configuration file (Flash boot). (4 bytes) + UINT32 configFileLocation; + + // Length of the configuration file. (4 bytes) + UINT32 configFileLength; + + // Number of microseconds to wait after DONE goes high before + // starting the reset profile. (4 bytes) + UINT32 doneWaitUS; + + // Number of microseconds to wait after wires are updated + // before deasserting logic RESET. (4 bytes) + UINT32 resetWaitUS; + + // Number of microseconds to wait after RESET is deasserted + // before loading registers. (4 bytes) + UINT32 registerWaitUS; + + // Future expansion (112 bytes) + UINT32 padBytes1[28]; + + // Initial values of WireIns. These are loaded prior to + // deasserting logic RESET. (32*4 = 128 bytes) + UINT32 wireInValues[32]; + + // Number of valid Register Entries (4 bytes) + UINT32 registerEntryCount; + + // Initial register loads. (256*8 = 2048 bytes) + okTRegisterEntry registerEntries[256]; + + // Number of valid Trigger Entries (4 bytes) + UINT32 triggerEntryCount; + + // Initial trigger assertions. These are performed last. + // (32*8 = 256 bytes) + okTTriggerEntry triggerEntries[32]; + + // Padding to a 4096-byte size for future expansion + UINT8 padBytes2[1520]; +} okTFPGAResetProfile; + + +// Describes the layout of an available Flash memory on the device +typedef struct { + UINT32 sectorCount; + UINT32 sectorSize; + UINT32 pageSize; + UINT32 minUserSector; + UINT32 maxUserSector; +} okTFlashLayout; + + +typedef struct { + char deviceID[OK_MAX_DEVICEID_LENGTH]; + char serialNumber[OK_MAX_SERIALNUMBER_LENGTH]; + char productName[OK_MAX_BOARD_MODEL_STRING_LENGTH]; + int productID; + int deviceInterface; + int usbSpeed; + int deviceMajorVersion; + int deviceMinorVersion; + int hostInterfaceMajorVersion; + int hostInterfaceMinorVersion; + okBool isPLL22150Supported; + okBool isPLL22393Supported; + okBool isFrontPanelEnabled; + int wireWidth; + int triggerWidth; + int pipeWidth; + int registerAddressWidth; + int registerDataWidth; + + okTFlashLayout flashSystem; + okTFlashLayout flashFPGA; + + okBool hasFMCEEPROM; + okBool hasResetProfiles; +} okTDeviceInfo; + + +typedef struct { + char productName[OK_MAX_PRODUCT_NAME_LENGTH]; + int productBaseID; + int productID; + UINT32 usbVID; + UINT32 usbPID; + UINT32 pciDID; +} okTDeviceMatchInfo; + + +typedef enum { + okDEVICESENSOR_INVALID, + okDEVICESENSOR_BOOL, + okDEVICESENSOR_INTEGER, + okDEVICESENSOR_FLOAT, + okDEVICESENSOR_VOLTAGE, + okDEVICESENSOR_CURRENT, + okDEVICESENSOR_TEMPERATURE, + okDEVICESENSOR_FAN_RPM +} okEDeviceSensorType; + +#define OK_MAX_DEVICE_SENSOR_NAME_LENGTH (64) // including NULL termination +#define OK_MAX_DEVICE_SENSOR_DESCRIPTION_LENGTH (256) // including NULL termination +typedef struct { + int id; + okEDeviceSensorType type; + char name[OK_MAX_DEVICE_SENSOR_NAME_LENGTH]; + char description[OK_MAX_DEVICE_SENSOR_DESCRIPTION_LENGTH]; + double min; + double max; + double step; + double value; +} okTDeviceSensor; + +#endif // ! FRONTPANELDLL_EXPORTS + +typedef enum okEFPGAConfigurationMethod ok_FPGAConfigurationMethod; + +// +// General +// +okDLLEXPORT Bool DLL_ENTRY okFrontPanelDLL_LoadLib(okFP_dll_pchar libname); +okDLLEXPORT void DLL_ENTRY okFrontPanelDLL_FreeLib(void); +okDLLEXPORT void DLL_ENTRY okFrontPanelDLL_GetVersion(char *date, char *time); + +// This function is special and doesn't really need to be called at all if the +// DLL is always available, as it will be always loaded anyhow. It is mostly +// useful when using delay-loading, i.e. using "/DELAYLOAD:okFrontPanel.dll" +// linker option as then it will return false if the DLL couldn't be loaded. +inline Bool okFrontPanelDLL_TryLoadLib() +{ +#ifdef okDELAY_LOAD_FRONTPANEL + __try { + return okFrontPanelDLL_LoadLib(NULL); + } __except (ok_DelayLoadDllExceptionFilter(GetExceptionInformation())) { + return FALSE; + } +#endif // okDELAY_LOAD_FRONTPANEL + + return TRUE; +} + +// +// okPLL22393 +// +okDLLEXPORT okPLL22393_HANDLE DLL_ENTRY okPLL22393_Construct(); +okDLLEXPORT void DLL_ENTRY okPLL22393_Destruct(okPLL22393_HANDLE pll); +okDLLEXPORT void DLL_ENTRY okPLL22393_SetCrystalLoad(okPLL22393_HANDLE pll, double capload); +okDLLEXPORT void DLL_ENTRY okPLL22393_SetReference(okPLL22393_HANDLE pll, double freq); +okDLLEXPORT double DLL_ENTRY okPLL22393_GetReference(okPLL22393_HANDLE pll); +okDLLEXPORT Bool DLL_ENTRY okPLL22393_SetPLLParameters(okPLL22393_HANDLE pll, int n, int p, int q, Bool enable); +okDLLEXPORT Bool DLL_ENTRY okPLL22393_SetPLLLF(okPLL22393_HANDLE pll, int n, int lf); +okDLLEXPORT Bool DLL_ENTRY okPLL22393_SetOutputDivider(okPLL22393_HANDLE pll, int n, int div); +okDLLEXPORT Bool DLL_ENTRY okPLL22393_SetOutputSource(okPLL22393_HANDLE pll, int n, ok_ClockSource_22393 clksrc); +okDLLEXPORT void DLL_ENTRY okPLL22393_SetOutputEnable(okPLL22393_HANDLE pll, int n, Bool enable); +okDLLEXPORT int DLL_ENTRY okPLL22393_GetPLLP(okPLL22393_HANDLE pll, int n); +okDLLEXPORT int DLL_ENTRY okPLL22393_GetPLLQ(okPLL22393_HANDLE pll, int n); +okDLLEXPORT double DLL_ENTRY okPLL22393_GetPLLFrequency(okPLL22393_HANDLE pll, int n); +okDLLEXPORT int DLL_ENTRY okPLL22393_GetOutputDivider(okPLL22393_HANDLE pll, int n); +okDLLEXPORT ok_ClockSource_22393 DLL_ENTRY okPLL22393_GetOutputSource(okPLL22393_HANDLE pll, int n); +okDLLEXPORT double DLL_ENTRY okPLL22393_GetOutputFrequency(okPLL22393_HANDLE pll, int n); +okDLLEXPORT Bool DLL_ENTRY okPLL22393_IsOutputEnabled(okPLL22393_HANDLE pll, int n); +okDLLEXPORT Bool DLL_ENTRY okPLL22393_IsPLLEnabled(okPLL22393_HANDLE pll, int n); +okDLLEXPORT void DLL_ENTRY okPLL22393_InitFromProgrammingInfo(okPLL22393_HANDLE pll, unsigned char *buf); +okDLLEXPORT void DLL_ENTRY okPLL22393_GetProgrammingInfo(okPLL22393_HANDLE pll, unsigned char *buf); + + +// +// okPLL22150 +// +okDLLEXPORT okPLL22150_HANDLE DLL_ENTRY okPLL22150_Construct(); +okDLLEXPORT void DLL_ENTRY okPLL22150_Destruct(okPLL22150_HANDLE pll); +okDLLEXPORT void DLL_ENTRY okPLL22150_SetCrystalLoad(okPLL22150_HANDLE pll, double capload); +okDLLEXPORT void DLL_ENTRY okPLL22150_SetReference(okPLL22150_HANDLE pll, double freq, Bool extosc); +okDLLEXPORT double DLL_ENTRY okPLL22150_GetReference(okPLL22150_HANDLE pll); +okDLLEXPORT Bool DLL_ENTRY okPLL22150_SetVCOParameters(okPLL22150_HANDLE pll, int p, int q); +okDLLEXPORT int DLL_ENTRY okPLL22150_GetVCOP(okPLL22150_HANDLE pll); +okDLLEXPORT int DLL_ENTRY okPLL22150_GetVCOQ(okPLL22150_HANDLE pll); +okDLLEXPORT double DLL_ENTRY okPLL22150_GetVCOFrequency(okPLL22150_HANDLE pll); +okDLLEXPORT void DLL_ENTRY okPLL22150_SetDiv1(okPLL22150_HANDLE pll, ok_DividerSource divsrc, int n); +okDLLEXPORT void DLL_ENTRY okPLL22150_SetDiv2(okPLL22150_HANDLE pll, ok_DividerSource divsrc, int n); +okDLLEXPORT ok_DividerSource DLL_ENTRY okPLL22150_GetDiv1Source(okPLL22150_HANDLE pll); +okDLLEXPORT ok_DividerSource DLL_ENTRY okPLL22150_GetDiv2Source(okPLL22150_HANDLE pll); +okDLLEXPORT int DLL_ENTRY okPLL22150_GetDiv1Divider(okPLL22150_HANDLE pll); +okDLLEXPORT int DLL_ENTRY okPLL22150_GetDiv2Divider(okPLL22150_HANDLE pll); +okDLLEXPORT void DLL_ENTRY okPLL22150_SetOutputSource(okPLL22150_HANDLE pll, int output, ok_ClockSource_22150 clksrc); +okDLLEXPORT void DLL_ENTRY okPLL22150_SetOutputEnable(okPLL22150_HANDLE pll, int output, Bool enable); +okDLLEXPORT ok_ClockSource_22150 DLL_ENTRY okPLL22150_GetOutputSource(okPLL22150_HANDLE pll, int output); +okDLLEXPORT double DLL_ENTRY okPLL22150_GetOutputFrequency(okPLL22150_HANDLE pll, int output); +okDLLEXPORT Bool DLL_ENTRY okPLL22150_IsOutputEnabled(okPLL22150_HANDLE pll, int output); +okDLLEXPORT void DLL_ENTRY okPLL22150_InitFromProgrammingInfo(okPLL22150_HANDLE pll, unsigned char *buf); +okDLLEXPORT void DLL_ENTRY okPLL22150_GetProgrammingInfo(okPLL22150_HANDLE pll, unsigned char *buf); + + +// +// okDeviceSensors +// +okDLLEXPORT okDeviceSensors_HANDLE DLL_ENTRY okDeviceSensors_Construct(); +okDLLEXPORT void DLL_ENTRY okDeviceSensors_Destruct(okDeviceSensors_HANDLE hnd); +okDLLEXPORT int DLL_ENTRY okDeviceSensors_GetSensorCount(okDeviceSensors_HANDLE hnd); +okDLLEXPORT okTDeviceSensor DLL_ENTRY okDeviceSensors_GetSensor(okDeviceSensors_HANDLE hnd, int n); + +// +// okDeviceSettings +// +okDLLEXPORT okDeviceSettings_HANDLE DLL_ENTRY okDeviceSettings_Construct(); +okDLLEXPORT void DLL_ENTRY okDeviceSettings_Destruct(okDeviceSettings_HANDLE hnd); +okDLLEXPORT ok_ErrorCode DLL_ENTRY okDeviceSettings_GetString(okDeviceSettings_HANDLE hnd, const char *key, int length, char *buf); +okDLLEXPORT ok_ErrorCode DLL_ENTRY okDeviceSettings_SetString(okDeviceSettings_HANDLE hnd, const char *key, const char *buf); +okDLLEXPORT ok_ErrorCode DLL_ENTRY okDeviceSettings_GetInt(okDeviceSettings_HANDLE hnd, const char *key, UINT32 *value); +okDLLEXPORT ok_ErrorCode DLL_ENTRY okDeviceSettings_SetInt(okDeviceSettings_HANDLE hnd, const char *key, UINT32 value); +okDLLEXPORT ok_ErrorCode DLL_ENTRY okDeviceSettings_Delete(okDeviceSettings_HANDLE hnd, const char *key); +okDLLEXPORT ok_ErrorCode DLL_ENTRY okDeviceSettings_Save(okDeviceSettings_HANDLE hnd); + +// +// okFirmware and okFirmwarePackage +// +okDLLEXPORT okFirmwarePackage_HANDLE DLL_ENTRY okFirmwarePackage_Load(const char *filename); +okDLLEXPORT void DLL_ENTRY okFirmwarePackage_Destruct(okFirmwarePackage_HANDLE hnd); +okDLLEXPORT int DLL_ENTRY okFirmwarePackage_GetFirmwareCount(okFirmwarePackage_HANDLE hnd); +okDLLEXPORT okFirmware_HANDLE DLL_ENTRY okFirmwarePackage_GetFirmware(okFirmwarePackage_HANDLE hnd, int num); + +typedef void (*okFirmware_PerformTasks_Callback)(void*, int, const char*); +okDLLEXPORT ok_ErrorCode DLL_ENTRY okFirmware_PerformTasks(okFirmware_HANDLE hnd, const char *serial, okFirmware_PerformTasks_Callback callback, void *arg); + +// +// okFrontPanel +// +okDLLEXPORT okFrontPanel_HANDLE DLL_ENTRY okFrontPanel_Construct(); +okDLLEXPORT void DLL_ENTRY okFrontPanel_Destruct(okFrontPanel_HANDLE hnd); +okDLLEXPORT int DLL_ENTRY okFrontPanel_GetErrorString(int ec, char *buf, int length); +okDLLEXPORT ok_ErrorCode DLL_ENTRY okFrontPanel_AddCustomDevice(const okTDeviceMatchInfo* matchInfo, const okTDeviceInfo* devInfo); +okDLLEXPORT ok_ErrorCode DLL_ENTRY okFrontPanel_RemoveCustomDevice(int productID); +okDLLEXPORT ok_ErrorCode DLL_ENTRY okFrontPanel_WriteI2C(okFrontPanel_HANDLE hnd, const int addr, int length, unsigned char *data); +okDLLEXPORT ok_ErrorCode DLL_ENTRY okFrontPanel_ReadI2C(okFrontPanel_HANDLE hnd, const int addr, int length, unsigned char *data); +okDLLEXPORT ok_ErrorCode DLL_ENTRY okFrontPanel_FlashEraseSector(okFrontPanel_HANDLE hnd, UINT32 address); +okDLLEXPORT ok_ErrorCode DLL_ENTRY okFrontPanel_FlashWrite(okFrontPanel_HANDLE hnd, UINT32 address, UINT32 length, const UINT8 *buf); +okDLLEXPORT ok_ErrorCode DLL_ENTRY okFrontPanel_FlashRead(okFrontPanel_HANDLE hnd, UINT32 address, UINT32 length, UINT8 *buf); +okDLLEXPORT ok_ErrorCode DLL_ENTRY okFrontPanel_GetFPGAResetProfile(okFrontPanel_HANDLE hnd, ok_FPGAConfigurationMethod method, okTFPGAResetProfile *profile); +okDLLEXPORT ok_ErrorCode DLL_ENTRY okFrontPanel_GetFPGAResetProfileWithSize(okFrontPanel_HANDLE hnd, ok_FPGAConfigurationMethod method, okTFPGAResetProfile *profile, unsigned size); +okDLLEXPORT ok_ErrorCode DLL_ENTRY okFrontPanel_SetFPGAResetProfile(okFrontPanel_HANDLE hnd, ok_FPGAConfigurationMethod method, const okTFPGAResetProfile *profile); +okDLLEXPORT ok_ErrorCode DLL_ENTRY okFrontPanel_SetFPGAResetProfileWithSize(okFrontPanel_HANDLE hnd, ok_FPGAConfigurationMethod method, const okTFPGAResetProfile *profile, unsigned size); +okDLLEXPORT ok_ErrorCode DLL_ENTRY okFrontPanel_ReadRegister(okFrontPanel_HANDLE hnd, UINT32 addr, UINT32 *data); +okDLLEXPORT ok_ErrorCode DLL_ENTRY okFrontPanel_ReadRegisters(okFrontPanel_HANDLE hnd, unsigned num, okTRegisterEntry* regs); +okDLLEXPORT ok_ErrorCode DLL_ENTRY okFrontPanel_WriteRegister(okFrontPanel_HANDLE hnd, UINT32 addr, UINT32 data); +okDLLEXPORT ok_ErrorCode DLL_ENTRY okFrontPanel_WriteRegisters(okFrontPanel_HANDLE hnd, unsigned num, const okTRegisterEntry* regs); +okDLLEXPORT int DLL_ENTRY okFrontPanel_GetHostInterfaceWidth(okFrontPanel_HANDLE hnd); +okDLLEXPORT Bool DLL_ENTRY okFrontPanel_IsHighSpeed(okFrontPanel_HANDLE hnd); +okDLLEXPORT ok_BoardModel DLL_ENTRY okFrontPanel_GetBoardModel(okFrontPanel_HANDLE hnd); +okDLLEXPORT void DLL_ENTRY okFrontPanel_GetBoardModelString(okFrontPanel_HANDLE hnd, ok_BoardModel m, char *buf); +okDLLEXPORT int DLL_ENTRY okFrontPanel_GetDeviceCount(okFrontPanel_HANDLE hnd); +okDLLEXPORT ok_BoardModel DLL_ENTRY okFrontPanel_GetDeviceListModel(okFrontPanel_HANDLE hnd, int num); +okDLLEXPORT void DLL_ENTRY okFrontPanel_GetDeviceListSerial(okFrontPanel_HANDLE hnd, int num, char *buf); +okDLLEXPORT ok_ErrorCode DLL_ENTRY okFrontPanel_OpenBySerial(okFrontPanel_HANDLE hnd, const char *serial); +okDLLEXPORT Bool DLL_ENTRY okFrontPanel_IsOpen(okFrontPanel_HANDLE hnd); +okDLLEXPORT void DLL_ENTRY okFrontPanel_EnableAsynchronousTransfers(okFrontPanel_HANDLE hnd, Bool enable); +okDLLEXPORT ok_ErrorCode DLL_ENTRY okFrontPanel_SetBTPipePollingInterval(okFrontPanel_HANDLE hnd, int interval); +okDLLEXPORT void DLL_ENTRY okFrontPanel_SetTimeout(okFrontPanel_HANDLE hnd, int timeout); +okDLLEXPORT int DLL_ENTRY okFrontPanel_GetDeviceMajorVersion(okFrontPanel_HANDLE hnd); +okDLLEXPORT int DLL_ENTRY okFrontPanel_GetDeviceMinorVersion(okFrontPanel_HANDLE hnd); +okDLLEXPORT ok_ErrorCode DLL_ENTRY okFrontPanel_ResetFPGA(okFrontPanel_HANDLE hnd); +okDLLEXPORT void DLL_ENTRY okFrontPanel_Close(okFrontPanel_HANDLE hnd); +okDLLEXPORT void DLL_ENTRY okFrontPanel_GetSerialNumber(okFrontPanel_HANDLE hnd, char *buf); +okDLLEXPORT ok_ErrorCode DLL_ENTRY okFrontPanel_GetDeviceSensors(okFrontPanel_HANDLE hnd, okDeviceSensors_HANDLE settings); +okDLLEXPORT ok_ErrorCode DLL_ENTRY okFrontPanel_GetDeviceSettings(okFrontPanel_HANDLE hnd, okDeviceSettings_HANDLE settings); +okDLLEXPORT ok_ErrorCode DLL_ENTRY okFrontPanel_GetDeviceInfo(okFrontPanel_HANDLE hnd, okTDeviceInfo *info); +okDLLEXPORT ok_ErrorCode DLL_ENTRY okFrontPanel_GetDeviceInfoWithSize(okFrontPanel_HANDLE hnd, okTDeviceInfo *info, unsigned size); +okDLLEXPORT void DLL_ENTRY okFrontPanel_GetDeviceID(okFrontPanel_HANDLE hnd, char *buf); +okDLLEXPORT void DLL_ENTRY okFrontPanel_SetDeviceID(okFrontPanel_HANDLE hnd, const char *strID); +okDLLEXPORT ok_ErrorCode DLL_ENTRY okFrontPanel_ConfigureFPGA(okFrontPanel_HANDLE hnd, const char *strFilename); +okDLLEXPORT ok_ErrorCode DLL_ENTRY okFrontPanel_ConfigureFPGAWithReset(okFrontPanel_HANDLE hnd, const char *strFilename, const okTFPGAResetProfile *reset); +okDLLEXPORT ok_ErrorCode DLL_ENTRY okFrontPanel_ConfigureFPGAFromMemory(okFrontPanel_HANDLE hnd, unsigned char *data, unsigned long length); +okDLLEXPORT ok_ErrorCode DLL_ENTRY okFrontPanel_ConfigureFPGAFromMemoryWithReset(okFrontPanel_HANDLE hnd, unsigned char *data, unsigned long length, const okTFPGAResetProfile *reset); +okDLLEXPORT ok_ErrorCode DLL_ENTRY okFrontPanel_ConfigureFPGAFromFlash(okFrontPanel_HANDLE hnd, unsigned long configIndex); +okDLLEXPORT ok_ErrorCode DLL_ENTRY okFrontPanel_GetPLL22150Configuration(okFrontPanel_HANDLE hnd, okPLL22150_HANDLE pll); +okDLLEXPORT ok_ErrorCode DLL_ENTRY okFrontPanel_SetPLL22150Configuration(okFrontPanel_HANDLE hnd, okPLL22150_HANDLE pll); +okDLLEXPORT ok_ErrorCode DLL_ENTRY okFrontPanel_GetEepromPLL22150Configuration(okFrontPanel_HANDLE hnd, okPLL22150_HANDLE pll); +okDLLEXPORT ok_ErrorCode DLL_ENTRY okFrontPanel_SetEepromPLL22150Configuration(okFrontPanel_HANDLE hnd, okPLL22150_HANDLE pll); +okDLLEXPORT ok_ErrorCode DLL_ENTRY okFrontPanel_GetPLL22393Configuration(okFrontPanel_HANDLE hnd, okPLL22393_HANDLE pll); +okDLLEXPORT ok_ErrorCode DLL_ENTRY okFrontPanel_SetPLL22393Configuration(okFrontPanel_HANDLE hnd, okPLL22393_HANDLE pll); +okDLLEXPORT ok_ErrorCode DLL_ENTRY okFrontPanel_GetEepromPLL22393Configuration(okFrontPanel_HANDLE hnd, okPLL22393_HANDLE pll); +okDLLEXPORT ok_ErrorCode DLL_ENTRY okFrontPanel_SetEepromPLL22393Configuration(okFrontPanel_HANDLE hnd, okPLL22393_HANDLE pll); +okDLLEXPORT ok_ErrorCode DLL_ENTRY okFrontPanel_LoadDefaultPLLConfiguration(okFrontPanel_HANDLE hnd); +okDLLEXPORT Bool DLL_ENTRY okFrontPanel_IsFrontPanelEnabled(okFrontPanel_HANDLE hnd); +okDLLEXPORT Bool DLL_ENTRY okFrontPanel_IsFrontPanel3Supported(okFrontPanel_HANDLE hnd); +okDLLEXPORT void DLL_ENTRY okFrontPanel_UpdateWireIns(okFrontPanel_HANDLE hnd); +okDLLEXPORT ok_ErrorCode DLL_ENTRY okFrontPanel_GetWireInValue(okFrontPanel_HANDLE hnd, int epAddr, UINT32 *val); +okDLLEXPORT ok_ErrorCode DLL_ENTRY okFrontPanel_SetWireInValue(okFrontPanel_HANDLE hnd, int ep, unsigned long val, unsigned long mask); +okDLLEXPORT void DLL_ENTRY okFrontPanel_UpdateWireOuts(okFrontPanel_HANDLE hnd); +okDLLEXPORT unsigned long DLL_ENTRY okFrontPanel_GetWireOutValue(okFrontPanel_HANDLE hnd, int epAddr); +okDLLEXPORT ok_ErrorCode DLL_ENTRY okFrontPanel_ActivateTriggerIn(okFrontPanel_HANDLE hnd, int epAddr, int bit); +okDLLEXPORT void DLL_ENTRY okFrontPanel_UpdateTriggerOuts(okFrontPanel_HANDLE hnd); +okDLLEXPORT Bool DLL_ENTRY okFrontPanel_IsTriggered(okFrontPanel_HANDLE hnd, int epAddr, unsigned long mask); +okDLLEXPORT long DLL_ENTRY okFrontPanel_GetLastTransferLength(okFrontPanel_HANDLE hnd); +okDLLEXPORT long DLL_ENTRY okFrontPanel_WriteToPipeIn(okFrontPanel_HANDLE hnd, int epAddr, long length, unsigned char *data); +okDLLEXPORT long DLL_ENTRY okFrontPanel_ReadFromPipeOut(okFrontPanel_HANDLE hnd, int epAddr, long length, unsigned char *data); +okDLLEXPORT long DLL_ENTRY okFrontPanel_WriteToBlockPipeIn(okFrontPanel_HANDLE hnd, int epAddr, int blockSize, long length, unsigned char *data); +okDLLEXPORT long DLL_ENTRY okFrontPanel_ReadFromBlockPipeOut(okFrontPanel_HANDLE hnd, int epAddr, int blockSize, long length, unsigned char *data); + + +// +// okFrontPanelManager +// +okDLLEXPORT okCFrontPanelManager_HANDLE DLL_ENTRY okFrontPanelManager_Construct(okFrontPanelManager_HANDLE self, const char* realm); +okDLLEXPORT void DLL_ENTRY okFrontPanelManager_Destruct(okCFrontPanelManager_HANDLE hnd); +okDLLEXPORT ok_ErrorCode DLL_ENTRY okFrontPanelManager_StartMonitoring(okCFrontPanelManager_HANDLE hnd); +okDLLEXPORT okFrontPanel_HANDLE DLL_ENTRY okFrontPanelManager_Open(okCFrontPanelManager_HANDLE hnd, const char *serial); + +// +// FrontPanelDevices +// +okDLLEXPORT okCFrontPanelDevices_HANDLE DLL_ENTRY okFrontPanelDevices_Construct(const char* realm); +okDLLEXPORT void DLL_ENTRY okFrontPanelDevices_Destruct(okCFrontPanelDevices_HANDLE hnd); +okDLLEXPORT int DLL_ENTRY okFrontPanelDevices_GetCount(okCFrontPanelDevices_HANDLE hnd); +okDLLEXPORT void DLL_ENTRY okFrontPanelDevices_GetSerial(okCFrontPanelDevices_HANDLE hnd, int num, char* buf); +okDLLEXPORT okFrontPanel_HANDLE DLL_ENTRY okFrontPanelDevices_Open(okCFrontPanelDevices_HANDLE hnd, const char* serial); + +#ifdef __cplusplus +} // extern "C" + +namespace OpalKellyLegacy +{ + class okCFrontPanel; +} + +#if !defined(FRONTPANELDLL_EXPORTS) + +namespace OpalKelly +{ + +class FrontPanelManager; +class FrontPanelDevices; + +} // namespace OpalKelly + +namespace OpalKellyLegacy +{ + +//------------------------------------------------------------------------ +// okCPLL22150 C++ wrapper class +//------------------------------------------------------------------------ +class okCPLL22150 +{ +public: + okPLL22150_HANDLE h; + enum ClockSource { + ClkSrc_Ref=0, + ClkSrc_Div1ByN=1, + ClkSrc_Div1By2=2, + ClkSrc_Div1By3=3, + ClkSrc_Div2ByN=4, + ClkSrc_Div2By2=5, + ClkSrc_Div2By4=6 }; + + enum DividerSource { + DivSrc_Ref = 0, + DivSrc_VCO = 1 }; +public: + okCPLL22150(); + void SetCrystalLoad(double capload); + void SetReference(double freq, bool extosc); + double GetReference(); + bool SetVCOParameters(int p, int q); + int GetVCOP(); + int GetVCOQ(); + double GetVCOFrequency(); + void SetDiv1(DividerSource divsrc, int n); + void SetDiv2(DividerSource divsrc, int n); + DividerSource GetDiv1Source(); + DividerSource GetDiv2Source(); + int GetDiv1Divider(); + int GetDiv2Divider(); + void SetOutputSource(int output, ClockSource clksrc); + void SetOutputEnable(int output, bool enable); + ClockSource GetOutputSource(int output); + double GetOutputFrequency(int output); + bool IsOutputEnabled(int output); + void InitFromProgrammingInfo(unsigned char *buf); + void GetProgrammingInfo(unsigned char *buf); +}; + +//------------------------------------------------------------------------ +// okCPLL22150 C++ wrapper class +//------------------------------------------------------------------------ +class okCPLL22393 +{ +public: + okPLL22393_HANDLE h; + enum ClockSource { + ClkSrc_Ref=0, + ClkSrc_PLL0_0=2, + ClkSrc_PLL0_180=3, + ClkSrc_PLL1_0=4, + ClkSrc_PLL1_180=5, + ClkSrc_PLL2_0=6, + ClkSrc_PLL2_180=7 }; +private: + bool to_bool(Bool x); + Bool from_bool(bool x); +public: + okCPLL22393(); + void SetCrystalLoad(double capload); + void SetReference(double freq); + double GetReference(); + bool SetPLLParameters(int n, int p, int q, bool enable=true); + bool SetPLLLF(int n, int lf); + bool SetOutputDivider(int n, int div); + bool SetOutputSource(int n, ClockSource clksrc); + void SetOutputEnable(int n, bool enable); + int GetPLLP(int n); + int GetPLLQ(int n); + double GetPLLFrequency(int n); + int GetOutputDivider(int n); + ClockSource GetOutputSource(int n); + double GetOutputFrequency(int n); + bool IsOutputEnabled(int n); + bool IsPLLEnabled(int n); + void InitFromProgrammingInfo(unsigned char *buf); + void GetProgrammingInfo(unsigned char *buf); +}; + +//------------------------------------------------------------------------ +// okCFrontPanel C++ wrapper class +//------------------------------------------------------------------------ + +class okCDeviceSensors; +class okCDeviceSettings; + +class okCFrontPanel +{ +public: + okFrontPanel_HANDLE h; + enum BoardModel { + brdUnknown=0, + brdXEM3001v1=1, + brdXEM3001v2=2, + brdXEM3010=3, + brdXEM3005=4, + brdXEM3001CL=5, + brdXEM3020=6, + brdXEM3050=7, + brdXEM9002=8, + brdXEM3001RB=9, + brdXEM5010=10, + brdXEM6110LX45=11, + brdXEM6110LX150=15, + brdXEM6001=12, + brdXEM6010LX45=13, + brdXEM6010LX150=14, + brdXEM6006LX9=16, + brdXEM6006LX16=17, + brdXEM6006LX25=18, + brdXEM5010LX110=19, + brdZEM4310=20, + brdXEM6310LX45=21, + brdXEM6310LX150=22, + brdXEM6110v2LX45=23, + brdXEM6110v2LX150=24, + brdXEM6002LX9=25, + brdXEM6310MTLX45T=26, + brdXEM6320LX130T=27, + brdXEM7350K70T=28, + brdXEM7350K160T=29, + brdXEM7350K410T=30, + brdXEM6310MTLX150T=31, + brdZEM5305A2=32, + brdZEM5305A7=33, + brdXEM7001A15=34, + brdXEM7001A35=35, + brdXEM7360K160T=36, + brdXEM7360K410T=37, + brdZEM5310A4=38, + brdZEM5310A7=39, + brdZEM5370A5=40, + brdXEM7010A50=41, + brdXEM7010A200=42, + brdXEM7310A75=43, + brdXEM7310A200=44 + }; + enum ErrorCode { + NoError = 0, + Failed = -1, + Timeout = -2, + DoneNotHigh = -3, + TransferError = -4, + CommunicationError = -5, + InvalidBitstream = -6, + FileError = -7, + DeviceNotOpen = -8, + InvalidEndpoint = -9, + InvalidBlockSize = -10, + I2CRestrictedAddress = -11, + I2CBitError = -12, + I2CNack = -13, + I2CUnknownStatus = -14, + UnsupportedFeature = -15, + FIFOUnderflow = -16, + FIFOOverflow = -17, + DataAlignmentError = -18, + InvalidResetProfile = -19, + InvalidParameter = -20 + }; +private: + bool to_bool(Bool x); + Bool from_bool(bool x); + + explicit okCFrontPanel(okFrontPanel_HANDLE hnd); + friend class OpalKelly::FrontPanelManager; + friend class OpalKelly::FrontPanelDevices; + +public: + okCFrontPanel(); + ~okCFrontPanel(); + static std::string GetErrorString(int errorCode); + static ErrorCode AddCustomDevice(const okTDeviceMatchInfo& matchInfo, const okTDeviceInfo* devInfo = NULL); + static ErrorCode RemoveCustomDevice(int productID); + int GetHostInterfaceWidth(); + BoardModel GetBoardModel(); + std::string GetBoardModelString(BoardModel m); + int GetDeviceCount(); + ErrorCode GetFPGAResetProfile(okEFPGAConfigurationMethod method, okTFPGAResetProfile *profile); + ErrorCode SetFPGAResetProfile(okEFPGAConfigurationMethod method, const okTFPGAResetProfile *profile); + ErrorCode FlashEraseSector(UINT32 address); + ErrorCode FlashWrite(UINT32 address, UINT32 length, const UINT8 *buf); + ErrorCode FlashRead(UINT32 address, UINT32 length, UINT8 *buf); + ErrorCode ReadRegister(UINT32 addr, UINT32 *data); + ErrorCode ReadRegisters(okTRegisterEntries& regs); + ErrorCode WriteRegister(UINT32 addr, UINT32 data); + ErrorCode WriteRegisters(const okTRegisterEntries& regs); + BoardModel GetDeviceListModel(int num); + std::string GetDeviceListSerial(int num); + void EnableAsynchronousTransfers(bool enable); + ErrorCode OpenBySerial(std::string str = ""); + bool IsOpen(); + ErrorCode GetDeviceInfo(okTDeviceInfo *info); + int GetDeviceMajorVersion(); + int GetDeviceMinorVersion(); + std::string GetSerialNumber(); + ErrorCode GetDeviceSettings(okCDeviceSettings& settings); + ErrorCode GetDeviceSensors(okCDeviceSensors& sensors); + std::string GetDeviceID(); + void SetDeviceID(const std::string& str); + ErrorCode SetBTPipePollingInterval(int interval); + void SetTimeout(int timeout); + ErrorCode ResetFPGA(); + void Close(); + ErrorCode ConfigureFPGA(const std::string& strFilename); + ErrorCode ConfigureFPGAWithReset(const std::string& strFilename, const okTFPGAResetProfile *reset); + ErrorCode ConfigureFPGAFromMemory(unsigned char *data, const unsigned long length); + ErrorCode ConfigureFPGAFromMemoryWithReset(unsigned char *data, const unsigned long length, const okTFPGAResetProfile *reset); + ErrorCode ConfigureFPGAFromFlash(unsigned long configIndex); + ErrorCode WriteI2C(const int addr, int length, unsigned char *data); + ErrorCode ReadI2C(const int addr, int length, unsigned char *data); + ErrorCode GetPLL22150Configuration(okCPLL22150& pll); + ErrorCode SetPLL22150Configuration(okCPLL22150& pll); + ErrorCode GetEepromPLL22150Configuration(okCPLL22150& pll); + ErrorCode SetEepromPLL22150Configuration(okCPLL22150& pll); + ErrorCode GetPLL22393Configuration(okCPLL22393& pll); + ErrorCode SetPLL22393Configuration(okCPLL22393& pll); + ErrorCode GetEepromPLL22393Configuration(okCPLL22393& pll); + ErrorCode SetEepromPLL22393Configuration(okCPLL22393& pll); + ErrorCode LoadDefaultPLLConfiguration(); + bool IsHighSpeed(); + bool IsFrontPanelEnabled(); + bool IsFrontPanel3Supported(); + void UpdateWireIns(); + ErrorCode GetWireInValue(int epAddr, UINT32 *val); + ErrorCode SetWireInValue(int ep, UINT32 val, UINT32 mask = 0xffffffff); + void UpdateWireOuts(); + unsigned long GetWireOutValue(int epAddr); + ErrorCode ActivateTriggerIn(int epAddr, int bit); + void UpdateTriggerOuts(); + bool IsTriggered(int epAddr, UINT32 mask); + long GetLastTransferLength(); + long WriteToPipeIn(int epAddr, long length, unsigned char *data); + long ReadFromPipeOut(int epAddr, long length, unsigned char *data); + long WriteToBlockPipeIn(int epAddr, int blockSize, long length, unsigned char *data); + long ReadFromBlockPipeOut(int epAddr, int blockSize, long length, unsigned char *data); +}; + +class okCDeviceSettings +{ +public: + okCDeviceSettings() + { + h = okDeviceSettings_Construct(); + } + + ~okCDeviceSettings() + { + okDeviceSettings_Destruct(h); + } + + okCFrontPanel::ErrorCode GetString(const std::string& key, std::string* value) + { + char buf[256]; + ok_ErrorCode rc = okDeviceSettings_GetString(h, key.c_str(), sizeof(buf), buf); + if (rc == ok_NoError) { + if (!value) + rc = ok_InvalidParameter; + else + value->assign(buf); + } + + return static_cast(rc); + } + + okCFrontPanel::ErrorCode GetInt(const std::string& key, UINT32* value) + { + return static_cast( + okDeviceSettings_GetInt(h, key.c_str(), value) + ); + } + + okCFrontPanel::ErrorCode SetString(const std::string& key, const std::string& value) + { + return static_cast( + okDeviceSettings_SetString(h, key.c_str(), value.c_str()) + ); + } + + okCFrontPanel::ErrorCode SetInt(const std::string& key, UINT32 value) + { + return static_cast( + okDeviceSettings_SetInt(h, key.c_str(), value) + ); + } + + okCFrontPanel::ErrorCode Delete(const std::string& key) + { + return static_cast( + okDeviceSettings_Delete(h, key.c_str()) + ); + } + + okCFrontPanel::ErrorCode Save() + { + return static_cast(okDeviceSettings_Save(h)); + } + +private: + okDeviceSettings_HANDLE h; + + friend class okCFrontPanel; +}; + +class okCDeviceSensors +{ +public: + okCDeviceSensors() + { + h = okDeviceSensors_Construct(); + } + + ~okCDeviceSensors() + { + okDeviceSensors_Destruct(h); + } + + int GetSensorCount() const + { + return okDeviceSensors_GetSensorCount(h); + } + + okTDeviceSensor GetSensor(int n) const + { + return okDeviceSensors_GetSensor(h, n); + } + +private: + okDeviceSensors_HANDLE h; + + friend class OpalKellyLegacy::okCFrontPanel; +}; + +} // namespace OpalKellyLegacy + +#endif // !defined(FRONTPANELDLL_EXPORTS) + +namespace OpalKelly +{ + +/// \brief Represents a single firmware defined inside a firmware package. +/// +/// Objects of this class are only created by OpalKelly::FirmwarePackage. +class Firmware +{ +public: + /// \brief Perform the firmware download to the given device. + /// + /// If @a callback is non-null, it will be called to notify about the + /// progress of the operation with the library provided progress indicator + /// (in 0..100 range) and the status message and an extra @a arg argument + /// passed to this function. + bool PerformTasks( + const std::string& serial, + okFirmware_PerformTasks_Callback callback = NULL, + void* arg = NULL + ) + { + return h && okFirmware_PerformTasks(h, serial.c_str(), callback, arg) == ok_NoError; + } + +private: + Firmware(okFirmware_HANDLE h) : h(h) {} + + // This class can't be assigned to once it's created. + Firmware& operator=(const Firmware&); + + const okFirmware_HANDLE h; + + friend class FirmwarePackage; +}; + + +/// \brief Represents a firmware package file. +class FirmwarePackage +{ +public: + /// \brief Load firmware package from file. + /// + /// If unsuccessful, GetFirmwareCount() will return 0 after loading. + explicit FirmwarePackage(const std::string& filename) : + h(okFirmwarePackage_Load(filename.c_str())) + { + } + + /// \brief Return the number of firmwares defined in this package. + int GetFirmwareCount() const + { + return h ? okFirmwarePackage_GetFirmwareCount(h) : 0; + } + + /// \brief Return the firmware object at the given index. + /// + /// Index must be valid, i.e. less than GetFirmwareCount(), otherwise an + /// invalid firmware is returned. + Firmware GetFirmware(int num = 0) const + { + return Firmware(h ? okFirmwarePackage_GetFirmware(h, num) : NULL); + } + + + ~FirmwarePackage() + { + if (h) + okFirmwarePackage_Destruct(h); + } + +private: + // This class can't be copied. + FirmwarePackage(const FirmwarePackage&); + FirmwarePackage& operator=(const FirmwarePackage&); + + const okFirmwarePackage_HANDLE h; +}; + + +/// \brief Class for managing device connections and disconnections. +/// +/// This class allows to be notified about devices connections and +/// disconnections. +/// +/// To receive these notifications, you need to derive your own manager +/// subclass from this class and override its virtual OnDeviceAdded() and +/// OnDeviceRemoved() methods. +/// Alternatively, use FrontPanelDevices if you need to simply open a connected +/// device and are not interested in getting notifications for the devices +/// connections and disconnections. +/// +/// See Open() method documentation for a simple example of doing this. +class FrontPanelManager +{ +public: + explicit FrontPanelManager(const std::string& realm = "local"); + virtual ~FrontPanelManager(); + + void StartMonitoring(); + + virtual void OnDeviceAdded(const char *serial) = 0; + virtual void OnDeviceRemoved(const char *serial) = 0; + + OpalKellyLegacy::okCFrontPanel* Open(const char *serial); + + okCFrontPanelManager_HANDLE h; +}; + +typedef std::auto_ptr FrontPanelPtr; + +/// \brief Allows to easily open devices in any realms. +class FrontPanelDevices +{ +public: + explicit FrontPanelDevices(const std::string& realm = std::string()); + + int GetCount() const; + std::string GetSerial(int num) const; + FrontPanelPtr Open(const char *serial = NULL) const; + + ~FrontPanelDevices(); + + okCFrontPanelDevices_HANDLE h; +}; + +} // namespace OpalKelly + +#if !defined(FRONTPANELDLL_EXPORTS) + +namespace OpalKellyLegacy +{ + +//------------------------------------------------------------------------ +// okCPLL22150 C++ wrapper class +//------------------------------------------------------------------------ +inline okCPLL22150::okCPLL22150() + { h=okPLL22150_Construct(); } +inline void okCPLL22150::SetCrystalLoad(double capload) + { okPLL22150_SetCrystalLoad(h, capload); } +inline void okCPLL22150::SetReference(double freq, bool extosc) + { okPLL22150_SetReference(h, freq, extosc); } +inline double okCPLL22150::GetReference() + { return(okPLL22150_GetReference(h)); } +inline bool okCPLL22150::SetVCOParameters(int p, int q) + { return okPLL22150_SetVCOParameters(h,p,q) == TRUE; } +inline int okCPLL22150::GetVCOP() + { return(okPLL22150_GetVCOP(h)); } +inline int okCPLL22150::GetVCOQ() + { return(okPLL22150_GetVCOQ(h)); } +inline double okCPLL22150::GetVCOFrequency() + { return(okPLL22150_GetVCOFrequency(h)); } +inline void okCPLL22150::SetDiv1(DividerSource divsrc, int n) + { okPLL22150_SetDiv1(h, (ok_DividerSource)divsrc, n); } +inline void okCPLL22150::SetDiv2(DividerSource divsrc, int n) + { okPLL22150_SetDiv2(h, (ok_DividerSource)divsrc, n); } +inline okCPLL22150::DividerSource okCPLL22150::GetDiv1Source() + { return((DividerSource) okPLL22150_GetDiv1Source(h)); } +inline okCPLL22150::DividerSource okCPLL22150::GetDiv2Source() + { return((DividerSource) okPLL22150_GetDiv2Source(h)); } +inline int okCPLL22150::GetDiv1Divider() + { return(okPLL22150_GetDiv1Divider(h)); } +inline int okCPLL22150::GetDiv2Divider() + { return(okPLL22150_GetDiv2Divider(h)); } +inline void okCPLL22150::SetOutputSource(int output, okCPLL22150::ClockSource clksrc) + { okPLL22150_SetOutputSource(h, output, (ok_ClockSource_22150)clksrc); } +inline void okCPLL22150::SetOutputEnable(int output, bool enable) + { okPLL22150_SetOutputEnable(h, output, enable); } +inline okCPLL22150::ClockSource okCPLL22150::GetOutputSource(int output) + { return( (ClockSource)okPLL22150_GetOutputSource(h, output)); } +inline double okCPLL22150::GetOutputFrequency(int output) + { return(okPLL22150_GetOutputFrequency(h, output)); } +inline bool okCPLL22150::IsOutputEnabled(int output) + { return okPLL22150_IsOutputEnabled(h, output) == TRUE; } +inline void okCPLL22150::InitFromProgrammingInfo(unsigned char *buf) + { okPLL22150_InitFromProgrammingInfo(h, buf); } +inline void okCPLL22150::GetProgrammingInfo(unsigned char *buf) + { okPLL22150_GetProgrammingInfo(h, buf); } + +//------------------------------------------------------------------------ +// okCPLL22393 C++ wrapper class +//------------------------------------------------------------------------ +inline okCPLL22393::okCPLL22393() + { h=okPLL22393_Construct(); } +inline void okCPLL22393::SetCrystalLoad(double capload) + { okPLL22393_SetCrystalLoad(h, capload); } +inline void okCPLL22393::SetReference(double freq) + { okPLL22393_SetReference(h, freq); } +inline double okCPLL22393::GetReference() + { return(okPLL22393_GetReference(h)); } +inline bool okCPLL22393::SetPLLParameters(int n, int p, int q, bool enable) + { return okPLL22393_SetPLLParameters(h, n, p, q, enable) == TRUE; } +inline bool okCPLL22393::SetPLLLF(int n, int lf) + { return okPLL22393_SetPLLLF(h, n, lf) == TRUE; } +inline bool okCPLL22393::SetOutputDivider(int n, int div) + { return okPLL22393_SetOutputDivider(h, n, div) == TRUE; } +inline bool okCPLL22393::SetOutputSource(int n, okCPLL22393::ClockSource clksrc) + { return okPLL22393_SetOutputSource(h, n, (ok_ClockSource_22393)clksrc) == TRUE; } +inline void okCPLL22393::SetOutputEnable(int n, bool enable) + { okPLL22393_SetOutputEnable(h, n, enable); } +inline int okCPLL22393::GetPLLP(int n) + { return(okPLL22393_GetPLLP(h, n)); } +inline int okCPLL22393::GetPLLQ(int n) + { return(okPLL22393_GetPLLQ(h, n)); } +inline double okCPLL22393::GetPLLFrequency(int n) + { return(okPLL22393_GetPLLFrequency(h, n)); } +inline int okCPLL22393::GetOutputDivider(int n) + { return(okPLL22393_GetOutputDivider(h, n)); } +inline okCPLL22393::ClockSource okCPLL22393::GetOutputSource(int n) + { return((ClockSource) okPLL22393_GetOutputSource(h, n)); } +inline double okCPLL22393::GetOutputFrequency(int n) + { return(okPLL22393_GetOutputFrequency(h, n)); } +inline bool okCPLL22393::IsOutputEnabled(int n) + { return okPLL22393_IsOutputEnabled(h, n) == TRUE; } +inline bool okCPLL22393::IsPLLEnabled(int n) + { return okPLL22393_IsPLLEnabled(h, n) == TRUE; } +inline void okCPLL22393::InitFromProgrammingInfo(unsigned char *buf) + { okPLL22393_InitFromProgrammingInfo(h, buf); } +inline void okCPLL22393::GetProgrammingInfo(unsigned char *buf) + { okPLL22393_GetProgrammingInfo(h, buf); } + +//------------------------------------------------------------------------ +// okCFrontPanel C++ wrapper class +//------------------------------------------------------------------------ +inline okCFrontPanel::okCFrontPanel(okFrontPanel_HANDLE hnd) + { h=hnd; } +inline okCFrontPanel::okCFrontPanel() + { h=okFrontPanel_Construct(); } +inline okCFrontPanel::~okCFrontPanel() + { okFrontPanel_Destruct(h); } +inline std::string okCFrontPanel::GetErrorString(int ec) + { + int len = okFrontPanel_GetErrorString(ec, NULL, 0); + std::string s; + if (len > 0) { + s.resize(len); + okFrontPanel_GetErrorString(ec, &s[0], len + 1); + } + return s; + } +inline okCFrontPanel::ErrorCode okCFrontPanel::AddCustomDevice(const okTDeviceMatchInfo& matchInfo, const okTDeviceInfo* devInfo) + { return (okCFrontPanel::ErrorCode)okFrontPanel_AddCustomDevice(&matchInfo, devInfo); } +inline okCFrontPanel::ErrorCode okCFrontPanel::RemoveCustomDevice(int productID) + { return (okCFrontPanel::ErrorCode)okFrontPanel_RemoveCustomDevice(productID); } +inline int okCFrontPanel::GetHostInterfaceWidth() + { return(okFrontPanel_GetHostInterfaceWidth(h)); } +inline bool okCFrontPanel::IsHighSpeed() + { return okFrontPanel_IsHighSpeed(h) == TRUE; } +inline okCFrontPanel::BoardModel okCFrontPanel::GetBoardModel() + { return((okCFrontPanel::BoardModel)okFrontPanel_GetBoardModel(h)); } +inline std::string okCFrontPanel::GetBoardModelString(okCFrontPanel::BoardModel m) + { + char str[MAX_BOARDMODELSTRING_LENGTH]; + okFrontPanel_GetBoardModelString(h, (ok_BoardModel)m, str); + return(std::string(str)); + } +inline int okCFrontPanel::GetDeviceCount() + { return(okFrontPanel_GetDeviceCount(h)); } +inline okCFrontPanel::BoardModel okCFrontPanel::GetDeviceListModel(int num) + { return((okCFrontPanel::BoardModel)okFrontPanel_GetDeviceListModel(h, num)); } +inline std::string okCFrontPanel::GetDeviceListSerial(int num) + { + char str[MAX_SERIALNUMBER_LENGTH+1]; + okFrontPanel_GetDeviceListSerial(h, num, str); + str[MAX_SERIALNUMBER_LENGTH] = '\0'; + return(std::string(str)); + } +inline okCFrontPanel::ErrorCode okCFrontPanel::GetDeviceInfo(okTDeviceInfo *info) + { return((okCFrontPanel::ErrorCode) okFrontPanel_GetDeviceInfoWithSize(h, info, sizeof(*info))); } +inline void okCFrontPanel::EnableAsynchronousTransfers(bool enable) + { okFrontPanel_EnableAsynchronousTransfers(h, enable); } +inline okCFrontPanel::ErrorCode okCFrontPanel::OpenBySerial(std::string str) + { return((okCFrontPanel::ErrorCode) okFrontPanel_OpenBySerial(h, str.c_str())); } +inline bool okCFrontPanel::IsOpen() + { return okFrontPanel_IsOpen(h) == TRUE; } +inline int okCFrontPanel::GetDeviceMajorVersion() + { return(okFrontPanel_GetDeviceMajorVersion(h)); } +inline int okCFrontPanel::GetDeviceMinorVersion() + { return(okFrontPanel_GetDeviceMinorVersion(h)); } +inline std::string okCFrontPanel::GetSerialNumber() + { + char str[MAX_SERIALNUMBER_LENGTH+1]; + okFrontPanel_GetSerialNumber(h, str); + return(std::string(str)); + } +inline okCFrontPanel::ErrorCode okCFrontPanel::GetDeviceSettings(okCDeviceSettings& settings) + { + return (ErrorCode)okFrontPanel_GetDeviceSettings(h, settings.h); + } +inline okCFrontPanel::ErrorCode okCFrontPanel::GetDeviceSensors(okCDeviceSensors& sensors) + { + return (ErrorCode)okFrontPanel_GetDeviceSensors(h, sensors.h); + } +inline std::string okCFrontPanel::GetDeviceID() + { + char str[MAX_DEVICEID_LENGTH+1]; + okFrontPanel_GetDeviceID(h, str); + return(std::string(str)); + } +inline void okCFrontPanel::SetDeviceID(const std::string& str) + { okFrontPanel_SetDeviceID(h, str.c_str()); } +inline okCFrontPanel::ErrorCode okCFrontPanel::SetBTPipePollingInterval(int interval) + { return((okCFrontPanel::ErrorCode) okFrontPanel_SetBTPipePollingInterval(h, interval)); } +inline void okCFrontPanel::SetTimeout(int timeout) + { okFrontPanel_SetTimeout(h, timeout); } +inline okCFrontPanel::ErrorCode okCFrontPanel::ResetFPGA() + { return((okCFrontPanel::ErrorCode) okFrontPanel_ResetFPGA(h)); } +inline void okCFrontPanel::Close() + { okFrontPanel_Close(h); } +inline okCFrontPanel::ErrorCode okCFrontPanel::ConfigureFPGA(const std::string& strFilename) + { return((okCFrontPanel::ErrorCode) okFrontPanel_ConfigureFPGA(h, strFilename.c_str())); } +inline okCFrontPanel::ErrorCode okCFrontPanel::ConfigureFPGAWithReset(const std::string& strFilename, const okTFPGAResetProfile *reset) + { return((okCFrontPanel::ErrorCode) okFrontPanel_ConfigureFPGAWithReset(h, strFilename.c_str(), reset)); } +inline okCFrontPanel::ErrorCode okCFrontPanel::ConfigureFPGAFromMemory(unsigned char *data, const unsigned long length) + { return((okCFrontPanel::ErrorCode) okFrontPanel_ConfigureFPGAFromMemory(h, data, length)); } +inline okCFrontPanel::ErrorCode okCFrontPanel::ConfigureFPGAFromMemoryWithReset(unsigned char *data, const unsigned long length, const okTFPGAResetProfile* reset) + { return((okCFrontPanel::ErrorCode) okFrontPanel_ConfigureFPGAFromMemoryWithReset(h, data, length, reset)); } +inline okCFrontPanel::ErrorCode okCFrontPanel::ConfigureFPGAFromFlash(unsigned long configIndex) + { return((okCFrontPanel::ErrorCode) okFrontPanel_ConfigureFPGAFromFlash(h, configIndex)); } +inline okCFrontPanel::ErrorCode okCFrontPanel::GetFPGAResetProfile(okEFPGAConfigurationMethod method, okTFPGAResetProfile *profile) + { return((okCFrontPanel::ErrorCode) okFrontPanel_GetFPGAResetProfileWithSize(h, method, profile, sizeof(*profile))); } +inline okCFrontPanel::ErrorCode okCFrontPanel::ReadRegister(UINT32 addr, UINT32 *data) + { return((okCFrontPanel::ErrorCode) okFrontPanel_ReadRegister(h, addr, data)); } +inline okCFrontPanel::ErrorCode okCFrontPanel::ReadRegisters(std::vector& regs) + { return((okCFrontPanel::ErrorCode) okFrontPanel_ReadRegisters(h, (unsigned int)regs.size(), regs.empty() ? NULL : ®s[0])); } +inline okCFrontPanel::ErrorCode okCFrontPanel::SetFPGAResetProfile(okEFPGAConfigurationMethod method, const okTFPGAResetProfile *profile) + { return((okCFrontPanel::ErrorCode) okFrontPanel_SetFPGAResetProfileWithSize(h, method, profile, sizeof(*profile))); } +inline okCFrontPanel::ErrorCode okCFrontPanel::FlashEraseSector(UINT32 address) + { return((okCFrontPanel::ErrorCode) okFrontPanel_FlashEraseSector(h, address)); } +inline okCFrontPanel::ErrorCode okCFrontPanel::FlashWrite(UINT32 address, UINT32 length, const UINT8 *buf) + { return((okCFrontPanel::ErrorCode) okFrontPanel_FlashWrite(h, address, length, buf)); } +inline okCFrontPanel::ErrorCode okCFrontPanel::FlashRead(UINT32 address, UINT32 length, UINT8 *buf) + { return((okCFrontPanel::ErrorCode) okFrontPanel_FlashRead(h, address, length, buf)); } +inline okCFrontPanel::ErrorCode okCFrontPanel::WriteRegister(UINT32 addr, UINT32 data) + { return((okCFrontPanel::ErrorCode) okFrontPanel_WriteRegister(h, addr, data)); } +inline okCFrontPanel::ErrorCode okCFrontPanel::WriteRegisters(const std::vector& regs) + { return((okCFrontPanel::ErrorCode) okFrontPanel_WriteRegisters(h, (unsigned int)regs.size(), regs.empty() ? NULL : ®s[0])); } +inline okCFrontPanel::ErrorCode okCFrontPanel::GetWireInValue(int epAddr, UINT32 *val) + { return((okCFrontPanel::ErrorCode) okFrontPanel_GetWireInValue(h, epAddr, val)); } +inline okCFrontPanel::ErrorCode okCFrontPanel::WriteI2C(const int addr, int length, unsigned char *data) + { return((okCFrontPanel::ErrorCode) okFrontPanel_WriteI2C(h, addr, length, data)); } +inline okCFrontPanel::ErrorCode okCFrontPanel::ReadI2C(const int addr, int length, unsigned char *data) + { return((okCFrontPanel::ErrorCode) okFrontPanel_ReadI2C(h, addr, length, data)); } +inline okCFrontPanel::ErrorCode okCFrontPanel::GetPLL22150Configuration(okCPLL22150& pll) + { return((okCFrontPanel::ErrorCode) okFrontPanel_GetPLL22150Configuration(h, pll.h)); } +inline okCFrontPanel::ErrorCode okCFrontPanel::SetPLL22150Configuration(okCPLL22150& pll) + { return((okCFrontPanel::ErrorCode) okFrontPanel_SetPLL22150Configuration(h, pll.h)); } +inline okCFrontPanel::ErrorCode okCFrontPanel::GetEepromPLL22150Configuration(okCPLL22150& pll) + { return((okCFrontPanel::ErrorCode) okFrontPanel_GetEepromPLL22150Configuration(h, pll.h)); } +inline okCFrontPanel::ErrorCode okCFrontPanel::SetEepromPLL22150Configuration(okCPLL22150& pll) + { return((okCFrontPanel::ErrorCode) okFrontPanel_SetEepromPLL22150Configuration(h, pll.h)); } +inline okCFrontPanel::ErrorCode okCFrontPanel::GetPLL22393Configuration(okCPLL22393& pll) + { return((okCFrontPanel::ErrorCode) okFrontPanel_GetPLL22393Configuration(h, pll.h)); } +inline okCFrontPanel::ErrorCode okCFrontPanel::SetPLL22393Configuration(okCPLL22393& pll) + { return((okCFrontPanel::ErrorCode) okFrontPanel_SetPLL22393Configuration(h, pll.h)); } +inline okCFrontPanel::ErrorCode okCFrontPanel::GetEepromPLL22393Configuration(okCPLL22393& pll) + { return((okCFrontPanel::ErrorCode) okFrontPanel_GetEepromPLL22393Configuration(h, pll.h)); } +inline okCFrontPanel::ErrorCode okCFrontPanel::SetEepromPLL22393Configuration(okCPLL22393& pll) + { return((okCFrontPanel::ErrorCode) okFrontPanel_SetEepromPLL22393Configuration(h, pll.h)); } +inline okCFrontPanel::ErrorCode okCFrontPanel::LoadDefaultPLLConfiguration() + { return((okCFrontPanel::ErrorCode) okFrontPanel_LoadDefaultPLLConfiguration(h)); } +inline bool okCFrontPanel::IsFrontPanelEnabled() + { return okFrontPanel_IsFrontPanelEnabled(h) == TRUE; } +inline bool okCFrontPanel::IsFrontPanel3Supported() + { return okFrontPanel_IsFrontPanel3Supported(h) == TRUE; } +// void UnregisterAll(); +// void AddEventHandler(EventHandler *handler); +inline void okCFrontPanel::UpdateWireIns() + { okFrontPanel_UpdateWireIns(h); } +inline okCFrontPanel::ErrorCode okCFrontPanel::SetWireInValue(int ep, UINT32 val, UINT32 mask) + { return((okCFrontPanel::ErrorCode) okFrontPanel_SetWireInValue(h, ep, val, mask)); } +inline void okCFrontPanel::UpdateWireOuts() + { okFrontPanel_UpdateWireOuts(h); } +inline unsigned long okCFrontPanel::GetWireOutValue(int epAddr) + { return(okFrontPanel_GetWireOutValue(h, epAddr)); } +inline okCFrontPanel::ErrorCode okCFrontPanel::ActivateTriggerIn(int epAddr, int bit) + { return((okCFrontPanel::ErrorCode) okFrontPanel_ActivateTriggerIn(h, epAddr, bit)); } +inline void okCFrontPanel::UpdateTriggerOuts() + { okFrontPanel_UpdateTriggerOuts(h); } +inline bool okCFrontPanel::IsTriggered(int epAddr, UINT32 mask) + { return okFrontPanel_IsTriggered(h, epAddr, mask) == TRUE; } +inline long okCFrontPanel::GetLastTransferLength() + { return(okFrontPanel_GetLastTransferLength(h)); } +inline long okCFrontPanel::WriteToPipeIn(int epAddr, long length, unsigned char *data) + { return(okFrontPanel_WriteToPipeIn(h, epAddr, length, data)); } +inline long okCFrontPanel::ReadFromPipeOut(int epAddr, long length, unsigned char *data) + { return(okFrontPanel_ReadFromPipeOut(h, epAddr, length, data)); } +inline long okCFrontPanel::WriteToBlockPipeIn(int epAddr, int blockSize, long length, unsigned char *data) + { return(okFrontPanel_WriteToBlockPipeIn(h, epAddr, blockSize, length, data)); } +inline long okCFrontPanel::ReadFromBlockPipeOut(int epAddr, int blockSize, long length, unsigned char *data) + { return(okFrontPanel_ReadFromBlockPipeOut(h, epAddr, blockSize, length, data)); } + +} // namespace OpalKellyLegacy + +//------------------------------------------------------------------------ +// FrontPanelManagerHandle C++ wrapper class +//------------------------------------------------------------------------ + +namespace OpalKelly +{ + +inline FrontPanelManager::FrontPanelManager(const std::string& realm) + { h=okFrontPanelManager_Construct(reinterpret_cast(this), realm.c_str()); } +inline FrontPanelManager::~FrontPanelManager() + { okFrontPanelManager_Destruct(h); } + +inline void FrontPanelManager::StartMonitoring() +{ + if (okFrontPanelManager_StartMonitoring(h) != ok_NoError) + throw std::runtime_error("Failed to start monitoring devices connection."); +} + +inline OpalKellyLegacy::okCFrontPanel* FrontPanelManager::Open(const char *serial) +{ + okFrontPanel_HANDLE hFP = okFrontPanelManager_Open(h, serial); + return hFP ? new OpalKellyLegacy::okCFrontPanel(hFP) : NULL; +} + +inline FrontPanelDevices::FrontPanelDevices(const std::string& realm) + { h = okFrontPanelDevices_Construct(realm.c_str()); } +inline FrontPanelDevices::~FrontPanelDevices() + { okFrontPanelDevices_Destruct(h); } + +inline int FrontPanelDevices::GetCount() const + { return okFrontPanelDevices_GetCount(h); } +inline std::string FrontPanelDevices::GetSerial(int num) const + { + char str[MAX_SERIALNUMBER_LENGTH+1]; + okFrontPanelDevices_GetSerial(h, num, str); + return str; + } + +inline FrontPanelPtr FrontPanelDevices::Open(const char* serial) const + { + okFrontPanel_HANDLE hFP = okFrontPanelDevices_Open(h, serial); + FrontPanelPtr p; + if (hFP) + p.reset(new OpalKellyLegacy::okCFrontPanel(hFP)); + return p; + } + +} // namespace OpalKelly + +// For compatibility with the existing user code, all classes in this namespace +// are currently made globally accessible, this will change in the future API +// versions when their counterparts in OpalKelly namespace are provided. +using namespace OpalKellyLegacy; + +#endif // !defined(FRONTPANELDLL_EXPORTS) + +#endif // __cplusplus + +#endif // __okFrontPanelDLL_h__