📄 can841.h
字号:
/*****************************************************************************
* FILE : CAN841.H
* DATE : 11-3-95'
* Version : V1.0
* Description : Prototype for CAN841x.LIB
*
*
*
******************************************************************************/
#ifndef _CAN841_H
#define _CAN841_H
#define BYTE unsigned char
#define UI unsigned int
#define UL unsigned long
/*add by jinzhong*/
#define CANBUS_PROTOCOL_20A 0 /* protocol 2.0A, add by jinzhong*/
#define CANBUS_PROTOCOL_20B 1 /* protocol 2.0B, add by jinzhong*/
#define PELICAN_DOUBLE_FILTER 0 // in prelican mode, use two 2bytes code and mask to filter
#define PELICAN_SINGLE_FILTER 8 /* in prelican mode, use a 4bytes code and mask to filter*/
typedef unsigned long DWORD;
typedef unsigned char UCHAR;
typedef struct tag_PT_FilterSetting
{
DWORD dwFilterType; /* filter type: 0 - two 2bytes accept code and accept mask
8 - a 4 bytes accept code and accept mask */
UI uchAcceptCode0;
UI uchAcceptCode1;
UI uchAcceptCode2;
UI uchAcceptCode3;
UI uchAcceptMask0;
UI uchAcceptMask1;
UI uchAcceptMask2;
UI uchAcceptMask3;
}PT_FilterSetting;
/* Data Frame Format */
#define PELICAN_EFF 0x80 /* Extended Frame Format*/
#define PELICAN_SFF 0x00 /* Standard Frame format */
typedef struct {
BYTE acc_code;
BYTE acc_mask;
BYTE bt0;
BYTE bt1;
BYTE protocoltype;/*add by jinzhong*/
PT_FilterSetting ssFilterSetting;
}CAN_STRUCT;
/*end added*/
typedef struct {
UI id;
BYTE rtr;
BYTE dlen;
BYTE data[8];
} MSG_STRUCT, *pMSG_STRUCT;
/*add by jinzhong*/
typedef struct {
UCHAR ff;
UCHAR rtr; /* EFF RTR 0 0 DLC.3 DLC.2 DLC.1 DLC.0 */
long id; /* not present in standard frames */
UCHAR dlen;
UCHAR data[8];
} CAN_MSG_T_EX, *PCAN_MSG_T_EX;
/*edd added*/
#define CAN_MSG_LEN sizeof(MSG_STRUCT)
#define CAN_MSG_EX_LEN sizeof(CAN_MSG_T_EX)/*add by jinzhong*/
#define RD_FIFO_EX_LEN (1000*CAN_MSG_EX_LEN)/*add by jinzhong*/
#define RD_FIFO_LEN (1000*CAN_MSG_LEN)
#define FIFO_EMPTY -1
#define FIFO_OK 0
#define FIFO_FULL 1
#define FIFO_OVERFLOW 2
#define ULONG unsigned long
typedef struct
{
ULONG head;
ULONG tail;
ULONG status;
ULONG size;
unsigned char buffer[RD_FIFO_LEN];
}CAN_RD_FIFO_T;
/*add by jinzhong*/
typedef struct {
ULONG head;
ULONG tail;
ULONG status;
ULONG size;
UCHAR buffer[RD_FIFO_EX_LEN];
} CAN_RD_FIFO_EX_T;
/*end added*/
extern int can_err_no;
/*=============== functions declaration ==========================*/
/* set can card hardware setting , if successful return 1, else return 0*/
/*----------------------------------------------------------------------
input:
segment :set memory decode segment value, 0xC000 to 0xDF00
irq1 : can port#1 irq number
irq2 : can port#2 irq number
----------------------------------------------------------------------*/
int canInitHW( UI segment, BYTE irq1, BYTE irq2);
int canReleaseHW();
/* reset can controller */
int canReset( BYTE port );
/* initiallize and configure can controller */
int canConfig( BYTE port, CAN_STRUCT can);
/* change can controller to normal run mode */
int canNormalRun( BYTE port );
/* send a message */
int canSendMsg( BYTE port, MSG_STRUCT send_msg);
/* receive a message */
int canReceiveMsg( BYTE port, MSG_STRUCT *msg_ptr, BYTE* pIsEmpty);
int canSetProtocolType( BYTE port,BYTE protocoltype );
/*add by jinzhong*/
int canReceiveMsgEx( BYTE port, CAN_MSG_T_EX *msg_ptrex, BYTE * IsEmpty);
int canSendMsgEx( BYTE port, CAN_MSG_T_EX msgex);
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -