]> rtime.felk.cvut.cz Git - pes-rpp/rpp-simulink.git/commitdiff
FlexRay receive and transmit blocks modified to send and receive multiple bytes
authorMichal Horn <hornmich@fel.cvut.cz>
Mon, 30 Sep 2013 10:33:36 +0000 (12:33 +0200)
committerMichal Horn <hornmich@fel.cvut.cz>
Mon, 30 Sep 2013 10:33:36 +0000 (12:33 +0200)
rpp/blocks/sfunction_frayreceive.c
rpp/blocks/sfunction_fraytransmit.c
rpp/blocks/tlc_c/sfunction_frayreceive.tlc
rpp/blocks/tlc_c/sfunction_fraytransmit.tlc

index 83828a924a9c06198bccb6ebdf89902884fe8aa5..8ab6a21c83c9f979267dd9275f137b1da253fd6d 100644 (file)
@@ -78,9 +78,9 @@ static void mdlInitializeSizes(SimStruct *S)
         return;
     }
        rppAddOutputPort(S, OUTPUT_ERROR_FLAG, SS_BOOLEAN);
-       rppAddOutputPort(S, OUTPUT_MESSAGE,        SS_UINT8);
-       rppAddOutputPort(S, OUTPUT_LENGTH,         SS_UINT8);
-       rppAddOutputPort(S, OUTPUT_TRIGGER,        SS_BOOLEAN);
+       rppAddOutputVectorPort(S, OUTPUT_MESSAGE, SS_UINT8, 2*(int_T)mxGetPr(ssGetSFcnParam(S, 2))[0]);
+       rppAddOutputPort(S, OUTPUT_LENGTH, SS_UINT8);
+       rppAddOutputPort(S, OUTPUT_TRIGGER, SS_BOOLEAN);
 
     /* Set standard options for this block */
     rppSetStandardOptions(S);
index 0915e67e592259ca3cc033c927c862c8cfc31dda..052c8651ff1b334489fcf23f4633db376b10fd93 100644 (file)
@@ -56,7 +56,7 @@ static void mdlInitializeSizes(SimStruct *S)
     if(!ssSetNumInputPorts(S, 1)) {
         return;
     }
-    rppAddInputPort(S, 0, SS_UINT8);
+       rppAddInputVectorPort(S, 0, SS_UINT8, 2*(int_T)mxGetPr(ssGetSFcnParam(S, 2))[0]);
 
     /*
      * Configure output ports: 1
index 37cd61da6a2e3639286716eccb3325a220c09f9a..271c5fd0dc5e40af7e487514cd6b72744767ac6a 100644 (file)
            %assign ::_RPP_FRAYSTEP_TMP_VARS_ = 1
                int8_t retVal;
        %endif
+       %if EXISTS("_RPP_FRAYREC_TMP_VARS_") == 0
+           %assign ::_RPP_FRAYREC_TMP_VARS_ = 1
+               int8_t i;
+       %endif
 
     %if !SLibCodeGenForSim()
                %% Get parameters
         %assign slotId_val = LibBlockParameterValue(slotId, 0)
+        %assign maxPayload_val = LibBlockParameterValue(maxPayload, 0)
 
         %% Get IO signals
         %assign err_flag = LibBlockOutputSignal(0, "", "", 0)
@@ -88,7 +93,7 @@
 
                %if EXISTS("_RPP_FRAYSTEP_RX_VARS_") == 0
                  %assign ::_RPP_FRAYSTEP_RX_VARS_ = 1
-                 uint8_t rec_msg[16];
+                 uint8_t rec_msg[%<maxPayload_val>*2];
                  uint8_t rec_length;
                  Fr_RxLPduStatusType rec_status;
                %endif
                        else {
                                rpp_sci_printf("Message from slot %#x received:%#x\n", %<slotId_val>, rec_msg[0]);
                                %<trigger> = 1;
-                               %<message> = rec_msg[0];
+                               for (i = 0; i < %<maxPayload_val>*2; i++) {
+                                       *(&%<message>+i) = rec_msg[i];
+                               }
                                %<length> = rec_length;
                        }
                }
index e782e16a230dda2d7710f11f680590e3ab4cd09e..547e3261fc69a463c64bc63e74c8069fe17e6abd 100644 (file)
@@ -98,6 +98,7 @@
     %if !SLibCodeGenForSim()
                %% Get parameters
         %assign slotId_val = LibBlockParameterValue(slotId, 0)
+        %assign maxPayload_val = LibBlockParameterValue(maxPayload, 0)
 
         %% Get IO signals
         %assign message = LibBlockInputSignal(0, "", "", 0)
 
                rpp_sci_printf("sending message %#x on slot %d.\n", %<message>, %<slotId_val>);
 
-               retVal = rpp_fr_transmit_lpdu(0, %<slotId_val>, &%<message>, 1);
+               retVal = rpp_fr_transmit_lpdu(0, %<slotId_val>, &%<message>, %<maxPayload_val>*2);
                if (retVal == FAILURE) {
                        rpp_sci_printf("Sending a message to slot %#x failed.\n", %<slotId_val>);
                        %<err_flag> = TRUE;