143 lines
3.5 KiB
C
143 lines
3.5 KiB
C
![]() |
/*
|
|||
|
* can_api.h
|
|||
|
*
|
|||
|
* Created on: 2010-5-31
|
|||
|
* Author: zhl
|
|||
|
*/
|
|||
|
#ifndef CAN_API_H_
|
|||
|
#define CAN_API_H_
|
|||
|
|
|||
|
#include "em9x60_drivers.h"
|
|||
|
|
|||
|
/* special address description flags for the CAN_ID */
|
|||
|
#define CAN_EFF_FLAG 0x80000000U /* EFF/SFF is set in the MSB */
|
|||
|
#define CAN_RTR_FLAG 0x40000000U /* remote transmission request */
|
|||
|
#define CAN_ERR_FLAG 0x20000000U /* error frame */
|
|||
|
|
|||
|
/**
|
|||
|
* struct can_frame - basic CAN frame structure
|
|||
|
* @can_id: the CAN ID of the frame and CAN_*_FLAG flags, see above.
|
|||
|
* bit 0-28: CAN identifier (11/29 bit)
|
|||
|
* bit 29 : error frame flag (0 = data frame, 1 = error frame)
|
|||
|
* bit 30 : remote transmission request flag (1 = rtr frame)
|
|||
|
* bit 31 : frame format flag (0 = standard 11 bit, 1 = extended 29 bit)
|
|||
|
* @can_dlc: the data length field of the CAN frame
|
|||
|
* @data: the CAN frame payload.
|
|||
|
*/
|
|||
|
#ifdef EMTRONIX_EM9360
|
|||
|
struct can_frame{
|
|||
|
unsigned int can_id; /* 32 bit CAN_ID + EFF/RTR/ERR flags */
|
|||
|
unsigned char can_dlc; /* data length code: 0 .. 8 */
|
|||
|
unsigned char data[8] __attribute__((aligned(8)));
|
|||
|
} ;
|
|||
|
|
|||
|
#elif defined (WIN32)
|
|||
|
|
|||
|
struct can_frame{
|
|||
|
unsigned int can_id; /* 32 bit CAN_ID + EFF/RTR/ERR flags */
|
|||
|
unsigned char can_dlc; /* data length code: 0 .. 8 */
|
|||
|
unsigned char data[8];
|
|||
|
} ;
|
|||
|
|
|||
|
#endif
|
|||
|
|
|||
|
/*
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>CAN<EFBFBD><EFBFBD><EFBFBD><EFBFBD>оƬΪ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<EFBFBD><EFBFBD>
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* fd: CAN<EFBFBD>豸<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>
|
|||
|
* 0: <EFBFBD>ɹ<EFBFBD>
|
|||
|
* <0: ʧ<EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
int CAN_StartChip( int fd );
|
|||
|
|
|||
|
/*
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>CAN<EFBFBD><EFBFBD><EFBFBD><EFBFBD>оƬΪ<EFBFBD><EFBFBD>λģʽ<EFBFBD><EFBFBD>
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* fd: CAN<EFBFBD>豸<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>
|
|||
|
* 0: <EFBFBD>ɹ<EFBFBD>
|
|||
|
* <0: ʧ<EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
int CAN_StopChip( int fd );
|
|||
|
|
|||
|
/*
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>CANͨѶ<EFBFBD>IJ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* fd: CAN<EFBFBD>豸<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* Baud<EFBFBD><EFBFBD> ö<EFBFBD>ٱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD>ͬ<EFBFBD>IJ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* CAN_BAUDRATE_10K = 0: 10Kbps
|
|||
|
* CAN_BAUDRATE_20K = 1: 20Kbps
|
|||
|
* CAN_BAUDRATE_50K = 2: 50Kbps
|
|||
|
* CAN_BAUDRATE_100K = 3: 100Kbps
|
|||
|
* CAN_BAUDRATE_125K = 4: 125Kbps
|
|||
|
* CAN_BAUDRATE_250K = 5: 250Kbps
|
|||
|
* CAN_BAUDRATE_500K = 6: 500Kbps
|
|||
|
* CAN_BAUDRATE_1000K = 7: 1Mbps
|
|||
|
* CAN_BAUDRATE_60K = 8: 60Kbps
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>
|
|||
|
* 0: <EFBFBD>ɹ<EFBFBD>
|
|||
|
* <0: ʧ<EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
int CAN_SetBaudRate( int fd , CAN_BAUDRATE Baud );
|
|||
|
|
|||
|
/*
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>CANͨѶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˲<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* fd: CAN<EFBFBD>豸<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* *AcceptanceFilter: <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˲<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ṹָ<EFBFBD><EFBFBD>
|
|||
|
* struct accept_filter
|
|||
|
* {
|
|||
|
* unsigned int accept_code;
|
|||
|
* unsigned int accept_mask;
|
|||
|
* unsigned char filter_mode;
|
|||
|
* };
|
|||
|
* accept_code: <EFBFBD>˲<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* accept_mask: <EFBFBD>˲<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* filter_mode: 0-˫<EFBFBD>˲<EFBFBD><EFBFBD><EFBFBD> 1-<EFBFBD><EFBFBD><EFBFBD>˲<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
*
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>
|
|||
|
* 0: <EFBFBD>ɹ<EFBFBD>
|
|||
|
* <0: ʧ<EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
int CAN_SetGlobalAcceptanceFilter( int fd , accept_filter *AcceptanceFilter );
|
|||
|
|
|||
|
/*
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD>CAN<EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD>ģʽ
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* fd: CAN<EFBFBD>豸<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* Mode<EFBFBD><EFBFBD> 1-<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD>ģʽ
|
|||
|
* 0-<EFBFBD>ر<EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD>ģʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>
|
|||
|
* 0: <EFBFBD>ɹ<EFBFBD>
|
|||
|
* <0: ʧ<EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
int CAN_SelfTest( int fd , int Mode );
|
|||
|
|
|||
|
/*
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡCANͨѶʱ<EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* fd: CAN<EFBFBD>豸<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* *ErrorPtr<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>
|
|||
|
* 0: <EFBFBD>ɹ<EFBFBD>
|
|||
|
* <0: ʧ<EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
int CAN_GetError( int fd , unsigned int *ErrorPtr);
|
|||
|
|
|||
|
/*
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡCANͨѶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD>CAN<EFBFBD><EFBFBD><EFBFBD><EFBFBD>оƬ<EFBFBD><EFBFBD>״̬<EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD>ֵ
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* fd: CAN<EFBFBD>豸<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* *DriverStatistics<EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD>Ӧͳ<EFBFBD>ƽṹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>
|
|||
|
* 0: <EFBFBD>ɹ<EFBFBD>
|
|||
|
* <0: ʧ<EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
int CAN_GetCANDriverStatistics( int fd , drv_statistics *DriverStatistics );
|
|||
|
|
|||
|
|
|||
|
#endif /* CAN_API_H_ */
|