#ifndef __Ifc_Test_OrthOsc2_h__
#define __Ifc_Test_OrthOsc2_h__
/**This headerfile describes the interface to the code generated module.
 *
 */


#include "src2Smlk/Test_OrthOsc2.h"         //generated file from Simulink coder
#include "src2Smlk/Test_OrthOsc2_private.h"         //generated file from Simulink coder
#include "src2Smlk/Test_OrthOsc2_types.h"   //generated file from Simulink coder
//#include "src2/Test_OrthOsc2.h"

struct SimTime_Inspc_t;

/**The input data of the simulink code generated module. 
 * Simulink expects the inputs in several step times per value. 
 * This struct is defined and used outside of the code generation. It is the wrapper arround.
 */
typedef struct Input_OrthOscSmlk_t
{
  float x[2];
   
  float fq;

  int32 wi;

} Input_OrthOscSmlk;


/**The input data of the simulink code generated module. 
 * Simulink expects the inputs in several step times per value. 
 * This struct is defined and used outside of the code generation. It is the wrapper arround.
 */
typedef struct Output_OrthOscSmlk_t
{
  OS_HandlePtr(Output_Test_OrthOsc2, Test_OrthOsc2);

  OS_HandlePtr(Data_Test_OrthOsc2, data_inspc);

  float ya1[2];

  float_complex yab1[2];

  float_complex ypq[2];

  float_complex wab;


} Output_OrthOscSmlk;


/**This is the necessary struct to run the generated code from Simulink.
 * The Simulink code is generated as 'CodeInterfacePackaging  "Reusable function"',
 * therefore the memory for the generated code should be offered from the application.
 * The generated code expects the RT_MODEL_Test_OrthOsc2_T mainData,
 * but with 2 references to data and dwork. Both are also here defined.
 * The [[ctor_OrthOscSmlk(...)]] sets the references.
 * This struct can be part of the reflection data or not. 
 * It should be a part of reflection data only if details of the generated code should be evaluated. 
 */
typedef struct OrthOscSmlk_t{
  
  //BlockIO_Test_OrthOsc2_T data;
  //Parameters_Test_OrthOsc2_T Test_OrthOsc2_P = {0};

  //D_Work_Test_OrthOsc2_T dwork;

  
  //RT_MODEL_Test_OrthOsc2_T mainData;

  B_Test_OrthOsc2_T blockIO;
  ExtU_Test_OrthOsc2_T inputs;
  ExtY_Test_OrthOsc2_T outputs;
  DW_Test_OrthOsc2_T dwork;

  RT_MODEL_Test_OrthOsc2_T modell;

} OrthOscSmlk;

/**Constructor for the data for the generated code, should be invoked before invoking the generated code.
 */
INLINE_Fwc void ctor_OrthOscSmlk(OrthOscSmlk* thiz) {
  thiz->modell.blockIO = &thiz->blockIO;
  thiz->modell.inputs = &thiz->inputs;
  thiz->modell.outputs = &thiz->outputs;
  thiz->modell.dwork = &thiz->dwork;
  //thiz->mainData.ModelData.dwork = &thiz->dwork;

}

/**Test routine should be called from main(), with scheduler. 
 * The test routine is in another source than main because it is used by 2 applications, with and without inspector access.
 * This is the forward declaration to call it with the given data struct of the necessary data for simulation.
 * @param thiz may be uninitialized, simulation data. 
 */
void init_Test_OrthOscSmlk(OrthOscSmlk* thiz); //, Input_OrthOscSmlk* inp, Output_OrthOscSmlk* out);


/**Test routine should be called from main(), with scheduler. 
 * The test routine is in another source than main because it is used by 2 applications, with and without inspector access.
 * This is the forward declaration to call it with the given data struct of the necessary data for simulation.
 * @param thiz may be uninitialized, simulation data. 
 */
int step_Test_OrthOscSmlk(OrthOscSmlk* thiz/*, Input_OrthOscSmlk* inp, Output_OrthOscSmlk* out*/, struct SimTime_Fwc_t* simTime);



/**The application data which uses the Simulink code-generated module.
 * It contains the simulink internal data and the input and output data.
 */
typedef struct Appl_Test_OrthOsc_t
{ ObjectJc obj;
  OrthOscSmlk smlkDataOrthOscSmlk;
  //Input_OrthOscSmlk inOrthOscSmlk;
  //Output_OrthOscSmlk outOrthOscSmlk;

  int32 bRun;
  int32 spare;
} Appl_Test_OrthOsc;





#endif //__Ifc_Test_OrthOsc2_h__
