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

📄 buff.h

📁 profibus-dp主站源代码
💻 H
字号:
//-----------------------------------------------------------------------------
// $Id: buff.h,v 1.0.0                                              2004/01/13
//-----------------------------------------------------------------------------
//
//      ProfiM - PROFIBUS MASTER DRIVER FOR WINDOWS NT/2000
//
// Author:  
//      Pavel Trnka, CTU FEE
//      trnkap@seznam.cz
// With help and advices from:
//      Ing. Petr Smolik, CTU FEE
//      Ing. Pavel Pisa, CTU FEE
//      Ing. Pavel Burget, CTU FEE
//
//-----------------------------------------------------------------------------
//---------------------------------------------------------------------------

#ifndef buffH
#define buffH

#include "vardef.h"


//*****************************************************************************
//**
//**  Request Buffer
//**
//*****************************************************************************


typedef struct
{
    fdl_rb      LowBuffer[RQ_BUFFER_SIZE], HighBuffer[RQ_BUFFER_SIZE];
    // fdl_rb - Fieldbus Data Link Request Block
    int         LowFirst, LowLast;
    int         HighFirst, HighLast;        
    void      * DeviceExtension;
} TRequestBuffer, *PTRequestBuffer;



void        ReqB_Init( PTRequestBuffer ReqB, void *_DeviceExtension );
void        ReqB_Close( PTRequestBuffer ReqB );
BOOLEAN     ReqB_Empty( PTRequestBuffer ReqB );
BOOLEAN     ReqB_Full( PTRequestBuffer ReqB, UBYTE priority );
BOOLEAN     ReqB_LowEmpty( PTRequestBuffer ReqB );
BOOLEAN     ReqB_HighEmpty( PTRequestBuffer ReqB );
int         ReqB_LowCount( PTRequestBuffer ReqB );
int         ReqB_HighCount( PTRequestBuffer ReqB );

void        ReqB_Add( PTRequestBuffer ReqB, fdl_rb  *rb );
//ResultHandle  Add(PTRequestBuffer ReqB, fdl_rb  *rb);
void        ReqB_GetDeleteNextHigh( PTRequestBuffer ReqB, fdl_rb  **rb );
void        ReqB_GetDeleteNextLow( PTRequestBuffer ReqB, fdl_rb **rb );
//BOOLEAN     ReqB_MarkRBforPendingISR( PTRequestBuffer ReqB, int HID, PIRP IPR );
//void        ReqB_RemoveIRP( PTRequestBuffer ReqB, PIRP IRP );




//*****************************************************************************
//**
//**  Result Buffer
//**
//*****************************************************************************

typedef struct
{
    fdl_rb      Buffer[RS_BUFFER_SIZE];
    int         First, Last;
    void      * DeviceExtension;
} TResultBuffer, *PTResultBuffer;



void        ResB_Init ( PTResultBuffer ResB, void *_DeviceExtension );
void        ResB_Close( PTResultBuffer ResB );
BOOLEAN     ResB_Empty( PTResultBuffer ResB );
BOOLEAN     ResB_Full ( PTResultBuffer ResB );
int         ResB_Count( PTResultBuffer ResB );

void        ResB_Add( PTResultBuffer ResB, fdl_rb *rb );
//ResultHandle  Add(PTRequestBuffer ReqB, fdl_rb  *rb);
BOOLEAN     ResB_GetDeleteNext( PTResultBuffer ResB, fdl_rb **rb );

BOOLEAN     ResB_GetByHID( PTResultBuffer ResB, fdl_rb  **rb, int HID );
BOOLEAN     ResB_DeleteByHID( PTResultBuffer ResB, int HID );





//*****************************************************************************
//**
//**  Irp Buffer
//**
//*****************************************************************************

typedef struct
{
    int       HID[IRP_BUFFER_SIZE];   // Handle ID
    int       MID[IRP_BUFFER_SIZE];   // Messae ID
    PIRP      IRP[IRP_BUFFER_SIZE];   // I/O Request Packet 
    
    int       First, Last;
    void      * DeviceExtension;    
} TIrpBuffer, *PTIrpBuffer;



void        IrpB_Init ( PTIrpBuffer IrpB, void *_DeviceExtension );
void        IrpB_Close( PTIrpBuffer IrpB );
BOOLEAN     IrpB_Empty( PTIrpBuffer IrpB );
BOOLEAN     IrpB_Full( PTIrpBuffer IrpB );

void        IrpB_Add( PTIrpBuffer IrpB, int _HID, int _MID, PIRP _IRP );
PIRP        IrpB_GetFirstIrp( PTIrpBuffer IrpB, int _HID );
void        IrpB_DeleteFirstIrp( PTIrpBuffer IrpB, int _HID );
PIRP        IrpB_DeleteIrp( PTIrpBuffer IrpB, int _HID, int _MID );
void        IrpB_Delete( PTIrpBuffer IrpB, int pos );

void        IrpB_DeleteAllByHID( PTIrpBuffer IrpB, int _HID );
void        IrpB_DeleteByIrp( PTIrpBuffer IrpB, PIRP _IRP );



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

//fce z Profim.c
void        ResultAdded( void *DeviceExtension );
BOOLEAN     MarkActualRequestforPendingISR( void *DeviceExtension,
                                            int HID,
                                            PIRP IRP );
void        StoreIRPinRB( fdl_rb *rb, PIRP IRP );
int         ReadHIDfromRB( fdl_rb *rb );
PIRP        ReadIRPfromRB( fdl_rb *rb );



#endif

⌨️ 快捷键说明

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