status_t CAN001_ReadMsgObj ( const CAN001_HandleType* Handle, CAN001_MessageHandleType* SwMsgObjptr, uint8_t MsgObjnr ) { uint32_t Error = (uint32_t)CAN001_ERROR; uint32_t Count = 0U; bool RxPnd = 0U; bool NewData = 0U; uint8_t MsgNo = (uint8_t)(Handle->FirstMOMapping+(MsgObjnr-1U)); /* Mapping to message object offset value*/ CAN_MO_TypeDef* CAN_MOxRegs = \ GET_MO_OFFSET(MsgNo); DBG002_N((MsgObjnr == 0U)||(MsgObjnr > Handle->NodeMONo)); /* check if message object is a receive message object */ /*<<<DD_CAN001_API_6_1>>>*/ if( RD_REG(CAN_MOxRegs->MOSTAT, CAN_MO_MOSTAT_DIR_Msk, \ CAN_MO_MOSTAT_DIR_Pos) != (uint32_t)RECMSGOBJ) { Error = (uint32_t)CAN001_MO_NOT_ACCEPTABLE; DBG002_ERROR(APP_GID, DBG002_MESSAGEID_LITERAL, sizeof(Error), &Error); } /* check if reception is ongoing on message object */ /*<<<DD_CAN001_API_6_2>>>*/ else if( RD_REG(CAN_MOxRegs->MOSTAT, CAN_MO_MOSTAT_RXUPD_Msk, \ CAN_MO_MOSTAT_RXUPD_Pos) == 1U) { Error = (uint32_t)CAN001_MO_BUSY; DBG002_ERROR(APP_GID, DBG002_MESSAGEID_LITERAL, sizeof(Error), &Error); } else { /* read message parameters */ /*<<<DD_CAN001_API_6_3>>>*/ do { CAN_MOxRegs->MOCTR = CAN_MO_MOCTR_RESNEWDAT_Msk; if((RD_REG(CAN_MOxRegs->MOAR, CAN_MO_MOAR_IDE_Msk , \ CAN_MO_MOAR_IDE_Pos)) == 0U) { SwMsgObjptr->IDExten = (uint8_t)STANDARDTYPE; SwMsgObjptr->Identifier = (CAN_MOxRegs->MOAR & (uint32_t)CAN_MO_MOAR_STDID_Msk) >> \ CAN_MO_MOAR_STDID_Pos; SwMsgObjptr->IDEMask = (uint8_t)((uint32_t)(CAN_MOxRegs->MOAMR & (uint32_t)CAN_MO_MOAMR_MIDE_Msk) >> \ CAN_MO_MOAMR_MIDE_Pos); if(SwMsgObjptr->IDEMask == 1U) { SwMsgObjptr->IDMask = (CAN_MOxRegs->MOAMR & (uint32_t)CAN_MO_MOAR_STDID_Msk) >> \ CAN_MO_MOAR_STDID_Pos; } else { SwMsgObjptr->IDMask = CAN_MOxRegs->MOAMR & (uint32_t)CAN_MO_MOAMR_AM_Msk; } } else {
/** * This function initializes all instances of the PWMMP001 App. */ void PWMMP001_Init(void) { status_t Status; /*Clock initialization - if it is not already done by DAVE3.h */ CLK001_Init(); /* CCU8 global init to start the prescalar and de-assert the module */ CCU8GLOBAL_Init(); Status = PWMMP001_lInit(&PWMMP001_Handle0); if(Status == (uint32_t)DAVEApp_SUCCESS) { if (PWMMP001_Handle0.StartControl == (uint8_t)SET) { Status = PWMMP001_Start(&PWMMP001_Handle0); DBG002_N(Status != DAVEApp_SUCCESS); } } else { DBG002_INFO(APP_GID, DBG002_MESSAGEID_LITERAL, PWMMP001_STATUS_LEN, &Status); } /* Configuration of Phase 1 Direct Output Pin 1.14 based on User configuration */ PORT1->PDR1 &= (~((uint32_t)PORT1_PDR1_PD14_Msk)); PORT1->PDR1 |= (((uint32_t)0U << (uint32_t)PORT1_PDR1_PD14_Pos) & \ (uint32_t)PORT1_PDR1_PD14_Msk); PORT1->IOCR12 &= (~((uint32_t)PORT_IOCR_PC2_PO_Msk)); PORT1->IOCR12 |= (((uint32_t)0U << (uint32_t)PORT_IOCR_PC2_PO_Pos) & \ (uint32_t)PORT_IOCR_PC2_PO_Msk); /* Configuration of Phase 1 Inverted Output Pin 1.11 based on User configuration */ PORT1->PDR1 &= (~((uint32_t)PORT1_PDR1_PD11_Msk)); PORT1->PDR1 |= (((uint32_t)0U << (uint32_t)PORT1_PDR1_PD11_Pos) & \ (uint32_t)PORT1_PDR1_PD11_Msk); PORT1->IOCR8 &= (~((uint32_t)PORT_IOCR_PC3_PO_Msk)); PORT1->IOCR8 |= (((uint32_t)0U << (uint32_t)PORT_IOCR_PC3_PO_Pos) & \ (uint32_t)PORT_IOCR_PC3_PO_Msk); /* Configuration of Phase 2 Direct Output Pin 1.4 based on User configuration */ PORT1->PDR0 &= (~(PORT1_PDR0_PD4_Msk)); PORT1->PDR0 |= ((0 << PORT1_PDR0_PD4_Pos) & \ PORT1_PDR0_PD4_Msk); PORT1->IOCR4 &= (~((uint32_t)PORT_IOCR_PC0_PO_Msk)); PORT1->IOCR4 |= (((uint32_t)0U << (uint32_t)PORT_IOCR_PC0_PO_Pos) & \ (uint32_t)PORT_IOCR_PC0_PO_Msk); /* Configuration of Phase 2 Inverted Output Pin 1.10 based on User configuration */ PORT1->PDR1 &= (~(PORT1_PDR1_PD10_Msk)); PORT1->PDR1 |= ((0 << PORT1_PDR1_PD10_Pos) & \ PORT1_PDR1_PD10_Msk); PORT1->IOCR8 &= (~((uint32_t)PORT_IOCR_PC2_PO_Msk)); PORT1->IOCR8 |= (((uint32_t)0U << (uint32_t)PORT_IOCR_PC2_PO_Pos) & \ (uint32_t)PORT_IOCR_PC2_PO_Msk); }
/** This function initializes the app */ void CNT001_Init(void) { status_t status = (uint32_t)CNT001_OPER_NOT_ALLOWED_ERROR; CCU4GLOBAL_Init(); status = CNT001_lInit( &CNT001_Handle0); /* Start the app if "Start after initialization" is selected */ if(status == (uint32_t)DAVEApp_SUCCESS) { DBG002_N(status != DAVEApp_SUCCESS); if(CNT001_Handle0.StartControl == (uint8_t)SET) { status = CNT001_Start( &CNT001_Handle0); DBG002_N(status != DAVEApp_SUCCESS); } } else { DBG002_INFO(APP_GID, DBG002_MESSAGEID_LITERAL, CNT001_STATUS_LEN, &status); } }
status_t CAN001_SendRemoteFrame(const CAN001_HandleType* Handle, uint8_t MsgObjnr) { uint32_t Error = 0U; uint8_t MsgNo = (uint8_t)(Handle->FirstMOMapping+(MsgObjnr-1U)); /* Mapping to message object offset value*/ CAN_MO_TypeDef* CAN_MOxRegs = \ GET_MO_OFFSET(MsgNo); /*<<<DD_CAN001_API_5>>>*/ DBG002_FUNCTION_ENTRY(DBG002_GID_CAN001,CAN001_FUNCTION_ENTRY); DBG002_N ((MsgObjnr == 0U)||(MsgObjnr > Handle->NodeMONo)); /* check if message object is a receive message object */ /*<<<DD_CAN001_API_5_1>>>*/ if( RD_REG(CAN_MOxRegs->MOSTAT, CAN_MO_MOSTAT_DIR_Msk, \ CAN_MO_MOSTAT_DIR_Pos) != (uint32_t)RECMSGOBJ) { Error = (uint32_t)CAN001_MO_NOT_ACCEPTABLE; DBG002_ERROR(DBG002_GID_CAN001,Error, 0, NULL); } /* check if message is disabled */ else if( RD_REG(CAN_MOxRegs->MOSTAT, CAN_MO_MOSTAT_MSGVAL_Msk, \ CAN_MO_MOSTAT_MSGVAL_Pos) == 0U) { Error = (uint32_t)CAN001_MSGOBJ_DISABLED; DBG002_INFO(DBG002_GID_CAN001,Error, 0, NULL); } /* check if transmission is ongoing on message object */ /*<<<DD_CAN001_API_5_2>>>*/ else if( RD_REG(CAN_MOxRegs->MOSTAT, CAN_MO_MOSTAT_TXRQ_Msk, \ CAN_MO_MOSTAT_TXRQ_Pos) == 1U) { Error = (uint32_t)CAN001_MO_BUSY; DBG002_INFO(DBG002_GID_CAN001,Error, 0, NULL); } else { /* Put transmit request to message object */ /*<<<DD_CAN001_API_5_3>>>*/ CAN_MOxRegs->MOCTR = CAN_MO_MOCTR_SETTXRQ_Msk; Error = (uint32_t)DAVEApp_SUCCESS; } DBG002_FUNCTION_EXIT(DBG002_GID_CAN001,CAN001_FUNCTION_EXIT); return Error; }
status_t CAN001_SendDataFrame(const CAN001_HandleType* Handle, uint8_t MsgObjnr) { uint32_t Error = (uint32_t)CAN001_ERROR; uint8_t MsgNo = (uint8_t)(Handle->FirstMOMapping+(MsgObjnr-1U)); /* Mapping to message object offset value*/ CAN_MO_TypeDef* CAN_MOxRegs = \ GET_MO_OFFSET(MsgNo); DBG002_N((MsgObjnr == 0U)||(MsgObjnr > Handle->NodeMONo)); /* check if message object is not a transmit message object */ /*<<<DD_CAN001_API_4_1>>>*/ if( RD_REG(CAN_MOxRegs->MOSTAT, CAN_MO_MOSTAT_DIR_Msk, \ CAN_MO_MOSTAT_DIR_Pos) != (uint32_t)TRANSMSGOBJ) { Error = (uint32_t)CAN001_MO_NOT_ACCEPTABLE; DBG002_ERROR(APP_GID, DBG002_MESSAGEID_LITERAL, sizeof(Error), &Error); } /* check if message is disabled */ else if( RD_REG(CAN_MOxRegs->MOSTAT, CAN_MO_MOSTAT_MSGVAL_Msk, \ CAN_MO_MOSTAT_MSGVAL_Pos) == 0U) { Error = (uint32_t)CAN001_MSGOBJ_DISABLED; DBG002_INFO(APP_GID, DBG002_MESSAGEID_LITERAL, sizeof(Error), &Error); } /* check if transmission is ongoing on message object */ /*<<<DD_CAN001_API_4_2>>>*/ else if( RD_REG(CAN_MOxRegs->MOSTAT, CAN_MO_MOSTAT_TXRQ_Msk, \ CAN_MO_MOSTAT_TXRQ_Pos) == 1U) { Error = (uint32_t)CAN001_MO_BUSY; DBG002_INFO(APP_GID, DBG002_MESSAGEID_LITERAL, sizeof(Error), &Error); } else { /* set TXRQ bit */ /*<<<DD_CAN001_API_4_3>>>*/ CAN_MOxRegs->MOCTR = CAN_MO_MOCTR_SETTXRQ_Msk; Error = (uint32_t)DAVEApp_SUCCESS; } return Error; }
status_t CAN001_ConfigMsgObj ( const CAN001_HandleType* Handle, const CAN001_MessageHandleType* SwMsgObjptr, uint8_t MsgObjnr ) { uint32_t Error = (uint32_t)CAN001_MO_NOT_FOUND; uint8_t MsgNo = (uint8_t)(Handle->FirstMOMapping+(MsgObjnr-1U)); /* Mapping to message object offset value*/ CAN_MO_TypeDef* CAN_MOxRegs = \ GET_MO_OFFSET(MsgNo); /* <<<DD_CAN001_API_3>>> */ DBG002_FUNCTION_ENTRY(DBG002_GID_CAN001,CAN001_FUNCTION_ENTRY); DBG002_N((MsgObjnr == 0U)||(MsgObjnr > Handle->NodeMONo)); if (((SwMsgObjptr->IDExten != (uint8_t)STANDARDTYPE) && \ (SwMsgObjptr->IDExten != (uint8_t)EXTENDEDTYPE)) ||((SwMsgObjptr->MsgObjEN != CAN001_ENABLE) && (SwMsgObjptr->MsgObjEN != CAN001_DISABLE)) ||((SwMsgObjptr->MsgObjType != RECMSGOBJ) && (SwMsgObjptr->MsgObjType != TRANSMSGOBJ))) { Error = (uint32_t)CAN001_INVALID_INPUT; ERROR(DBG002_GID_CAN001,Error, 0, NULL); } /* check if message object is to be disabled */ /*<<<DD_CAN001_API_3_1>>>*/ else if (SwMsgObjptr->MsgObjEN == CAN001_DISABLE) { /* Reset MSGVAL bit */ CAN_MOxRegs->MOCTR = CAN_MO_MOCTR_RESMSGVAL_Msk; Error = (uint32_t)DAVEApp_SUCCESS; } /* if (SwMsgObjptr->MsgObjEN == CAN001_DISABLE) */ else { CAN001_lConfigMORegs(SwMsgObjptr, (uint8_t)(Handle->FirstMOMapping+(MsgObjnr-1U))); Error = (uint32_t)DAVEApp_SUCCESS; } /*if (SwMsgObjptr->MsgObjEN == CAN001_ENABLE)*/ DBG002_FUNCTION_EXIT(DBG002_GID_CAN001,CAN001_FUNCTION_EXIT); return Error; }