|
CAN programming interface environment
Version 3.10
|
The QCanSocketCpFD class provides an interface between the CANpie FD core functions and the QCanSocket class. Hence it is possible to write applications using the C API of CANpie FD.
#include <qcan_socket_canpie_fd.hpp>
Inherits QObject.
Friends | |
| CpStatus_tv CP_API | CpCoreBitrate (CpPort_ts *ptsPortV, int32_t slNomBitRateV, int32_t slDatBitRateV) |
| CpStatus_tv CP_API | CpCoreBufferConfig (CpPort_ts *ptsPortV, uint8_t ubBufferIdxV, uint32_t ulIdentifierV, uint32_t ulAcceptMaskV, uint8_t ubFormatV, uint8_t ubDirectionV) |
| CpStatus_tv CP_API | CpCoreBufferGetData (CpPort_ts *ptsPortV, uint8_t ubBufferIdxV, uint8_t *pubDestDataV, uint8_t ubStartPosV, uint8_t ubSizeV) |
| CpStatus_tv CP_API | CpCoreBufferGetDlc (CpPort_ts *ptsPortV, uint8_t ubBufferIdxV, uint8_t *pubDlcV) |
| CpStatus_tv CP_API | CpCoreBufferRelease (CpPort_ts *ptsPortV, uint8_t ubBufferIdxV) |
| CpStatus_tv CP_API | CpCoreBufferSend (CpPort_ts *ptsPortV, uint8_t ubBufferIdxV) |
| CpStatus_tv CP_API | CpCoreBufferSetData (CpPort_ts *ptsPortV, uint8_t ubBufferIdxV, uint8_t *pubSrcDataV, uint8_t ubStartPosV, uint8_t ubSizeV) |
| CpStatus_tv CP_API | CpCoreBufferSetDlc (CpPort_ts *ptsPortV, uint8_t ubBufferIdxV, uint8_t ubDlcV) |
| CpStatus_tv CP_API | CpCoreCanMode (CpPort_ts *ptsPortV, uint8_t ubModeV) |
| CpStatus_tv CP_API | CpCoreCanState (CpPort_ts *ptsPortV, CpState_ts *ptsStateV) |
| CpStatus_tv CP_API | CpCoreDriverInit (uint8_t ubPhyIfV, CpPort_ts *ptsPortV, uint8_t ubConfigV) |
| CpStatus_tv CP_API | CpCoreDriverRelease (CpPort_ts *ptsPortV) |
| CpStatus_tv CP_API | CpCoreFifoConfig (CpPort_ts *ptsPortV, uint8_t ubBufferIdxV, CpFifo_ts *ptsFifoV) |
| CpStatus_tv CP_API | CpCoreFifoRead (CpPort_ts *ptsPortV, uint8_t ubBufferIdxV, CpCanMsg_ts *ptsCanMsgV, uint32_t *pulMsgCntV) |
| CpStatus_tv CP_API | CpCoreFifoRelease (CpPort_ts *ptsPortV, uint8_t ubBufferIdxV) |
| CpStatus_tv CP_API | CpCoreFifoWrite (CpPort_ts *ptsPortV, uint8_t ubBufferIdxV, CpCanMsg_ts *ptsCanMsgV, uint32_t *pulMsgCntV) |
| CpStatus_tv CP_API | CpCoreHDI (CpPort_ts *ptsPortV, CpHdi_ts *ptsHdiV) |
| CpStatus_tv CP_API | CpCoreIntFunctions (CpPort_ts *ptsPortV, uint8_t(*pfnRcvHandler)(CpCanMsg_ts *, uint8_t), uint8_t(*pfnTrmHandler)(CpCanMsg_ts *, uint8_t), uint8_t(*pfnErrHandler)(CpState_ts *)) |
| CpStatus_tv CP_API | CpCoreStatistic (CpPort_ts *ptsPortV, CpStatistic_ts *ptsStatsV) |
| CpStatus_tv CP_API | CpCoreStatisticClear (CpPort_ts *ptsPortV) |
|
friend |
| [in] | ptsPortV | Pointer to CAN port structure |
| [in] | slNomBitRateV | Nominal bit-timing selection |
| [in] | slDatBitRateV | Data bit-timing selection |
eCP_ERR_NONE.This function initialises the bit-timing registers of a CAN controller to predefined values. The values are defined by the enumeration CpBitrate_e. For a Classic CAN controller (or if bit rate switching is not required), set the parameter slDatBitRateV to eCP_BITRATE_NONE.
|
friend |
| [in] | ptsPortV | Pointer to CAN port structure |
| [in] | ubBufferIdxV | Buffer number |
| [in] | ulIdentifierV | Identifier value |
| [in] | ulAcceptMaskV | Acceptance mask value |
| [in] | ubFormatV | Frame format |
| [in] | ubDirectionV | Frame direction |
eCP_ERR_NONE.This function allocates a message buffer in a CAN controller. The number of the message buffer inside the CAN controller is denoted via the parameter ubBufferIdxV. The first buffer starts at position eCP_BUFFER_1. The message buffer is allocated with the identifier value ulIdentifierV. If the buffer is used for reception (parameter ubDirectionV is eCP_BUFFER_DIR_RCV), the parameter ulAcceptMaskV is used for acceptance filtering.
The parameter ubFormatV can have the following values:
The following example shows the set-up of a transmit buffer
An allocated transmit buffer can be sent using the function CpCoreBufferSend().
The function initialises the DLC value of a message buffer to 0; a subsequent call to CpCoreBufferSetDlc() is necessary to change the default value.
|
friend |
| [in] | ptsPortV | Pointer to CAN port structure |
| [in] | ubBufferIdxV | Buffer number |
| [out] | pubDestDataV | Pointer to destination data buffer |
| [in] | ubStartPosV | Array start position |
| [in] | ubSizeV | Number of bytes to read |
eCP_ERR_NONE.The function copies ubSizeV data bytes from the CAN message buffer defined by ubBufferIdxV. The first message buffer starts at the index eCP_BUFFER_1. The parameter ubStartPosV denotes the start position, the first data byte is at position 0. The destination buffer (pointer pubDestDataV) must have sufficient space for the data. The buffer has to be configured by CpCoreBufferConfig() in advance.
|
friend |
| [in] | ptsPortV | Pointer to CAN port structure |
| [in] | ubBufferIdxV | Buffer number |
| [out] | pubDlcV | Data Length Code |
eCP_ERR_NONE.This function retrieves the Data Length Code (DLC) of the selected buffer ubBufferIdxV. The first message buffer starts at the index eCP_BUFFER_1. The parameter pubDlcV is a pointer to a memory location where the function will store the DLC value on success. The buffer has to be configured by CpCoreBufferConfig() in advance.
|
friend |
| [in] | ptsPortV | Pointer to CAN port structure |
| [in] | ubBufferIdxV | Buffer number |
eCP_ERR_NONE.The function releases the allocated message buffer specified by the parameter ubBufferIdxV. The first message buffer starts at the index eCP_BUFFER_1. Afterwards, both reception and transmission are disabled on the specified message buffer.
|
friend |
| [in] | ptsPortV | Pointer to CAN port structure |
| [in] | ubBufferIdxV | Index of message buffer |
eCP_ERR_NONE.This function transmits a CAN frame from the specified message buffer ubBufferIdxV. The first message buffer starts at the index eCP_BUFFER_1. The message buffer has to be configured as transmit buffer (eCP_BUFFER_DIR_TRM) by a call to CpCoreBufferConfig() in advance. A transmission request on a receive buffer will fail with the return code eCP_ERR_INIT_FAIL.
|
friend |
| [in] | ptsPortV | Pointer to CAN port structure |
| [in] | ubBufferIdxV | Buffer number |
| [in] | pubSrcDataV | Pointer to source data buffer |
| [in] | ubStartPosV | Array start position |
| [in] | ubSizeV | Number of bytes to write |
eCP_ERR_NONE.This function copies ubSizeV data bytes from the source buffer (pointer pubSrcDataV) into the message buffer defined by the parameter ubBufferIdxV. The first message buffer starts at the index eCP_BUFFER_1. The parameter ubStartPosV denotes the start position, the first data byte is at position 0. The message buffer has to be configured by CpCoreBufferConfig() in advance.
The following example demonstrates the access to the data bytes of a CAN frame:
|
friend |
| [in] | ptsPortV | Pointer to CAN port structure |
| [in] | ubBufferIdxV | Buffer number |
| [in] | ubDlcV | Data Length Code |
eCP_ERR_NONE.This function sets the Data Length Code (DLC) of the specified message buffer ubBufferIdxV. The DLC value ubDlcV must be in the range from 0 to 8 for Classic CAN frames and 0 to 15 for ISO CAN FD frames. An invalid DLC value is rejected with the return value eCP_ERR_CAN_DLC. The message buffer has to be configured by a call to CpCoreBufferConfig() in advance.
|
friend |
| [in] | ptsPortV | Pointer to CAN port structure |
| [in] | ubModeV | Mode selection |
eCP_ERR_NONE.This function changes the operating mode of the CAN controller FSA. Possible values for the parameter ubModeV are defined in the CpMode_e enumeration. At least the modes eCP_MODE_INIT and eCP_MODE_OPERATION shall be supported. Other modes depend on the capabilities of the CAN controller.
|
friend |
| [in] | ptsPortV | Pointer to CAN port structure |
| [out] | ptsStateV | Pointer to CAN state structure |
eCP_ERR_NONE.This function retrieves the present state of the CAN controller. The parameter ptsStateV is a pointer to a memory location where the function will store the state. The value of the structure element CpState_ts::ubCanErrState is defined by the CpState_e enumeration. The value of the structure element CpState_ts::ubCanErrType is defined by the CpErrType_e enumeration.
|
friend |
| [in] | ubPhyIfV | CAN channel of the hardware |
| [out] | ptsPortV | Pointer to CAN port structure |
| [in] | ubConfigV | This parameter is reserved for future enhancement |
eCP_ERR_NONE.The function opens the physical CAN interface defined by the parameter ubPhyIfV. The value for ubPhyIfV is taken from the enumeration CpChannel_e. The function sets up the field members of the CAN port structure CpPort_ts. The parameter ptsPortV is a pointer to a memory location where the structure CpPort_ts is stored. An opened CAN port must be closed via the CpCoreDriverRelease() function.
|
friend |
| [in] | ptsPortV | Pointer to CAN port structure |
eCP_ERR_NONE.The function closes a CAN port. The parameter ptsPortV is a pointer to a memory location where structure CpPort_ts is stored. The implementation of this function is dependent on the operating system. Typical tasks might be:
|
friend |
| [in] | ptsPortV | Pointer to CAN port structure |
| [in] | ubBufferIdxV | Buffer number |
| [in] | ptsFifoV | Pointer to FIFO structure |
eCP_ERR_NONE.This function assigns a FIFO to a message buffer defined by the parameter ubBufferIdxV. The first message buffer starts at the index eCP_BUFFER_1. The buffer has to be configured by CpCoreBufferConfig() in advance. The parameter ptsFifoV is a pointer to a memory location where a FIFO has been initialised using the CpFifoInit() function.
The following example shows the configuration of a receive FIFO
|
friend |
| [in] | ptsPortV | Pointer to CAN port structure |
| [in] | ubBufferIdxV | Buffer number |
| [out] | ptsCanMsgV | Pointer to a CAN frame structure |
| [in,out] | pulMsgCntV | Pointer to CAN frame counter variable |
eCP_ERR_NONE.This function reads CAN frames from a receive FIFO defined by the parameter ubBufferIdxV. The first message buffer starts at the index eCP_BUFFER_1. The FIFO has to be configured by CpCoreFifoConfig() in advance. The parameter ptsCanMsgV is a pointer to the application buffer as array of CpCanMsg_ts objects to store the received CAN frames. The parameter pulMsgCntV is a pointer to a memory location that must be initialised before the call with the capacity (number of CpCanMsg_ts elements) of the buffer referenced by ptsCanMsgV. Upon return, the driver stores the number of CAN frames copied into the application buffer in this parameter.
The following example shows a read operation from a receive FIFO
|
friend |
| [in] | ptsPortV | Pointer to CAN port structure |
| [in] | ubBufferIdxV | Buffer number |
eCP_ERR_NONE.This function releases an assigned FIFO from a message buffer defined by the parameter ubBufferIdxV. The first message buffer starts at the index eCP_BUFFER_1. The FIFO has to be configured by CpCoreFifoConfig() in advance.
|
friend |
| [in] | ptsPortV | Pointer to CAN port structure |
| [in] | ubBufferIdxV | Buffer number |
| [in] | ptsCanMsgV | Pointer to a CAN frame structure |
| [in,out] | pulMsgCntV | Pointer to CAN frame counter variable |
eCP_ERR_NONE.This function writes CAN frames to a transmit FIFO defined by the parameter ubBufferIdxV. The first message buffer starts at the index eCP_BUFFER_1. The FIFO has to be configured by CpCoreFifoConfig() in advance. The parameter ptsCanMsgV is a pointer to the application buffer as array of CpCanMsg_ts objects which contain the CAN frames that should be transmitted. The parameter pulMsgCntV is a pointer to a memory location that must be initialised before the call with the capacity (number of CpCanMsg_ts elements) of the buffer referenced by ptsCanMsgV. Upon return, the driver stores the number of CAN frames transmitted successfully in this parameter.
|
friend |
| [in] | ptsPortV | Pointer to CAN port structure |
| [out] | ptsHdiV | Pointer to the Hardware Description Interface structure (CpHdi_ts) |
eCP_ERR_NONE.This function retrieves information about the CAN interface. The parameter ptsHdiV is a pointer to a memory location where the function will store the information.
|
friend |
| [in] | ptsPortV | Pointer to CAN port structure |
| [in] | pfnRcvHandlerV | Pointer to callback function for receive handler |
| [in] | pfnTrmHandlerV | Pointer to callback function for transmit handler |
| [in] | pfnErrHandlerV | Pointer to callback function for error handler |
eCP_ERR_NONE.This function installs three different callback routines in the interrupt handler. If you do not want to install a callback for a certain interrupt condition, set the parameter to NULL. The callback functions for receive and transmit interrupts have the following syntax: uint8_t Handler(CpCanMsg_ts * ptsCanMsgV, uint8_t ubBufferIdxV)
The callback function for the CAN status-change / error interrupt has the following syntax: uint8_t Handler(CpState_ts * ptsErrV)
|
friend |
| [in] | ptsPortV | Pointer to CAN port structure |
| [in] | ptsStatsV | Pointer to statistics data structure |
eCP_ERR_NONE.This function copies CAN statistics information to the structure pointed to by ptsStatsV.
|
friend |
| [in] | ptsPortV | Pointer to CAN port structure |
eCP_ERR_NONE.This function clears CAN controller statistics.