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

📄 flexdrv.h

📁 高速同步串口芯片PEB20534的驱动程序
💻 H
字号:
/***************************************************************  FlexNet / BayCom        Layer 1 Service Interface  (C) 7/1994 DK7WJ, DL8MBT  Translation by HB9JNX  Definitionen und Prototypes f乺 Aufruf von Layer1-Funktionen  Definitions and prototypes for calling Layer1 functions  28.08.94   DK7WJ          Erste verteilte Version                            First distributed version  10.09.94   DK7WJ          Modebefehl geaendert                            Changed the mode command                            Prototypen neu f. Speichermodell MEDIUM                            New prototypes for the MEDIUM memory model  25.09.94   DK7WJ          FDX an Treiber uebergeben                            FDX now forwarded to the driver  20.02.95   DK7WJ          CH_TBY neu                            CH_TBY added  31.03.95   DK7WJ          Device-Versionkennungen                            Device version identifier  01.03.96   DK7WJ          Windows extensions, comments pending :-)  22.04.96   DK7WJ          .  25.03.97   HB9JNX         IO trapping changes  10.01.00   DK7WJ          WIN32 definitions  19.06.00   DK7WJ          CH_DEAD included ***************************************************************///#ifndef _FLEXTYPES_DEFINED//#define _FLEXTYPES_DEFINEDtypedef unsigned char   byte;typedef signed char     i8;typedef signed short      i16;typedef unsigned short    u16;typedef unsigned long   u32;#ifdef _WIN32#define far#define near#endif//#endif#ifdef _WIN32#pragma pack(push, flexdrv)#pragma pack(1)#endif#define MAXFLEN 400     /* Maximale Laenge eines Frames */                        /* maximum length of a frame *//* Struct f. Treiberkommunikation bei TX und RX *//* struct for communicating RX and TX packets to the driver */typedef struct    {    i16  len;               /* Laenge des Frames - length of the frame */    byte kanal;             /* Kanalnummer - channel number */    byte txdelay;           /* RX: Gemessenes TxDelay [*10ms],                                   0 wenn nicht unterstuetzt                               TX: Zu sendendes TxDelay */                            /* RX: measured transmitter keyup delay (TxDelay) in 10ms units,                                   0 if not supported                               TX: transmitter keyup delay (TxDelay) that should be sent */    byte frame[MAXFLEN];    /* L1-Frame (ohne CRC) - L1 frame without CRC */    } L1FRAME;/* Struct f. Kanalstatistik (wird noch erweitert) *//* struct for channel statistics (still being extended) */#ifndef _FLEXAPPLtypedef struct    {    u32 tx_error;           /* Underrun oder anderes Problem - underrun or some other problem */    u32 rx_overrun;         /* Wenn Hardware das unterstuetzt - if supported by the hardware */    u32 rx_bufferoverflow;    u32 tx_frames;          /* Gesamt gesendete Frames - total number of sent frames */    u32 rx_frames;          /* Gesamt empfangene Frames - total number of received frames */    u32 io_error;           /* Reset von IO-Device - number of resets of the IO device */    u32 reserve[4];         /* f. Erweiterungen, erstmal 0 lassen! - reserved for extensions, leave 0! */    } L1_STATISTICS;#endif#ifdef _WIN32extern HANDLE hInst;#pragma pack(pop, flexdrv)#endif/* Masken f乺 den Mode-Parameter - bitmasks for the mode parameter */#define MODE_d   0x0080#define MODE_r   0x0040#define MODE_t   0x0020#define MODE_z   0x0010#define MODE_p	 0x0004	  /* needs also MODE_d */#define MODE_c   0x0002#define MODE_off 0x0001   /* Special: Wenn 1, Kanal abgeschaltet */                          /* special: if one, the channel is switched off *//* Masken f乺 den L1-Kanalstatus *//* masks for the L1 channel status */#define CH_DEAD 0x01#define CH_RXB  0x40#define CH_PTT  0x20#define CH_DCD  0x10#define CH_FDX  0x08#define CH_TBY  0x04#ifdef _WIN32// Konfiguration. Wenn geaendert, TRUE returnen, dann erfolgt exit() und Re-Init// max_channels: Maximal moegliche Kanalanzahl f. diesen Treiberint config_device(byte max_channels, HWND hParentWindow, byte channel);// Return: Anzahl belegte Kanaele!byte *config_info(byte channel);/* Liefert String der die treiberspezifische Konfiguration beschreibt, z.B. Resourcen-Name   Wenn keine treiberspezifische Konfiguration vorhanden (config_device() ist Dummy),	Nullpointer liefern *//* Returns a string describing the channel configuration, i.e. the name of hardware resource   If config_device() is a dummy, this call must return a null pointer*/int init_device(HKEY kHey);void far l1_exit(HKEY hKey);void set_txdelay(byte channel, byte txdel);byte get_txdelay(byte channel);u16 get_baud(byte channel);u16 get_mode(byte channel);#elseu16 far init_device(int argc, char near *argv[]);/* Treiberinterner Aufruf aus Treiberkopf bei Installation: kann benutzt   werden um Command Line Parameter zu parsen   Return: 0=OK; sonst Exit mit Returnwert als Exit-Argument    ACHTUNG: Wenn Returnwert >0, erfolgt Abbruch, es duerfen dann also keine             aktiven oder umgelegten Interrupts verbleiben!*//* This procedure is called from the driver stub at installation time. It   may be used to parse the command line   Return value: 0=OK; otherwise installation is cancelled and the value                 returned as exit argument    WARNING: If return value >0 the installation is cancelled, active or             patched interrupt vectors must not be left!*/void far l1_exit(void);/*  Wird bei Verlassen des Programms aufgerufen und kann zum Aufr剈men    verwendet werden (Interrupts und Schnittstellen abschalten)*//*  Is called when the driver terminates and may be used to clean up everything    (switch off interrupts and interfaces)*/#endifu16 far l1_get_ch_cnt(void);/* Aufruf aus Treiberkopf bei Programmstart; muss Anzahl der im Treiber   definierten Kanaele liefern*//* called from the driver stub at installation time; should return the number   of channels defined by the driver*/byte far l1_ch_active(byte kanal);/*  Zurueckliefern, ob Kanal im Prinzip funktionstuechtig ist.    Also immer, ausser wenn Dummykanal, >0 liefern!*//* report if the channel could work in principle. Thus always return >0 if   not a dummy channel.*/byte far l1_init_kanal(byte kanal, u16 baud, u16 mode);/*    Kanalnummer: 0-15    Baud: Baudrate / 100, z.B. 115200 Baud wird als 1152 uebergeben    Mode: Kanalmodus, Bitflaggen, derzeit definiert:         0x0080   d   Vollduplex         0x0040   r   Externer RX-Takt         0x0020   t   Externer TX-Takt         0x0010   z   NRZ-Kodierung (Anstatt NRZI), nur f. HDLC         0x0002   c   Kanal macht immer CRC, nur f. KISS                         Baycom: Soft-DCD aktivieren         0x0001   -   Kanal per Modebefehl deaktiviert    Es sind noch weitere Bits definiert, die sind aber im L1-Treiber nicht    relevant!    Um eventuelle Verklemmungen zu beseitigen, sollte in diesem Modul der    Treiber soweit als moeglich (re)initialisiert werden!    Return: 1 wenn alles ok;            0 wenn Parameterfehler, dann Anzeige von '---' in der Modeliste    Aufruf erfolgt beim Programmstart sowie bei jeder Baud- oder Mode刵derung,    ausserdem wenn der Kanal seit 3 Minuten nichts mehr empfangen hat.*//*    kanal: channel number (0-15)    baud:  the baud rate / 100, for example 115200 baud is specified as           baud = 1152    mode:  the channel mode, a bit field, currently the following bits are           defined:           0x0080   d   Full duplex           0x0040   r   External RX clock           0x0020   t   External TX clock           0x0010   z   NRZ coding (instead of NRZI) (only for HDLC)           0x0002   c   KISS: driver forces checksum                        Baycom: activate software DCD           0x0001   -   channel inactivated           There are some additional bits defined which are not relevant to the           L1 driver.    To recover from lockups, this function should (re)initialize as much of the    driver and the hardware as possible.    Return value: 1 if everything is ok;                  0 if a parameter error; '---' is then displayed in the ports                  list    This procedure is called at program start, at every baud rate or mode    change, or if the driver has not received anything for 3 minutes.*/L1FRAME far * far l1_rx_frame(void);/*    Wird zyklisch aufgerufen    Return: *Frame oder 0 wenn nichts empfangen            Der Frame mu

⌨️ 快捷键说明

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