⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pktdrv.h

📁 CANopenNode source code with tutorials - free CANopen stack
💻 H
字号:
/****************************************************************************
* (C) 1999-2005 by BECK IPC GmbH
*
*  BECK IPC GmbH
*  Germany
*  
*  http://www.beck-ipc.com
*
* ---------------------------------------------------------------------------
* Module        : PKTDRV.H
* Function      : Definitions for Packet driver interface
* ---------------------------------------------------------------------------

$Header: /cvsrepo/CANopenNode/_src/CANopen/BECK_SC1x+SJA1000/Clib/Pktdrv.h,v 1.1 2006/03/08 11:29:44 jani Exp $

/**************************************************************************/

#ifndef _PKT_DRV_H_
#define _PKT_DRV_H_

/**************************************************************************/
// Defines
/**************************************************************************/
#ifdef _MSC_VER /* If Microsoft C Compiler is used, define new FP_SEG and FP_OFF Macro */
    #ifdef FP_SEG
        #undef FP_SEG
    #endif
    #define FP_SEG(ptr)    ((unsigned int)(((unsigned long)ptr)>>16))

    #ifdef FP_OFF
        #undef FP_OFF
    #endif
    #define FP_OFF(ptr)    ((unsigned int)(((unsigned long)ptr)&0xFFFF))
#endif


#define PKTVECT  0xAE

//frame size
#define SIZE_ETH_HEADER    (int)14
#define ETH_MIN            (int)64
#define ETH_MAX            (int)1500

/* Packet driver error return codes */
#define NO_ERROR             0
#define BAD_HANDLE           1 /* invalid handle number */
#define BAD_TYPE             5 /* bad packet type specified */
#define NO_SPACE             9 /* operation failed because of insufficient space */
#define TYPE_INUSE          10 /* the type had previously been accessed, and not released */
#define BAD_COMMAND         11 /* the command was out of range, or not implemented */
#define CANT_SEND           12 /* the packet couldn't be sent (usually hardware error) */


/* Packet driver function call numbers */
#define DRIVER_INFO          1
#define ACCESS_TYPE          2
#define RELEASE_TYPE         3
#define SEND_PKT             4
#define GET_ADDRESS          6
#define SET_RCVMODE         20
#define GET_RCVMODE         21
#define SET_MULTICAST       22     /*set/add multicast mac address*/
#define DEL_MULTICAST       39     /*remove multicast mac address*/
#define INSTALL_WILDCARD    40

/*Receive modes*/
#define    RCV_BCAST        3  // accept own address and broadcasts (default)
#define    RCV_BCAST_MCAST  5  // own address, broadcasts and multicasts
#define    RCV_ALL          6  // all incoming packets are accepted

/************************************************************************/
// type definitions
/************************************************************************/

//ethernet frame
typedef struct tag_ethernet_packet_format
{
    unsigned char   dest[6];
    unsigned char   src[6];
    unsigned int    type;
    unsigned char   data[1500];
}Eth_Packet;


typedef union union_eth
{
    Eth_Packet     packstruc;
    unsigned char  packet[sizeof(Eth_Packet)];
}Ethernet_Packet;


//driver info
typedef struct tag_driver_info
{
   unsigned char basic;
   unsigned char _class;
   unsigned char number;
   unsigned int  type;
   unsigned int  version;
}Driver_Info;


typedef void (far *fpFktPtr)();


/************************************************************************/
//prototypes
/************************************************************************/

#ifdef __cplusplus
extern "C" {
#endif

unsigned char _cdecl PktDriver_Installed(void);
unsigned char _cdecl Get_Driver_Info(Driver_Info * drv_info );
unsigned char _cdecl Get_Eth_Address(unsigned char far *buffer, unsigned int len);
unsigned char _cdecl Send_Packet(const unsigned char far * buffer, unsigned int len);
unsigned int  _cdecl Set_Access_Type(Driver_Info * drv_info, void far * Receiver, int far * pkt_type, int *handle);
unsigned int  _cdecl Release_Type(unsigned int handle);
unsigned int  _cdecl Set_Multicast(unsigned char far * mac_addr, int set);
unsigned int  _cdecl Set_WildcardAccess_Type(Driver_Info * drv_info, void far * Receiver, int far * pkt_type, int *handle);
unsigned int  _cdecl Get_Receive_Mode(unsigned char * error);
unsigned int  _cdecl Set_Receive_Mode(unsigned int mode,unsigned char * error);


#ifdef __cplusplus
}
#endif
/************************************************************************/

#endif

/************************************************************************/
//end pktdrv.h
/************************************************************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -