/** ECAN Generated Driver API Header File @Company Microchip Technology Inc. @File Name ecan.h @Summary This is the generated header file for the ECAN driver using PIC10 / PIC12 / PIC16 / PIC18 MCUs @Description This header file provides APIs driver for ECAN. Generation Information : Product Revision : PIC10 / PIC12 / PIC16 / PIC18 MCUs - 1.81.7 Device : PIC18F26K83 Driver Version : 3.0.0 The generated drivers are tested against the following: Compiler : XC8 2.31 and above MPLAB : MPLAB X 5.45 */ /* (c) 2018 Microchip Technology Inc. and its subsidiaries. Subject to your compliance with these terms, you may use Microchip software and any derivatives exclusively with Microchip products. It is your responsibility to comply with third party license terms applicable to your use of third party software (including open source software) that may accompany Microchip software. THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. */ #ifndef ECAN_H #define ECAN_H /** Section: Included Files */ #include #include /** Global Defines */ typedef union { struct { uint8_t idType; uint32_t id; uint8_t dlc; uint8_t data0; uint8_t data1; uint8_t data2; uint8_t data3; uint8_t data4; uint8_t data5; uint8_t data6; uint8_t data7; uint8_t rtr; } frame; uint8_t array[15]; } uCAN_MSG; /** Defines */ #define dSTANDARD_CAN_MSG_ID_2_0B 1 #define dEXTENDED_CAN_MSG_ID_2_0B 2 /** Section: ECAN APIs */ /** @Summary Initializes the ECAN module. @Description This routine sets all the set parameters to the ECAN module. @Preconditions None @Param None @Returns None @Example ECAN_Initialize(); */ void ECAN_Initialize(void); /** @Summary CAN_sleep @Description Puts the CAN module to sleep @Param None @Returns None @Example CAN_init(); */ void CAN_sleep(void); /** @Summary CAN_transmit @Description Transmits out sCAN_MSG @Param Pointer to a sCAN_MSG @Returns True or False if message was loaded to transmit buffer @Example uCAN_MSG txMessage; CAN_transmit(&txMessage); */ uint8_t CAN_transmit(uCAN_MSG *tempCanMsg); /** @Summary CAN_receive @Description Receives CAN messages @Param Pointer to a sCAN_MSG @Returns True or False for a new message @Example uCAN_MSG rxMessage; CAN_receive(&rxMessage); */ uint8_t CAN_receive(uCAN_MSG *tempCanMsg); /** @Summary CAN_messagesInBuffer @Description Checks to see how many messages are in the buffer @Param None @Returns Returns total number of messages in the buffers @Example uint8_t nrMsg; nrMsg = CAN_messagesInBuffer(); */ uint8_t CAN_messagesInBuffer(void); /** @Summary CAN_isBusOff @Description Checks to see if module is busoff @Param None @Returns True if module is in Busoff, False is if it is not @Example uint8_t busOff; busOff = CAN_isBusOff(); */ uint8_t CAN_isBusOff(void); /** @Summary CAN_isRXErrorPassive @Description Checks to see if module is RX Error Passive @Param None @Returns True if module is in RX Error Passive, False is if it is not @Example uint8_t errRxPasive; errRxPasive = CAN_isRXErrorPassive(); */ uint8_t CAN_isRXErrorPassive(void); /** @Summary CAN_isTXErrorPassive @Description Checks to see if module is TX Error Passive @Param None @Returns True if module is in TX Error Passive, False is if it is not @Example uint8_t errTxPasive; errTxPasive = CAN_isTXErrorPassive(); */ uint8_t CAN_isTXErrorPassive(void); /** @Summary ECAN_SetRXBnInterruptHandler @Description Sets the ECAN Receive buffer n interrupt handler @Param Address of the callback routine @Returns None @Example volatile bool customRXBnFlag = false; void CustomRXBnInterruptHandler(void) { customRXBnFlag = true; // ... } void main(void) { // ... ECAN_SetRXBnInterruptHandler(CustomRXBnInterruptHandler); while (1) { if (customRXBnFlag) { customRXBnFlag = false; // ... } } } */ void ECAN_SetRXBnInterruptHandler(void (*handler)(void)); /** @Summary ECAN_RXBnI_ISR @Description Implements the ECAN Receive buffer n interrupt service routine @Param None @Returns None */ void ECAN_RXBnI_ISR(void); /** @Summary ECAN_SetRXBnOverflowHandler @Description Sets the ECAN Receive buffer n overflow interrupt handler @Param Address of the callback routine @Returns None @Example volatile bool customRXBnOverflowFlag = false; void CustomRXBnOverflowHandler(void) { customRXBnOverflowFlag = true; // ... } void main(void) { // ... ECAN_SetRXBnOverflowHandler(CustomRXBnOverflowHandler); while (1) { if (customRXBnOverflowFlag) { customRXBnOverflowFlag = false; // ... } } } */ void ECAN_SetRXBnOverflowHandler(void (*handler)(void)); /** @Summary ECAN_SetBusOffHandler @Description Sets the ECAN Bus off interrupt handler @Param Address of the callback routine @Returns None @Example volatile bool customBusOffFlag = false; void CustomBusOffHandler(void) { customBusOffFlag = true; // ... } void main(void) { // ... ECAN_SetBusOffHandler(CustomBusOffHandler); while (1) { if (customBusOffFlag) { customBusOffFlag = false; // ... } } } */ void ECAN_SetBusOffHandler(void (*handler)(void)); /** @Summary ECAN_SetTXPassiveHandler @Description Sets the ECAN TX passive interrupt handler @Param Address of the callback routine @Returns None @Example volatile bool customTXPassiveFlag = false; void CustomTXPassiveHandler(void) { customTXPassiveFlag = true; // ... } void main(void) { // ... ECAN_SetTXPassiveHandler(CustomTXPassiveHandler); while (1) { if (customTXPassiveFlag) { customTXPassiveFlag = false; // ... } } } */ void ECAN_SetTXPassiveHandler(void (*handler)(void)); /** @Summary ECAN_SetRXPassiveHandler @Description Sets the ECAN RX passive interrupt handler @Param Address of the callback routine @Returns None @Example volatile bool customRXPassiveFlag = false; void CustomRXPassiveHandler(void) { customRXPassiveFlag = true; // ... } void main(void) { // ... ECAN_SetRXPassiveHandler(CustomRXPassiveHandler); while (1) { if (customRXPassiveFlag) { customRXPassiveFlag = false; // ... } } } */ void ECAN_SetRXPassiveHandler(void (*handler)(void)); /** @Summary ECAN_SetTXWarningHandler @Description Sets the ECAN TX warning interrupt handler @Param Address of the callback routine @Returns None @Example volatile bool customTXWarningFlag = false; void CustomTXWarningHandler(void) { customTXWarningFlag = true; // ... } void main(void) { // ... ECAN_SetTXWarningHandler(CustomTXWarningHandler); while (1) { if (customTXWarningFlag) { customTXWarningFlag = false; // ... } } } */ void ECAN_SetTXWarningHandler(void (*handler)(void)); /** @Summary ECAN_SetRXWarningHandler @Description Sets the ECAN RX warning interrupt handler @Param Address of the callback routine @Returns None @Example volatile bool customRXWarningFlag = false; void CustomRXWarningHandler(void) { customRXWarningFlag = true; // ... } void main(void) { // ... ECAN_SetRXWarningHandler(CustomRXWarningHandler); while (1) { if (customRXWarningFlag) { customRXWarningFlag = false; // ... } } } */ void ECAN_SetRXWarningHandler(void (*handler)(void)); /** @Summary ECAN_ERRI_ISR @Description Implements the ECAN Module error interrupt service routine @Param None @Returns None */ void ECAN_ERRI_ISR(void); #endif // ECAN_H