]> rtime.felk.cvut.cz Git - arc.git/commitdiff
CAN bugs fixed after mcaltest 5567
authorjcar <devnull@localhost>
Fri, 20 Apr 2012 12:14:16 +0000 (14:14 +0200)
committerjcar <devnull@localhost>
Fri, 20 Apr 2012 12:14:16 +0000 (14:14 +0200)
arch/ppc/mpc55xx/drivers/Can.c
communication/CanIf/CanIf.c

index b049fb230c7cd7a518eff951a520768e6de6a3c6..6ccba1646c7f37e571bbf2c6f0f7021f49df43d0 100644 (file)
@@ -644,7 +644,7 @@ static void Can_Isr_Rx(Can_UnitType *uPtr)
 \r
 static void Can_Isr(int controller )\r
 {\r
-    Can_UnitType *uPtr = &CanUnit[controller];\r
+    Can_UnitType *uPtr = CTRL_TO_UNIT_PTR(controller);\r
 \r
     if(uPtr->cfgCtrlPtr->Can_Arc_Flags & CAN_CTRL_TX_PROCESSING_INTERRUPT ){\r
         Can_Isr_Tx(uPtr);\r
@@ -894,7 +894,6 @@ void Can_InitController(uint8 controller,
     uint8_t tq2;\r
     uint32_t clock;\r
     Can_UnitType *canUnit;\r
-    uint8 cId = controller;\r
     const Can_ControllerConfigType *cfgCtrlPtr;\r
     const Can_HardwareObjectType *hohPtr;\r
     uint8_t fifoNr;\r
@@ -1044,10 +1043,10 @@ Can_ReturnType Can_SetControllerMode(uint8 controller,
 \r
     /** @req 3.1.5/CAN198 */\r
     VALIDATE( (Can_Global.initRun == CAN_READY), CAN_SETCONTROLLERMODE_SERVICE_ID, CAN_E_UNINIT );\r
-    Can_UnitType *canUnit = CTRL_TO_UNIT_PTR(controller);\r
-    VALIDATE( (canUnit->state!=CANIF_CS_UNINIT), CAN_SETCONTROLLERMODE_SERVICE_ID, CAN_E_UNINIT );\r
     /** @req 3.1.5/CAN199 */\r
     VALIDATE( VALID_CONTROLLER(controller), CAN_SETCONTROLLERMODE_SERVICE_ID, CAN_E_PARAM_CONTROLLER );\r
+    Can_UnitType *canUnit = CTRL_TO_UNIT_PTR(controller);\r
+    VALIDATE( (canUnit->state!=CANIF_CS_UNINIT), CAN_SETCONTROLLERMODE_SERVICE_ID, CAN_E_UNINIT );\r
 \r
     canHw = canUnit->hwPtr;\r
 \r
@@ -1091,6 +1090,8 @@ void Can_DisableControllerInterrupts(uint8 controller)
     /** !req 3.1.5/CAN292 */\r
 \r
        VALIDATE_NO_RV( (Can_Global.initRun == CAN_READY), CAN_DISABLECONTROLLERINTERRUPTS_SERVICE_ID, CAN_E_UNINIT );\r
+    /** @req 3.1.5/CAN206 */\r
+    VALIDATE_NO_RV( VALID_CONTROLLER(controller) , CAN_DISABLECONTROLLERINTERRUPTS_SERVICE_ID, CAN_E_PARAM_CONTROLLER );\r
     Can_UnitType *canUnit = CTRL_TO_UNIT_PTR(controller);\r
     flexcan_t *canHw;\r
     imask_t state;\r
@@ -1098,8 +1099,6 @@ void Can_DisableControllerInterrupts(uint8 controller)
     /** @req 3.1.5/CAN205 */\r
     VALIDATE_NO_RV( (canUnit->state!=CANIF_CS_UNINIT), CAN_DISABLECONTROLLERINTERRUPTS_SERVICE_ID, CAN_E_UNINIT );\r
 \r
-    /** @req 3.1.5/CAN206 */\r
-    VALIDATE_NO_RV( VALID_CONTROLLER(controller) , CAN_DISABLECONTROLLERINTERRUPTS_SERVICE_ID, CAN_E_PARAM_CONTROLLER );\r
 \r
 \r
     Irq_Save(state);\r
@@ -1140,11 +1139,10 @@ void Can_EnableControllerInterrupts(uint8 controller)
 \r
     /** @req 3.1.5/CAN209 */\r
        VALIDATE_NO_RV( (Can_Global.initRun == CAN_READY), CAN_ENABLECONTROLLERINTERRUPTS_SERVICE_ID, CAN_E_UNINIT );\r
-    canUnit = CTRL_TO_UNIT_PTR(controller);\r
-    VALIDATE_NO_RV( (canUnit->state!=CANIF_CS_UNINIT), CAN_ENABLECONTROLLERINTERRUPTS_SERVICE_ID, CAN_E_UNINIT );\r
-\r
     /** @req 3.1.5/CAN210 */\r
     VALIDATE_NO_RV( VALID_CONTROLLER(controller), CAN_ENABLECONTROLLERINTERRUPTS_SERVICE_ID, CAN_E_PARAM_CONTROLLER );\r
+    canUnit = CTRL_TO_UNIT_PTR(controller);\r
+    VALIDATE_NO_RV( (canUnit->state!=CANIF_CS_UNINIT), CAN_ENABLECONTROLLERINTERRUPTS_SERVICE_ID, CAN_E_UNINIT );\r
 \r
     Irq_Save(state);\r
     if (canUnit->lock_cnt > 1) {\r
index e20a7ce877512c721ef1f9e1a1da02e025c1db3c..6e9b43245615f02fda052446ad7f91fbd6640288 100644 (file)
@@ -918,8 +918,15 @@ void CanIf_CancelTxConfirmation(const Can_PduType *PduInfoPtr)
 \r
 void CanIf_ControllerBusOff(uint8 Controller)\r
 {\r
-  // We call this a CanIf channel. Hopefully makes it easier to follow.\r
-  CanIf_Arc_ChannelIdType channel = (CanIf_Arc_ChannelIdType) Controller;\r
+  CanIf_Arc_ChannelIdType channel = 0xff;\r
+\r
+  for(int i = 0; i < CANIF_CHANNEL_CNT; i++)\r
+  {\r
+         if(CanIf_ConfigPtr->Arc_ChannelToControllerMap[i] == Controller)\r
+         {\r
+                 channel = i;\r
+         }\r
+  }\r
 \r
   VALIDATE_NO_RV( CanIf_Global.initRun, CANIF_CONTROLLER_BUSOFF_ID, CANIF_E_UNINIT );\r
   VALIDATE_NO_RV( Controller < CANIF_CHANNEL_CNT, CANIF_CONTROLLER_BUSOFF_ID, CANIF_E_PARAM_CONTROLLER );\r
@@ -936,24 +943,34 @@ void CanIf_ControllerBusOff(uint8 Controller)
 \r
 void CanIf_SetWakeupEvent(uint8 Controller)\r
 {\r
-#if  ( CANIF_DEV_ERROR_DETECT == STD_ON )\r
-  // We call this a CanIf channel. Hopefully makes it easier to follow.\r
-  CanIf_Arc_ChannelIdType channel = (CanIf_Arc_ChannelIdType) Controller;\r
-#else\r
-  (void)Controller;\r
-#endif\r
+       CanIf_Arc_ChannelIdType channel = 0xff;\r
+\r
+       for(int i = 0; i < CANIF_CHANNEL_CNT; i++)\r
+       {\r
+         if(CanIf_ConfigPtr->Arc_ChannelToControllerMap[i] == Controller)\r
+         {\r
+                 channel = i;\r
+         }\r
+       }\r
 \r
-  VALIDATE_NO_RV(FALSE, CANIF_SETWAKEUPEVENT_ID, CANIF_E_NOK_NOSUPPORT);\r
-  VALIDATE_NO_RV( CanIf_Global.initRun, CANIF_SETWAKEUPEVENT_ID, CANIF_E_UNINIT );\r
-  VALIDATE_NO_RV( channel < CANIF_CHANNEL_CNT, CANIF_SETWAKEUPEVENT_ID, CANIF_E_PARAM_CONTROLLER );\r
+       VALIDATE_NO_RV(FALSE, CANIF_SETWAKEUPEVENT_ID, CANIF_E_NOK_NOSUPPORT);\r
+       VALIDATE_NO_RV( CanIf_Global.initRun, CANIF_SETWAKEUPEVENT_ID, CANIF_E_UNINIT );\r
+       VALIDATE_NO_RV( channel < CANIF_CHANNEL_CNT, CANIF_SETWAKEUPEVENT_ID, CANIF_E_PARAM_CONTROLLER );\r
 \r
-  // Not supported\r
+       // Not supported\r
 }\r
 \r
 void CanIf_Arc_Error(uint8 Controller, Can_Arc_ErrorType Error)\r
 {\r
-  // We call this a CanIf channel. Hopefully makes it easier to follow.\r
-  CanIf_Arc_ChannelIdType channel = (CanIf_Arc_ChannelIdType) Controller;\r
+  CanIf_Arc_ChannelIdType channel = 0xff;\r
+\r
+  for(int i = 0; i < CANIF_CHANNEL_CNT; i++)\r
+  {\r
+         if(CanIf_ConfigPtr->Arc_ChannelToControllerMap[i] == Controller)\r
+         {\r
+                 channel = i;\r
+         }\r
+  }\r
 \r
   VALIDATE_NO_RV( CanIf_Global.initRun, CANIF_ARCERROR_ID, CANIF_E_UNINIT );\r
   VALIDATE_NO_RV( channel < CANIF_CHANNEL_CNT, CANIF_ARCERROR_ID, CANIF_E_PARAM_CONTROLLER );\r