diff --git a/sources/jvxApplications/jvx-m-host-1/m-files/matlab/profiling/jvxProfileConfig.m b/sources/jvxApplications/jvx-m-host-1/m-files/matlab/profiling/jvxProfileConfig.m index 09ef7d3d..9b16fc95 100644 --- a/sources/jvxApplications/jvx-m-host-1/m-files/matlab/profiling/jvxProfileConfig.m +++ b/sources/jvxApplications/jvx-m-host-1/m-files/matlab/profiling/jvxProfileConfig.m @@ -1,26 +1,29 @@ -function hdl_profile_data = jvxProfileNeleConfig() - hdl_profile_data = []; - - % Allocate Debug handle - hdl = []; - hdl.hooks.inUse = false; - - global hdl_profile_data; - if(~isempty(hdl_profile_data)) +function hdl = jvxProfileConfig(hdl) + + initHooks = false; + if(~isempty(hdl)) if( ... - (isfield(hdl_profile_data, 'cfg')) && ... - (isfield(hdl_profile_data, 'start')) && ... - (isfield(hdl_profile_data, 'step')) && ... - (isfield(hdl_profile_data, 'stop'))) - hdl.hooks.init = hdl_profile_data; - hdl.hooks.inUse = true; + (isfield(hdl, 'cfg')) && ... + (isfield(hdl, 'start')) && ... + (isfield(hdl, 'step')) && ... + (isfield(hdl, 'stop'))) + initHooks = true; end end + if(initHooks) + hdl.hooks.init = hdl; + hdl.hooks.inUse = true; + else + hdl.hooks.inUse = false; + end + + % Set test points to "none" by default + hdl.cfg = []; + hdl.cfg.tokenTp.SELECTION_BITFIELD = '0x0'; + if(hdl.hooks.inUse == true) [hdl] = hdl.hooks.init.cfg(hdl); - else + else warning('We need to set the profiling configuration here!'); - end - - warning('Populate at this point to control the degree of debug output!'); + end diff --git a/sources/jvxApplications/jvx-m-host-1/m-files/matlab/profiling/jvxProfileStart.m b/sources/jvxApplications/jvx-m-host-1/m-files/matlab/profiling/jvxProfileStart.m index 480356d3..a2be01a0 100644 --- a/sources/jvxApplications/jvx-m-host-1/m-files/matlab/profiling/jvxProfileStart.m +++ b/sources/jvxApplications/jvx-m-host-1/m-files/matlab/profiling/jvxProfileStart.m @@ -1,4 +1,4 @@ -function [hdl_profile_data] = jvxProfileNeleStart(hdl_profile_data) +function [hdl] = jvxProfileStart(hdl) global inProcessing; hdl.nFrames = inProcessing.in_frames; diff --git a/sources/jvxApplications/jvx-m-host-1/m-files/matlab/profiling/jvxProfileStep.m b/sources/jvxApplications/jvx-m-host-1/m-files/matlab/profiling/jvxProfileStep.m index 3c5a4e76..add62924 100644 --- a/sources/jvxApplications/jvx-m-host-1/m-files/matlab/profiling/jvxProfileStep.m +++ b/sources/jvxApplications/jvx-m-host-1/m-files/matlab/profiling/jvxProfileStep.m @@ -1,4 +1,4 @@ -function [hdl_profile_data] = jvxProfileNeleStep(hdl_profile_data) +function [hdl] = jvxProfileStep(hdl) % Get the frame count global inProcessing; diff --git a/sources/jvxApplications/jvx-m-host-1/m-files/matlab/profiling/jvxProfileStop.m b/sources/jvxApplications/jvx-m-host-1/m-files/matlab/profiling/jvxProfileStop.m index 0c46e747..68bbaa3a 100644 --- a/sources/jvxApplications/jvx-m-host-1/m-files/matlab/profiling/jvxProfileStop.m +++ b/sources/jvxApplications/jvx-m-host-1/m-files/matlab/profiling/jvxProfileStop.m @@ -1,4 +1,4 @@ -function jvxProfileNeleStop(hdl_profile_data) +function jvxProfileStop(hdl) runAnyway = false; if(hdl.hooks.inUse == true) diff --git a/sources/jvxLibraries/ayf-mex-connect/src/CjvxMatlabToCConverter.cpp b/sources/jvxLibraries/ayf-mex-connect/src/CjvxMatlabToCConverter.cpp index c80a4ebb..634445e1 100644 --- a/sources/jvxLibraries/ayf-mex-connect/src/CjvxMatlabToCConverter.cpp +++ b/sources/jvxLibraries/ayf-mex-connect/src/CjvxMatlabToCConverter.cpp @@ -41,6 +41,7 @@ CjvxMatlabToCConverter::convert_mat_buf_c_buf_1_x_N(jvxHandle* data_setprops, jv jvxUInt32* dat_uint32 = NULL; jvxUInt16* dat_uint16 = NULL; jvxUInt8* dat_uint8 = NULL; + mxLogical* dat_logical = NULL; jvxData* jvx_data = NULL; jvxInt64* jvx_int64 = NULL; @@ -95,6 +96,10 @@ CjvxMatlabToCConverter::convert_mat_buf_c_buf_1_x_N(jvxHandle* data_setprops, jv { dat_uint8 = (jvxUInt8*)mxGetData(prhs); } + else if (mxIsLogical(prhs)) + { + dat_logical = (mxLogical*)mxGetData(prhs); + } // Now, convert switch (format) @@ -167,6 +172,10 @@ CjvxMatlabToCConverter::convert_mat_buf_c_buf_1_x_N(jvxHandle* data_setprops, jv { JVX_CONVERSION_LOOP(failedTransfer, dat_uint32, jvx_data, N, jvxData, ); } + else if (dat_logical) + { + JVX_CONVERSION_LOOP(failedTransfer, dat_logical, jvx_data, N, jvxData, ); + } else if (dat_uint16) { JVX_CONVERSION_LOOP(failedTransfer, dat_uint16, jvx_data, N, jvxData, ); @@ -210,6 +219,10 @@ CjvxMatlabToCConverter::convert_mat_buf_c_buf_1_x_N(jvxHandle* data_setprops, jv { JVX_CONVERSION_LOOP(failedTransfer, dat_uint32, jvx_sz, N, jvxData, JVX_DATA2SIZE); } + else if (dat_logical) + { + JVX_CONVERSION_LOOP(failedTransfer, dat_logical, jvx_sz, N, jvxSize, ); + } else if (dat_uint16) { JVX_CONVERSION_LOOP(failedTransfer, dat_uint16, jvx_sz, N, jvxData, JVX_DATA2SIZE); @@ -257,6 +270,10 @@ CjvxMatlabToCConverter::convert_mat_buf_c_buf_1_x_N(jvxHandle* data_setprops, jv { JVX_CONVERSION_LOOP(failedTransfer, dat_uint16, jvx_int64, N, jvxData, JVX_DATA2INT64); } + else if (dat_logical) + { + JVX_CONVERSION_LOOP(failedTransfer, dat_logical, jvx_int64, N, jvxInt64, ); + } else if (dat_uint8) { JVX_CONVERSION_LOOP(failedTransfer, dat_uint8, jvx_int64, N, jvxData, JVX_DATA2INT64); @@ -300,6 +317,10 @@ CjvxMatlabToCConverter::convert_mat_buf_c_buf_1_x_N(jvxHandle* data_setprops, jv { JVX_CONVERSION_LOOP(failedTransfer, dat_uint16, jvx_int32, N, jvxData, JVX_DATA2INT32); } + else if (dat_logical) + { + JVX_CONVERSION_LOOP(failedTransfer, dat_logical, jvx_int32, N, jvxInt32, ); + } else if (dat_uint8) { JVX_CONVERSION_LOOP(failedTransfer, dat_uint8, jvx_int32, N, jvxData, JVX_DATA2INT32); @@ -343,6 +364,10 @@ CjvxMatlabToCConverter::convert_mat_buf_c_buf_1_x_N(jvxHandle* data_setprops, jv { JVX_CONVERSION_LOOP_LIM(failedTransfer, dat_uint16, jvx_int16, N, jvxData, JVX_DATA2INT16, 0x7FFF, -0x7FFF); } + else if (dat_logical) + { + JVX_CONVERSION_LOOP(failedTransfer, dat_logical, jvx_int16, N, jvxInt16, ); + } else if (dat_uint8) { JVX_CONVERSION_LOOP(failedTransfer, dat_uint8, jvx_int16, N, jvxData, JVX_DATA2INT16); @@ -382,6 +407,10 @@ CjvxMatlabToCConverter::convert_mat_buf_c_buf_1_x_N(jvxHandle* data_setprops, jv { JVX_CONVERSION_LOOP_LIM(failedTransfer, dat_uint32, jvx_int8, N, jvxData, JVX_DATA2INT8, 0x7F, -0x7F); } + else if (dat_logical) + { + JVX_CONVERSION_LOOP(failedTransfer, dat_logical, jvx_int8, N, jvxInt8, ); + } else if (dat_uint16) { JVX_CONVERSION_LOOP_LIM(failedTransfer, dat_uint16, jvx_int8, N, jvxData, JVX_DATA2INT8, 0x7F, -0x7F); @@ -430,6 +459,10 @@ CjvxMatlabToCConverter::convert_mat_buf_c_buf_1_x_N(jvxHandle* data_setprops, jv { JVX_CONVERSION_LOOP(failedTransfer, dat_uint16, jvx_uint64, N, jvxData, JVX_DATA2UINT64); } + else if (dat_logical) + { + JVX_CONVERSION_LOOP(failedTransfer, dat_logical, jvx_uint64, N, jvxUInt64, ); + } else if (dat_uint8) { JVX_CONVERSION_LOOP(failedTransfer, dat_uint8, jvx_uint64, N, jvxData, JVX_DATA2UINT64); @@ -473,6 +506,10 @@ CjvxMatlabToCConverter::convert_mat_buf_c_buf_1_x_N(jvxHandle* data_setprops, jv { JVX_CONVERSION_LOOP(failedTransfer, dat_uint16, jvx_uint32, N, jvxData, JVX_DATA2UINT32); } + else if (dat_logical) + { + JVX_CONVERSION_LOOP(failedTransfer, dat_logical, jvx_uint32, N, jvxUInt32, ); + } else if (dat_uint8) { JVX_CONVERSION_LOOP(failedTransfer, dat_uint8, jvx_uint32, N, jvxData, JVX_DATA2UINT32); @@ -512,6 +549,10 @@ CjvxMatlabToCConverter::convert_mat_buf_c_buf_1_x_N(jvxHandle* data_setprops, jv { JVX_CONVERSION_LOOP_LIM(failedTransfer, dat_uint32, jvx_uint16, N, jvxData, JVX_DATA2UINT16, 0xFFFF, 0); } + else if (dat_logical) + { + JVX_CONVERSION_LOOP(failedTransfer, dat_logical, jvx_uint16, N, jvxUInt16, ); + } else if (dat_uint16) { JVX_CONVERSION_LOOP(failedTransfer, dat_uint16, jvx_uint16, N, jvxUInt16, ); @@ -555,6 +596,10 @@ CjvxMatlabToCConverter::convert_mat_buf_c_buf_1_x_N(jvxHandle* data_setprops, jv { JVX_CONVERSION_LOOP_LIM(failedTransfer, dat_uint32, jvx_uint8, N, jvxData, JVX_DATA2UINT8, 0xFF, 0); } + else if (dat_logical) + { + JVX_CONVERSION_LOOP(failedTransfer, dat_logical, jvx_uint8, N, jvxUInt8, ); + } else if (dat_uint16) { JVX_CONVERSION_LOOP_LIM(failedTransfer, dat_uint16, jvx_uint8, N, jvxData, JVX_DATA2INT8, 0xFF, 0); diff --git a/sources/jvxLibraries/jvxLexternalCall/include/CjvxMexCallsProfileTpl.h b/sources/jvxLibraries/jvxLexternalCall/include/CjvxMexCallsProfileTpl.h index b260915e..c1e6b84f 100644 --- a/sources/jvxLibraries/jvxLexternalCall/include/CjvxMexCallsProfileTpl.h +++ b/sources/jvxLibraries/jvxLexternalCall/include/CjvxMexCallsProfileTpl.h @@ -12,8 +12,8 @@ class CjvxMexCallsProfileTpl : public CjvxMexCallsTpl, public CjvxMexCallsPro protected: struct { - jvxCBool skipInvolveCCode = c_false; - jvxBool matlab_profiling_enabled = false; + jvxCBool skip_involve_ccode = c_false; + jvxCBool matlab_profiling_enabled = c_false; } config; //! temporary fields for parallel processing C and Matlab @@ -116,6 +116,11 @@ class CjvxMexCallsProfileTpl : public CjvxMexCallsTpl, public CjvxMexCallsPro jvxBool engaged = false; jvxBool skipCCode = false; + if (config.skip_involve_ccode) + { + skipCCode = true; + } + // Pass control to Matlab processing // Check if checkbox in Matlab processing was checked @@ -138,12 +143,7 @@ class CjvxMexCallsProfileTpl : public CjvxMexCallsTpl, public CjvxMexCallsPro { // Run this command only once!! Need to put it here since processing information is not available in "prepare"!! CjvxMexCallsProfiler::profile_start_in_process(); - } - - if (config.skipInvolveCCode) - { - skipCCode = true; - } + } if (!skipCCode) { diff --git a/sources/jvxLibraries/jvxLexternalCall/src/CjvxMexCallsProfiler.cpp b/sources/jvxLibraries/jvxLexternalCall/src/CjvxMexCallsProfiler.cpp index d6c2aa4b..fa3ff218 100644 --- a/sources/jvxLibraries/jvxLexternalCall/src/CjvxMexCallsProfiler.cpp +++ b/sources/jvxLibraries/jvxLexternalCall/src/CjvxMexCallsProfiler.cpp @@ -125,7 +125,9 @@ CjvxMexCallsProfiler::profile_config_on_prepare() jvxErrorType res = JVX_NO_ERROR; jvxErrorType resM = JVX_NO_ERROR; debugStartDone = false; - std::string command = "global " + CjvxMexCallsProfiler::varNameHdlMatlab + "; " + CjvxMexCallsProfiler::varNameHdlMatlab + " = " + CjvxMexCallsProfiler::commandProfileConfig + "(); "; + std::string command = "global " + CjvxMexCallsProfiler::varNameHdlMatlab + "; " + + CjvxMexCallsProfiler::varNameHdlMatlab + " = " + + CjvxMexCallsProfiler::commandProfileConfig + "(" + CjvxMexCallsProfiler::varNameHdlMatlab + "); "; resM = _theExtCallHandler->executeExternalCommand(command.c_str()); if (resM != JVX_NO_ERROR) {