搭建PVB架构,实现前端的基础布局、菜单、表格、图示等功能

This commit is contained in:
lixiaoyuan
2025-08-20 19:00:22 +08:00
parent 5de7687bcc
commit 7e965b6fb4
142 changed files with 28270 additions and 411 deletions

View File

@@ -0,0 +1,495 @@
/* <St> *******************************************************************
cif_user.h
-------------------------------------------------------------------------
CREATETED : D. Tsaava, Hilscher GmbH
DATE : 18.07.2000
PROJEKT : CIF device driver
=========================================================================
DISCRIPTION
User interface definition.
=========================================================================
CHANGES
version name date Discription
Juli 2004 Copyright changed to GNU Lesser GPL
-------------------------------------------------------------------------
V2.000
NOTE: The Code from the Windows version of the driver related to
driver API was taken over for the most part unchanged
======================== Copyright =====================================
Copyright (C) 2004 Hilscher GmbH
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
========================================================================
******************************************************************** <En> */
/* prevent multiple inclusion */
#ifndef CIFUSER_H_INCLUDED
#define CIFUSER_H_INCLUDED
//#ifdef __cplusplus
// extern "C" {
//#endif /* _cplusplus */
#ifndef _GNUC_
# define _GNUC_
#endif /* _GNUC_ */
/* ------------------------------------------------------------------------------------ */
/* global definitions */
/* ------------------------------------------------------------------------------------ */
#define MAX_DEV_BOARDS 4 // maximum numbers of boards
/* ------------------------------------------------------------------------------------ */
/* driver errors */
/* ------------------------------------------------------------------------------------ */
#define DRV_NO_ERROR 0 // no error
#define DRV_BOARD_NOT_INITIALIZED -1 // DRIVER Board not initialized
#define DRV_INIT_STATE_ERROR -2 // DRIVER Error in internal init state
#define DRV_READ_STATE_ERROR -3 // DRIVER Error in internal read state
#define DRV_CMD_ACTIVE -4 // DRIVER Command on this channel is activ
#define DRV_PARAMETER_UNKNOWN -5 // DRIVER Unknown parameter in function occured
#define DRV_WRONG_DRIVER_VERSION -6 // DRIVER Version is incompatible with DLL
#define DRV_PCI_SET_CONFIG_MODE -7 // DRIVER Error during PCI set run mode
#define DRV_PCI_READ_DPM_LENGTH -8 // DRIVER Could not read PCI dual port memory length
#define DRV_PCI_SET_RUN_MODE -9 // DRIVER Error during PCI set run mode
#define DRV_DEV_DPM_ACCESS_ERROR -10 // DEVICE Dual port ram not accessable(board not found)
#define DRV_DEV_NOT_READY -11 // DEVICE Not ready (ready flag failed)
#define DRV_DEV_NOT_RUNNING -12 // DEVICE Not running (running flag failed)
#define DRV_DEV_WATCHDOG_FAILED -13 // DEVICE Watchdog test failed
#define DRV_DEV_OS_VERSION_ERROR -14 // DEVICE Signals wrong OS version
#define DRV_DEV_SYSERR -15 // DEVICE Error in dual port flags
#define DRV_DEV_MAILBOX_FULL -16 // DEVICE Send mailbox is full
#define DRV_DEV_PUT_TIMEOUT -17 // DEVICE PutMessage timeout
#define DRV_DEV_GET_TIMEOUT -18 // DEVICE GetMessage timeout
#define DRV_DEV_GET_NO_MESSAGE -19 // DEVICE No message available
#define DRV_DEV_RESET_TIMEOUT -20 // DEVICE RESET command timeout
#define DRV_DEV_NO_COM_FLAG -21 // DEVICE COM-flag not set
#define DRV_DEV_EXCHANGE_FAILED -22 // DEVICE IO data exchange failed
#define DRV_DEV_EXCHANGE_TIMEOUT -23 // DEVICE IO data exchange timeout
#define DRV_DEV_COM_MODE_UNKNOWN -24 // DEVICE IO data mode unknown
#define DRV_DEV_FUNCTION_FAILED -25 // DEVICE Function call failed
#define DRV_DEV_DPMSIZE_MISMATCH -26 // DEVICE DPM size differs from configuration
#define DRV_DEV_STATE_MODE_UNKNOWN -27 // DEVICE State mode unknown
// Error from Interface functions
#define DRV_USR_OPEN_ERROR -30 // USER Driver not opened (device driver not loaded)
#define DRV_USR_INIT_DRV_ERROR -31 // USER Can't connect with device
#define DRV_USR_NOT_INITIALIZED -32 // USER Board not initialized (DevInitBoard not called)
#define DRV_USR_COMM_ERR -33 // USER IOCTRL function failed
#define DRV_USR_DEV_NUMBER_INVALID -34 // USER Parameter DeviceNumber invalid
#define DRV_USR_INFO_AREA_INVALID -35 // USER Parameter InfoArea unknown
#define DRV_USR_NUMBER_INVALID -36 // USER Parameter Number invalid
#define DRV_USR_MODE_INVALID -37 // USER Parameter Mode invalid
#define DRV_USR_MSG_BUF_NULL_PTR -38 // USER NULL pointer assignment
#define DRV_USR_MSG_BUF_TOO_SHORT -39 // USER Message buffer too short
#define DRV_USR_SIZE_INVALID -40 // USER Parameter Size invalid
#define DRV_USR_SIZE_ZERO -42 // USER Parameter Size with zero length
#define DRV_USR_SIZE_TOO_LONG -43 // USER Parameter Size too long
#define DRV_USR_DEV_PTR_NULL -44 // USER Device address null pointer
#define DRV_USR_BUF_PTR_NULL -45 // USER Pointer to buffer is a null pointer
#define DRV_USR_SENDSIZE_TOO_LONG -46 // USER Parameter SendSize too long
#define DRV_USR_RECVSIZE_TOO_LONG -47 // USER Parameter ReceiveSize too long
#define DRV_USR_SENDBUF_PTR_NULL -48 // USER Pointer to send buffer is a null pointer
#define DRV_USR_RECVBUF_PTR_NULL -49 // USER Pointer to receive buffer is a null pointer
#define DRV_DEV_NO_VIRTUAL_MEM -60 // DEVICE Virtual memory not available
#define DRV_DEV_UNMAP_VIRTUAL_MEM -61 // DEVICE Unmap virtual memory failed
#define DRV_DEV_REQUEST_IRQ_FAILED -62 // DEVICE Request irq failed
#define DRV_USR_FILE_OPEN_FAILED -100 // USER file not opend
#define DRV_USR_FILE_SIZE_ZERO -101 // USER file size zero
#define DRV_USR_FILE_NO_MEMORY -102 // USER not enough memory to load file
#define DRV_USR_FILE_READ_FAILED -103 // USER file read failed
#define DRV_USR_INVALID_FILETYPE -104 // USER file type invalid
#define DRV_USR_FILENAME_INVALID -105 // USER file name not valid
#define DRV_RCS_ERROR_OFFSET 1000 // RCS error number start
#ifdef _GNUC_
# ifndef PACKED
# define PACKED __attribute__((packed, aligned(1)))
# endif /* PACKED */
#else
# define PACKED
#endif
/* ------------------------------------------------------------------------------------ */
/* message definition */
/* ------------------------------------------------------------------------------------ */
// max. length is 288 Bytes, max message length is 255 + 8 Bytes
typedef struct tagMSG_STRUC {
unsigned char rx PACKED;
unsigned char tx PACKED;
unsigned char ln PACKED;
unsigned char nr PACKED;
unsigned char a PACKED;
unsigned char f PACKED;
unsigned char b PACKED;
unsigned char e PACKED;
unsigned char data[255] PACKED;
unsigned char dummy[25] PACKED; // for compatibility with older definitions (288 Bytes)
} MSG_STRUC;
/* ------------------------------------------------------------------------------------ */
/* INFO structure definitions */
/* ------------------------------------------------------------------------------------ */
// Board operation mode
#define POLLING_MODE 0
#define INTERRUPT_MODE 1
// DEVRESET
#define COLDSTART 2
#define WARMSTART 3
#define BOOTSTART 4
// DEVMBXINFO
#define DEVICE_MBX_EMPTY 0
#define DEVICE_MBX_FULL 1
#define HOST_MBX_EMPTY 0
#define HOST_MBX_FULL 1
// TRIGGERWATCHDOG
#define WATCHDOG_STOP 0
#define WATCHDOG_START 1
// GETINFO InfoArea definitions
#define GET_DRIVER_INFO 1
#define GET_VERSION_INFO 2
#define GET_FIRMWARE_INFO 3
#define GET_TASK_INFO 4
#define GET_RCS_INFO 5
#define GET_DEV_INFO 6
#define GET_IO_INFO 7
#define GET_IO_SEND_DATA 8
// HOST mode definition
#define HOST_NOT_READY 0
#define HOST_READY 1
// DEVREADWRITERAW
#define PARAMETER_READ 1
#define PARAMETER_WRITE 2
// STATE definition
#define STATE_ERR_NON 0
#define STATE_ERR 1
#define STATE_MODE_2 2
#define STATE_MODE_3 3
#define STATE_MODE_4 4
// DEVSPECIALCONTROL
#define SPECIAL_CONTROL_CLEAR 0
#define SPECIAL_CONTROL_SET 1
// DEVDOWNLOAD
#define FIRMWARE_DOWNLOAD 1
#define CONFIGURATION_DOWNLOAD 2
// Device exchange IO information
typedef struct tagIOINFO {
unsigned char bComBit PACKED; /* Actual state of the COM bit */
unsigned char bIOExchangeMode PACKED; /* Actual data exchange mode (0..5) */
unsigned long ulIOExchangeCnt PACKED; /* Exchange IO counter */
} IOINFO;
// Device version information
typedef struct tagVERSIONINFO { /* DEV serial number and OS versions */
unsigned long ulDate PACKED;
unsigned long ulDeviceNo PACKED;
unsigned long ulSerialNo PACKED;
unsigned long ulReserved PACKED;
unsigned char abPcOsName0[4] PACKED;
unsigned char abPcOsName1[4] PACKED;
unsigned char abPcOsName2[4] PACKED;
unsigned char abOemIdentifier[4] PACKED;
} VERSIONINFO;
// Device firmware information
typedef struct tagFIRMWAREINFO {
unsigned char abFirmwareName[16] PACKED; /* Firmware name */
unsigned char abFirmwareVersion[16] PACKED; /* Firmware version */
} FIRMWAREINFO;
// Device task state information
typedef struct tagTASKSTATE {
unsigned char abTaskState[64] PACKED; /* Task state field */
} TASKSTATE;
// Device task paramater data
typedef struct tagTASKPARAM {
unsigned char abTaskParameter[64] PACKED; /* Task parameter field */
} TASKPARAM;
// Device raw data structure
typedef struct tagRAWDATA {
unsigned char abRawData[1022] PACKED; /* Definition of the last kByte */
} RAWDATA;
// Device task information
typedef struct tagTASKINFO {
struct {
unsigned char abTaskName[8] PACKED; /* Task name */
unsigned short usTaskVersion PACKED; /* Task version */
unsigned char bTaskCondition PACKED; /* Actual task condition */
unsigned char abreserved[5] PACKED; /* n.c. */
} tTaskInfo [7];
} TASKINFO;
// Device operating system (RCS) information
typedef struct tagRCSINFO {
unsigned short usRcsVersion PACKED; /* Device operating system (RCS) version */
unsigned char bRcsError PACKED; /* Operating system errors */
unsigned char bHostWatchDog PACKED; /* Host watchdog value */
unsigned char bDevWatchDog PACKED; /* Device watchdog value */
unsigned char bSegmentCount PACKED; /* RCS segment free counter */
unsigned char bDeviceAdress PACKED; /* RCS device base address */
unsigned char bDriverType PACKED; /* RCS driver type */
} RCSINFO;
// Device description
typedef struct tagDEVINFO {
unsigned char bDpmSize PACKED; /* Device dpm size (2,8...) */
unsigned char bDevType PACKED; /* Device type (manufactor code) */
unsigned char bDevModel PACKED; /* Device model (manufactor code) */
unsigned char abDevIdentifier[3] PACKED; /* Device identification characters */
} DEVINFO;
/* ------------------------------------------------------------------------------------ */
/* driver info structure definitions */
/* ------------------------------------------------------------------------------------ */
// Board information structure
typedef struct tagBOARD_INFO{
unsigned char abDriverVersion[16] PACKED; // DRV driver information string
struct {
unsigned short usBoard PACKED; // DRV board number
unsigned short usAvailable PACKED; // DRV board is available
unsigned long ulPhysicalAddress PACKED; // DRV physical DPM address
unsigned short usIrq PACKED; // DRV irq number
} tBoard [MAX_DEV_BOARDS];
unsigned short usBoards_detected PACKED;
} BOARD_INFO;
// Internal driver state information structure
typedef struct tagDRIVERINFO{
unsigned long ulOpenCnt PACKED; // DevOpen() counter
unsigned long CloseCnt PACKED; // number of driver close
unsigned long ulReadCnt PACKED; // Number of DevGetMessage commands
unsigned long ulWriteCnt PACKED; // Number of DevPutMessage commands
unsigned long ulIRQCnt PACKED; // Number of board interrupts
unsigned char bInitMsgFlag PACKED; // Actual init sate
unsigned char bReadMsgFlag PACKED; // Actual read mailbox state
unsigned char bWriteMsgFlag PACKED; // Actual write mailbox state
unsigned char bLastFunction PACKED; // Last driver function
unsigned char bWriteState PACKED; // Actual write command state
unsigned char bReadState PACKED; // Actual read command state
unsigned char bHostFlags PACKED; // Actual host flags
unsigned char bMyDevFlags PACKED; // Actual device falgs
unsigned char bExIOFlag PACKED; // Actual IO flags
unsigned long ulExIOCnt PACKED; // DevExchangeIO() counter
} DRIVERINFO;
// Extended board information structure
typedef struct tagBOARD_INFOEX{
unsigned char abDriverVersion[16] PACKED; // DRV driver information string
struct {
unsigned short usBoard PACKED; // DRV board number
unsigned short usAvailable PACKED; // DRV board is available
unsigned long ulPhysicalAddress PACKED; // DRV physical DPM address
unsigned short usIrq PACKED; // DRV irq number
DRIVERINFO tDriverInfo PACKED; // Driver information
FIRMWAREINFO tFirmware PACKED;
DEVINFO tDeviceInfo PACKED;
RCSINFO tRcsInfo PACKED;
VERSIONINFO tVersion PACKED;
} tBoard [MAX_DEV_BOARDS];
} BOARD_INFOEX;
// Communication state field structure
typedef struct tagCOMSTATE {
unsigned short usMode PACKED; // Actual STATE mode
unsigned short usStateFlag PACKED; // State flag
unsigned char abState[64] PACKED; // State area
} COMSTATE;
// state information in bLastFunction
#define FKT_OPEN 1;
#define FKT_CLOSE 2;
#define FKT_READ 3;
#define FKT_WRITE 4;
#define FKT_IO 5;
// state information in bWriteState and bReadState
#define STATE_IN 0x01;
#define STATE_WAIT 0x02;
#define STATE_OUT 0x03;
#define STATE_IN_IRQ 0x04;
/* ------------------------------------------------------------------------------------ */
/* funcion prototypes */
/* ------------------------------------------------------------------------------------ */
extern short DevOpenDriver ( void);
extern short DevCloseDriver ( void);
extern short DevGetBoardInfo ( BOARD_INFO *pvData);
extern short DevInitBoard ( unsigned short usDevNumber);
extern short DevExitBoard ( unsigned short usDevNumber);
extern short DevPutTaskParameter ( unsigned short usDevNumber,
unsigned short usNumber,
unsigned short usSize,
void *pvData);
extern short DevReset ( unsigned short usDevNumber,
unsigned short usMode,
unsigned long ulTimeout);
extern short DevPutMessage ( unsigned short usDevNumber,
MSG_STRUC *ptMessage,
unsigned long ulTimeout);
extern short DevGetMessage ( unsigned short usDevNumber,
unsigned short usSize,
MSG_STRUC *ptMessage,
unsigned long ulTimeout);
extern short DevGetTaskState ( unsigned short usDevNumber,
unsigned short usNumber,
unsigned short usSize,
void *pvData);
extern short DevGetMBXState ( unsigned short usDevNumber,
unsigned short *pusDevMBXState,
unsigned short *pusHostMBXState);
extern short DevTriggerWatchDog ( unsigned short usDevNumber,
unsigned short usFunction,
unsigned short *usDevWatchDog);
extern short DevGetInfo ( unsigned short usDevNumber,
unsigned short usFunction,
unsigned short usSize,
void *pvData);
extern short DevGetTaskParameter ( unsigned short usDevNumber,
unsigned short usNumber,
unsigned short usSize,
void *pvData);
extern short DevExchangeIO ( unsigned short usDevNumber,
unsigned short usSendOffset,
unsigned short usSendSize,
void *pvSendData,
unsigned short usReceiveOffset,
unsigned short usReceiveSize,
void *pvReceiveData,
unsigned long ulTimeout);
extern short DevReadSendData ( unsigned short usDevNumber,
unsigned short usOffset,
unsigned short usSize,
void *pvData);
extern short DevSetHostState ( unsigned short usDevNumber,
unsigned short usMode,
unsigned long ulTimeout);
extern short DevExtendedData ( unsigned short usDevNumber,
unsigned short usMode,
unsigned short usSize,
void *pvData);
extern short DevGetMBXData ( unsigned short usDevNumber,
unsigned short usHostSize,
void *pvHostData,
unsigned short usDevSize,
void *pvDevData);
extern short DevGetBoardInfoEx ( void *pvData);
extern short DevExchangeIOEx ( unsigned short usDevNumber,
unsigned short usMode,
unsigned short usSendOffset,
unsigned short usSendSize,
void *pvSendData,
unsigned short usReceiveOffset,
unsigned short usReceiveSize,
void *pvReceiveData,
unsigned long ulTimeout);
extern short DevExchangeIOErr ( unsigned short usDevNumber,
unsigned short usSendOffset,
unsigned short usSendSize,
void *pvSendData,
unsigned short usReceiveOffset,
unsigned short usReceiveSize,
void *pvReceiveData,
COMSTATE *ptState,
unsigned long ulTimeout);
extern short DevReadWriteDPMRaw ( unsigned short usDevNumber,
unsigned short usMode,
unsigned short usOffset,
unsigned short usSize,
void *pvData);
extern short DevSpecialControl ( unsigned short usDevNumber,
unsigned short usMode,
unsigned short *pusCtrlAck);
extern short DevDownload ( unsigned short usDevNumber,
unsigned short usMode,
unsigned char *pszFileName,
unsigned long *pdwBytes);
extern short DevReadWriteDPMData ( unsigned short usDevNumber,
unsigned short usMode,
unsigned short usOffset,
unsigned short usSize,
void *pvData);
extern short DevSetOpMode ( unsigned short usBoard,
unsigned short usMode ,
unsigned short *usIrq );
//#ifdef __cplusplus
//}
//#endif
#endif // ifndef CIFUSER_H_INCLUDED