]> rtime.felk.cvut.cz Git - mf624-simulink.git/blobdiff - sfPWMwDirOutput.c
Add build mode WITHOUT_HW to edit model without MF624 hardware access.
[mf624-simulink.git] / sfPWMwDirOutput.c
index 3751f623901320de35baebd34f163637bf029cf1..24bf21ade0687bfe1f1ae9e680a29adb11a830c2 100644 (file)
@@ -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*/
 }