-
Notifications
You must be signed in to change notification settings - Fork 425
/
Copy pathmain.h
135 lines (109 loc) · 5.29 KB
/
main.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
/* -------------------------------------------------------------------------
///////////////////////////////////////////////////////
/// \file main.h
///
/// \author Thierry Stephane Nouidui,
/// Simulation Research Group,
/// LBNL,
///
/// \date 2011-10-11
///
/// This files contains the definition of all
/// energyplus functions that are needed to mapped
/// to fmiFunctions
/// This file is based on main.h that is copyrighted by
/// QTronic GmbH and that is distributed under the BSD license.
/// Function types for all FMU functions and a struct to wrap a FMU dll.
/// Copyright 2010 QTronic GmbH. All rights reserved.
/// -------------------------------------------------------------------------
*/
#ifndef main_h
#define main_h
// Use windows.h only for Windows
#ifdef _WIN32
#include <windows.h>
#define WINDOWS 1
#else
#define WINDOWS 0
#define HANDLE void *
/* See http://www.yolinux.com/TUTORIALS/LibraryArchives-StaticAndDynamic.html */
#include <sys/stat.h> // for creating dirs on Linux
#endif
#include "fmiModelFunctions.h"
#include "xml_parser_cosim.h"
#include "eplusModelFunctions.h"
typedef const char* (*fGetTypesPlatform)();
typedef const char* (*fGetVersion)();
typedef fmiComponent (*fInstantiateSlave)(fmiString instanceName, fmiString GUID,
fmiString fmuLocation, fmiString mimeType, fmiReal timeout,
fmiBoolean visible, fmiBoolean interactive,
fmiCallbackFunctions functions, fmiBoolean loggingOn);
typedef void (*fFreeSlaveInstance) (fmiComponent c);
typedef fmiStatus (*fResetSlaveInstance) (fmiComponent c);
typedef fmiStatus (*fSetDebugLogging) (fmiComponent c, fmiBoolean loggingOn);
typedef fmiStatus (*fSetReal) (fmiComponent c, const fmiValueReference vr[], size_t nvr, const fmiReal value[]);
typedef fmiStatus (*fSetInteger)(fmiComponent c, const fmiValueReference vr[], size_t nvr, const fmiInteger value[]);
typedef fmiStatus (*fSetBoolean)(fmiComponent c, const fmiValueReference vr[], size_t nvr, const fmiBoolean value[]);
typedef fmiStatus (*fSetString) (fmiComponent c, const fmiValueReference vr[], size_t nvr, const fmiString value[]);
typedef fmiStatus (*fInitializeSlave)(fmiComponent c, fmiReal tStart, fmiBoolean StopTimeDefined, fmiReal tStop);
typedef fmiStatus (*fGetReal) (fmiComponent c, const fmiValueReference vr[], size_t nvr, fmiReal value[]);
typedef fmiStatus (*fGetInteger)(fmiComponent c, const fmiValueReference vr[], size_t nvr, fmiInteger value[]);
typedef fmiStatus (*fGetBoolean)(fmiComponent c, const fmiValueReference vr[], size_t nvr, fmiBoolean value[]);
typedef fmiStatus (*fGetString) (fmiComponent c, const fmiValueReference vr[], size_t nvr, fmiString value[]);
typedef fmiStatus (*fDoStep) (fmiComponent c, fmiReal currentCommunicationPoint, fmiReal communicationStepSize,
fmiBoolean newStep); // Zuo: add for co-sim
typedef struct FMU{
int index;
fmiString modelID;
fmiString modelGUID;
ModelDescription* modelDescription;
HANDLE dllHandle;
fGetTypesPlatform getTypesPlatform;
fGetVersion getVersion;
fInstantiateSlave instantiateSlave;
fFreeSlaveInstance freeSlaveInstance;
fResetSlaveInstance resetSlaveInstance;
fSetDebugLogging setDebugLogging;
fSetReal setReal;
fSetInteger setInteger;
fSetBoolean setBoolean;
fSetString setString;
fInitializeSlave initializeSlave;
fGetReal getReal;
fGetInteger getInteger;
fGetBoolean getBoolean;
fGetString getString;
fDoStep doStep;
} FMU;
fmiComponent fmiEPlusInstantiateSlave(char* fmuResFolder,
fmiInteger *sizefmuResFolder, fmiReal *timeOut, fmiInteger *visible,
fmiInteger *interactive, fmiInteger *loggingOn, fmiInteger *index);
fmiStatus fmiEPlusInitializeSlave(fmiComponent *fmuInstance,
fmiReal *tStart, fmiInteger *newStep, fmiReal *tStop, fmiInteger *index);
fmiStatus fmiEPlusGetReal(fmiComponent *fmuInstance, const fmiValueReference valRef [],
fmiReal outValue[], fmiInteger *numOutputs, fmiInteger *index);
fmiStatus fmiEPlusSetReal(fmiComponent *fmuInstance, const fmiValueReference valRef[],
fmiReal inpVal[], fmiInteger *numInputs, fmiInteger *index);
fmiStatus fmiEPlusDoStep(fmiComponent *fmuInstance, fmiReal *curCommPoint,
fmiReal *commStepSize, fmiInteger *newStep, fmiInteger *index);
fmiStatus fmiEPlusFreeSlave(fmiComponent *fmuInstance, fmiInteger *index);
fmiStatus fmiEPlusResetSlave(fmiComponent *fmuInstance, fmiInteger *index);
fmiInteger fmiEPlusUnpack(char* fmuName, char* fmuOutputWorkingFolder,
fmiInteger *sizefmuName, fmiInteger *sizefmuOutputWorkingFolder);
fmiInteger addLibPathCurrentWorkingFolder(char* trimfmuOutputWorkingFolder_wLiB,
char* fmuWorkingFolder, fmiInteger *sizefmuWorkingFolder,
fmiInteger *index);
fmiInteger getValueReferenceByNameFMUInputVariables(char* variableName,
fmiInteger *sizeVariableName, fmiInteger *index);
fmiInteger getValueReferenceByNameFMUOutputVariables(char* variableName,
fmiInteger *sizeVariableName, fmiInteger *index);
fmiInteger model_ID_GUID(char* fmuWorkingFolder,
fmiInteger *sizefmuWorkingFolder, fmiInteger *numInputs,
fmiInteger *numOutputs);
fmiInteger addFMURootFolderName(char* fmuOutputWorkingFolder,
char* fmuWorkingFolder, fmiInteger *sizefmuWorkingFolder);
fmiInteger getfmiEPlusVersion(char* fmuWorkingFolder,
fmiInteger *sizefmuWorkingFolder, char *fmiVersionNumber, fmiInteger *index);
fmiInteger checkOperatingSystem(char* errorMessage);
#endif // main_h