% Copyright (C) 2013-2014 Czech Technical University in Prague
%
% Authors:
%     - Carlos Jenkins <carlos@jenkins.co.cr>
%
% Permission is hereby granted, free of charge, to any person
% obtaining a copy of this software and associated documentation
% files (the "Software"), to deal in the Software without
% restriction, including without limitation the rights to use,
% copy, modify, merge, publish, distribute, sublicense, and/or sell
% copies of the Software, and to permit persons to whom the
% Software is furnished to do so, subject to the following
% conditions:

% The above copyright notice and this permission notice shall be
% included in all copies or substantial portions of the Software.

% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
% EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
% OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
% NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
% HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
% WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
% FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
% OTHER DEALINGS IN THE SOFTWARE.
%
% File : rpp_select_callback_handler.m
% Abstract:
%     RPP Target select callback handler.
%
%     This callback function is triggered whenever the user selects the target
%     in the System Target File Browser. Default values for Simulation and
%     configurations parameters are set. Some options are disabled if it is not
%     allowed to be changed by user.
%
% References:
%     rtw_ug.pdf p. 1211?


function rpp_select_callback_handler(hDlg, hSrc)

    % The target is model reference compliant
    slConfigUISetVal(hDlg, hSrc, 'ModelReferenceCompliant', 'on');
    slConfigUISetEnabled(hDlg, hSrc, 'ModelReferenceCompliant', false);

    % Set the target language to C and disable modification
    slConfigUISetVal(hDlg, hSrc, 'TargetLang', 'C');
    slConfigUISetEnabled(hDlg, hSrc, 'TargetLang', false);

    % Configure solver
    slConfigUISetVal(hDlg, hSrc, 'SolverType', 'Fixed-step');
    slConfigUISetVal(hDlg, hSrc, 'Solver', 'FixedStepDiscrete');

    % Hardware being used is the production hardware
    slConfigUISetVal(hDlg, hSrc, 'ProdEqTarget', 'on');

    % For real-time builds, we must generate ert_main.c
    slConfigUISetVal(hDlg, hSrc, 'ERTCustomFileTemplate', 'rpp_file_process.tlc');
    slConfigUISetVal(hDlg, hSrc, 'GenerateSampleERTMain', 'off');
    slConfigUISetEnabled(hDlg, hSrc, 'GenerateSampleERTMain', false);

    % Set the TargetLibSuffix
    slConfigUISetVal(hDlg, hSrc, 'TargetLibSuffix', '.a');

    % Interface
    slConfigUISetVal(hDlg, hSrc, 'ExtModeMexArgs', ['1 ''ttyUSB0'' 115200']);

    % Configure PostCodeGen Command to execute
    % (library code inclusion for compilation)
    %% Note: No longer needed with static library
    %% Leaving here for future reference.
    %%slConfigUISetVal(hDlg, hSrc, 'PostCodeGenCommand', ...
    %%    'rpp_lib_support(modelName, buildInfo)');

end
