void StartupTask( void ) { pi_printf("infor: start up\r\n"); bcm2835_read_mac_address(); parse_config(); printf("ACT LED on GPIO %d\r\n", act_led_gpio); printf("CAN bus frequency %d MHz\r\n", MCP2515_FREQUENCY_MHz); EcuM_StartupTwo(); // Startup CanIf due to ComM is missing in this example CanIf_SetControllerMode(CANIF_CanIfCtrlCfg, CANIF_CS_STARTED); CanIf_SetPduMode(CANIF_CanIfCtrlCfg, CANIF_SET_ONLINE); /** Setup Com stack with necessary parameters**/ Com_IpduGroupVector groupVector; Com_ClearIpduGroupVector(groupVector); //Start the IPDU group Com_SetIpduGroup(groupVector, COM_PDU_GROUP_ID_TXIPDUGROUP, TRUE); Com_SetIpduGroup(groupVector, COM_PDU_GROUP_ID_RXIPDUGROUP, TRUE); Com_IpduGroupControl(groupVector, TRUE); TerminateTask(); }
void CanSM_Internal_SetNetworkPduMode(NetworkHandleType NetworkHandle, CanIf_PduSetModeType pduMode) { const CanSM_NetworkType *NetworkCfg = &CanSM_Config->Networks[NetworkHandle]; for(uint8 ctrl = 0; ctrl < NetworkCfg->ControllerCount; ctrl++) { if( E_OK != CanIf_SetPduMode(NetworkCfg->Controllers[ctrl].CanIfControllerId, pduMode) ) { /* TODO: Report some kind of Det-error. */ // CANSM_DET_REPORTERROR(); } } }
void StartupTask( void ) { pi_printf("infor: start up\r\n"); EcuM_StartupTwo(); // Startup CanIf due to ComM is missing in this example CanIf_SetControllerMode(CANIF_CanIfCtrlCfg, CANIF_CS_STARTED); CanIf_SetPduMode(CANIF_CanIfCtrlCfg, CANIF_SET_ONLINE); /** Setup Com stack with necessary parameters**/ Com_IpduGroupVector groupVector; //Start the IPDU group Com_ClearIpduGroupVector(groupVector); //Start the IPDU group Com_SetIpduGroup(groupVector, COM_PDU_GROUP_ID_TXCOMIPDUGROUP, TRUE); Com_SetIpduGroup(groupVector, COM_PDU_GROUP_ID_RXCOMIPDUGROUP, TRUE); Com_IpduGroupControl(groupVector, TRUE); TerminateTask(); }
Std_ReturnType CanIf_SetControllerMode(uint8 Controller, CanIf_ControllerModeType ControllerMode) { // We call this a CanIf channel. Hopefully makes it easier to follow. CanIf_Arc_ChannelIdType channel = (CanIf_Arc_ChannelIdType) Controller; CanIf_ControllerModeType oldMode; VALIDATE( CanIf_Global.initRun, CANIF_SET_CONTROLLER_MODE_ID, CANIF_E_UNINIT ); VALIDATE( channel < CANIF_CHANNEL_CNT, CANIF_SET_CONTROLLER_MODE_ID, CANIF_E_PARAM_CONTROLLER ); oldMode = CanIf_Global.channelData[channel].ControllerMode; if (oldMode == CANIF_CS_UNINIT) { VALIDATE(FALSE, CANIF_SET_CONTROLLER_MODE_ID, CANIF_E_UNINIT); // See figure 32, 33 return E_NOT_OK; } CanControllerIdType canControllerId = ARC_GET_CHANNEL_CONTROLLER(Controller); switch (ControllerMode) { case CANIF_CS_STARTED: // Figure 32 { switch (oldMode) { case CANIF_CS_SLEEP: if (Can_SetControllerMode(canControllerId, CAN_T_STOP) == CAN_NOT_OK){ return E_NOT_OK; } CanIf_Global.channelData[channel].ControllerMode = CANIF_CS_STOPPED; break; default: // Just fall through break; } CanIf_SetPduMode(channel, CANIF_SET_ONLINE); if (Can_SetControllerMode(canControllerId, CAN_T_START) == CAN_NOT_OK){ return E_NOT_OK; } CanIf_Global.channelData[channel].ControllerMode = CANIF_CS_STARTED; } break; case CANIF_CS_SLEEP: // Figure 33 { switch (oldMode) { case CANIF_CS_STARTED: if (Can_SetControllerMode(canControllerId, CAN_T_STOP) == CAN_NOT_OK){ return E_NOT_OK; } CanIf_Global.channelData[channel].ControllerMode = CANIF_CS_STOPPED; break; default: // Just fall through for other cases break; } if (Can_SetControllerMode(canControllerId, CAN_T_SLEEP) == CAN_NOT_OK){ return E_NOT_OK; } CanIf_Global.channelData[channel].ControllerMode = CANIF_CS_SLEEP; break; } case CANIF_CS_STOPPED: { switch (oldMode) { case CANIF_CS_SLEEP: if (Can_SetControllerMode(canControllerId, CAN_T_WAKEUP) == CAN_NOT_OK){ return E_NOT_OK; } break; default: // Just fall through for other cases break; } CanIf_SetPduMode(channel, CANIF_SET_OFFLINE); if (Can_SetControllerMode(canControllerId, CAN_T_STOP) == CAN_NOT_OK){ return E_NOT_OK; } CanIf_Global.channelData[channel].ControllerMode = CANIF_CS_STOPPED; break; } case CANIF_CS_UNINIT: // Just fall through break; } return E_OK; }