]> rtime.felk.cvut.cz Git - mf624-simulink.git/blobdiff - sfPWMwDirOutput.c
Allow build of m624 AnalogInput by C89 compiler - i.e. MS Visual C.
[mf624-simulink.git] / sfPWMwDirOutput.c
index 31cf582cef19ed79403b48299e9bf4b1e476f4d4..24bf21ade0687bfe1f1ae9e680a29adb11a830c2 100644 (file)
@@ -56,7 +56,7 @@
 enum {CTR_MODE_ZERO = 0, CTR_MODE_PLUS_PWM = 1, CTR_MODE_PLUS_FULL = 2,
                           CTR_MODE_MINUS_PWM = -1, CTR_MODE_MINUS_FULL = -2};
 
-#define IWORK_COUNT                    4
+#define IWORK_COUNT                    5
 
 #define IWORK_CHANNEL(S)               (ssGetIWork(S)[IWORK_IDX_CHANNEL])
 #define IWORK_DIR_DO_BIT(S)            (ssGetIWork(S)[IWORK_IDX_DIR_DO_BIT])
@@ -76,10 +76,14 @@ enum {CTR_MODE_ZERO = 0, CTR_MODE_PLUS_PWM = 1, CTR_MODE_PLUS_FULL = 2,
  * its associated macro definitions.
  */
 #include "simstruc.h"
+
+#ifndef WITHOUT_HW
 #include "mf624_SIMULINK.h"
+#endif /*WITHOUT_HW*/
 
 #define CTR_MAX_PWM_CHANNEL            3
 
+#ifndef WITHOUT_HW
 typedef struct {
     int32_T STATUS_reg;
     int32_T MODE_reg;
@@ -96,6 +100,7 @@ static const ctr_channel_regs_t ctr_channel2regs[] = {
     {CTR3STATUS_reg, CTR3MODE_reg, CTR3_reg, CTR3A_reg, CTR3B_reg, CTRXCTRL_reg},
     {CTR4STATUS_reg, CTR4MODE_reg, CTR4_reg, CTR4A_reg, -1,        CTRXCTRL_reg}
 };
+#endif /*WITHOUT_HW*/
 
 /* Error handling
  * --------------
@@ -121,6 +126,7 @@ static const ctr_channel_regs_t ctr_channel2regs[] = {
  * See matlabroot/simulink/src/sfuntmpl_doc.c for more details.
  */
 
+#ifndef WITHOUT_HW
 static void fncSetDirOutput(SimStruct *S, int_T direction_mode)
 {
     if (mf624_check(S) != 0)
@@ -135,6 +141,7 @@ static void fncSetDirOutput(SimStruct *S, int_T direction_mode)
 
     mf624_write16(mfst->DOut, MFST2REG(mfst, 2, DOUT_reg));
 }
+#endif /*WITHOUT_HW*/
 
 /*====================*
  * S-function methods *
@@ -269,6 +276,7 @@ static void mdlStart(SimStruct *S)
 {
     int32_T ctr_mode;
 
+  #ifndef WITHOUT_HW
     if (mf624_init(NULL) != 0)
         return;
 
@@ -286,6 +294,7 @@ static void mdlStart(SimStruct *S)
     /* Force output low during startup */
     ctr_mode = __val2mfld(CTR_MODE_OUTPUT_CONTROL_mask, CTR_MODE_OUTPUT_CONTROL_FORCE_LO);
     mf624_write32(ctr_mode, MFST2REG(mfst, 4, ctr_channel2regs[IWORK_CHANNEL(S)].MODE_reg));
+  #endif /*WITHOUT_HW*/
 }
 #endif /*  MDL_START */
 
@@ -308,6 +317,7 @@ static void mdlOutputs(SimStruct *S, int_T tid)
     uint32_T T2_uint;
     int_T new_mode;
 
+  #ifndef WITHOUT_HW
     if (mf624_check(S) != 0)
             return;
 
@@ -410,6 +420,7 @@ static void mdlOutputs(SimStruct *S, int_T tid)
         ctr_ctrl <<= IWORK_CHANNEL(S) * CTRXCTRL_CHANNEL_SHIFT;
         mf624_write32(ctr_ctrl, MFST2REG(mfst, 4, ctr_channel2regs[IWORK_CHANNEL(S)].CTRL_reg));
     }
+  #endif /*WITHOUT_HW*/
 }
 
 
@@ -454,6 +465,7 @@ static void mdlTerminate(SimStruct *S)
 {
     int32_T ctr_mode;
 
+  #ifndef WITHOUT_HW
     if (mf624_check(S) == 0) {
         /* Force output low when finished */
         ctr_mode = __val2mfld(CTR_MODE_OUTPUT_CONTROL_mask, CTR_MODE_OUTPUT_CONTROL_FORCE_LO);
@@ -461,6 +473,7 @@ static void mdlTerminate(SimStruct *S)
     }
 
     mf624_done();
+  #endif /*WITHOUT_HW*/
 }