gusucode.com > private工具箱matlab源码程序 > private/code_machine_header_file_rtw.m
function code_machine_header_file_rtw(fileNameInfo) % CODE_MACHINE_HEADER_FILE(FILENAMEINFO) % Copyright 1995-2012 The MathWorks, Inc. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%% GLOBAL VARIABLES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%% Coding options global gMachineInfo gTargetInfo fileName = fullfile(fileNameInfo.targetDirName,fileNameInfo.machineHeaderFile); sf_echo_generating('Coder',fileName); machine = gMachineInfo.machineId; file = fopen(fileName,'Wt'); if file<3 construct_coder_error([],sprintf('Failed to create file: %s.',fileName),1); end fprintf(file,'%%implements "machineHeader" "C"\n'); fprintf(file,'%%function CacheOutputs(block,system) void\n'); if gTargetInfo.codingMemcpy && ~isempty(gMachineInfo.machineData) fprintf(file,' %%<LibAddToCommonIncludes("<string.h>")>\n'); end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% A few useful defines and includes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% if gTargetInfo.codingLibrary customCodeSettings = get_custom_code_settings(gMachineInfo.target,gMachineInfo.parentTarget); customCodeString = customCodeSettings.customCode; if(~isempty(customCodeString)) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Custom Code Included on the target %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% fprintf(file,' %%openfile ccBuf\n'); customCodeString = sfprivate('expand_double_byte_string',customCodeString); fprintf(file,' %s\n',customCodeString); fprintf(file,'\n'); fprintf(file,' %%closefile ccBuf\n'); fprintf(file,' %%<SLibCacheCodeToFile("sf_machine_incl",ccBuf)>\n'); fprintf(file,'\n'); end end if gTargetInfo.codingSLRT fprintf(file,' %%<LibAddToCommonIncludes("xpcimports.h")>\n'); end if gTargetInfo.codingRTW && Simulink.harness.internal.isInstalled chartIds = sf('ChartsOf', machine); if any(sf('get', chartIds, '.sfunInfo.chartUsesVerify')) fprintf(file,' %%<LibAddToCommonIncludes("slTestResult.h")>\n'); fprintf(file,' %%<LibAddToCommonIncludes("slTestTypes.h")>\n'); end end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Types %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% fprintf(file,'%%openfile typedefsBuf \n'); types = sf('Cg','get_types',machine); for type = types codeStr = sf('Cg','get_type_def',type,0); fprintf(file,' %s \n',codeStr); end fprintf(file,'%%closefile typedefsBuf\n'); fprintf(file,'%%<SLibCacheCodeToFile("sf_machine_typedef",typedefsBuf)>\n'); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Named Constants %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% fprintf(file,'%%openfile definesBuf \n'); namedConsts = sf('Cg','get_named_consts',machine); for namedConst = namedConsts codeStr = sf('Cg','get_named_const_def',namedConst,0); fprintf(file,' %s \n',strip_trailing_new_lines(codeStr)); end fprintf(file,'%%closefile definesBuf\n'); fprintf(file,'%%<SLibCacheCodeToFile("sf_machine_data_define",definesBuf)>\n'); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Vars %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% fprintf(file,'%%openfile externDataBuf\n'); vars = sf('Cg','get_non_exported_vars',machine); for var = vars codeStr = sf('Cg','get_var_decl',var,0); fprintf(file,' %s \n',strip_trailing_new_lines(codeStr)); end fprintf(file,'%%closefile externDataBuf\n'); fprintf(file,'%%<SLibCacheCodeToFile("sf_machine_extern_data_decl",externDataBuf)>\n'); fprintf(file,'%%openfile externDataBuf\n'); vars = sf('Cg','get_exported_vars',machine); for var = vars codeStr = sf('Cg','get_var_decl',var,0); fprintf(file,' %s \n',strip_trailing_new_lines(codeStr)); end fprintf(file,'%%closefile externDataBuf\n'); fprintf(file,'%%<SLibCacheCodeToFile("sf_machine_public_extern_data_decl",externDataBuf)>\n'); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%% function Decls %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% fprintf(file,'%%openfile externDataBuf\n'); fprintf(file,'\n'); funcs = sf('Cg','get_functions',machine); for func = funcs codeStr = sf('Cg','get_fcn_decl',func,0); fprintf(file,' %s \n',strip_trailing_new_lines(codeStr)); end if ~sf('feature', 'ScopedSimulinkFunctions') if(gTargetInfo.codingLibrary && gMachineInfo.parentTarget~=gMachineInfo.target) % exported fcns are already included in the parent machine else % dump_exported_fcn_prototypes(file); end end fprintf(file,'%%closefile externDataBuf\n'); fprintf(file,'%%<SLibCacheCodeToFile("sf_machine_extern_fcn_decl",externDataBuf)>\n'); fprintf(file,'%%endfunction %%%% CacheOutputs\n'); fprintf(file,' \n'); fprintf(file,'\n'); fclose(file); try_indenting_file(fileName);