Files
sil/cr929_SIL/R2018b/rtw/c/src/rtw_modelmap.h
T

279 lines
17 KiB
C
Raw Normal View History

2020-09-30 11:44:05 +08:00
/* Copyright 1994-2014 The MathWorks, Inc. */
/*
* File: rtw_modelmap.h
*
* Abstract:
* Model tuning information. Use the provided structure access methods
* whenever possible.
*
* For details about these structures see Simulink Coder User's guide.
*/
#ifndef __RTW_MODELMAP__
#define __RTW_MODELMAP__
#ifdef SL_INTERNAL
# include "version.h"
# include "util.h"
# include "simstruct/simstruc_types.h"
# include "simulinkcoder_capi_export.hpp"
#else
# include <stdlib.h>
#ifdef HOST_CAPI_BUILD
# include "simstruc_types.h"
#else
# include "rtwtypes.h"
#endif
#ifndef __RTW_UTFREE__
# define __RTW_UTFREE__
# define utFree(arg) if (arg) free(arg)
# define utMalloc(arg) malloc(arg)
#endif
# define SIMULINKCODER_CAPI_API extern
#endif
#include "rtw_capi.h"
#include "rtw_modelmap_logging.h"
typedef struct rtwCAPI_ModelMappingInfo_tag rtwCAPI_ModelMappingInfo;
typedef struct rtwCAPI_ModelMappingStaticInfo_tag rtwCAPI_ModelMappingStaticInfo;
/* ModelMappingStaticInfo */
struct rtwCAPI_ModelMappingStaticInfo_tag {
/* signals */
struct {
rtwCAPI_Signals const *signals; /* Signals Array */
uint_T numSignals; /* Num Signals */
rtwCAPI_Signals const *rootInputs; /* Root Inputs array */
uint_T numRootInputs; /* Num Root Inputs */
rtwCAPI_Signals const *rootOutputs; /* Root Outputs array */
uint_T numRootOutputs;/* Num Root Outputs */
} Signals;
/* parameters */
struct {
rtwCAPI_BlockParameters const *blockParameters; /* Block parameters Array */
uint_T numBlockParameters; /* Num block parameters */
rtwCAPI_ModelParameters const *modelParameters; /* Model parameters Array*/
uint_T numModelParameters; /* Num Model parameters */
} Params;
/* states */
struct {
rtwCAPI_States const *states; /* States array */
uint_T numStates; /* Num States */
} States;
/* Static maps */
/* datatypes, dimensions, fixed point, structure elements, sample times */
struct {
rtwCAPI_DataTypeMap const *dataTypeMap; /* Data Type Map */
rtwCAPI_DimensionMap const *dimensionMap; /* Data Dimension Map */
rtwCAPI_FixPtMap const *fixPtMap; /* Fixed Point Map */
rtwCAPI_ElementMap const *elementMap; /* Structure Element map */
rtwCAPI_SampleTimeMap const *sampleTimeMap; /* Sample Times Map */
uint_T const *dimensionArray; /* Dimension Array */
} Maps;
/* TargetType - string specifying the intended target of the generated *
* C-API. *
* targetType = "float" - target supports floats and integer code *
* = "integer" - target supports integer only code */
char_T const *targetType;
/* for internal use */
uint32_T modelChecksum[4];
rtwCAPI_ModelMapLoggingStaticInfo const *staticLogInfo;
size_t rtpSize;
/* If this instance in a protected model*/
boolean_T isProtectedModel;
};
/* ModelMappingInfo */
struct rtwCAPI_ModelMappingInfo_tag {
/* ModelMappingInfo version */
uint8_T versionNum;
/* Reference to static model data, all model instances share this map */
rtwCAPI_ModelMappingStaticInfo *staticMap;
/* Instance specific Maps, each model instance has a unique InstanceMap */
struct {
const char* path; /* Path to this instance */
char* fullPath;
void** dataAddrMap; /* Data Address map */
rtwCAPI_ModelMappingInfo** childMMIArray; /* array of child MMI */
uint_T childMMIArrayLen; /* Number of child MMIs */
int_T contStateStartIndex;
/* for internal use */
rtwCAPI_ModelMapLoggingInstanceInfo *instanceLogInfo;
int32_T** vardimsAddrMap; /* Vardims Address map */
void* rtpAddress;
RTWLoggingFcnPtr* RTWLoggingPtrs; /* MatFile logging information */
} InstanceMap;
};
/* Macros for accessing ModelMappingStaticInfo fields */
#define rtwCAPI_GetSignalsFromStaticMap(SM) ((SM)->Signals.signals)
#define rtwCAPI_GetNumSignalsFromStaticMap(SM) ((SM)->Signals.numSignals)
#define rtwCAPI_GetLogSignalsArrayFromStaticMap(SM) ((SM)->Signals.logSignalsArray)
#define rtwCAPI_GetNumLogSignalsFromStaticMap(SM) ((SM)->Signals.numLogSignals)
#define rtwCAPI_GetBlockParametersFromStaticMap(SM) ((SM)->Params.blockParameters)
#define rtwCAPI_GetNumBlockParametersFromStaticMap(SM) ((SM)->Params.numBlockParameters)
#define rtwCAPI_GetModelParametersFromStaticMap(SM) ((SM)->Params.modelParameters)
#define rtwCAPI_GetNumModelParametersFromStaticMap(SM) ((SM)->Params.numModelParameters)
#define rtwCAPI_GetStatesFromStaticMap(SM) ((SM)->States.states)
#define rtwCAPI_GetNumStatesFromStaticMap(SM) ((SM)->States.numStates)
#define rtwCAPI_GetRootInputsFromStaticMap(SM) ((SM)->Signals.rootInputs)
#define rtwCAPI_GetNumRootInputsFromStaticMap(SM) ((SM)->Signals.numRootInputs)
#define rtwCAPI_GetRootOutputsFromStaticMap(SM) ((SM)->Signals.rootOutputs)
#define rtwCAPI_GetNumRootOutputsFromStaticMap(SM) ((SM)->Signals.numRootOutputs)
#define rtwCAPI_GetDataTypeMapFromStaticMap(SM) ((SM)->Maps.dataTypeMap)
#define rtwCAPI_GetDimensionMapFromStaticMap(SM) ((SM)->Maps.dimensionMap)
#define rtwCAPI_GetFixPtMapFromStaticMap(SM) ((SM)->Maps.fixPtMap)
#define rtwCAPI_GetElementMapFromStaticMap(SM) ((SM)->Maps.elementMap)
#define rtwCAPI_GetSampleTimeMapFromStaticMap(SM) ((SM)->Maps.sampleTimeMap)
#define rtwCAPI_GetDimensionArrayFromStaticMap(SM) ((SM)->Maps.dimensionArray)
/* Macros for accessing ModelMappingInfo fields */
#define rtwCAPI_GetSignals(MMI) rtwCAPI_GetSignalsFromStaticMap((MMI)->staticMap)
#define rtwCAPI_GetNumSignals(MMI) rtwCAPI_GetNumSignalsFromStaticMap((MMI)->staticMap)
#define rtwCAPI_GetLogSignalsArray(MMI) rtwCAPI_GetLogSignalsArrayFromStaticMap((MMI)->staticMap)
#define rtwCAPI_GetNumLogSignals(MMI) rtwCAPI_GetNumLogSignalsFromStaticMap((MMI)->staticMap)
#define rtwCAPI_GetBlockParameters(MMI) rtwCAPI_GetBlockParametersFromStaticMap((MMI)->staticMap)
#define rtwCAPI_GetNumBlockParameters(MMI) rtwCAPI_GetNumBlockParametersFromStaticMap((MMI)->staticMap)
#define rtwCAPI_GetModelParameters(MMI) rtwCAPI_GetModelParametersFromStaticMap((MMI)->staticMap)
#define rtwCAPI_GetNumModelParameters(MMI) rtwCAPI_GetNumModelParametersFromStaticMap((MMI)->staticMap)
#define rtwCAPI_GetStates(MMI) rtwCAPI_GetStatesFromStaticMap((MMI)->staticMap)
#define rtwCAPI_GetNumStates(MMI) rtwCAPI_GetNumStatesFromStaticMap((MMI)->staticMap)
#define rtwCAPI_GetRootInputs(MMI) rtwCAPI_GetRootInputsFromStaticMap((MMI)->staticMap)
#define rtwCAPI_GetNumRootInputs(MMI) rtwCAPI_GetNumRootInputsFromStaticMap((MMI)->staticMap)
#define rtwCAPI_GetRootOutputs(MMI) rtwCAPI_GetRootOutputsFromStaticMap((MMI)->staticMap)
#define rtwCAPI_GetNumRootOutputs(MMI) rtwCAPI_GetNumRootOutputsFromStaticMap((MMI)->staticMap)
#define rtwCAPI_GetDataTypeMap(MMI) rtwCAPI_GetDataTypeMapFromStaticMap((MMI)->staticMap)
#define rtwCAPI_GetDimensionMap(MMI) rtwCAPI_GetDimensionMapFromStaticMap((MMI)->staticMap)
#define rtwCAPI_GetFixPtMap(MMI) rtwCAPI_GetFixPtMapFromStaticMap((MMI)->staticMap)
#define rtwCAPI_GetElementMap(MMI) rtwCAPI_GetElementMapFromStaticMap((MMI)->staticMap)
#define rtwCAPI_GetSampleTimeMap(MMI) rtwCAPI_GetSampleTimeMapFromStaticMap((MMI)->staticMap)
#define rtwCAPI_GetDimensionArray(MMI) rtwCAPI_GetDimensionArrayFromStaticMap((MMI)->staticMap)
#define rtwCAPI_IsProtectedModel(MMI) ((MMI)->staticMap->isProtectedModel)
#define rtwCAPI_GetStaticLoggingInfo(MMI) ((MMI)->staticMap->staticLogInfo)
#define rtwCAPI_GetVersion(MMI) ((MMI)->versionNum)
#define rtwCAPI_GetDataAddressMap(MMI) ((MMI)->InstanceMap.dataAddrMap)
#define rtwCAPI_GetVarDimsAddressMap(MMI) ((MMI)->InstanceMap.vardimsAddrMap)
#define rtwCAPI_GetRTWLoggingPtrsMap(MMI) ((MMI)->InstanceMap.RTWLoggingPtrs)
#define rtwCAPI_GetPath(MMI) ((MMI)->InstanceMap.path)
#define rtwCAPI_GetFullPath(MMI) ((MMI)->InstanceMap.fullPath)
#define rtwCAPI_GetChildMMI(MMI,i) ((MMI)->InstanceMap.childMMIArray[i])
#define rtwCAPI_GetChildMMIArray(MMI) ((MMI)->InstanceMap.childMMIArray)
#define rtwCAPI_GetChildMMIArrayLen(MMI) ((MMI)->InstanceMap.childMMIArrayLen)
#define rtwCAPI_MMIGetContStateStartIndex(MMI) ((MMI)->InstanceMap.contStateStartIndex)
#define rtwCAPI_GetInstanceLoggingInfo(MMI) ((MMI)->InstanceMap.instanceLogInfo)
/* Macros for setting ModelMappingInfo fields */
#define rtwCAPI_SetVersion(MMI, n) ((MMI).versionNum = (n))
#define rtwCAPI_SetStaticMap(MMI, statMap) (MMI).staticMap = (statMap)
#define rtwCAPI_SetLoggingStaticMap(MMI,lStatMap) (MMI).staticMap->staticLogInfo = (lStatMap)
#define rtwCAPI_SetDataAddressMap(MMI, dAddr) (MMI).InstanceMap.dataAddrMap = (dAddr)
#define rtwCAPI_SetVarDimsAddressMap(MMI, vAddr) (MMI).InstanceMap.vardimsAddrMap = (vAddr)
#define rtwCAPI_SetLoggingPtrs(MMI, lAddr) (MMI).InstanceMap.RTWLoggingPtrs = (lAddr)
#define rtwCAPI_SetPath(MMI,p) (MMI).InstanceMap.path = (p)
#define rtwCAPI_SetFullPath(MMI,p) (MMI).InstanceMap.fullPath = (p)
#define rtwCAPI_SetChildMMI(MMI,i,cMMI) (MMI).InstanceMap.childMMIArray[i] = (cMMI)
#define rtwCAPI_SetChildMMIArray(MMI,cMMIs) (MMI).InstanceMap.childMMIArray = (cMMIs)
#define rtwCAPI_SetChildMMIArrayLen(MMI,n) (MMI).InstanceMap.childMMIArrayLen = (n)
#define rtwCAPI_MMISetContStateStartIndex(MMI,i) (MMI).InstanceMap.contStateStartIndex = (i)
#define rtwCAPI_SetInstanceLoggingInfo(MMI,l) (MMI).InstanceMap.instanceLogInfo = (l)
/* Functions in rtw_modelmap_utils.c */
#ifdef __cplusplus
extern "C" {
#endif
SIMULINKCODER_CAPI_API char* rtwCAPI_EncodePath(const char* path);
SIMULINKCODER_CAPI_API boolean_T rtwCAPI_HasStates(const rtwCAPI_ModelMappingInfo* mmi);
SIMULINKCODER_CAPI_API int_T rtwCAPI_GetNumStateRecords(const rtwCAPI_ModelMappingInfo* mmi);
SIMULINKCODER_CAPI_API int_T rtwCAPI_GetNumStateRecordsForRTWLogging(const rtwCAPI_ModelMappingInfo* mmi);
SIMULINKCODER_CAPI_API int_T rtwCAPI_GetNumContStateRecords(const rtwCAPI_ModelMappingInfo* mmi);
SIMULINKCODER_CAPI_API void rtwCAPI_FreeFullPaths(rtwCAPI_ModelMappingInfo* mmi);
SIMULINKCODER_CAPI_API const char_T* rtwCAPI_UpdateFullPaths(rtwCAPI_ModelMappingInfo* mmi,
const char_T* path,
boolean_T isCalledFromTopModel);
SIMULINKCODER_CAPI_API char* rtwCAPI_GetFullStateBlockPath(const char* stateBlockPath,
const char* mmiPath,
size_t mmiPathLen,
boolean_T crossingModel);
SIMULINKCODER_CAPI_API uint_T rtwCAPI_GetStateWidth(const rtwCAPI_DimensionMap* dimMap,
const uint_T* dimArray,
const rtwCAPI_States* states,
uint_T iState);
SIMULINKCODER_CAPI_API const char_T* rtwCAPI_GetStateRecordInfo(const rtwCAPI_ModelMappingInfo* mmi,
const char_T** sigBlockName,
const char_T** sigLabel,
const char_T** sigName,
int_T* sigWidth,
int_T* sigDataType,
int_T* logDataType,
int_T* sigComplexity,
void** sigDataAddr,
RTWLoggingFcnPtr* RTWLoggingPtrs,
boolean_T* sigCrossMdlRef,
boolean_T* sigInProtectedMdl,
const char_T** sigPathAlias,
double* sigSampleTime,
int_T* sigHierInfoIdx,
uint_T* sigFlatElemIdx,
const rtwCAPI_ModelMappingInfo** sigMMI,
int_T* sigIdx,
boolean_T crossingModel,
boolean_T isInProtectedMdl,
real_T* stateDerivVector,
boolean_T rtwLogging);
SIMULINKCODER_CAPI_API int_T rtwCAPI_GetNumSigLogRecords(const rtwCAPI_ModelMappingInfo* mmi);
SIMULINKCODER_CAPI_API int_T rtwCAPI_GetNumSigLogRecordsForRTWLogging(const rtwCAPI_ModelMappingInfo* mmi);
SIMULINKCODER_CAPI_API const char_T* rtwCAPI_GetSigLogRecordInfo(const rtwCAPI_ModelMappingInfo* mmi,
const char_T** sigBlockName,
const char_T** sigLabel,
int_T* sigWidth,
int_T* sigDataType,
int_T* logDataType,
int_T* sigComplexity,
void** sigDataAddr,
boolean_T* sigCrossMdlRef,
int_T* sigIdx,
boolean_T crossingModel,
boolean_T rtwLogging);
SIMULINKCODER_CAPI_API void rtwCAPI_CountSysRan(const rtwCAPI_ModelMappingInfo *mmi,
int *count);
SIMULINKCODER_CAPI_API void rtwCAPI_FillSysRan(const rtwCAPI_ModelMappingInfo *mmi,
sysRanDType **sysRan,
int *sysTid,
int *fillIdx);
#ifdef __cplusplus
}
#endif
#endif /* __RTW_MODELMAP__ */
/* EOF - rtw_modelmap.h */
/* LocalWords: MMI Vardims utils
*/