]> rtime.felk.cvut.cz Git - pes-rpp/rpp-lib.git/commitdiff
FlexRay bug in reconfiguration function repaired.
authorMichal Horn <hornmich@fel.cvut.cz>
Mon, 23 Sep 2013 13:51:58 +0000 (15:51 +0200)
committerMichal Horn <hornmich@fel.cvut.cz>
Mon, 23 Sep 2013 13:51:58 +0000 (15:51 +0200)
The function was used old buffer data for channel and cycle filtering parameters instead using the new one.

rpp/src/drv/fr_tms570.c

index cd0c11d84a091e6b26c22408f8ca449186b15797..2b72d35f86ca4aad48ea61a0d238d5d5392b4855 100644 (file)
@@ -1747,7 +1747,7 @@ Std_ReturnType Fr_ReconfigLPdu(uint8_t Fr_CtrlIdx, uint16_t Fr_LPduIdx, uint16_t
        int lowest_index = 0;
        uint8_t highest_index = frayREG->MRC_UN.MRC_ST.ffb_B8;
        uint32_t mode;
-       const Fr_TMS570LS_BufferConfigType* buffer_cfg_ptr;
+       Fr_TMS570LS_BufferConfigType buffer_cfg;
 
 #ifdef DET_ACTIVATED
        boolean_t reconfigured = FALSE;
@@ -1788,13 +1788,18 @@ Std_ReturnType Fr_ReconfigLPdu(uint8_t Fr_CtrlIdx, uint16_t Fr_LPduIdx, uint16_t
        for (bufferIndex = lowest_index; bufferIndex < highest_index; bufferIndex++) {
                if (Fr_buffer_slot_map[bufferIndex].slot_id == Fr_LPduIdx) {
                        if (Fr_BuffersConfigured[bufferIndex] == TRUE) {        // Buffer was configured already
-                               buffer_cfg_ptr = Fr_buffer_slot_map[bufferIndex].buffer_ptr;
-                               if (payload_in_hw > buffer_cfg_ptr->maxPayload) {
+                               buffer_cfg = *Fr_buffer_slot_map[bufferIndex].buffer_ptr;
+                               buffer_cfg.channel = Fr_ChnlIdx;
+                               buffer_cfg.cycleCounterFiltering = cycle_filter;
+                               buffer_cfg.slotId = Fr_FrameId;
+                               buffer_cfg.maxPayload = payload_in_hw;
+                               if (buffer_cfg.maxPayload > Fr_buffer_slot_map[bufferIndex].buffer_ptr->maxPayload) {
                                        return E_NOT_OK | ERR_PARAM_PAYLOAD_TOO_BIG;
                                }
+                               Fr_buffer_slot_map[bufferIndex].act_payload = payload_in_hw;
                                Fr_buffer_slot_map[bufferIndex].slot_id = Fr_FrameId;
-                               mode = Fr_buffer_config_flags(buffer_cfg_ptr, bufferIndex);
-                               Fr_config_buffer(bufferIndex, mode, cycle_filter, Fr_FrameId, payload_in_hw, Fr_MsgRAMDataPtrs[bufferIndex]);
+                               mode = Fr_buffer_config_flags(&buffer_cfg, bufferIndex);
+                               Fr_config_buffer(bufferIndex, mode, buffer_cfg.cycleCounterFiltering, buffer_cfg.slotId, buffer_cfg.maxPayload, Fr_MsgRAMDataPtrs[bufferIndex]);
 #ifdef DET_ACTIVATED
                                reconfigured = TRUE;
 #endif