Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
P
proview
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Esteban Blanc
proview
Commits
ce758cd3
Commit
ce758cd3
authored
Jun 26, 2019
by
Marcus Nordenberg
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update profibus api
parent
9344a78b
Changes
29
Show whitespace changes
Inline
Side-by-side
Showing
29 changed files
with
3817 additions
and
4376 deletions
+3817
-4376
profibus/lib/rt/src/Papi.c
profibus/lib/rt/src/Papi.c
+344
-701
profibus/lib/rt/src/buildnr.papi.h
profibus/lib/rt/src/buildnr.papi.h
+0
-35
profibus/lib/rt/src/busparam.c
profibus/lib/rt/src/busparam.c
+48
-85
profibus/lib/rt/src/ccrl.c
profibus/lib/rt/src/ccrl.c
+174
-189
profibus/lib/rt/src/cif_api.c
profibus/lib/rt/src/cif_api.c
+682
-343
profibus/lib/rt/src/dpgdl.c
profibus/lib/rt/src/dpgdl.c
+106
-126
profibus/lib/rt/src/dpm_user.h
profibus/lib/rt/src/dpm_user.h
+240
-176
profibus/lib/rt/src/dpsgdl.c
profibus/lib/rt/src/dpsgdl.c
+49
-79
profibus/lib/rt/src/fdlgdl.c
profibus/lib/rt/src/fdlgdl.c
+35
-61
profibus/lib/rt/src/fm7gdl.c
profibus/lib/rt/src/fm7gdl.c
+62
-78
profibus/lib/rt/src/fmbgdl.c
profibus/lib/rt/src/fmbgdl.c
+40
-63
profibus/lib/rt/src/fmsgdl.c
profibus/lib/rt/src/fmsgdl.c
+188
-154
profibus/lib/rt/src/keywords.h
profibus/lib/rt/src/keywords.h
+4
-39
profibus/lib/rt/src/papiaux.c
profibus/lib/rt/src/papiaux.c
+33
-67
profibus/lib/rt/src/pb_conf.h
profibus/lib/rt/src/pb_conf.h
+21
-57
profibus/lib/rt/src/pb_dp.h
profibus/lib/rt/src/pb_dp.h
+293
-266
profibus/lib/rt/src/pb_dps.h
profibus/lib/rt/src/pb_dps.h
+65
-82
profibus/lib/rt/src/pb_err.h
profibus/lib/rt/src/pb_err.h
+174
-199
profibus/lib/rt/src/pb_fdl.h
profibus/lib/rt/src/pb_fdl.h
+98
-123
profibus/lib/rt/src/pb_fm7.h
profibus/lib/rt/src/pb_fm7.h
+226
-231
profibus/lib/rt/src/pb_fmb.h
profibus/lib/rt/src/pb_fmb.h
+115
-133
profibus/lib/rt/src/pb_fms.h
profibus/lib/rt/src/pb_fms.h
+418
-368
profibus/lib/rt/src/pb_hw.h
profibus/lib/rt/src/pb_hw.h
+0
-164
profibus/lib/rt/src/pb_if.h
profibus/lib/rt/src/pb_if.h
+133
-168
profibus/lib/rt/src/pb_ioctl.h
profibus/lib/rt/src/pb_ioctl.h
+32
-57
profibus/lib/rt/src/pb_ntdrv.h
profibus/lib/rt/src/pb_ntdrv.h
+54
-86
profibus/lib/rt/src/pb_tools.h
profibus/lib/rt/src/pb_tools.h
+12
-46
profibus/lib/rt/src/pb_type.h
profibus/lib/rt/src/pb_type.h
+10
-41
profibus/wbl/mcomp/src/profibus.wb_load
profibus/wbl/mcomp/src/profibus.wb_load
+161
-159
No files found.
profibus/lib/rt/src/Papi.c
View file @
ce758cd3
/*
/******************************************************************************
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2019 SSAB EMEA AB.
*
* This file is part of ProviewR.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 2 of
* the License, or (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with ProviewR. If not, see <http://www.gnu.org/licenses/>
*
* Linking ProviewR statically or dynamically with other modules is
* making a combined work based on ProviewR. Thus, the terms and
* conditions of the GNU General Public License cover the whole
* combination.
*
* In addition, as a special exception, the copyright holders of
* ProviewR give you permission to, from the build function in the
* ProviewR Configurator, combine ProviewR with modules generated by the
* ProviewR PLC Editor to a PLC program, regardless of the license
* terms of these modules. You may copy and distribute the resulting
* combined work under the terms of your choice, provided that every
* copy of the combined work is accompanied by a complete copy of
* the source code of ProviewR (the version used to produce the
* combined work), being distributed under the terms of the GNU
* General Public License plus this exception.
*/
/*******************************************************************************
* *
* *
*
SOFTING AG
*
*
SOFTING Industrial Automation GmbH
*
* Richard-Reitzner-Allee 6 *
* Richard-Reitzner-Allee 6 *
* D-85540 Haar *
* D-85540 Haar *
* Phone: (++49)-(0)89-45656-0 *
* Phone: (++49)-(0)89-45656-0 *
* Fax: (++49)-(0)89-45656-399 *
* Fax: (++49)-(0)89-45656-399 *
* *
* *
*
Copyright (C) SOFTING AG 1995-2003
*
*
Copyright (C) SOFTING Industrial Automation GmbH 1995-2012
*
* All Rights Reserved *
* All Rights Reserved *
* *
* *
*******************************************************************************
*******************************************************************************
...
@@ -55,11 +20,11 @@ MODULE PAPI
...
@@ -55,11 +20,11 @@ MODULE PAPI
COMPONENT_LIBRARY PAPI Lib
COMPONENT_LIBRARY PAPI Lib
PAPI DLL
PAPI DLL
AUTHOR SOFTING
AG
AUTHOR SOFTING
VERSION 5.
26.1
.00.release
VERSION 5.
46.0
.00.release
DATE
27-June-2003
DATE
October-2011
STATUS finished
STATUS finished
...
@@ -67,12 +32,12 @@ STATUS finished
...
@@ -67,12 +32,12 @@ STATUS finished
FUNCTIONAL_MODULE_DESCRIPTION
FUNCTIONAL_MODULE_DESCRIPTION
PROFIBUS
FMS/DPV1 Master and DP-Slave Application Program Interface (PAPI) for
PROFIBUS
DP Master, FMS/DPV1 Master and DP-Slave Application Program Interface
WinXP/Win2K/WinNT
(PAPI) for Linux
------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------
This modul contains the PROFIBUS
FMS/DPV1 Master and DP-Slave Application
This modul contains the PROFIBUS
DP Master, FMS/DPV1 Master and DP-Slave
Program Interface
Application
Program Interface
functions.
functions.
...
@@ -142,14 +107,35 @@ extern INT16 fmbgdl_get_data_len(INT16, USIGN8, USIGN8, USIGN8*, INT16*);
...
@@ -142,14 +107,35 @@ extern INT16 fmbgdl_get_data_len(INT16, USIGN8, USIGN8, USIGN8*, INT16*);
EXPORT_DATA
EXPORT_DATA
// --- global variables used for compatibility mode
HANDLE
hServiceReadDevice
=
0
;
// Handle for Service device
HANDLE
hServiceWriteDevice
=
(
HANDLE
)
0
;
// Handle for Service device
HANDLE
hDpDataDevice
=
(
HANDLE
)
0
;
// Handle for DP-Data device
HANDLE
hDpsInputDataDevice
=
(
HANDLE
)
0
;
// Handle for DP-Slave Input-Data device
HANDLE
hDpsOutputDataDevice
=
(
HANDLE
)
0
;
// Handle for DP-Slave Output-Data device
USIGN8
CurrentBoardNumber
=
0
;
USIGN16
last_error
=
0
;
IMPORT_DATA
IMPORT_DATA
LOCAL_DATA
LOCAL_DATA
// --- copyright
// --- copyright
#if defined(WIN32) || defined(_WIN32) || defined(WIN16) || defined(_WIN16)
#if defined(WIN32) || defined(_WIN32) || defined(WIN16) || defined(_WIN16)
static
const
char
copyright
[]
=
"PROFIBUS WinXP/Win2K/WinNT API (c) Copyright "
"1995-2005. SOFTING AG. All Rights Reserved."
;
// --- Operation Mode
// --- Operation Mode
static
USIGN32
OperationMode
;
static
USIGN32
OperationMode
;
#endif
#ifdef _LINUX
static
const
char
copyright
[]
=
"PROFIBUS Linux API (c) Copyright 1995-2005. "
"SOFTING AG. All Rights Reserved."
;
#endif
#endif
#if defined(WIN32) || defined(_WIN32) || defined(WIN16) || defined(_WIN16)
#if defined(WIN32) || defined(_WIN32) || defined(WIN16) || defined(_WIN16)
...
@@ -240,12 +226,12 @@ Possible return values:
...
@@ -240,12 +226,12 @@ Possible return values:
Channel
=
0
;
// for future use
Channel
=
0
;
// for future use
// --- open basic management device
// --- open basic management device
sprintf
(
sprintf
(
DeviceName
,
"
\\\\
.
\\
PROFIBUS
\\
Board%u
\\
Pb%u
\\
Management"
,
Board
,
DeviceName
,
"
\\\\
.
\\
PROFIBUS
\\
Board%u
\\
Pb%u
\\
Management"
,
Board
,
Channel
);
Channel
);
return
(
return
(
CreateFile
(
DeviceName
,
DesiredAccess
,
CreateFile
(
DeviceName
,
DesiredAccess
,
FILE_SHARE_READ
|
FILE_SHARE_WRITE
,
FILE_SHARE_READ
|
FILE_SHARE_WRITE
,
NULL
,
OPEN_EXISTING
,
NULL
,
OPEN_EXISTING
,
FILE_ATTRIBUTE_NORMAL
,
NULL
));
FILE_ATTRIBUTE_NORMAL
,
NULL
));
}
}
#endif
#endif
...
@@ -253,7 +239,9 @@ Possible return values:
...
@@ -253,7 +239,9 @@ Possible return values:
#if defined(WIN32) || defined(_WIN32) || defined(WIN16) || defined(_WIN16)
#if defined(WIN32) || defined(_WIN32) || defined(WIN16) || defined(_WIN16)
FUNCTION
GLOBAL
HANDLE
CALL_CONV
profi_open
(
IN
HANDLE
hBasicMgmtDevice
,
FUNCTION
GLOBAL
HANDLE
CALL_CONV
profi_open
(
IN
HANDLE
hBasicMgmtDevice
,
IN
INT32
DeviceType
,
IN
USIGN32
Index
,
IN
INT32
DesiredAccess
)
IN
INT32
DeviceType
,
IN
USIGN32
Index
,
IN
INT32
DesiredAccess
)
/*----------------------------------------------------------------------------
/*----------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
FUNCTIONAL_DESCRIPTION
...
@@ -293,7 +281,8 @@ Possible return values:
...
@@ -293,7 +281,8 @@ Possible return values:
FUNCTION_BODY
FUNCTION_BODY
// --- select IOCTL code specified by device type
// --- select IOCTL code specified by device type
switch
(
DeviceType
)
{
switch
(
DeviceType
)
{
case
DEVICE_DP_MANAGEMENT
:
case
DEVICE_DP_MANAGEMENT
:
IOControlCode
=
(
DWORD
)
IOCTL_PROFI_CREATE_DP_MANAGEMENT
;
IOControlCode
=
(
DWORD
)
IOCTL_PROFI_CREATE_DP_MANAGEMENT
;
break
;
break
;
...
@@ -333,15 +322,16 @@ Possible return values:
...
@@ -333,15 +322,16 @@ Possible return values:
// --- get device name
// --- get device name
if
(
!
DeviceIoControl
((
HANDLE
)
hBasicMgmtDevice
,
(
DWORD
)
IOControlCode
,
if
(
!
DeviceIoControl
((
HANDLE
)
hBasicMgmtDevice
,
(
DWORD
)
IOControlCode
,
(
LPVOID
)
&
Index
,
(
DWORD
)
sizeof
(
ULONG
),
(
LPVOID
)
DeviceName
,
(
DWORD
)
128
,
(
LPVOID
)
&
Index
,
(
DWORD
)
sizeof
(
ULONG
),
(
LPVOID
)
DeviceName
,
(
LPDWORD
)
&
BytesReturned
,
NULL
))
{
(
DWORD
)
128
,
(
LPDWORD
)
&
BytesReturned
,
NULL
))
{
return
(
INVALID_HANDLE_VALUE
);
return
(
INVALID_HANDLE_VALUE
);
}
}
// --- open device
// --- open device
return
(
return
(
CreateFile
(
DeviceName
,
DesiredAccess
,
CreateFile
(
DeviceName
,
DesiredAccess
,
FILE_SHARE_READ
|
FILE_SHARE_WRITE
,
FILE_SHARE_READ
|
FILE_SHARE_WRITE
,
NULL
,
OPEN_ALWAYS
,
NULL
,
OPEN_ALWAYS
,
FILE_ATTRIBUTE_NORMAL
,
NULL
));
FILE_ATTRIBUTE_NORMAL
,
NULL
));
}
}
#endif
#endif
...
@@ -376,9 +366,9 @@ Possible return values:
...
@@ -376,9 +366,9 @@ Possible return values:
#endif
#endif
FUNCTION
GLOBAL
INT16
CALL_CONV
profi_read_service
(
IN
HANDLE
hDevice
,
FUNCTION
GLOBAL
INT16
CALL_CONV
OUT
T_PROFI_SERVICE_DESCR
*
pSdb
,
OUT
VOID
*
pData
,
profi_read_service
(
IN
HANDLE
hDevice
,
OUT
T_PROFI_SERVICE_DESCR
*
pSdb
,
INOUT
USIGN16
*
pDataLength
)
OUT
VOID
*
pData
,
INOUT
USIGN16
*
pDataLength
)
/*----------------------------------------------------------------------------
/*----------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
FUNCTIONAL_DESCRIPTION
...
@@ -415,19 +405,25 @@ received
...
@@ -415,19 +405,25 @@ received
// printf("papi: profi_read_service\n");
// printf("papi: profi_read_service\n");
// --- allocate memory for SDB and DATABLOCK
// --- allocate memory for SDB and DATABLOCK
if
(
!
(
pSdbData
=
malloc
((
*
pDataLength
+
sizeof
(
T_PROFI_SERVICE_DESCR
)))))
{
if
(
!
(
pSdbData
=
malloc
((
*
pDataLength
+
sizeof
(
T_PROFI_SERVICE_DESCR
)))))
{
return
(
E_IF_OS_ERROR
);
return
(
E_IF_OS_ERROR
);
}
}
while
((
BytesRead
=
read
(
hDevice
,
pSdbData
,
while
((
BytesRead
=
(
int
)(
*
pDataLength
+
sizeof
(
T_PROFI_SERVICE_DESCR
))))
read
(
hDevice
,
pSdbData
,
<
0
)
{
(
int
)(
*
pDataLength
+
sizeof
(
T_PROFI_SERVICE_DESCR
))))
<
0
)
if
(
errno
!=
EAGAIN
)
{
{
if
(
errno
!=
EAGAIN
)
{
free
(
pSdbData
);
free
(
pSdbData
);
printf
(
"%s
\n
"
,
strerror
(
errno
));
printf
(
"%s
\n
"
,
strerror
(
errno
));
// printf("bytesRead=%u\n",BytesRead);
// printf("bytesRead=%u\n",BytesRead);
return
(
papi_get_last_error
());
return
(
papi_get_last_error
());
}
else
{
}
else
{
*
pDataLength
=
0
;
*
pDataLength
=
0
;
free
(
pSdbData
);
free
(
pSdbData
);
// printf("bytesRead=%u\n",BytesRead);
// printf("bytesRead=%u\n",BytesRead);
...
@@ -439,12 +435,15 @@ received
...
@@ -439,12 +435,15 @@ received
// printf("bytesRead=%u\n",BytesRead);
// printf("bytesRead=%u\n",BytesRead);
// --- check if IND or CON is available
// --- check if IND or CON is available
if
(
BytesRead
==
0
)
{
if
(
BytesRead
==
0
)
{
*
pDataLength
=
0
;
*
pDataLength
=
0
;
// printf ("%s 3\n", strerror (errno));
// printf ("%s 3\n", strerror (errno));
free
(
pSdbData
);
free
(
pSdbData
);
return
(
NO_CON_IND_RECEIVED
);
return
(
NO_CON_IND_RECEIVED
);
}
else
{
}
else
{
// printf("bytesRead=%u\n",BytesRead);
// printf("bytesRead=%u\n",BytesRead);
}
}
...
@@ -456,7 +455,8 @@ received
...
@@ -456,7 +455,8 @@ received
*
pDataLength
=
(
USIGN16
)
BytesRead
-
sizeof
(
T_PROFI_SERVICE_DESCR
);
*
pDataLength
=
(
USIGN16
)
BytesRead
-
sizeof
(
T_PROFI_SERVICE_DESCR
);
// --- copy DATABLOCK
// --- copy DATABLOCK
if
(
*
pDataLength
)
{
if
(
*
pDataLength
)
{
memcpy
(
pData
,
&
pSdbData
[
sizeof
(
T_PROFI_SERVICE_DESCR
)],
*
pDataLength
);
memcpy
(
pData
,
&
pSdbData
[
sizeof
(
T_PROFI_SERVICE_DESCR
)],
*
pDataLength
);
}
}
...
@@ -519,7 +519,8 @@ RES
...
@@ -519,7 +519,8 @@ RES
pSdb
->
comm_ref
&=
0x00FF
;
// clear all BITs in upper byte
pSdb
->
comm_ref
&=
0x00FF
;
// clear all BITs in upper byte
// --- check Service-Primitive
// --- check Service-Primitive
if
((
pSdb
->
primitive
==
IND
)
||
(
pSdb
->
primitive
==
CON
))
{
if
((
pSdb
->
primitive
==
IND
)
||
(
pSdb
->
primitive
==
CON
))
{
return
(
E_IF_INVALID_PRIMITIVE
);
return
(
E_IF_INVALID_PRIMITIVE
);
}
}
...
@@ -528,35 +529,36 @@ RES
...
@@ -528,35 +529,36 @@ RES
pSdb
->
result
=
POS
;
pSdb
->
result
=
POS
;
// --- get service specific data length
// --- get service specific data length
switch
(
pSdb
->
layer
)
{
switch
(
pSdb
->
layer
)
{
case
FMS
:
case
FMS
:
RetVal
=
fmsgdl_get_data_len
(
RetVal
=
fmsgdl_get_data_len
(
pSdb
->
result
,
pSdb
->
service
,
pSdb
->
primitive
,
pSdb
->
result
,
pSdb
->
service
,
pSdb
->
primitive
,
pData
,
&
DataLength
);
pData
,
&
DataLength
);
break
;
break
;
case
FM7
:
case
FM7
:
RetVal
=
fm7gdl_get_data_len
(
RetVal
=
fm7gdl_get_data_len
(
pSdb
->
result
,
pSdb
->
service
,
pSdb
->
primitive
,
pSdb
->
result
,
pSdb
->
service
,
pSdb
->
primitive
,
pData
,
&
DataLength
);
pData
,
&
DataLength
);
break
;
break
;
case
FDLIF
:
case
FDLIF
:
RetVal
=
fdlgdl_get_data_len
(
RetVal
=
fdlgdl_get_data_len
(
pSdb
->
result
,
pSdb
->
service
,
pSdb
->
primitive
,
pSdb
->
result
,
pSdb
->
service
,
pSdb
->
primitive
,
pData
,
&
DataLength
);
pData
,
&
DataLength
);
break
;
break
;
case
DP
:
case
DP
:
RetVal
=
dpgdl_get_data_len
(
RetVal
=
dpgdl_get_data_len
(
pSdb
->
result
,
pSdb
->
service
,
pSdb
->
primitive
,
pSdb
->
result
,
pSdb
->
service
,
pSdb
->
primitive
,
pData
,
&
DataLength
);
pData
,
&
DataLength
);
break
;
break
;
case
FMB
:
case
FMB
:
RetVal
=
fmbgdl_get_data_len
(
RetVal
=
fmbgdl_get_data_len
(
pSdb
->
result
,
pSdb
->
service
,
pSdb
->
primitive
,
pSdb
->
result
,
pSdb
->
service
,
pSdb
->
primitive
,
pData
,
&
DataLength
);
pData
,
&
DataLength
);
break
;
break
;
case
DPS
:
case
DPS
:
RetVal
=
dpsgdl_get_data_len
(
RetVal
=
dpsgdl_get_data_len
(
pSdb
->
result
,
pSdb
->
service
,
pSdb
->
primitive
,
pSdb
->
result
,
pSdb
->
service
,
pSdb
->
primitive
,
pData
,
&
DataLength
);
pData
,
&
DataLength
);
break
;
break
;
default:
default:
...
@@ -564,10 +566,12 @@ RES
...
@@ -564,10 +566,12 @@ RES
break
;
break
;
}
}
if
(
RetVal
==
E_OK
)
{
if
(
RetVal
==
E_OK
)
{
// allocate memory for SDB and DATABLOCK
// allocate memory for SDB and DATABLOCK
if
(
!
(
pSdbData
if
(
!
(
pSdbData
=
=
(
USIGN8
*
)
malloc
((
DataLength
+
sizeof
(
T_PROFI_SERVICE_DESCR
)))))
{
(
USIGN8
*
)
malloc
((
DataLength
+
sizeof
(
T_PROFI_SERVICE_DESCR
)))))
{
return
(
E_IF_OS_ERROR
);
return
(
E_IF_OS_ERROR
);
}
}
...
@@ -583,8 +587,8 @@ RES
...
@@ -583,8 +587,8 @@ RES
#endif
#endif
#ifdef _LINUX
#ifdef _LINUX
if
((
write
(
hDevice
,
pSdbData
,
DataLength
+
sizeof
(
T_PROFI_SERVICE_DESCR
)))
if
((
write
(
hDevice
,
pSdbData
,
<
0
)
DataLength
+
sizeof
(
T_PROFI_SERVICE_DESCR
)))
<
0
)
#endif
#endif
{
{
free
(
pSdbData
);
free
(
pSdbData
);
...
@@ -639,7 +643,8 @@ received
...
@@ -639,7 +643,8 @@ received
FUNCTION_BODY
FUNCTION_BODY
// --- allocate memory for SDB and DATABLOCK
// --- allocate memory for SDB and DATABLOCK
if
(
!
(
pSdbData
=
malloc
((
*
pDataLength
+
sizeof
(
T_PROFI_SERVICE_DESCR
)))))
{
if
(
!
(
pSdbData
=
malloc
((
*
pDataLength
+
sizeof
(
T_PROFI_SERVICE_DESCR
)))))
{
return
(
E_IF_OS_ERROR
);
return
(
E_IF_OS_ERROR
);
}
}
...
@@ -648,13 +653,15 @@ received
...
@@ -648,13 +653,15 @@ received
(
LPVOID
)
phDevices
,
(
DWORD
)
NrOfHandles
*
sizeof
(
HANDLE
),
(
LPVOID
)
phDevices
,
(
DWORD
)
NrOfHandles
*
sizeof
(
HANDLE
),
(
LPVOID
)
pSdbData
,
(
LPVOID
)
pSdbData
,
(
DWORD
)(
*
pDataLength
+
sizeof
(
T_PROFI_SERVICE_DESCR
)),
(
DWORD
)(
*
pDataLength
+
sizeof
(
T_PROFI_SERVICE_DESCR
)),
(
LPDWORD
)
&
BytesRead
,
NULL
))
{
(
LPDWORD
)
&
BytesRead
,
NULL
))
{
free
(
pSdbData
);
free
(
pSdbData
);
return
(
papi_get_last_error
());
return
(
papi_get_last_error
());
}
}
// --- check if IND or CON is available
// --- check if IND or CON is available
if
(
BytesRead
==
0
)
{
if
(
BytesRead
==
0
)
{
*
pDataLength
=
0
;
*
pDataLength
=
0
;
free
(
pSdbData
);
free
(
pSdbData
);
return
(
NO_CON_IND_RECEIVED
);
return
(
NO_CON_IND_RECEIVED
);
...
@@ -668,7 +675,8 @@ received
...
@@ -668,7 +675,8 @@ received
*
pDataLength
=
(
USIGN16
)
BytesRead
-
sizeof
(
T_PROFI_SERVICE_DESCR
);
*
pDataLength
=
(
USIGN16
)
BytesRead
-
sizeof
(
T_PROFI_SERVICE_DESCR
);
// --- copy DATABLOCK
// --- copy DATABLOCK
if
(
*
pDataLength
)
{
if
(
*
pDataLength
)
{
memcpy
(
pData
,
&
pSdbData
[
sizeof
(
T_PROFI_SERVICE_DESCR
)],
*
pDataLength
);
memcpy
(
pData
,
&
pSdbData
[
sizeof
(
T_PROFI_SERVICE_DESCR
)],
*
pDataLength
);
}
}
...
@@ -680,94 +688,10 @@ received
...
@@ -680,94 +688,10 @@ received
#endif
#endif
#if defined(WIN32) || defined(_WIN32) || defined(WIN16) || defined(_WIN16)
FUNCTION
GLOBAL
INT16
CALL_CONV
profi_read_data
(
IN
HANDLE
hDevice
,
OUT
VOID
*
pData
,
INOUT
USIGN16
*
pDataLength
)
/*----------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
This function is used to read DP-Slave-I/O-Data from a DP SLAVE DATA DEVICE.
IN: hDevice -> device handle
OUT: pData -> pointer to data buffer
INOUT: pDataLength -> IN: length of data buffer
OUT: length of received data
Possible return values:
- E_OK -> no error occured
- E_IF_INVALID_DP_STATE -> DP is not in operational state
- E_IF_SLAVE_ERROR -> no valid communication with DP-Slave
- E_IF_SLAVE_DIAG_DATA -> new DP diagnostics data available
- E_IF_INVALID_CMI_CALL -> invalid offset inside data image
- E_IF_CMI_ERROR -> serious CMI error
- E_IF_INVALID_DATA_SIZE -> size of data block provided not sufficient
- E_IF_SERVICE_CONSTR_CONFLICT -> service not executable at time
- E_IF_OS_ERROR -> NT system error
-----------------------------------------------------------------------------*/
{
LOCAL_VARIABLES
DWORD
BytesRead
=
0
;
FUNCTION_BODY
if
(
!
ReadFile
(
hDevice
,
pData
,
*
pDataLength
,
&
BytesRead
,
NULL
))
{
*
pDataLength
=
0
;
return
(
papi_get_last_error
());
}
else
{
*
pDataLength
=
(
USIGN16
)
BytesRead
;
return
(
E_OK
);
}
}
#endif
#if defined(WIN32) || defined(_WIN32) || defined(WIN16) || defined(_WIN16)
FUNCTION
GLOBAL
INT16
CALL_CONV
profi_write_data
(
IN
HANDLE
hDevice
,
IN
VOID
*
pData
,
IN
USIGN16
DataLength
)
/*----------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
This function is used to write DP-Slave-I/O-Data to a DP SLAVE DATA DEVICE.
IN: hDevice -> device handle
IN: pData -> pointer to data buffer
IN: DataLength -> length of data to write
Possible return values:
- E_OK -> no error occured
- E_IF_INVALID_DP_STATE -> DP is not in operational state
- E_IF_SLAVE_ERROR -> no valid communication with DP-Slave
- E_IF_SLAVE_DIAG_DATA -> new DP diagnostics data available
- E_IF_INVALID_CMI_CALL -> invalid offset inside data image
- E_IF_CMI_ERROR -> serious CMI error
- E_IF_INVALID_DATA_SIZE -> size of data block provided not sufficient
- E_IF_SERVICE_CONSTR_CONFLICT -> service not executable at time
- E_IF_OS_ERROR -> NT system error
-----------------------------------------------------------------------------*/
{
LOCAL_VARIABLES
DWORD
BytesWritten
=
0
;
FUNCTION_BODY
// write data
if
(
!
WriteFile
(
hDevice
,
pData
,
DataLength
,
&
BytesWritten
,
NULL
))
{
return
(
papi_get_last_error
());
}
else
{
return
(
E_OK
);
}
}
#endif
FUNCTION
GLOBAL
INT16
CALL_CONV
profi_read_dps_data
(
IN
HANDLE
hDevice
,
FUNCTION
GLOBAL
INT16
CALL_CONV
profi_read_dps_data
(
IN
HANDLE
hDevice
,
OUT
USIGN8
*
pData
,
INOUT
USIGN8
*
pDataLength
,
OUT
USIGN8
*
pState
)
OUT
USIGN8
*
pData
,
INOUT
USIGN8
*
pDataLength
,
OUT
USIGN8
*
pState
)
/*----------------------------------------------------------------------------
/*----------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
FUNCTIONAL_DESCRIPTION
...
@@ -821,14 +745,18 @@ Possible return values:
...
@@ -821,14 +745,18 @@ Possible return values:
*
pDataLength
=
(
USIGN8
)(
BytesRead
-
1
);
*
pDataLength
=
(
USIGN8
)(
BytesRead
-
1
);
memcpy
(
pData
,
DataBuffer
,
*
pDataLength
);
memcpy
(
pData
,
DataBuffer
,
*
pDataLength
);
return
(
E_OK
);
return
(
E_OK
);
}
else
{
}
else
{
*
pDataLength
=
0
;
*
pDataLength
=
0
;
return
(
papi_get_last_error
());
return
(
papi_get_last_error
());
}
}
}
}
FUNCTION
GLOBAL
INT16
CALL_CONV
profi_write_dps_data
(
IN
HANDLE
hDevice
,
FUNCTION
GLOBAL
INT16
CALL_CONV
profi_write_dps_data
(
IN
HANDLE
hDevice
,
IN
USIGN8
*
pData
,
IN
USIGN8
DataLength
,
OUT
USIGN8
*
pState
)
IN
USIGN8
*
pData
,
IN
USIGN8
DataLength
,
OUT
USIGN8
*
pState
)
/*-----------------------------------------------------------------------------
/*-----------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
FUNCTIONAL_DESCRIPTION
...
@@ -857,6 +785,7 @@ data size
...
@@ -857,6 +785,7 @@ data size
#ifdef _LINUX
#ifdef _LINUX
NTIoctl
SlaveInput
;
NTIoctl
SlaveInput
;
char
FirstByte
;
#endif
#endif
FUNCTION_BODY
FUNCTION_BODY
...
@@ -875,271 +804,31 @@ data size
...
@@ -875,271 +804,31 @@ data size
SlaveInput
.
OutBuf
=
(
USIGN8
*
)
pData
;
SlaveInput
.
OutBuf
=
(
USIGN8
*
)
pData
;
SlaveInput
.
OutBufLength
=
DataLength
;
SlaveInput
.
OutBufLength
=
DataLength
;
if
(
DataLength
)
{
FirstByte
=
pData
[
0
];
}
// printf("\nprofi_get_data: buf=%p, len=%u, size=%lu\n",
// SlaveInput.InBuf,
// SlaveInput.InBufLength,
// sizeof(SlaveInput));
if
(
ioctl
(
hDevice
,
IOCTL_PROFI_SET_SLAVE_IN
,
&
SlaveInput
)
==
-
1
)
if
(
ioctl
(
hDevice
,
IOCTL_PROFI_SET_SLAVE_IN
,
&
SlaveInput
)
==
-
1
)
#endif
#endif
{
{
return
(
papi_get_last_error
());
return
(
papi_get_last_error
());
}
else
{
return
(
E_OK
);
}
}
}
else
{
#if defined(WIN32) || defined(_WIN32) || defined(WIN16) || defined(_WIN16)
if
(
DataLength
)
{
FUNCTION
GLOBAL
BOOL
CALL_CONV
profi_get_cntrl_info
(
IN
USIGN8
Board
,
pData
[
0
]
=
FirstByte
;
OUT
char
*
pFirmwareVersion
,
OUT
USIGN32
*
pSerialDeviceNumber
)
/*----------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
This function is used to get the version of the firmware and the serial
device number of PROFIBUS controller.
IN: Board -> board number
OUT: pFirmwareVersion -> data buffer for firmware version string
OUT: pSerialDeviceNumber -> serial device number
NOTE: There must be at least 100 Bytes (VERSION_STRING_LENGTH) free space for
firmware version buffer.
Possible return values:
- TRUE -> function returns sucessfully
- FALSE -> function returns not successfully
-----------------------------------------------------------------------------*/
{
LOCAL_VARIABLES
DWORD
BytesRead
=
0
;
HANDLE
hDevice
;
PROFI_DATA_IMAGE_DESCR
DataImageDescr
;
char
DeviceName
[
64
];
FUNCTION_BODY
// --- open BOARD device
sprintf
(
DeviceName
,
"
\\\\
.
\\
PROFIBUS
\\
Board%u
\\
Board"
,
Board
);
if
(
INVALID_HANDLE_VALUE
==
(
hDevice
=
CreateFile
(
DeviceName
,
GENERIC_READ
,
FILE_SHARE_READ
|
FILE_SHARE_WRITE
,
NULL
,
OPEN_EXISTING
,
FILE_ATTRIBUTE_NORMAL
,
NULL
)))
{
return
(
FALSE
);
}
// --- get FIRMWARE VERSION
DataImageDescr
.
imageId
=
ID_FW_VERS_IMAGE
;
DataImageDescr
.
offset
=
0
;
DataImageDescr
.
bus
=
0
;
if
(
!
DeviceIoControl
((
HANDLE
)
hDevice
,
(
DWORD
)
IOCTL_PROFI_GET_DATA_IMAGE
,
(
LPVOID
)
&
DataImageDescr
,
(
DWORD
)
sizeof
(
DataImageDescr
),
(
LPVOID
)
pFirmwareVersion
,
(
DWORD
)
VERSION_STRING_LENGTH
,
(
LPDWORD
)
&
BytesRead
,
NULL
))
{
CloseHandle
(
hDevice
);
return
(
FALSE
);
}
// --- get SERIAL DEVICE NUMBER
DataImageDescr
.
imageId
=
ID_SERIAL_DEVICE_NUMBER
;
DataImageDescr
.
offset
=
0
;
DataImageDescr
.
bus
=
0
;
if
(
!
DeviceIoControl
((
HANDLE
)
hDevice
,
(
DWORD
)
IOCTL_PROFI_GET_DATA_IMAGE
,
(
LPVOID
)(
VOID
*
)
&
DataImageDescr
,
(
DWORD
)
sizeof
(
DataImageDescr
),
(
LPVOID
)
pSerialDeviceNumber
,
(
DWORD
)
sizeof
(
USIGN32
),
(
LPDWORD
)
&
BytesRead
,
NULL
))
{
CloseHandle
(
hDevice
);
return
(
FALSE
);
}
CloseHandle
(
hDevice
);
return
(
TRUE
);
}
#endif
#if defined(WIN32) || defined(_WIN32) || defined(WIN16) || defined(_WIN16)
FUNCTION
GLOBAL
BOOL
CALL_CONV
profi_set_timeout
(
IN
HANDLE
hBasicMgmtDevice
,
IN
USIGN32
ReadTimeout
,
IN
USIGN32
WriteTimeout
)
/*----------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
This function is used to set send and receive TIMEOUTs for SEND/RECEIVE
interface
functions
IN: hBasicMgmtDevice -> basic management device handle
IN: ReadTimeout -> receive timeout in ms (WAIT_FOREVER for infinite wait)
IN: WriteTimeout -> send timeout in ms (WAIT_FOREVER for infinite wait)
Possible return values:
- TRUE -> function returns sucessfully
- FALSE -> function returns not successfully
-----------------------------------------------------------------------------*/
{
LOCAL_VARIABLES
DWORD
BytesReturned
;
USIGN32
ReadWriteTimeout
[
2
];
FUNCTION_BODY
ReadWriteTimeout
[
0
]
=
ReadTimeout
;
ReadWriteTimeout
[
1
]
=
WriteTimeout
;
return
(
DeviceIoControl
((
HANDLE
)
hBasicMgmtDevice
,
(
DWORD
)
IOCTL_PROFI_SET_TIMEOUT
,
(
LPVOID
)
ReadWriteTimeout
,
(
DWORD
)
2
*
sizeof
(
USIGN32
),
(
LPVOID
)
NULL
,
(
DWORD
)
0
,
(
LPDWORD
)
&
BytesReturned
,
NULL
));
}
#endif
#if defined(WIN32) || defined(_WIN32) || defined(WIN16) || defined(_WIN16)
FUNCTION
GLOBAL
BOOL
CALL_CONV
profi_get_timeout
(
IN
HANDLE
hBasicMgmtDevice
,
OUT
USIGN32
*
pReadTimeout
,
OUT
USIGN32
*
pWriteTimeout
)
/*----------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
This function is used to get the set send and receive TIMEOUTs for SEND/RECEIVE
interface functions
IN: hBasicMgmtDevice -> basic management device handle
OUT: pReadTimeout -> pointer to receive timeout in ms (WAIT_FOREVER for
infinite wait)
OUT: pWriteTimeout -> pointer to send timeout in ms (WAIT_FOREVER for
infinite wait)
Possible return values:
- TRUE -> function returns sucessfully
- FALSE -> function returns not successfully
-----------------------------------------------------------------------------*/
{
LOCAL_VARIABLES
DWORD
BytesReturned
;
USIGN32
ReadWriteTimeout
[
2
];
FUNCTION_BODY
if
(
!
DeviceIoControl
((
HANDLE
)
hBasicMgmtDevice
,
(
DWORD
)
IOCTL_PROFI_GET_TIMEOUT
,
(
LPVOID
)
NULL
,
(
DWORD
)
0
,
(
LPVOID
)
ReadWriteTimeout
,
(
DWORD
)
2
*
sizeof
(
USIGN32
),
(
LPDWORD
)
&
BytesReturned
,
NULL
))
{
return
(
FALSE
);
}
}
if
(
BytesReturned
==
8
)
{
return
(
E_OK
);
*
pReadTimeout
=
ReadWriteTimeout
[
0
];
*
pWriteTimeout
=
ReadWriteTimeout
[
1
];
return
(
TRUE
);
}
else
{
SetLastError
(
ERROR_INVALID_DATA
);
return
(
FALSE
);
}
}
}
}
#endif
#if defined(WIN32) || defined(_WIN32) || defined(WIN16) || defined(_WIN16)
FUNCTION
GLOBAL
BOOL
CALL_CONV
profi_set_queue_size
(
IN
HANDLE
hBasicMgmtDevice
,
IN
USIGN32
QueueSize
)
/*----------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
This function is used to set the max. receive queue size for the PROFIBUS
driver.
IN: hBasicMgmtDevice -> basic management device handle
IN: QueueSize -> max. receive queue size
Possible return values:
- TRUE -> function returns sucessfully
- FALSE -> function returns not successfully
-----------------------------------------------------------------------------*/
{
LOCAL_VARIABLES
DWORD
BytesReturned
;
FUNCTION_BODY
return
(
DeviceIoControl
((
HANDLE
)
hBasicMgmtDevice
,
(
DWORD
)
IOCTL_PROFI_SET_QUEUE_SIZE
,
(
LPVOID
)
&
QueueSize
,
(
DWORD
)
sizeof
(
USIGN32
),
(
LPVOID
)
NULL
,
(
DWORD
)
0
,
(
LPDWORD
)
&
BytesReturned
,
NULL
));
}
#endif
#if defined(WIN32) || defined(_WIN32) || defined(WIN16) || defined(_WIN16)
FUNCTION
GLOBAL
BOOL
CALL_CONV
profi_get_queue_size
(
IN
HANDLE
hBasicMgmtDevice
,
OUT
USIGN32
*
pQueueSize
)
/*----------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
This function is used to get the set max. receive queue size for the PROFIBUS
driver.
IN: hBasicMgmtDevice -> basic management device handle
OUT: pQueueSize -> pointer to max. receive queue size
Possible return values:
- TRUE -> function returns sucessfully
- FALSE -> function returns not successfully
-----------------------------------------------------------------------------*/
{
LOCAL_VARIABLES
DWORD
BytesReturned
;
FUNCTION_BODY
return
(
DeviceIoControl
((
HANDLE
)
hBasicMgmtDevice
,
(
DWORD
)
IOCTL_PROFI_GET_QUEUE_SIZE
,
(
LPVOID
)
NULL
,
(
DWORD
)
0
,
(
LPVOID
)
pQueueSize
,
(
DWORD
)
sizeof
(
USIGN32
),
(
LPDWORD
)
&
BytesReturned
,
NULL
));
}
#endif
#if defined(WIN32) || defined(_WIN32) || defined(WIN16) || defined(_WIN16)
FUNCTION
GLOBAL
BOOL
CALL_CONV
profi_get_overrun_count
(
IN
HANDLE
hBasicMgmtDevice
,
OUT
USIGN32
*
pOverrunCount
)
/*----------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
IN: hBasicMgmtDevice -> basic management device handle
OUT: pOverrunCount -> pointer to overrun counts
Possible return values:
- TRUE -> function returns sucessfully
- FALSE -> function returns not successfully
-----------------------------------------------------------------------------*/
{
LOCAL_VARIABLES
DWORD
BytesReturned
;
FUNCTION_BODY
return
(
DeviceIoControl
((
HANDLE
)
hBasicMgmtDevice
,
(
DWORD
)
IOCTL_PROFI_GET_OVERRUN_COUNT
,
(
LPVOID
)
NULL
,
(
DWORD
)
0
,
(
LPVOID
)
pOverrunCount
,
(
DWORD
)
sizeof
(
USIGN32
),
(
LPDWORD
)
&
BytesReturned
,
NULL
));
}
#endif
// ***************************************************************************
// ***************************************************************************
// ***************************************************************************
// ***************************************************************************
// *
// *
...
@@ -1149,9 +838,10 @@ Possible return values:
...
@@ -1149,9 +838,10 @@ Possible return values:
// ***************************************************************************
// ***************************************************************************
// ***************************************************************************
// ***************************************************************************
FUNCTION
GLOBAL
INT16
CALL_CONV
profi_set_default
(
FUNCTION
GLOBAL
INT16
CALL_CONV
profi_set_default
(
IN
USIGN8
Board
,
OUT
T_PROFI_DEVICE_HANDLE
*
hDevice
,
IN
USIGN8
Board
,
IN
USIGN8
Channel
,
IN
USIGN8
Channel
,
IN
USIGN32
ReadTimeout
,
IN
USIGN32
WriteTimeout
)
IN
USIGN32
ReadTimeout
,
IN
USIGN32
WriteTimeout
)
/*----------------------------------------------------------------------------
/*----------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
FUNCTIONAL_DESCRIPTION
...
@@ -1182,31 +872,35 @@ version
...
@@ -1182,31 +872,35 @@ version
USIGN32
ReadWriteTimeout
[
2
];
USIGN32
ReadWriteTimeout
[
2
];
#if defined(WIN32) || defined(_WIN32) || defined(WIN16) || defined(_WIN16)
#if defined(WIN32) || defined(_WIN32) || defined(WIN16) || defined(_WIN16)
DWORD
BytesReturned
;
DWORD
BytesReturned
;
#endif
#endif
FUNCTION_BODY
FUNCTION_BODY
if
(
h
Device
->
hServiceReadDevice
||
hDevice
->
hServiceWriteDevice
if
(
h
ServiceReadDevice
||
hServiceWriteDevice
||
hDpDataDevice
)
||
hDevice
->
hDpDataDevice
)
{
{
return
E_IF_SERVICE_NOT_EXECUTABLE
;
// Application has called init_profibus
return
E_IF_SERVICE_NOT_EXECUTABLE
;
// Application has called init_profibus
// before
// before
}
}
#if defined(WIN32) || defined(_WIN32) || defined(WIN16) || defined(_WIN16)
#if defined(WIN32) || defined(_WIN32) || defined(WIN16) || defined(_WIN16)
if
(
!
ReadBoardRegistryEntries
(
Board
,
&
OperationMode
))
{
if
(
!
ReadBoardRegistryEntries
(
Board
,
&
OperationMode
))
{
return
(
E_IF_READING_REGISTRY
);
return
(
E_IF_READING_REGISTRY
);
}
}
// get service device name
// get service device name
sprintf
(
sprintf
(
DeviceName
,
"
\\\\
.
\\
PROFIBUS
\\
Board%u
\\
Pb%u
\\
Service"
,
Board
,
DeviceName
,
"
\\\\
.
\\
PROFIBUS
\\
Board%u
\\
Pb%u
\\
Service"
,
Board
,
Channel
);
Channel
);
// Open service device for read access
// Open service device for read access
hServiceReadDevice
=
CreateFile
(
DeviceName
,
GENERIC_READ
|
GENERIC_WRITE
,
0
,
hServiceReadDevice
=
NULL
,
OPEN_EXISTING
,
FILE_ATTRIBUTE_NORMAL
,
NULL
);
CreateFile
(
DeviceName
,
GENERIC_READ
|
GENERIC_WRITE
,
0
,
NULL
,
OPEN_EXISTING
,
FILE_ATTRIBUTE_NORMAL
,
NULL
);
if
(
hServiceReadDevice
==
INVALID_HANDLE_VALUE
)
{
if
(
hServiceReadDevice
==
INVALID_HANDLE_VALUE
)
{
hServiceReadDevice
=
NULL
;
hServiceReadDevice
=
NULL
;
return
(
E_IF_OS_ERROR
);
return
(
E_IF_OS_ERROR
);
}
}
...
@@ -1215,22 +909,26 @@ version
...
@@ -1215,22 +909,26 @@ version
hServiceWriteDevice
=
CreateFile
(
DeviceName
,
GENERIC_WRITE
,
0
,
NULL
,
hServiceWriteDevice
=
CreateFile
(
DeviceName
,
GENERIC_WRITE
,
0
,
NULL
,
OPEN_EXISTING
,
FILE_ATTRIBUTE_NORMAL
,
NULL
);
OPEN_EXISTING
,
FILE_ATTRIBUTE_NORMAL
,
NULL
);
if
(
hServiceWriteDevice
==
INVALID_HANDLE_VALUE
)
{
if
(
hServiceWriteDevice
==
INVALID_HANDLE_VALUE
)
{
CloseHandle
(
hServiceReadDevice
);
CloseHandle
(
hServiceReadDevice
);
hServiceReadDevice
=
NULL
;
hServiceReadDevice
=
NULL
;
hServiceWriteDevice
=
NULL
;
hServiceWriteDevice
=
NULL
;
return
(
E_IF_OS_ERROR
);
return
(
E_IF_OS_ERROR
);
}
}
if
(
OperationMode
==
FMS_DPV1_MASTER_MODE
)
{
if
(
OperationMode
==
FMS_DPV1_MASTER_MODE
)
{
// --- get DP-Master's Data device name
// --- get DP-Master's Data device name
sprintf
(
sprintf
(
DeviceName
,
"
\\\\
.
\\
PROFIBUS
\\
Board%u
\\
Pb%u
\\
DpData"
,
Board
,
DeviceName
,
"
\\\\
.
\\
PROFIBUS
\\
Board%u
\\
Pb%u
\\
DpData"
,
Board
,
Channel
);
Channel
);
hDpDataDevice
=
CreateFile
(
DeviceName
,
GENERIC_READ
|
GENERIC_WRITE
,
0
,
hDpDataDevice
=
NULL
,
OPEN_EXISTING
,
FILE_ATTRIBUTE_NORMAL
,
NULL
);
CreateFile
(
DeviceName
,
GENERIC_READ
|
GENERIC_WRITE
,
0
,
NULL
,
OPEN_EXISTING
,
FILE_ATTRIBUTE_NORMAL
,
NULL
);
if
(
hDpDataDevice
==
INVALID_HANDLE_VALUE
)
{
if
(
hDpDataDevice
==
INVALID_HANDLE_VALUE
)
{
CloseHandle
(
hServiceReadDevice
);
CloseHandle
(
hServiceReadDevice
);
CloseHandle
(
hServiceWriteDevice
);
CloseHandle
(
hServiceWriteDevice
);
hServiceReadDevice
=
NULL
;
hServiceReadDevice
=
NULL
;
...
@@ -1238,15 +936,19 @@ version
...
@@ -1238,15 +936,19 @@ version
hDpDataDevice
=
NULL
;
hDpDataDevice
=
NULL
;
return
(
E_IF_OS_ERROR
);
return
(
E_IF_OS_ERROR
);
}
}
}
else
{
}
else
{
// get DP-Slave Input-Data device name
// get DP-Slave Input-Data device name
sprintf
(
DeviceName
,
"
\\\\
.
\\
PROFIBUS
\\
Board%u
\\
Pb%u
\\
DpSlaveInputData"
,
sprintf
(
DeviceName
,
"
\\\\
.
\\
PROFIBUS
\\
Board%u
\\
Pb%u
\\
DpSlaveInputData"
,
Board
,
Channel
);
Board
,
Channel
);
hDpsInputDataDevice
=
CreateFile
(
DeviceName
,
GENERIC_READ
|
GENERIC_WRITE
,
hDpsInputDataDevice
=
0
,
NULL
,
OPEN_EXISTING
,
FILE_ATTRIBUTE_NORMAL
,
NULL
);
CreateFile
(
DeviceName
,
GENERIC_READ
|
GENERIC_WRITE
,
0
,
NULL
,
OPEN_EXISTING
,
FILE_ATTRIBUTE_NORMAL
,
NULL
);
if
(
hDpsInputDataDevice
==
INVALID_HANDLE_VALUE
)
{
if
(
hDpsInputDataDevice
==
INVALID_HANDLE_VALUE
)
{
CloseHandle
(
hServiceReadDevice
);
CloseHandle
(
hServiceReadDevice
);
CloseHandle
(
hServiceWriteDevice
);
CloseHandle
(
hServiceWriteDevice
);
hServiceReadDevice
=
NULL
;
hServiceReadDevice
=
NULL
;
...
@@ -1259,10 +961,12 @@ version
...
@@ -1259,10 +961,12 @@ version
sprintf
(
DeviceName
,
"
\\\\
.
\\
PROFIBUS
\\
Board%u
\\
Pb%u
\\
DpSlaveOutputData"
,
sprintf
(
DeviceName
,
"
\\\\
.
\\
PROFIBUS
\\
Board%u
\\
Pb%u
\\
DpSlaveOutputData"
,
Board
,
Channel
);
Board
,
Channel
);
hDpsOutputDataDevice
=
CreateFile
(
DeviceName
,
GENERIC_READ
|
GENERIC_WRITE
,
hDpsOutputDataDevice
=
0
,
NULL
,
OPEN_EXISTING
,
FILE_ATTRIBUTE_NORMAL
,
NULL
);
CreateFile
(
DeviceName
,
GENERIC_READ
|
GENERIC_WRITE
,
0
,
NULL
,
OPEN_EXISTING
,
FILE_ATTRIBUTE_NORMAL
,
NULL
);
if
(
hDpsOutputDataDevice
==
INVALID_HANDLE_VALUE
)
{
if
(
hDpsOutputDataDevice
==
INVALID_HANDLE_VALUE
)
{
CloseHandle
(
hServiceReadDevice
);
CloseHandle
(
hServiceReadDevice
);
CloseHandle
(
hServiceWriteDevice
);
CloseHandle
(
hServiceWriteDevice
);
CloseHandle
(
hDpsInputDataDevice
);
CloseHandle
(
hDpsInputDataDevice
);
...
@@ -1280,7 +984,8 @@ version
...
@@ -1280,7 +984,8 @@ version
if
(
!
DeviceIoControl
((
HANDLE
)
hServiceReadDevice
,
if
(
!
DeviceIoControl
((
HANDLE
)
hServiceReadDevice
,
(
DWORD
)
IOCTL_PROFI_SET_TIMEOUT
,
(
LPVOID
)
ReadWriteTimeout
,
(
DWORD
)
IOCTL_PROFI_SET_TIMEOUT
,
(
LPVOID
)
ReadWriteTimeout
,
(
DWORD
)
2
*
sizeof
(
USIGN32
),
(
LPVOID
)
NULL
,
(
DWORD
)
0
,
(
DWORD
)
2
*
sizeof
(
USIGN32
),
(
LPVOID
)
NULL
,
(
DWORD
)
0
,
(
LPDWORD
)
&
BytesReturned
,
NULL
))
{
(
LPDWORD
)
&
BytesReturned
,
NULL
))
{
CloseHandle
(
hServiceReadDevice
);
CloseHandle
(
hServiceReadDevice
);
CloseHandle
(
hServiceWriteDevice
);
CloseHandle
(
hServiceWriteDevice
);
if
(
hDpDataDevice
)
if
(
hDpDataDevice
)
...
@@ -1310,56 +1015,59 @@ version
...
@@ -1310,56 +1015,59 @@ version
sprintf
(
DeviceName
,
"/dev/pbservice%u"
,
Board
+
Channel
);
sprintf
(
DeviceName
,
"/dev/pbservice%u"
,
Board
+
Channel
);
// Open service device for read access
// Open service device for read access
h
Device
->
h
ServiceReadDevice
=
open
(
DeviceName
,
O_RDWR
|
O_NONBLOCK
);
hServiceReadDevice
=
open
(
DeviceName
,
O_RDWR
|
O_NONBLOCK
);
if
(
hDevice
->
hServiceReadDevice
==
INVALID_HANDLE_VALUE
)
{
if
(
hServiceReadDevice
==
INVALID_HANDLE_VALUE
)
hDevice
->
hServiceReadDevice
=
(
HANDLE
)
NULL
;
{
hServiceReadDevice
=
(
HANDLE
)
0
;
return
(
E_IF_OS_ERROR
);
return
(
E_IF_OS_ERROR
);
}
}
// Open service device for write access
// Open service device for write access
h
Device
->
hServiceWriteDevice
=
hDevice
->
hServiceReadDevice
;
h
ServiceWriteDevice
=
hServiceReadDevice
;
// --- get DP-Master's Data device name
// --- get DP-Master's Data device name
sprintf
(
DeviceName
,
"/dev/pbdata%u"
,
Board
+
Channel
);
sprintf
(
DeviceName
,
"/dev/pbdata%u"
,
Board
+
Channel
);
hD
evice
->
hD
pDataDevice
=
open
(
DeviceName
,
O_RDWR
|
O_NONBLOCK
);
hDpDataDevice
=
open
(
DeviceName
,
O_RDWR
|
O_NONBLOCK
);
// get DP-Slave Input-Data device name
// get DP-Slave Input-Data device name
sprintf
(
DeviceName
,
"/dev/pbslin%u"
,
Board
+
Channel
);
sprintf
(
DeviceName
,
"/dev/pbslin%u"
,
Board
+
Channel
);
hD
evice
->
hD
psInputDataDevice
=
open
(
DeviceName
,
O_RDWR
|
O_NONBLOCK
);
hDpsInputDataDevice
=
open
(
DeviceName
,
O_RDWR
|
O_NONBLOCK
);
// get DP-Slave Output-Data device name
// get DP-Slave Output-Data device name
sprintf
(
DeviceName
,
"/dev/pbslout%u"
,
Board
+
Channel
);
sprintf
(
DeviceName
,
"/dev/pbslout%u"
,
Board
+
Channel
);
hDevice
->
hDpsOutputDataDevice
=
open
(
DeviceName
,
O_RDWR
|
O_NONBLOCK
);
hDpsOutputDataDevice
=
open
(
DeviceName
,
O_RDWR
|
O_NONBLOCK
);
if
((
hDevice
->
hDpDataDevice
==
INVALID_HANDLE_VALUE
)
if
((
hDpDataDevice
==
INVALID_HANDLE_VALUE
)
&&
&&
(
hDevice
->
hDpsInputDataDevice
==
INVALID_HANDLE_VALUE
)
(
hDpsInputDataDevice
==
INVALID_HANDLE_VALUE
)
&&
&&
(
hDevice
->
hDpsOutputDataDevice
==
INVALID_HANDLE_VALUE
))
{
(
hDpsOutputDataDevice
==
INVALID_HANDLE_VALUE
))
close
(
hDevice
->
hServiceReadDevice
);
{
close
(
hDevice
->
hServiceWriteDevice
);
close
(
hServiceReadDevice
);
close
(
hDevice
->
hDpDataDevice
);
close
(
hServiceWriteDevice
);
close
(
hDevice
->
hDpsInputDataDevice
);
close
(
hDpDataDevice
);
close
(
hDevice
->
hDpsOutputDataDevice
);
close
(
hDpsInputDataDevice
);
hDevice
->
hServiceReadDevice
=
(
HANDLE
)
NULL
;
close
(
hDpsOutputDataDevice
);
hDevice
->
hServiceWriteDevice
=
(
HANDLE
)
NULL
;
hServiceReadDevice
=
(
HANDLE
)
0
;
hDevice
->
hDpDataDevice
=
(
HANDLE
)
NULL
;
hServiceWriteDevice
=
(
HANDLE
)
0
;
hDevice
->
hDpsInputDataDevice
=
(
HANDLE
)
NULL
;
hDpDataDevice
=
(
HANDLE
)
0
;
hDevice
->
hDpsOutputDataDevice
=
(
HANDLE
)
NULL
;
hDpsInputDataDevice
=
(
HANDLE
)
0
;
hDpsOutputDataDevice
=
(
HANDLE
)
0
;
return
(
E_IF_OS_ERROR
);
return
(
E_IF_OS_ERROR
);
}
}
hDevice
->
CurrentBoardNumber
=
Board
+
Channel
;
CurrentBoardNumber
=
Board
+
Channel
;
#endif
#endif
return
(
E_OK
);
return
(
E_OK
);
}
}
FUNCTION
GLOBAL
INT16
CALL_CONV
profi_init
(
OUT
T_PROFI_DEVICE_HANDLE
*
hDevice
,
FUNCTION
GLOBAL
INT16
CALL_CONV
profi_init
(
IN
USIGN8
Board
,
IN
USIGN8
Board
,
IN
USIGN32
ReadTimeout
,
IN
USIGN32
WriteTimeout
)
IN
USIGN32
ReadTimeout
,
IN
USIGN32
WriteTimeout
)
/*----------------------------------------------------------------------------
/*----------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
FUNCTIONAL_DESCRIPTION
...
@@ -1388,19 +1096,21 @@ version
...
@@ -1388,19 +1096,21 @@ version
FUNCTION_BODY
FUNCTION_BODY
if
((
hDevice
->
hServiceReadDevice
&&
hDevice
->
hServiceWriteDevice
)
if
((
hServiceReadDevice
&&
hServiceWriteDevice
)
&&
&&
(
hDevice
->
hDpDataDevice
(
hDpDataDevice
||
(
hDpsInputDataDevice
&&
hDpsOutputDataDevice
)))
||
(
hDevice
->
hDpsInputDataDevice
{
&&
hDevice
->
hDpsOutputDataDevice
)))
{
return
(
E_OK
);
// PAPI is already initialized
return
(
E_OK
);
// PAPI is already initialized
}
else
{
}
return
(
profi_set_default
(
else
hDevice
,
Board
,
0
,
ReadTimeout
,
WriteTimeout
));
// initalize PAPI
{
return
(
profi_set_default
(
Board
,
0
,
ReadTimeout
,
WriteTimeout
));
// initalize PAPI
}
}
}
}
FUNCTION
GLOBAL
INT16
CALL_CONV
init_profibus
(
FUNCTION
GLOBAL
INT16
CALL_CONV
init_profibus
(
IN
USIGN32
DprAdress
,
IN
USIGN32
DprAdress
,
IN
USIGN16
IoPortAdress
,
IN
PB_BOOL
Dummy
)
IN
USIGN16
IoPortAdress
,
IN
PB_BOOL
Dummy
)
/*----------------------------------------------------------------------------
/*----------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
FUNCTIONAL_DESCRIPTION
...
@@ -1427,21 +1137,20 @@ version
...
@@ -1427,21 +1137,20 @@ version
{
{
LOCAL_VARIABLES
LOCAL_VARIABLES
T_PROFI_DEVICE_HANDLE
hDevice
;
FUNCTION_BODY
FUNCTION_BODY
if
((
hDevice
.
hServiceReadDevice
&&
hDevice
.
hServiceWriteDevice
)
if
((
hServiceReadDevice
&&
hServiceWriteDevice
)
&&
&&
(
hDevice
.
hDpDataDevice
(
hDpDataDevice
||
(
hDpsInputDataDevice
&&
hDpsOutputDataDevice
)))
||
(
hDevice
.
hDpsInputDataDevice
{
&&
hDevice
.
hDpsOutputDataDevice
)))
{
return
(
E_OK
);
// PAPI is already initialized
return
(
E_OK
);
// PAPI is already initialized
}
else
{
}
return
(
profi_set_default
(
&
hDevice
,
0
,
0
,
0
,
0
));
// initalize PAPI
else
{
return
(
profi_set_default
(
0
,
0
,
0
,
0
));
// initalize PAPI
}
}
}
}
FUNCTION
GLOBAL
INT16
CALL_CONV
profi_end
(
IN
T_PROFI_DEVICE_HANDLE
*
hDevice
)
FUNCTION
GLOBAL
INT16
CALL_CONV
profi_end
(
VOID
)
/*----------------------------------------------------------------------------
/*----------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
FUNCTIONAL_DESCRIPTION
...
@@ -1459,75 +1168,79 @@ Possible return values:
...
@@ -1459,75 +1168,79 @@ Possible return values:
FUNCTION_BODY
FUNCTION_BODY
// close service device
// close service device
if
(
hDevice
->
hServiceReadDevice
)
{
if
(
hServiceReadDevice
)
{
#if defined(WIN32) || defined(_WIN32) || defined(WIN16) || defined(_WIN16)
#if defined(WIN32) || defined(_WIN32) || defined(WIN16) || defined(_WIN16)
CloseHandle
(
hServiceReadDevice
);
CloseHandle
(
hServiceReadDevice
);
#endif
#endif
#ifdef _LINUX
#ifdef _LINUX
close
(
h
Device
->
h
ServiceReadDevice
);
close
(
hServiceReadDevice
);
#endif
#endif
h
Device
->
hServiceReadDevice
=
(
HANDLE
)
NULL
;
h
ServiceReadDevice
=
(
HANDLE
)
0
;
}
}
if
(
hDevice
->
hServiceWriteDevice
)
{
if
(
hServiceWriteDevice
)
{
#if defined(WIN32) || defined(_WIN32) || defined(WIN16) || defined(_WIN16)
#if defined(WIN32) || defined(_WIN32) || defined(WIN16) || defined(_WIN16)
CloseHandle
(
hServiceWriteDevice
);
CloseHandle
(
hServiceWriteDevice
);
#endif
#endif
#ifdef _LINUX
#ifdef _LINUX
close
(
h
Device
->
h
ServiceWriteDevice
);
close
(
hServiceWriteDevice
);
#endif
#endif
h
Device
->
hServiceWriteDevice
=
(
HANDLE
)
NULL
;
h
ServiceWriteDevice
=
(
HANDLE
)
0
;
}
}
// close DP-Data device
// close DP-Data device
if
(
hDevice
->
hDpDataDevice
)
{
if
(
hDpDataDevice
)
{
#if defined(WIN32) || defined(_WIN32) || defined(WIN16) || defined(_WIN16)
#if defined(WIN32) || defined(_WIN32) || defined(WIN16) || defined(_WIN16)
CloseHandle
(
hDpDataDevice
);
CloseHandle
(
hDpDataDevice
);
#endif
#endif
#ifdef _LINUX
#ifdef _LINUX
close
(
hD
evice
->
hD
pDataDevice
);
close
(
hDpDataDevice
);
#endif
#endif
hD
evice
->
hDpDataDevice
=
(
HANDLE
)
NULL
;
hD
pDataDevice
=
(
HANDLE
)
0
;
}
}
// close DP-Slave Input-Data device
// close DP-Slave Input-Data device
if
(
hDevice
->
hDpsInputDataDevice
)
{
if
(
hDpsInputDataDevice
)
{
#if defined(WIN32) || defined(_WIN32) || defined(WIN16) || defined(_WIN16)
#if defined(WIN32) || defined(_WIN32) || defined(WIN16) || defined(_WIN16)
CloseHandle
(
hDpsInputDataDevice
);
CloseHandle
(
hDpsInputDataDevice
);
#endif
#endif
#ifdef _LINUX
#ifdef _LINUX
close
(
hD
evice
->
hD
psInputDataDevice
);
close
(
hDpsInputDataDevice
);
#endif
#endif
hD
evice
->
hDpsInputDataDevice
=
(
HANDLE
)
NULL
;
hD
psInputDataDevice
=
(
HANDLE
)
0
;
}
}
// close DP-Slave Output-Data device
// close DP-Slave Output-Data device
if
(
hDevice
->
hDpsOutputDataDevice
)
{
if
(
hDpsOutputDataDevice
)
{
#if defined(WIN32) || defined(_WIN32) || defined(WIN16) || defined(_WIN16)
#if defined(WIN32) || defined(_WIN32) || defined(WIN16) || defined(_WIN16)
CloseHandle
(
hDpsOutputDataDevice
);
CloseHandle
(
hDpsOutputDataDevice
);
#endif
#endif
#ifdef _LINUX
#ifdef _LINUX
close
(
hD
evice
->
hD
psOutputDataDevice
);
close
(
hDpsOutputDataDevice
);
#endif
#endif
hD
evice
->
hDpsOutputDataDevice
=
(
HANDLE
)
NULL
;
hD
psOutputDataDevice
=
(
HANDLE
)
0
;
}
}
return
(
E_OK
);
return
(
E_OK
);
}
}
FUNCTION
GLOBAL
INT16
CALL_CONV
profi_snd_req_res
(
FUNCTION
GLOBAL
INT16
CALL_CONV
profi_snd_req_res
(
IN
T_PROFI_DEVICE_HANDLE
*
hDevice
,
IN
T_PROFI_SERVICE_DESCR
*
pSdb
,
IN
T_PROFI_SERVICE_DESCR
*
pSdb
,
IN
VOID
*
pData
,
IN
PB_BOOL
dummy
)
IN
VOID
*
pData
,
IN
PB_BOOL
dummy
)
/*----------------------------------------------------------------------------
/*----------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
FUNCTIONAL_DESCRIPTION
...
@@ -1566,15 +1279,15 @@ RES
...
@@ -1566,15 +1279,15 @@ RES
FUNCTION_BODY
FUNCTION_BODY
// --- check if service device is open
// --- check if service device is open
if
(
!
h
Device
||
!
hDevice
->
h
ServiceWriteDevice
)
if
(
!
hServiceWriteDevice
)
return
(
E_IF_PAPI_NOT_INITIALIZED
);
return
(
E_IF_PAPI_NOT_INITIALIZED
);
return
(
profi_write_service
(
h
Device
->
h
ServiceWriteDevice
,
pSdb
,
pData
));
return
(
profi_write_service
(
hServiceWriteDevice
,
pSdb
,
pData
));
}
}
FUNCTION
GLOBAL
INT16
CALL_CONV
profi_rcv_con_ind
(
FUNCTION
GLOBAL
INT16
CALL_CONV
IN
T_PROFI_DEVICE_HANDLE
*
hDevice
,
OUT
T_PROFI_SERVICE_DESCR
*
pSdb
,
profi_rcv_con_ind
(
OUT
T_PROFI_SERVICE_DESCR
*
pSdb
,
OUT
VOID
*
pData
,
OUT
VOID
*
pData
,
INOUT
USIGN16
*
pDataLength
)
INOUT
USIGN16
*
pDataLength
)
/*----------------------------------------------------------------------------
/*----------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
FUNCTIONAL_DESCRIPTION
...
@@ -1602,16 +1315,16 @@ Possible return values:
...
@@ -1602,16 +1315,16 @@ Possible return values:
FUNCTION_BODY
FUNCTION_BODY
// --- check if service device is open
// --- check if service device is open
if
(
!
h
Device
||
!
hDevice
->
h
ServiceReadDevice
)
if
(
!
hServiceReadDevice
)
return
(
E_IF_PAPI_NOT_INITIALIZED
);
return
(
E_IF_PAPI_NOT_INITIALIZED
);
return
(
profi_read_service
(
return
(
profi_read_service
(
hServiceReadDevice
,
pSdb
,
pData
,
pDataLength
));
hDevice
->
hServiceReadDevice
,
pSdb
,
pData
,
pDataLength
));
}
}
FUNCTION
GLOBAL
INT16
CALL_CONV
profi_set_data
(
FUNCTION
GLOBAL
INT16
CALL_CONV
profi_set_data
(
IN
USIGN8
DataId
,
IN
T_PROFI_DEVICE_HANDLE
*
hDevice
,
IN
USIGN8
DataId
,
IN
USIGN16
Offset
,
IN
USIGN16
Offset
,
IN
USIGN16
DataLength
,
IN
VOID
*
pData
)
IN
USIGN16
DataLength
,
IN
VOID
*
pData
)
/*-----------------------------------------------------------------------------
/*-----------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
FUNCTIONAL_DESCRIPTION
...
@@ -1647,7 +1360,7 @@ possible return values:
...
@@ -1647,7 +1360,7 @@ possible return values:
FUNCTION_BODY
FUNCTION_BODY
// --- check if DP-Data device is open
// --- check if DP-Data device is open
if
(
!
hD
evice
->
hD
pDataDevice
)
if
(
!
hDpDataDevice
)
return
(
E_IF_PAPI_NOT_INITIALIZED
);
return
(
E_IF_PAPI_NOT_INITIALIZED
);
#if defined(WIN32) || defined(_WIN32) || defined(WIN16) || defined(_WIN16)
#if defined(WIN32) || defined(_WIN32) || defined(WIN16) || defined(_WIN16)
...
@@ -1656,18 +1369,22 @@ possible return values:
...
@@ -1656,18 +1369,22 @@ possible return values:
overlapped
.
Offset
=
Offset
;
overlapped
.
Offset
=
Offset
;
// write data
// write data
if
(
!
WriteFile
(
if
(
!
WriteFile
(
hDpDataDevice
,
pData
,
DataLength
,
&
BytesWritten
,
&
overlapped
))
hDpDataDevice
,
pData
,
DataLength
,
&
BytesWritten
,
&
overlapped
))
{
{
return
(
papi_get_last_error
());
return
(
papi_get_last_error
());
}
}
#endif
#endif
#ifdef _LINUX
#ifdef _LINUX
if
(
lseek
(
hDevice
->
hDpDataDevice
,
Offset
,
SEEK_SET
)
<
0
)
{
if
(
lseek
(
hDpDataDevice
,
Offset
,
SEEK_SET
)
<
0
)
{
printf
(
"lseek error
\n
"
);
return
(
papi_get_last_error
());
return
(
papi_get_last_error
());
}
}
if
(
write
(
hDevice
->
hDpDataDevice
,
pData
,
DataLength
)
<
0
)
{
if
(
write
(
hDpDataDevice
,
pData
,
DataLength
)
<
0
)
{
printf
(
"write error
\n
"
);
return
(
papi_get_last_error
());
return
(
papi_get_last_error
());
}
}
#endif
#endif
...
@@ -1675,9 +1392,10 @@ possible return values:
...
@@ -1675,9 +1392,10 @@ possible return values:
return
(
E_OK
);
return
(
E_OK
);
}
}
FUNCTION
GLOBAL
INT16
CALL_CONV
profi_get_data
(
FUNCTION
GLOBAL
INT16
CALL_CONV
profi_get_data
(
IN
USIGN8
DataId
,
IN
T_PROFI_DEVICE_HANDLE
*
hDevice
,
IN
USIGN8
DataId
,
IN
USIGN16
Offset
,
IN
USIGN16
Offset
,
INOUT
USIGN16
*
pDataLength
,
OUT
VOID
*
pData
)
INOUT
USIGN16
*
pDataLength
,
OUT
VOID
*
pData
)
/*-----------------------------------------------------------------------------
/*-----------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
FUNCTIONAL_DESCRIPTION
...
@@ -1709,66 +1427,31 @@ possible return values:
...
@@ -1709,66 +1427,31 @@ possible return values:
FUNCTION_BODY
FUNCTION_BODY
INT16
RetVal
=
E_OK
;
INT16
RetVal
=
E_OK
;
HANDLE
hBoard
=
(
HANDLE
)
NULL
;
HANDLE
hBoard
=
(
HANDLE
)
0
;
char
DeviceName
[
64
];
char
DeviceName
[
64
];
#if defined(WIN32) || defined(_WIN32) || defined(WIN16) || defined(_WIN16)
DWORD
BytesRead
=
0
;
T_PROFI_DATA_IMAGE_DESCR
DataImageDescr
;
OVERLAPPED
Overlapped
;
#endif
#ifdef _LINUX
#ifdef _LINUX
ssize_t
BytesRead
=
0
;
ssize_t
BytesRead
=
0
;
DataImage
DataImageDescr
;
DataImage
DataImageDescr
;
#endif
#endif
switch
(
DataId
)
{
switch
(
DataId
)
#if defined(WIN32) || defined(_WIN32) || defined(WIN16) || defined(_WIN16)
{
case
ID_SERIAL_DEVICE_NUMBER
:
case
ID_FW_VERS_IMAGE
:
case
ID_EXCEPTION_IMAGE
:
// --- open BOARD-Device
sprintfprofi_get_data
(
DeviceName
,
"
\\\\
.
\\
PROFIBUS
\\
Board%u
\\
Board"
,
CurrentBoardNumber
);
if
(
INVALID_HANDLE_VALUE
==
(
hBoard
=
CreateFile
(
DeviceName
,
0
,
0
,
NULL
,
OPEN_ALWAYS
,
profi_get_data
FILE_ATTRIBUTE_NORMAL
,
NULL
)))
{
BytesRead
return
(
E_IF_OS_ERROR
);
}
// --- set input IOCTL data structure
DataImageDescr
.
imageId
=
DataId
;
DataImageDescr
.
offset
=
Offset
;
DataImageDescr
.
bus
=
0
;
// --- read DATA-Image
if
(
DeviceIoprofi_get_dataControl
((
HANDLE
)
hBoard
,
(
DWORD
)
IOCTL_PROFI_GET_DATA_IMAGE
,
(
LPVOID
)
&
DataImageDescr
,
BytesRead
(
DWORD
)
sizeof
(
DataImageDescr
),
(
LPVOID
)
pData
,
(
DWORD
)
*
pDataLength
,
(
LPDWORD
)
&
BytesRead
,
NULL
))
{
profi_get_data
*
pDataLength
=
(
USIGN16
)
BytesRead
;
RetVal
=
E_OK
;
}
else
{
*
pDataLength
=
0
;
RetVal
=
papi_get_last_error
();
}
CloseHandle
(
hBoard
);
#endif // BytesRead
#ifdef _LINUX
#ifdef _LINUX
case
ID_SERIAL_DEVICE_NUMBER
:
case
ID_SERIAL_DEVICE_NUMBER
:
case
ID_FW_VERS_IMAGE
:
case
ID_FW_VERS_IMAGE
:
sprintf
(
DeviceName
,
"/dev/pbboard%u"
,
hDevice
->
CurrentBoardNumber
);
sprintf
(
DeviceName
,
"/dev/pbboard%u"
,
CurrentBoardNumber
);
if
((
hBoard
=
open
(
DeviceName
,
O_RDONLY
))
<
0
)
{
if
((
hBoard
=
open
(
DeviceName
,
O_RDONLY
))
<
0
)
{
return
(
papi_get_last_error
());
return
(
papi_get_last_error
());
}
}
if
(
DataId
==
ID_SERIAL_DEVICE_NUMBER
)
{
if
(
DataId
==
ID_SERIAL_DEVICE_NUMBER
)
if
(
lseek
(
hBoard
,
Offset
,
SEEK_SET
)
<
0
)
{
{
if
(
lseek
(
hBoard
,
Offset
,
SEEK_SET
)
<
0
)
{
return
(
papi_get_last_error
());
return
(
papi_get_last_error
());
}
}
...
@@ -1776,21 +1459,34 @@ possible return values:
...
@@ -1776,21 +1459,34 @@ possible return values:
DataImageDescr
.
Buf
=
pData
;
DataImageDescr
.
Buf
=
pData
;
DataImageDescr
.
Length
=
*
pDataLength
;
DataImageDescr
.
Length
=
*
pDataLength
;
if
(
ioctl
(
hBoard
,
IOCTL_PROFI_SERIAL_NUMBER
,
&
DataImageDescr
)
==
-
1
)
{
// printf("\nprofi_get_data: buf=%p, len=%u, size=%lu\n",
// DataImageDescr.Buf,
// DataImageDescr.Length,
// sizeof(DataImageDescr));
if
(
ioctl
(
hBoard
,
IOCTL_PROFI_SERIAL_NUMBER
,
&
DataImageDescr
)
==
-
1
)
{
*
pDataLength
=
0
;
*
pDataLength
=
0
;
RetVal
=
papi_get_last_error
();
RetVal
=
papi_get_last_error
();
}
else
{
}
else
{
*
pDataLength
=
(
USIGN16
)
4
;
*
pDataLength
=
(
USIGN16
)
4
;
*
(
USIGN32
*
)
pData
=
*
(
USIGN32
*
)
&
DataImageDescr
;
*
(
USIGN32
*
)
pData
=
*
(
USIGN32
*
)
&
DataImageDescr
;
RetVal
=
E_OK
;
RetVal
=
E_OK
;
// printf("papi: Serialnumber = %lu len = %hu\n",*(USIGN32*)pData,
// printf("papi: Serialnumber = %lu len = %hu\n",*(USIGN32*)pData,
// BytesRead);
// BytesRead);
}
}
}
else
{
}
if
((
BytesRead
=
read
(
hBoard
,
pData
,
*
pDataLength
))
<
0
)
{
else
{
if
((
BytesRead
=
read
(
hBoard
,
pData
,
*
pDataLength
))
<
0
)
{
*
pDataLength
=
0
;
*
pDataLength
=
0
;
RetVal
=
papi_get_last_error
();
RetVal
=
papi_get_last_error
();
}
else
{
}
else
{
*
pDataLength
=
(
USIGN16
)
BytesRead
;
*
pDataLength
=
(
USIGN16
)
BytesRead
;
RetVal
=
E_OK
;
RetVal
=
E_OK
;
}
}
...
@@ -1803,24 +1499,13 @@ possible return values:
...
@@ -1803,24 +1499,13 @@ possible return values:
case
ID_DP_SLAVE_IO_IMAGE
:
case
ID_DP_SLAVE_IO_IMAGE
:
// --- check if DP-Data device is open
// --- check if DP-Data device is open
if
(
!
hD
evice
->
hD
pDataDevice
)
if
(
!
hDpDataDevice
)
return
(
E_IF_PAPI_NOT_INITIALIZED
);
return
(
E_IF_PAPI_NOT_INITIALIZED
);
#if defined(WIN32) || defined(_WIN32) || defined(WIN16) || defined(_WIN16)
// --- init overlapped structure
memset
(
&
Overlapped
,
0
,
sizeof
(
OVERLAPPED
));
Overlapped
.
OfhBoardfset
=
Offset
;
if
(
!
ReadFile
(
hDpDataDevice
,
pData
,
*
pDataLength
,
&
BytesRead
,
&
Overlapped
))
{
return
(
papi_get_last_error
());
}
#endif
#ifdef _LINUX
#ifdef _LINUX
if
(
lseek
(
hDevice
->
hDpDataDevice
,
Offset
,
SEEK_SET
)
<
0
)
{
if
(
lseek
(
hDpDataDevice
,
Offset
,
SEEK_SET
)
<
0
)
{
return
(
papi_get_last_error
());
return
(
papi_get_last_error
());
}
}
...
@@ -1834,13 +1519,21 @@ possible return values:
...
@@ -1834,13 +1519,21 @@ possible return values:
&DataImageDescr,
&DataImageDescr,
CurrentBoardNumber);
CurrentBoardNumber);
*/
*/
// printf("\nprofi_get_data: buf=%p, IOCTL_PROFI_GET_DATA_IMAGE
if
(
ioctl
(
// len=%u, size=%lu\n",
hDevice
->
hDpDataDevice
,
IOCTL_PROFI_GET_DATA_IMAGE
,
&
DataImageDescr
)
// DataImageDescr.Buf,
==
-
1
)
{
// DataImageDescr.Length,
// sizeof(DataImageDescr));
if
(
ioctl
((
int
)
hDpDataDevice
,
(
int
)
IOCTL_PROFI_GET_DATA_IMAGE
,
&
DataImageDescr
)
==
-
1
)
{
BytesRead
=
0
;
BytesRead
=
0
;
RetVal
=
papi_get_last_error
();
RetVal
=
papi_get_last_error
();
}
else
{
}
else
{
BytesRead
=
(
USIGN16
)
DataImageDescr
.
Length
;
BytesRead
=
(
USIGN16
)
DataImageDescr
.
Length
;
// printf("papi data length = %u\n", BytesRead);
// printf("papi data length = %u\n", BytesRead);
RetVal
=
E_OK
;
RetVal
=
E_OK
;
...
@@ -1856,8 +1549,8 @@ possible return values:
...
@@ -1856,8 +1549,8 @@ possible return values:
}
}
}
}
FUNCTION
GLOBAL
INT16
CALL_CONV
profi_set_dps_input_data
(
FUNCTION
GLOBAL
INT16
CALL_CONV
profi_set_dps_input_data
(
IN
USIGN8
*
pData
,
IN
T_PROFI_DEVICE_HANDLE
*
hDevice
,
IN
USIGN8
*
pData
,
IN
USIGN8
DataLength
,
IN
USIGN8
DataLength
,
OUT
USIGN8
*
pState
)
OUT
USIGN8
*
pState
)
/*-----------------------------------------------------------------------------
/*-----------------------------------------------------------------------------
...
@@ -1883,17 +1576,16 @@ data size
...
@@ -1883,17 +1576,16 @@ data size
FUNCTION_BODY
FUNCTION_BODY
if
(
hDevice
->
hDpsInputDataDevice
==
(
HANDLE
)
NULL
)
{
if
(
hDpsInputDataDevice
==
(
HANDLE
)
0
)
{
return
(
E_IF_PAPI_NOT_INITIALIZED
);
return
(
E_IF_PAPI_NOT_INITIALIZED
);
}
}
return
(
profi_write_dps_data
(
return
(
profi_write_dps_data
(
hDpsInputDataDevice
,
pData
,
DataLength
,
pState
));
hDevice
->
hDpsInputDataDevice
,
pData
,
DataLength
,
pState
));
}
}
FUNCTION
GLOBAL
INT16
CALL_CONV
profi_get_dps_input_data
(
FUNCTION
GLOBAL
INT16
CALL_CONV
profi_get_dps_input_data
(
IN
T_PROFI_DEVICE_HANDLE
*
hDevice
,
OUT
USIGN8
*
pData
,
OUT
USIGN8
*
pData
,
INOUT
USIGN8
*
pDataLength
,
OUT
USIGN8
*
pState
)
INOUT
USIGN8
*
pDataLength
,
OUT
USIGN8
*
pState
)
/*-----------------------------------------------------------------------------
/*-----------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
FUNCTIONAL_DESCRIPTION
...
@@ -1915,17 +1607,16 @@ possible return values:
...
@@ -1915,17 +1607,16 @@ possible return values:
FUNCTION_BODY
FUNCTION_BODY
if
(
hDevice
->
hDpsInputDataDevice
==
(
HANDLE
)
NULL
)
{
if
(
hDpsInputDataDevice
==
(
HANDLE
)
0
)
{
return
(
E_IF_PAPI_NOT_INITIALIZED
);
return
(
E_IF_PAPI_NOT_INITIALIZED
);
}
}
return
(
profi_read_dps_data
(
return
(
profi_read_dps_data
(
hDpsInputDataDevice
,
pData
,
pDataLength
,
pState
));
hDevice
->
hDpsInputDataDevice
,
pData
,
pDataLength
,
pState
));
}
}
FUNCTION
GLOBAL
INT16
CALL_CONV
profi_get_dps_output_data
(
FUNCTION
GLOBAL
INT16
CALL_CONV
profi_get_dps_output_data
(
IN
T_PROFI_DEVICE_HANDLE
*
hDevice
,
OUT
USIGN8
*
pData
,
OUT
USIGN8
*
pData
,
INOUT
USIGN8
*
pDataLength
,
OUT
USIGN8
*
pState
)
INOUT
USIGN8
*
pDataLength
,
OUT
USIGN8
*
pState
)
/*-----------------------------------------------------------------------------
/*-----------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
FUNCTIONAL_DESCRIPTION
...
@@ -1949,17 +1640,17 @@ possible return values:
...
@@ -1949,17 +1640,17 @@ possible return values:
FUNCTION_BODY
FUNCTION_BODY
if
(
hDevice
->
hDpsOutputDataDevice
==
(
HANDLE
)
NULL
)
{
if
(
hDpsOutputDataDevice
==
(
HANDLE
)
0
)
{
return
(
E_IF_PAPI_NOT_INITIALIZED
);
return
(
E_IF_PAPI_NOT_INITIALIZED
);
}
}
return
(
profi_read_dps_data
(
return
(
hDevice
->
hDpsOutputDataDevice
,
pData
,
pDataLength
,
pState
));
profi_read_dps_data
(
hDpsOutputDataDevice
,
pData
,
pDataLength
,
pState
));
}
}
FUNCTION
GLOBAL
INT16
CALL_CONV
profi_get_versions
(
FUNCTION
GLOBAL
INT16
CALL_CONV
IN
T_PROFI_DEVICE_HANDLE
*
hDevice
,
OUT
CSTRING
*
pPapiVersion
,
profi_get_versions
(
OUT
CSTRING
*
pPapiVersion
,
OUT
CSTRING
*
pFirmwareVersion
)
OUT
CSTRING
*
pFirmwareVersion
)
/*----------------------------------------------------------------------------
/*----------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
FUNCTIONAL_DESCRIPTION
...
@@ -1997,14 +1688,15 @@ Possible return values:
...
@@ -1997,14 +1688,15 @@ Possible return values:
// --- get PROFIBUS firmware version
// --- get PROFIBUS firmware version
DataLength
=
(
USIGN16
)
VERSION_STRING_LENGTH
;
DataLength
=
(
USIGN16
)
VERSION_STRING_LENGTH
;
if
(
profi_get_data
(
if
(
profi_get_data
(
ID_FW_VERS_IMAGE
,
0
,
&
DataLength
,
pFirmwareVersion
)
!=
hDevice
,
ID_FW_VERS_IMAGE
,
0
,
&
DataLength
,
pFirmwareVersion
)
E_OK
)
!=
E_OK
)
{
{
strcpy
(
pFirmwareVersion
,
(
CSTRING
*
)
"controller not initialized"
);
strcpy
(
pFirmwareVersion
,
(
CSTRING
*
)
"controller not initialized"
);
}
}
// --- convert \n to ' '
// --- convert \n to ' '
for
(
i
=
0
;
i
<
VERSION_STRING_LENGTH
;
i
++
)
{
for
(
i
=
0
;
i
<
VERSION_STRING_LENGTH
;
i
++
)
{
if
(
pFirmwareVersion
[
i
]
==
'\n'
)
if
(
pFirmwareVersion
[
i
]
==
'\n'
)
pFirmwareVersion
[
i
]
=
' '
;
pFirmwareVersion
[
i
]
=
' '
;
else
if
(
pFirmwareVersion
[
i
]
==
'\0'
)
else
if
(
pFirmwareVersion
[
i
]
==
'\0'
)
...
@@ -2016,8 +1708,8 @@ Possible return values:
...
@@ -2016,8 +1708,8 @@ Possible return values:
return
(
E_OK
);
return
(
E_OK
);
}
}
FUNCTION
GLOBAL
INT16
CALL_CONV
profi_get_serial_device_number
(
FUNCTION
GLOBAL
INT16
CALL_CONV
IN
T_PROFI_DEVICE_HANDLE
*
hDevice
,
OUT
USIGN32
*
pSerialDeviceNumber
)
profi_get_serial_device_number
(
OUT
USIGN32
*
pSerialDeviceNumber
)
/*----------------------------------------------------------------------------
/*----------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
FUNCTIONAL_DESCRIPTION
...
@@ -2041,8 +1733,8 @@ Possible return values:
...
@@ -2041,8 +1733,8 @@ Possible return values:
DataLength
=
(
USIGN16
)
sizeof
(
USIGN32
);
DataLength
=
(
USIGN16
)
sizeof
(
USIGN32
);
// --- get serial device number
// --- get serial device number
return
(
profi_get_data
(
return
(
profi_get_data
(
ID_SERIAL_DEVICE_NUMBER
,
0
,
&
DataLength
,
hDevice
,
ID_SERIAL_DEVICE_NUMBER
,
0
,
&
DataLength
,
pSerialDeviceNumber
));
pSerialDeviceNumber
));
}
}
FUNCTION
GLOBAL
INT16
CALL_CONV
profi_get_last_error
(
VOID
)
FUNCTION
GLOBAL
INT16
CALL_CONV
profi_get_last_error
(
VOID
)
...
@@ -2080,55 +1772,6 @@ Possible return values:
...
@@ -2080,55 +1772,6 @@ Possible return values:
#endif
#endif
}
}
#if defined(WIN32) || defined(_WIN32) || defined(WIN16) || defined(_WIN16)
FUNCTION
BOOL
WINAPI
DllMain
(
IN
HINSTANCE
hInstDLL
,
IN
ULONG
Reason
,
IN
LPVOID
pReserved
)
/*----------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
32Bit-DLL main function.
The function is called by MS-Windows during loading DLL.
Possible return values:
- TRUE
-----------------------------------------------------------------------------*/
{
LOCAL_VARIABLES
FUNCTION_BODY
switch
(
Reason
)
{
case
DLL_PROCESS_ATTACH
:
hServiceReadDevice
=
NULL
;
hServiceWriteDevice
=
NULL
;
hDpDataDevice
=
NULL
;
hDpsInputDataDevice
=
NULL
;
hDpsOutputDataDevice
=
NULL
;
CurrentBoardNumber
=
0
;
break
;
case
DLL_THREAD_ATTACH
:
break
;
case
DLL_THREAD_DETACH
:
break
;
case
DLL_PROCESS_DETACH
:
profi_end
();
break
;
default:
break
;
}
return
TRUE
;
}
#endif
#if defined(WIN32) || defined(_WIN32) || defined(WIN16) || defined(_WIN16)
#if defined(WIN32) || defined(_WIN32) || defined(WIN16) || defined(_WIN16)
#pragma check_stack
#pragma check_stack
#endif
#endif
profibus/lib/rt/src/buildnr.papi.h
View file @
ce758cd3
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2019 SSAB EMEA AB.
*
* This file is part of ProviewR.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 2 of
* the License, or (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with ProviewR. If not, see <http://www.gnu.org/licenses/>
*
* Linking ProviewR statically or dynamically with other modules is
* making a combined work based on ProviewR. Thus, the terms and
* conditions of the GNU General Public License cover the whole
* combination.
*
* In addition, as a special exception, the copyright holders of
* ProviewR give you permission to, from the build function in the
* ProviewR Configurator, combine ProviewR with modules generated by the
* ProviewR PLC Editor to a PLC program, regardless of the license
* terms of these modules. You may copy and distribute the resulting
* combined work under the terms of your choice, provided that every
* copy of the combined work is accompanied by a complete copy of
* the source code of ProviewR (the version used to produce the
* combined work), being distributed under the terms of the GNU
* General Public License plus this exception.
*/
#define BUILD_NUMBER 52
#define BUILD_NUMBER 52
#define BUILD_NUMBER_STR "52"
#define BUILD_NUMBER_STR "52"
...
...
profibus/lib/rt/src/busparam.c
View file @
ce758cd3
/*
/******************************************************************************
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2019 SSAB EMEA AB.
*
* This file is part of ProviewR.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 2 of
* the License, or (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with ProviewR. If not, see <http://www.gnu.org/licenses/>
*
* Linking ProviewR statically or dynamically with other modules is
* making a combined work based on ProviewR. Thus, the terms and
* conditions of the GNU General Public License cover the whole
* combination.
*
* In addition, as a special exception, the copyright holders of
* ProviewR give you permission to, from the build function in the
* ProviewR Configurator, combine ProviewR with modules generated by the
* ProviewR PLC Editor to a PLC program, regardless of the license
* terms of these modules. You may copy and distribute the resulting
* combined work under the terms of your choice, provided that every
* copy of the combined work is accompanied by a complete copy of
* the source code of ProviewR (the version used to produce the
* combined work), being distributed under the terms of the GNU
* General Public License plus this exception.
*/
/*****************************************************************************
* *
* *
*
SOFTING AG
*
*
SOFTING Industrial Automation GmbH
*
* Richard-Reitzner-Allee 6 *
* Richard-Reitzner-Allee 6 *
* D-85540 Haar *
* D-85540 Haar *
* Phone:
++49-89-4 56 56-0
*
* Phone:
(++49)-(0)89-45656-0
*
*
Fax: ++49-89-4 56 56-3 99
*
*
Fax: (++49)-(0)89-45656-399
*
* *
* *
*
Copyright (C) SOFTING AG 1995-2003
*
*
Copyright (C) SOFTING Industrial Automation GmbH 1995-2012
*
* All Rights Reserved *
* All Rights Reserved *
* *
* *
******************************************************************************
******************************************************************************
*
FILE_NAME BUSPARAM.C
FILE_NAME BUSPARAM.C
...
@@ -55,25 +20,11 @@ MODULE BUSPARAM
...
@@ -55,25 +20,11 @@ MODULE BUSPARAM
COMPONENT_LIBRARY PBT LIBs and DLL (16-Bit)
COMPONENT_LIBRARY PBT LIBs and DLL (16-Bit)
PBTOOLS DLL (32-Bit)
PBTOOLS DLL (32-Bit)
AUTHOR SOFTING AG
AUTHOR SOFTING
VERSION 5.00
VERSION 5.21.0.00.release
5.01
5.02
DATE February-1998
5.10
5.11
5.20.0.00.alpha
5.20.0.00.release
5.21.0.00.release
DATE 24-November-1995
31-January-1996
14-July-1996
20-Febrary-1997
18-March-1997
30-July-1997
17-October-1997
27-February-1998
STATUS finished
STATUS finished
...
@@ -138,7 +89,8 @@ possible return values:
...
@@ -138,7 +89,8 @@ possible return values:
FUNCTION_BODY
FUNCTION_BODY
switch
(
baud_rate
)
{
switch
(
baud_rate
)
{
case
0
:
/* 9,6 KBaud */
case
0
:
/* 9,6 KBaud */
case
1
:
/* 19,2 KBaud */
case
1
:
/* 19,2 KBaud */
case
2
:
/* 93,75 KBaud */
case
2
:
/* 93,75 KBaud */
...
@@ -242,7 +194,8 @@ possible return values:
...
@@ -242,7 +194,8 @@ possible return values:
FUNCTION_BODY
FUNCTION_BODY
switch
(
baud_rate
)
{
switch
(
baud_rate
)
{
case
0
:
/* 9,6 KBaud */
case
0
:
/* 9,6 KBaud */
bus_param_ptr
->
tsl
=
100
;
bus_param_ptr
->
tsl
=
100
;
bus_param_ptr
->
min_tsdr
=
30
;
bus_param_ptr
->
min_tsdr
=
30
;
...
@@ -365,7 +318,8 @@ possible return values:
...
@@ -365,7 +318,8 @@ possible return values:
FUNCTION_BODY
FUNCTION_BODY
switch
(
baud_rate
)
{
switch
(
baud_rate
)
{
case
0
:
/* 9,6 KBaud */
case
0
:
/* 9,6 KBaud */
bus_param_ptr
->
tsl
=
125
;
bus_param_ptr
->
tsl
=
125
;
bus_param_ptr
->
min_tsdr
=
30
;
bus_param_ptr
->
min_tsdr
=
30
;
...
@@ -481,8 +435,8 @@ possible return values:
...
@@ -481,8 +435,8 @@ possible return values:
}
}
}
}
FUNCTION
GLOBAL
PB_BOOL
CALL_CONV
pbt_get_dp_def_bus_param
(
IN
USIGN8
baud_rate
,
FUNCTION
GLOBAL
PB_BOOL
CALL_CONV
pbt_get_dp_def_bus_param
(
IN
USIGN8
station_addr
,
IN
USIGN16
mode
,
IN
USIGN8
baud_rate
,
IN
USIGN8
station_addr
,
IN
USIGN16
mode
,
OUT
T_DP_BUS_PARA_SET
FAR
*
bus_param_ptr
)
OUT
T_DP_BUS_PARA_SET
FAR
*
bus_param_ptr
)
/*----------------------------------------------------------------------------
/*----------------------------------------------------------------------------
...
@@ -510,7 +464,8 @@ possible return values:
...
@@ -510,7 +464,8 @@ possible return values:
FUNCTION_BODY
FUNCTION_BODY
ret_val
=
PB_TRUE
;
ret_val
=
PB_TRUE
;
switch
(
mode
)
{
switch
(
mode
)
{
case
DP_MODE
:
/* only DP mode */
case
DP_MODE
:
/* only DP mode */
ret_val
=
pbt_get_bus_param_for_dp
(
baud_rate
,
&
bus_param
);
ret_val
=
pbt_get_bus_param_for_dp
(
baud_rate
,
&
bus_param
);
break
;
break
;
...
@@ -524,7 +479,8 @@ possible return values:
...
@@ -524,7 +479,8 @@ possible return values:
break
;
break
;
}
}
if
(
ret_val
==
PB_TRUE
)
{
if
(
ret_val
==
PB_TRUE
)
{
/* -- set variable busparametes ---------------------------------------- */
/* -- set variable busparametes ---------------------------------------- */
bus_param_ptr
->
tsl
=
bus_param
.
tsl
;
bus_param_ptr
->
tsl
=
bus_param
.
tsl
;
bus_param_ptr
->
min_tsdr
=
bus_param
.
min_tsdr
;
bus_param_ptr
->
min_tsdr
=
bus_param
.
min_tsdr
;
...
@@ -583,7 +539,8 @@ possible return values:
...
@@ -583,7 +539,8 @@ possible return values:
FUNCTION_BODY
FUNCTION_BODY
if
(
pbt_get_bus_param_for_fms
(
baud_rate
,
&
bus_param
))
{
if
(
pbt_get_bus_param_for_fms
(
baud_rate
,
&
bus_param
))
{
/* -- set variable busparametes -------------------------------------- */
/* -- set variable busparametes -------------------------------------- */
bus_param_ptr
->
tsl
=
bus_param
.
tsl
;
bus_param_ptr
->
tsl
=
bus_param
.
tsl
;
bus_param_ptr
->
min_tsdr
=
bus_param
.
min_tsdr
;
bus_param_ptr
->
min_tsdr
=
bus_param
.
min_tsdr
;
...
@@ -607,7 +564,9 @@ possible return values:
...
@@ -607,7 +564,9 @@ possible return values:
bus_param_ptr
->
ident
[
3
]
=
0
;
bus_param_ptr
->
ident
[
3
]
=
0
;
return
(
PB_TRUE
);
return
(
PB_TRUE
);
}
else
{
}
else
{
return
(
PB_FALSE
);
return
(
PB_FALSE
);
}
}
}
}
...
@@ -644,7 +603,8 @@ possible return values:
...
@@ -644,7 +603,8 @@ possible return values:
FUNCTION_BODY
FUNCTION_BODY
switch
(
mode
)
{
switch
(
mode
)
{
case
DP_MODE
:
/* only DP mode */
case
DP_MODE
:
/* only DP mode */
ret_val
=
pbt_get_bus_param_for_dp
(
baud_rate
,
&
bus_param
);
ret_val
=
pbt_get_bus_param_for_dp
(
baud_rate
,
&
bus_param
);
break
;
break
;
...
@@ -662,7 +622,8 @@ possible return values:
...
@@ -662,7 +622,8 @@ possible return values:
break
;
break
;
}
}
if
(
ret_val
==
PB_TRUE
)
{
if
(
ret_val
==
PB_TRUE
)
{
/* -- set variable busparametes ---------------------------------------- */
/* -- set variable busparametes ---------------------------------------- */
bus_param_ptr
->
tsl
=
bus_param
.
tsl
;
bus_param_ptr
->
tsl
=
bus_param
.
tsl
;
bus_param_ptr
->
min_tsdr
=
bus_param
.
min_tsdr
;
bus_param_ptr
->
min_tsdr
=
bus_param
.
min_tsdr
;
...
@@ -689,9 +650,9 @@ possible return values:
...
@@ -689,9 +650,9 @@ possible return values:
return
(
ret_val
);
return
(
ret_val
);
}
}
FUNCTION
GLOBAL
PB_BOOL
CALL_CONV
pbt_get_fmb_def_bus_param
(
IN
USIGN8
baud_rate
,
FUNCTION
GLOBAL
PB_BOOL
CALL_CONV
pbt_get_fmb_def_bus_param
(
IN
USIGN8
station_addr
,
IN
PB_BOOL
in_ring_desired
,
IN
USIGN16
mode
,
IN
USIGN8
baud_rate
,
IN
USIGN8
station_addr
,
IN
PB_BOOL
in_ring_desired
,
OUT
T_FMB_SET_BUSPARAMETER_REQ
FAR
*
bus_param_ptr
)
IN
USIGN16
mode
,
OUT
T_FMB_SET_BUSPARAMETER_REQ
FAR
*
bus_param_ptr
)
/*----------------------------------------------------------------------------
/*----------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
FUNCTIONAL_DESCRIPTION
...
@@ -720,7 +681,8 @@ possible return values:
...
@@ -720,7 +681,8 @@ possible return values:
FUNCTION_BODY
FUNCTION_BODY
switch
(
mode
)
{
switch
(
mode
)
{
case
DP_MODE
:
/* only DP mode */
case
DP_MODE
:
/* only DP mode */
ret_val
=
pbt_get_bus_param_for_dp
(
baud_rate
,
&
bus_param
);
ret_val
=
pbt_get_bus_param_for_dp
(
baud_rate
,
&
bus_param
);
break
;
break
;
...
@@ -738,7 +700,8 @@ possible return values:
...
@@ -738,7 +700,8 @@ possible return values:
break
;
break
;
}
}
if
(
ret_val
==
PB_TRUE
)
{
if
(
ret_val
==
PB_TRUE
)
{
/* -- set variable busparametes ---------------------------------------- */
/* -- set variable busparametes ---------------------------------------- */
bus_param_ptr
->
tsl
=
bus_param
.
tsl
;
bus_param_ptr
->
tsl
=
bus_param
.
tsl
;
bus_param_ptr
->
min_tsdr
=
bus_param
.
min_tsdr
;
bus_param_ptr
->
min_tsdr
=
bus_param
.
min_tsdr
;
...
...
profibus/lib/rt/src/ccrl.c
View file @
ce758cd3
/*
/******************************************************************************
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2019 SSAB EMEA AB.
*
* This file is part of ProviewR.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 2 of
* the License, or (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with ProviewR. If not, see <http://www.gnu.org/licenses/>
*
* Linking ProviewR statically or dynamically with other modules is
* making a combined work based on ProviewR. Thus, the terms and
* conditions of the GNU General Public License cover the whole
* combination.
*
* In addition, as a special exception, the copyright holders of
* ProviewR give you permission to, from the build function in the
* ProviewR Configurator, combine ProviewR with modules generated by the
* ProviewR PLC Editor to a PLC program, regardless of the license
* terms of these modules. You may copy and distribute the resulting
* combined work under the terms of your choice, provided that every
* copy of the combined work is accompanied by a complete copy of
* the source code of ProviewR (the version used to produce the
* combined work), being distributed under the terms of the GNU
* General Public License plus this exception.
*/
/*****************************************************************************
* *
* *
*
SOFTING AG
*
*
SOFTING Industrial Automation GmbH
*
* Richard-Reitzner-Allee 6 *
* Richard-Reitzner-Allee 6 *
* D-85540 Haar *
* D-85540 Haar *
* Phone:
++49-89-4 56 56-0
*
* Phone:
(++49)-(0)89-45656-0
*
*
Fax: ++49-89-4 56 56-3 99
*
*
Fax: (++49)-(0)89-45656-399
*
* *
* *
*
Copyright (C) SOFTING AG 1995-2003
*
*
Copyright (C) SOFTING Industrial Automation GmbH 1995-2012
*
* All Rights Reserved *
* All Rights Reserved *
* *
* *
******************************************************************************
*******************************************************************************
FILE_NAME CCRL.C
FILE_NAME CCRL.C
PROJECT_NAME PROFIBUS
PROJECT_NAME PROFIBUS
...
@@ -54,25 +20,11 @@ MODULE CCRL
...
@@ -54,25 +20,11 @@ MODULE CCRL
COMPONENT_LIBRARY PBT LIBs and DLL (16-Bit)
COMPONENT_LIBRARY PBT LIBs and DLL (16-Bit)
PBTOOLS.DLL (32-Bit)
PBTOOLS.DLL (32-Bit)
AUTHOR SOFTING AG
AUTHOR SOFTING
VERSION 5.00
VERSION 5.21.0.00.release
5.01
5.02
DATE February-1998
5.10
5.11
5.20.0.00.alpha
5.20.0.00.release
5.21.0.00.release
DATE 24-November-1995
31-January-1996
14-July-1996
20-Febrary-1997
18-March-1997
30-July-1997
17-October-1997
27-February-1998
STATUS finished
STATUS finished
...
@@ -133,14 +85,12 @@ INCLUDES
...
@@ -133,14 +85,12 @@ INCLUDES
#include <windows.h>
#include <windows.h>
#endif
#endif
#include "co_math.h"
#include <pb_type.h>
#include <pb_if.h>
#include "pb_type.h"
#include <pb_fmb.h>
#include "pb_if.h"
#include <pb_fm7.h>
#include "pb_fmb.h"
#include <pb_err.h>
#include "pb_fm7.h"
#include <pb_tools.h>
#include "pb_err.h"
#include "pb_tools.h"
LOCAL_DEFINES
LOCAL_DEFINES
...
@@ -156,17 +106,29 @@ LOCAL_DEFINES
...
@@ -156,17 +106,29 @@ LOCAL_DEFINES
#define _IS_I_CONN(x) ((x & 0x03) == I_CONN)
#define _IS_I_CONN(x) ((x & 0x03) == I_CONN)
#define _IS_CYCLIC(type) (type & 0x02)
#define _IS_CYCLIC(type) (type & 0x02)
#define _WITHOUT_SLAVE_INITIATIVE(type) (!(type & 0x04))
#define _WITHOUT_SLAVE_INITIATIVE(type) (!(type & 0x04))
#define _IS_CONN_LESS(x) ((x & 0x09) == BRCT)
#define _IS_CONN_ORIENTED(x) (!_IS_CONN_LESS(x))
#ifndef min
#define min(a, b) (((a) < (b)) ? (a) : (b))
#endif
#ifndef max
#define max(a, b) (((a) > (b)) ? (a) : (b))
#endif
LOCAL_TYPEDEFS
LOCAL_TYPEDEFS
typedef
struct
_T_CCRL_CONN_RESRCES
{
typedef
struct
_T_CCRL_CONN_RESRCES
{
USIGN8
no_of_fal_sdbs
;
USIGN8
no_of_fal_sdbs
;
USIGN8
no_of_fdl_sdbs
;
USIGN8
no_of_fdl_sdbs
;
USIGN8
no_of_data_buffer
;
USIGN8
no_of_data_buffer
;
USIGN8
no_of_api_buffer
;
USIGN8
no_of_api_buffer
;
}
T_CCRL_CONN_RESRCES
;
}
T_CCRL_CONN_RESRCES
;
typedef
struct
_T_CCRL
{
typedef
struct
_T_CCRL
{
T_FMB_CONFIG_CRL
ccrl
;
T_FMB_CONFIG_CRL
ccrl
;
USIGN8
poll_sap
;
USIGN8
poll_sap
;
PB_BOOL
mms_exist
;
PB_BOOL
mms_exist
;
...
@@ -188,8 +150,8 @@ static T_CCRL ccrl_obj;
...
@@ -188,8 +150,8 @@ static T_CCRL ccrl_obj;
#pragma check_stack(off)
#pragma check_stack(off)
#endif
#endif
FUNCTION
LOCAL
USIGN16
ccrl_determine_role
(
FUNCTION
LOCAL
USIGN16
ccrl_determine_role
(
IN
T_CRL_STATIC
FAR
*
crl_ptr
,
IN
T_CRL_STATIC
FAR
*
crl_ptr
,
IN
USIGN8
*
role_ptr
)
IN
USIGN8
*
role_ptr
)
/*----------------------------------------------------------------------------
/*----------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
FUNCTIONAL_DESCRIPTION
...
@@ -210,7 +172,8 @@ R_CL -> Receiver of multicast/broadcast messages
...
@@ -210,7 +172,8 @@ R_CL -> Receiver of multicast/broadcast messages
FUNCTION_BODY
FUNCTION_BODY
switch
((
USIGN8
)(
crl_ptr
->
conn_type
&
0x0F
))
{
switch
((
USIGN8
)(
crl_ptr
->
conn_type
&
0x0F
))
{
case
MMAC
:
case
MMAC
:
*
role_ptr
=
M_MM
;
*
role_ptr
=
M_MM
;
return
(
E_OK
);
return
(
E_OK
);
...
@@ -238,8 +201,8 @@ R_CL -> Receiver of multicast/broadcast messages
...
@@ -238,8 +201,8 @@ R_CL -> Receiver of multicast/broadcast messages
}
}
}
}
FUNCTION
LOCAL
VOID
ccrl_correct_crl_entry
(
FUNCTION
LOCAL
VOID
ccrl_correct_crl_entry
(
IN
USIGN16
cr
,
IN
USIGN8
role
,
IN
USIGN16
cr
,
IN
USIGN8
role
,
INOUT
T_CRL_STATIC
FAR
*
crl_ptr
)
INOUT
T_CRL_STATIC
FAR
*
crl_ptr
)
/*------------------------------------------------------------------------------
/*------------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
FUNCTIONAL_DESCRIPTION
...
@@ -250,15 +213,18 @@ FUNCTIONAL_DESCRIPTION
...
@@ -250,15 +213,18 @@ FUNCTIONAL_DESCRIPTION
FUNCTION_BODY
FUNCTION_BODY
if
(
crl_ptr
->
lli_sap
==
1
)
{
if
(
crl_ptr
->
lli_sap
==
1
)
if
(
cr
>
1
)
{
{
if
(
cr
>
1
)
{
/* There is a management client -----------------------------------------
/* There is a management client -----------------------------------------
*/
*/
crl_ptr
->
max_scc
=
1
;
crl_ptr
->
max_scc
=
1
;
crl_ptr
->
max_sac
=
0
;
crl_ptr
->
max_sac
=
0
;
crl_ptr
->
max_rcc
=
0
;
crl_ptr
->
max_rcc
=
0
;
crl_ptr
->
max_rac
=
0
;
crl_ptr
->
max_rac
=
0
;
}
else
/* (cr == 1) */
}
else
/* (cr == 1) */
{
{
/* There is a management server -----------------------------------------
/* There is a management server -----------------------------------------
*/
*/
...
@@ -269,14 +235,17 @@ FUNCTIONAL_DESCRIPTION
...
@@ -269,14 +235,17 @@ FUNCTIONAL_DESCRIPTION
}
}
}
}
if
(
role
==
M_MS
)
{
if
(
role
==
M_MS
)
{
crl_ptr
->
max_rcc
=
0
;
crl_ptr
->
max_rcc
=
0
;
if
(
_IS_CYCLIC
(
crl_ptr
->
conn_type
))
if
(
_IS_CYCLIC
(
crl_ptr
->
conn_type
))
crl_ptr
->
max_scc
=
0
;
crl_ptr
->
max_scc
=
0
;
if
(
_WITHOUT_SLAVE_INITIATIVE
(
crl_ptr
->
conn_type
))
if
(
_WITHOUT_SLAVE_INITIATIVE
(
crl_ptr
->
conn_type
))
crl_ptr
->
max_rac
=
0
;
crl_ptr
->
max_rac
=
0
;
}
else
if
(
role
==
S_MS
)
{
}
else
if
(
role
==
S_MS
)
{
crl_ptr
->
max_scc
=
0
;
crl_ptr
->
max_scc
=
0
;
if
(
_IS_CYCLIC
(
crl_ptr
->
conn_type
))
if
(
_IS_CYCLIC
(
crl_ptr
->
conn_type
))
...
@@ -288,8 +257,8 @@ FUNCTIONAL_DESCRIPTION
...
@@ -288,8 +257,8 @@ FUNCTIONAL_DESCRIPTION
return
;
return
;
}
}
FUNCTION
LOCAL
VOID
ccrl_update_resrc_ctr
(
FUNCTION
LOCAL
VOID
ccrl_update_resrc_ctr
(
INOUT
USIGN8
*
stored_number_ptr
,
INOUT
USIGN8
*
stored_number_ptr
,
INOUT
USIGN8
*
current_number_ptr
)
INOUT
USIGN8
*
current_number_ptr
)
/*----------------------------------------------------------------------------
/*----------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
FUNCTIONAL_DESCRIPTION
...
@@ -302,18 +271,22 @@ FUNCTIONAL_DESCRIPTION
...
@@ -302,18 +271,22 @@ FUNCTIONAL_DESCRIPTION
FUNCTION_BODY
FUNCTION_BODY
if
(
*
stored_number_ptr
<
*
current_number_ptr
)
{
if
(
*
stored_number_ptr
<
*
current_number_ptr
)
{
diff
=
(
USIGN8
)(
*
current_number_ptr
-
*
stored_number_ptr
);
diff
=
(
USIGN8
)(
*
current_number_ptr
-
*
stored_number_ptr
);
*
stored_number_ptr
=
*
current_number_ptr
;
*
stored_number_ptr
=
*
current_number_ptr
;
*
current_number_ptr
=
diff
;
*
current_number_ptr
=
diff
;
}
else
{
}
else
{
*
current_number_ptr
=
0
;
*
current_number_ptr
=
0
;
}
}
return
;
return
;
}
}
FUNCTION
LOCAL
VOID
ccrl_adapt_resrces
(
IN
T_CCRL_CONN_RESRCES
*
in_resrces_ptr
,
FUNCTION
LOCAL
VOID
ccrl_adapt_resrces
(
IN
T_CCRL_CONN_RESRCES
*
in_resrces_ptr
,
INOUT
T_CCRL_CONN_RESRCES
*
out_resrces_ptr
)
INOUT
T_CCRL_CONN_RESRCES
*
out_resrces_ptr
)
/*----------------------------------------------------------------------------
/*----------------------------------------------------------------------------
...
@@ -325,14 +298,14 @@ FUNCTIONAL_DESCRIPTION
...
@@ -325,14 +298,14 @@ FUNCTIONAL_DESCRIPTION
FUNCTION_BODY
FUNCTION_BODY
ccrl_update_resrc_ctr
(
ccrl_update_resrc_ctr
(
&
in_resrces_ptr
->
no_of_fal_sdbs
,
&
in_resrces_ptr
->
no_of_fal_sdbs
,
&
out_resrces_ptr
->
no_of_fal_sdbs
);
&
out_resrces_ptr
->
no_of_fal_sdbs
);
ccrl_update_resrc_ctr
(
ccrl_update_resrc_ctr
(
&
in_resrces_ptr
->
no_of_fdl_sdbs
,
&
in_resrces_ptr
->
no_of_fdl_sdbs
,
&
out_resrces_ptr
->
no_of_fdl_sdbs
);
&
out_resrces_ptr
->
no_of_fdl_sdbs
);
ccrl_update_resrc_ctr
(
ccrl_update_resrc_ctr
(
&
in_resrces_ptr
->
no_of_data_buffer
,
&
in_resrces_ptr
->
no_of_data_buffer
,
&
out_resrces_ptr
->
no_of_data_buffer
);
&
out_resrces_ptr
->
no_of_data_buffer
);
ccrl_update_resrc_ctr
(
ccrl_update_resrc_ctr
(
&
in_resrces_ptr
->
no_of_api_buffer
,
&
in_resrces_ptr
->
no_of_api_buffer
,
&
out_resrces_ptr
->
no_of_api_buffer
);
&
out_resrces_ptr
->
no_of_api_buffer
);
return
;
return
;
}
}
...
@@ -370,7 +343,8 @@ possible return values:
...
@@ -370,7 +343,8 @@ possible return values:
ccrl_obj
.
poll_sap
=
crl_hdr_ptr
->
poll_sap
;
ccrl_obj
.
poll_sap
=
crl_hdr_ptr
->
poll_sap
;
ccrl_obj
.
mms_exist
=
PB_FALSE
;
ccrl_obj
.
mms_exist
=
PB_FALSE
;
for
(
i
=
0
;
i
<
65
;
i
++
)
{
for
(
i
=
0
;
i
<
65
;
i
++
)
{
ccrl_obj
.
isap_resrces
[
i
].
no_of_fal_sdbs
=
0
;
ccrl_obj
.
isap_resrces
[
i
].
no_of_fal_sdbs
=
0
;
ccrl_obj
.
isap_resrces
[
i
].
no_of_fdl_sdbs
=
0
;
ccrl_obj
.
isap_resrces
[
i
].
no_of_fdl_sdbs
=
0
;
ccrl_obj
.
isap_resrces
[
i
].
no_of_data_buffer
=
0
;
ccrl_obj
.
isap_resrces
[
i
].
no_of_data_buffer
=
0
;
...
@@ -380,8 +354,9 @@ possible return values:
...
@@ -380,8 +354,9 @@ possible return values:
return
;
return
;
}
}
FUNCTION
GLOBAL
USIGN16
CALL_CONV
ccrl_resrces_add_entry
(
IN
USIGN16
cr
,
FUNCTION
GLOBAL
USIGN16
CALL_CONV
IN
T_CRL_STATIC
FAR
*
crl_ptr
,
OUT
T_FMB_CONFIG_CRL
FAR
*
config_ptr
)
ccrl_resrces_add_entry
(
IN
USIGN16
cr
,
IN
T_CRL_STATIC
FAR
*
crl_ptr
,
OUT
T_FMB_CONFIG_CRL
FAR
*
config_ptr
)
/*------------------------------------------------------------------------------
/*------------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
FUNCTIONAL_DESCRIPTION
...
@@ -483,57 +458,60 @@ possible return values:
...
@@ -483,57 +458,60 @@ possible return values:
fdl_sap
=
0
;
/* (FDL) */
fdl_sap
=
0
;
/* (FDL) */
fdl_rsap
=
0
;
/* (DATA or FDL + DATA) */
fdl_rsap
=
0
;
/* (DATA or FDL + DATA) */
switch
(
role
)
{
switch
(
role
)
{
case
M_MM
:
case
M_MM
:
/* Master in Master/Master Connection ----------------------------- */
/* Master in Master/Master Connection ----------------------------- */
snd_req
=
(
USIGN8
)(
MAX
(
1
,
/* snd ASS.req */
snd_req
=
(
USIGN8
)(
max
(
1
,
/* snd ASS.req */
(
max_scc
/* snd DTC.req */
(
max_scc
/* snd DTC.req */
+
max_sac
))
/* snd DTA.req */
+
max_sac
))
/* snd DTA.req */
+
1
/* snd ABT.req */
+
1
/* snd ABT.req */
);
);
lli_api_snd_resrc
=
(
USIGN8
)(
MIN
(
ci
,
1
)
/* snd IDLE.req */
lli_api_snd_resrc
=
(
USIGN8
)(
min
(
ci
,
1
)
/* snd IDLE.req */
+
1
/* LLI abort resrc */
+
1
/* LLI abort resrc */
);
);
rcv_res
=
(
USIGN8
)(
MAX
(
1
,
/* rcv ASS_RES_PDU */
rcv_res
=
(
USIGN8
)(
max
(
1
,
/* rcv ASS_RES_PDU */
(
max_scc
/* rcv DTC_RES_PDU */
(
max_scc
/* rcv DTC_RES_PDU */
+
max_sac
))
/* rcv DTA_ACK_PDU */
+
max_sac
))
/* rcv DTA_ACK_PDU */
);
);
rcv_ind
=
(
USIGN8
)(
MAX
(
1
,
/* rcv ASS_REQ_PDU */
rcv_ind
=
(
USIGN8
)(
max
(
1
,
/* rcv ASS_REQ_PDU */
(
max_rcc
/* rcv DTC_REQ_PDU */
(
max_rcc
/* rcv DTC_REQ_PDU */
+
max_rac
))
/* rcv DTA_REQ_PDU */
+
max_rac
))
/* rcv DTA_REQ_PDU */
+
1
/* rcv ABT_REQ_PDU */
+
1
/* rcv ABT_REQ_PDU */
);
);
lli_rcv_ind
=
(
USIGN8
)
MIN
(
ci
,
1
);
/* rcv IDLE_REQ_PDU */
lli_rcv_ind
=
(
USIGN8
)
min
(
ci
,
1
);
/* rcv IDLE_REQ_PDU */
fdl_sap
=
1
;
/* act/deact LSAP */
fdl_sap
=
1
;
/* act/deact LSAP */
break
;
break
;
case
M_MS
:
case
M_MS
:
/* Master in a cyclic master/slave connection --------------------- */
/* Master in a cyclic master/slave connection --------------------- */
if
(
_IS_CYCLIC
(
crl_ptr
->
conn_type
))
{
if
(
_IS_CYCLIC
(
crl_ptr
->
conn_type
))
{
max_scc
=
1
;
max_scc
=
1
;
ci
=
0
;
ci
=
0
;
lli_idm
=
1
;
/* image data memory */
lli_idm
=
1
;
/* image data memory */
if
(
crl_ptr
->
conn_type
&
LLI_EVT_BIT
)
if
(
crl_ptr
->
conn_type
&
LLI_EVT_BIT
)
lli_evt_resrc
=
1
;
lli_evt_resrc
=
1
;
}
else
/* _IS_ACYCLIC (crl_ptr->conn_type) */
}
else
/* _IS_ACYCLIC (crl_ptr->conn_type) */
{
{
multiplier
=
1
;
multiplier
=
1
;
}
}
lli_poll_elem
=
(
USIGN8
)(
MAX
(
multiplier
,
1
));
/* poll_list_element */
lli_poll_elem
=
(
USIGN8
)(
max
(
multiplier
,
1
));
/* poll_list_element */
lli_api_resrc
=
(
USIGN8
)(
MIN
(
ci
,
1
)
/* snd IDLE_REQ_PDU */
lli_api_resrc
=
(
USIGN8
)(
min
(
ci
,
1
)
/* snd IDLE_REQ_PDU */
+
1
/* LLI abort resrc */
+
1
/* LLI abort resrc */
);
);
snd_req_csrd
=
(
USIGN8
)(
MAX
(
1
,
/* snd ASS.req */
snd_req_csrd
=
(
USIGN8
)(
max
(
1
,
/* snd ASS.req */
(
max_scc
/* snd DTC.req */
(
max_scc
/* snd DTC.req */
+
max_sac
))
/* snd DTA.req */
+
max_sac
))
/* snd DTA.req */
+
1
/* snd ABT.req */
+
1
/* snd ABT.req */
...
@@ -547,7 +525,8 @@ possible return values:
...
@@ -547,7 +525,8 @@ possible return values:
snd_res_srd
=
max_rac
;
/* snd DTA.ack (high)*/
snd_res_srd
=
max_rac
;
/* snd DTA.ack (high)*/
if
(
!
ccrl_obj
.
mms_exist
)
{
if
(
!
ccrl_obj
.
mms_exist
)
{
fdl_sap
=
1
;
fdl_sap
=
1
;
ccrl_obj
.
mms_exist
=
PB_TRUE
;
ccrl_obj
.
mms_exist
=
PB_TRUE
;
}
}
...
@@ -558,7 +537,8 @@ possible return values:
...
@@ -558,7 +537,8 @@ possible return values:
fdl_rsap
=
1
;
/* reply update buffer */
fdl_rsap
=
1
;
/* reply update buffer */
if
(
_IS_CYCLIC
(
crl_ptr
->
conn_type
))
{
if
(
_IS_CYCLIC
(
crl_ptr
->
conn_type
))
{
max_rcc
=
1
;
max_rcc
=
1
;
ci
=
0
;
ci
=
0
;
lli_idm
=
1
;
/* image data memory */
lli_idm
=
1
;
/* image data memory */
...
@@ -570,17 +550,17 @@ possible return values:
...
@@ -570,17 +550,17 @@ possible return values:
rcv_res
=
max_sac
;
/* rcv DTA_ACK_PDU */
rcv_res
=
max_sac
;
/* rcv DTA_ACK_PDU */
lli_sr_snd_resrc
=
(
USIGN8
)(
MIN
(
ci
,
1
)
/* snd IDLE.req */
lli_sr_snd_resrc
=
(
USIGN8
)(
min
(
ci
,
1
)
/* snd IDLE.req */
+
1
/* LLI abort resrc */
+
1
/* LLI abort resrc */
);
);
rcv_ind
=
(
USIGN8
)(
MAX
(
1
,
/* rcv ASS_REQ_PDU */
rcv_ind
=
(
USIGN8
)(
max
(
1
,
/* rcv ASS_REQ_PDU */
(
max_rcc
/* rcv DTC_REQ_PDU */
(
max_rcc
/* rcv DTC_REQ_PDU */
+
max_rac
))
/* rcv DTA_REQ_PDU */
+
max_rac
))
/* rcv DTA_REQ_PDU */
+
1
/* rcv ABT_REQ_PDU */
+
1
/* rcv ABT_REQ_PDU */
);
);
lli_rcv_ind
=
(
USIGN8
)(
MIN
(
ci
,
1
)
/* rcv IDLE_REQ_PDU */
lli_rcv_ind
=
(
USIGN8
)(
min
(
ci
,
1
)
/* rcv IDLE_REQ_PDU */
+
2
/* rcv poll telegrams */
+
2
/* rcv poll telegrams */
);
);
fdl_sap
=
1
;
/* act/deact LSAP */
fdl_sap
=
1
;
/* act/deact LSAP */
...
@@ -589,13 +569,13 @@ possible return values:
...
@@ -589,13 +569,13 @@ possible return values:
case
S_CL
:
case
S_CL
:
/* Broadcast/Multicast Sender ------------------------------------- */
/* Broadcast/Multicast Sender ------------------------------------- */
snd_req
=
(
USIGN8
)
MAX
(
1
,
max_sac
);
/* snd DTU.req */
snd_req
=
(
USIGN8
)
max
(
1
,
max_sac
);
/* snd DTU.req */
fdl_sap
=
1
;
/* act/deact LSAP */
fdl_sap
=
1
;
/* act/deact LSAP */
break
;
break
;
case
R_CL
:
case
R_CL
:
/* Broadcast/Multicast Receiver ----------------------------------- */
/* Broadcast/Multicast Receiver ----------------------------------- */
rcv_ind
=
(
USIGN8
)
MAX
(
1
,
max_rac
);
/* rcv DTU_REQ_PDU */
rcv_ind
=
(
USIGN8
)
max
(
1
,
max_rac
);
/* rcv DTU_REQ_PDU */
fdl_sap
=
1
;
/* act/deact LSAP */
fdl_sap
=
1
;
/* act/deact LSAP */
break
;
break
;
...
@@ -603,24 +583,28 @@ possible return values:
...
@@ -603,24 +583,28 @@ possible return values:
return
(
E_FM7_CRL_INVALID_ENTRY
);
return
(
E_FM7_CRL_INVALID_ENTRY
);
}
}
no_of_fal_sdbs
=
(
USIGN16
)(
snd_req
+
snd_req_csrd
+
rcv_ind
+
rcv_ind_csrd
no_of_fal_sdbs
=
(
USIGN16
)(
snd_req
+
snd_req_csrd
+
rcv_ind
+
rcv_ind_csrd
+
+
lli_api_resrc
+
lli_api_snd_resrc
+
lli_sr_snd_resrc
+
lli_evt_resrc
);
lli_api_resrc
+
lli_api_snd_resrc
+
lli_sr_snd_resrc
+
lli_evt_resrc
);
no_of_fdl_sdbs
=
(
USIGN16
)(
snd_req
+
snd_req_srd
+
rcv_res
+
rcv_ind
no_of_fdl_sdbs
=
+
snd_res_srd
+
lli_api_snd_resrc
+
lli_sr_snd_resrc
+
lli_rcv_ind
(
USIGN16
)(
snd_req
+
snd_req_srd
+
rcv_res
+
rcv_ind
+
snd_res_srd
+
+
fdl_sap
+
lli_poll_elem
);
lli_api_snd_resrc
+
lli_sr_snd_resrc
+
lli_rcv_ind
+
fdl_sap
+
lli_poll_elem
);
no_of_fdl_sdbs
=
(
USIGN16
)(
no_of_fdl_sdbs
+
fdl_rsap
);
no_of_fdl_sdbs
=
(
USIGN16
)(
no_of_fdl_sdbs
+
fdl_rsap
);
no_of_data_buffer
=
(
USIGN16
)(
snd_req
+
snd_req_csrd
+
snd_req_srd
+
rcv_res
no_of_data_buffer
=
+
rcv_ind
+
rcv_ind_csrd
+
lli_sr_snd_resrc
+
lli_poll_elem
+
lli_idm
(
USIGN16
)(
snd_req
+
snd_req_csrd
+
snd_req_srd
+
rcv_res
+
rcv_ind
+
+
lli_rcv_ind
+
fdl_rsap
+
lli_evt_resrc
);
rcv_ind_csrd
+
lli_sr_snd_resrc
+
lli_poll_elem
+
lli_idm
+
lli_rcv_ind
+
fdl_rsap
+
lli_evt_resrc
);
no_of_api_buffer
=
(
USIGN16
)(
no_of_api_buffer
=
(
USIGN16
)(
snd_res_srd
+
lli_api_resrc
+
lli_api_snd_resrc
+
snd_res_srd
+
lli_api_resrc
+
lli_api_snd_resrc
+
lli_poll_elem
);
lli_poll_elem
);
if
((
no_of_fal_sdbs
>
0xFF
)
||
(
no_of_fdl_sdbs
>
0xFF
)
if
((
no_of_fal_sdbs
>
0xFF
)
||
(
no_of_fdl_sdbs
>
0xFF
)
||
||
(
no_of_data_buffer
>
0xFF
)
||
(
no_of_api_buffer
>
0xFF
))
{
(
no_of_data_buffer
>
0xFF
)
||
(
no_of_api_buffer
>
0xFF
))
{
return
(
E_FM7_CRL_INVALID_ENTRY
);
return
(
E_FM7_CRL_INVALID_ENTRY
);
}
}
...
@@ -631,26 +615,27 @@ possible return values:
...
@@ -631,26 +615,27 @@ possible return values:
conn_resrc
.
no_of_data_buffer
=
(
USIGN8
)
no_of_data_buffer
;
conn_resrc
.
no_of_data_buffer
=
(
USIGN8
)
no_of_data_buffer
;
conn_resrc
.
no_of_api_buffer
=
(
USIGN8
)
no_of_api_buffer
;
conn_resrc
.
no_of_api_buffer
=
(
USIGN8
)
no_of_api_buffer
;
if
((
role
==
M_MM
)
&&
(
_IS_I_CONN
(
crl_ptr
->
conn_attr
)))
{
if
((
role
==
M_MM
)
&&
(
_IS_I_CONN
(
crl_ptr
->
conn_attr
)))
{
ccrl_adapt_resrces
(
ccrl_adapt_resrces
(
&
ccrl_obj
.
isap_resrces
[
_CCRL_MAP_SAP_NR
(
crl_ptr
->
loc_lsap
)],
&
ccrl_obj
.
isap_resrces
[
_CCRL_MAP_SAP_NR
(
crl_ptr
->
loc_lsap
)],
&
conn_resrc
);
&
conn_resrc
);
}
}
ccrl_obj
.
ccrl
.
max_no_fal_sdbs
ccrl_obj
.
ccrl
.
max_no_fal_sdbs
=
=
(
USIGN16
)(
ccrl_obj
.
ccrl
.
max_no_fal_sdbs
+
conn_resrc
.
no_of_fal_sdbs
);
(
USIGN16
)(
ccrl_obj
.
ccrl
.
max_no_fal_sdbs
+
conn_resrc
.
no_of_fal_sdbs
);
ccrl_obj
.
ccrl
.
max_no_fdl_sdbs
ccrl_obj
.
ccrl
.
max_no_fdl_sdbs
=
=
(
USIGN16
)(
ccrl_obj
.
ccrl
.
max_no_fdl_sdbs
+
conn_resrc
.
no_of_fdl_sdbs
);
(
USIGN16
)(
ccrl_obj
.
ccrl
.
max_no_fdl_sdbs
+
conn_resrc
.
no_of_fdl_sdbs
);
ccrl_obj
.
ccrl
.
max_no_data_buffer
=
(
USIGN16
)(
ccrl_obj
.
ccrl
.
max_no_data_buffer
=
(
USIGN16
)(
ccrl_obj
.
ccrl
.
max_no_data_buffer
+
conn_resrc
.
no_of_data_buffer
);
ccrl_obj
.
ccrl
.
max_no_data_buffer
+
conn_resrc
.
no_of_data_buffer
);
ccrl_obj
.
ccrl
.
max_no_api_buffer
=
(
USIGN16
)(
ccrl_obj
.
ccrl
.
max_no_api_buffer
=
ccrl_obj
.
ccrl
.
max_no_api_buffer
+
conn_resrc
.
no_of_api_buffer
);
(
USIGN16
)(
ccrl_obj
.
ccrl
.
max_no_api_buffer
+
conn_resrc
.
no_of_api_buffer
);
ccrl_obj
.
ccrl
.
max_no_poll_entries
ccrl_obj
.
ccrl
.
max_no_poll_entries
=
=
(
USIGN16
)(
ccrl_obj
.
ccrl
.
max_no_poll_entries
+
lli_poll_elem
);
(
USIGN16
)(
ccrl_obj
.
ccrl
.
max_no_poll_entries
+
lli_poll_elem
);
*
config_ptr
=
ccrl_obj
.
ccrl
;
*
config_ptr
=
ccrl_obj
.
ccrl
;
...
...
profibus/lib/rt/src/cif_api.c
View file @
ce758cd3
...
@@ -62,13 +62,14 @@ Discription
...
@@ -62,13 +62,14 @@ Discription
int
hDevDrv
=
INVALID_HANDLE_VALUE
;
// handle to cifDevDrv
int
hDevDrv
=
INVALID_HANDLE_VALUE
;
// handle to cifDevDrv
static
unsigned
short
DrvOpenCount
=
0
;
// no Application is logged in
static
unsigned
short
DrvOpenCount
=
0
;
// no Application is logged in
typedef
struct
DEV_DPM_SIZEtag
{
typedef
struct
DEV_DPM_SIZEtag
{
unsigned
int
ulDpmSize
;
unsigned
int
ulDpmSize
;
unsigned
int
ulDpmIOSize
;
unsigned
int
ulDpmIOSize
;
}
DEV_DPM_SIZE
;
}
DEV_DPM_SIZE
;
DEV_DPM_SIZE
tDevDPMSize
[
MAX_DEV_BOARDS
]
=
{
{
0L
,
0L
},
{
0L
,
0L
},
{
0L
,
0L
},
DEV_DPM_SIZE
tDevDPMSize
[
MAX_DEV_BOARDS
]
=
{
{
0L
,
0L
}
};
// DPM size of each board
{
0L
,
0L
},
{
0L
,
0L
},
{
0L
,
0L
},
{
0L
,
0L
}
};
// DPM size of each board
/* <ST>
/* <ST>
=================================================================================
=================================================================================
...
@@ -86,17 +87,22 @@ short DevOpenDriver()
...
@@ -86,17 +87,22 @@ short DevOpenDriver()
{
{
short
sRet
=
DRV_NO_ERROR
;
short
sRet
=
DRV_NO_ERROR
;
if
(
hDevDrv
==
INVALID_HANDLE_VALUE
)
{
if
(
hDevDrv
==
INVALID_HANDLE_VALUE
)
{
// first application, search CIF device driver
// first application, search CIF device driver
if
((
hDevDrv
=
open
(
"/dev/cif"
,
O_RDONLY
))
if
((
hDevDrv
=
open
(
"/dev/cif"
,
O_RDONLY
))
==
-
1
)
==
-
1
)
{
// handle of file with attributes to copy
{
// handle of file with attributes to copy
// error open CIF driver
// error open CIF driver
sRet
=
DRV_USR_OPEN_ERROR
;
sRet
=
DRV_USR_OPEN_ERROR
;
}
else
{
}
else
{
// driver is opend for the 1st. time, store application in DrvOpencount
// driver is opend for the 1st. time, store application in DrvOpencount
DrvOpenCount
=
1
;
DrvOpenCount
=
1
;
}
}
}
else
{
}
else
{
// driver is already opend, store application in DrvOpencount
// driver is already opend, store application in DrvOpencount
DrvOpenCount
++
;
DrvOpenCount
++
;
}
}
...
@@ -122,14 +128,20 @@ short DevCloseDriver()
...
@@ -122,14 +128,20 @@ short DevCloseDriver()
{
{
short
sRet
=
DRV_NO_ERROR
;
short
sRet
=
DRV_NO_ERROR
;
if
(
hDevDrv
==
INVALID_HANDLE_VALUE
)
{
if
(
hDevDrv
==
INVALID_HANDLE_VALUE
)
{
sRet
=
DRV_USR_NOT_INITIALIZED
;
sRet
=
DRV_USR_NOT_INITIALIZED
;
}
else
{
}
else
{
// test if other applications are logged in
// test if other applications are logged in
if
(
DrvOpenCount
>
1
)
{
if
(
DrvOpenCount
>
1
)
{
// there are more applications logged in, do not close the driver
// there are more applications logged in, do not close the driver
DrvOpenCount
--
;
DrvOpenCount
--
;
}
else
{
}
else
{
// no more application are logged in, close File Handle
// no more application are logged in, close File Handle
close
(
hDevDrv
);
// handle of object to close
close
(
hDevDrv
);
// handle of object to close
DrvOpenCount
=
0
;
DrvOpenCount
=
0
;
...
@@ -160,15 +172,18 @@ short DevGetBoardInfo(BOARD_INFO* pvData)
...
@@ -160,15 +172,18 @@ short DevGetBoardInfo(BOARD_INFO* pvData)
BOARD_INFO
*
ptBoardInfo
=
NULL
;
BOARD_INFO
*
ptBoardInfo
=
NULL
;
short
sRet
=
DRV_NO_ERROR
;
short
sRet
=
DRV_NO_ERROR
;
if
(
hDevDrv
==
INVALID_HANDLE_VALUE
)
{
if
(
hDevDrv
==
INVALID_HANDLE_VALUE
)
{
sRet
=
DRV_USR_NOT_INITIALIZED
;
sRet
=
DRV_USR_NOT_INITIALIZED
;
}
else
{
}
if
((
ptBuffer
else
=
(
DEVIO_GETBOARDINFOCMD
*
)
malloc
(
sizeof
(
DEVIO_GETBOARDINFOCMD
)))
{
==
NULL
)
if
((
ptBuffer
=
(
DEVIO_GETBOARDINFOCMD
*
)
malloc
(
sizeof
(
DEVIO_GETBOARDINFOCMD
)))
==
NULL
)
return
DRV_USR_SENDBUF_PTR_NULL
;
return
DRV_USR_SENDBUF_PTR_NULL
;
if
((
ptBuffer
->
ptBoardInfo
=
(
BOARD_INFO
*
)
malloc
(
sizeof
(
BOARD_INFO
)))
if
((
ptBuffer
->
ptBoardInfo
=
(
BOARD_INFO
*
)
malloc
(
sizeof
(
BOARD_INFO
)))
==
==
NULL
)
{
NULL
)
{
free
(
ptBuffer
);
free
(
ptBuffer
);
return
DRV_USR_SENDBUF_PTR_NULL
;
return
DRV_USR_SENDBUF_PTR_NULL
;
}
}
...
@@ -176,10 +191,13 @@ short DevGetBoardInfo(BOARD_INFO* pvData)
...
@@ -176,10 +191,13 @@ short DevGetBoardInfo(BOARD_INFO* pvData)
ptBuffer
->
usInfoLen
=
sizeof
(
BOARD_INFO
);
ptBuffer
->
usInfoLen
=
sizeof
(
BOARD_INFO
);
ptBoardInfo
=
ptBuffer
->
ptBoardInfo
;
ptBoardInfo
=
ptBuffer
->
ptBoardInfo
;
if
(
!
ioctl
(
hDevDrv
,
CIF_IOCTLBOARDINFO
,
(
unsigned
long
)
ptBuffer
))
{
if
(
!
ioctl
(
hDevDrv
,
CIF_IOCTLBOARDINFO
,
(
unsigned
long
)
ptBuffer
))
{
// fprintf(stderr, "CIF_IOCTLBOARDINFO: %s\n", strerror(errno));
// fprintf(stderr, "CIF_IOCTLBOARDINFO: %s\n", strerror(errno));
sRet
=
DRV_USR_COMM_ERR
;
sRet
=
DRV_USR_COMM_ERR
;
}
else
{
}
else
{
ptBuffer
->
ptBoardInfo
=
ptBoardInfo
;
ptBuffer
->
ptBoardInfo
=
ptBoardInfo
;
// printf("sRet=%X, &tBuffer=%lX, ->ptBI=%lX\n",sRet,(unsigned
// printf("sRet=%X, &tBuffer=%lX, ->ptBI=%lX\n",sRet,(unsigned
// long)tBuffer,(unsigned long)ptBoardInfo);
// long)tBuffer,(unsigned long)ptBoardInfo);
...
@@ -217,16 +235,19 @@ short DevGetBoardInfoEx(BOARD_INFOEX* pvData)
...
@@ -217,16 +235,19 @@ short DevGetBoardInfoEx(BOARD_INFOEX* pvData)
BOARD_INFOEX
*
ptBoardInfoEx
=
NULL
;
BOARD_INFOEX
*
ptBoardInfoEx
=
NULL
;
short
sRet
=
DRV_NO_ERROR
;
short
sRet
=
DRV_NO_ERROR
;
if
(
hDevDrv
==
INVALID_HANDLE_VALUE
)
{
if
(
hDevDrv
==
INVALID_HANDLE_VALUE
)
{
sRet
=
DRV_USR_NOT_INITIALIZED
;
sRet
=
DRV_USR_NOT_INITIALIZED
;
}
else
{
}
if
((
ptBuffer
else
=
(
DEVIO_GETBOARDINFOEXCMD
*
)
malloc
(
sizeof
(
DEVIO_GETBOARDINFOEXCMD
)))
{
==
NULL
)
if
((
ptBuffer
=
(
DEVIO_GETBOARDINFOEXCMD
*
)
malloc
(
sizeof
(
DEVIO_GETBOARDINFOEXCMD
)))
==
NULL
)
return
DRV_USR_SENDBUF_PTR_NULL
;
return
DRV_USR_SENDBUF_PTR_NULL
;
ptBuffer
->
usInfoLen
=
sizeof
(
BOARD_INFOEX
);
ptBuffer
->
usInfoLen
=
sizeof
(
BOARD_INFOEX
);
if
((
ptBuffer
->
ptBoard
=
(
BOARD_INFOEX
*
)
malloc
(
sizeof
(
BOARD_INFOEX
)))
if
((
ptBuffer
->
ptBoard
=
(
BOARD_INFOEX
*
)
malloc
(
sizeof
(
BOARD_INFOEX
)))
==
==
NULL
)
{
NULL
)
{
free
(
ptBuffer
);
free
(
ptBuffer
);
return
DRV_USR_SENDBUF_PTR_NULL
;
return
DRV_USR_SENDBUF_PTR_NULL
;
}
}
...
@@ -234,10 +255,13 @@ short DevGetBoardInfoEx(BOARD_INFOEX* pvData)
...
@@ -234,10 +255,13 @@ short DevGetBoardInfoEx(BOARD_INFOEX* pvData)
ptBuffer
->
usInfoLen
=
sizeof
(
BOARD_INFOEX
);
ptBuffer
->
usInfoLen
=
sizeof
(
BOARD_INFOEX
);
ptBuffer
->
sError
=
sRet
;
ptBuffer
->
sError
=
sRet
;
if
(
!
ioctl
(
hDevDrv
,
CIF_IOCTLBOARDINFOEX
,
(
unsigned
long
)
ptBuffer
))
{
if
(
!
ioctl
(
hDevDrv
,
CIF_IOCTLBOARDINFOEX
,
(
unsigned
long
)
ptBuffer
))
{
// fprintf(stderr, "CIF_IOCTLBOARDINFOEX: %s\n", strerror(errno));
// fprintf(stderr, "CIF_IOCTLBOARDINFOEX: %s\n", strerror(errno));
sRet
=
DRV_USR_COMM_ERR
;
sRet
=
DRV_USR_COMM_ERR
;
}
else
{
}
else
{
sRet
=
ptBuffer
->
sError
;
sRet
=
ptBuffer
->
sError
;
ptBuffer
->
ptBoard
=
ptBoardInfoEx
;
ptBuffer
->
ptBoard
=
ptBoardInfoEx
;
memcpy
(
pvData
,
ptBoardInfoEx
,
sizeof
(
BOARD_INFOEX
));
memcpy
(
pvData
,
ptBoardInfoEx
,
sizeof
(
BOARD_INFOEX
));
...
@@ -260,27 +284,35 @@ short DevGetBoardInfoEx(BOARD_INFOEX* pvData)
...
@@ -260,27 +284,35 @@ short DevGetBoardInfoEx(BOARD_INFOEX* pvData)
=================================================================================
=================================================================================
<En> */
<En> */
short
DevSetOpMode
(
short
DevSetOpMode
(
unsigned
short
usBoard
,
unsigned
short
usMode
,
unsigned
short
usBoard
,
unsigned
short
usMode
,
unsigned
short
*
usIrq
)
unsigned
short
*
usIrq
)
{
{
DEVIO_SETOPMODE
tBuffer
;
DEVIO_SETOPMODE
tBuffer
;
short
sRet
=
DRV_NO_ERROR
;
short
sRet
=
DRV_NO_ERROR
;
if
(
hDevDrv
==
INVALID_HANDLE_VALUE
)
{
if
(
hDevDrv
==
INVALID_HANDLE_VALUE
)
{
sRet
=
DRV_USR_NOT_INITIALIZED
;
sRet
=
DRV_USR_NOT_INITIALIZED
;
}
else
if
(
usBoard
>=
MAX_DEV_BOARDS
)
{
}
else
if
(
usBoard
>=
MAX_DEV_BOARDS
)
{
// number is invalid
// number is invalid
sRet
=
DRV_USR_DEV_NUMBER_INVALID
;
sRet
=
DRV_USR_DEV_NUMBER_INVALID
;
}
else
{
}
else
{
// clear all data buffers
// clear all data buffers
tBuffer
.
usBoard
=
usBoard
;
tBuffer
.
usBoard
=
usBoard
;
tBuffer
.
usMode
=
usMode
;
tBuffer
.
usMode
=
usMode
;
tBuffer
.
sError
=
sRet
;
tBuffer
.
sError
=
sRet
;
if
(
!
ioctl
(
hDevDrv
,
CIF_IOCTL_IRQ_POLL
,
(
unsigned
long
)(
&
tBuffer
)))
{
if
(
!
ioctl
(
hDevDrv
,
CIF_IOCTL_IRQ_POLL
,
(
unsigned
long
)(
&
tBuffer
)))
{
// fprintf(stderr, "CIFAPI (CIF_IOCTL_IRQ_POLL): %s\n", strerror(errno));
// fprintf(stderr, "CIFAPI (CIF_IOCTL_IRQ_POLL): %s\n", strerror(errno));
sRet
=
DRV_USR_COMM_ERR
;
sRet
=
DRV_USR_COMM_ERR
;
}
else
{
}
else
{
sRet
=
tBuffer
.
sError
;
sRet
=
tBuffer
.
sError
;
*
usIrq
=
tBuffer
.
usIrq
;
*
usIrq
=
tBuffer
.
usIrq
;
}
}
...
@@ -307,28 +339,37 @@ short DevInitBoard(unsigned short usDevNumber)
...
@@ -307,28 +339,37 @@ short DevInitBoard(unsigned short usDevNumber)
DEVIO_RESETCMD
tBuffer
;
DEVIO_RESETCMD
tBuffer
;
short
sRet
=
DRV_NO_ERROR
;
short
sRet
=
DRV_NO_ERROR
;
if
(
hDevDrv
==
INVALID_HANDLE_VALUE
)
{
if
(
hDevDrv
==
INVALID_HANDLE_VALUE
)
{
sRet
=
DRV_USR_NOT_INITIALIZED
;
sRet
=
DRV_USR_NOT_INITIALIZED
;
}
else
if
(
usDevNumber
>=
MAX_DEV_BOARDS
)
{
}
else
if
(
usDevNumber
>=
MAX_DEV_BOARDS
)
{
// number is invalid
// number is invalid
sRet
=
DRV_USR_DEV_NUMBER_INVALID
;
sRet
=
DRV_USR_DEV_NUMBER_INVALID
;
}
else
{
}
else
{
// clear all data buffers
// clear all data buffers
tBuffer
.
usBoard
=
usDevNumber
;
tBuffer
.
usBoard
=
usDevNumber
;
tBuffer
.
sError
=
sRet
;
tBuffer
.
sError
=
sRet
;
if
(
!
ioctl
(
hDevDrv
,
CIF_IOCTLINITDRV
,
(
unsigned
long
)(
&
tBuffer
)))
{
if
(
!
ioctl
(
hDevDrv
,
CIF_IOCTLINITDRV
,
(
unsigned
long
)(
&
tBuffer
)))
{
// fprintf(stderr, "CIFAPI (CIF_IOCTLINITDRV): %s\n", strerror(errno));
// fprintf(stderr, "CIFAPI (CIF_IOCTLINITDRV): %s\n", strerror(errno));
sRet
=
DRV_USR_COMM_ERR
;
sRet
=
DRV_USR_COMM_ERR
;
}
else
{
}
else
{
sRet
=
tBuffer
.
sError
;
sRet
=
tBuffer
.
sError
;
// printf("CIFAPI (CIF_IOCTLINITDRV): sRet = %d\n", sRet);
// printf("CIFAPI (CIF_IOCTLINITDRV): sRet = %d\n", sRet);
if
(
sRet
==
DRV_NO_ERROR
)
{
if
(
sRet
==
DRV_NO_ERROR
)
{
// Save the DPM size for further function calls and calculate the length
// Save the DPM size for further function calls and calculate the length
// of the DPM-IO data area
// of the DPM-IO data area
tDevDPMSize
[
usDevNumber
].
ulDpmSize
=
tBuffer
.
ulDpmSize
;
tDevDPMSize
[
usDevNumber
].
ulDpmSize
=
tBuffer
.
ulDpmSize
;
tDevDPMSize
[
usDevNumber
].
ulDpmIOSize
tDevDPMSize
[
usDevNumber
].
ulDpmIOSize
=
=
((
tBuffer
.
ulDpmSize
*
1024
)
-
1024
)
/
2
;
((
tBuffer
.
ulDpmSize
*
1024
)
-
1024
)
/
2
;
}
}
}
}
}
}
...
@@ -350,22 +391,29 @@ short DevInitBoard(unsigned short usDevNumber)
...
@@ -350,22 +391,29 @@ short DevInitBoard(unsigned short usDevNumber)
=================================================================================
=================================================================================
<En> */
<En> */
short
DevReset
(
short
DevReset
(
unsigned
char
usDevNumber
,
unsigned
short
usMode
,
unsigned
char
usDevNumber
,
unsigned
short
usMode
,
unsigned
long
ulTimeout
)
unsigned
long
ulTimeout
)
{
{
DEVIO_RESETCMD
tBuffer
;
DEVIO_RESETCMD
tBuffer
;
unsigned
int
lBytesReturned
;
unsigned
int
lBytesReturned
;
short
sRet
=
DRV_NO_ERROR
;
short
sRet
=
DRV_NO_ERROR
;
// valid handle available, driver is open
// valid handle available, driver is open
if
(
hDevDrv
==
INVALID_HANDLE_VALUE
)
{
if
(
hDevDrv
==
INVALID_HANDLE_VALUE
)
{
sRet
=
DRV_USR_NOT_INITIALIZED
;
sRet
=
DRV_USR_NOT_INITIALIZED
;
}
else
if
(
usDevNumber
>=
MAX_DEV_BOARDS
)
{
}
else
if
(
usDevNumber
>=
MAX_DEV_BOARDS
)
{
sRet
=
DRV_USR_DEV_NUMBER_INVALID
;
sRet
=
DRV_USR_DEV_NUMBER_INVALID
;
}
else
if
((
usMode
!=
COLDSTART
)
&&
(
usMode
!=
WARMSTART
)
}
&&
(
usMode
!=
BOOTSTART
))
{
else
if
((
usMode
!=
COLDSTART
)
&&
(
usMode
!=
WARMSTART
)
&&
(
usMode
!=
BOOTSTART
))
{
sRet
=
DRV_USR_MODE_INVALID
;
sRet
=
DRV_USR_MODE_INVALID
;
}
else
{
}
else
{
// fill in parameter data
// fill in parameter data
lBytesReturned
=
0
;
lBytesReturned
=
0
;
// set output buffer
// set output buffer
...
@@ -376,10 +424,13 @@ short DevReset(
...
@@ -376,10 +424,13 @@ short DevReset(
// printf("CIF_IOCTLRESETDEV: BOARD = %d, mode = %d, tout = %ld\n",
// printf("CIF_IOCTLRESETDEV: BOARD = %d, mode = %d, tout = %ld\n",
// tBuffer.ucBoard, tBuffer.usMode, tBuffer.ulTimeout);
// tBuffer.ucBoard, tBuffer.usMode, tBuffer.ulTimeout);
if
(
!
ioctl
(
hDevDrv
,
CIF_IOCTLRESETDEV
,
(
unsigned
long
)(
&
tBuffer
)))
{
if
(
!
ioctl
(
hDevDrv
,
CIF_IOCTLRESETDEV
,
(
unsigned
long
)(
&
tBuffer
)))
{
// fprintf(stderr, "CIF_IOCTLRESETDEV: %s\n", strerror(errno));
// fprintf(stderr, "CIF_IOCTLRESETDEV: %s\n", strerror(errno));
sRet
=
DRV_USR_COMM_ERR
;
sRet
=
DRV_USR_COMM_ERR
;
}
else
{
}
else
{
sRet
=
tBuffer
.
sError
;
sRet
=
tBuffer
.
sError
;
}
}
}
}
...
@@ -410,59 +461,76 @@ short DevGetInfo(unsigned short usDevNumber, unsigned short usInfoArea,
...
@@ -410,59 +461,76 @@ short DevGetInfo(unsigned short usDevNumber, unsigned short usInfoArea,
short
sRet
=
DRV_NO_ERROR
;
short
sRet
=
DRV_NO_ERROR
;
// valid handle available, driver is open
// valid handle available, driver is open
if
(
hDevDrv
==
INVALID_HANDLE_VALUE
)
{
if
(
hDevDrv
==
INVALID_HANDLE_VALUE
)
{
sRet
=
DRV_USR_NOT_INITIALIZED
;
sRet
=
DRV_USR_NOT_INITIALIZED
;
}
else
if
(
usDevNumber
>=
MAX_DEV_BOARDS
)
{
}
else
if
(
usDevNumber
>=
MAX_DEV_BOARDS
)
{
sRet
=
DRV_USR_DEV_NUMBER_INVALID
;
sRet
=
DRV_USR_DEV_NUMBER_INVALID
;
}
else
if
(
usSize
==
0
)
{
}
else
if
(
usSize
==
0
)
{
sRet
=
DRV_USR_SIZE_ZERO
;
sRet
=
DRV_USR_SIZE_ZERO
;
}
else
{
}
else
{
// test area spezific data
// test area spezific data
switch
(
usInfoArea
)
{
switch
(
usInfoArea
)
{
case
GET_VERSION_INFO
:
case
GET_VERSION_INFO
:
if
(
usSize
>
sizeof
(
VERSIONINFO
))
{
if
(
usSize
>
sizeof
(
VERSIONINFO
))
{
sRet
=
DRV_USR_SIZE_TOO_LONG
;
sRet
=
DRV_USR_SIZE_TOO_LONG
;
}
}
break
;
break
;
case
GET_DRIVER_INFO
:
case
GET_DRIVER_INFO
:
if
(
usSize
>
sizeof
(
DRIVERINFO
))
{
if
(
usSize
>
sizeof
(
DRIVERINFO
))
{
sRet
=
DRV_USR_SIZE_TOO_LONG
;
sRet
=
DRV_USR_SIZE_TOO_LONG
;
}
}
break
;
break
;
case
GET_FIRMWARE_INFO
:
case
GET_FIRMWARE_INFO
:
if
(
usSize
>
sizeof
(
FIRMWAREINFO
))
{
if
(
usSize
>
sizeof
(
FIRMWAREINFO
))
{
sRet
=
DRV_USR_SIZE_TOO_LONG
;
sRet
=
DRV_USR_SIZE_TOO_LONG
;
}
}
break
;
break
;
case
GET_RCS_INFO
:
case
GET_RCS_INFO
:
if
(
usSize
>
sizeof
(
RCSINFO
))
{
if
(
usSize
>
sizeof
(
RCSINFO
))
{
sRet
=
DRV_USR_SIZE_TOO_LONG
;
sRet
=
DRV_USR_SIZE_TOO_LONG
;
}
}
break
;
break
;
case
GET_DEV_INFO
:
case
GET_DEV_INFO
:
if
(
usSize
>
sizeof
(
DEVINFO
))
{
if
(
usSize
>
sizeof
(
DEVINFO
))
{
sRet
=
DRV_USR_SIZE_TOO_LONG
;
sRet
=
DRV_USR_SIZE_TOO_LONG
;
}
}
break
;
break
;
case
GET_TASK_INFO
:
case
GET_TASK_INFO
:
if
(
usSize
>
sizeof
(
TASKINFO
))
{
if
(
usSize
>
sizeof
(
TASKINFO
))
{
sRet
=
DRV_USR_SIZE_TOO_LONG
;
sRet
=
DRV_USR_SIZE_TOO_LONG
;
}
}
break
;
break
;
case
GET_IO_INFO
:
case
GET_IO_INFO
:
if
(
usSize
>
sizeof
(
IOINFO
))
{
if
(
usSize
>
sizeof
(
IOINFO
))
{
sRet
=
DRV_USR_SIZE_TOO_LONG
;
sRet
=
DRV_USR_SIZE_TOO_LONG
;
}
}
break
;
break
;
case
GET_IO_SEND_DATA
:
case
GET_IO_SEND_DATA
:
if
(
usSize
>
tDevDPMSize
[
usDevNumber
].
ulDpmIOSize
)
{
if
(
usSize
>
tDevDPMSize
[
usDevNumber
].
ulDpmIOSize
)
{
sRet
=
DRV_USR_SIZE_TOO_LONG
;
sRet
=
DRV_USR_SIZE_TOO_LONG
;
}
}
break
;
break
;
default:
default:
sRet
=
DRV_USR_INFO_AREA_INVALID
;
sRet
=
DRV_USR_INFO_AREA_INVALID
;
}
/* end switch */
}
/* end switch */
if
(
sRet
==
DRV_NO_ERROR
)
{
if
(
sRet
==
DRV_NO_ERROR
)
{
// complete buffer length with return data
// complete buffer length with return data
// usDataBufferLen = usSize;
// usDataBufferLen = usSize;
// fill in parameter data
// fill in parameter data
...
@@ -471,15 +539,18 @@ short DevGetInfo(unsigned short usDevNumber, unsigned short usInfoArea,
...
@@ -471,15 +539,18 @@ short DevGetInfo(unsigned short usDevNumber, unsigned short usInfoArea,
tBuffer
.
usBoard
=
usDevNumber
;
tBuffer
.
usBoard
=
usDevNumber
;
tBuffer
.
usInfoArea
=
usInfoArea
;
tBuffer
.
usInfoArea
=
usInfoArea
;
tBuffer
.
usInfoLen
=
usSize
;
tBuffer
.
usInfoLen
=
usSize
;
tBuffer
.
pabInfoData
tBuffer
.
pabInfoData
=
=
pvData
;
// needed in kernel-space to copy data back to it!
pvData
;
// needed in kernel-space to copy data back to it!
tBuffer
.
sError
=
sRet
;
tBuffer
.
sError
=
sRet
;
// activate function
// activate function
if
(
!
ioctl
(
hDevDrv
,
CIF_IOCTLGETINFO
,
(
unsigned
long
)(
&
tBuffer
)))
{
if
(
!
ioctl
(
hDevDrv
,
CIF_IOCTLGETINFO
,
(
unsigned
long
)(
&
tBuffer
)))
{
// fprintf(stderr, "(CIFAPI: (CIF_IOCTLGETINFO): %s\n",
// fprintf(stderr, "(CIFAPI: (CIF_IOCTLGETINFO): %s\n",
// strerror(errno));
// strerror(errno));
sRet
=
DRV_USR_COMM_ERR
;
sRet
=
DRV_USR_COMM_ERR
;
}
else
{
}
else
{
// memcpy(pvData, tBuffer.pabInfoData, usSize); already copied by
// memcpy(pvData, tBuffer.pabInfoData, usSize); already copied by
// driver direct !!!
// driver direct !!!
sRet
=
tBuffer
.
sError
;
sRet
=
tBuffer
.
sError
;
...
@@ -512,18 +583,28 @@ short DevPutTaskParameter(unsigned short usDevNumber, unsigned short usNumber,
...
@@ -512,18 +583,28 @@ short DevPutTaskParameter(unsigned short usDevNumber, unsigned short usNumber,
unsigned
int
lBytesReturned
;
unsigned
int
lBytesReturned
;
short
sRet
=
DRV_NO_ERROR
;
short
sRet
=
DRV_NO_ERROR
;
// valid handle available, driver is open
// valid handle available, driver is open
if
(
hDevDrv
==
INVALID_HANDLE_VALUE
)
{
if
(
hDevDrv
==
INVALID_HANDLE_VALUE
)
{
sRet
=
DRV_USR_NOT_INITIALIZED
;
sRet
=
DRV_USR_NOT_INITIALIZED
;
}
else
if
(
usDevNumber
>=
MAX_DEV_BOARDS
)
{
}
else
if
(
usDevNumber
>=
MAX_DEV_BOARDS
)
{
sRet
=
DRV_USR_DEV_NUMBER_INVALID
;
sRet
=
DRV_USR_DEV_NUMBER_INVALID
;
}
else
if
((
usNumber
<
1
)
}
||
(
usNumber
>
7
))
{
// 3...7 wird in MailBox memory area geschrieben
else
if
((
usNumber
<
1
)
||
(
usNumber
>
7
))
{
// 3...7 wird in MailBox memory area geschrieben
sRet
=
DRV_USR_NUMBER_INVALID
;
sRet
=
DRV_USR_NUMBER_INVALID
;
}
else
if
(
usSize
==
0
)
{
}
else
if
(
usSize
==
0
)
{
sRet
=
DRV_USR_SIZE_ZERO
;
sRet
=
DRV_USR_SIZE_ZERO
;
}
else
if
(
usSize
>
sizeof
(
TASKPARAM
))
{
}
else
if
(
usSize
>
sizeof
(
TASKPARAM
))
{
sRet
=
DRV_USR_SIZE_TOO_LONG
;
sRet
=
DRV_USR_SIZE_TOO_LONG
;
}
else
{
}
else
{
// fill in parameter data
// fill in parameter data
lBytesReturned
=
0
;
lBytesReturned
=
0
;
// set command buffer
// set command buffer
...
@@ -534,10 +615,12 @@ short DevPutTaskParameter(unsigned short usDevNumber, unsigned short usNumber,
...
@@ -534,10 +615,12 @@ short DevPutTaskParameter(unsigned short usDevNumber, unsigned short usNumber,
usSize
);
usSize
);
tBuffer
.
sError
=
sRet
;
tBuffer
.
sError
=
sRet
;
// activate function
// activate function
if
(
!
ioctl
(
hDevDrv
,
CIF_IOCTLPARAMETER
,
(
unsigned
long
)(
&
tBuffer
)))
{
if
(
!
ioctl
(
hDevDrv
,
CIF_IOCTLPARAMETER
,
(
unsigned
long
)(
&
tBuffer
)))
{
// fprintf(stderr, "CIF_IOCTLRESETDEV: %s\n", strerror(errno));
// fprintf(stderr, "CIF_IOCTLRESETDEV: %s\n", strerror(errno));
sRet
=
DRV_USR_COMM_ERR
;
sRet
=
DRV_USR_COMM_ERR
;
}
else
}
else
sRet
=
tBuffer
.
sError
;
sRet
=
tBuffer
.
sError
;
}
}
return
sRet
;
return
sRet
;
...
@@ -567,17 +650,28 @@ short DevGetTaskState(unsigned short usDevNumber, unsigned short usNumber,
...
@@ -567,17 +650,28 @@ short DevGetTaskState(unsigned short usDevNumber, unsigned short usNumber,
short
sRet
=
DRV_NO_ERROR
;
short
sRet
=
DRV_NO_ERROR
;
// valid handle available, driver is open
// valid handle available, driver is open
if
(
hDevDrv
==
INVALID_HANDLE_VALUE
)
{
if
(
hDevDrv
==
INVALID_HANDLE_VALUE
)
{
sRet
=
DRV_USR_NOT_INITIALIZED
;
sRet
=
DRV_USR_NOT_INITIALIZED
;
}
else
if
(
usDevNumber
>=
MAX_DEV_BOARDS
)
{
}
else
if
(
usDevNumber
>=
MAX_DEV_BOARDS
)
{
sRet
=
DRV_USR_DEV_NUMBER_INVALID
;
sRet
=
DRV_USR_DEV_NUMBER_INVALID
;
}
else
if
(
usNumber
<
1
||
usNumber
>
2
)
{
}
else
if
(
usNumber
<
1
||
usNumber
>
2
)
{
sRet
=
DRV_USR_NUMBER_INVALID
;
sRet
=
DRV_USR_NUMBER_INVALID
;
}
else
if
(
usSize
==
0
)
{
}
else
if
(
usSize
==
0
)
{
sRet
=
DRV_USR_SIZE_ZERO
;
sRet
=
DRV_USR_SIZE_ZERO
;
}
else
if
(
usSize
>
sizeof
(
TASKSTATE
))
{
}
else
if
(
usSize
>
sizeof
(
TASKSTATE
))
{
sRet
=
DRV_USR_SIZE_TOO_LONG
;
sRet
=
DRV_USR_SIZE_TOO_LONG
;
}
else
{
}
else
{
// fill in parameter data
// fill in parameter data
lBytesReturned
=
0
;
lBytesReturned
=
0
;
...
@@ -588,10 +682,13 @@ short DevGetTaskState(unsigned short usDevNumber, unsigned short usNumber,
...
@@ -588,10 +682,13 @@ short DevGetTaskState(unsigned short usDevNumber, unsigned short usNumber,
// memcpy( tBuffer.TaskState, pvData, usSize);
// memcpy( tBuffer.TaskState, pvData, usSize);
tBuffer
.
sError
=
sRet
;
tBuffer
.
sError
=
sRet
;
// activate function
// activate function
if
(
!
ioctl
(
hDevDrv
,
CIF_IOCTLTASKSTATE
,
(
unsigned
long
)(
&
tBuffer
)))
{
if
(
!
ioctl
(
hDevDrv
,
CIF_IOCTLTASKSTATE
,
(
unsigned
long
)(
&
tBuffer
)))
{
// fprintf(stderr, "CIF_IOCTLTASKSTATE: %s\n", strerror(errno));
// fprintf(stderr, "CIF_IOCTLTASKSTATE: %s\n", strerror(errno));
sRet
=
DRV_USR_COMM_ERR
;
sRet
=
DRV_USR_COMM_ERR
;
}
else
{
}
else
{
memcpy
(
pvData
,
tBuffer
.
TaskState
,
usSize
);
memcpy
(
pvData
,
tBuffer
.
TaskState
,
usSize
);
sRet
=
tBuffer
.
sError
;
sRet
=
tBuffer
.
sError
;
}
}
...
@@ -621,11 +718,16 @@ short DevGetMBXState(unsigned short usDevNumber, unsigned short* pusDevMbxState,
...
@@ -621,11 +718,16 @@ short DevGetMBXState(unsigned short usDevNumber, unsigned short* pusDevMbxState,
short
sRet
=
DRV_NO_ERROR
;
short
sRet
=
DRV_NO_ERROR
;
// valid handle available, driver is open
// valid handle available, driver is open
if
(
hDevDrv
==
INVALID_HANDLE_VALUE
)
{
if
(
hDevDrv
==
INVALID_HANDLE_VALUE
)
{
sRet
=
DRV_USR_NOT_INITIALIZED
;
sRet
=
DRV_USR_NOT_INITIALIZED
;
}
else
if
(
usDevNumber
>=
MAX_DEV_BOARDS
)
{
}
else
if
(
usDevNumber
>=
MAX_DEV_BOARDS
)
{
sRet
=
DRV_USR_DEV_NUMBER_INVALID
;
sRet
=
DRV_USR_DEV_NUMBER_INVALID
;
}
else
{
}
else
{
// fill in parameter data
// fill in parameter data
lBytesReturned
=
0
;
lBytesReturned
=
0
;
// set output buffer
// set output buffer
...
@@ -634,10 +736,13 @@ short DevGetMBXState(unsigned short usDevNumber, unsigned short* pusDevMbxState,
...
@@ -634,10 +736,13 @@ short DevGetMBXState(unsigned short usDevNumber, unsigned short* pusDevMbxState,
tBuffer
.
usHostMbxState
=
0x00
;
//*pusHostMbxState;
tBuffer
.
usHostMbxState
=
0x00
;
//*pusHostMbxState;
tBuffer
.
sError
=
sRet
;
tBuffer
.
sError
=
sRet
;
// activate function
// activate function
if
(
!
ioctl
(
hDevDrv
,
CIF_IOCTLMBXINFO
,
(
unsigned
long
)(
&
tBuffer
)))
{
if
(
!
ioctl
(
hDevDrv
,
CIF_IOCTLMBXINFO
,
(
unsigned
long
)(
&
tBuffer
)))
{
// fprintf(stderr, "CIF_IOCTLMBXINFO: %s\n", strerror(errno));
// fprintf(stderr, "CIF_IOCTLMBXINFO: %s\n", strerror(errno));
sRet
=
DRV_USR_COMM_ERR
;
sRet
=
DRV_USR_COMM_ERR
;
}
else
{
}
else
{
*
pusDevMbxState
=
tBuffer
.
usDevMbxState
;
*
pusDevMbxState
=
tBuffer
.
usDevMbxState
;
*
pusHostMbxState
=
tBuffer
.
usHostMbxState
;
*
pusHostMbxState
=
tBuffer
.
usHostMbxState
;
sRet
=
tBuffer
.
sError
;
sRet
=
tBuffer
.
sError
;
...
@@ -669,16 +774,24 @@ short DevGetMBXData(unsigned short usDevNumber, unsigned short usHostSize,
...
@@ -669,16 +774,24 @@ short DevGetMBXData(unsigned short usDevNumber, unsigned short usHostSize,
short
sRet
=
DRV_NO_ERROR
;
short
sRet
=
DRV_NO_ERROR
;
// valid handle available, driver is open
// valid handle available, driver is open
if
(
hDevDrv
==
INVALID_HANDLE_VALUE
)
{
if
(
hDevDrv
==
INVALID_HANDLE_VALUE
)
{
sRet
=
DRV_USR_NOT_INITIALIZED
;
sRet
=
DRV_USR_NOT_INITIALIZED
;
}
else
if
(
usDevNumber
>=
MAX_DEV_BOARDS
)
{
}
else
if
(
usDevNumber
>=
MAX_DEV_BOARDS
)
{
sRet
=
DRV_USR_DEV_NUMBER_INVALID
;
sRet
=
DRV_USR_DEV_NUMBER_INVALID
;
}
else
if
((
usHostSize
==
0
)
||
(
usDevSize
==
0
))
{
}
else
if
((
usHostSize
==
0
)
||
(
usDevSize
==
0
))
{
sRet
=
DRV_USR_SIZE_ZERO
;
sRet
=
DRV_USR_SIZE_ZERO
;
}
else
if
((
usHostSize
>
sizeof
(
MSG_STRUC
))
}
||
(
usDevSize
>
sizeof
(
MSG_STRUC
)))
{
else
if
((
usHostSize
>
sizeof
(
MSG_STRUC
))
||
(
usDevSize
>
sizeof
(
MSG_STRUC
)))
{
sRet
=
DRV_USR_SIZE_TOO_LONG
;
sRet
=
DRV_USR_SIZE_TOO_LONG
;
}
else
{
}
else
{
// fill in parameter data
// fill in parameter data
lBytesReturned
=
0
;
lBytesReturned
=
0
;
...
@@ -705,7 +818,9 @@ short DevGetMBXData(unsigned short usDevNumber, unsigned short usHostSize,
...
@@ -705,7 +818,9 @@ short DevGetMBXData(unsigned short usDevNumber, unsigned short usHostSize,
// fprintf(stderr, "CIF_IOCTLGETMBX: %s\n", strerror(errno));
// fprintf(stderr, "CIF_IOCTLGETMBX: %s\n", strerror(errno));
// function error
// function error
sRet
=
DRV_USR_COMM_ERR
;
sRet
=
DRV_USR_COMM_ERR
;
}
else
{
}
else
{
printf
(
"cif_api::DevGetMBXData: after CIF_IOCTLGETMBX ...
\n
"
);
printf
(
"cif_api::DevGetMBXData: after CIF_IOCTLGETMBX ...
\n
"
);
memcpy
(
pvDevData
,
tBuffer
.
abDevMbx
,
usDevSize
);
memcpy
(
pvDevData
,
tBuffer
.
abDevMbx
,
usDevSize
);
printf
(
"cif_api::DevGetMBXData: after memcpy ...
\n
"
);
printf
(
"cif_api::DevGetMBXData: after memcpy ...
\n
"
);
...
@@ -736,12 +851,17 @@ short DevExitBoard(unsigned short usDevNumber)
...
@@ -736,12 +851,17 @@ short DevExitBoard(unsigned short usDevNumber)
unsigned
short
usDrvOpenCount
=
0
;
unsigned
short
usDrvOpenCount
=
0
;
short
sRet
=
DRV_NO_ERROR
;
short
sRet
=
DRV_NO_ERROR
;
if
(
hDevDrv
==
INVALID_HANDLE_VALUE
)
{
if
(
hDevDrv
==
INVALID_HANDLE_VALUE
)
{
sRet
=
DRV_USR_NOT_INITIALIZED
;
sRet
=
DRV_USR_NOT_INITIALIZED
;
}
else
if
(
usDevNumber
>=
MAX_DEV_BOARDS
)
{
}
else
if
(
usDevNumber
>=
MAX_DEV_BOARDS
)
{
// number is invalid
// number is invalid
sRet
=
DRV_USR_DEV_NUMBER_INVALID
;
sRet
=
DRV_USR_DEV_NUMBER_INVALID
;
}
else
{
}
else
{
// valid handle available, driver is open
// valid handle available, driver is open
// clear all data buffers
// clear all data buffers
lBytesReturned
=
0
;
lBytesReturned
=
0
;
...
@@ -749,10 +869,13 @@ short DevExitBoard(unsigned short usDevNumber)
...
@@ -749,10 +869,13 @@ short DevExitBoard(unsigned short usDevNumber)
// tBuffer.usDrvOpenCount = usDrvOpenCount; // [out]
// tBuffer.usDrvOpenCount = usDrvOpenCount; // [out]
// tBuffer.sError = sRet; // [out]
// tBuffer.sError = sRet; // [out]
if
(
!
ioctl
(
hDevDrv
,
CIF_IOCTLEXITDRV
,
(
unsigned
long
)(
&
tBuffer
)))
{
if
(
!
ioctl
(
hDevDrv
,
CIF_IOCTLEXITDRV
,
(
unsigned
long
)(
&
tBuffer
)))
{
// fprintf(stderr, "CIF_IOCTLEXITDRV: %s\n", strerror(errno));
// fprintf(stderr, "CIF_IOCTLEXITDRV: %s\n", strerror(errno));
sRet
=
DRV_USR_COMM_ERR
;
sRet
=
DRV_USR_COMM_ERR
;
}
else
{
}
else
{
tBuffer
.
usDrvOpenCount
=
usDrvOpenCount
;
// [out]
tBuffer
.
usDrvOpenCount
=
usDrvOpenCount
;
// [out]
sRet
=
tBuffer
.
sError
;
// [out]
sRet
=
tBuffer
.
sError
;
// [out]
}
}
...
@@ -784,15 +907,22 @@ short DevReadSendData(unsigned short usDevNumber, unsigned short usOffset,
...
@@ -784,15 +907,22 @@ short DevReadSendData(unsigned short usDevNumber, unsigned short usOffset,
short
sRet
=
DRV_NO_ERROR
;
short
sRet
=
DRV_NO_ERROR
;
// valid handle available, driver is open
// valid handle available, driver is open
if
(
hDevDrv
==
INVALID_HANDLE_VALUE
)
{
if
(
hDevDrv
==
INVALID_HANDLE_VALUE
)
{
sRet
=
DRV_USR_NOT_INITIALIZED
;
sRet
=
DRV_USR_NOT_INITIALIZED
;
}
else
if
(
usDevNumber
>=
MAX_DEV_BOARDS
)
{
}
else
if
(
usDevNumber
>=
MAX_DEV_BOARDS
)
{
sRet
=
DRV_USR_DEV_NUMBER_INVALID
;
sRet
=
DRV_USR_DEV_NUMBER_INVALID
;
}
else
if
((
usSize
!=
0
)
}
&&
((
usSize
+
usOffset
)
else
if
((
usSize
!=
0
)
&&
>
(
unsigned
short
)
tDevDPMSize
[
usDevNumber
].
ulDpmIOSize
))
{
((
usSize
+
usOffset
)
>
(
unsigned
short
)
tDevDPMSize
[
usDevNumber
].
ulDpmIOSize
))
{
sRet
=
DRV_USR_SIZE_TOO_LONG
;
sRet
=
DRV_USR_SIZE_TOO_LONG
;
}
else
{
}
else
{
// fill in parameter data
// fill in parameter data
lBytesReturned
=
0
;
lBytesReturned
=
0
;
// set output buffer
// set output buffer
...
@@ -803,10 +933,13 @@ short DevReadSendData(unsigned short usDevNumber, unsigned short usOffset,
...
@@ -803,10 +933,13 @@ short DevReadSendData(unsigned short usDevNumber, unsigned short usOffset,
tBuffer
.
sError
=
sRet
;
tBuffer
.
sError
=
sRet
;
// activate function
// activate function
if
(
!
ioctl
(
hDevDrv
,
CIF_IOCTLREADSEND
,
(
unsigned
long
)(
&
tBuffer
)))
{
if
(
!
ioctl
(
hDevDrv
,
CIF_IOCTLREADSEND
,
(
unsigned
long
)(
&
tBuffer
)))
{
// fprintf(stderr, "CIF_IOCTLREADSEND: %s\n", strerror(errno));
// fprintf(stderr, "CIF_IOCTLREADSEND: %s\n", strerror(errno));
sRet
=
DRV_USR_COMM_ERR
;
sRet
=
DRV_USR_COMM_ERR
;
}
else
{
}
else
{
sRet
=
tBuffer
.
sError
;
sRet
=
tBuffer
.
sError
;
}
}
}
}
...
@@ -834,13 +967,20 @@ short DevTriggerWatchDog(unsigned short usDevNumber, unsigned short usMode,
...
@@ -834,13 +967,20 @@ short DevTriggerWatchDog(unsigned short usDevNumber, unsigned short usMode,
unsigned
int
lBytesReturned
;
unsigned
int
lBytesReturned
;
short
sRet
=
DRV_NO_ERROR
;
short
sRet
=
DRV_NO_ERROR
;
// valid handle available, driver is open
// valid handle available, driver is open
if
(
hDevDrv
==
INVALID_HANDLE_VALUE
)
{
if
(
hDevDrv
==
INVALID_HANDLE_VALUE
)
{
sRet
=
DRV_USR_NOT_INITIALIZED
;
sRet
=
DRV_USR_NOT_INITIALIZED
;
}
else
if
(
usDevNumber
>=
MAX_DEV_BOARDS
)
{
}
else
if
(
usDevNumber
>=
MAX_DEV_BOARDS
)
{
sRet
=
DRV_USR_DEV_NUMBER_INVALID
;
sRet
=
DRV_USR_DEV_NUMBER_INVALID
;
}
else
if
(
usMode
>
WATCHDOG_START
)
{
}
else
if
(
usMode
>
WATCHDOG_START
)
{
sRet
=
DRV_USR_MODE_INVALID
;
sRet
=
DRV_USR_MODE_INVALID
;
}
else
{
}
else
{
// fill in parameter data
// fill in parameter data
lBytesReturned
=
0
;
lBytesReturned
=
0
;
// set output buffer
// set output buffer
...
@@ -850,10 +990,13 @@ short DevTriggerWatchDog(unsigned short usDevNumber, unsigned short usMode,
...
@@ -850,10 +990,13 @@ short DevTriggerWatchDog(unsigned short usDevNumber, unsigned short usMode,
tBuffer
.
sError
=
sRet
;
tBuffer
.
sError
=
sRet
;
// activate function
// activate function
if
(
!
ioctl
(
hDevDrv
,
CIF_IOCTLTRIGGERWD
,
(
unsigned
long
)(
&
tBuffer
)))
{
if
(
!
ioctl
(
hDevDrv
,
CIF_IOCTLTRIGGERWD
,
(
unsigned
long
)(
&
tBuffer
)))
{
// fprintf(stderr, "CIF_IOCTLREADSEND: %s\n", strerror(errno));
// fprintf(stderr, "CIF_IOCTLREADSEND: %s\n", strerror(errno));
sRet
=
DRV_USR_COMM_ERR
;
sRet
=
DRV_USR_COMM_ERR
;
}
else
{
}
else
{
*
pusDevWatchDog
=
tBuffer
.
usTriggerValue
;
*
pusDevWatchDog
=
tBuffer
.
usTriggerValue
;
sRet
=
tBuffer
.
sError
;
sRet
=
tBuffer
.
sError
;
}
}
...
@@ -883,13 +1026,20 @@ short DevSpecialControl(unsigned short usDevNumber, unsigned short usMode,
...
@@ -883,13 +1026,20 @@ short DevSpecialControl(unsigned short usDevNumber, unsigned short usMode,
unsigned
int
lBytesReturned
;
unsigned
int
lBytesReturned
;
short
sRet
=
DRV_NO_ERROR
;
short
sRet
=
DRV_NO_ERROR
;
// valid handle available, driver is open
// valid handle available, driver is open
if
(
hDevDrv
==
INVALID_HANDLE_VALUE
)
{
if
(
hDevDrv
==
INVALID_HANDLE_VALUE
)
{
sRet
=
DRV_USR_NOT_INITIALIZED
;
sRet
=
DRV_USR_NOT_INITIALIZED
;
}
else
if
(
usDevNumber
>=
MAX_DEV_BOARDS
)
{
}
else
if
(
usDevNumber
>=
MAX_DEV_BOARDS
)
{
sRet
=
DRV_USR_DEV_NUMBER_INVALID
;
sRet
=
DRV_USR_DEV_NUMBER_INVALID
;
}
else
if
(
pusCtrlAck
==
NULL
)
{
}
else
if
(
pusCtrlAck
==
NULL
)
{
sRet
=
DRV_USR_BUF_PTR_NULL
;
sRet
=
DRV_USR_BUF_PTR_NULL
;
}
else
{
}
else
{
// fill in parameter data
// fill in parameter data
lBytesReturned
=
0
;
lBytesReturned
=
0
;
// set output buffer
// set output buffer
...
@@ -898,10 +1048,13 @@ short DevSpecialControl(unsigned short usDevNumber, unsigned short usMode,
...
@@ -898,10 +1048,13 @@ short DevSpecialControl(unsigned short usDevNumber, unsigned short usMode,
tBuffer
.
sError
=
sRet
;
tBuffer
.
sError
=
sRet
;
// activate function
// activate function
if
(
!
ioctl
(
hDevDrv
,
CIF_IOCTLSPCONTROL
,
(
unsigned
long
)(
&
tBuffer
)))
{
if
(
!
ioctl
(
hDevDrv
,
CIF_IOCTLSPCONTROL
,
(
unsigned
long
)(
&
tBuffer
)))
{
// fprintf(stderr, "CIF_IOCTLREADSEND: %s\n", strerror(errno));
// fprintf(stderr, "CIF_IOCTLREADSEND: %s\n", strerror(errno));
sRet
=
DRV_USR_COMM_ERR
;
sRet
=
DRV_USR_COMM_ERR
;
}
else
{
}
else
{
*
pusCtrlAck
=
tBuffer
.
usTriggerValue
;
*
pusCtrlAck
=
tBuffer
.
usTriggerValue
;
sRet
=
tBuffer
.
sError
;
sRet
=
tBuffer
.
sError
;
}
}
...
@@ -932,17 +1085,28 @@ short DevExtendedData(unsigned short usDevNumber, unsigned short usMode,
...
@@ -932,17 +1085,28 @@ short DevExtendedData(unsigned short usDevNumber, unsigned short usMode,
unsigned
int
lBytesReturned
;
unsigned
int
lBytesReturned
;
short
sRet
=
DRV_NO_ERROR
;
short
sRet
=
DRV_NO_ERROR
;
// valid handle available, driver is open
// valid handle available, driver is open
if
(
hDevDrv
==
INVALID_HANDLE_VALUE
)
{
if
(
hDevDrv
==
INVALID_HANDLE_VALUE
)
{
sRet
=
DRV_USR_NOT_INITIALIZED
;
sRet
=
DRV_USR_NOT_INITIALIZED
;
}
else
if
(
usDevNumber
>=
MAX_DEV_BOARDS
)
{
}
else
if
(
usDevNumber
>=
MAX_DEV_BOARDS
)
{
sRet
=
DRV_USR_DEV_NUMBER_INVALID
;
sRet
=
DRV_USR_DEV_NUMBER_INVALID
;
}
else
if
(
usSize
==
0
)
{
}
else
if
(
usSize
==
0
)
{
sRet
=
DRV_USR_SIZE_ZERO
;
sRet
=
DRV_USR_SIZE_ZERO
;
}
else
if
(
usSize
>
EXTDATASIZE
)
{
}
else
if
(
usSize
>
EXTDATASIZE
)
{
sRet
=
DRV_USR_SIZE_TOO_LONG
;
sRet
=
DRV_USR_SIZE_TOO_LONG
;
}
else
if
((
usMode
==
0
)
||
(
usMode
>
100
))
{
}
else
if
((
usMode
==
0
)
||
(
usMode
>
100
))
{
sRet
=
DRV_USR_MODE_INVALID
;
sRet
=
DRV_USR_MODE_INVALID
;
}
else
{
}
else
{
// fill in parameter data
// fill in parameter data
lBytesReturned
=
0
;
lBytesReturned
=
0
;
...
@@ -957,10 +1121,12 @@ short DevExtendedData(unsigned short usDevNumber, unsigned short usMode,
...
@@ -957,10 +1121,12 @@ short DevExtendedData(unsigned short usDevNumber, unsigned short usMode,
// error into the tDataBuffer.
// error into the tDataBuffer.
sRet
=
DRV_USR_COMM_ERR
;
sRet
=
DRV_USR_COMM_ERR
;
// activate function
// activate function
if
(
!
ioctl
(
hDevDrv
,
CIF_IOCTLEXTDATA
,
(
unsigned
long
)(
&
tBuffer
)))
{
if
(
!
ioctl
(
hDevDrv
,
CIF_IOCTLEXTDATA
,
(
unsigned
long
)(
&
tBuffer
)))
{
// fprintf(stderr, "CIF_IOCTLEXTDATA: %s\n", strerror(errno));
// fprintf(stderr, "CIF_IOCTLEXTDATA: %s\n", strerror(errno));
sRet
=
DRV_USR_COMM_ERR
;
sRet
=
DRV_USR_COMM_ERR
;
}
else
}
else
sRet
=
tBuffer
.
sError
;
sRet
=
tBuffer
.
sError
;
}
}
return
sRet
;
return
sRet
;
...
@@ -990,17 +1156,28 @@ short DevGetTaskParameter(unsigned short usDevNumber, unsigned short usNumber,
...
@@ -990,17 +1156,28 @@ short DevGetTaskParameter(unsigned short usDevNumber, unsigned short usNumber,
short
sRet
=
DRV_NO_ERROR
;
short
sRet
=
DRV_NO_ERROR
;
// valid handle available, driver is open
// valid handle available, driver is open
if
(
hDevDrv
==
INVALID_HANDLE_VALUE
)
{
if
(
hDevDrv
==
INVALID_HANDLE_VALUE
)
{
sRet
=
DRV_USR_NOT_INITIALIZED
;
sRet
=
DRV_USR_NOT_INITIALIZED
;
}
else
if
(
usDevNumber
>=
MAX_DEV_BOARDS
)
{
}
else
if
(
usDevNumber
>=
MAX_DEV_BOARDS
)
{
sRet
=
DRV_USR_DEV_NUMBER_INVALID
;
sRet
=
DRV_USR_DEV_NUMBER_INVALID
;
}
else
if
((
usNumber
<
1
)
||
(
usNumber
>
2
))
{
}
else
if
((
usNumber
<
1
)
||
(
usNumber
>
2
))
{
sRet
=
DRV_USR_NUMBER_INVALID
;
sRet
=
DRV_USR_NUMBER_INVALID
;
}
else
if
(
usSize
==
0
)
{
}
else
if
(
usSize
==
0
)
{
sRet
=
DRV_USR_SIZE_ZERO
;
sRet
=
DRV_USR_SIZE_ZERO
;
}
else
if
(
usSize
>
sizeof
(
TASKPARAM
))
{
}
else
if
(
usSize
>
sizeof
(
TASKPARAM
))
{
sRet
=
DRV_USR_SIZE_TOO_LONG
;
sRet
=
DRV_USR_SIZE_TOO_LONG
;
}
else
{
}
else
{
// fill in parameter data
// fill in parameter data
lBytesReturned
=
0
;
lBytesReturned
=
0
;
// set command buffer
// set command buffer
...
@@ -1010,10 +1187,13 @@ short DevGetTaskParameter(unsigned short usDevNumber, unsigned short usNumber,
...
@@ -1010,10 +1187,13 @@ short DevGetTaskParameter(unsigned short usDevNumber, unsigned short usNumber,
// tBuffer.ptTaskParam = pvData;
// tBuffer.ptTaskParam = pvData;
tBuffer
.
sError
=
sRet
;
tBuffer
.
sError
=
sRet
;
// activate function
// activate function
if
(
!
ioctl
(
hDevDrv
,
CIF_IOCTLGETPARAMETER
,
(
unsigned
long
)(
&
tBuffer
)))
{
if
(
!
ioctl
(
hDevDrv
,
CIF_IOCTLGETPARAMETER
,
(
unsigned
long
)(
&
tBuffer
)))
{
// fprintf(stderr, "CIF_IOCTLGETPARAMETER: %s\n", strerror(errno));
// fprintf(stderr, "CIF_IOCTLGETPARAMETER: %s\n", strerror(errno));
sRet
=
DRV_USR_COMM_ERR
;
sRet
=
DRV_USR_COMM_ERR
;
}
else
{
}
else
{
memcpy
((
unsigned
char
*
)
pvData
,
(
unsigned
char
*
)
&
(
tBuffer
.
TaskParameter
),
memcpy
((
unsigned
char
*
)
pvData
,
(
unsigned
char
*
)
&
(
tBuffer
.
TaskParameter
),
usSize
);
usSize
);
sRet
=
tBuffer
.
sError
;
sRet
=
tBuffer
.
sError
;
...
@@ -1036,25 +1216,35 @@ short DevGetTaskParameter(unsigned short usDevNumber, unsigned short usNumber,
...
@@ -1036,25 +1216,35 @@ short DevGetTaskParameter(unsigned short usDevNumber, unsigned short usNumber,
<En> */
<En> */
short
DevReadWriteDPMData
(
unsigned
short
usDevNumber
,
unsigned
short
usMode
,
short
DevReadWriteDPMData
(
unsigned
short
usDevNumber
,
unsigned
short
usMode
,
unsigned
short
usOffset
,
unsigned
short
usSize
,
void
*
pvData
)
unsigned
short
usOffset
,
unsigned
short
usSize
,
void
*
pvData
)
{
{
DEVIO_RWDPMDATACMD
tBuffer
;
DEVIO_RWDPMDATACMD
tBuffer
;
unsigned
int
lBytesReturned
;
unsigned
int
lBytesReturned
;
short
sRet
=
DRV_NO_ERROR
;
short
sRet
=
DRV_NO_ERROR
;
// valid handle available, driver is open
// valid handle available, driver is open
if
(
hDevDrv
==
INVALID_HANDLE_VALUE
)
{
if
(
hDevDrv
==
INVALID_HANDLE_VALUE
)
{
sRet
=
DRV_USR_NOT_INITIALIZED
;
sRet
=
DRV_USR_NOT_INITIALIZED
;
}
else
if
(
usDevNumber
>=
MAX_DEV_BOARDS
)
{
}
else
if
(
usDevNumber
>=
MAX_DEV_BOARDS
)
{
sRet
=
DRV_USR_DEV_NUMBER_INVALID
;
sRet
=
DRV_USR_DEV_NUMBER_INVALID
;
}
else
if
((
usMode
!=
PARAMETER_READ
)
&&
(
usMode
!=
PARAMETER_WRITE
))
{
}
else
if
((
usMode
!=
PARAMETER_READ
)
&&
(
usMode
!=
PARAMETER_WRITE
))
{
sRet
=
DRV_USR_MODE_INVALID
;
sRet
=
DRV_USR_MODE_INVALID
;
}
else
if
((
usSize
!=
0
)
}
&&
((
usSize
+
usOffset
)
else
if
((
usSize
!=
0
)
&&
>
(
unsigned
short
)(
tDevDPMSize
[
usDevNumber
].
ulDpmSize
*
1024
)))
{
((
usSize
+
usOffset
)
>
(
unsigned
short
)(
tDevDPMSize
[
usDevNumber
].
ulDpmSize
*
1024
)))
{
sRet
=
DRV_USR_SIZE_TOO_LONG
;
sRet
=
DRV_USR_SIZE_TOO_LONG
;
;
;
}
else
{
}
else
{
// fill in parameter data
// fill in parameter data
lBytesReturned
=
0
;
lBytesReturned
=
0
;
tBuffer
.
usBoard
=
usDevNumber
;
tBuffer
.
usBoard
=
usDevNumber
;
...
@@ -1065,10 +1255,12 @@ short DevReadWriteDPMData(unsigned short usDevNumber, unsigned short usMode,
...
@@ -1065,10 +1255,12 @@ short DevReadWriteDPMData(unsigned short usDevNumber, unsigned short usMode,
tBuffer
.
sError
=
sRet
;
tBuffer
.
sError
=
sRet
;
// activate function
// activate function
if
(
!
ioctl
(
hDevDrv
,
CIF_IOCTLRWDPMDATA
,
(
unsigned
long
)(
&
tBuffer
)))
{
if
(
!
ioctl
(
hDevDrv
,
CIF_IOCTLRWDPMDATA
,
(
unsigned
long
)(
&
tBuffer
)))
{
// fprintf(stderr, "CIF_IOCTLRWDPMDATA: %s\n", strerror(errno));
// fprintf(stderr, "CIF_IOCTLRWDPMDATA: %s\n", strerror(errno));
sRet
=
DRV_USR_COMM_ERR
;
sRet
=
DRV_USR_COMM_ERR
;
}
else
}
else
sRet
=
tBuffer
.
sError
;
sRet
=
tBuffer
.
sError
;
}
/* endif */
}
/* endif */
return
sRet
;
return
sRet
;
...
@@ -1091,22 +1283,32 @@ short DevReadWriteDPMData(unsigned short usDevNumber, unsigned short usMode,
...
@@ -1091,22 +1283,32 @@ short DevReadWriteDPMData(unsigned short usDevNumber, unsigned short usMode,
<En> */
<En> */
short
DevReadWriteDPMRaw
(
unsigned
short
usDevNumber
,
unsigned
short
usMode
,
short
DevReadWriteDPMRaw
(
unsigned
short
usDevNumber
,
unsigned
short
usMode
,
unsigned
short
usOffset
,
unsigned
short
usSize
,
void
*
pvData
)
unsigned
short
usOffset
,
unsigned
short
usSize
,
void
*
pvData
)
{
{
DEVIO_RWRAWDATACMD
tBuffer
;
DEVIO_RWRAWDATACMD
tBuffer
;
unsigned
int
lBytesReturned
;
unsigned
int
lBytesReturned
;
short
sRet
=
DRV_NO_ERROR
;
short
sRet
=
DRV_NO_ERROR
;
// valid handle available, driver is open
// valid handle available, driver is open
if
(
hDevDrv
==
INVALID_HANDLE_VALUE
)
{
if
(
hDevDrv
==
INVALID_HANDLE_VALUE
)
{
sRet
=
DRV_USR_NOT_INITIALIZED
;
sRet
=
DRV_USR_NOT_INITIALIZED
;
}
else
if
(
usDevNumber
>=
MAX_DEV_BOARDS
)
{
}
else
if
(
usDevNumber
>=
MAX_DEV_BOARDS
)
{
sRet
=
DRV_USR_DEV_NUMBER_INVALID
;
sRet
=
DRV_USR_DEV_NUMBER_INVALID
;
}
else
if
((
usSize
+
usOffset
)
>
sizeof
(
RAWDATA
))
{
}
else
if
((
usSize
+
usOffset
)
>
sizeof
(
RAWDATA
))
{
sRet
=
DRV_USR_SIZE_TOO_LONG
;
sRet
=
DRV_USR_SIZE_TOO_LONG
;
}
else
if
((
usMode
!=
PARAMETER_READ
)
&&
(
usMode
!=
PARAMETER_WRITE
))
{
}
else
if
((
usMode
!=
PARAMETER_READ
)
&&
(
usMode
!=
PARAMETER_WRITE
))
{
sRet
=
DRV_USR_MODE_INVALID
;
sRet
=
DRV_USR_MODE_INVALID
;
}
else
{
}
else
{
// fill in parameter data
// fill in parameter data
lBytesReturned
=
0
;
lBytesReturned
=
0
;
tBuffer
.
usBoard
=
usDevNumber
;
tBuffer
.
usBoard
=
usDevNumber
;
...
@@ -1117,10 +1319,12 @@ short DevReadWriteDPMRaw(unsigned short usDevNumber, unsigned short usMode,
...
@@ -1117,10 +1319,12 @@ short DevReadWriteDPMRaw(unsigned short usDevNumber, unsigned short usMode,
tBuffer
.
sError
=
sRet
;
tBuffer
.
sError
=
sRet
;
// activate function
// activate function
if
(
!
ioctl
(
hDevDrv
,
CIF_IOCTLRWRAW
,
(
unsigned
long
)(
&
tBuffer
)))
{
if
(
!
ioctl
(
hDevDrv
,
CIF_IOCTLRWRAW
,
(
unsigned
long
)(
&
tBuffer
)))
{
// fprintf(stderr, "CIF_IOCTLRWRAW: %s\n", strerror(errno));
// fprintf(stderr, "CIF_IOCTLRWRAW: %s\n", strerror(errno));
sRet
=
DRV_USR_COMM_ERR
;
sRet
=
DRV_USR_COMM_ERR
;
}
else
}
else
sRet
=
tBuffer
.
sError
;
sRet
=
tBuffer
.
sError
;
}
/* endif */
}
/* endif */
return
sRet
;
return
sRet
;
...
@@ -1142,27 +1346,38 @@ short DevReadWriteDPMRaw(unsigned short usDevNumber, unsigned short usMode,
...
@@ -1142,27 +1346,38 @@ short DevReadWriteDPMRaw(unsigned short usDevNumber, unsigned short usMode,
<En> */
<En> */
short
DevExchangeIO
(
unsigned
short
usDevNumber
,
unsigned
short
usSendOffset
,
short
DevExchangeIO
(
unsigned
short
usDevNumber
,
unsigned
short
usSendOffset
,
unsigned
short
usSendSize
,
void
*
pvSendData
,
unsigned
short
usReceiveOffset
,
unsigned
short
usSendSize
,
void
*
pvSendData
,
unsigned
short
usReceiveSize
,
void
*
pvReceiveData
,
unsigned
long
ulTimeout
)
unsigned
short
usReceiveOffset
,
unsigned
short
usReceiveSize
,
void
*
pvReceiveData
,
unsigned
long
ulTimeout
)
{
{
DEVIO_EXIOCMD
tBuffer
;
DEVIO_EXIOCMD
tBuffer
;
unsigned
int
lBytesReturned
;
unsigned
int
lBytesReturned
;
short
sRet
=
DRV_NO_ERROR
;
short
sRet
=
DRV_NO_ERROR
;
int
lRet
=
0
;
int
lRet
=
0
;
// valid handle available, driver is open
// valid handle available, driver is open
if
(
hDevDrv
==
INVALID_HANDLE_VALUE
)
{
if
(
hDevDrv
==
INVALID_HANDLE_VALUE
)
{
sRet
=
DRV_USR_NOT_INITIALIZED
;
sRet
=
DRV_USR_NOT_INITIALIZED
;
}
else
if
(
usDevNumber
>=
MAX_DEV_BOARDS
)
{
}
else
if
(
usDevNumber
>=
MAX_DEV_BOARDS
)
{
sRet
=
DRV_USR_DEV_NUMBER_INVALID
;
sRet
=
DRV_USR_DEV_NUMBER_INVALID
;
}
else
if
((
usSendSize
!=
0
)
}
&&
((
usSendSize
+
usSendOffset
)
else
if
((
usSendSize
!=
0
)
&&
>
(
unsigned
short
)
tDevDPMSize
[
usDevNumber
].
ulDpmIOSize
))
{
((
usSendSize
+
usSendOffset
)
>
(
unsigned
short
)
tDevDPMSize
[
usDevNumber
].
ulDpmIOSize
))
{
sRet
=
DRV_USR_SENDSIZE_TOO_LONG
;
sRet
=
DRV_USR_SENDSIZE_TOO_LONG
;
}
else
if
((
usReceiveSize
!=
0
)
}
&&
((
usReceiveSize
+
usReceiveOffset
)
else
if
((
usReceiveSize
!=
0
)
&&
>
(
unsigned
short
)
tDevDPMSize
[
usDevNumber
].
ulDpmIOSize
))
{
((
usReceiveSize
+
usReceiveOffset
)
>
(
unsigned
short
)
tDevDPMSize
[
usDevNumber
].
ulDpmIOSize
))
{
sRet
=
DRV_USR_RECVSIZE_TOO_LONG
;
sRet
=
DRV_USR_RECVSIZE_TOO_LONG
;
}
else
{
}
else
{
// fill in parameter data
// fill in parameter data
lBytesReturned
=
0
;
lBytesReturned
=
0
;
// set output buffer
// set output buffer
...
@@ -1178,10 +1393,12 @@ short DevExchangeIO(unsigned short usDevNumber, unsigned short usSendOffset,
...
@@ -1178,10 +1393,12 @@ short DevExchangeIO(unsigned short usDevNumber, unsigned short usSendOffset,
// activate function
// activate function
lRet
=
ioctl
(
hDevDrv
,
CIF_IOCTLEXIO
,
(
unsigned
long
)(
&
tBuffer
));
lRet
=
ioctl
(
hDevDrv
,
CIF_IOCTLEXIO
,
(
unsigned
long
)(
&
tBuffer
));
if
(
lRet
<=
0
)
{
if
(
lRet
<=
0
)
{
// fprintf(stderr, "CIF_IOCTLEXIO: %s\n", strerror(errno));
// fprintf(stderr, "CIF_IOCTLEXIO: %s\n", strerror(errno));
sRet
=
DRV_USR_COMM_ERR
;
sRet
=
DRV_USR_COMM_ERR
;
}
else
}
else
sRet
=
tBuffer
.
sError
;
sRet
=
tBuffer
.
sError
;
}
}
return
sRet
;
return
sRet
;
...
@@ -1204,9 +1421,10 @@ short DevExchangeIO(unsigned short usDevNumber, unsigned short usSendOffset,
...
@@ -1204,9 +1421,10 @@ short DevExchangeIO(unsigned short usDevNumber, unsigned short usSendOffset,
<En> */
<En> */
short
DevExchangeIOEx
(
unsigned
short
usDevNumber
,
unsigned
short
usMode
,
short
DevExchangeIOEx
(
unsigned
short
usDevNumber
,
unsigned
short
usMode
,
unsigned
short
usSendOffset
,
unsigned
short
usSendSize
,
void
*
pvSendData
,
unsigned
short
usSendOffset
,
unsigned
short
usSendSize
,
unsigned
short
usReceiveOffset
,
unsigned
short
usReceiveSize
,
void
*
pvSendData
,
unsigned
short
usReceiveOffset
,
void
*
pvReceiveData
,
unsigned
long
ulTimeout
)
unsigned
short
usReceiveSize
,
void
*
pvReceiveData
,
unsigned
long
ulTimeout
)
{
{
DEVIO_EXIOCMDEX
tBuffer
;
DEVIO_EXIOCMDEX
tBuffer
;
unsigned
int
lBytesReturned
;
unsigned
int
lBytesReturned
;
...
@@ -1214,21 +1432,32 @@ short DevExchangeIOEx(unsigned short usDevNumber, unsigned short usMode,
...
@@ -1214,21 +1432,32 @@ short DevExchangeIOEx(unsigned short usDevNumber, unsigned short usMode,
int
lRet
=
0
;
int
lRet
=
0
;
// valid handle available, driver is open
// valid handle available, driver is open
if
(
hDevDrv
==
INVALID_HANDLE_VALUE
)
{
if
(
hDevDrv
==
INVALID_HANDLE_VALUE
)
{
sRet
=
DRV_USR_NOT_INITIALIZED
;
sRet
=
DRV_USR_NOT_INITIALIZED
;
}
else
if
(
usDevNumber
>=
MAX_DEV_BOARDS
)
{
}
else
if
(
usDevNumber
>=
MAX_DEV_BOARDS
)
{
sRet
=
DRV_USR_DEV_NUMBER_INVALID
;
sRet
=
DRV_USR_DEV_NUMBER_INVALID
;
}
else
if
((
usSendSize
!=
0
)
}
&&
((
usSendSize
+
usSendOffset
)
else
if
((
usSendSize
!=
0
)
&&
>
(
unsigned
short
)
tDevDPMSize
[
usDevNumber
].
ulDpmIOSize
))
{
((
usSendSize
+
usSendOffset
)
>
(
unsigned
short
)
tDevDPMSize
[
usDevNumber
].
ulDpmIOSize
))
{
sRet
=
DRV_USR_SENDSIZE_TOO_LONG
;
sRet
=
DRV_USR_SENDSIZE_TOO_LONG
;
}
else
if
((
usReceiveSize
!=
0
)
}
&&
((
usReceiveSize
+
usReceiveOffset
)
else
if
((
usReceiveSize
!=
0
)
&&
>
(
unsigned
short
)
tDevDPMSize
[
usDevNumber
].
ulDpmIOSize
))
{
((
usReceiveSize
+
usReceiveOffset
)
>
(
unsigned
short
)
tDevDPMSize
[
usDevNumber
].
ulDpmIOSize
))
{
sRet
=
DRV_USR_RECVSIZE_TOO_LONG
;
sRet
=
DRV_USR_RECVSIZE_TOO_LONG
;
}
else
if
(
usMode
>
4
)
{
}
else
if
(
usMode
>
4
)
{
sRet
=
DRV_USR_MODE_INVALID
;
sRet
=
DRV_USR_MODE_INVALID
;
}
else
{
}
else
{
// fill in parameter data
// fill in parameter data
lBytesReturned
=
0
;
lBytesReturned
=
0
;
...
@@ -1246,10 +1475,12 @@ short DevExchangeIOEx(unsigned short usDevNumber, unsigned short usMode,
...
@@ -1246,10 +1475,12 @@ short DevExchangeIOEx(unsigned short usDevNumber, unsigned short usMode,
// activate function
// activate function
lRet
=
ioctl
(
hDevDrv
,
CIF_IOCTLEXIOEX
,
(
unsigned
long
)(
&
tBuffer
));
lRet
=
ioctl
(
hDevDrv
,
CIF_IOCTLEXIOEX
,
(
unsigned
long
)(
&
tBuffer
));
if
(
lRet
<=
0
)
{
if
(
lRet
<=
0
)
{
// fprintf(stderr, "CIF_IOCTLEXIO: %s\n", strerror(errno));
// fprintf(stderr, "CIF_IOCTLEXIO: %s\n", strerror(errno));
sRet
=
DRV_USR_COMM_ERR
;
sRet
=
DRV_USR_COMM_ERR
;
}
else
}
else
sRet
=
tBuffer
.
sError
;
sRet
=
tBuffer
.
sError
;
}
}
return
sRet
;
return
sRet
;
...
@@ -1272,9 +1503,10 @@ short DevExchangeIOEx(unsigned short usDevNumber, unsigned short usMode,
...
@@ -1272,9 +1503,10 @@ short DevExchangeIOEx(unsigned short usDevNumber, unsigned short usMode,
<En> */
<En> */
short
DevExchangeIOErr
(
unsigned
short
usDevNumber
,
unsigned
short
usSendOffset
,
short
DevExchangeIOErr
(
unsigned
short
usDevNumber
,
unsigned
short
usSendOffset
,
unsigned
short
usSendSize
,
void
*
pvSendData
,
unsigned
short
usReceiveOffset
,
unsigned
short
usSendSize
,
void
*
pvSendData
,
unsigned
short
usReceiveSize
,
void
*
pvReceiveData
,
COMSTATE
*
ptState
,
unsigned
short
usReceiveOffset
,
unsigned
long
ulTimeout
)
unsigned
short
usReceiveSize
,
void
*
pvReceiveData
,
COMSTATE
*
ptState
,
unsigned
long
ulTimeout
)
{
{
DEVIO_EXIOCMDERR
tBuffer
;
DEVIO_EXIOCMDERR
tBuffer
;
unsigned
int
lBytesReturned
;
unsigned
int
lBytesReturned
;
...
@@ -1282,19 +1514,28 @@ short DevExchangeIOErr(unsigned short usDevNumber, unsigned short usSendOffset,
...
@@ -1282,19 +1514,28 @@ short DevExchangeIOErr(unsigned short usDevNumber, unsigned short usSendOffset,
int
lRet
=
0
;
int
lRet
=
0
;
// valid handle available, driver is open
// valid handle available, driver is open
if
(
hDevDrv
==
INVALID_HANDLE_VALUE
)
{
if
(
hDevDrv
==
INVALID_HANDLE_VALUE
)
{
sRet
=
DRV_USR_NOT_INITIALIZED
;
sRet
=
DRV_USR_NOT_INITIALIZED
;
}
else
if
(
usDevNumber
>=
MAX_DEV_BOARDS
)
{
}
else
if
(
usDevNumber
>=
MAX_DEV_BOARDS
)
{
sRet
=
DRV_USR_DEV_NUMBER_INVALID
;
sRet
=
DRV_USR_DEV_NUMBER_INVALID
;
}
else
if
((
usSendSize
!=
0
)
}
&&
((
usSendSize
+
usSendOffset
)
else
if
((
usSendSize
!=
0
)
&&
>
(
unsigned
short
)
tDevDPMSize
[
usDevNumber
].
ulDpmIOSize
))
{
((
usSendSize
+
usSendOffset
)
>
(
unsigned
short
)
tDevDPMSize
[
usDevNumber
].
ulDpmIOSize
))
{
sRet
=
DRV_USR_SENDSIZE_TOO_LONG
;
sRet
=
DRV_USR_SENDSIZE_TOO_LONG
;
}
else
if
((
usReceiveSize
!=
0
)
}
&&
((
usReceiveSize
+
usReceiveOffset
)
else
if
((
usReceiveSize
!=
0
)
&&
>
(
unsigned
short
)
tDevDPMSize
[
usDevNumber
].
ulDpmIOSize
))
{
((
usReceiveSize
+
usReceiveOffset
)
>
(
unsigned
short
)
tDevDPMSize
[
usDevNumber
].
ulDpmIOSize
))
{
sRet
=
DRV_USR_RECVSIZE_TOO_LONG
;
sRet
=
DRV_USR_RECVSIZE_TOO_LONG
;
}
else
{
}
else
{
// fill in parameter data
// fill in parameter data
lBytesReturned
=
0
;
lBytesReturned
=
0
;
// set output buffer
// set output buffer
...
@@ -1311,10 +1552,12 @@ short DevExchangeIOErr(unsigned short usDevNumber, unsigned short usSendOffset,
...
@@ -1311,10 +1552,12 @@ short DevExchangeIOErr(unsigned short usDevNumber, unsigned short usSendOffset,
// activate function
// activate function
lRet
=
ioctl
(
hDevDrv
,
CIF_IOCTLEXIOERR
,
(
unsigned
long
)(
&
tBuffer
));
lRet
=
ioctl
(
hDevDrv
,
CIF_IOCTLEXIOERR
,
(
unsigned
long
)(
&
tBuffer
));
if
(
lRet
<=
0
)
{
if
(
lRet
<=
0
)
{
// fprintf(stderr, "CIF_IOCTLEXIO: %s\n", strerror(errno));
// fprintf(stderr, "CIF_IOCTLEXIO: %s\n", strerror(errno));
sRet
=
DRV_USR_COMM_ERR
;
sRet
=
DRV_USR_COMM_ERR
;
}
else
}
else
sRet
=
tBuffer
.
sError
;
sRet
=
tBuffer
.
sError
;
}
}
return
sRet
;
return
sRet
;
...
@@ -1334,21 +1577,28 @@ short DevExchangeIOErr(unsigned short usDevNumber, unsigned short usSendOffset,
...
@@ -1334,21 +1577,28 @@ short DevExchangeIOErr(unsigned short usDevNumber, unsigned short usSendOffset,
=================================================================================
=================================================================================
<En> */
<En> */
short
DevSetHostState
(
short
DevSetHostState
(
unsigned
short
usDevNumber
,
unsigned
short
usMode
,
unsigned
short
usDevNumber
,
unsigned
short
usMode
,
unsigned
long
ulTimeout
)
unsigned
long
ulTimeout
)
{
{
DEVIO_TRIGGERCMD
tBuffer
;
DEVIO_TRIGGERCMD
tBuffer
;
unsigned
int
lBytesReturned
;
unsigned
int
lBytesReturned
;
short
sRet
=
DRV_NO_ERROR
;
short
sRet
=
DRV_NO_ERROR
;
// valid handle available, driver is open
// valid handle available, driver is open
if
(
hDevDrv
==
INVALID_HANDLE_VALUE
)
{
if
(
hDevDrv
==
INVALID_HANDLE_VALUE
)
{
sRet
=
DRV_USR_NOT_INITIALIZED
;
sRet
=
DRV_USR_NOT_INITIALIZED
;
}
else
if
(
usDevNumber
>=
MAX_DEV_BOARDS
)
{
}
else
if
(
usDevNumber
>=
MAX_DEV_BOARDS
)
{
sRet
=
DRV_USR_DEV_NUMBER_INVALID
;
sRet
=
DRV_USR_DEV_NUMBER_INVALID
;
}
else
if
(
usMode
>
HOST_READY
)
{
}
else
if
(
usMode
>
HOST_READY
)
{
sRet
=
DRV_USR_MODE_INVALID
;
sRet
=
DRV_USR_MODE_INVALID
;
}
else
{
}
else
{
// fill in parameter data
// fill in parameter data
lBytesReturned
=
0
;
lBytesReturned
=
0
;
...
@@ -1358,10 +1608,12 @@ short DevSetHostState(
...
@@ -1358,10 +1608,12 @@ short DevSetHostState(
tBuffer
.
ulTimeout
=
ulTimeout
;
tBuffer
.
ulTimeout
=
ulTimeout
;
tBuffer
.
sError
=
sRet
;
tBuffer
.
sError
=
sRet
;
// activate function
// activate function
if
(
!
ioctl
(
hDevDrv
,
CIF_IOCTLSETHOST
,
(
unsigned
long
)(
&
tBuffer
)))
{
if
(
!
ioctl
(
hDevDrv
,
CIF_IOCTLSETHOST
,
(
unsigned
long
)(
&
tBuffer
)))
{
// fprintf(stderr, "CIF_IOCTLSETHOST: %s\n", strerror(errno));
// fprintf(stderr, "CIF_IOCTLSETHOST: %s\n", strerror(errno));
sRet
=
DRV_USR_COMM_ERR
;
sRet
=
DRV_USR_COMM_ERR
;
}
else
}
else
sRet
=
tBuffer
.
sError
;
sRet
=
tBuffer
.
sError
;
}
}
return
sRet
;
return
sRet
;
...
@@ -1382,19 +1634,24 @@ short DevSetHostState(
...
@@ -1382,19 +1634,24 @@ short DevSetHostState(
=================================================================================
=================================================================================
<En> */
<En> */
short
DevPutMessage
(
short
DevPutMessage
(
unsigned
short
usDevNumber
,
MSG_STRUC
*
ptMessage
,
unsigned
short
usDevNumber
,
MSG_STRUC
*
ptMessage
,
unsigned
long
ulTimeout
)
unsigned
long
ulTimeout
)
{
{
DEVIO_PUTMESSAGECMD
tBuffer
;
DEVIO_PUTMESSAGECMD
tBuffer
;
unsigned
int
lBytesReturned
;
unsigned
int
lBytesReturned
;
short
sRet
=
DRV_NO_ERROR
;
short
sRet
=
DRV_NO_ERROR
;
// valid handle available, driver is open
// valid handle available, driver is open
if
(
hDevDrv
==
INVALID_HANDLE_VALUE
)
{
if
(
hDevDrv
==
INVALID_HANDLE_VALUE
)
{
sRet
=
DRV_USR_NOT_INITIALIZED
;
sRet
=
DRV_USR_NOT_INITIALIZED
;
}
else
if
(
usDevNumber
>=
MAX_DEV_BOARDS
)
{
}
else
if
(
usDevNumber
>=
MAX_DEV_BOARDS
)
{
sRet
=
DRV_USR_DEV_NUMBER_INVALID
;
sRet
=
DRV_USR_DEV_NUMBER_INVALID
;
}
else
{
}
else
{
// fill in parameter data
// fill in parameter data
lBytesReturned
=
0
;
lBytesReturned
=
0
;
// set output buffer
// set output buffer
...
@@ -1404,10 +1661,12 @@ short DevPutMessage(
...
@@ -1404,10 +1661,12 @@ short DevPutMessage(
tBuffer
.
sError
=
sRet
;
tBuffer
.
sError
=
sRet
;
// activate function
// activate function
if
(
!
ioctl
(
hDevDrv
,
CIF_IOCTLPUTMSG
,
(
unsigned
long
)(
&
tBuffer
)))
{
if
(
!
ioctl
(
hDevDrv
,
CIF_IOCTLPUTMSG
,
(
unsigned
long
)(
&
tBuffer
)))
{
// fprintf(stderr, "CIF_IOCTLPUTMSG: %s\n", strerror(errno));
// fprintf(stderr, "CIF_IOCTLPUTMSG: %s\n", strerror(errno));
sRet
=
DRV_USR_COMM_ERR
;
sRet
=
DRV_USR_COMM_ERR
;
}
else
}
else
sRet
=
tBuffer
.
sError
;
sRet
=
tBuffer
.
sError
;
}
}
return
sRet
;
return
sRet
;
...
@@ -1438,13 +1697,20 @@ short DevGetMessage(unsigned short usDevNumber, unsigned short usSize,
...
@@ -1438,13 +1697,20 @@ short DevGetMessage(unsigned short usDevNumber, unsigned short usSize,
short
sRet
=
DRV_NO_ERROR
;
short
sRet
=
DRV_NO_ERROR
;
// valid handle available, driver is open
// valid handle available, driver is open
if
(
hDevDrv
==
INVALID_HANDLE_VALUE
)
{
if
(
hDevDrv
==
INVALID_HANDLE_VALUE
)
{
sRet
=
DRV_USR_NOT_INITIALIZED
;
sRet
=
DRV_USR_NOT_INITIALIZED
;
}
else
if
(
usDevNumber
>=
MAX_DEV_BOARDS
)
{
}
else
if
(
usDevNumber
>=
MAX_DEV_BOARDS
)
{
sRet
=
DRV_USR_DEV_NUMBER_INVALID
;
sRet
=
DRV_USR_DEV_NUMBER_INVALID
;
}
else
if
(
usSize
==
0
||
usSize
>
sizeof
(
MSG_STRUC
))
{
}
else
if
(
usSize
==
0
||
usSize
>
sizeof
(
MSG_STRUC
))
{
sRet
=
DRV_USR_SIZE_INVALID
;
sRet
=
DRV_USR_SIZE_INVALID
;
}
else
{
}
else
{
// fill in parameter data
// fill in parameter data
lBytesReturned
=
0
;
lBytesReturned
=
0
;
// set output buffer
// set output buffer
...
@@ -1452,10 +1718,13 @@ short DevGetMessage(unsigned short usDevNumber, unsigned short usSize,
...
@@ -1452,10 +1718,13 @@ short DevGetMessage(unsigned short usDevNumber, unsigned short usSize,
tBuffer
.
ulTimeout
=
ulTimeout
;
tBuffer
.
ulTimeout
=
ulTimeout
;
tBuffer
.
sError
=
sRet
;
tBuffer
.
sError
=
sRet
;
// activate function
// activate function
if
(
!
ioctl
(
hDevDrv
,
CIF_IOCTLGETMSG
,
(
unsigned
long
)(
&
tBuffer
)))
{
if
(
!
ioctl
(
hDevDrv
,
CIF_IOCTLGETMSG
,
(
unsigned
long
)(
&
tBuffer
)))
{
// fprintf(stderr, "CIF_IOCTLGETMSG: %s\n", strerror(errno));
// fprintf(stderr, "CIF_IOCTLGETMSG: %s\n", strerror(errno));
sRet
=
DRV_USR_COMM_ERR
;
sRet
=
DRV_USR_COMM_ERR
;
}
else
{
}
else
{
memcpy
(
ptMessage
,
&
tBuffer
.
tMsg
,
sizeof
(
MSG_STRUC
));
memcpy
(
ptMessage
,
&
tBuffer
.
tMsg
,
sizeof
(
MSG_STRUC
));
sRet
=
tBuffer
.
sError
;
sRet
=
tBuffer
.
sError
;
}
}
...
@@ -1481,14 +1750,16 @@ short DevGetMessage(unsigned short usDevNumber, unsigned short usSize,
...
@@ -1481,14 +1750,16 @@ short DevGetMessage(unsigned short usDevNumber, unsigned short usSize,
#define TO_LAST_MSG 15000L
#define TO_LAST_MSG 15000L
// File data structure
// File data structure
typedef
struct
tagFILEDATA
{
typedef
struct
tagFILEDATA
{
int
fd
;
int
fd
;
// struct stat *Info;//struct _stat *Info;
// struct stat *Info;//struct _stat *Info;
char
*
pabBuffer
;
char
*
pabBuffer
;
int
lSize
;
int
lSize
;
}
FILEDATA
;
}
FILEDATA
;
typedef
struct
tagDEVICE_TYPE_INFO
{
typedef
struct
tagDEVICE_TYPE_INFO
{
unsigned
char
bHerstellerkennung
;
unsigned
char
bHerstellerkennung
;
unsigned
char
bDeviceType
;
unsigned
char
bDeviceType
;
unsigned
char
bDeviceModel
;
unsigned
char
bDeviceModel
;
...
@@ -1508,8 +1779,10 @@ typedef struct tagDEVICE_TYPE_INFO {
...
@@ -1508,8 +1779,10 @@ typedef struct tagDEVICE_TYPE_INFO {
<En> */
<En> */
void
closeFile
(
FILEDATA
*
ptFile
)
void
closeFile
(
FILEDATA
*
ptFile
)
{
{
if
(
ptFile
->
fd
>=
0
)
{
if
(
ptFile
->
fd
>=
0
)
if
(
ptFile
->
pabBuffer
!=
NULL
)
{
{
if
(
ptFile
->
pabBuffer
!=
NULL
)
{
free
(
ptFile
->
pabBuffer
);
free
(
ptFile
->
pabBuffer
);
}
}
close
(
ptFile
->
fd
);
close
(
ptFile
->
fd
);
...
@@ -1539,30 +1812,41 @@ short openFile(const char* fileName, FILEDATA* ptFile)
...
@@ -1539,30 +1812,41 @@ short openFile(const char* fileName, FILEDATA* ptFile)
// open the existing file
// open the existing file
ptFile
->
fd
=
open
(
fileName
,
O_RDONLY
);
ptFile
->
fd
=
open
(
fileName
,
O_RDONLY
);
if
(
ptFile
->
fd
<
0
)
{
if
(
ptFile
->
fd
<
0
)
{
// File not opend
// File not opend
sRet
=
DRV_USR_FILE_OPEN_FAILED
;
sRet
=
DRV_USR_FILE_OPEN_FAILED
;
}
else
{
}
else
{
// Get the file size
// Get the file size
ptFile
->
lSize
=
lseek
(
ptFile
->
fd
,
0
,
SEEK_END
);
ptFile
->
lSize
=
lseek
(
ptFile
->
fd
,
0
,
SEEK_END
);
if
(
ptFile
->
lSize
<=
0
)
{
if
(
ptFile
->
lSize
<=
0
)
{
// File size is zero
// File size is zero
sRet
=
DRV_USR_FILE_SIZE_ZERO
;
sRet
=
DRV_USR_FILE_SIZE_ZERO
;
}
else
{
}
else
{
if
(
lseek
(
ptFile
->
fd
,
0
,
SEEK_SET
)
<
0
)
if
(
lseek
(
ptFile
->
fd
,
0
,
SEEK_SET
)
<
0
)
sRet
=
DRV_USR_FILE_READ_FAILED
;
sRet
=
DRV_USR_FILE_READ_FAILED
;
else
{
else
{
// Allocate memory for file data
// Allocate memory for file data
if
((
ptFile
->
pabBuffer
=
(
char
*
)
malloc
(
ptFile
->
lSize
))
==
NULL
)
{
if
((
ptFile
->
pabBuffer
=
(
char
*
)
malloc
(
ptFile
->
lSize
))
==
NULL
)
{
// Error by memory allocation
// Error by memory allocation
sRet
=
DRV_USR_FILE_NO_MEMORY
;
sRet
=
DRV_USR_FILE_NO_MEMORY
;
closeFile
(
ptFile
);
closeFile
(
ptFile
);
}
else
{
}
else
{
// Read file data into memory
// Read file data into memory
if
((
lNumberOfBytesRead
=
read
(
ptFile
->
fd
,
// handle of file to read
if
((
lNumberOfBytesRead
=
read
(
ptFile
->
fd
,
// handle of file to read
ptFile
->
pabBuffer
,
// address of buffer that receives data
ptFile
->
pabBuffer
,
// address of buffer that receives data
ptFile
->
lSize
))
ptFile
->
lSize
))
<
0
)
<
0
)
{
// number of bytes to read
{
// number of bytes to read
// File read into memory failed
// File read into memory failed
sRet
=
DRV_USR_FILE_READ_FAILED
;
sRet
=
DRV_USR_FILE_READ_FAILED
;
closeFile
(
ptFile
);
closeFile
(
ptFile
);
...
@@ -1586,17 +1870,24 @@ short FreeRecvMailbox(unsigned short usDevNumber)
...
@@ -1586,17 +1870,24 @@ short FreeRecvMailbox(unsigned short usDevNumber)
// Read until no msg available
// Read until no msg available
usIdx
=
0
;
usIdx
=
0
;
do
{
do
if
((
sRet
=
DevGetMBXState
(
usDevNumber
,
&
usDevState
,
&
usHostState
))
{
!=
DRV_NO_ERROR
)
{
if
((
sRet
=
DevGetMBXState
(
usDevNumber
,
&
usDevState
,
&
usHostState
))
!=
DRV_NO_ERROR
)
{
// Something wrong, end function
// Something wrong, end function
break
;
break
;
}
else
{
}
else
{
// Check if message available
// Check if message available
if
(
usHostState
==
HOST_MBX_FULL
)
{
if
(
usHostState
==
HOST_MBX_FULL
)
{
// Read message and throw away
// Read message and throw away
DevGetMessage
(
usDevNumber
,
sizeof
(
MSG_STRUC
),
&
tRecvMsg
,
100L
);
DevGetMessage
(
usDevNumber
,
sizeof
(
MSG_STRUC
),
&
tRecvMsg
,
100L
);
}
else
{
}
else
{
break
;
break
;
}
}
}
}
...
@@ -1609,8 +1900,8 @@ short FreeRecvMailbox(unsigned short usDevNumber)
...
@@ -1609,8 +1900,8 @@ short FreeRecvMailbox(unsigned short usDevNumber)
//----------------------------------------------------------------------------------------
//----------------------------------------------------------------------------------------
// Create checksum
// Create checksum
//----------------------------------------------------------------------------------------
//----------------------------------------------------------------------------------------
unsigned
short
CreateChecksum
(
unsigned
short
CreateChecksum
(
unsigned
char
*
pabData
,
int
lDataLen
,
unsigned
char
*
pabData
,
int
lDataLen
,
MSG_STRUC
*
ptSendMsg
)
MSG_STRUC
*
ptSendMsg
)
{
{
int
lIdx
,
lTempLen
;
int
lIdx
,
lTempLen
;
unsigned
short
usCheckSum
,
usTemp
;
unsigned
short
usCheckSum
,
usTemp
;
...
@@ -1623,7 +1914,8 @@ unsigned short CreateChecksum(
...
@@ -1623,7 +1914,8 @@ unsigned short CreateChecksum(
pByte
=
&
ptSendMsg
->
data
[
3
];
pByte
=
&
ptSendMsg
->
data
[
3
];
// Calculate the Checksum, start with the first message Msg.d[3] up to
// Calculate the Checksum, start with the first message Msg.d[3] up to
// Msg.d[64]
// Msg.d[64]
for
(
lIdx
=
0
;
lIdx
<
31
;
lIdx
++
)
{
for
(
lIdx
=
0
;
lIdx
<
31
;
lIdx
++
)
{
usTemp
=
(
*
(
pByte
+
1
));
usTemp
=
(
*
(
pByte
+
1
));
usTemp
=
(
unsigned
short
)((
usTemp
<<
8
)
|
(
*
pByte
));
usTemp
=
(
unsigned
short
)((
usTemp
<<
8
)
|
(
*
pByte
));
usCheckSum
=
(
unsigned
short
)(
usCheckSum
+
usTemp
);
usCheckSum
=
(
unsigned
short
)(
usCheckSum
+
usTemp
);
...
@@ -1632,7 +1924,8 @@ unsigned short CreateChecksum(
...
@@ -1632,7 +1924,8 @@ unsigned short CreateChecksum(
pByte
=
&
pabData
[
64
];
pByte
=
&
pabData
[
64
];
// Create cheksum for the rest of the file
// Create cheksum for the rest of the file
do
{
do
{
usTemp
=
(
*
(
pByte
+
1
));
usTemp
=
(
*
(
pByte
+
1
));
usTemp
=
(
unsigned
short
)((
usTemp
<<
8
)
|
(
*
pByte
));
usTemp
=
(
unsigned
short
)((
usTemp
<<
8
)
|
(
*
pByte
));
usCheckSum
=
(
unsigned
short
)(
usCheckSum
+
usTemp
);
usCheckSum
=
(
unsigned
short
)(
usCheckSum
+
usTemp
);
...
@@ -1653,21 +1946,28 @@ short TransferMessage(unsigned short usDevNumber, MSG_STRUC* ptSendMsg,
...
@@ -1653,21 +1946,28 @@ short TransferMessage(unsigned short usDevNumber, MSG_STRUC* ptSendMsg,
int
lCount
=
0
;
int
lCount
=
0
;
short
sRet
=
DRV_NO_ERROR
;
short
sRet
=
DRV_NO_ERROR
;
if
((
sRet
=
DevPutMessage
(
usDevNumber
,
ptSendMsg
,
TO_SEND_MSG
))
if
((
sRet
=
DevPutMessage
(
usDevNumber
,
ptSendMsg
,
TO_SEND_MSG
))
==
==
DRV_NO_ERROR
)
{
DRV_NO_ERROR
)
do
{
{
if
((
sRet
=
DevGetMessage
(
do
usDevNumber
,
sizeof
(
MSG_STRUC
),
ptRecvMsg
,
lTimeout
))
{
==
DRV_NO_ERROR
)
{
if
((
sRet
=
DevGetMessage
(
usDevNumber
,
sizeof
(
MSG_STRUC
),
ptRecvMsg
,
lTimeout
))
==
DRV_NO_ERROR
)
{
// Check on message errors
// Check on message errors
if
((
ptRecvMsg
->
tx
==
ptSendMsg
->
rx
)
&&
(
ptRecvMsg
->
rx
==
ptSendMsg
->
tx
)
if
((
ptRecvMsg
->
tx
==
ptSendMsg
->
rx
)
&&
&&
(
ptRecvMsg
->
a
==
ptSendMsg
->
b
)
&&
(
ptRecvMsg
->
b
==
0
)
(
ptRecvMsg
->
rx
==
ptSendMsg
->
tx
)
&&
&&
(
ptRecvMsg
->
nr
==
ptSendMsg
->
nr
))
{
(
ptRecvMsg
->
a
==
ptSendMsg
->
b
)
&&
(
ptRecvMsg
->
b
==
0
)
&&
(
ptRecvMsg
->
nr
==
ptSendMsg
->
nr
))
{
// Check on message error
// Check on message error
if
(
ptRecvMsg
->
f
!=
0
)
{
if
(
ptRecvMsg
->
f
!=
0
)
{
sRet
=
(
short
)(
ptRecvMsg
->
f
+
DRV_RCS_ERROR_OFFSET
);
sRet
=
(
short
)(
ptRecvMsg
->
f
+
DRV_RCS_ERROR_OFFSET
);
break
;
break
;
}
else
{
}
else
{
break
;
break
;
}
}
}
}
...
@@ -1692,7 +1992,8 @@ short ReadDeviceInformation(unsigned short usDevNumber, const char* fileName)
...
@@ -1692,7 +1992,8 @@ short ReadDeviceInformation(unsigned short usDevNumber, const char* fileName)
memset
(
&
tSendMsg
,
0
,
sizeof
(
MSG_STRUC
));
memset
(
&
tSendMsg
,
0
,
sizeof
(
MSG_STRUC
));
memset
(
&
tRecvMsg
,
0
,
sizeof
(
MSG_STRUC
));
memset
(
&
tRecvMsg
,
0
,
sizeof
(
MSG_STRUC
));
if
((
sRet
=
FreeRecvMailbox
(
usDevNumber
))
==
DRV_NO_ERROR
)
{
if
((
sRet
=
FreeRecvMailbox
(
usDevNumber
))
==
DRV_NO_ERROR
)
{
// Insert data into message
// Insert data into message
tSendMsg
.
rx
=
RCS_TASK
;
tSendMsg
.
rx
=
RCS_TASK
;
tSendMsg
.
tx
=
MSG_SYSTEM_TX
;
tSendMsg
.
tx
=
MSG_SYSTEM_TX
;
...
@@ -1704,14 +2005,17 @@ short ReadDeviceInformation(unsigned short usDevNumber, const char* fileName)
...
@@ -1704,14 +2005,17 @@ short ReadDeviceInformation(unsigned short usDevNumber, const char* fileName)
tSendMsg
.
e
=
0
;
tSendMsg
.
e
=
0
;
// Insert data
// Insert data
tSendMsg
.
data
[
0
]
=
MODE_GET_PROJ_WERTE_HW
;
tSendMsg
.
data
[
0
]
=
MODE_GET_PROJ_WERTE_HW
;
if
((
sRet
=
TransferMessage
(
usDevNumber
,
&
tSendMsg
,
&
tRecvMsg
,
TO_SEND_MSG
))
if
((
sRet
=
TransferMessage
(
usDevNumber
,
&
tSendMsg
,
&
tRecvMsg
,
==
DRV_NO_ERROR
)
{
TO_SEND_MSG
))
==
DRV_NO_ERROR
)
{
// Check entry
// Check entry
dwStrLen
=
strlen
(
fileName
);
dwStrLen
=
strlen
(
fileName
);
pInfo
=
(
DEVICE_TYPE_INFO
*
)
&
tRecvMsg
.
data
[
0
];
pInfo
=
(
DEVICE_TYPE_INFO
*
)
&
tRecvMsg
.
data
[
0
];
if
((
pInfo
->
bHerstellerkennung
!=
(
char
)(
toupper
(
fileName
[
dwStrLen
-
3
])))
if
((
pInfo
->
bHerstellerkennung
!=
||
(
pInfo
->
bDeviceType
!=
(
char
)(
toupper
(
fileName
[
dwStrLen
-
2
])))
(
char
)(
toupper
(
fileName
[
dwStrLen
-
3
])))
||
||
(
pInfo
->
bDeviceModel
!=
(
char
)(
toupper
(
fileName
[
dwStrLen
-
1
]))))
{
(
pInfo
->
bDeviceType
!=
(
char
)(
toupper
(
fileName
[
dwStrLen
-
2
])))
||
(
pInfo
->
bDeviceModel
!=
(
char
)(
toupper
(
fileName
[
dwStrLen
-
1
]))))
{
sRet
=
DRV_USR_INVALID_FILETYPE
;
sRet
=
DRV_USR_INVALID_FILETYPE
;
}
}
}
}
...
@@ -1732,8 +2036,8 @@ short ReadDeviceInformation(unsigned short usDevNumber, const char* fileName)
...
@@ -1732,8 +2036,8 @@ short ReadDeviceInformation(unsigned short usDevNumber, const char* fileName)
Return : DRV_NO_ERROR - Download successfully
Return : DRV_NO_ERROR - Download successfully
=================================================================================
=================================================================================
<En> */
<En> */
short
RunFirmwareDownload
(
short
RunFirmwareDownload
(
unsigned
short
usDevNumber
,
FILEDATA
*
ptFile
,
unsigned
short
usDevNumber
,
FILEDATA
*
ptFile
,
unsigned
long
*
pdwByte
)
unsigned
long
*
pdwByte
)
{
{
int
lFileLength
,
lSendLen
,
lActIdx
;
int
lFileLength
,
lSendLen
,
lActIdx
;
unsigned
short
usCheckSum
,
usTemp
;
unsigned
short
usCheckSum
,
usTemp
;
...
@@ -1764,8 +2068,10 @@ short RunFirmwareDownload(
...
@@ -1764,8 +2068,10 @@ short RunFirmwareDownload(
dwState
=
RCS_FIRST_MSK
;
dwState
=
RCS_FIRST_MSK
;
fRet
=
TRUE
;
fRet
=
TRUE
;
// Run download
// Run download
do
{
do
switch
(
dwState
)
{
{
switch
(
dwState
)
{
//--------------------------
//--------------------------
// Send first message
// Send first message
//--------------------------
//--------------------------
...
@@ -1799,12 +2105,14 @@ short RunFirmwareDownload(
...
@@ -1799,12 +2105,14 @@ short RunFirmwareDownload(
tSendMsg
.
data
[
2
]
=
(
unsigned
char
)((
usCheckSum
>>
8
)
&
0x00FF
);
tSendMsg
.
data
[
2
]
=
(
unsigned
char
)((
usCheckSum
>>
8
)
&
0x00FF
);
// Process message
// Process message
if
((
sRet
if
((
sRet
=
TransferMessage
(
usDevNumber
,
&
tSendMsg
,
&
tRecvMsg
,
=
TransferMessage
(
usDevNumber
,
&
tSendMsg
,
&
tRecvMsg
,
TO_1ST_MSG
)
)
TO_1ST_MSG
))
!=
DRV_NO_ERROR
)
!=
DRV_NO_ERROR
)
{
{
// Could not process this message
// Could not process this message
fRet
=
FALSE
;
fRet
=
FALSE
;
}
else
{
}
else
{
// ----------------------------
// ----------------------------
// Message send second message
// Message send second message
// ----------------------------
// ----------------------------
...
@@ -1826,25 +2134,30 @@ short RunFirmwareDownload(
...
@@ -1826,25 +2134,30 @@ short RunFirmwareDownload(
memcpy
(
&
tSendMsg
.
data
[
0
],
&
tSendMsg
.
data
[
1
],
64
);
memcpy
(
&
tSendMsg
.
data
[
0
],
&
tSendMsg
.
data
[
1
],
64
);
// Insert byte 64 to 239 from the abData[64]
// Insert byte 64 to 239 from the abData[64]
memcpy
(
memcpy
(
&
tSendMsg
.
data
[
64
],
&
pabData
[
64
],
&
tSendMsg
.
data
[
64
],
&
pabData
[
64
],
(
unsigned
char
)(
lSendLen
-
64
));
(
unsigned
char
)(
lSendLen
-
64
));
// Process message
// Process message
if
((
sRet
=
TransferMessage
(
if
((
sRet
=
TransferMessage
(
usDevNumber
,
&
tSendMsg
,
&
tRecvMsg
,
usDevNumber
,
&
tSendMsg
,
&
tRecvMsg
,
TO_1ST_MSG
)
)
TO_1ST_MSG
))
!=
DRV_NO_ERROR
)
!=
DRV_NO_ERROR
)
{
{
// Could not process this message
// Could not process this message
fRet
=
FALSE
;
fRet
=
FALSE
;
}
else
{
}
else
{
// No error, send next message
// No error, send next message
lActIdx
+=
lSendLen
;
// Add send size to actual index
lActIdx
+=
lSendLen
;
// Add send size to actual index
*
pdwByte
=
lActIdx
;
*
pdwByte
=
lActIdx
;
// Calculate next message length
// Calculate next message length
if
(
lFileLength
<=
(
lSendLen
+
lActIdx
))
{
if
(
lFileLength
<=
(
lSendLen
+
lActIdx
))
{
lSendLen
=
lFileLength
-
lActIdx
;
// Set length to rest of data
lSendLen
=
lFileLength
-
lActIdx
;
// Set length to rest of data
dwState
=
RCS_LAST_MSK
;
dwState
=
RCS_LAST_MSK
;
}
else
{
}
else
{
dwState
=
RCS_CONT_MSK
;
dwState
=
RCS_CONT_MSK
;
}
}
}
}
...
@@ -1862,12 +2175,14 @@ short RunFirmwareDownload(
...
@@ -1862,12 +2175,14 @@ short RunFirmwareDownload(
memcpy
(
&
tSendMsg
.
data
[
0
],
&
pabData
[
lActIdx
],
lSendLen
);
memcpy
(
&
tSendMsg
.
data
[
0
],
&
pabData
[
lActIdx
],
lSendLen
);
// Process message
// Process message
if
((
sRet
if
((
sRet
=
TransferMessage
(
usDevNumber
,
&
tSendMsg
,
&
tRecvMsg
,
=
TransferMessage
(
usDevNumber
,
&
tSendMsg
,
&
tRecvMsg
,
TO_CONT_MSG
)
)
TO_CONT_MSG
))
!=
DRV_NO_ERROR
)
!=
DRV_NO_ERROR
)
{
{
// Could not process this message
// Could not process this message
fRet
=
FALSE
;
fRet
=
FALSE
;
}
else
{
}
else
{
// printf("(A)===========================flen = %ld, Sndlen = %ld,
// printf("(A)===========================flen = %ld, Sndlen = %ld,
// ActIdx = %ld\n", lFileLength, lSendLen, lActIdx);
// ActIdx = %ld\n", lFileLength, lSendLen, lActIdx);
// No error, send next message
// No error, send next message
...
@@ -1875,10 +2190,13 @@ short RunFirmwareDownload(
...
@@ -1875,10 +2190,13 @@ short RunFirmwareDownload(
*
pdwByte
=
lActIdx
;
*
pdwByte
=
lActIdx
;
// Calculate next message length
// Calculate next message length
if
(
lFileLength
<=
(
lSendLen
+
lActIdx
))
{
if
(
lFileLength
<=
(
lSendLen
+
lActIdx
))
{
lSendLen
=
lFileLength
-
lActIdx
;
// Set length to rest of data
lSendLen
=
lFileLength
-
lActIdx
;
// Set length to rest of data
dwState
=
RCS_LAST_MSK
;
dwState
=
RCS_LAST_MSK
;
}
else
{
}
else
{
dwState
=
RCS_CONT_MSK
;
dwState
=
RCS_CONT_MSK
;
}
}
}
}
...
@@ -1921,8 +2239,8 @@ short RunFirmwareDownload(
...
@@ -1921,8 +2239,8 @@ short RunFirmwareDownload(
Return : DRV_NO_ERROR - Download successfully
Return : DRV_NO_ERROR - Download successfully
=================================================================================
=================================================================================
<En> */
<En> */
short
RunConfigDownload
(
short
RunConfigDownload
(
unsigned
short
usDevNumber
,
FILEDATA
*
ptFile
,
unsigned
short
usDevNumber
,
FILEDATA
*
ptFile
,
unsigned
long
*
pdwByte
)
unsigned
long
*
pdwByte
)
{
{
unsigned
int
dwState
;
unsigned
int
dwState
;
int
lSendLen
,
lActIdx
,
lOffset
,
lFileLength
;
int
lSendLen
,
lActIdx
,
lOffset
,
lFileLength
;
...
@@ -1962,8 +2280,10 @@ short RunConfigDownload(
...
@@ -1962,8 +2280,10 @@ short RunConfigDownload(
// Set program state
// Set program state
dwState
=
RCS_FIRST_MSK
;
dwState
=
RCS_FIRST_MSK
;
fRet
=
TRUE
;
fRet
=
TRUE
;
do
{
do
switch
(
dwState
)
{
{
switch
(
dwState
)
{
//--------------------------
//--------------------------
// Send first message
// Send first message
//--------------------------
//--------------------------
...
@@ -1988,12 +2308,14 @@ short RunConfigDownload(
...
@@ -1988,12 +2308,14 @@ short RunConfigDownload(
// printf("cifAPI: %ld\n", dwState);
// printf("cifAPI: %ld\n", dwState);
// Process message
// Process message
if
((
sRet
if
((
sRet
=
TransferMessage
(
usDevNumber
,
&
tSendMsg
,
&
tRecvMsg
,
=
TransferMessage
(
usDevNumber
,
&
tSendMsg
,
&
tRecvMsg
,
TO_1ST_MSG
)
)
TO_1ST_MSG
))
!=
DRV_NO_ERROR
)
!=
DRV_NO_ERROR
)
{
{
// Could not process this message
// Could not process this message
fRet
=
FALSE
;
fRet
=
FALSE
;
}
else
{
}
else
{
// Set Index for next message, start at offset 44
// Set Index for next message, start at offset 44
lActIdx
=
44
;
lActIdx
=
44
;
*
pdwByte
=
lActIdx
;
*
pdwByte
=
lActIdx
;
...
@@ -2020,20 +2342,25 @@ short RunConfigDownload(
...
@@ -2020,20 +2342,25 @@ short RunConfigDownload(
memcpy
(
&
tSendMsg
.
data
[
0
],
&
pabData
[
lActIdx
],
lSendLen
);
memcpy
(
&
tSendMsg
.
data
[
0
],
&
pabData
[
lActIdx
],
lSendLen
);
// Process message
// Process message
if
((
sRet
if
((
sRet
=
TransferMessage
(
usDevNumber
,
&
tSendMsg
,
&
tRecvMsg
,
=
TransferMessage
(
usDevNumber
,
&
tSendMsg
,
&
tRecvMsg
,
TO_CONT_MSG
)
)
TO_CONT_MSG
))
!=
DRV_NO_ERROR
)
!=
DRV_NO_ERROR
)
{
{
// Could not process this message
// Could not process this message
fRet
=
FALSE
;
fRet
=
FALSE
;
}
else
{
}
else
{
// No error, send next message
// No error, send next message
lActIdx
+=
lSendLen
;
// Add send size to actual index
lActIdx
+=
lSendLen
;
// Add send size to actual index
*
pdwByte
=
lActIdx
;
*
pdwByte
=
lActIdx
;
// Calculate next message length
// Calculate next message length
if
(
lFileLength
<=
(
lSendLen
+
lActIdx
))
{
if
(
lFileLength
<=
(
lSendLen
+
lActIdx
))
{
lSendLen
=
lFileLength
-
lActIdx
;
// Set length to rest of data
lSendLen
=
lFileLength
-
lActIdx
;
// Set length to rest of data
dwState
=
RCS_LAST_MSK
;
// Set to last mask
dwState
=
RCS_LAST_MSK
;
// Set to last mask
}
else
{
}
else
{
// Continue message
// Continue message
dwState
=
RCS_CONT_MSK
;
dwState
=
RCS_CONT_MSK
;
}
}
...
@@ -2082,16 +2409,18 @@ short RunConfigDownload(
...
@@ -2082,16 +2409,18 @@ short RunConfigDownload(
Return : DRV_NO_ERROR - Download successfully
Return : DRV_NO_ERROR - Download successfully
=================================================================================
=================================================================================
<En> */
<En> */
short
FirmwareDownload
(
short
FirmwareDownload
(
unsigned
short
usDevNumber
,
const
char
*
fileName
,
unsigned
short
usDevNumber
,
const
char
*
fileName
,
unsigned
long
*
pdwByte
)
unsigned
long
*
pdwByte
)
{
{
short
sRet
=
DRV_NO_ERROR
;
short
sRet
=
DRV_NO_ERROR
;
FILEDATA
tFileData
;
FILEDATA
tFileData
;
// Read Device Information
// Read Device Information
if
((
sRet
=
ReadDeviceInformation
(
usDevNumber
,
fileName
))
==
DRV_NO_ERROR
)
{
if
((
sRet
=
ReadDeviceInformation
(
usDevNumber
,
fileName
))
==
DRV_NO_ERROR
)
{
// Firmware name is OK
// Firmware name is OK
if
((
sRet
=
openFile
(
fileName
,
&
tFileData
))
==
DRV_NO_ERROR
)
{
if
((
sRet
=
openFile
(
fileName
,
&
tFileData
))
==
DRV_NO_ERROR
)
{
// Firmware file opened and loaded into RAM
// Firmware file opened and loaded into RAM
sRet
=
RunFirmwareDownload
(
usDevNumber
,
&
tFileData
,
pdwByte
);
sRet
=
RunFirmwareDownload
(
usDevNumber
,
&
tFileData
,
pdwByte
);
closeFile
(
&
tFileData
);
closeFile
(
&
tFileData
);
...
@@ -2112,13 +2441,14 @@ short FirmwareDownload(
...
@@ -2112,13 +2441,14 @@ short FirmwareDownload(
Return : DRV_NO_ERROR - Download successfully
Return : DRV_NO_ERROR - Download successfully
=================================================================================
=================================================================================
<En> */
<En> */
short
ConfigDownload
(
short
ConfigDownload
(
unsigned
short
usDevNumber
,
const
char
*
fileName
,
unsigned
short
usDevNumber
,
const
char
*
fileName
,
unsigned
long
*
pdwByte
)
unsigned
long
*
pdwByte
)
{
{
unsigned
short
sRet
=
DRV_NO_ERROR
;
unsigned
short
sRet
=
DRV_NO_ERROR
;
FILEDATA
tFileData
;
FILEDATA
tFileData
;
if
((
sRet
=
openFile
(
fileName
,
&
tFileData
))
==
DRV_NO_ERROR
)
{
if
((
sRet
=
openFile
(
fileName
,
&
tFileData
))
==
DRV_NO_ERROR
)
{
// Configuration file opened and loaded into RAM
// Configuration file opened and loaded into RAM
sRet
=
RunConfigDownload
(
usDevNumber
,
&
tFileData
,
pdwByte
);
sRet
=
RunConfigDownload
(
usDevNumber
,
&
tFileData
,
pdwByte
);
closeFile
(
&
tFileData
);
closeFile
(
&
tFileData
);
...
@@ -2146,17 +2476,26 @@ short DevDownload(unsigned short usDevNumber, unsigned short usMode,
...
@@ -2146,17 +2476,26 @@ short DevDownload(unsigned short usDevNumber, unsigned short usMode,
short
sRet
=
DRV_NO_ERROR
;
short
sRet
=
DRV_NO_ERROR
;
// valid handle available, driver is open
// valid handle available, driver is open
if
(
hDevDrv
==
INVALID_HANDLE_VALUE
)
{
if
(
hDevDrv
==
INVALID_HANDLE_VALUE
)
{
sRet
=
DRV_USR_NOT_INITIALIZED
;
sRet
=
DRV_USR_NOT_INITIALIZED
;
}
else
if
(
usDevNumber
>=
MAX_DEV_BOARDS
)
{
}
else
if
(
usDevNumber
>=
MAX_DEV_BOARDS
)
{
sRet
=
DRV_USR_DEV_NUMBER_INVALID
;
sRet
=
DRV_USR_DEV_NUMBER_INVALID
;
}
else
if
((
pdwBytes
==
NULL
)
||
(
pszFileName
==
NULL
)
}
||
(
pdwBytes
==
NULL
))
{
else
if
((
pdwBytes
==
NULL
)
||
(
pszFileName
==
NULL
)
||
(
pdwBytes
==
NULL
))
{
sRet
=
DRV_USR_BUF_PTR_NULL
;
sRet
=
DRV_USR_BUF_PTR_NULL
;
}
else
if
(
strlen
((
const
char
*
)
pszFileName
)
==
0
)
{
}
else
if
(
strlen
((
const
char
*
)
pszFileName
)
==
0
)
{
sRet
=
DRV_USR_FILENAME_INVALID
;
sRet
=
DRV_USR_FILENAME_INVALID
;
}
else
{
}
switch
(
usMode
)
{
else
{
switch
(
usMode
)
{
case
FIRMWARE_DOWNLOAD
:
case
FIRMWARE_DOWNLOAD
:
sRet
=
FirmwareDownload
(
usDevNumber
,
(
const
char
*
)
pszFileName
,
pdwBytes
);
sRet
=
FirmwareDownload
(
usDevNumber
,
(
const
char
*
)
pszFileName
,
pdwBytes
);
break
;
break
;
...
...
profibus/lib/rt/src/dpgdl.c
View file @
ce758cd3
/*
/******************************************************************************
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2019 SSAB EMEA AB.
*
* This file is part of ProviewR.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 2 of
* the License, or (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with ProviewR. If not, see <http://www.gnu.org/licenses/>
*
* Linking ProviewR statically or dynamically with other modules is
* making a combined work based on ProviewR. Thus, the terms and
* conditions of the GNU General Public License cover the whole
* combination.
*
* In addition, as a special exception, the copyright holders of
* ProviewR give you permission to, from the build function in the
* ProviewR Configurator, combine ProviewR with modules generated by the
* ProviewR PLC Editor to a PLC program, regardless of the license
* terms of these modules. You may copy and distribute the resulting
* combined work under the terms of your choice, provided that every
* copy of the combined work is accompanied by a complete copy of
* the source code of ProviewR (the version used to produce the
* combined work), being distributed under the terms of the GNU
* General Public License plus this exception.
*/
/*****************************************************************************
* *
* *
*
SOFTING AG
*
*
SOFTING Industrial Automation GmbH
*
* Richard-Reitzner-Allee 6 *
* Richard-Reitzner-Allee 6 *
* D-85540 Haar *
* D-85540 Haar *
* Phone:
++49-89-4 56 56-0
*
* Phone:
(++49)-(0)89-45656-0
*
*
Fax: ++49-89-4 56 56-3 99
*
*
Fax: (++49)-(0)89-45656-399
*
* *
* *
*
Copyright (C) SOFTING AG 1995-2003
*
*
Copyright (C) SOFTING Industrial Automation GmbH 1995-2012
*
* All Rights Reserved *
* All Rights Reserved *
* *
* *
******************************************************************************
*******************************************************************************
FILE_NAME DPGDL.C
FILE_NAME DPGDL.C
PROJECT_NAME PROFIBUS
PROJECT_NAME PROFIBUS
...
@@ -54,11 +20,11 @@ MODULE DPGDL
...
@@ -54,11 +20,11 @@ MODULE DPGDL
COMPONENT_LIBRARY PAPI Lib
COMPONENT_LIBRARY PAPI Lib
PAPI DLL
PAPI DLL
AUTHOR SOFTING
AG
AUTHOR SOFTING
VERSION 5.
22
.0.00.release
VERSION 5.
45
.0.00.release
DATE
26-February-199
9
DATE
Dezember-200
9
STATUS finished
STATUS finished
...
@@ -103,7 +69,9 @@ LOCAL_DATA
...
@@ -103,7 +69,9 @@ LOCAL_DATA
#endif
#endif
FUNCTION
PUBLIC
INT16
dpgdl_get_data_len
(
IN
INT16
result
,
IN
USIGN8
service
,
FUNCTION
PUBLIC
INT16
dpgdl_get_data_len
(
IN
INT16
result
,
IN
USIGN8
service
,
IN
USIGN8
primitive
,
IN
USIGN8
FAR
*
data_ptr
,
OUT
INT16
FAR
*
data_len_ptr
)
IN
USIGN8
primitive
,
IN
USIGN8
FAR
*
data_ptr
,
OUT
INT16
FAR
*
data_len_ptr
)
/*------------------------------------------------------------------------*/
/*------------------------------------------------------------------------*/
/* FUNCTIONAL_DESCRIPTION */
/* FUNCTIONAL_DESCRIPTION */
/*------------------------------------------------------------------------*/
/*------------------------------------------------------------------------*/
...
@@ -116,11 +84,14 @@ FUNCTION PUBLIC INT16 dpgdl_get_data_len(IN INT16 result, IN USIGN8 service,
...
@@ -116,11 +84,14 @@ FUNCTION PUBLIC INT16 dpgdl_get_data_len(IN INT16 result, IN USIGN8 service,
FUNCTION_BODY
FUNCTION_BODY
switch
(
primitive
)
{
switch
(
primitive
)
{
/*--- USER REQUESTS ----------------------------------------------------*/
/*--- USER REQUESTS ----------------------------------------------------*/
case
REQ
:
{
case
REQ
:
switch
(
service
)
{
{
switch
(
service
)
{
case
DP_DATA_TRANSFER
:
case
DP_DATA_TRANSFER
:
*
data_len_ptr
=
0
;
*
data_len_ptr
=
0
;
break
;
break
;
...
@@ -144,15 +115,16 @@ FUNCTION PUBLIC INT16 dpgdl_get_data_len(IN INT16 result, IN USIGN8 service,
...
@@ -144,15 +115,16 @@ FUNCTION PUBLIC INT16 dpgdl_get_data_len(IN INT16 result, IN USIGN8 service,
break
;
break
;
case
DP_DOWNLOAD_LOC
:
case
DP_DOWNLOAD_LOC
:
case
DP_DOWNLOAD
:
{
case
DP_DOWNLOAD
:
if
(((
T_DP_DOWNLOAD_REQ
FAR
*
)(
data_ptr
))
->
data_len
{
>
DP_MAX_DOWNLOAD_DATA_LEN
)
{
if
(((
T_DP_DOWNLOAD_REQ
FAR
*
)(
data_ptr
))
->
data_len
>
result
=
E_IF_INVALID_DATA_SIZE
;
DP_MAX_DOWNLOAD_DATA_LEN
)
{
return
(
E_IF_INVALID_DATA_SIZE
);
return
(
E_IF_INVALID_DATA_SIZE
);
}
}
*
data_len_ptr
=
sizeof
(
T_DP_DOWNLOAD_REQ
)
*
data_len_ptr
=
sizeof
(
T_DP_DOWNLOAD_REQ
)
+
+
((
T_DP_DOWNLOAD_REQ
FAR
*
)(
data_ptr
))
->
data_len
;
((
T_DP_DOWNLOAD_REQ
FAR
*
)(
data_ptr
))
->
data_len
;
break
;
break
;
}
}
...
@@ -171,31 +143,33 @@ FUNCTION PUBLIC INT16 dpgdl_get_data_len(IN INT16 result, IN USIGN8 service,
...
@@ -171,31 +143,33 @@ FUNCTION PUBLIC INT16 dpgdl_get_data_len(IN INT16 result, IN USIGN8 service,
break
;
break
;
case
DP_SET_PRM
:
case
DP_SET_PRM
:
case
DP_SET_PRM_LOC
:
{
case
DP_SET_PRM_LOC
:
{
service_data_len
=
swap_16_intel_motorola
(
service_data_len
=
swap_16_intel_motorola
(
((
T_DP_SET_PRM_REQ
FAR
*
)(
data_ptr
))
->
prm_data
.
prm_data_len
);
((
T_DP_SET_PRM_REQ
FAR
*
)(
data_ptr
))
->
prm_data
.
prm_data_len
);
if
(
service_data_len
>
DP_MAX_PRM_DATA_LEN
)
{
if
(
service_data_len
>
DP_MAX_PRM_DATA_LEN
)
result
=
E_IF_INVALID_DATA_SIZE
;
{
return
(
E_IF_INVALID_DATA_SIZE
);
return
(
E_IF_INVALID_DATA_SIZE
);
}
}
*
data_len_ptr
*
data_len_ptr
=
=
sizeof
(
T_DP_SET_PRM_REQ
)
-
sizeof
(
T_DP_PRM_DATA
)
+
service_data_len
;
sizeof
(
T_DP_SET_PRM_REQ
)
-
sizeof
(
T_DP_PRM_DATA
)
+
service_data_len
;
break
;
break
;
}
}
case
DP_CHK_CFG
:
{
case
DP_CHK_CFG
:
{
service_data_len
=
swap_16_intel_motorola
(
service_data_len
=
swap_16_intel_motorola
(
((
T_DP_CHK_CFG_REQ
FAR
*
)(
data_ptr
))
->
cfg_data
.
cfg_data_len
);
((
T_DP_CHK_CFG_REQ
FAR
*
)(
data_ptr
))
->
cfg_data
.
cfg_data_len
);
if
(
service_data_len
>
DP_MAX_CFG_DATA_LEN
)
{
if
(
service_data_len
>
DP_MAX_CFG_DATA_LEN
)
result
=
E_IF_INVALID_DATA_SIZE
;
{
return
(
E_IF_INVALID_DATA_SIZE
);
return
(
E_IF_INVALID_DATA_SIZE
);
}
}
*
data_len_ptr
*
data_len_ptr
=
=
sizeof
(
T_DP_CHK_CFG_REQ
)
-
sizeof
(
T_DP_CFG_DATA
)
+
service_data_len
;
sizeof
(
T_DP_CHK_CFG_REQ
)
-
sizeof
(
T_DP_CFG_DATA
)
+
service_data_len
;
break
;
break
;
}
}
...
@@ -212,27 +186,30 @@ FUNCTION PUBLIC INT16 dpgdl_get_data_len(IN INT16 result, IN USIGN8 service,
...
@@ -212,27 +186,30 @@ FUNCTION PUBLIC INT16 dpgdl_get_data_len(IN INT16 result, IN USIGN8 service,
*
data_len_ptr
=
sizeof
(
T_DP_RD_OUTP_REQ
);
*
data_len_ptr
=
sizeof
(
T_DP_RD_OUTP_REQ
);
break
;
break
;
case
DP_DATA_EXCHANGE
:
{
case
DP_DATA_EXCHANGE
:
if
(((
T_DP_DATA_EXCHANGE_REQ
FAR
*
)(
data_ptr
))
->
outp_data_len
{
>
DP_MAX_OUTPUT_DATA_LEN
)
{
if
(((
T_DP_DATA_EXCHANGE_REQ
FAR
*
)(
data_ptr
))
->
outp_data_len
>
result
=
E_IF_INVALID_DATA_SIZE
;
DP_MAX_OUTPUT_DATA_LEN
)
{
return
(
E_IF_INVALID_DATA_SIZE
);
return
(
E_IF_INVALID_DATA_SIZE
);
}
}
*
data_len_ptr
=
sizeof
(
T_DP_DATA_EXCHANGE_REQ
)
*
data_len_ptr
=
sizeof
(
T_DP_DATA_EXCHANGE_REQ
)
+
+
((
T_DP_DATA_EXCHANGE_REQ
FAR
*
)(
data_ptr
))
->
outp_data_len
;
((
T_DP_DATA_EXCHANGE_REQ
FAR
*
)(
data_ptr
))
->
outp_data_len
;
break
;
break
;
}
}
case
DP_SET_SLAVE_ADD
:
{
case
DP_SET_SLAVE_ADD
:
if
(((
T_DP_SET_SLAVE_ADD_REQ
FAR
*
)(
data_ptr
))
->
rem_slave_data_len
{
>
DP_MAX_REM_SLAVE_DATA_LEN
)
{
if
(((
T_DP_SET_SLAVE_ADD_REQ
FAR
*
)(
data_ptr
))
->
rem_slave_data_len
>
result
=
E_IF_INVALID_DATA_SIZE
;
DP_MAX_REM_SLAVE_DATA_LEN
)
{
return
(
E_IF_INVALID_DATA_SIZE
);
return
(
E_IF_INVALID_DATA_SIZE
);
}
}
*
data_len_ptr
=
sizeof
(
T_DP_SET_SLAVE_ADD_REQ
)
*
data_len_ptr
=
+
((
T_DP_SET_SLAVE_ADD_REQ
FAR
*
)(
data_ptr
))
->
rem_slave_data_len
;
sizeof
(
T_DP_SET_SLAVE_ADD_REQ
)
+
((
T_DP_SET_SLAVE_ADD_REQ
FAR
*
)(
data_ptr
))
->
rem_slave_data_len
;
break
;
break
;
}
}
...
@@ -249,37 +226,41 @@ FUNCTION PUBLIC INT16 dpgdl_get_data_len(IN INT16 result, IN USIGN8 service,
...
@@ -249,37 +226,41 @@ FUNCTION PUBLIC INT16 dpgdl_get_data_len(IN INT16 result, IN USIGN8 service,
*
data_len_ptr
=
0
;
*
data_len_ptr
=
0
;
break
;
break
;
case
DP_SET_BUSPARAMETER
:
{
case
DP_SET_BUSPARAMETER
:
if
((((
T_DP_SET_BUSPARAMETER_REQ
FAR
*
)(
data_ptr
))
->
master_user_data_len
{
>
DP_MAX_SET_BUSPARAMETER_LEN
)
if
((((
T_DP_SET_BUSPARAMETER_REQ
FAR
*
)(
data_ptr
))
->
master_user_data_len
>
||
(((
T_DP_SET_BUSPARAMETER_REQ
FAR
*
)(
data_ptr
))
->
master_user_data_len
DP_MAX_SET_BUSPARAMETER_LEN
)
||
<
DP_MASTER_USER_DATA_LEN
))
{
(((
T_DP_SET_BUSPARAMETER_REQ
FAR
*
)(
data_ptr
))
->
master_user_data_len
<
result
=
E_IF_INVALID_DATA_SIZE
;
DP_MASTER_USER_DATA_LEN
))
{
return
(
E_IF_INVALID_DATA_SIZE
);
return
(
E_IF_INVALID_DATA_SIZE
);
}
}
*
data_len_ptr
=
sizeof
(
T_DP_SET_BUSPARAMETER_REQ
)
*
data_len_ptr
=
+
((
T_DP_SET_BUSPARAMETER_REQ
FAR
*
)(
data_ptr
))
->
master_user_data_len
sizeof
(
T_DP_SET_BUSPARAMETER_REQ
)
+
-
DP_MASTER_USER_DATA_LEN
;
((
T_DP_SET_BUSPARAMETER_REQ
FAR
*
)(
data_ptr
))
->
master_user_data_len
-
DP_MASTER_USER_DATA_LEN
;
break
;
break
;
}
}
case
DP_SET_MASTER_PARAM
:
{
case
DP_SET_MASTER_PARAM
:
if
(((
T_DP_SET_MASTER_PARAM_REQ
FAR
*
)(
data_ptr
))
->
data_len
{
>
DP_MAX_TELEGRAM_LEN
)
{
if
(((
T_DP_SET_MASTER_PARAM_REQ
FAR
*
)(
data_ptr
))
->
data_len
>
result
=
E_IF_INVALID_DATA_SIZE
;
DP_MAX_TELEGRAM_LEN
)
{
return
(
E_IF_INVALID_DATA_SIZE
);
return
(
E_IF_INVALID_DATA_SIZE
);
}
}
*
data_len_ptr
=
sizeof
(
T_DP_SET_MASTER_PARAM_REQ
)
*
data_len_ptr
=
sizeof
(
T_DP_SET_MASTER_PARAM_REQ
)
+
+
((
T_DP_SET_MASTER_PARAM_REQ
FAR
*
)(
data_ptr
))
->
data_len
;
((
T_DP_SET_MASTER_PARAM_REQ
FAR
*
)(
data_ptr
))
->
data_len
;
break
;
break
;
}
}
case
DP_INITIATE
:
case
DP_INITIATE
:
*
data_len_ptr
=
sizeof
(
T_DP_INITIATE_REQ
)
*
data_len_ptr
=
+
((
T_DP_INITIATE_REQ
FAR
*
)(
data_ptr
))
->
add_addr_param
.
s_len
sizeof
(
T_DP_INITIATE_REQ
)
+
+
((
T_DP_INITIATE_REQ
FAR
*
)(
data_ptr
))
->
add_addr_param
.
d_len
;
((
T_DP_INITIATE_REQ
FAR
*
)(
data_ptr
))
->
add_addr_param
.
s_len
+
((
T_DP_INITIATE_REQ
FAR
*
)(
data_ptr
))
->
add_addr_param
.
d_len
;
break
;
break
;
case
DP_ABORT
:
case
DP_ABORT
:
...
@@ -291,17 +272,16 @@ FUNCTION PUBLIC INT16 dpgdl_get_data_len(IN INT16 result, IN USIGN8 service,
...
@@ -291,17 +272,16 @@ FUNCTION PUBLIC INT16 dpgdl_get_data_len(IN INT16 result, IN USIGN8 service,
break
;
break
;
case
DP_WRITE
:
case
DP_WRITE
:
*
data_len_ptr
*
data_len_ptr
=
=
sizeof
(
T_DP_WRITE_REQ
)
+
((
T_DP_WRITE_REQ
FAR
*
)(
data_ptr
))
->
length
;
sizeof
(
T_DP_WRITE_REQ
)
+
((
T_DP_WRITE_REQ
FAR
*
)(
data_ptr
))
->
length
;
break
;
break
;
case
DP_DATA_TRANSPORT
:
case
DP_DATA_TRANSPORT
:
*
data_len_ptr
=
sizeof
(
T_DP_DATA_TRANSPORT_REQ
)
*
data_len_ptr
=
sizeof
(
T_DP_DATA_TRANSPORT_REQ
)
+
+
((
T_DP_DATA_TRANSPORT_REQ
FAR
*
)(
data_ptr
))
->
length
;
((
T_DP_DATA_TRANSPORT_REQ
FAR
*
)(
data_ptr
))
->
length
;
break
;
break
;
default:
default:
result
=
E_IF_INVALID_SERVICE
;
return
(
E_IF_INVALID_SERVICE
);
return
(
E_IF_INVALID_SERVICE
);
}
/* switch serivce */
}
/* switch serivce */
...
@@ -310,8 +290,10 @@ FUNCTION PUBLIC INT16 dpgdl_get_data_len(IN INT16 result, IN USIGN8 service,
...
@@ -310,8 +290,10 @@ FUNCTION PUBLIC INT16 dpgdl_get_data_len(IN INT16 result, IN USIGN8 service,
/*---- USER RESPONSES --------------------------------------------------*/
/*---- USER RESPONSES --------------------------------------------------*/
case
RES
:
{
case
RES
:
switch
(
service
)
{
{
switch
(
service
)
{
case
DP_ACT_PARAM
:
case
DP_ACT_PARAM
:
*
data_len_ptr
=
sizeof
(
T_DP_ACT_PARAM_RES_CON
);
*
data_len_ptr
=
sizeof
(
T_DP_ACT_PARAM_RES_CON
);
break
;
break
;
...
@@ -325,32 +307,33 @@ FUNCTION PUBLIC INT16 dpgdl_get_data_len(IN INT16 result, IN USIGN8 service,
...
@@ -325,32 +307,33 @@ FUNCTION PUBLIC INT16 dpgdl_get_data_len(IN INT16 result, IN USIGN8 service,
*
data_len_ptr
=
sizeof
(
T_DP_END_SEQ_RES_CON
);
*
data_len_ptr
=
sizeof
(
T_DP_END_SEQ_RES_CON
);
break
;
break
;
case
DP_UPLOAD
:
{
case
DP_UPLOAD
:
if
(((
T_DP_UPLOAD_RES_CON
FAR
*
)(
data_ptr
))
->
data_len
{
>
DP_MAX_UPLOAD_DATA_LEN
)
{
if
(((
T_DP_UPLOAD_RES_CON
FAR
*
)(
data_ptr
))
->
data_len
>
result
=
E_IF_INVALID_DATA_SIZE
;
DP_MAX_UPLOAD_DATA_LEN
)
{
return
(
E_IF_INVALID_DATA_SIZE
);
return
(
E_IF_INVALID_DATA_SIZE
);
}
}
*
data_len_ptr
=
sizeof
(
T_DP_UPLOAD_RES_CON
)
*
data_len_ptr
=
sizeof
(
T_DP_UPLOAD_RES_CON
)
+
+
((
T_DP_UPLOAD_RES_CON
FAR
*
)(
data_ptr
))
->
data_len
;
((
T_DP_UPLOAD_RES_CON
FAR
*
)(
data_ptr
))
->
data_len
;
break
;
break
;
}
}
case
DP_GET_MASTER_DIAG
:
{
case
DP_GET_MASTER_DIAG
:
if
(((
T_DP_GET_MASTER_DIAG_RES_CON
FAR
*
)(
data_ptr
))
->
data_len
{
>
DP_MAX_TELEGRAM_LEN
)
{
if
(((
T_DP_GET_MASTER_DIAG_RES_CON
FAR
*
)(
data_ptr
))
->
data_len
>
result
=
E_IF_INVALID_DATA_SIZE
;
DP_MAX_TELEGRAM_LEN
)
{
return
(
E_IF_INVALID_DATA_SIZE
);
return
(
E_IF_INVALID_DATA_SIZE
);
}
}
*
data_len_ptr
=
sizeof
(
T_DP_GET_MASTER_DIAG_RES_CON
)
*
data_len_ptr
=
sizeof
(
T_DP_GET_MASTER_DIAG_RES_CON
)
+
+
((
T_DP_GET_MASTER_DIAG_RES_CON
FAR
*
)(
data_ptr
))
->
data_len
;
((
T_DP_GET_MASTER_DIAG_RES_CON
FAR
*
)(
data_ptr
))
->
data_len
;
break
;
break
;
}
}
default:
default:
result
=
E_IF_INVALID_SERVICE
;
return
(
E_IF_INVALID_SERVICE
);
return
(
E_IF_INVALID_SERVICE
);
}
/* switch serivce */
}
/* switch serivce */
...
@@ -360,12 +343,9 @@ FUNCTION PUBLIC INT16 dpgdl_get_data_len(IN INT16 result, IN USIGN8 service,
...
@@ -360,12 +343,9 @@ FUNCTION PUBLIC INT16 dpgdl_get_data_len(IN INT16 result, IN USIGN8 service,
/*---- WRONG PRIMITIVE -------------------------------------------------*/
/*---- WRONG PRIMITIVE -------------------------------------------------*/
default:
default:
result
=
E_IF_INVALID_PRIMITIVE
;
return
(
E_IF_INVALID_PRIMITIVE
);
return
(
E_IF_INVALID_PRIMITIVE
);
}
/* switch primitive */
}
/* switch primitive */
result
=
E_OK
;
return
(
E_OK
);
return
(
E_OK
);
}
/* dp_get_data_len */
}
/* dp_get_data_len */
...
...
profibus/lib/rt/src/dpm_user.h
View file @
ce758cd3
...
@@ -139,7 +139,8 @@ extern "C" {
...
@@ -139,7 +139,8 @@ extern "C" {
/* device warm start parameter */
/* device warm start parameter */
/* --------------------------- */
/* --------------------------- */
typedef
struct
DPM_PLC_PARAMETERtag
{
typedef
struct
DPM_PLC_PARAMETERtag
{
unsigned
char
bMode
;
/* handshake of process data */
unsigned
char
bMode
;
/* handshake of process data */
#define DPM_SET_MODE_BUSSYNC_DEVICE_CONTROLLED 0
#define DPM_SET_MODE_BUSSYNC_DEVICE_CONTROLLED 0
#define DPM_SET_MODE_BUFFERED_DEVICE_CONTROLLED 1
#define DPM_SET_MODE_BUFFERED_DEVICE_CONTROLLED 1
...
@@ -157,7 +158,8 @@ typedef struct DPM_PLC_PARAMETERtag {
...
@@ -157,7 +158,8 @@ typedef struct DPM_PLC_PARAMETERtag {
bSlStateMethod
;
/* defines the update method od Sl_State field */
bSlStateMethod
;
/* defines the update method od Sl_State field */
#define DPM_SL_STATE_NOT_SYCHRONOUS 0
#define DPM_SL_STATE_NOT_SYCHRONOUS 0
#define DPM_SL_STATE_SYCHRONOUS 1
#define DPM_SL_STATE_SYCHRONOUS 1
struct
{
struct
{
unsigned
char
biIdentNumberActive
:
1
;
unsigned
char
biIdentNumberActive
:
1
;
unsigned
char
biHighPriorHandshake
:
1
;
unsigned
char
biHighPriorHandshake
:
1
;
unsigned
char
biReserved
:
6
;
unsigned
char
biReserved
:
6
;
...
@@ -173,9 +175,11 @@ typedef struct DPM_PLC_PARAMETERtag {
...
@@ -173,9 +175,11 @@ typedef struct DPM_PLC_PARAMETERtag {
/* parameter data header structure of a slave station,
/* parameter data header structure of a slave station,
described in norm EN 50170 page 101 */
described in norm EN 50170 page 101 */
typedef
struct
DPM_SL_PRM_HEADERtag
{
typedef
struct
DPM_SL_PRM_HEADERtag
{
unsigned
short
usSlaveParaLen
;
/* length of whole parameter data set */
unsigned
short
usSlaveParaLen
;
/* length of whole parameter data set */
struct
{
struct
{
unsigned
char
biReserved1
:
1
;
unsigned
char
biReserved1
:
1
;
unsigned
char
biExtra_Alarm_SAP
:
1
;
unsigned
char
biExtra_Alarm_SAP
:
1
;
unsigned
char
biDPV1_Data_Types
:
1
;
unsigned
char
biDPV1_Data_Types
:
1
;
...
@@ -193,7 +197,8 @@ typedef struct DPM_SL_PRM_HEADERtag {
...
@@ -193,7 +197,8 @@ typedef struct DPM_SL_PRM_HEADERtag {
unsigned
char
bDiag_Upd_Delay
;
unsigned
char
bDiag_Upd_Delay
;
unsigned
char
bAlarm_Mode
;
unsigned
char
bAlarm_Mode
;
struct
{
struct
{
unsigned
char
biNA_to_Abort
:
1
;
unsigned
char
biNA_to_Abort
:
1
;
unsigned
char
biIgnore_Aclr
:
1
;
unsigned
char
biIgnore_Aclr
:
1
;
unsigned
char
abiReserved
:
6
;
unsigned
char
abiReserved
:
6
;
...
@@ -207,13 +212,16 @@ typedef struct DPM_SL_PRM_HEADERtag {
...
@@ -207,13 +212,16 @@ typedef struct DPM_SL_PRM_HEADERtag {
described in norm EN 50170 page 51 */
described in norm EN 50170 page 51 */
#define MAX_USR_PRM_LEN 237
#define MAX_USR_PRM_LEN 237
typedef
struct
DPV0_PRMtag
{
typedef
struct
DPV0_PRMtag
{
unsigned
char
abUsr_Prm_Data
[
MAX_USR_PRM_LEN
];
/* user parameter data without
unsigned
char
abUsr_Prm_Data
[
MAX_USR_PRM_LEN
];
/* user parameter data without
DPV1-bytes */
DPV1-bytes */
}
GNUC_PACKED
DPV0_PRM
;
}
GNUC_PACKED
DPV0_PRM
;
typedef
struct
DPV1_USR_PRMtag
{
typedef
struct
DPV1_USR_PRMtag
struct
{
{
struct
{
unsigned
char
bReserved1
:
2
;
unsigned
char
bReserved1
:
2
;
unsigned
char
bWD_Base_1ms
:
1
;
unsigned
char
bWD_Base_1ms
:
1
;
unsigned
char
bReserved2
:
2
;
unsigned
char
bReserved2
:
2
;
...
@@ -222,7 +230,8 @@ typedef struct DPV1_USR_PRMtag {
...
@@ -222,7 +230,8 @@ typedef struct DPV1_USR_PRMtag {
unsigned
char
bDPV1_Enable
:
1
;
unsigned
char
bDPV1_Enable
:
1
;
}
GNUC_PACKED
DPV1_Status_1
;
}
GNUC_PACKED
DPV1_Status_1
;
struct
{
struct
{
unsigned
char
bRun_On_Cfg_Fault
:
1
;
unsigned
char
bRun_On_Cfg_Fault
:
1
;
unsigned
char
bReserved1
:
1
;
unsigned
char
bReserved1
:
1
;
unsigned
char
bEnable_Update_Alarm
:
1
;
unsigned
char
bEnable_Update_Alarm
:
1
;
...
@@ -233,26 +242,30 @@ typedef struct DPV1_USR_PRMtag {
...
@@ -233,26 +242,30 @@ typedef struct DPV1_USR_PRMtag {
unsigned
char
bEnable_Pull_plug_Alarm
:
1
;
unsigned
char
bEnable_Pull_plug_Alarm
:
1
;
}
GNUC_PACKED
DPV1_Status_2
;
}
GNUC_PACKED
DPV1_Status_2
;
struct
{
struct
{
unsigned
char
bAlarm_Mode
:
3
;
unsigned
char
bAlarm_Mode
:
3
;
unsigned
char
bIsoM_Req
:
1
;
unsigned
char
bIsoM_Req
:
1
;
unsigned
char
bReserved1
:
4
;
unsigned
char
bReserved1
:
4
;
}
GNUC_PACKED
DPV1_Status_3
;
}
GNUC_PACKED
DPV1_Status_3
;
}
GNUC_PACKED
DPV1_USR_PRM
;
}
GNUC_PACKED
DPV1_USR_PRM
;
typedef
struct
DPV1_PRMtag
{
typedef
struct
DPV1_PRMtag
{
DPV1_USR_PRM
tDpv1
;
DPV1_USR_PRM
tDpv1
;
unsigned
char
abUsr_Prm_Data
[
MAX_USR_PRM_LEN
-
sizeof
(
DPV1_USR_PRM
)];
unsigned
char
abUsr_Prm_Data
[
MAX_USR_PRM_LEN
-
sizeof
(
DPV1_USR_PRM
)];
}
GNUC_PACKED
DPV1_PRM
;
}
GNUC_PACKED
DPV1_PRM
;
typedef
struct
DPV2_HEADERtag
{
typedef
struct
DPV2_HEADERtag
{
unsigned
char
bStructure_Length
;
unsigned
char
bStructure_Length
;
unsigned
char
bStructure_Type
;
unsigned
char
bStructure_Type
;
unsigned
char
bSlot_Number
;
unsigned
char
bSlot_Number
;
unsigned
char
bReserved
;
unsigned
char
bReserved
;
}
GNUC_PACKED
DPV2_HEADER
;
}
GNUC_PACKED
DPV2_HEADER
;
typedef
struct
DPV2_ISOM_PRMtag
{
typedef
struct
DPV2_ISOM_PRMtag
{
DPV2_HEADER
tDpv2Header
;
DPV2_HEADER
tDpv2Header
;
unsigned
char
bVersion
;
unsigned
char
bVersion
;
unsigned
long
bTBase_Dp
;
unsigned
long
bTBase_Dp
;
...
@@ -266,29 +279,34 @@ typedef struct DPV2_ISOM_PRMtag {
...
@@ -266,29 +279,34 @@ typedef struct DPV2_ISOM_PRMtag {
unsigned
short
bTPll_D
;
unsigned
short
bTPll_D
;
}
GNUC_PACKED
DPV2_ISOM_PRM
;
}
GNUC_PACKED
DPV2_ISOM_PRM
;
typedef
struct
DPV2_DBX_LINK_FILTERtag
{
typedef
struct
DPV2_DBX_LINK_FILTERtag
{
unsigned
char
bPublisher_Addr
;
unsigned
char
bPublisher_Addr
;
unsigned
char
bPublisher_Length
;
unsigned
char
bPublisher_Length
;
unsigned
char
bSample_Offset
;
unsigned
char
bSample_Offset
;
unsigned
char
bSample_Length
;
unsigned
char
bSample_Length
;
}
GNUC_PACKED
DPV2_DBX_LINK_FILTER
;
}
GNUC_PACKED
DPV2_DBX_LINK_FILTER
;
typedef
struct
DPV2_DBX_LINKtag
{
typedef
struct
DPV2_DBX_LINKtag
{
DPV2_HEADER
tDpv2Header
;
DPV2_HEADER
tDpv2Header
;
unsigned
char
bVersion
;
unsigned
char
bVersion
;
DPV2_DBX_LINK_FILTER
tDbxLinkFilter
;
DPV2_DBX_LINK_FILTER
tDbxLinkFilter
;
}
GNUC_PACKED
DPV2_DBX_LINK
;
}
GNUC_PACKED
DPV2_DBX_LINK
;
typedef
struct
DPV2_PRMtag
{
typedef
struct
DPV2_PRMtag
{
DPV1_USR_PRM
tDpv1
;
DPV1_USR_PRM
tDpv1
;
DPV2_ISOM_PRM
tDpv2Iso
;
DPV2_ISOM_PRM
tDpv2Iso
;
unsigned
char
abUsr_Prm_Data
[
MAX_USR_PRM_LEN
-
sizeof
(
DPV1_USR_PRM
)
unsigned
char
abUsr_Prm_Data
[
MAX_USR_PRM_LEN
-
sizeof
(
DPV1_USR_PRM
)
-
-
sizeof
(
DPV2_ISOM_PRM
)];
sizeof
(
DPV2_ISOM_PRM
)];
}
GNUC_PACKED
DPV2_PRM
;
}
GNUC_PACKED
DPV2_PRM
;
typedef
struct
DPM_SL_PRM_PRM_DATAtag
{
typedef
struct
DPM_SL_PRM_PRM_DATAtag
{
unsigned
short
usPrmDataLen
;
/* length of PRM_PRM_DATA */
unsigned
short
usPrmDataLen
;
/* length of PRM_PRM_DATA */
struct
{
struct
{
unsigned
char
bReserved
:
3
;
unsigned
char
bReserved
:
3
;
unsigned
char
bWD_On
:
1
;
unsigned
char
bWD_On
:
1
;
unsigned
char
bFreeze_Req
:
1
;
unsigned
char
bFreeze_Req
:
1
;
...
@@ -315,7 +333,8 @@ typedef struct DPM_SL_PRM_PRM_DATAtag {
...
@@ -315,7 +333,8 @@ typedef struct DPM_SL_PRM_PRM_DATAtag {
described in norm EN 50170 page 55 */
described in norm EN 50170 page 55 */
#define MAX_CFG_DATA_LEN 244
#define MAX_CFG_DATA_LEN 244
typedef
struct
DPM_SL_PRM_CFG_DATAtag
{
typedef
struct
DPM_SL_PRM_CFG_DATAtag
{
unsigned
short
usCfg_Data_Len
;
/* length of CFG_DATA */
unsigned
short
usCfg_Data_Len
;
/* length of CFG_DATA */
unsigned
char
abCfg_Data
[
MAX_CFG_DATA_LEN
];
/* configuration data of the
unsigned
char
abCfg_Data
[
MAX_CFG_DATA_LEN
];
/* configuration data of the
slave station */
slave station */
...
@@ -325,7 +344,8 @@ typedef struct DPM_SL_PRM_CFG_DATAtag {
...
@@ -325,7 +344,8 @@ typedef struct DPM_SL_PRM_CFG_DATAtag {
described in norm EN 50170 page 103 */
described in norm EN 50170 page 103 */
#define MAX_EA_OFFSET_LEN 244
#define MAX_EA_OFFSET_LEN 244
typedef
struct
DPM_SL_PRM_ADD_TABtag
{
typedef
struct
DPM_SL_PRM_ADD_TABtag
{
unsigned
short
usAdd_Tab_Len
;
/* length of ADD_TAB */
unsigned
short
usAdd_Tab_Len
;
/* length of ADD_TAB */
unsigned
char
bInput_Count
;
/* counter of following input offsets */
unsigned
char
bInput_Count
;
/* counter of following input offsets */
unsigned
char
bOutput_Count
;
/* counter of following ouput offsets */
unsigned
char
bOutput_Count
;
/* counter of following ouput offsets */
...
@@ -337,7 +357,8 @@ typedef struct DPM_SL_PRM_ADD_TABtag {
...
@@ -337,7 +357,8 @@ typedef struct DPM_SL_PRM_ADD_TABtag {
described in norm EN 50170 page 103 */
described in norm EN 50170 page 103 */
#define MAX_SL_PRM_LEN 100
#define MAX_SL_PRM_LEN 100
typedef
struct
DPM_SL_PRM_USR_DATAtag
{
typedef
struct
DPM_SL_PRM_USR_DATAtag
{
unsigned
short
usSlave_Usr_Data_Len
;
/* length of USR_DATA */
unsigned
short
usSlave_Usr_Data_Len
;
/* length of USR_DATA */
unsigned
char
abSlave_Usr_Data
[
MAX_SL_PRM_LEN
];
/* user paramteres */
unsigned
char
abSlave_Usr_Data
[
MAX_SL_PRM_LEN
];
/* user paramteres */
}
GNUC_PACKED
DPM_SL_PRM_USR_DATA
;
}
GNUC_PACKED
DPM_SL_PRM_USR_DATA
;
...
@@ -348,7 +369,8 @@ typedef struct DPM_SL_PRM_USR_DATAtag {
...
@@ -348,7 +369,8 @@ typedef struct DPM_SL_PRM_USR_DATAtag {
/* master parameter 'DPM_Bus_Dp' data set
/* master parameter 'DPM_Bus_Dp' data set
described in norm DIN 19245-T3 page 98 */
described in norm DIN 19245-T3 page 98 */
typedef
struct
DPM_BUS_DPtag
{
typedef
struct
DPM_BUS_DPtag
{
unsigned
short
usBus_Para_Len
;
/* length of BUS_DP */
unsigned
short
usBus_Para_Len
;
/* length of BUS_DP */
unsigned
char
bFDL_Add
;
/* master address */
unsigned
char
bFDL_Add
;
/* master address */
unsigned
char
bBaudrate
;
/* baudrate, see. #defines */
unsigned
char
bBaudrate
;
/* baudrate, see. #defines */
...
@@ -373,7 +395,8 @@ typedef struct DPM_BUS_DPtag {
...
@@ -373,7 +395,8 @@ typedef struct DPM_BUS_DPtag {
unsigned
char
bG
;
/* gap update */
unsigned
char
bG
;
/* gap update */
unsigned
char
bHSA
;
/* highest active station address */
unsigned
char
bHSA
;
/* highest active station address */
unsigned
char
bMax_Retry_Limit
;
/* retries if error occurs */
unsigned
char
bMax_Retry_Limit
;
/* retries if error occurs */
struct
{
struct
{
unsigned
char
bReserved
:
7
;
unsigned
char
bReserved
:
7
;
unsigned
char
bError_Action_Flag
:
1
;
unsigned
char
bError_Action_Flag
:
1
;
}
GNUC_PACKED
Bp_Flag
;
/* auto_clear on/off */
}
GNUC_PACKED
Bp_Flag
;
/* auto_clear on/off */
...
@@ -392,8 +415,10 @@ typedef struct DPM_BUS_DPtag {
...
@@ -392,8 +415,10 @@ typedef struct DPM_BUS_DPtag {
#define MAX_EXT_DIAG_LEN 100
#define MAX_EXT_DIAG_LEN 100
/* slave specific diagnostic structure
/* slave specific diagnostic structure
described in norm DIN 19245-T3 page 41 */
described in norm DIN 19245-T3 page 41 */
typedef
struct
DPM_SLAVE_SINGLE_DIAGNOTICStag
{
typedef
struct
DPM_SLAVE_SINGLE_DIAGNOTICStag
struct
{
{
struct
{
unsigned
char
bStation_Non_Existent
:
1
;
/* no response */
unsigned
char
bStation_Non_Existent
:
1
;
/* no response */
unsigned
char
bStation_Not_Ready
:
1
;
/* station not ready */
unsigned
char
bStation_Not_Ready
:
1
;
/* station not ready */
unsigned
char
bCfg_Fault
:
1
;
/* configuration fault */
unsigned
char
bCfg_Fault
:
1
;
/* configuration fault */
...
@@ -405,7 +430,8 @@ typedef struct DPM_SLAVE_SINGLE_DIAGNOTICStag {
...
@@ -405,7 +430,8 @@ typedef struct DPM_SLAVE_SINGLE_DIAGNOTICStag {
unsigned
char
bMaster_Lock
:
1
;
/* locked by a master */
unsigned
char
bMaster_Lock
:
1
;
/* locked by a master */
}
GNUC_PACKED
Stationstatus_1
;
}
GNUC_PACKED
Stationstatus_1
;
struct
{
struct
{
unsigned
char
bPrm_Req
:
1
;
/* request new parameters */
unsigned
char
bPrm_Req
:
1
;
/* request new parameters */
unsigned
char
bStat_Diag
:
1
;
/* static diagnostic */
unsigned
char
bStat_Diag
:
1
;
/* static diagnostic */
unsigned
char
bTrue
:
1
;
/* set to 1 by a slave */
unsigned
char
bTrue
:
1
;
/* set to 1 by a slave */
...
@@ -417,7 +443,8 @@ typedef struct DPM_SLAVE_SINGLE_DIAGNOTICStag {
...
@@ -417,7 +443,8 @@ typedef struct DPM_SLAVE_SINGLE_DIAGNOTICStag {
unsigned
char
bDeactivated
:
1
;
/* slave deactivated */
unsigned
char
bDeactivated
:
1
;
/* slave deactivated */
}
GNUC_PACKED
Stationstatus_2
;
}
GNUC_PACKED
Stationstatus_2
;
struct
{
struct
{
unsigned
char
bReserved
:
7
;
unsigned
char
bReserved
:
7
;
unsigned
char
bExt_Diag_Overflow
:
1
;
/* ext. diagnostic overflow */
unsigned
char
bExt_Diag_Overflow
:
1
;
/* ext. diagnostic overflow */
}
GNUC_PACKED
Stationstatus_3
;
}
GNUC_PACKED
Stationstatus_3
;
...
@@ -434,9 +461,11 @@ typedef struct DPM_SLAVE_SINGLE_DIAGNOTICStag {
...
@@ -434,9 +461,11 @@ typedef struct DPM_SLAVE_SINGLE_DIAGNOTICStag {
/* Protocol master state structure */
/* Protocol master state structure */
/* ======================================================================== */
/* ======================================================================== */
typedef
struct
DPM_DIAGNOSTICStag
{
typedef
struct
DPM_DIAGNOSTICStag
{
/* unsigned char field to show bus and master main errors */
/* unsigned char field to show bus and master main errors */
struct
{
struct
{
unsigned
char
bCtrl
:
1
;
/* wrong parameterization */
unsigned
char
bCtrl
:
1
;
/* wrong parameterization */
unsigned
char
bAClr
:
1
;
/* auto_clear activated */
unsigned
char
bAClr
:
1
;
/* auto_clear activated */
unsigned
char
bNonExch
:
1
;
/* no data exchange to at least on station */
unsigned
char
bNonExch
:
1
;
/* no data exchange to at least on station */
...
@@ -455,7 +484,8 @@ typedef struct DPM_DIAGNOSTICStag {
...
@@ -455,7 +484,8 @@ typedef struct DPM_DIAGNOSTICStag {
#define OPERATE 0xC0
#define OPERATE 0xC0
/* location of error and error code */
/* location of error and error code */
struct
{
struct
{
unsigned
char
bErr_Rem_Adr
;
/* 0-125, 255 */
unsigned
char
bErr_Rem_Adr
;
/* 0-125, 255 */
#define MST_ERR 0xFF
#define MST_ERR 0xFF
...
@@ -511,19 +541,22 @@ typedef struct DPM_DIAGNOSTICStag {
...
@@ -511,19 +541,22 @@ typedef struct DPM_DIAGNOSTICStag {
#define UNDEFINED 1
#define UNDEFINED 1
typedef
struct
{
typedef
struct
{
unsigned
char
abNetwork_Address
[
6
];
/* network address according ISO/OSI */
unsigned
char
abNetwork_Address
[
6
];
/* network address according ISO/OSI */
unsigned
char
abMAC_Address
[
UNDEFINED
];
/* MAC_Address */
unsigned
char
abMAC_Address
[
UNDEFINED
];
/* MAC_Address */
}
GNUC_PACKED
ADDR_EXTENTION
;
}
GNUC_PACKED
ADDR_EXTENTION
;
typedef
struct
{
typedef
struct
{
unsigned
char
bAPI
;
/* application process instance */
unsigned
char
bAPI
;
/* application process instance */
unsigned
char
bSCL
;
/* access level */
unsigned
char
bSCL
;
/* access level */
}
GNUC_PACKED
ADDR
;
}
GNUC_PACKED
ADDR
;
#define MAX_ADD_TABLE_LEN 235
#define MAX_ADD_TABLE_LEN 235
typedef
struct
{
typedef
struct
{
#define TYPE_EXT_OFF 0
/* no optional Network/MAC address */
#define TYPE_EXT_OFF 0
/* no optional Network/MAC address */
#define TYPE_EXT_ON 1
/* optional Network/MAC address available */
#define TYPE_EXT_ON 1
/* optional Network/MAC address available */
...
@@ -536,15 +569,18 @@ typedef struct {
...
@@ -536,15 +569,18 @@ typedef struct {
}
GNUC_PACKED
ADD_ADDR_PARAM
;
}
GNUC_PACKED
ADD_ADDR_PARAM
;
typedef
struct
{
typedef
struct
{
unsigned
short
usSend_Timeout
;
/* control time for supervision */
unsigned
short
usSend_Timeout
;
/* control time for supervision */
struct
{
struct
{
unsigned
char
biDPV1_RW
:
1
;
/* support of MSAC2_READ and WRITE */
unsigned
char
biDPV1_RW
:
1
;
/* support of MSAC2_READ and WRITE */
unsigned
char
abiReserved
:
7
;
unsigned
char
abiReserved
:
7
;
}
GNUC_PACKED
bFeatures_Supported_1
;
}
GNUC_PACKED
bFeatures_Supported_1
;
struct
{
struct
{
unsigned
char
abiReserved
:
8
;
unsigned
char
abiReserved
:
8
;
}
GNUC_PACKED
bFeatures_Supported_2
;
}
GNUC_PACKED
bFeatures_Supported_2
;
...
@@ -556,13 +592,16 @@ typedef struct {
...
@@ -556,13 +592,16 @@ typedef struct {
ADD_ADDR_PARAM
tAdd_Addr_Param
;
ADD_ADDR_PARAM
tAdd_Addr_Param
;
}
GNUC_PACKED
DPM_MSAC2M_INITIATE_REQ
;
}
GNUC_PACKED
DPM_MSAC2M_INITIATE_REQ
;
typedef
struct
{
typedef
struct
struct
{
{
struct
{
unsigned
char
biDPV1_RW
:
1
;
/* support of MSAC2_READ and WRITE */
unsigned
char
biDPV1_RW
:
1
;
/* support of MSAC2_READ and WRITE */
unsigned
char
abiReserved
:
7
;
unsigned
char
abiReserved
:
7
;
}
GNUC_PACKED
bFeatures_Supported_1
;
}
GNUC_PACKED
bFeatures_Supported_1
;
struct
{
struct
{
unsigned
char
abiReserved
:
8
;
unsigned
char
abiReserved
:
8
;
}
GNUC_PACKED
bFeatures_Supported_2
;
}
GNUC_PACKED
bFeatures_Supported_2
;
...
@@ -627,7 +666,8 @@ typedef struct {
...
@@ -627,7 +666,8 @@ typedef struct {
/* message command msg.b msg.a */
/* message command msg.b msg.a */
#define DDLM_Slave_Diag 0x42
#define DDLM_Slave_Diag 0x42
typedef
struct
DDLM_SLAVE_DIAG_CONFIRMtag
{
typedef
struct
DDLM_SLAVE_DIAG_CONFIRMtag
{
DPM_SLAVE_SINGLE_DIAGNOSTICS
tDiagData
;
DPM_SLAVE_SINGLE_DIAGNOSTICS
tDiagData
;
}
GNUC_PACKED
DDLM_SLAVE_DIAG_CONFIRM
;
}
GNUC_PACKED
DDLM_SLAVE_DIAG_CONFIRM
;
...
@@ -638,12 +678,14 @@ typedef struct DDLM_SLAVE_DIAG_CONFIRMtag {
...
@@ -638,12 +678,14 @@ typedef struct DDLM_SLAVE_DIAG_CONFIRMtag {
/* message command msg.b msg.a */
/* message command msg.b msg.a */
#define DDLM_Set_Prm 0x4a
#define DDLM_Set_Prm 0x4a
typedef
struct
DDLM_SET_PRM_REQUESTtag
{
typedef
struct
DDLM_SET_PRM_REQUESTtag
{
unsigned
char
bRem_Add
;
unsigned
char
bRem_Add
;
unsigned
char
abUsr_Prm_Data
[
DPM_MAX_LEN_DATA_UNIT
];
unsigned
char
abUsr_Prm_Data
[
DPM_MAX_LEN_DATA_UNIT
];
}
GNUC_PACKED
DDLM_SET_PRM_REQUEST
;
}
GNUC_PACKED
DDLM_SET_PRM_REQUEST
;
typedef
struct
DDLM_SET_PRM_CONFIRMtag
{
typedef
struct
DDLM_SET_PRM_CONFIRMtag
{
unsigned
char
bRem_Add
;
unsigned
char
bRem_Add
;
}
GNUC_PACKED
DDLM_SET_PRM_CONFIRM
;
}
GNUC_PACKED
DDLM_SET_PRM_CONFIRM
;
...
@@ -661,13 +703,15 @@ typedef struct DDLM_SET_PRM_CONFIRMtag {
...
@@ -661,13 +703,15 @@ typedef struct DDLM_SET_PRM_CONFIRMtag {
/* message command msg.b msg.a */
/* message command msg.b msg.a */
#define DDLM_Start_Seq 0x43
#define DDLM_Start_Seq 0x43
typedef
struct
DDLM_START_SEQ_REQUESTtag
{
typedef
struct
DDLM_START_SEQ_REQUESTtag
{
unsigned
char
bReq_Add
;
/* 0 */
unsigned
char
bReq_Add
;
/* 0 */
unsigned
char
bArea_Code
;
/* 0 - 125 */
unsigned
char
bArea_Code
;
/* 0 - 125 */
unsigned
short
usTimeout
;
/* 0 - 65535 */
unsigned
short
usTimeout
;
/* 0 - 65535 */
}
GNUC_PACKED
DDLM_START_SEQ_REQUEST
;
}
GNUC_PACKED
DDLM_START_SEQ_REQUEST
;
typedef
struct
DDLM_START_SEQ_CONFIRMtag
{
typedef
struct
DDLM_START_SEQ_CONFIRMtag
{
unsigned
char
bMax_Len_Data_Unit
;
/* 240 */
unsigned
char
bMax_Len_Data_Unit
;
/* 240 */
}
GNUC_PACKED
DDLM_START_SEQ_CONFIRM
;
}
GNUC_PACKED
DDLM_START_SEQ_CONFIRM
;
...
@@ -680,7 +724,8 @@ typedef struct DDLM_START_SEQ_CONFIRMtag {
...
@@ -680,7 +724,8 @@ typedef struct DDLM_START_SEQ_CONFIRMtag {
#define DPM_DEVICE_PRM 127
#define DPM_DEVICE_PRM 127
/* message data structure */
/* message data structure */
typedef
struct
DDLM_DOWNLOAD_REQUESTtag
{
typedef
struct
DDLM_DOWNLOAD_REQUESTtag
{
unsigned
char
bReq_Add
;
/* 0 */
unsigned
char
bReq_Add
;
/* 0 */
unsigned
char
bArea_Code
;
/* 0 - 125, 127 */
unsigned
char
bArea_Code
;
/* 0 - 125, 127 */
unsigned
short
usAdd_Offset
;
/* 0 - 760 */
unsigned
short
usAdd_Offset
;
/* 0 - 760 */
...
@@ -695,7 +740,8 @@ typedef struct DDLM_DOWNLOAD_REQUESTtag {
...
@@ -695,7 +740,8 @@ typedef struct DDLM_DOWNLOAD_REQUESTtag {
#define DDLM_Upload 0x50
#define DDLM_Upload 0x50
/* message data structure */
/* message data structure */
typedef
struct
DDLM_UPLOAD_REQUESTtag
{
typedef
struct
DDLM_UPLOAD_REQUESTtag
{
unsigned
char
bReq_Add
;
/* 0 */
unsigned
char
bReq_Add
;
/* 0 */
unsigned
char
bArea_Code
;
/* 0 - 125, 127 */
unsigned
char
bArea_Code
;
/* 0 - 125, 127 */
unsigned
short
usAdd_Offset
;
/* 0 - 760 */
unsigned
short
usAdd_Offset
;
/* 0 - 760 */
...
@@ -710,7 +756,8 @@ typedef struct DDLM_UPLOAD_REQUESTtag {
...
@@ -710,7 +756,8 @@ typedef struct DDLM_UPLOAD_REQUESTtag {
#define DDLM_End_Seq 0x45
#define DDLM_End_Seq 0x45
/* message data structure */
/* message data structure */
typedef
struct
DDLM_END_SEQ_REQUESTtag
{
typedef
struct
DDLM_END_SEQ_REQUESTtag
{
unsigned
char
bReq_Add
;
/* 0 */
unsigned
char
bReq_Add
;
/* 0 */
}
GNUC_PACKED
DDLM_END_SEQ_REQUEST
;
}
GNUC_PACKED
DDLM_END_SEQ_REQUEST
;
...
@@ -722,7 +769,8 @@ typedef struct DDLM_END_SEQ_REQUESTtag {
...
@@ -722,7 +769,8 @@ typedef struct DDLM_END_SEQ_REQUESTtag {
#define DDLM_Global_Control 0x46
#define DDLM_Global_Control 0x46
/* message data structure */
/* message data structure */
typedef
struct
DDLM_GLOBAL_CONTROL_REQUESTtag
{
typedef
struct
DDLM_GLOBAL_CONTROL_REQUESTtag
{
unsigned
char
bRem_Add
;
/* 0 - 127 */
unsigned
char
bRem_Add
;
/* 0 - 127 */
unsigned
char
bControl_Command
;
unsigned
char
bControl_Command
;
#define CLEAR_DATA 0x02
#define CLEAR_DATA 0x02
...
@@ -734,7 +782,8 @@ typedef struct DDLM_GLOBAL_CONTROL_REQUESTtag {
...
@@ -734,7 +782,8 @@ typedef struct DDLM_GLOBAL_CONTROL_REQUESTtag {
unsigned
char
bGroup_Select
;
unsigned
char
bGroup_Select
;
}
GNUC_PACKED
DDLM_GLOBAL_CONTROL_REQUEST
;
}
GNUC_PACKED
DDLM_GLOBAL_CONTROL_REQUEST
;
typedef
struct
DDLM_GLOBAL_CONTROL_CONFIRMtag
{
typedef
struct
DDLM_GLOBAL_CONTROL_CONFIRMtag
{
unsigned
char
bRem_Add
;
/* 0 - 127 */
unsigned
char
bRem_Add
;
/* 0 - 127 */
}
GNUC_PACKED
DDLM_GLOBAL_CONTROL_CONFIRM
;
}
GNUC_PACKED
DDLM_GLOBAL_CONTROL_CONFIRM
;
...
@@ -773,12 +822,14 @@ typedef struct DDLM_GLOBAL_CONTROL_CONFIRMtag {
...
@@ -773,12 +822,14 @@ typedef struct DDLM_GLOBAL_CONTROL_CONFIRMtag {
#define DATA_STU_SIZE 244
#define DATA_STU_SIZE 244
typedef
struct
octet_strtag
{
typedef
struct
octet_strtag
{
unsigned
char
bLen
;
/* length of data field 0 to 244 */
unsigned
char
bLen
;
/* length of data field 0 to 244 */
unsigned
char
bValue
[
DATA_STU_SIZE
];
/* data field */
unsigned
char
bValue
[
DATA_STU_SIZE
];
/* data field */
}
GNUC_PACKED
octet_str
;
}
GNUC_PACKED
octet_str
;
typedef
struct
FDL_DATA_ACK_REQ_STUtag
{
typedef
struct
FDL_DATA_ACK_REQ_STUtag
{
unsigned
char
bSsap
;
/* Src.Serv.Acc.Point0-62,255 */
unsigned
char
bSsap
;
/* Src.Serv.Acc.Point0-62,255 */
unsigned
char
bDsap
;
/* Dest.Serv.Acc.Point0-63,255 */
unsigned
char
bDsap
;
/* Dest.Serv.Acc.Point0-63,255 */
unsigned
char
bRem_add_da
;
/* Remote Address 0-126 */
unsigned
char
bRem_add_da
;
/* Remote Address 0-126 */
...
@@ -786,7 +837,8 @@ typedef struct FDL_DATA_ACK_REQ_STUtag {
...
@@ -786,7 +837,8 @@ typedef struct FDL_DATA_ACK_REQ_STUtag {
octet_str
tL_sdu
;
/* data field structure */
octet_str
tL_sdu
;
/* data field structure */
}
GNUC_PACKED
FDL_DATA_ACK_REQ_STU
;
}
GNUC_PACKED
FDL_DATA_ACK_REQ_STU
;
typedef
struct
FDL_DATA_ACK_IND_STUtag
{
typedef
struct
FDL_DATA_ACK_IND_STUtag
{
unsigned
char
bDsap
;
/* Dest.Serv.Acc.Point0-63,255 */
unsigned
char
bDsap
;
/* Dest.Serv.Acc.Point0-63,255 */
unsigned
char
bSsap
;
/* Src.Serv.Acc.Point0-62,255 */
unsigned
char
bSsap
;
/* Src.Serv.Acc.Point0-62,255 */
unsigned
char
bRem_add_da
;
/* Remote Address 0-126 */
unsigned
char
bRem_add_da
;
/* Remote Address 0-126 */
...
@@ -810,7 +862,8 @@ typedef struct FDL_DATA_ACK_IND_STUtag {
...
@@ -810,7 +862,8 @@ typedef struct FDL_DATA_ACK_IND_STUtag {
#define FDL_Send_Data_Reply_Con 0x82
#define FDL_Send_Data_Reply_Con 0x82
#define FDL_Send_Data_Reply_Ind 0xC2
#define FDL_Send_Data_Reply_Ind 0xC2
typedef
struct
FDL_DATA_REPLY_REQ_STUtag
{
typedef
struct
FDL_DATA_REPLY_REQ_STUtag
{
unsigned
char
bSsap
;
/* Source Service Access Point 0 to 126 */
unsigned
char
bSsap
;
/* Source Service Access Point 0 to 126 */
unsigned
char
bDsap
;
/* Destination Service Access Point 0 to 127 */
unsigned
char
bDsap
;
/* Destination Service Access Point 0 to 127 */
unsigned
char
bRem_add_da
;
/* Remote Address in PROFIBUS 0 to 127 */
unsigned
char
bRem_add_da
;
/* Remote Address in PROFIBUS 0 to 127 */
...
@@ -818,7 +871,8 @@ typedef struct FDL_DATA_REPLY_REQ_STUtag {
...
@@ -818,7 +871,8 @@ typedef struct FDL_DATA_REPLY_REQ_STUtag {
octet_str
tL_sdu
;
/* data field structure */
octet_str
tL_sdu
;
/* data field structure */
}
GNUC_PACKED
FDL_DATA_REPLY_REQ_STU
;
}
GNUC_PACKED
FDL_DATA_REPLY_REQ_STU
;
typedef
struct
FDL_DATA_REPLY_CON_STUtag
{
typedef
struct
FDL_DATA_REPLY_CON_STUtag
{
unsigned
char
bSsap
;
/* Source Service Access Point 0 to 126 */
unsigned
char
bSsap
;
/* Source Service Access Point 0 to 126 */
unsigned
char
bDsap
;
/* Destination Service Access Point 0 to 127 */
unsigned
char
bDsap
;
/* Destination Service Access Point 0 to 127 */
unsigned
char
bRem_add_da
;
/* Remote Address in PROFIBUS 0 to 127 */
unsigned
char
bRem_add_da
;
/* Remote Address in PROFIBUS 0 to 127 */
...
@@ -827,7 +881,8 @@ typedef struct FDL_DATA_REPLY_CON_STUtag {
...
@@ -827,7 +881,8 @@ typedef struct FDL_DATA_REPLY_CON_STUtag {
octet_str
tL_sdu
;
/* data field structure */
octet_str
tL_sdu
;
/* data field structure */
}
GNUC_PACKED
FDL_DATA_REPLY_CON_STU
;
}
GNUC_PACKED
FDL_DATA_REPLY_CON_STU
;
typedef
struct
FDL_DATA_REPLY_IND_STUtag
{
typedef
struct
FDL_DATA_REPLY_IND_STUtag
{
unsigned
char
bDsap
;
/* Destination Service Access Point 0 to 127 */
unsigned
char
bDsap
;
/* Destination Service Access Point 0 to 127 */
unsigned
char
bSsap
;
/* Source Service Access Point 0 to 126 */
unsigned
char
bSsap
;
/* Source Service Access Point 0 to 126 */
unsigned
char
bRem_add_da
;
/* Remote Address in PROFIBUS 0 to 127 */
unsigned
char
bRem_add_da
;
/* Remote Address in PROFIBUS 0 to 127 */
...
@@ -848,7 +903,8 @@ typedef struct FDL_DATA_REPLY_IND_STUtag {
...
@@ -848,7 +903,8 @@ typedef struct FDL_DATA_REPLY_IND_STUtag {
#define FDL_Reply_Update_Req 0x83
#define FDL_Reply_Update_Req 0x83
typedef
struct
FDL_REPLY_UPDATE_REQ_STUtag
{
typedef
struct
FDL_REPLY_UPDATE_REQ_STUtag
{
unsigned
char
bSsap
;
/* Src.Serv.Acc.Point 0-62 */
unsigned
char
bSsap
;
/* Src.Serv.Acc.Point 0-62 */
unsigned
char
bDsap
;
/* not used */
unsigned
char
bDsap
;
/* not used */
unsigned
char
bRem_add_da
;
/* not used */
unsigned
char
bRem_add_da
;
/* not used */
...
@@ -857,7 +913,8 @@ typedef struct FDL_REPLY_UPDATE_REQ_STUtag {
...
@@ -857,7 +913,8 @@ typedef struct FDL_REPLY_UPDATE_REQ_STUtag {
octet_str
tL_sdu
;
/* data field structure */
octet_str
tL_sdu
;
/* data field structure */
}
GNUC_PACKED
FDL_REPLY_UPDATE_REQ_STU
;
}
GNUC_PACKED
FDL_REPLY_UPDATE_REQ_STU
;
typedef
struct
FDL_REPLY_UPDATE_CON_STUtag
{
typedef
struct
FDL_REPLY_UPDATE_CON_STUtag
{
unsigned
char
bSsap
;
/* Src.Serv.Acc.Point 0-62 */
unsigned
char
bSsap
;
/* Src.Serv.Acc.Point 0-62 */
unsigned
char
bDsap
;
/* Dest.Serv.Acc.Point 0-63 */
unsigned
char
bDsap
;
/* Dest.Serv.Acc.Point 0-63 */
unsigned
char
bRem_add_da
;
/* Remote Address 0-126 */
unsigned
char
bRem_add_da
;
/* Remote Address 0-126 */
...
@@ -872,7 +929,8 @@ typedef struct FDL_REPLY_UPDATE_CON_STUtag {
...
@@ -872,7 +929,8 @@ typedef struct FDL_REPLY_UPDATE_CON_STUtag {
#define FDL_SSap_Activate_req 0x97
#define FDL_SSap_Activate_req 0x97
#define FDL_SSap_Activate_con 0x97
#define FDL_SSap_Activate_con 0x97
typedef
struct
FDL_SAP_ACTIVATE_REQ_STUtag
{
typedef
struct
FDL_SAP_ACTIVATE_REQ_STUtag
{
unsigned
char
bSsap
;
/* Source Service Access Point 0-63,65 */
unsigned
char
bSsap
;
/* Source Service Access Point 0-63,65 */
unsigned
char
bAccess
;
/* Accessright = 255 */
unsigned
char
bAccess
;
/* Accessright = 255 */
unsigned
char
bService_list_length
;
/* Length of followed list = 4 */
unsigned
char
bService_list_length
;
/* Length of followed list = 4 */
...
@@ -889,7 +947,8 @@ typedef struct FDL_SAP_ACTIVATE_REQ_STUtag {
...
@@ -889,7 +947,8 @@ typedef struct FDL_SAP_ACTIVATE_REQ_STUtag {
unsigned
char
abRole_in_service
[
4
];
/* Configuration for the service */
unsigned
char
abRole_in_service
[
4
];
/* Configuration for the service */
struct
{
struct
{
unsigned
char
bReq_low
;
/* Maximum length of buffer = 240 */
unsigned
char
bReq_low
;
/* Maximum length of buffer = 240 */
unsigned
char
bReq_high
;
/* Maximum length of buffer = 240 */
unsigned
char
bReq_high
;
/* Maximum length of buffer = 240 */
unsigned
char
bInd_low
;
/* Maximum length of buffer = 240 */
unsigned
char
bInd_low
;
/* Maximum length of buffer = 240 */
...
@@ -898,7 +957,8 @@ typedef struct FDL_SAP_ACTIVATE_REQ_STUtag {
...
@@ -898,7 +957,8 @@ typedef struct FDL_SAP_ACTIVATE_REQ_STUtag {
}
GNUC_PACKED
FDL_SAP_ACTIVATE_REQ_STU
;
}
GNUC_PACKED
FDL_SAP_ACTIVATE_REQ_STU
;
typedef
struct
FDL_SAP_ACTIVATE_CON_STUtag
{
typedef
struct
FDL_SAP_ACTIVATE_CON_STUtag
{
unsigned
char
bSsap
;
/* Src. Service Access Pnt */
unsigned
char
bSsap
;
/* Src. Service Access Pnt */
unsigned
char
bM_status
;
unsigned
char
bM_status
;
}
GNUC_PACKED
FDL_SAP_ACTIVATE_CON_STU
;
}
GNUC_PACKED
FDL_SAP_ACTIVATE_CON_STU
;
...
@@ -910,7 +970,8 @@ typedef struct FDL_SAP_ACTIVATE_CON_STUtag {
...
@@ -910,7 +970,8 @@ typedef struct FDL_SAP_ACTIVATE_CON_STUtag {
#define FDL_RSap_Activate_Req 0x98
#define FDL_RSap_Activate_Req 0x98
#define FDL_RSap_Activate_Con 0x98
#define FDL_RSap_Activate_Con 0x98
typedef
struct
FDL_RSAP_ACTIVATE_REQ_STUtag
{
typedef
struct
FDL_RSAP_ACTIVATE_REQ_STUtag
{
unsigned
char
bSsap
;
/* Source Service Access Point 0-63,65 */
unsigned
char
bSsap
;
/* Source Service Access Point 0-63,65 */
unsigned
char
bAccess
;
/* Accessright = 255 */
unsigned
char
bAccess
;
/* Accessright = 255 */
unsigned
char
bIndication_mode
;
unsigned
char
bIndication_mode
;
...
@@ -922,7 +983,8 @@ typedef struct FDL_RSAP_ACTIVATE_REQ_STUtag {
...
@@ -922,7 +983,8 @@ typedef struct FDL_RSAP_ACTIVATE_REQ_STUtag {
}
GNUC_PACKED
FDL_RSAP_ACTIVATE_REQ_STU
;
}
GNUC_PACKED
FDL_RSAP_ACTIVATE_REQ_STU
;
typedef
struct
FDL_RSAP_ACTIVATE_CON_STUtag
{
typedef
struct
FDL_RSAP_ACTIVATE_CON_STUtag
{
unsigned
char
bSsap
;
/* Src. Service Access Pnt */
unsigned
char
bSsap
;
/* Src. Service Access Pnt */
unsigned
char
bM_status
;
unsigned
char
bM_status
;
}
GNUC_PACKED
FDL_RSAP_ACTIVATE_CON_STU
;
}
GNUC_PACKED
FDL_RSAP_ACTIVATE_CON_STU
;
...
@@ -934,11 +996,13 @@ typedef struct FDL_RSAP_ACTIVATE_CON_STUtag {
...
@@ -934,11 +996,13 @@ typedef struct FDL_RSAP_ACTIVATE_CON_STUtag {
#define FDL_Sap_Deactivate_Req 0x9A
#define FDL_Sap_Deactivate_Req 0x9A
#define FDL_Sap_Deactivate_Con 0x9A
#define FDL_Sap_Deactivate_Con 0x9A
typedef
struct
{
typedef
struct
{
unsigned
char
bSsap
;
/* Source Serv. Access Pnt 0-63,255 */
unsigned
char
bSsap
;
/* Source Serv. Access Pnt 0-63,255 */
}
GNUC_PACKED
FDL_SAP_DEACTIVATE_REQ_STU
;
}
GNUC_PACKED
FDL_SAP_DEACTIVATE_REQ_STU
;
typedef
struct
{
typedef
struct
{
unsigned
char
bSsap
;
/* Src. Service Access Pnt 0-63,255 */
unsigned
char
bSsap
;
/* Src. Service Access Pnt 0-63,255 */
unsigned
char
bM_status
;
unsigned
char
bM_status
;
}
GNUC_PACKED
FDL_SAP_DEACTIVATE_CON_STU
;
}
GNUC_PACKED
FDL_SAP_DEACTIVATE_CON_STU
;
...
...
profibus/lib/rt/src/dpsgdl.c
View file @
ce758cd3
/*
/******************************************************************************
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2019 SSAB EMEA AB.
*
* This file is part of ProviewR.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 2 of
* the License, or (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with ProviewR. If not, see <http://www.gnu.org/licenses/>
*
* Linking ProviewR statically or dynamically with other modules is
* making a combined work based on ProviewR. Thus, the terms and
* conditions of the GNU General Public License cover the whole
* combination.
*
* In addition, as a special exception, the copyright holders of
* ProviewR give you permission to, from the build function in the
* ProviewR Configurator, combine ProviewR with modules generated by the
* ProviewR PLC Editor to a PLC program, regardless of the license
* terms of these modules. You may copy and distribute the resulting
* combined work under the terms of your choice, provided that every
* copy of the combined work is accompanied by a complete copy of
* the source code of ProviewR (the version used to produce the
* combined work), being distributed under the terms of the GNU
* General Public License plus this exception.
*/
/*****************************************************************************
* *
* *
*
SOFTING AG
*
*
SOFTING Industrial Automation GmbH
*
* Richard-Reitzner-Allee 6 *
* Richard-Reitzner-Allee 6 *
* D-85540 Haar *
* D-85540 Haar *
* Phone:
++49-89-4 56 56-0
*
* Phone:
(++49)-(0)89-45656-0
*
*
Fax: ++49-89-4 56 56-3 99
*
*
Fax: (++49)-(0)89-45656-399
*
* *
* *
*
Copyright (C) SOFTING AG 1998-2003
*
*
Copyright (C) SOFTING Industrial Automation GmbH 1995-2012
*
* All Rights Reserved *
* All Rights Reserved *
* *
* *
******************************************************************************
******************************************************************************
*
FILE_NAME DPSGDL.C
FILE_NAME DPSGDL.C
...
@@ -55,12 +20,12 @@ MODULE DPSGDL
...
@@ -55,12 +20,12 @@ MODULE DPSGDL
COMPONENT_LIBRARY PAPI Lib
COMPONENT_LIBRARY PAPI Lib
PAPI DLL
PAPI DLL
AUTHOR SOFTING
AG
AUTHOR SOFTING
VERSION 1.
2
0.0.00.release (DP-Slave Stand-Alone for DOS)
VERSION 1.
3
0.0.00.release (DP-Slave Stand-Alone for DOS)
5.22.0.00.release (WIN95/WIN98 and WinNT)
5.22.0.00.release (WIN95/WIN98 and WinNT)
DATE
26-
February-1999
DATE February-1999
STATUS finished
STATUS finished
...
@@ -107,7 +72,9 @@ LOCAL_DATA
...
@@ -107,7 +72,9 @@ LOCAL_DATA
#pragma check_stack(off)
#pragma check_stack(off)
#endif
#endif
FUNCTION
PUBLIC
INT16
dpsgdl_get_data_len
(
IN
INT16
result
,
IN
USIGN8
service
,
FUNCTION
PUBLIC
INT16
dpsgdl_get_data_len
(
IN
INT16
result
,
IN
USIGN8
service
,
IN
USIGN8
primitive
,
IN
USIGN8
FAR
*
data_ptr
,
OUT
INT16
FAR
*
data_len_ptr
)
IN
USIGN8
primitive
,
IN
USIGN8
FAR
*
data_ptr
,
OUT
INT16
FAR
*
data_len_ptr
)
/*------------------------------------------------------------------------*/
/*------------------------------------------------------------------------*/
/* FUNCTIONAL_DESCRIPTION */
/* FUNCTIONAL_DESCRIPTION */
/*------------------------------------------------------------------------*/
/*------------------------------------------------------------------------*/
...
@@ -121,29 +88,33 @@ FUNCTION PUBLIC INT16 dpsgdl_get_data_len(IN INT16 result, IN USIGN8 service,
...
@@ -121,29 +88,33 @@ FUNCTION PUBLIC INT16 dpsgdl_get_data_len(IN INT16 result, IN USIGN8 service,
FUNCTION_BODY
FUNCTION_BODY
switch
(
primitive
)
{
switch
(
primitive
)
{
/*--- USER REQUESTS ----------------------------------------------------*/
/*--- USER REQUESTS ----------------------------------------------------*/
case
REQ
:
{
case
REQ
:
switch
(
service
)
{
{
case
DPS_INIT_SLAVE
:
{
switch
(
service
)
{
case
DPS_INIT_SLAVE
:
{
init_slave_req_ptr
=
(
T_DPS_INIT_SLAVE_REQ
FAR
*
)
data_ptr
;
init_slave_req_ptr
=
(
T_DPS_INIT_SLAVE_REQ
FAR
*
)
data_ptr
;
if
((
init_slave_req_ptr
->
cfg_data_len
==
0
)
if
((
init_slave_req_ptr
->
cfg_data_len
==
0
)
||
||
(
init_slave_req_ptr
->
cfg_data_len
>
DP_MAX_CFG_DATA_LEN
))
{
(
init_slave_req_ptr
->
cfg_data_len
>
DP_MAX_CFG_DATA_LEN
))
result
=
E_IF_INVALID_DATA_SIZE
;
{
return
(
E_IF_INVALID_DATA_SIZE
);
return
(
E_IF_INVALID_DATA_SIZE
);
}
}
if
(
init_slave_req_ptr
->
enhanced_init_data_len
if
(
init_slave_req_ptr
->
enhanced_init_data_len
>
>
sizeof
(
init_slave_req_ptr
->
enhanced_init_data
))
{
sizeof
(
init_slave_req_ptr
->
enhanced_init_data
))
result
=
E_IF_INVALID_DATA_SIZE
;
{
return
(
E_IF_INVALID_DATA_SIZE
);
return
(
E_IF_INVALID_DATA_SIZE
);
}
}
*
data_len_ptr
=
sizeof
(
T_DPS_INIT_SLAVE_REQ
)
*
data_len_ptr
=
sizeof
(
T_DPS_INIT_SLAVE_REQ
)
-
-
(
sizeof
(
init_slave_req_ptr
->
enhanced_init_data
)
(
sizeof
(
init_slave_req_ptr
->
enhanced_init_data
)
-
-
init_slave_req_ptr
->
enhanced_init_data_len
);
init_slave_req_ptr
->
enhanced_init_data_len
);
break
;
break
;
}
/* case DPS_INIT_SLAVE */
}
/* case DPS_INIT_SLAVE */
...
@@ -151,16 +122,18 @@ FUNCTION PUBLIC INT16 dpsgdl_get_data_len(IN INT16 result, IN USIGN8 service,
...
@@ -151,16 +122,18 @@ FUNCTION PUBLIC INT16 dpsgdl_get_data_len(IN INT16 result, IN USIGN8 service,
*
data_len_ptr
=
0
;
*
data_len_ptr
=
0
;
break
;
break
;
case
DPS_SLAVE_DIAG
:
{
case
DPS_SLAVE_DIAG
:
{
slave_diag_req_ptr
=
(
T_DPS_SLAVE_DIAG_REQ
FAR
*
)
data_ptr
;
slave_diag_req_ptr
=
(
T_DPS_SLAVE_DIAG_REQ
FAR
*
)
data_ptr
;
if
(
slave_diag_req_ptr
->
ext_diag_data_len
>
DP_MAX_EXT_DIAG_DATA_LEN
)
{
if
(
slave_diag_req_ptr
->
ext_diag_data_len
>
DP_MAX_EXT_DIAG_DATA_LEN
)
result
=
E_IF_INVALID_DATA_SIZE
;
{
return
(
E_IF_INVALID_DATA_SIZE
);
return
(
E_IF_INVALID_DATA_SIZE
);
}
}
*
data_len_ptr
=
sizeof
(
T_DPS_SLAVE_DIAG_REQ
)
*
data_len_ptr
=
-
(
DP_MAX_EXT_DIAG_DATA_LEN
-
slave_diag_req_ptr
->
ext_diag_data_len
);
sizeof
(
T_DPS_SLAVE_DIAG_REQ
)
-
(
DP_MAX_EXT_DIAG_DATA_LEN
-
slave_diag_req_ptr
->
ext_diag_data_len
);
break
;
break
;
}
}
...
@@ -171,11 +144,9 @@ FUNCTION PUBLIC INT16 dpsgdl_get_data_len(IN INT16 result, IN USIGN8 service,
...
@@ -171,11 +144,9 @@ FUNCTION PUBLIC INT16 dpsgdl_get_data_len(IN INT16 result, IN USIGN8 service,
case
DPS_CHK_CFG
:
case
DPS_CHK_CFG
:
case
DPS_SET_PRM
:
case
DPS_SET_PRM
:
case
DPS_SET_SLAVE_ADD
:
case
DPS_SET_SLAVE_ADD
:
result
=
E_IF_INVALID_PRIMITIVE
;
return
(
E_IF_INVALID_PRIMITIVE
);
return
(
E_IF_INVALID_PRIMITIVE
);
default:
default:
result
=
E_IF_INVALID_SERVICE
;
return
(
E_IF_INVALID_SERVICE
);
return
(
E_IF_INVALID_SERVICE
);
}
/* switch serivce */
}
/* switch serivce */
...
@@ -185,8 +156,10 @@ FUNCTION PUBLIC INT16 dpsgdl_get_data_len(IN INT16 result, IN USIGN8 service,
...
@@ -185,8 +156,10 @@ FUNCTION PUBLIC INT16 dpsgdl_get_data_len(IN INT16 result, IN USIGN8 service,
/*---- USER RESPONSES --------------------------------------------------*/
/*---- USER RESPONSES --------------------------------------------------*/
case
RES
:
{
case
RES
:
switch
(
service
)
{
{
switch
(
service
)
{
case
DPS_CHK_CFG
:
case
DPS_CHK_CFG
:
*
data_len_ptr
=
sizeof
(
T_DPS_CHK_CFG_RES
);
*
data_len_ptr
=
sizeof
(
T_DPS_CHK_CFG_RES
);
break
;
break
;
...
@@ -195,7 +168,6 @@ FUNCTION PUBLIC INT16 dpsgdl_get_data_len(IN INT16 result, IN USIGN8 service,
...
@@ -195,7 +168,6 @@ FUNCTION PUBLIC INT16 dpsgdl_get_data_len(IN INT16 result, IN USIGN8 service,
break
;
break
;
default:
default:
result
=
E_IF_INVALID_SERVICE
;
return
(
E_IF_INVALID_SERVICE
);
return
(
E_IF_INVALID_SERVICE
);
}
/* switch serivce */
}
/* switch serivce */
...
@@ -206,12 +178,10 @@ FUNCTION PUBLIC INT16 dpsgdl_get_data_len(IN INT16 result, IN USIGN8 service,
...
@@ -206,12 +178,10 @@ FUNCTION PUBLIC INT16 dpsgdl_get_data_len(IN INT16 result, IN USIGN8 service,
/*---- WRONG PRIMITIVE -------------------------------------------------*/
/*---- WRONG PRIMITIVE -------------------------------------------------*/
default:
default:
result
=
E_IF_INVALID_PRIMITIVE
;
return
(
E_IF_INVALID_PRIMITIVE
);
return
(
E_IF_INVALID_PRIMITIVE
);
}
/* switch primitive */
}
/* switch primitive */
result
=
E_OK
;
return
(
E_OK
);
return
(
E_OK
);
}
/* dpsgdl_get_data_len */
}
/* dpsgdl_get_data_len */
...
...
profibus/lib/rt/src/fdlgdl.c
View file @
ce758cd3
/*
/******************************************************************************
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2019 SSAB EMEA AB.
*
* This file is part of ProviewR.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 2 of
* the License, or (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with ProviewR. If not, see <http://www.gnu.org/licenses/>
*
* Linking ProviewR statically or dynamically with other modules is
* making a combined work based on ProviewR. Thus, the terms and
* conditions of the GNU General Public License cover the whole
* combination.
*
* In addition, as a special exception, the copyright holders of
* ProviewR give you permission to, from the build function in the
* ProviewR Configurator, combine ProviewR with modules generated by the
* ProviewR PLC Editor to a PLC program, regardless of the license
* terms of these modules. You may copy and distribute the resulting
* combined work under the terms of your choice, provided that every
* copy of the combined work is accompanied by a complete copy of
* the source code of ProviewR (the version used to produce the
* combined work), being distributed under the terms of the GNU
* General Public License plus this exception.
*/
/*****************************************************************************
* *
* *
*
SOFTING AG
*
*
SOFTING Industrial Automation GmbH
*
* Richard-Reitzner-Allee 6 *
* Richard-Reitzner-Allee 6 *
* D-85540 Haar *
* D-85540 Haar *
* Phone:
++49-89-4 56 56-0
*
* Phone:
(++49)-(0)89-45656-0
*
*
Fax: ++49-89-4 56 56-3 99
*
*
Fax: (++49)-(0)89-45656-399
*
* *
* *
*
Copyright (C) SOFTING AG 1995-2003
*
*
Copyright (C) SOFTING Industrial Automation GmbH 1995-2012
*
* All Rights Reserved *
* All Rights Reserved *
* *
* *
******************************************************************************
******************************************************************************
*
FILE_NAME FDLGDL.C
FILE_NAME FDLGDL.C
...
@@ -55,11 +20,11 @@ MODULE FDLGDL
...
@@ -55,11 +20,11 @@ MODULE FDLGDL
COMPONENT_LIBRARY PAPI Lib
COMPONENT_LIBRARY PAPI Lib
PAPI DLL
PAPI DLL
AUTHOR SOFTING
AG
AUTHOR SOFTING
VERSION 5.23.0.00.release
VERSION 5.23.0.00.release
DATE
30-
October-2000
DATE October-2000
STATUS finished
STATUS finished
...
@@ -105,12 +70,13 @@ LOCAL_DATA
...
@@ -105,12 +70,13 @@ LOCAL_DATA
#pragma check_stack(off)
#pragma check_stack(off)
#endif
#endif
FUNCTION
PUBLIC
INT16
fdlgdl_get_data_len
(
IN
INT16
result
,
/* Service-Result */
FUNCTION
PUBLIC
INT16
fdlgdl_get_data_len
(
IN
INT16
result
,
/* Service-Result */
IN
USIGN8
service
,
/* Service */
IN
USIGN8
service
,
/* Service */
IN
USIGN8
primitive
,
/* Service-Primitive */
IN
USIGN8
primitive
,
/* Service-Primitive */
IN
USIGN8
FAR
*
data_ptr
,
/* pointer to data */
IN
USIGN8
FAR
*
data_ptr
,
/* pointer to data */
OUT
INT16
*
data_len_ptr
/* length of data */
OUT
INT16
*
data_len_ptr
/* length of data */
)
)
/*-----------------------------------------------------------------------------
/*-----------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
FUNCTIONAL_DESCRIPTION
...
@@ -129,20 +95,26 @@ possible return values:
...
@@ -129,20 +95,26 @@ possible return values:
*
data_len_ptr
=
0
;
*
data_len_ptr
=
0
;
result
=
E_OK
;
result
=
E_OK
;
if
(
primitive
==
REQ
)
{
if
(
primitive
==
REQ
)
switch
(
service
)
{
{
switch
(
service
)
{
case
FDLIF_SDA
:
case
FDLIF_SDA
:
case
FDLIF_SDN
:
case
FDLIF_SDN
:
case
FDLIF_SRD
:
{
case
FDLIF_SRD
:
{
T_FDLIF_SDN_SDA_SRD_REQ
FAR
*
req
=
(
T_FDLIF_SDN_SDA_SRD_REQ
FAR
*
)
data_ptr
;
T_FDLIF_SDN_SDA_SRD_REQ
FAR
*
req
=
(
T_FDLIF_SDN_SDA_SRD_REQ
FAR
*
)
data_ptr
;
*
data_len_ptr
=
sizeof
(
T_FDLIF_SDN_SDA_SRD_REQ
)
+
req
->
length
;
*
data_len_ptr
=
sizeof
(
T_FDLIF_SDN_SDA_SRD_REQ
)
+
req
->
length
;
}
break
;
}
break
;
case
FDLIF_REPLY_UPDATE
:
case
FDLIF_REPLY_UPDATE
:
case
FDLIF_REPLY_UPDATE_MULTIPLE
:
{
case
FDLIF_REPLY_UPDATE_MULTIPLE
:
{
T_FDLIF_RUP_REQ
FAR
*
req
=
(
T_FDLIF_RUP_REQ
FAR
*
)
data_ptr
;
T_FDLIF_RUP_REQ
FAR
*
req
=
(
T_FDLIF_RUP_REQ
FAR
*
)
data_ptr
;
*
data_len_ptr
=
sizeof
(
T_FDLIF_RUP_REQ
)
+
req
->
length
;
*
data_len_ptr
=
sizeof
(
T_FDLIF_RUP_REQ
)
+
req
->
length
;
}
break
;
}
break
;
case
FDLIF_SET_BUSPARAMETER
:
case
FDLIF_SET_BUSPARAMETER
:
*
data_len_ptr
=
sizeof
(
T_FDLIF_SET_BUSPARAMETER_REQ
);
*
data_len_ptr
=
sizeof
(
T_FDLIF_SET_BUSPARAMETER_REQ
);
...
@@ -177,7 +149,9 @@ possible return values:
...
@@ -177,7 +149,9 @@ possible return values:
result
=
E_IF_INVALID_SERVICE
;
result
=
E_IF_INVALID_SERVICE
;
break
;
break
;
}
}
}
else
{
}
else
{
result
=
E_IF_INVALID_PRIMITIVE
;
result
=
E_IF_INVALID_PRIMITIVE
;
}
}
...
...
profibus/lib/rt/src/fm7gdl.c
View file @
ce758cd3
/*
/******************************************************************************
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2019 SSAB EMEA AB.
*
* This file is part of ProviewR.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 2 of
* the License, or (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with ProviewR. If not, see <http://www.gnu.org/licenses/>
*
* Linking ProviewR statically or dynamically with other modules is
* making a combined work based on ProviewR. Thus, the terms and
* conditions of the GNU General Public License cover the whole
* combination.
*
* In addition, as a special exception, the copyright holders of
* ProviewR give you permission to, from the build function in the
* ProviewR Configurator, combine ProviewR with modules generated by the
* ProviewR PLC Editor to a PLC program, regardless of the license
* terms of these modules. You may copy and distribute the resulting
* combined work under the terms of your choice, provided that every
* copy of the combined work is accompanied by a complete copy of
* the source code of ProviewR (the version used to produce the
* combined work), being distributed under the terms of the GNU
* General Public License plus this exception.
*/
/*****************************************************************************
* *
* *
*
SOFTING AG
*
*
SOFTING Industrial Automation GmbH
*
* Richard-Reitzner-Allee 6 *
* Richard-Reitzner-Allee 6 *
* D-85540 Haar *
* D-85540 Haar *
* Phone:
++49-89-4 56 56-0
*
* Phone:
(++49)-(0)89-45656-0
*
*
Fax: ++49-89-4 56 56-3 99
*
*
Fax: (++49)-(0)89-45656-399
*
* *
* *
*
Copyright (C) SOFTING AG 1995-2003
*
*
Copyright (C) SOFTING Industrial Automation GmbH 1995-2012
*
* All Rights Reserved *
* All Rights Reserved *
* *
* *
******************************************************************************
******************************************************************************
*
FILE_NAME FM7GDL.C
FILE_NAME FM7GDL.C
...
@@ -55,11 +20,11 @@ MODULE FM7GDL
...
@@ -55,11 +20,11 @@ MODULE FM7GDL
COMPONENT_LIBRARY PAPI Lib
COMPONENT_LIBRARY PAPI Lib
PAPI DLL
PAPI DLL
AUTHOR SOFTING
AG
AUTHOR SOFTING
VERSION 5.21.0.00.release
VERSION 5.21.0.00.release
DATE
27-
February-1998
DATE February-1998
STATUS finished
STATUS finished
...
@@ -111,9 +76,10 @@ LOCAL_DATA
...
@@ -111,9 +76,10 @@ LOCAL_DATA
#pragma check_stack(off)
#pragma check_stack(off)
#endif
#endif
FUNCTION
LOCAL
INT16
fm7gdl_get_ctxt_data_len
(
IN
USIGN8
service
,
/* Service */
FUNCTION
LOCAL
INT16
fm7gdl_get_ctxt_data_len
(
IN
USIGN8
service
,
/* Service */
IN
USIGN8
primitive
/* Service-Primitive */
IN
USIGN8
primitive
/* Service-Primitive */
)
)
/*----------------------------------------------------------------------------
/*----------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
FUNCTIONAL_DESCRIPTION
...
@@ -131,17 +97,21 @@ possible return values:
...
@@ -131,17 +97,21 @@ possible return values:
FUNCTION_BODY
FUNCTION_BODY
if
(
service
==
FM7_ABORT
&&
primitive
==
REQ
)
{
if
(
service
==
FM7_ABORT
&&
primitive
==
REQ
)
{
return
(
sizeof
(
T_FM7_ABORT_REQ
));
return
(
sizeof
(
T_FM7_ABORT_REQ
));
}
else
{
}
else
{
return
(
0
);
return
(
0
);
}
}
}
}
FUNCTION
LOCAL
INT16
fm7gdl_get_crl_data_len
(
IN
USIGN8
service
,
/* Service */
FUNCTION
LOCAL
INT16
fm7gdl_get_crl_data_len
(
IN
USIGN8
service
,
/* Service */
IN
USIGN8
primitive
,
/* Service-Primitive */
IN
USIGN8
primitive
,
/* Service-Primitive */
IN
USIGN8
FAR
*
data_ptr
/* pointer to data */
IN
USIGN8
FAR
*
data_ptr
/* pointer to data */
)
)
/*----------------------------------------------------------------------------
/*----------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
FUNCTIONAL_DESCRIPTION
...
@@ -169,7 +139,8 @@ possible return values:
...
@@ -169,7 +139,8 @@ possible return values:
FUNCTION_BODY
FUNCTION_BODY
switch
(
service
)
{
switch
(
service
)
{
case
FM7_LOAD_CRL_LOC
:
case
FM7_LOAD_CRL_LOC
:
case
FM7_LOAD_CRL_REM
:
case
FM7_LOAD_CRL_REM
:
if
(
primitive
==
REQ
)
if
(
primitive
==
REQ
)
...
@@ -179,9 +150,12 @@ possible return values:
...
@@ -179,9 +150,12 @@ possible return values:
case
FM7_READ_CRL_LOC
:
case
FM7_READ_CRL_LOC
:
case
FM7_READ_CRL_REM
:
case
FM7_READ_CRL_REM
:
if
(
primitive
==
REQ
)
{
if
(
primitive
==
REQ
)
{
return
(
sizeof
(
T_READ_CRL_REQ
));
return
(
sizeof
(
T_READ_CRL_REQ
));
}
else
{
}
else
{
T_READ_CRL_CNF
FAR
*
rsp
=
(
T_READ_CRL_CNF
FAR
*
)
data_ptr
;
T_READ_CRL_CNF
FAR
*
rsp
=
(
T_READ_CRL_CNF
FAR
*
)
data_ptr
;
if
(
rsp
->
desired_cr
==
0
)
if
(
rsp
->
desired_cr
==
0
)
...
@@ -199,7 +173,7 @@ FUNCTION LOCAL INT16 fm7gdl_get_s_r_value_data_len(
...
@@ -199,7 +173,7 @@ FUNCTION LOCAL INT16 fm7gdl_get_s_r_value_data_len(
IN
USIGN8
service
,
/* Service */
IN
USIGN8
service
,
/* Service */
IN
USIGN8
primitive
,
/* Service-Primitive */
IN
USIGN8
primitive
,
/* Service-Primitive */
IN
USIGN8
FAR
*
data_ptr
/* pointer to data */
IN
USIGN8
FAR
*
data_ptr
/* pointer to data */
)
)
/*-----------------------------------------------------------------------------
/*-----------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
FUNCTIONAL_DESCRIPTION
...
@@ -224,13 +198,16 @@ possible return values:
...
@@ -224,13 +198,16 @@ possible return values:
FUNCTION_BODY
FUNCTION_BODY
switch
(
service
)
{
switch
(
service
)
{
case
FM7_SET_VALUE_LOC
:
case
FM7_SET_VALUE_LOC
:
case
FM7_SET_VALUE_REM
:
case
FM7_SET_VALUE_REM
:
if
(
primitive
==
REQ
)
{
if
(
primitive
==
REQ
)
{
T_SET_VALUE_REQ
FAR
*
req
=
(
T_SET_VALUE_REQ
FAR
*
)
data_ptr
;
T_SET_VALUE_REQ
FAR
*
req
=
(
T_SET_VALUE_REQ
FAR
*
)
data_ptr
;
return
(
sizeof
(
T_SET_VALUE_REQ
)
+
req
->
length
);
return
(
sizeof
(
T_SET_VALUE_REQ
)
+
req
->
length
);
}
else
}
else
return
(
0
);
return
(
0
);
case
FM7_SET_BUSPARAMETER
:
case
FM7_SET_BUSPARAMETER
:
...
@@ -241,9 +218,12 @@ possible return values:
...
@@ -241,9 +218,12 @@ possible return values:
case
FM7_READ_VALUE_LOC
:
case
FM7_READ_VALUE_LOC
:
case
FM7_READ_VALUE_REM
:
case
FM7_READ_VALUE_REM
:
if
(
primitive
==
REQ
)
{
if
(
primitive
==
REQ
)
{
return
(
sizeof
(
T_READ_VALUE_REQ
));
return
(
sizeof
(
T_READ_VALUE_REQ
));
}
else
{
}
else
{
T_READ_VALUE_CNF
FAR
*
rsp
=
(
T_READ_VALUE_CNF
FAR
*
)
data_ptr
;
T_READ_VALUE_CNF
FAR
*
rsp
=
(
T_READ_VALUE_CNF
FAR
*
)
data_ptr
;
return
(
sizeof
(
T_READ_VALUE_CNF
)
+
rsp
->
length
);
return
(
sizeof
(
T_READ_VALUE_CNF
)
+
rsp
->
length
);
}
}
...
@@ -255,7 +235,7 @@ possible return values:
...
@@ -255,7 +235,7 @@ possible return values:
FUNCTION
LOCAL
INT16
fm7gdl_get_ident_data_len
(
FUNCTION
LOCAL
INT16
fm7gdl_get_ident_data_len
(
IN
USIGN8
primitive
/* Service-Primitive */
IN
USIGN8
primitive
/* Service-Primitive */
)
)
/*-----------------------------------------------------------------------------
/*-----------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
FUNCTIONAL_DESCRIPTION
...
@@ -349,7 +329,7 @@ possible return values:
...
@@ -349,7 +329,7 @@ possible return values:
}
}
FUNCTION
LOCAL
INT16
fm7gdl_get_error_data_len
(
IN
USIGN8
service
/* Service */
FUNCTION
LOCAL
INT16
fm7gdl_get_error_data_len
(
IN
USIGN8
service
/* Service */
)
)
/*-----------------------------------------------------------------------------
/*-----------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
FUNCTIONAL_DESCRIPTION
...
@@ -389,7 +369,8 @@ possible return values:
...
@@ -389,7 +369,8 @@ possible return values:
FUNCTION_BODY
FUNCTION_BODY
switch
(
service
)
{
switch
(
service
)
{
case
FM7_INITIATE
:
case
FM7_INITIATE
:
return
(
sizeof
(
T_FM7_INIT_ERR_CNF
));
return
(
sizeof
(
T_FM7_INIT_ERR_CNF
));
...
@@ -425,12 +406,13 @@ possible return values:
...
@@ -425,12 +406,13 @@ possible return values:
}
}
}
}
FUNCTION
PUBLIC
INT16
fm7gdl_get_data_len
(
IN
INT16
result
,
/* Service-Result */
FUNCTION
PUBLIC
INT16
fm7gdl_get_data_len
(
IN
INT16
result
,
/* Service-Result */
IN
USIGN8
service
,
/* Service */
IN
USIGN8
service
,
/* Service */
IN
USIGN8
primitive
,
/* Service-Primitive */
IN
USIGN8
primitive
,
/* Service-Primitive */
IN
USIGN8
FAR
*
data_ptr
,
/* pointer to data */
IN
USIGN8
FAR
*
data_ptr
,
/* pointer to data */
OUT
INT16
*
data_len_ptr
/* length of data */
OUT
INT16
*
data_len_ptr
/* length of data */
)
)
/*-----------------------------------------------------------------------------
/*-----------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
FUNCTIONAL_DESCRIPTION
...
@@ -448,7 +430,8 @@ possible return values:
...
@@ -448,7 +430,8 @@ possible return values:
*
data_len_ptr
=
0
;
*
data_len_ptr
=
0
;
switch
(
service
)
{
switch
(
service
)
{
case
FM7_READ_CRL_LOC
:
case
FM7_READ_CRL_LOC
:
case
FM7_INIT_LOAD_CRL_LOC
:
case
FM7_INIT_LOAD_CRL_LOC
:
case
FM7_LOAD_CRL_LOC
:
case
FM7_LOAD_CRL_LOC
:
...
@@ -470,8 +453,8 @@ possible return values:
...
@@ -470,8 +453,8 @@ possible return values:
case
FM7_SET_VALUE_REM
:
case
FM7_SET_VALUE_REM
:
case
FM7_READ_VALUE_REM
:
case
FM7_READ_VALUE_REM
:
if
(
result
==
POS
)
if
(
result
==
POS
)
*
data_len_ptr
*
data_len_ptr
=
=
fm7gdl_get_s_r_value_data_len
(
service
,
primitive
,
data_ptr
);
fm7gdl_get_s_r_value_data_len
(
service
,
primitive
,
data_ptr
);
else
else
*
data_len_ptr
=
fm7gdl_get_error_data_len
(
service
);
*
data_len_ptr
=
fm7gdl_get_error_data_len
(
service
);
break
;
break
;
...
@@ -518,6 +501,7 @@ possible return values:
...
@@ -518,6 +501,7 @@ possible return values:
default:
default:
return
(
E_IF_INVALID_SERVICE
);
return
(
E_IF_INVALID_SERVICE
);
break
;
}
}
return
(
E_OK
);
return
(
E_OK
);
...
...
profibus/lib/rt/src/fmbgdl.c
View file @
ce758cd3
/*
/******************************************************************************
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2019 SSAB EMEA AB.
*
* This file is part of ProviewR.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 2 of
* the License, or (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with ProviewR. If not, see <http://www.gnu.org/licenses/>
*
* Linking ProviewR statically or dynamically with other modules is
* making a combined work based on ProviewR. Thus, the terms and
* conditions of the GNU General Public License cover the whole
* combination.
*
* In addition, as a special exception, the copyright holders of
* ProviewR give you permission to, from the build function in the
* ProviewR Configurator, combine ProviewR with modules generated by the
* ProviewR PLC Editor to a PLC program, regardless of the license
* terms of these modules. You may copy and distribute the resulting
* combined work under the terms of your choice, provided that every
* copy of the combined work is accompanied by a complete copy of
* the source code of ProviewR (the version used to produce the
* combined work), being distributed under the terms of the GNU
* General Public License plus this exception.
*/
/*****************************************************************************
* *
* *
*
SOFTING AG
*
*
SOFTING Industrial Automation GmbH
*
* Richard-Reitzner-Allee 6 *
* Richard-Reitzner-Allee 6 *
* D-85540 Haar *
* D-85540 Haar *
* Phone:
++49-89-4 56 56-0
*
* Phone:
(++49)-(0)89-45656-0
*
*
Fax: ++49-89-4 56 56-3 99
*
*
Fax: (++49)-(0)89-45656-399
*
* *
* *
*
Copyright (C) SOFTING AG 1995-2003
*
*
Copyright (C) SOFTING Industrial Automation GmbH 1995-2012
*
* All Rights Reserved *
* All Rights Reserved *
* *
* *
******************************************************************************
******************************************************************************
*
FILE_NAME FMBGDL.C
FILE_NAME FMBGDL.C
...
@@ -55,11 +20,11 @@ MODULE FMBGDL
...
@@ -55,11 +20,11 @@ MODULE FMBGDL
COMPONENT_LIBRARY PAPI Lib
COMPONENT_LIBRARY PAPI Lib
PAPI DLL
PAPI DLL
AUTHOR SOFTING
AG
AUTHOR SOFTING
VERSION 5.
21
.0.00.release
VERSION 5.
45
.0.00.release
DATE
27-February-1998
DATE
October-2009
STATUS finished
STATUS finished
...
@@ -105,12 +70,13 @@ LOCAL_DATA
...
@@ -105,12 +70,13 @@ LOCAL_DATA
#pragma check_stack(off)
#pragma check_stack(off)
#endif
#endif
FUNCTION
PUBLIC
INT16
fmbgdl_get_data_len
(
IN
INT16
result
,
/* Service-Result */
FUNCTION
PUBLIC
INT16
fmbgdl_get_data_len
(
IN
INT16
result
,
/* Service-Result */
IN
USIGN8
service
,
/* Service */
IN
USIGN8
service
,
/* Service */
IN
USIGN8
primitive
,
/* Service-Primitive */
IN
USIGN8
primitive
,
/* Service-Primitive */
IN
USIGN8
FAR
*
data_ptr
,
/* pointer to data */
IN
USIGN8
FAR
*
data_ptr
,
/* pointer to data */
OUT
INT16
*
data_len_ptr
/* length of data */
OUT
INT16
*
data_len_ptr
/* length of data */
)
)
/*-----------------------------------------------------------------------------
/*-----------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
FUNCTIONAL_DESCRIPTION
...
@@ -129,24 +95,29 @@ possible return values:
...
@@ -129,24 +95,29 @@ possible return values:
FUNCTION_BODY
FUNCTION_BODY
if
(
primitive
==
REQ
)
{
if
(
primitive
==
REQ
)
switch
(
service
)
{
{
case
FMB_SET_CONFIGURATION
:
{
switch
(
service
)
T_FMB_SET_CONFIGURATION_REQ
FAR
*
req_ptr
{
=
(
T_FMB_SET_CONFIGURATION_REQ
FAR
*
)
data_ptr
;
case
FMB_SET_CONFIGURATION
:
{
T_FMB_SET_CONFIGURATION_REQ
FAR
*
req_ptr
=
(
T_FMB_SET_CONFIGURATION_REQ
FAR
*
)
data_ptr
;
#ifdef WIN32
#ifdef WIN32
req_ptr
->
sm7_active
&=
0xFE
;
req_ptr
->
sm7_active
&=
0xFE
;
#else
#else
req_ptr
->
sm7_active
=
PB_FALSE
;
req_ptr
->
sm7_active
=
PB_FALSE
;
#endif
#endif
*
data_len_ptr
=
sizeof
(
T_FMB_SET_CONFIGURATION_REQ
);
*
data_len_ptr
=
sizeof
(
T_FMB_SET_CONFIGURATION_REQ
);
}
break
;
}
break
;
case
FMB_SET_BUSPARAMETER
:
case
FMB_SET_BUSPARAMETER
:
*
data_len_ptr
=
sizeof
(
T_FMB_SET_BUSPARAMETER_REQ
);
*
data_len_ptr
=
sizeof
(
T_FMB_SET_BUSPARAMETER_REQ
);
break
;
break
;
case
FMB_SET_VALUE
:
{
case
FMB_SET_VALUE
:
{
T_FMB_SET_VALUE_REQ
FAR
*
req
=
(
T_FMB_SET_VALUE_REQ
FAR
*
)
data_ptr
;
T_FMB_SET_VALUE_REQ
FAR
*
req
=
(
T_FMB_SET_VALUE_REQ
FAR
*
)
data_ptr
;
*
data_len_ptr
=
(
sizeof
(
T_FMB_SET_VALUE_REQ
)
+
req
->
length
);
*
data_len_ptr
=
(
sizeof
(
T_FMB_SET_VALUE_REQ
)
+
req
->
length
);
break
;
break
;
...
@@ -160,6 +131,10 @@ possible return values:
...
@@ -160,6 +131,10 @@ possible return values:
*
data_len_ptr
=
sizeof
(
T_FMB_LSAP_STATUS_REQ
);
*
data_len_ptr
=
sizeof
(
T_FMB_LSAP_STATUS_REQ
);
break
;
break
;
case
FMB_VALIDATE_MASTER
:
*
data_len_ptr
=
sizeof
(
T_FMB_VALIDATE_MASTER_REQ
);
break
;
case
FMB_GET_LIVE_LIST
:
case
FMB_GET_LIVE_LIST
:
case
FMB_READ_BUSPARAMETER
:
case
FMB_READ_BUSPARAMETER
:
case
FMB_EXIT
:
case
FMB_EXIT
:
...
@@ -172,7 +147,9 @@ possible return values:
...
@@ -172,7 +147,9 @@ possible return values:
ret_val
=
E_IF_INVALID_SERVICE
;
ret_val
=
E_IF_INVALID_SERVICE
;
break
;
break
;
}
}
}
else
{
}
else
{
ret_val
=
E_IF_INVALID_PRIMITIVE
;
ret_val
=
E_IF_INVALID_PRIMITIVE
;
}
}
...
...
profibus/lib/rt/src/fmsgdl.c
View file @
ce758cd3
/*
/******************************************************************************
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2019 SSAB EMEA AB.
*
* This file is part of ProviewR.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 2 of
* the License, or (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with ProviewR. If not, see <http://www.gnu.org/licenses/>
*
* Linking ProviewR statically or dynamically with other modules is
* making a combined work based on ProviewR. Thus, the terms and
* conditions of the GNU General Public License cover the whole
* combination.
*
* In addition, as a special exception, the copyright holders of
* ProviewR give you permission to, from the build function in the
* ProviewR Configurator, combine ProviewR with modules generated by the
* ProviewR PLC Editor to a PLC program, regardless of the license
* terms of these modules. You may copy and distribute the resulting
* combined work under the terms of your choice, provided that every
* copy of the combined work is accompanied by a complete copy of
* the source code of ProviewR (the version used to produce the
* combined work), being distributed under the terms of the GNU
* General Public License plus this exception.
*/
/*****************************************************************************
* *
* *
*
SOFTING AG
*
*
SOFTING Industrial Automation GmbH
*
* Richard-Reitzner-Allee 6 *
* Richard-Reitzner-Allee 6 *
* D-85540 Haar *
* D-85540 Haar *
* Phone:
++49-89-4 56 56-0
*
* Phone:
(++49)-(0)89-45656-0
*
*
Fax: ++49-89-4 56 56-3 99
*
*
Fax: (++49)-(0)89-45656-399
*
* *
* *
*
Copyright (C) SOFTING AG 1995-2003
*
*
Copyright (C) SOFTING Industrial Automation GmbH 1995-2012
*
* All Rights Reserved *
* All Rights Reserved *
* *
* *
******************************************************************************
******************************************************************************
*
FILE_NAME FMSGDL.C
FILE_NAME FMSGDL.C
...
@@ -55,11 +20,11 @@ MODULE FMSGDL
...
@@ -55,11 +20,11 @@ MODULE FMSGDL
COMPONENT_LIBRARY PAPI Lib
COMPONENT_LIBRARY PAPI Lib
PAPI DLL
PAPI DLL
AUTHOR SOFTING
AG
AUTHOR SOFTING
VERSION 5.21.0.00.release
VERSION 5.21.0.00.release
DATE
27-
February-1998
DATE February-1998
STATUS finished
STATUS finished
...
@@ -105,9 +70,10 @@ LOCAL_DATA
...
@@ -105,9 +70,10 @@ LOCAL_DATA
#pragma check_stack(off)
#pragma check_stack(off)
#endif
#endif
FUNCTION
LOCAL
INT16
fmsgdl_get_ctxt_data_len
(
IN
USIGN8
service
,
/* Service */
FUNCTION
LOCAL
INT16
fmsgdl_get_ctxt_data_len
(
IN
USIGN8
service
,
/* Service */
IN
USIGN8
primitive
/* Service-Primitive */
IN
USIGN8
primitive
/* Service-Primitive */
)
)
/*-----------------------------------------------------------------------------
/*-----------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
FUNCTIONAL_DESCRIPTION
...
@@ -126,7 +92,8 @@ possible return values:
...
@@ -126,7 +92,8 @@ possible return values:
FUNCTION_BODY
FUNCTION_BODY
switch
(
service
)
{
switch
(
service
)
{
case
FMS_INITIATE
:
case
FMS_INITIATE
:
if
(
primitive
==
REQ
)
if
(
primitive
==
REQ
)
return
(
sizeof
(
T_CTXT_INIT_REQ
));
return
(
sizeof
(
T_CTXT_INIT_REQ
));
...
@@ -144,9 +111,10 @@ possible return values:
...
@@ -144,9 +111,10 @@ possible return values:
}
}
}
}
FUNCTION
LOCAL
INT16
fmsgdl_get_vfd_data_len
(
IN
USIGN8
service
,
/* Service */
FUNCTION
LOCAL
INT16
fmsgdl_get_vfd_data_len
(
IN
USIGN8
service
,
/* Service */
IN
USIGN8
primitive
/* Service-Primitive */
IN
USIGN8
primitive
/* Service-Primitive */
)
)
/*-----------------------------------------------------------------------------
/*-----------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
FUNCTIONAL_DESCRIPTION
...
@@ -168,7 +136,8 @@ possible return values:
...
@@ -168,7 +136,8 @@ possible return values:
FUNCTION_BODY
FUNCTION_BODY
switch
(
service
)
{
switch
(
service
)
{
case
FMS_STATUS
:
case
FMS_STATUS
:
if
(
primitive
==
RES
)
if
(
primitive
==
RES
)
return
(
sizeof
(
T_VFD_STATUS_CNF
));
return
(
sizeof
(
T_VFD_STATUS_CNF
));
...
@@ -204,10 +173,11 @@ possible return values:
...
@@ -204,10 +173,11 @@ possible return values:
}
}
}
}
FUNCTION
LOCAL
INT16
fmsgdl_get_od_data_len
(
IN
USIGN8
service
,
/* Service */
FUNCTION
LOCAL
INT16
fmsgdl_get_od_data_len
(
IN
USIGN8
service
,
/* Service */
IN
USIGN8
primitive
,
/* Service-Primitive */
IN
USIGN8
primitive
,
/* Service-Primitive */
IN
USIGN8
FAR
*
data_ptr
/* pointer to data */
IN
USIGN8
FAR
*
data_ptr
/* pointer to data */
)
)
/*-----------------------------------------------------------------------------
/*-----------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
FUNCTIONAL_DESCRIPTION
...
@@ -233,24 +203,32 @@ possible return values:
...
@@ -233,24 +203,32 @@ possible return values:
FUNCTION_BODY
FUNCTION_BODY
switch
(
service
)
{
switch
(
service
)
{
case
FMS_GET_OD
:
case
FMS_GET_OD
:
if
(
primitive
==
REQ
)
{
if
(
primitive
==
REQ
)
{
return
(
sizeof
(
T_GET_OD_REQ
));
return
(
sizeof
(
T_GET_OD_REQ
));
}
else
{
}
else
{
T_GET_OD_CNF
FAR
*
rsp
=
(
T_GET_OD_CNF
FAR
*
)
data_ptr
;
T_GET_OD_CNF
FAR
*
rsp
=
(
T_GET_OD_CNF
FAR
*
)
data_ptr
;
USIGN8
FAR
*
obj_descr_ptr
=
(
USIGN8
FAR
*
)(
rsp
+
1
);
USIGN8
FAR
*
obj_descr_ptr
=
(
USIGN8
FAR
*
)(
rsp
+
1
);
USIGN16
offset
=
0
;
USIGN16
offset
=
0
;
USIGN16
size
=
0
;
USIGN16
size
=
0
;
USIGN8
i
;
USIGN8
i
;
if
(
rsp
->
no_of_od_descr
!=
0
)
{
if
(
rsp
->
no_of_od_descr
!=
0
)
for
(
i
=
0
;
i
<
rsp
->
no_of_od_descr
;
i
++
)
{
{
for
(
i
=
0
;
i
<
rsp
->
no_of_od_descr
;
i
++
)
{
size
+=
(
obj_descr_ptr
[
offset
]
+
1
);
size
+=
(
obj_descr_ptr
[
offset
]
+
1
);
offset
=
size
;
offset
=
size
;
}
}
return
(
sizeof
(
T_GET_OD_CNF
)
+
size
);
return
(
sizeof
(
T_GET_OD_CNF
)
+
size
);
}
else
{
}
else
{
return
(
0
);
return
(
0
);
}
}
}
}
...
@@ -262,19 +240,22 @@ possible return values:
...
@@ -262,19 +240,22 @@ possible return values:
return
(
0
);
return
(
0
);
case
FMS_PUT_OD
:
case
FMS_PUT_OD
:
if
(
primitive
==
REQ
)
{
if
(
primitive
==
REQ
)
{
T_PUT_OD_REQ
FAR
*
req
=
(
T_PUT_OD_REQ
FAR
*
)
data_ptr
;
T_PUT_OD_REQ
FAR
*
req
=
(
T_PUT_OD_REQ
FAR
*
)
data_ptr
;
USIGN8
FAR
*
obj_descr_ptr
=
(
USIGN8
FAR
*
)(
req
+
1
);
USIGN8
FAR
*
obj_descr_ptr
=
(
USIGN8
FAR
*
)(
req
+
1
);
USIGN16
offset
=
0
;
USIGN16
offset
=
0
;
USIGN16
size
=
0
;
USIGN16
size
=
0
;
USIGN8
i
;
USIGN8
i
;
for
(
i
=
0
;
i
<
req
->
no_of_od_descr
;
i
++
)
{
for
(
i
=
0
;
i
<
req
->
no_of_od_descr
;
i
++
)
{
size
+=
(
obj_descr_ptr
[
offset
]
+
1
);
size
+=
(
obj_descr_ptr
[
offset
]
+
1
);
offset
=
size
;
offset
=
size
;
}
}
return
(
sizeof
(
T_PUT_OD_REQ
)
+
size
);
return
(
sizeof
(
T_PUT_OD_REQ
)
+
size
);
}
else
}
else
return
(
0
);
return
(
0
);
case
FMS_INIT_LOAD_OD_LOC
:
case
FMS_INIT_LOAD_OD_LOC
:
...
@@ -290,33 +271,37 @@ possible return values:
...
@@ -290,33 +271,37 @@ possible return values:
return
(
0
);
return
(
0
);
case
FMS_LOAD_OD_LOC
:
case
FMS_LOAD_OD_LOC
:
if
(
primitive
==
REQ
)
{
if
(
primitive
==
REQ
)
{
T_LOAD_OD_REQ
FAR
*
req
=
(
T_LOAD_OD_REQ
FAR
*
)
data_ptr
;
T_LOAD_OD_REQ
FAR
*
req
=
(
T_LOAD_OD_REQ
FAR
*
)
data_ptr
;
T_OD_NULL_OBJECT
FAR
*
object
T_OD_NULL_OBJECT
FAR
*
object
=
=
(
T_OD_NULL_OBJECT
FAR
*
)
&
req
->
obj_descr
.
id
.
null_obj_descr
;
(
T_OD_NULL_OBJECT
FAR
*
)
&
req
->
obj_descr
.
id
.
null_obj_descr
;
switch
(
object
->
obj_code
)
{
switch
(
object
->
obj_code
)
{
case
TYPE_STRUCT_OBJECT
:
case
TYPE_STRUCT_OBJECT
:
return
(
sizeof
(
T_LOAD_OD_REQ
)
return
(
sizeof
(
T_LOAD_OD_REQ
)
+
+
(
req
->
obj_descr
.
id
.
ds_obj_descr
.
no_of_elements
(
req
->
obj_descr
.
id
.
ds_obj_descr
.
no_of_elements
*
*
sizeof
(
T_OD_DT_LIST
)));
sizeof
(
T_OD_DT_LIST
)));
case
RECORD_OBJECT
:
case
RECORD_OBJECT
:
return
(
sizeof
(
T_LOAD_OD_REQ
)
return
(
sizeof
(
T_LOAD_OD_REQ
)
+
+
(
req
->
obj_descr
.
id
.
r_var_obj_descr
.
no_of_address
(
req
->
obj_descr
.
id
.
r_var_obj_descr
.
no_of_address
*
*
sizeof
(
USIGN32
)));
sizeof
(
USIGN32
)));
case
VAR_LIST_OBJECT
:
case
VAR_LIST_OBJECT
:
return
(
sizeof
(
T_LOAD_OD_REQ
)
return
(
+
(
req
->
obj_descr
.
id
.
vlist_obj_descr
.
no_of_var
*
sizeof
(
USIGN16
)));
sizeof
(
T_LOAD_OD_REQ
)
+
(
req
->
obj_descr
.
id
.
vlist_obj_descr
.
no_of_var
*
sizeof
(
USIGN16
)));
case
INVOCATION_OBJECT
:
case
INVOCATION_OBJECT
:
return
(
sizeof
(
T_LOAD_OD_REQ
)
return
(
sizeof
(
T_LOAD_OD_REQ
)
+
+
(
req
->
obj_descr
.
id
.
pi_obj_descr
.
cnt_dom
*
sizeof
(
USIGN16
)));
(
req
->
obj_descr
.
id
.
pi_obj_descr
.
cnt_dom
*
sizeof
(
USIGN16
)));
default:
default:
return
(
sizeof
(
T_LOAD_OD_REQ
));
return
(
sizeof
(
T_LOAD_OD_REQ
));
}
}
}
else
}
else
return
(
0
);
return
(
0
);
case
FMS_OD_READ_LOC
:
case
FMS_OD_READ_LOC
:
...
@@ -330,10 +315,11 @@ possible return values:
...
@@ -330,10 +315,11 @@ possible return values:
}
}
}
}
FUNCTION
LOCAL
INT16
fmsgdl_get_var_data_len
(
IN
USIGN8
service
,
/* Service */
FUNCTION
LOCAL
INT16
fmsgdl_get_var_data_len
(
IN
USIGN8
service
,
/* Service */
IN
USIGN8
primitive
,
/* Service-Primitive */
IN
USIGN8
primitive
,
/* Service-Primitive */
IN
USIGN8
FAR
*
data_ptr
/* pointer to data */
IN
USIGN8
FAR
*
data_ptr
/* pointer to data */
)
)
/*-----------------------------------------------------------------------------
/*-----------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
FUNCTIONAL_DESCRIPTION
...
@@ -360,89 +346,113 @@ possible return values:
...
@@ -360,89 +346,113 @@ possible return values:
FUNCTION_BODY
FUNCTION_BODY
switch
(
service
)
{
switch
(
service
)
{
case
FMS_READ
:
case
FMS_READ
:
if
(
primitive
==
REQ
)
{
if
(
primitive
==
REQ
)
{
return
(
sizeof
(
T_VAR_READ_REQ
));
return
(
sizeof
(
T_VAR_READ_REQ
));
}
else
{
}
else
{
T_VAR_READ_CNF
FAR
*
rsp
=
(
T_VAR_READ_CNF
FAR
*
)
data_ptr
;
T_VAR_READ_CNF
FAR
*
rsp
=
(
T_VAR_READ_CNF
FAR
*
)
data_ptr
;
return
(
sizeof
(
T_VAR_READ_CNF
)
+
rsp
->
length
);
return
(
sizeof
(
T_VAR_READ_CNF
)
+
rsp
->
length
);
}
}
case
FMS_READ_WITH_TYPE
:
case
FMS_READ_WITH_TYPE
:
if
(
primitive
==
REQ
)
{
if
(
primitive
==
REQ
)
{
return
(
sizeof
(
T_VAR_READ_WITH_TYPE_REQ
));
return
(
sizeof
(
T_VAR_READ_WITH_TYPE_REQ
));
}
else
{
}
T_VAR_READ_WITH_TYPE_CNF
FAR
*
rsp
else
=
(
T_VAR_READ_WITH_TYPE_CNF
FAR
*
)
data_ptr
;
{
return
(
sizeof
(
T_VAR_READ_WITH_TYPE_CNF
)
T_VAR_READ_WITH_TYPE_CNF
FAR
*
rsp
=
+
(
sizeof
(
T_TYPE_DESCR
)
*
rsp
->
no_of_type_descr
)
+
rsp
->
length
);
(
T_VAR_READ_WITH_TYPE_CNF
FAR
*
)
data_ptr
;
return
(
sizeof
(
T_VAR_READ_WITH_TYPE_CNF
)
+
(
sizeof
(
T_TYPE_DESCR
)
*
rsp
->
no_of_type_descr
)
+
rsp
->
length
);
}
}
case
FMS_WRITE
:
case
FMS_WRITE
:
if
(
primitive
==
REQ
)
{
if
(
primitive
==
REQ
)
{
T_VAR_WRITE_REQ
FAR
*
req
=
(
T_VAR_WRITE_REQ
FAR
*
)
data_ptr
;
T_VAR_WRITE_REQ
FAR
*
req
=
(
T_VAR_WRITE_REQ
FAR
*
)
data_ptr
;
return
(
sizeof
(
T_VAR_WRITE_REQ
)
+
req
->
length
);
return
(
sizeof
(
T_VAR_WRITE_REQ
)
+
req
->
length
);
}
else
}
else
return
(
0
);
return
(
0
);
case
FMS_WRITE_WITH_TYPE
:
case
FMS_WRITE_WITH_TYPE
:
if
(
primitive
==
REQ
)
{
if
(
primitive
==
REQ
)
T_VAR_WRITE_WITH_TYPE_REQ
FAR
*
req
{
=
(
T_VAR_WRITE_WITH_TYPE_REQ
FAR
*
)
data_ptr
;
T_VAR_WRITE_WITH_TYPE_REQ
FAR
*
req
=
return
(
sizeof
(
T_VAR_WRITE_WITH_TYPE_REQ
)
(
T_VAR_WRITE_WITH_TYPE_REQ
FAR
*
)
data_ptr
;
+
(
sizeof
(
T_TYPE_DESCR
)
*
req
->
no_of_type_descr
)
+
req
->
length
);
return
(
sizeof
(
T_VAR_WRITE_WITH_TYPE_REQ
)
+
}
else
(
sizeof
(
T_TYPE_DESCR
)
*
req
->
no_of_type_descr
)
+
req
->
length
);
}
else
return
(
0
);
return
(
0
);
case
FMS_INFO_RPT
:
case
FMS_INFO_RPT
:
if
(
primitive
==
REQ
)
{
if
(
primitive
==
REQ
)
{
T_VAR_INFO_RPT_REQ
FAR
*
req
=
(
T_VAR_INFO_RPT_REQ
FAR
*
)
data_ptr
;
T_VAR_INFO_RPT_REQ
FAR
*
req
=
(
T_VAR_INFO_RPT_REQ
FAR
*
)
data_ptr
;
return
(
sizeof
(
T_VAR_INFO_RPT_REQ
)
+
req
->
length
);
return
(
sizeof
(
T_VAR_INFO_RPT_REQ
)
+
req
->
length
);
}
else
}
else
return
(
0
);
return
(
0
);
case
FMS_INFO_RPT_WITH_TYPE
:
case
FMS_INFO_RPT_WITH_TYPE
:
if
(
primitive
==
REQ
)
{
if
(
primitive
==
REQ
)
T_VAR_INFO_RPT_WITH_TYPE_REQ
FAR
*
req
{
=
(
T_VAR_INFO_RPT_WITH_TYPE_REQ
FAR
*
)
data_ptr
;
T_VAR_INFO_RPT_WITH_TYPE_REQ
FAR
*
req
=
return
(
sizeof
(
T_VAR_INFO_RPT_WITH_TYPE_REQ
)
(
T_VAR_INFO_RPT_WITH_TYPE_REQ
FAR
*
)
data_ptr
;
+
(
sizeof
(
T_TYPE_DESCR
)
*
req
->
no_of_type_descr
)
+
req
->
length
);
return
(
sizeof
(
T_VAR_INFO_RPT_WITH_TYPE_REQ
)
+
}
else
(
sizeof
(
T_TYPE_DESCR
)
*
req
->
no_of_type_descr
)
+
req
->
length
);
}
else
return
(
0
);
return
(
0
);
case
FMS_PHYS_READ
:
case
FMS_PHYS_READ
:
if
(
primitive
==
REQ
)
{
if
(
primitive
==
REQ
)
{
return
(
sizeof
(
T_VAR_PHYS_READ_REQ
));
return
(
sizeof
(
T_VAR_PHYS_READ_REQ
));
}
else
{
}
else
{
T_VAR_PHYS_READ_CNF
FAR
*
rsp
=
(
T_VAR_PHYS_READ_CNF
FAR
*
)
data_ptr
;
T_VAR_PHYS_READ_CNF
FAR
*
rsp
=
(
T_VAR_PHYS_READ_CNF
FAR
*
)
data_ptr
;
return
(
sizeof
(
T_VAR_PHYS_READ_CNF
)
+
rsp
->
length
);
return
(
sizeof
(
T_VAR_PHYS_READ_CNF
)
+
rsp
->
length
);
}
}
case
FMS_PHYS_WRITE
:
case
FMS_PHYS_WRITE
:
if
(
primitive
==
REQ
)
{
if
(
primitive
==
REQ
)
{
T_VAR_PHYS_WRITE_REQ
FAR
*
req
=
(
T_VAR_PHYS_WRITE_REQ
FAR
*
)
data_ptr
;
T_VAR_PHYS_WRITE_REQ
FAR
*
req
=
(
T_VAR_PHYS_WRITE_REQ
FAR
*
)
data_ptr
;
return
(
sizeof
(
T_VAR_PHYS_WRITE_REQ
)
+
req
->
length
);
return
(
sizeof
(
T_VAR_PHYS_WRITE_REQ
)
+
req
->
length
);
}
else
}
else
return
(
0
);
return
(
0
);
case
FMS_DEF_VAR_LIST
:
case
FMS_DEF_VAR_LIST
:
if
(
primitive
==
REQ
)
{
if
(
primitive
==
REQ
)
T_VAR_DEFINE_VAR_LIST_REQ
FAR
*
req
{
=
(
T_VAR_DEFINE_VAR_LIST_REQ
FAR
*
)
data_ptr
;
T_VAR_DEFINE_VAR_LIST_REQ
FAR
*
req
=
(
T_VAR_DEFINE_VAR_LIST_REQ
FAR
*
)
data_ptr
;
USIGN8
FAR
*
d_acc_spec_list
=
(
USIGN8
FAR
*
)(
req
+
1
);
USIGN8
FAR
*
d_acc_spec_list
=
(
USIGN8
FAR
*
)(
req
+
1
);
USIGN16
offset
=
0
;
USIGN16
offset
=
0
;
USIGN16
acc_spec_list_size
=
0
;
USIGN16
acc_spec_list_size
=
0
;
USIGN8
i
=
0
;
USIGN8
i
=
0
;
for
(
i
=
0
;
i
<
req
->
no_of_var
;
i
++
)
{
for
(
i
=
0
;
i
<
req
->
no_of_var
;
i
++
)
{
offset
++
;
/* offset to length of acc_spec */
offset
++
;
/* offset to length of acc_spec */
acc_spec_list_size
+=
sizeof
(
T_DYN_ACC_SPEC
)
+
d_acc_spec_list
[
offset
];
acc_spec_list_size
+=
sizeof
(
T_DYN_ACC_SPEC
)
+
d_acc_spec_list
[
offset
];
offset
=
acc_spec_list_size
;
offset
=
acc_spec_list_size
;
}
}
return
(
sizeof
(
T_VAR_DEFINE_VAR_LIST_REQ
)
+
acc_spec_list_size
);
return
(
sizeof
(
T_VAR_DEFINE_VAR_LIST_REQ
)
+
acc_spec_list_size
);
}
else
{
}
else
{
return
(
sizeof
(
T_VAR_DEFINE_VAR_LIST_CNF
));
return
(
sizeof
(
T_VAR_DEFINE_VAR_LIST_CNF
));
}
}
...
@@ -457,10 +467,11 @@ possible return values:
...
@@ -457,10 +467,11 @@ possible return values:
}
}
}
}
FUNCTION
LOCAL
INT16
fmsgdl_get_evn_data_len
(
IN
USIGN8
service
,
/* Service */
FUNCTION
LOCAL
INT16
fmsgdl_get_evn_data_len
(
IN
USIGN8
service
,
/* Service */
IN
USIGN8
primitive
,
/* Service-Primitive */
IN
USIGN8
primitive
,
/* Service-Primitive */
IN
USIGN8
FAR
*
data_ptr
/* pointer to data */
IN
USIGN8
FAR
*
data_ptr
/* pointer to data */
)
)
/*-----------------------------------------------------------------------------
/*-----------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
FUNCTIONAL_DESCRIPTION
...
@@ -481,20 +492,25 @@ possible return values:
...
@@ -481,20 +492,25 @@ possible return values:
FUNCTION_BODY
FUNCTION_BODY
switch
(
service
)
{
switch
(
service
)
{
case
FMS_EVN_NOTIFY
:
case
FMS_EVN_NOTIFY
:
if
(
primitive
==
REQ
)
{
if
(
primitive
==
REQ
)
{
T_EVENT_NOTIFY_REQ
FAR
*
req
=
(
T_EVENT_NOTIFY_REQ
FAR
*
)
data_ptr
;
T_EVENT_NOTIFY_REQ
FAR
*
req
=
(
T_EVENT_NOTIFY_REQ
FAR
*
)
data_ptr
;
return
(
sizeof
(
T_EVENT_NOTIFY_REQ
)
+
req
->
data_length
);
return
(
sizeof
(
T_EVENT_NOTIFY_REQ
)
+
req
->
data_length
);
}
else
}
else
return
(
0
);
return
(
0
);
case
FMS_EVN_NOTIFY_WITH_TYPE
:
case
FMS_EVN_NOTIFY_WITH_TYPE
:
if
(
primitive
==
REQ
)
{
if
(
primitive
==
REQ
)
T_EVENT_NOTIFY_WITH_TYPE_REQ
FAR
*
req
{
=
(
T_EVENT_NOTIFY_WITH_TYPE_REQ
FAR
*
)
data_ptr
;
T_EVENT_NOTIFY_WITH_TYPE_REQ
FAR
*
req
=
(
T_EVENT_NOTIFY_WITH_TYPE_REQ
FAR
*
)
data_ptr
;
return
(
sizeof
(
T_EVENT_NOTIFY_WITH_TYPE_REQ
)
+
req
->
data_length
);
return
(
sizeof
(
T_EVENT_NOTIFY_WITH_TYPE_REQ
)
+
req
->
data_length
);
}
else
}
else
return
(
0
);
return
(
0
);
case
FMS_ALT_EVN_CND_MNT
:
case
FMS_ALT_EVN_CND_MNT
:
...
@@ -514,10 +530,11 @@ possible return values:
...
@@ -514,10 +530,11 @@ possible return values:
}
}
}
}
FUNCTION
LOCAL
INT16
fmsgdl_get_dom_data_len
(
IN
USIGN8
service
,
/* Service */
FUNCTION
LOCAL
INT16
fmsgdl_get_dom_data_len
(
IN
USIGN8
service
,
/* Service */
IN
USIGN8
primitive
,
/* Service-Primitive */
IN
USIGN8
primitive
,
/* Service-Primitive */
IN
USIGN8
FAR
*
data_ptr
/* pointer to data */
IN
USIGN8
FAR
*
data_ptr
/* pointer to data */
)
)
/*-----------------------------------------------------------------------------
/*-----------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
FUNCTIONAL_DESCRIPTION
...
@@ -548,7 +565,8 @@ possible return values:
...
@@ -548,7 +565,8 @@ possible return values:
FUNCTION_BODY
FUNCTION_BODY
switch
(
service
)
{
switch
(
service
)
{
case
FMS_INIT_DOWNL_SEQ
:
case
FMS_INIT_DOWNL_SEQ
:
case
FMS_GEN_INIT_DOWNL_SEQ
:
case
FMS_GEN_INIT_DOWNL_SEQ
:
case
FMS_INIT_UPL_SEQ
:
case
FMS_INIT_UPL_SEQ
:
...
@@ -560,9 +578,12 @@ possible return values:
...
@@ -560,9 +578,12 @@ possible return values:
case
FMS_DOWNL_SEG
:
case
FMS_DOWNL_SEG
:
case
FMS_UPL_SEG
:
case
FMS_UPL_SEG
:
if
(
primitive
==
REQ
)
{
if
(
primitive
==
REQ
)
{
return
(
sizeof
(
T_DOM_REQ
));
return
(
sizeof
(
T_DOM_REQ
));
}
else
{
}
else
{
T_DNL_UPL_SEG_CNF
FAR
*
rsp
=
(
T_DNL_UPL_SEG_CNF
FAR
*
)
data_ptr
;
T_DNL_UPL_SEG_CNF
FAR
*
rsp
=
(
T_DNL_UPL_SEG_CNF
FAR
*
)
data_ptr
;
return
(
sizeof
(
T_DNL_UPL_SEG_CNF
)
+
rsp
->
data_len
);
return
(
sizeof
(
T_DNL_UPL_SEG_CNF
)
+
rsp
->
data_len
);
}
}
...
@@ -574,10 +595,12 @@ possible return values:
...
@@ -574,10 +595,12 @@ possible return values:
return
(
0
);
return
(
0
);
case
FMS_GEN_DOWNL_SEG
:
case
FMS_GEN_DOWNL_SEG
:
if
(
primitive
==
REQ
)
{
if
(
primitive
==
REQ
)
{
T_GEN_DNL_SEG_REQ
FAR
*
req
=
(
T_GEN_DNL_SEG_REQ
FAR
*
)
data_ptr
;
T_GEN_DNL_SEG_REQ
FAR
*
req
=
(
T_GEN_DNL_SEG_REQ
FAR
*
)
data_ptr
;
return
(
sizeof
(
T_GEN_DNL_SEG_REQ
)
+
req
->
data_len
);
return
(
sizeof
(
T_GEN_DNL_SEG_REQ
)
+
req
->
data_len
);
}
else
}
else
return
(
0
);
return
(
0
);
case
FMS_GEN_TERM_DOWNL_SEQ
:
case
FMS_GEN_TERM_DOWNL_SEQ
:
...
@@ -588,10 +611,12 @@ possible return values:
...
@@ -588,10 +611,12 @@ possible return values:
case
FMS_REQ_DOM_DOWNL
:
case
FMS_REQ_DOM_DOWNL
:
case
FMS_REQ_DOM_UPL
:
case
FMS_REQ_DOM_UPL
:
if
(
primitive
==
REQ
)
{
if
(
primitive
==
REQ
)
{
T_REQUEST_DOM_REQ
FAR
*
req
=
(
T_REQUEST_DOM_REQ
FAR
*
)
data_ptr
;
T_REQUEST_DOM_REQ
FAR
*
req
=
(
T_REQUEST_DOM_REQ
FAR
*
)
data_ptr
;
return
(
sizeof
(
T_REQUEST_DOM_REQ
)
+
req
->
add_info_length
);
return
(
sizeof
(
T_REQUEST_DOM_REQ
)
+
req
->
add_info_length
);
}
else
}
else
return
(
0
);
return
(
0
);
default:
default:
...
@@ -599,10 +624,11 @@ possible return values:
...
@@ -599,10 +624,11 @@ possible return values:
}
}
}
}
FUNCTION
LOCAL
INT16
fmsgdl_get_pi_data_len
(
IN
USIGN8
service
,
/* Service */
FUNCTION
LOCAL
INT16
fmsgdl_get_pi_data_len
(
IN
USIGN8
service
,
/* Service */
IN
USIGN8
primitive
,
/* Service-Primitive */
IN
USIGN8
primitive
,
/* Service-Primitive */
IN
USIGN8
FAR
*
data_ptr
/* pointer to data */
IN
USIGN8
FAR
*
data_ptr
/* pointer to data */
)
)
/*-----------------------------------------------------------------------------
/*-----------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
FUNCTIONAL_DESCRIPTION
...
@@ -627,9 +653,11 @@ possible return values:
...
@@ -627,9 +653,11 @@ possible return values:
FUNCTION_BODY
FUNCTION_BODY
switch
(
service
)
{
switch
(
service
)
{
case
FMS_PI_CREATE
:
case
FMS_PI_CREATE
:
if
(
primitive
==
REQ
)
{
if
(
primitive
==
REQ
)
{
T_PI_CR8_REQ
FAR
*
req
=
(
T_PI_CR8_REQ
FAR
*
)
data_ptr
;
T_PI_CR8_REQ
FAR
*
req
=
(
T_PI_CR8_REQ
FAR
*
)
data_ptr
;
USIGN8
FAR
*
d_acc_spec_list
=
(
USIGN8
FAR
*
)(
req
+
1
);
USIGN8
FAR
*
d_acc_spec_list
=
(
USIGN8
FAR
*
)(
req
+
1
);
USIGN16
offset
=
0
;
USIGN16
offset
=
0
;
...
@@ -637,13 +665,16 @@ possible return values:
...
@@ -637,13 +665,16 @@ possible return values:
USIGN8
i
=
0
;
USIGN8
i
=
0
;
/* - dynamic access specification list --------------------------*/
/* - dynamic access specification list --------------------------*/
for
(
i
=
0
;
i
<
req
->
cnt_dom
;
i
++
)
{
for
(
i
=
0
;
i
<
req
->
cnt_dom
;
i
++
)
{
offset
++
;
/* offset to length of acc_spec */
offset
++
;
/* offset to length of acc_spec */
acc_spec_list_size
+=
sizeof
(
T_DYN_ACC_SPEC
)
+
d_acc_spec_list
[
offset
];
acc_spec_list_size
+=
sizeof
(
T_DYN_ACC_SPEC
)
+
d_acc_spec_list
[
offset
];
offset
=
acc_spec_list_size
;
offset
=
acc_spec_list_size
;
}
}
return
(
sizeof
(
T_PI_CR8_REQ
)
+
acc_spec_list_size
);
return
(
sizeof
(
T_PI_CR8_REQ
)
+
acc_spec_list_size
);
}
else
{
}
else
{
return
(
sizeof
(
T_PI_CR8_CNF
));
return
(
sizeof
(
T_PI_CR8_CNF
));
}
}
...
@@ -695,7 +726,7 @@ possible return values:
...
@@ -695,7 +726,7 @@ possible return values:
}
}
FUNCTION
LOCAL
INT16
fmsgdl_get_error_data_len
(
IN
USIGN8
service
/* Service */
FUNCTION
LOCAL
INT16
fmsgdl_get_error_data_len
(
IN
USIGN8
service
/* Service */
)
)
/*-----------------------------------------------------------------------------
/*-----------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
FUNCTIONAL_DESCRIPTION
...
@@ -748,7 +779,8 @@ possible return values:
...
@@ -748,7 +779,8 @@ possible return values:
FUNCTION_BODY
FUNCTION_BODY
switch
(
service
)
{
switch
(
service
)
{
case
FMS_INITIATE
:
case
FMS_INITIATE
:
return
(
sizeof
(
T_CTXT_INIT_ERR_CNF
));
return
(
sizeof
(
T_CTXT_INIT_ERR_CNF
));
...
@@ -797,12 +829,13 @@ possible return values:
...
@@ -797,12 +829,13 @@ possible return values:
}
}
}
}
FUNCTION
PUBLIC
INT16
fmsgdl_get_data_len
(
IN
INT16
result
,
/* Service-Result */
FUNCTION
PUBLIC
INT16
fmsgdl_get_data_len
(
IN
INT16
result
,
/* Service-Result */
IN
USIGN8
service
,
/* Service */
IN
USIGN8
service
,
/* Service */
IN
USIGN8
primitive
,
/* Service-Primitive */
IN
USIGN8
primitive
,
/* Service-Primitive */
IN
USIGN8
FAR
*
data_ptr
,
/* pointer to data */
IN
USIGN8
FAR
*
data_ptr
,
/* pointer to data */
OUT
INT16
*
data_len_ptr
/* length of data */
OUT
INT16
*
data_len_ptr
/* length of data */
)
)
/*-----------------------------------------------------------------------------
/*-----------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
FUNCTIONAL_DESCRIPTION
...
@@ -820,7 +853,8 @@ possible return values:
...
@@ -820,7 +853,8 @@ possible return values:
*
data_len_ptr
=
0
;
*
data_len_ptr
=
0
;
switch
(
service
)
{
switch
(
service
)
{
case
FMS_INITIATE
:
case
FMS_INITIATE
:
case
FMS_ABORT
:
case
FMS_ABORT
:
if
(
result
==
POS
)
if
(
result
==
POS
)
...
...
profibus/lib/rt/src/keywords.h
View file @
ce758cd3
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2019 SSAB EMEA AB.
*
* This file is part of ProviewR.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 2 of
* the License, or (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with ProviewR. If not, see <http://www.gnu.org/licenses/>
*
* Linking ProviewR statically or dynamically with other modules is
* making a combined work based on ProviewR. Thus, the terms and
* conditions of the GNU General Public License cover the whole
* combination.
*
* In addition, as a special exception, the copyright holders of
* ProviewR give you permission to, from the build function in the
* ProviewR Configurator, combine ProviewR with modules generated by the
* ProviewR PLC Editor to a PLC program, regardless of the license
* terms of these modules. You may copy and distribute the resulting
* combined work under the terms of your choice, provided that every
* copy of the combined work is accompanied by a complete copy of
* the source code of ProviewR (the version used to produce the
* combined work), being distributed under the terms of the GNU
* General Public License plus this exception.
*/
/*****************************************************************************/
/*****************************************************************************/
/* */
/* */
/*
SOFTING AG
*/
/*
SOFTING Industrial Automation GmbH
*/
/* Richard-Reitzner-Allee 6 */
/* Richard-Reitzner-Allee 6 */
/* D-85540 Haar */
/* D-85540 Haar */
/* Phone: (++49)-(0)89-45656-0 */
/* Phone: (++49)-(0)89-45656-0 */
/* Fax: (++49)-(0)89-45656-399 */
/* Fax: (++49)-(0)89-45656-399 */
/* */
/* */
/*
Copyright (C) SOFTING AG 1995-2003
*/
/*
Copyright (C) SOFTING Industrial Automation GmbH 1995-2012
*/
/* All Rights Reserved */
/* All Rights Reserved */
/* */
/* */
/*****************************************************************************/
/*****************************************************************************/
...
@@ -50,8 +15,8 @@
...
@@ -50,8 +15,8 @@
/* */
/* */
/* Filename : KEYWORDS.H */
/* Filename : KEYWORDS.H */
/* Version : 5.21.0.00.release */
/* Version : 5.21.0.00.release */
/* Date :
27-February-1998
*/
/* Date :
February-1998
*/
/* Author : SOFTING
AG
*/
/* Author : SOFTING
*/
/* */
/* */
/* Description : This include file defines some keywords which are used */
/* Description : This include file defines some keywords which are used */
/* for structuring and formatting the PROFIBUS source files. These */
/* for structuring and formatting the PROFIBUS source files. These */
...
...
profibus/lib/rt/src/papiaux.c
View file @
ce758cd3
/*
/******************************************************************************
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2019 SSAB EMEA AB.
*
* This file is part of ProviewR.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 2 of
* the License, or (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with ProviewR. If not, see <http://www.gnu.org/licenses/>
*
* Linking ProviewR statically or dynamically with other modules is
* making a combined work based on ProviewR. Thus, the terms and
* conditions of the GNU General Public License cover the whole
* combination.
*
* In addition, as a special exception, the copyright holders of
* ProviewR give you permission to, from the build function in the
* ProviewR Configurator, combine ProviewR with modules generated by the
* ProviewR PLC Editor to a PLC program, regardless of the license
* terms of these modules. You may copy and distribute the resulting
* combined work under the terms of your choice, provided that every
* copy of the combined work is accompanied by a complete copy of
* the source code of ProviewR (the version used to produce the
* combined work), being distributed under the terms of the GNU
* General Public License plus this exception.
*/
/*****************************************************************************
* *
* *
*
SOFTING AG
*
*
SOFTING Industrial Automation GmbH
*
* Richard-Reitzner-Allee 6 *
* Richard-Reitzner-Allee 6 *
* D-85540 Haar *
* D-85540 Haar *
* Phone:
++49-89-4 56 56-0
*
* Phone:
(++49)-(0)89-45656-0
*
*
Fax: ++49-89-4 56 56-3 99
*
*
Fax: (++49)-(0)89-45656-399
*
* *
* *
*
Copyright (C) SOFTING AG 1999-2003
*
*
Copyright (C) SOFTING Industrial Automation GmbH 1995-2012
*
* All Rights Reserved *
* All Rights Reserved *
* *
* *
******************************************************************************
******************************************************************************
*
FILE_NAME PAPIAUX.C
FILE_NAME PAPIAUX.C
...
@@ -55,11 +20,11 @@ MODULE PAPIAUX
...
@@ -55,11 +20,11 @@ MODULE PAPIAUX
COMPONENT_LIBRARY PAPI Lib
COMPONENT_LIBRARY PAPI Lib
PAPI DLL
PAPI DLL
AUTHOR SOFTING
GmbH
AUTHOR SOFTING
VERSION 5.22.0.00.release
VERSION 5.22.0.00.release
DATE
26-
February-1999
DATE February-1999
STATUS finished
STATUS finished
...
@@ -109,8 +74,8 @@ LOCAL_DATA
...
@@ -109,8 +74,8 @@ LOCAL_DATA
// ***************************************************************************
// ***************************************************************************
#if defined(WIN32) || defined(_WIN32)
#if defined(WIN32) || defined(_WIN32)
FUNCTION
PUBLIC
BOOL
ReadBoardRegistryEntries
(
FUNCTION
PUBLIC
BOOL
ReadBoardRegistryEntries
(
IN
USIGN8
BoardNumber
,
IN
USIGN8
BoardNumber
,
OUT
USIGN32
*
OperationMode
)
OUT
USIGN32
*
OperationMode
)
/*-----------------------------------------------------------------------------
/*-----------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
FUNCTIONAL_DESCRIPTION
...
@@ -134,19 +99,21 @@ return value:
...
@@ -134,19 +99,21 @@ return value:
FUNCTION_BODY
FUNCTION_BODY
if
(
ERROR_SUCCESS
if
(
ERROR_SUCCESS
==
RegOpenKeyEx
(
HKEY_LOCAL_MACHINE
,
==
RegOpenKeyEx
(
HKEY_LOCAL_MACHINE
,
REGPATH_PARAMETER_FROM_HLM
,
0
,
REGPATH_PARAMETER_FROM_HLM
,
0
,
KEY_READ
,
KEY_READ
,
&
keyParameters
))
{
&
keyParameters
))
{
sprintf
(
szKeyBoard
,
"%s
\\
%d"
,
REGPATH_PARAMETER_FROM_HLM
,
BoardNumber
);
sprintf
(
szKeyBoard
,
"%s
\\
%d"
,
REGPATH_PARAMETER_FROM_HLM
,
BoardNumber
);
if
(
ERROR_SUCCESS
if
(
ERROR_SUCCESS
==
==
RegOpenKeyEx
(
RegOpenKeyEx
(
HKEY_LOCAL_MACHINE
,
szKeyBoard
,
0
,
KEY_READ
,
&
keyBoard
))
HKEY_LOCAL_MACHINE
,
szKeyBoard
,
0
,
KEY_READ
,
&
keyBoard
))
{
{
SizeofBoardType
=
sizeof
(
szBoardType
);
SizeofBoardType
=
sizeof
(
szBoardType
);
szBoardType
[
0
]
=
'\0'
;
szBoardType
[
0
]
=
'\0'
;
if
((
RetVal
=
RegQueryValueEx
(
keyBoard
,
"Type"
,
NULL
,
NULL
,
if
((
RetVal
=
RegQueryValueEx
(
keyBoard
,
"Type"
,
NULL
,
NULL
,
(
LPBYTE
)
szBoardType
,
&
SizeofBoardType
))
(
LPBYTE
)
szBoardType
,
&
SizeofBoardType
))
==
==
ERROR_SUCCESS
)
{
ERROR_SUCCESS
)
{
RetVal
|=
RegQueryValueEx
(
keyBoard
,
"OperationMode"
,
NULL
,
NULL
,
RetVal
|=
RegQueryValueEx
(
keyBoard
,
"OperationMode"
,
NULL
,
NULL
,
(
LPBYTE
)
OperationMode
,
&
sizeULONG
);
(
LPBYTE
)
OperationMode
,
&
sizeULONG
);
...
@@ -184,7 +151,8 @@ FUNCTION PUBLIC int kbhit(VOID)
...
@@ -184,7 +151,8 @@ FUNCTION PUBLIC int kbhit(VOID)
timeout
.
tv_sec
=
0L
;
timeout
.
tv_sec
=
0L
;
timeout
.
tv_usec
=
1000L
;
/* wait 1 ms */
timeout
.
tv_usec
=
1000L
;
/* wait 1 ms */
if
(
select
(
1
,
&
rd_fds
,
NULL
,
NULL
,
&
timeout
)
>
0
)
{
if
(
select
(
1
,
&
rd_fds
,
NULL
,
NULL
,
&
timeout
)
>
0
)
{
return
(
1
);
return
(
1
);
}
}
...
@@ -199,7 +167,7 @@ FUNCTION PUBLIC int kbhit(VOID)
...
@@ -199,7 +167,7 @@ FUNCTION PUBLIC int kbhit(VOID)
FUNCTION
PUBLIC
USIGN16
swap_16_intel_motorola
(
FUNCTION
PUBLIC
USIGN16
swap_16_intel_motorola
(
IN
USIGN16
input16
/* value to swap */
IN
USIGN16
input16
/* value to swap */
)
)
/*-----------------------------------------------------------------------------
/*-----------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
FUNCTIONAL_DESCRIPTION
...
@@ -220,8 +188,7 @@ return value:
...
@@ -220,8 +188,7 @@ return value:
FUNCTION_BODY
FUNCTION_BODY
((
USIGN8
*
)
&
inp16
)
((
USIGN8
*
)
&
inp16
)
[
0
]
[
0
]
=
((
USIGN8
*
)
&
input16
)[
1
];
=
((
USIGN8
*
)
&
input16
)[
1
];
((
USIGN8
*
)
&
inp16
)[
1
]
=
((
USIGN8
*
)
&
input16
)[
0
];
((
USIGN8
*
)
&
inp16
)[
1
]
=
((
USIGN8
*
)
&
input16
)[
0
];
return
(
inp16
);
return
(
inp16
);
...
@@ -229,7 +196,7 @@ return value:
...
@@ -229,7 +196,7 @@ return value:
FUNCTION
PUBLIC
USIGN32
swap_32_intel_motorola
(
FUNCTION
PUBLIC
USIGN32
swap_32_intel_motorola
(
IN
USIGN32
input32
/* value to swap */
IN
USIGN32
input32
/* value to swap */
)
)
/*-----------------------------------------------------------------------------
/*-----------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
FUNCTIONAL_DESCRIPTION
...
@@ -250,8 +217,7 @@ return value:
...
@@ -250,8 +217,7 @@ return value:
FUNCTION_BODY
FUNCTION_BODY
((
USIGN8
*
)
&
inp32
)
((
USIGN8
*
)
&
inp32
)
[
0
]
[
0
]
=
((
USIGN8
*
)
&
input32
)[
3
];
=
((
USIGN8
*
)
&
input32
)[
3
];
((
USIGN8
*
)
&
inp32
)[
1
]
=
((
USIGN8
*
)
&
input32
)[
2
];
((
USIGN8
*
)
&
inp32
)[
1
]
=
((
USIGN8
*
)
&
input32
)[
2
];
((
USIGN8
*
)
&
inp32
)[
2
]
=
((
USIGN8
*
)
&
input32
)[
1
];
((
USIGN8
*
)
&
inp32
)[
2
]
=
((
USIGN8
*
)
&
input32
)[
1
];
((
USIGN8
*
)
&
inp32
)[
3
]
=
((
USIGN8
*
)
&
input32
)[
0
];
((
USIGN8
*
)
&
inp32
)[
3
]
=
((
USIGN8
*
)
&
input32
)[
0
];
...
...
profibus/lib/rt/src/pb_conf.h
View file @
ce758cd3
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2019 SSAB EMEA AB.
*
* This file is part of ProviewR.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 2 of
* the License, or (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with ProviewR. If not, see <http://www.gnu.org/licenses/>
*
* Linking ProviewR statically or dynamically with other modules is
* making a combined work based on ProviewR. Thus, the terms and
* conditions of the GNU General Public License cover the whole
* combination.
*
* In addition, as a special exception, the copyright holders of
* ProviewR give you permission to, from the build function in the
* ProviewR Configurator, combine ProviewR with modules generated by the
* ProviewR PLC Editor to a PLC program, regardless of the license
* terms of these modules. You may copy and distribute the resulting
* combined work under the terms of your choice, provided that every
* copy of the combined work is accompanied by a complete copy of
* the source code of ProviewR (the version used to produce the
* combined work), being distributed under the terms of the GNU
* General Public License plus this exception.
*/
/*****************************************************************************/
/*****************************************************************************/
/* */
/* */
/*
SOFTING AG
*/
/*
SOFTING Industrial Automation GmbH
*/
/* Richard-Reitzner-Allee 6 */
/* Richard-Reitzner-Allee 6 */
/* D-85540 Haar */
/* D-85540 Haar */
/* Phone: (++49)-(0)89-45656-0 */
/* Phone: (++49)-(0)89-45656-0 */
/* Fax: (++49)-(0)89-45656-399 */
/* Fax: (++49)-(0)89-45656-399 */
/* */
/* */
/*
Copyright (C) SOFTING AG 1995-2003
*/
/*
Copyright (C) SOFTING Industrial Automation GmbH 1995-2012
*/
/* All Rights Reserved */
/* All Rights Reserved */
/* */
/* */
/*****************************************************************************/
/*****************************************************************************/
...
@@ -49,13 +14,12 @@
...
@@ -49,13 +14,12 @@
/* PROFIBUS CONFIGURATION AND IMPLEMENTATION DEFINITIONS */
/* PROFIBUS CONFIGURATION AND IMPLEMENTATION DEFINITIONS */
/* */
/* */
/* Filename : PB_CONF.H */
/* Filename : PB_CONF.H */
/* Version : 5.
26
.0.00.release */
/* Version : 5.
45
.0.00.release */
/* Date :
14-February-2002
*/
/* Date :
December-2009
*/
/* Author : SOFTING
AG
*/
/* Author : SOFTING
*/
/* */
/* */
/* Description : This file contains the PROFIBUS configuration and */
/* Description : This file contains the PROFIBUS configuration and */
/* implementation definitions using Windows ME/98/95 or */
/* implementation definitions using Linux operating system */
/* Windows XP / 2000 / NT operating system */
/* */
/* */
/*****************************************************************************/
/*****************************************************************************/
...
@@ -67,7 +31,7 @@
...
@@ -67,7 +31,7 @@
/*****************************************************************************/
/*****************************************************************************/
#ifndef PB_VER
#ifndef PB_VER
#define PB_VER 5
26
#define PB_VER 5
45
#endif
#endif
/*****************************************************************************/
/*****************************************************************************/
...
@@ -99,9 +63,9 @@
...
@@ -99,9 +63,9 @@
#define HUGE
#define HUGE
#define CALL_CONV
#define CALL_CONV
#define CALLBACK
#define CALLBACK
#define INVALID_HANDLE_VALUE
((HANDLE)NULL)
#define INVALID_HANDLE_VALUE
0
#define getch() getchar()
#define getch() getchar()
typedef
long
int
HANDLE
;
typedef
int
HANDLE
;
typedef
unsigned
long
DWORD
;
typedef
unsigned
long
DWORD
;
#ifdef PB_API_FUNC_NOT_USED
#ifdef PB_API_FUNC_NOT_USED
#undef CALL_CONV
#undef CALL_CONV
...
...
profibus/lib/rt/src/pb_dp.h
View file @
ce758cd3
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2019 SSAB EMEA AB.
*
* This file is part of ProviewR.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 2 of
* the License, or (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with ProviewR. If not, see <http://www.gnu.org/licenses/>
*
* Linking ProviewR statically or dynamically with other modules is
* making a combined work based on ProviewR. Thus, the terms and
* conditions of the GNU General Public License cover the whole
* combination.
*
* In addition, as a special exception, the copyright holders of
* ProviewR give you permission to, from the build function in the
* ProviewR Configurator, combine ProviewR with modules generated by the
* ProviewR PLC Editor to a PLC program, regardless of the license
* terms of these modules. You may copy and distribute the resulting
* combined work under the terms of your choice, provided that every
* copy of the combined work is accompanied by a complete copy of
* the source code of ProviewR (the version used to produce the
* combined work), being distributed under the terms of the GNU
* General Public License plus this exception.
*/
/*****************************************************************************/
/*****************************************************************************/
/* */
/* */
/*
SOFTING AG
*/
/*
SOFTING Industrial Automation GmbH
*/
/* Richard-Reitzner-Allee 6 */
/* Richard-Reitzner-Allee 6 */
/* D-85540 Haar */
/* D-85540 Haar */
/* Phone: (++49)-(0)89-45656-0 */
/* Phone: (++49)-(0)89-45656-0 */
/* Fax: (++49)-(0)89-45656-399 */
/* Fax: (++49)-(0)89-45656-399 */
/* */
/* */
/*
Copyright (C) SOFTING AG 1995-2003
*/
/*
Copyright (C) SOFTING Industrial Automation GmbH 1995-2012
*/
/* All Rights Reserved */
/* All Rights Reserved */
/* */
/* */
/*****************************************************************************/
/*****************************************************************************/
...
@@ -50,8 +15,8 @@
...
@@ -50,8 +15,8 @@
/* */
/* */
/* Filename : PB_DP.H */
/* Filename : PB_DP.H */
/* Version : 5.22.0.00.release */
/* Version : 5.22.0.00.release */
/* Date :
26-February-1999
*/
/* Date :
February-1999
*/
/* Author : SOFTING
AG
*/
/* Author : SOFTING
*/
/* */
/* */
/* Description : This file contains the global defines and types of */
/* Description : This file contains the global defines and types of */
/* component DP */
/* component DP */
...
@@ -232,8 +197,8 @@
...
@@ -232,8 +197,8 @@
#define DP_PRM_WD_ON 0x08
#define DP_PRM_WD_ON 0x08
#define DP_PRM_STATION_STATUS \
#define DP_PRM_STATION_STATUS \
(DP_PRM_LOCK_REQ | DP_PRM_UNLOCK_REQ | DP_PRM_SYNC_REQ | DP_PRM_FREEZE_REQ
\
(DP_PRM_LOCK_REQ | DP_PRM_UNLOCK_REQ | DP_PRM_SYNC_REQ | DP_PRM_FREEZE_REQ
|
\
|
DP_PRM_WD_ON)
DP_PRM_WD_ON)
/*--- DP SLAVE GLOBAL CONTROL BITS -----------------------------------------*/
/*--- DP SLAVE GLOBAL CONTROL BITS -----------------------------------------*/
...
@@ -244,8 +209,8 @@
...
@@ -244,8 +209,8 @@
#define DP_CONTROL_CLEAR_DATA 0x02
#define DP_CONTROL_CLEAR_DATA 0x02
#define DP_CONTROL_COMMAND \
#define DP_CONTROL_COMMAND \
(DP_CONTROL_SYNC | DP_CONTROL_UNSYNC | DP_CONTROL_FREEZE
\
(DP_CONTROL_SYNC | DP_CONTROL_UNSYNC | DP_CONTROL_FREEZE
|
\
|
DP_CONTROL_UNFREEZE | DP_CONTROL_CLEAR_DATA)
DP_CONTROL_UNFREEZE | DP_CONTROL_CLEAR_DATA)
/*--- DP AREA CODES --------------------------------------------------------*/
/*--- DP AREA CODES --------------------------------------------------------*/
...
@@ -313,8 +278,8 @@
...
@@ -313,8 +278,8 @@
#define DP_DIAG_2_PRM_REQ 0x01
#define DP_DIAG_2_PRM_REQ 0x01
#define DP_DIAG_2_STATUS \
#define DP_DIAG_2_STATUS \
(DP_DIAG_2_DEACTIVATED | DP_DIAG_2_SYNC_MODE | DP_DIAG_2_FREEZE_MODE
\
(DP_DIAG_2_DEACTIVATED | DP_DIAG_2_SYNC_MODE | DP_DIAG_2_FREEZE_MODE
|
\
|
DP_DIAG_2_WD_ON | DP_DIAG_2_PRM_REQ)
DP_DIAG_2_WD_ON | DP_DIAG_2_PRM_REQ)
#define DP_DIAG_3_EXT_DIAG_OVERFLOW 0x80
#define DP_DIAG_3_EXT_DIAG_OVERFLOW 0x80
...
@@ -367,7 +332,8 @@
...
@@ -367,7 +332,8 @@
/*--- DP SLAVE PARAMETERIZATION DATA ---------------------------------------*/
/*--- DP SLAVE PARAMETERIZATION DATA ---------------------------------------*/
typedef
struct
_T_DP_PRM_DATA
{
typedef
struct
_T_DP_PRM_DATA
{
USIGN16
prm_data_len
;
/* 9..DP_MAX_PRM_DATA_LEN */
USIGN16
prm_data_len
;
/* 9..DP_MAX_PRM_DATA_LEN */
OCTET
station_status
;
/* DP_PRM_xxx */
OCTET
station_status
;
/* DP_PRM_xxx */
OCTET
wd_fact_1
;
/* watch dog time factors */
OCTET
wd_fact_1
;
/* watch dog time factors */
...
@@ -381,7 +347,8 @@ typedef struct _T_DP_PRM_DATA {
...
@@ -381,7 +347,8 @@ typedef struct _T_DP_PRM_DATA {
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
typedef
struct
_T_DP_CFG_DATA
{
typedef
struct
_T_DP_CFG_DATA
{
USIGN16
cfg_data_len
;
/* 2..244 */
USIGN16
cfg_data_len
;
/* 2..244 */
/* OCTET cfg_data [cfg_data_len - 2]; */
/* OCTET cfg_data [cfg_data_len - 2]; */
...
@@ -389,7 +356,8 @@ typedef struct _T_DP_CFG_DATA {
...
@@ -389,7 +356,8 @@ typedef struct _T_DP_CFG_DATA {
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
typedef
struct
_T_DP_AAT_DATA
{
typedef
struct
_T_DP_AAT_DATA
{
USIGN16
aat_data_len
;
/* 2..2^16-31 */
USIGN16
aat_data_len
;
/* 2..2^16-31 */
USIGN8
number_inputs
;
/* 0..244 */
USIGN8
number_inputs
;
/* 0..244 */
USIGN8
number_outputs
;
/* 0..244 */
USIGN8
number_outputs
;
/* 0..244 */
...
@@ -400,7 +368,8 @@ typedef struct _T_DP_AAT_DATA {
...
@@ -400,7 +368,8 @@ typedef struct _T_DP_AAT_DATA {
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
typedef
struct
_T_DP_SLAVE_USER_DATA
{
typedef
struct
_T_DP_SLAVE_USER_DATA
{
USIGN16
slave_user_data_len
;
/* 2..2^16-31 */
USIGN16
slave_user_data_len
;
/* 2..2^16-31 */
/* OCTET slave_user_data [slave_user_data_len - 2]; */
/* OCTET slave_user_data [slave_user_data_len - 2]; */
...
@@ -408,7 +377,8 @@ typedef struct _T_DP_SLAVE_USER_DATA {
...
@@ -408,7 +377,8 @@ typedef struct _T_DP_SLAVE_USER_DATA {
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
typedef
struct
_T_DP_SLAVE_PARA_SET
{
typedef
struct
_T_DP_SLAVE_PARA_SET
{
USIGN16
slave_para_len
;
/* 0..MAX_SLAVE_PARA_LEN */
USIGN16
slave_para_len
;
/* 0..MAX_SLAVE_PARA_LEN */
USIGN8
sl_flag
;
/* DP_SL_ACTIVE, DP_SL_FLAG_NEW_PRM */
USIGN8
sl_flag
;
/* DP_SL_ACTIVE, DP_SL_FLAG_NEW_PRM */
USIGN8
slave_type
;
/* DP_SLAVE_TYPE_DP */
USIGN8
slave_type
;
/* DP_SLAVE_TYPE_DP */
...
@@ -422,7 +392,8 @@ typedef struct _T_DP_SLAVE_PARA_SET {
...
@@ -422,7 +392,8 @@ typedef struct _T_DP_SLAVE_PARA_SET {
/*==========================================================================*/
/*==========================================================================*/
typedef
struct
_T_DP_BUS_PARA_SET
{
typedef
struct
_T_DP_BUS_PARA_SET
{
USIGN16
bus_para_len
;
/* 66..2^16-1 */
USIGN16
bus_para_len
;
/* 66..2^16-1 */
USIGN8
fdl_add
;
/* 0..125 */
USIGN8
fdl_add
;
/* 0..125 */
USIGN8
baud_rate
;
/* DP_xBAUD_xxx */
USIGN8
baud_rate
;
/* DP_xBAUD_xxx */
...
@@ -448,7 +419,8 @@ typedef struct _T_DP_BUS_PARA_SET {
...
@@ -448,7 +419,8 @@ typedef struct _T_DP_BUS_PARA_SET {
/*==========================================================================*/
/*==========================================================================*/
typedef
struct
_T_DP_DIAG_DATA
{
typedef
struct
_T_DP_DIAG_DATA
{
OCTET
station_status_1
;
/* DP_DIAG_1_xxx */
OCTET
station_status_1
;
/* DP_DIAG_1_xxx */
OCTET
station_status_2
;
/* DP_DIAG_2_xxx */
OCTET
station_status_2
;
/* DP_DIAG_2_xxx */
OCTET
station_status_3
;
/* DP_DIAG_3_xxx */
OCTET
station_status_3
;
/* DP_DIAG_3_xxx */
...
@@ -460,7 +432,8 @@ typedef struct _T_DP_DIAG_DATA {
...
@@ -460,7 +432,8 @@ typedef struct _T_DP_DIAG_DATA {
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
typedef
struct
_T_DP_MASTER_STATUS
{
typedef
struct
_T_DP_MASTER_STATUS
{
OCTET
usif_state
;
/* DP_OP_MODE_xxx */
OCTET
usif_state
;
/* DP_OP_MODE_xxx */
USIGN8
ident_number_high
;
/* alignment problem in DIN 19245-3 !!! */
USIGN8
ident_number_high
;
/* alignment problem in DIN 19245-3 !!! */
USIGN8
ident_number_low
;
/* USIGN16 ident_number at odd address !!! */
USIGN8
ident_number_low
;
/* USIGN16 ident_number at odd address !!! */
...
@@ -474,7 +447,8 @@ typedef struct _T_DP_MASTER_STATUS {
...
@@ -474,7 +447,8 @@ typedef struct _T_DP_MASTER_STATUS {
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
typedef
struct
_T_DP_SLAVE_PARAM_SLAVE_INFO
{
typedef
struct
_T_DP_SLAVE_PARAM_SLAVE_INFO
{
USIGN16
diag_entries
;
/* available DIAG messages */
USIGN16
diag_entries
;
/* available DIAG messages */
USIGN16
offset_inputs
;
/* offset of input area within I/O memory */
USIGN16
offset_inputs
;
/* offset of input area within I/O memory */
USIGN16
offset_outputs
;
/* offset of output area within I/O memory */
USIGN16
offset_outputs
;
/* offset of output area within I/O memory */
...
@@ -487,7 +461,8 @@ typedef struct _T_DP_SLAVE_PARAM_SLAVE_INFO {
...
@@ -487,7 +461,8 @@ typedef struct _T_DP_SLAVE_PARAM_SLAVE_INFO {
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
typedef
struct
_T_DP_SLAVE_PARAM_SYS_INFO
{
typedef
struct
_T_DP_SLAVE_PARAM_SYS_INFO
{
USIGN8
loaded_slaves
;
/* number downloaded slaves */
USIGN8
loaded_slaves
;
/* number downloaded slaves */
USIGN8
active_slaves
;
/* number active slaves */
USIGN8
active_slaves
;
/* number active slaves */
INT16
diag_entries
;
/* number available DIAG messages */
INT16
diag_entries
;
/* number available DIAG messages */
...
@@ -497,7 +472,8 @@ typedef struct _T_DP_SLAVE_PARAM_SYS_INFO {
...
@@ -497,7 +472,8 @@ typedef struct _T_DP_SLAVE_PARAM_SYS_INFO {
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
typedef
struct
_T_DP_SET_IDENT_NUMBER
{
typedef
struct
_T_DP_SET_IDENT_NUMBER
{
USIGN16
ident_number
;
/* new master ident_number */
USIGN16
ident_number
;
/* new master ident_number */
OCTET
dp_hardware_version
;
/* vendor specific release information */
OCTET
dp_hardware_version
;
/* vendor specific release information */
OCTET
dp_firmware_version
;
OCTET
dp_firmware_version
;
...
@@ -510,7 +486,8 @@ typedef struct _T_DP_SET_IDENT_NUMBER {
...
@@ -510,7 +486,8 @@ typedef struct _T_DP_SET_IDENT_NUMBER {
/*--- DP USIF SERVICE STRUCTURES -------------------------------------------*/
/*--- DP USIF SERVICE STRUCTURES -------------------------------------------*/
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
typedef
struct
_T_DP_INIT_MASTER_REQ
{
typedef
struct
_T_DP_INIT_MASTER_REQ
{
USIGN8
master_default_address
;
/* station address for default BP */
USIGN8
master_default_address
;
/* station address for default BP */
PB_BOOL
master_class2
;
/* use M2 requester functionality ? */
PB_BOOL
master_class2
;
/* use M2 requester functionality ? */
STRINGV
master_class2_name
[
32
];
/* vendor name of M2 */
STRINGV
master_class2_name
[
32
];
/* vendor name of M2 */
...
@@ -529,14 +506,16 @@ typedef struct _T_DP_INIT_MASTER_REQ {
...
@@ -529,14 +506,16 @@ typedef struct _T_DP_INIT_MASTER_REQ {
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
typedef
struct
_T_DP_INIT_MASTER_CON
{
typedef
struct
_T_DP_INIT_MASTER_CON
{
USIGN16
status
;
/* OK, IV, NO */
USIGN16
status
;
/* OK, IV, NO */
}
T_DP_INIT_MASTER_CON
;
}
T_DP_INIT_MASTER_CON
;
/*==========================================================================*/
/*==========================================================================*/
typedef
struct
_T_DP_EXIT_MASTER_CON
{
typedef
struct
_T_DP_EXIT_MASTER_CON
{
USIGN16
status
;
/* OK, NO */
USIGN16
status
;
/* OK, NO */
}
T_DP_EXIT_MASTER_CON
;
}
T_DP_EXIT_MASTER_CON
;
...
@@ -563,7 +542,8 @@ typedef struct _T_DP_START_SEQ_IND /* MM: req_add --> function_num */
...
@@ -563,7 +542,8 @@ typedef struct _T_DP_START_SEQ_IND /* MM: req_add --> function_num */
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
typedef
struct
_T_DP_START_SEQ_RES_CON
{
typedef
struct
_T_DP_START_SEQ_RES_CON
{
USIGN16
status
;
/* status of start sequence service */
USIGN16
status
;
/* status of start sequence service */
USIGN8
max_len_data_unit
;
/* 1..240 */
USIGN8
max_len_data_unit
;
/* 1..240 */
USIGN8
dummy
;
/* SDU alignment byte */
USIGN8
dummy
;
/* SDU alignment byte */
...
@@ -590,7 +570,8 @@ typedef struct _T_DP_END_SEQ_IND /* MM: req_add --> function_num */
...
@@ -590,7 +570,8 @@ typedef struct _T_DP_END_SEQ_IND /* MM: req_add --> function_num */
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
typedef
struct
_T_DP_END_SEQ_RES_CON
{
typedef
struct
_T_DP_END_SEQ_RES_CON
{
USIGN16
status
;
/* OK, DS, NA, RS, RR, UE, TO, FE, RE, */
USIGN16
status
;
/* OK, DS, NA, RS, RR, UE, TO, FE, RE, */
/* NE, AD, IP, NI, SE, SC, EA, LE */
/* NE, AD, IP, NI, SE, SC, EA, LE */
...
@@ -598,7 +579,8 @@ typedef struct _T_DP_END_SEQ_RES_CON {
...
@@ -598,7 +579,8 @@ typedef struct _T_DP_END_SEQ_RES_CON {
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
typedef
struct
_T_DP_END_SEQ_LOC_IND
{
typedef
struct
_T_DP_END_SEQ_LOC_IND
{
USIGN16
status
;
/* TO */
USIGN16
status
;
/* TO */
}
T_DP_END_SEQ_LOC_IND
;
}
T_DP_END_SEQ_LOC_IND
;
...
@@ -629,7 +611,8 @@ typedef struct _T_DP_DOWNLOAD_IND /* MM: req_add --> function_num */
...
@@ -629,7 +611,8 @@ typedef struct _T_DP_DOWNLOAD_IND /* MM: req_add --> function_num */
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
typedef
struct
_T_DP_DOWNLOAD_RES_CON
{
typedef
struct
_T_DP_DOWNLOAD_RES_CON
{
USIGN16
status
;
/* OK, DS, NA, RS, RR, UE, TO, FE, */
USIGN16
status
;
/* OK, DS, NA, RS, RR, UE, TO, FE, */
/* RE, NE, AD, EA, SC, NI, LE */
/* RE, NE, AD, EA, SC, NI, LE */
...
@@ -661,7 +644,8 @@ typedef struct _T_DP_UPLOAD_IND /* MM: req_add --> function_num */
...
@@ -661,7 +644,8 @@ typedef struct _T_DP_UPLOAD_IND /* MM: req_add --> function_num */
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
typedef
struct
_T_DP_UPLOAD_RES_CON
{
typedef
struct
_T_DP_UPLOAD_RES_CON
{
USIGN16
status
;
/* OK, DS, NA, RS, RR, UE, TO, FE, */
USIGN16
status
;
/* OK, DS, NA, RS, RR, UE, TO, FE, */
/* RE, NE, AD, EA, SC, NI, LE */
/* RE, NE, AD, EA, SC, NI, LE */
USIGN16
data_len
;
/* 1..DP_MAX_UPLOAD_DATA_LEN */
USIGN16
data_len
;
/* 1..DP_MAX_UPLOAD_DATA_LEN */
...
@@ -693,7 +677,8 @@ typedef struct _T_DP_ACT_PARAM_IND /* MM: req_add --> function_num */
...
@@ -693,7 +677,8 @@ typedef struct _T_DP_ACT_PARAM_IND /* MM: req_add --> function_num */
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
typedef
struct
_T_DP_ACT_PARAM_RES_CON
{
typedef
struct
_T_DP_ACT_PARAM_RES_CON
{
USIGN16
status
;
/* OK, DS, NA, RS, RR, UE, TO, FE, RE, */
USIGN16
status
;
/* OK, DS, NA, RS, RR, UE, TO, FE, RE, */
/* NE, AD, IP, SC, NI, DI, EA, LE */
/* NE, AD, IP, SC, NI, DI, EA, LE */
...
@@ -719,7 +704,8 @@ typedef struct _T_DP_GET_MASTER_DIAG_IND /* MM: req_add --> function_num */
...
@@ -719,7 +704,8 @@ typedef struct _T_DP_GET_MASTER_DIAG_IND /* MM: req_add --> function_num */
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
typedef
struct
_T_DP_GET_MASTER_DIAG_RES_CON
{
typedef
struct
_T_DP_GET_MASTER_DIAG_RES_CON
{
USIGN16
status
;
/* OK, DS, NA, RS, RR, UE, TO, */
USIGN16
status
;
/* OK, DS, NA, RS, RR, UE, TO, */
/* FE, RE, NE, AD, IP, EA, LE */
/* FE, RE, NE, AD, IP, EA, LE */
USIGN16
data_len
;
/* 1..DP_MAX_MASTER_DIAG_DATA_LEN */
USIGN16
data_len
;
/* 1..DP_MAX_MASTER_DIAG_DATA_LEN */
...
@@ -733,7 +719,8 @@ typedef VOID T_DP_GET_SLAVE_DIAG_REQ;
...
@@ -733,7 +719,8 @@ typedef VOID T_DP_GET_SLAVE_DIAG_REQ;
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
typedef
struct
_T_DP_GET_SLAVE_DIAG_CON
{
typedef
struct
_T_DP_GET_SLAVE_DIAG_CON
{
USIGN16
status
;
/* OK, NO */
USIGN16
status
;
/* OK, NO */
USIGN8
rem_add
;
/* 0..126 */
USIGN8
rem_add
;
/* 0..126 */
USIGN8
dummy
;
/* SDU alignment byte */
USIGN8
dummy
;
/* SDU alignment byte */
...
@@ -753,7 +740,8 @@ typedef VOID T_DP_DATA_TRANSFER_REQ; /* no SDU */
...
@@ -753,7 +740,8 @@ typedef VOID T_DP_DATA_TRANSFER_REQ; /* no SDU */
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
typedef
struct
_T_DP_DATA_TRANSFER_CON
{
typedef
struct
_T_DP_DATA_TRANSFER_CON
{
USIGN16
status
;
/* OK, NO */
USIGN16
status
;
/* OK, NO */
INT16
diag_entries
;
/* -1..DP_MAX_SLAVE_DIAG_ENTRIES */
INT16
diag_entries
;
/* -1..DP_MAX_SLAVE_DIAG_ENTRIES */
...
@@ -761,7 +749,8 @@ typedef struct _T_DP_DATA_TRANSFER_CON {
...
@@ -761,7 +749,8 @@ typedef struct _T_DP_DATA_TRANSFER_CON {
/*==========================================================================*/
/*==========================================================================*/
typedef
struct
_T_DP_GET_SLAVE_PARAM_REQ
{
typedef
struct
_T_DP_GET_SLAVE_PARAM_REQ
{
USIGN8
identifier
;
/* DP_SLAVE_PARAM_xxx */
USIGN8
identifier
;
/* DP_SLAVE_PARAM_xxx */
USIGN8
rem_add
;
/* 0..126 */
USIGN8
rem_add
;
/* 0..126 */
...
@@ -769,7 +758,8 @@ typedef struct _T_DP_GET_SLAVE_PARAM_REQ {
...
@@ -769,7 +758,8 @@ typedef struct _T_DP_GET_SLAVE_PARAM_REQ {
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
typedef
struct
_T_DP_GET_SLAVE_PARAM_CON
{
typedef
struct
_T_DP_GET_SLAVE_PARAM_CON
{
USIGN16
status
;
/* OK, NO, IV, NE */
USIGN16
status
;
/* OK, NO, IV, NE */
USIGN16
data_len
;
/* 0..244 */
USIGN16
data_len
;
/* 0..244 */
/* OCTET slave_param_data [data_len]; data_len */
/* OCTET slave_param_data [data_len]; data_len */
...
@@ -778,7 +768,8 @@ typedef struct _T_DP_GET_SLAVE_PARAM_CON {
...
@@ -778,7 +768,8 @@ typedef struct _T_DP_GET_SLAVE_PARAM_CON {
/*==========================================================================*/
/*==========================================================================*/
typedef
struct
_T_DP_SET_BUSPARAMETER_REQ
{
typedef
struct
_T_DP_SET_BUSPARAMETER_REQ
{
USIGN8
bp_flag
;
/* DP_BP_ERROR_ACTION */
USIGN8
bp_flag
;
/* DP_BP_ERROR_ACTION */
USIGN8
dummy
;
/* alignment byte */
USIGN8
dummy
;
/* alignment byte */
USIGN16
min_slave_interval
;
/* 1..2^16-1 [100 micros] */
USIGN16
min_slave_interval
;
/* 1..2^16-1 [100 micros] */
...
@@ -792,14 +783,16 @@ typedef struct _T_DP_SET_BUSPARAMETER_REQ {
...
@@ -792,14 +783,16 @@ typedef struct _T_DP_SET_BUSPARAMETER_REQ {
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
typedef
struct
_T_DP_SET_BUSPARAMETER_CON
{
typedef
struct
_T_DP_SET_BUSPARAMETER_CON
{
USIGN16
status
;
/* OK, IV, NO */
USIGN16
status
;
/* OK, IV, NO */
}
T_DP_SET_BUSPARAMETER_CON
;
}
T_DP_SET_BUSPARAMETER_CON
;
/*==========================================================================*/
/*==========================================================================*/
typedef
struct
_T_DP_SET_MASTER_PARAM_REQ
{
typedef
struct
_T_DP_SET_MASTER_PARAM_REQ
{
USIGN8
identifier
;
/* DP_SET_xxx */
USIGN8
identifier
;
/* DP_SET_xxx */
USIGN8
data_len
;
/* 0..DP_MAX_TELEGRAM_LEN */
USIGN8
data_len
;
/* 0..DP_MAX_TELEGRAM_LEN */
/* OCTET data [data_len]; data dependent on identifier */
/* OCTET data [data_len]; data dependent on identifier */
...
@@ -808,7 +801,8 @@ typedef struct _T_DP_SET_MASTER_PARAM_REQ {
...
@@ -808,7 +801,8 @@ typedef struct _T_DP_SET_MASTER_PARAM_REQ {
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
typedef
struct
_T_DP_SET_MASTER_PARAM_CON
{
typedef
struct
_T_DP_SET_MASTER_PARAM_CON
{
USIGN16
status
;
/* OK, IV, NO */
USIGN16
status
;
/* OK, IV, NO */
}
T_DP_SET_MASTER_PARAM_CON
;
}
T_DP_SET_MASTER_PARAM_CON
;
...
@@ -817,7 +811,8 @@ typedef struct _T_DP_SET_MASTER_PARAM_CON {
...
@@ -817,7 +811,8 @@ typedef struct _T_DP_SET_MASTER_PARAM_CON {
/*--- DP DDLM SERVICE STRUCTURES -------------------------------------------*/
/*--- DP DDLM SERVICE STRUCTURES -------------------------------------------*/
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
typedef
struct
_T_DP_SLAVE_DIAG_REQ
{
typedef
struct
_T_DP_SLAVE_DIAG_REQ
{
USIGN8
rem_add
;
/* 0..126 */
USIGN8
rem_add
;
/* 0..126 */
USIGN8
dummy
;
/* SDU alignment byte */
USIGN8
dummy
;
/* SDU alignment byte */
...
@@ -825,7 +820,8 @@ typedef struct _T_DP_SLAVE_DIAG_REQ {
...
@@ -825,7 +820,8 @@ typedef struct _T_DP_SLAVE_DIAG_REQ {
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
typedef
struct
_T_DP_SLAVE_DIAG_CON
{
typedef
struct
_T_DP_SLAVE_DIAG_CON
{
USIGN16
status
;
/* OK, DS, NA, RS, UE, NR, RE */
USIGN16
status
;
/* OK, DS, NA, RS, UE, NR, RE */
USIGN8
rem_add
;
/* 0..126 */
USIGN8
rem_add
;
/* 0..126 */
USIGN8
dummy
;
/* PCI alignment byte */
USIGN8
dummy
;
/* PCI alignment byte */
...
@@ -836,7 +832,8 @@ typedef struct _T_DP_SLAVE_DIAG_CON {
...
@@ -836,7 +832,8 @@ typedef struct _T_DP_SLAVE_DIAG_CON {
/*==========================================================================*/
/*==========================================================================*/
typedef
struct
_T_DP_DATA_EXCHANGE_REQ
{
typedef
struct
_T_DP_DATA_EXCHANGE_REQ
{
USIGN8
rem_add
;
/* 0..126 */
USIGN8
rem_add
;
/* 0..126 */
USIGN8
dummy
;
/* PCI alignment byte */
USIGN8
dummy
;
/* PCI alignment byte */
USIGN16
outp_data_len
;
/* 0..DP_MAX_OUTPUT_DATA_LEN */
USIGN16
outp_data_len
;
/* 0..DP_MAX_OUTPUT_DATA_LEN */
...
@@ -846,7 +843,8 @@ typedef struct _T_DP_DATA_EXCHANGE_REQ {
...
@@ -846,7 +843,8 @@ typedef struct _T_DP_DATA_EXCHANGE_REQ {
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
typedef
struct
_T_DP_DATA_EXCHANGE_CON
{
typedef
struct
_T_DP_DATA_EXCHANGE_CON
{
USIGN16
status
;
/* OK, DS, NA, RS, RR, UE, RE */
USIGN16
status
;
/* OK, DS, NA, RS, RR, UE, RE */
USIGN8
rem_add
;
/* 0..126 */
USIGN8
rem_add
;
/* 0..126 */
PB_BOOL
diag_flag
;
/* DP_TRUE: DP Slave diagnostic data available */
PB_BOOL
diag_flag
;
/* DP_TRUE: DP Slave diagnostic data available */
...
@@ -857,7 +855,8 @@ typedef struct _T_DP_DATA_EXCHANGE_CON {
...
@@ -857,7 +855,8 @@ typedef struct _T_DP_DATA_EXCHANGE_CON {
/*==========================================================================*/
/*==========================================================================*/
typedef
struct
_T_DP_RD_INP_REQ
{
typedef
struct
_T_DP_RD_INP_REQ
{
USIGN8
rem_add
;
/* 0..126 */
USIGN8
rem_add
;
/* 0..126 */
USIGN8
dummy
;
/* SDU alignment byte */
USIGN8
dummy
;
/* SDU alignment byte */
...
@@ -865,7 +864,8 @@ typedef struct _T_DP_RD_INP_REQ {
...
@@ -865,7 +864,8 @@ typedef struct _T_DP_RD_INP_REQ {
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
typedef
struct
_T_DP_RD_INP_CON
{
typedef
struct
_T_DP_RD_INP_CON
{
USIGN16
status
;
/* OK, DS, NA, RS, UE, NR, RE */
USIGN16
status
;
/* OK, DS, NA, RS, UE, NR, RE */
USIGN8
rem_add
;
/* 0..126 */
USIGN8
rem_add
;
/* 0..126 */
USIGN8
dummy
;
/* PCI alignment byte */
USIGN8
dummy
;
/* PCI alignment byte */
...
@@ -876,7 +876,8 @@ typedef struct _T_DP_RD_INP_CON {
...
@@ -876,7 +876,8 @@ typedef struct _T_DP_RD_INP_CON {
/*==========================================================================*/
/*==========================================================================*/
typedef
struct
_T_DP_RD_OUTP_REQ
{
typedef
struct
_T_DP_RD_OUTP_REQ
{
USIGN8
rem_add
;
/* 0..126 */
USIGN8
rem_add
;
/* 0..126 */
USIGN8
dummy
;
/* SDU alignment byte */
USIGN8
dummy
;
/* SDU alignment byte */
...
@@ -884,7 +885,8 @@ typedef struct _T_DP_RD_OUTP_REQ {
...
@@ -884,7 +885,8 @@ typedef struct _T_DP_RD_OUTP_REQ {
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
typedef
struct
_T_DP_RD_OUTP_CON
{
typedef
struct
_T_DP_RD_OUTP_CON
{
USIGN16
status
;
/* OK, DS, NA, RS, UE, NR, RE */
USIGN16
status
;
/* OK, DS, NA, RS, UE, NR, RE */
USIGN8
rem_add
;
/* 0..126 */
USIGN8
rem_add
;
/* 0..126 */
USIGN8
dummy
;
/* PCI alignment byte */
USIGN8
dummy
;
/* PCI alignment byte */
...
@@ -895,7 +897,8 @@ typedef struct _T_DP_RD_OUTP_CON {
...
@@ -895,7 +897,8 @@ typedef struct _T_DP_RD_OUTP_CON {
/*==========================================================================*/
/*==========================================================================*/
typedef
struct
_T_DP_SET_PRM_REQ
{
typedef
struct
_T_DP_SET_PRM_REQ
{
USIGN8
rem_add
;
/* 0..126 */
USIGN8
rem_add
;
/* 0..126 */
USIGN8
dummy
;
/* PCI alignment byte */
USIGN8
dummy
;
/* PCI alignment byte */
T_DP_PRM_DATA
prm_data
;
/* 9..DP_MAX_PRM_DATA_LEN */
T_DP_PRM_DATA
prm_data
;
/* 9..DP_MAX_PRM_DATA_LEN */
...
@@ -904,14 +907,16 @@ typedef struct _T_DP_SET_PRM_REQ {
...
@@ -904,14 +907,16 @@ typedef struct _T_DP_SET_PRM_REQ {
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
typedef
struct
_T_DP_SET_PRM_CON
{
typedef
struct
_T_DP_SET_PRM_CON
{
USIGN16
status
;
/* OK, DS, NA, RS, RR, UE, RE */
USIGN16
status
;
/* OK, DS, NA, RS, RR, UE, RE */
}
T_DP_SET_PRM_CON
;
}
T_DP_SET_PRM_CON
;
/*==========================================================================*/
/*==========================================================================*/
typedef
struct
_T_DP_CHK_CFG_REQ
{
typedef
struct
_T_DP_CHK_CFG_REQ
{
USIGN8
rem_add
;
/* 0..126 */
USIGN8
rem_add
;
/* 0..126 */
USIGN8
dummy
;
/* PCI alignment byte */
USIGN8
dummy
;
/* PCI alignment byte */
T_DP_CFG_DATA
cfg_data
;
/* 3..DP_MAX_CFG_DATA_LEN */
T_DP_CFG_DATA
cfg_data
;
/* 3..DP_MAX_CFG_DATA_LEN */
...
@@ -920,14 +925,16 @@ typedef struct _T_DP_CHK_CFG_REQ {
...
@@ -920,14 +925,16 @@ typedef struct _T_DP_CHK_CFG_REQ {
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
typedef
struct
_T_DP_CHK_CFG_CON
{
typedef
struct
_T_DP_CHK_CFG_CON
{
USIGN16
status
;
/* OK, DS, NA, RS, RR, UE, RE */
USIGN16
status
;
/* OK, DS, NA, RS, RR, UE, RE */
}
T_DP_CHK_CFG_CON
;
}
T_DP_CHK_CFG_CON
;
/*==========================================================================*/
/*==========================================================================*/
typedef
struct
_T_DP_GET_CFG_REQ
{
typedef
struct
_T_DP_GET_CFG_REQ
{
USIGN8
rem_add
;
/* 0..126 */
USIGN8
rem_add
;
/* 0..126 */
USIGN8
dummy
;
/* SDU alignment byte */
USIGN8
dummy
;
/* SDU alignment byte */
...
@@ -935,7 +942,8 @@ typedef struct _T_DP_GET_CFG_REQ {
...
@@ -935,7 +942,8 @@ typedef struct _T_DP_GET_CFG_REQ {
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
typedef
struct
_T_DP_GET_CFG_CON
{
typedef
struct
_T_DP_GET_CFG_CON
{
USIGN16
status
;
/* OK, DS, NA, RS, UE, NR, RE */
USIGN16
status
;
/* OK, DS, NA, RS, UE, NR, RE */
USIGN8
rem_add
;
/* 0..126 */
USIGN8
rem_add
;
/* 0..126 */
USIGN8
dummy
;
/* PCI alignment byte */
USIGN8
dummy
;
/* PCI alignment byte */
...
@@ -945,7 +953,8 @@ typedef struct _T_DP_GET_CFG_CON {
...
@@ -945,7 +953,8 @@ typedef struct _T_DP_GET_CFG_CON {
/*==========================================================================*/
/*==========================================================================*/
typedef
struct
_T_DP_GLOBAL_CONTROL_REQ
{
typedef
struct
_T_DP_GLOBAL_CONTROL_REQ
{
USIGN8
rem_add
;
/* 0..126, 127 DP_GLOBAL_STATION_ADDRESS */
USIGN8
rem_add
;
/* 0..126, 127 DP_GLOBAL_STATION_ADDRESS */
USIGN8
dummy
;
/* PCI alignment byte */
USIGN8
dummy
;
/* PCI alignment byte */
USIGN8
control_command
;
/* DP_CONTROL_xxx */
USIGN8
control_command
;
/* DP_CONTROL_xxx */
...
@@ -955,7 +964,8 @@ typedef struct _T_DP_GLOBAL_CONTROL_REQ {
...
@@ -955,7 +964,8 @@ typedef struct _T_DP_GLOBAL_CONTROL_REQ {
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
typedef
struct
_T_DP_GLOBAL_CONTROL_CON
{
typedef
struct
_T_DP_GLOBAL_CONTROL_CON
{
USIGN16
status
;
/* OK, DS, NO, IV */
USIGN16
status
;
/* OK, DS, NO, IV */
USIGN8
rem_add
;
/* 0..126, 127 DP_GLOBAL_STATION_ADDRESS */
USIGN8
rem_add
;
/* 0..126, 127 DP_GLOBAL_STATION_ADDRESS */
USIGN8
dummy
;
/* SDU alignment byte */
USIGN8
dummy
;
/* SDU alignment byte */
...
@@ -964,7 +974,8 @@ typedef struct _T_DP_GLOBAL_CONTROL_CON {
...
@@ -964,7 +974,8 @@ typedef struct _T_DP_GLOBAL_CONTROL_CON {
/*==========================================================================*/
/*==========================================================================*/
typedef
struct
_T_DP_SET_SLAVE_ADD_REQ
{
typedef
struct
_T_DP_SET_SLAVE_ADD_REQ
{
USIGN8
rem_add
;
/* 0..125, 126 DP_DEFAULT_SLAVE_ADDRESS */
USIGN8
rem_add
;
/* 0..125, 126 DP_DEFAULT_SLAVE_ADDRESS */
USIGN8
dummy
;
/* PCI alignment byte */
USIGN8
dummy
;
/* PCI alignment byte */
USIGN16
rem_slave_data_len
;
/* 0..DP_MAX_REM_SLAVE_DATA_LEN */
USIGN16
rem_slave_data_len
;
/* 0..DP_MAX_REM_SLAVE_DATA_LEN */
...
@@ -978,7 +989,8 @@ typedef struct _T_DP_SET_SLAVE_ADD_REQ {
...
@@ -978,7 +989,8 @@ typedef struct _T_DP_SET_SLAVE_ADD_REQ {
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
typedef
struct
_T_DP_SET_SLAVE_ADD_CON
{
typedef
struct
_T_DP_SET_SLAVE_ADD_CON
{
USIGN16
status
;
/* OK, DS, NA, RS, RR, UE, RE */
USIGN16
status
;
/* OK, DS, NA, RS, RR, UE, RE */
USIGN8
rem_add
;
/* 0..125, 126 DP_DEFAULT_SLAVE_ADDRESS */
USIGN8
rem_add
;
/* 0..125, 126 DP_DEFAULT_SLAVE_ADDRESS */
USIGN8
dummy
;
/* SDU alignment byte */
USIGN8
dummy
;
/* SDU alignment byte */
...
@@ -996,14 +1008,16 @@ typedef struct _T_DP_ACT_PARA_BRCT_REQ /* MM: function_num --> rem_add */
...
@@ -996,14 +1008,16 @@ typedef struct _T_DP_ACT_PARA_BRCT_REQ /* MM: function_num --> rem_add */
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
typedef
struct
_T_DP_ACT_PARA_BRCT_CON
{
typedef
struct
_T_DP_ACT_PARA_BRCT_CON
{
USIGN16
status
;
/* OK, DS */
USIGN16
status
;
/* OK, DS */
}
T_DP_ACT_PARA_BRCT_CON
;
}
T_DP_ACT_PARA_BRCT_CON
;
/*==========================================================================*/
/*==========================================================================*/
typedef
struct
_T_DP_FM2_EVENT_IND
{
typedef
struct
_T_DP_FM2_EVENT_IND
{
USIGN16
reason
;
/* FM2 event message */
USIGN16
reason
;
/* FM2 event message */
}
T_DP_FM2_EVENT_IND
;
}
T_DP_FM2_EVENT_IND
;
...
@@ -1012,7 +1026,8 @@ typedef struct _T_DP_FM2_EVENT_IND {
...
@@ -1012,7 +1026,8 @@ typedef struct _T_DP_FM2_EVENT_IND {
/*--- DPV1 DATA STRUCTURES -------------------------------------------------*/
/*--- DPV1 DATA STRUCTURES -------------------------------------------------*/
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
typedef
struct
_T_ADDR
{
typedef
struct
_T_ADDR
{
USIGN8
api
;
/* default: set to 0 */
USIGN8
api
;
/* default: set to 0 */
USIGN8
scl
;
/* default: set to 0 */
USIGN8
scl
;
/* default: set to 0 */
OCTET
network_address
[
6
];
/* use only when [d|s]_type is set to 1 */
OCTET
network_address
[
6
];
/* use only when [d|s]_type is set to 1 */
...
@@ -1023,7 +1038,8 @@ typedef struct _T_ADDR {
...
@@ -1023,7 +1038,8 @@ typedef struct _T_ADDR {
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
typedef
struct
_T_ADD_ADDR
{
typedef
struct
_T_ADD_ADDR
{
USIGN8
s_type
;
/* default: set to 0 */
USIGN8
s_type
;
/* default: set to 0 */
USIGN8
s_len
;
/* default: set to 2 */
USIGN8
s_len
;
/* default: set to 2 */
USIGN8
d_type
;
/* default: set to 0 */
USIGN8
d_type
;
/* default: set to 0 */
...
@@ -1035,7 +1051,8 @@ typedef struct _T_ADD_ADDR {
...
@@ -1035,7 +1051,8 @@ typedef struct _T_ADD_ADDR {
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
typedef
struct
_T_DP_INITIATE_REQ
{
typedef
struct
_T_DP_INITIATE_REQ
{
USIGN8
rem_add
;
/* 0..126 */
USIGN8
rem_add
;
/* 0..126 */
USIGN8
reserved
[
3
];
USIGN8
reserved
[
3
];
USIGN16
send_timeout
;
/* 1..2^16-1 [10 ms] */
USIGN16
send_timeout
;
/* 1..2^16-1 [10 ms] */
...
@@ -1051,12 +1068,13 @@ typedef struct _T_DP_INITIATE_REQ {
...
@@ -1051,12 +1068,13 @@ typedef struct _T_DP_INITIATE_REQ {
#define DP_INITIATE_S_ADDR(x) \
#define DP_INITIATE_S_ADDR(x) \
((T_ADDR FAR*)(((USIGN8 FAR*)&((x)->add_addr_param)) + sizeof(T_ADD_ADDR)))
((T_ADDR FAR*)(((USIGN8 FAR*)&((x)->add_addr_param)) + sizeof(T_ADD_ADDR)))
#define DP_INITIATE_D_ADDR(x) \
#define DP_INITIATE_D_ADDR(x) \
((T_ADDR FAR*)(((USIGN8 FAR*)&((x)->add_addr_param)) + sizeof(T_ADD_ADDR)
\
((T_ADDR FAR*)(((USIGN8 FAR*)&((x)->add_addr_param)) + sizeof(T_ADD_ADDR)
+
\
+
(x)->add_addr_param.s_len))
(x)->add_addr_param.s_len))
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
typedef
struct
_T_DP_INITIATE_CON
{
typedef
struct
_T_DP_INITIATE_CON
{
USIGN16
status
;
USIGN16
status
;
USIGN8
rem_add
;
/* 0..126 */
USIGN8
rem_add
;
/* 0..126 */
USIGN8
max_len_data_unit
;
/* 0..DP_MSAC2_DATA_LEN */
USIGN8
max_len_data_unit
;
/* 0..DP_MSAC2_DATA_LEN */
...
@@ -1069,7 +1087,8 @@ typedef struct _T_DP_INITIATE_CON {
...
@@ -1069,7 +1087,8 @@ typedef struct _T_DP_INITIATE_CON {
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
typedef
struct
_T_DP_READ_REQ
{
typedef
struct
_T_DP_READ_REQ
{
USIGN8
rem_add
;
/* 0..126, interpreted only when MSAC_C1 */
USIGN8
rem_add
;
/* 0..126, interpreted only when MSAC_C1 */
USIGN8
slot_number
;
/* 0..254, 255 is reserved */
USIGN8
slot_number
;
/* 0..254, 255 is reserved */
USIGN8
index
;
/* 0..254, 255 is reserved */
USIGN8
index
;
/* 0..254, 255 is reserved */
...
@@ -1079,7 +1098,8 @@ typedef struct _T_DP_READ_REQ {
...
@@ -1079,7 +1098,8 @@ typedef struct _T_DP_READ_REQ {
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
typedef
struct
_T_DP_READ_CON
{
typedef
struct
_T_DP_READ_CON
{
USIGN16
status
;
USIGN16
status
;
USIGN8
rem_add
;
/* 0..126 */
USIGN8
rem_add
;
/* 0..126 */
USIGN8
slot_number
;
/* 0..254, 255 is reserved */
USIGN8
slot_number
;
/* 0..254, 255 is reserved */
...
@@ -1091,7 +1111,8 @@ typedef struct _T_DP_READ_CON {
...
@@ -1091,7 +1111,8 @@ typedef struct _T_DP_READ_CON {
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
typedef
struct
_T_DP_WRITE_REQ
{
typedef
struct
_T_DP_WRITE_REQ
{
USIGN8
rem_add
;
/* 0..126, interpreted only when MSAC_C1 */
USIGN8
rem_add
;
/* 0..126, interpreted only when MSAC_C1 */
USIGN8
slot_number
;
/* 0..254, 255 is reserved */
USIGN8
slot_number
;
/* 0..254, 255 is reserved */
USIGN8
index
;
/* 0..254, 255 is reserved */
USIGN8
index
;
/* 0..254, 255 is reserved */
...
@@ -1102,7 +1123,8 @@ typedef struct _T_DP_WRITE_REQ {
...
@@ -1102,7 +1123,8 @@ typedef struct _T_DP_WRITE_REQ {
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
typedef
struct
_T_DP_WRITE_CON
{
typedef
struct
_T_DP_WRITE_CON
{
USIGN16
status
;
USIGN16
status
;
USIGN8
rem_add
;
/* 0..126 */
USIGN8
rem_add
;
/* 0..126 */
USIGN8
slot_number
;
/* 0..254, 255 is reserved */
USIGN8
slot_number
;
/* 0..254, 255 is reserved */
...
@@ -1112,7 +1134,8 @@ typedef struct _T_DP_WRITE_CON {
...
@@ -1112,7 +1134,8 @@ typedef struct _T_DP_WRITE_CON {
}
T_DP_WRITE_CON
;
}
T_DP_WRITE_CON
;
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
typedef
struct
_T_DP_DATA_TRANSPORT_REQ
{
typedef
struct
_T_DP_DATA_TRANSPORT_REQ
{
USIGN8
rem_add
;
/* 0..126 */
USIGN8
rem_add
;
/* 0..126 */
USIGN8
slot_number
;
/* 0..254, 255 is reserved */
USIGN8
slot_number
;
/* 0..254, 255 is reserved */
USIGN8
index
;
/* 0..254, 255 is reserved */
USIGN8
index
;
/* 0..254, 255 is reserved */
...
@@ -1123,7 +1146,8 @@ typedef struct _T_DP_DATA_TRANSPORT_REQ {
...
@@ -1123,7 +1146,8 @@ typedef struct _T_DP_DATA_TRANSPORT_REQ {
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
typedef
struct
_T_DP_DATA_TRANSPORT_CON
{
typedef
struct
_T_DP_DATA_TRANSPORT_CON
{
USIGN16
status
;
USIGN16
status
;
USIGN8
rem_add
;
/* 0..126 */
USIGN8
rem_add
;
/* 0..126 */
USIGN8
slot_number
;
/* 0..254, 255 is reserved */
USIGN8
slot_number
;
/* 0..254, 255 is reserved */
...
@@ -1135,7 +1159,8 @@ typedef struct _T_DP_DATA_TRANSPORT_CON {
...
@@ -1135,7 +1159,8 @@ typedef struct _T_DP_DATA_TRANSPORT_CON {
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
typedef
struct
_T_DP_ABORT_REQ
{
typedef
struct
_T_DP_ABORT_REQ
{
USIGN8
subnet
;
/* 0, 1, 2, others reserved */
USIGN8
subnet
;
/* 0, 1, 2, others reserved */
USIGN8
reason
;
/* user reason code: 0..0x3F */
USIGN8
reason
;
/* user reason code: 0..0x3F */
...
@@ -1143,7 +1168,8 @@ typedef struct _T_DP_ABORT_REQ {
...
@@ -1143,7 +1168,8 @@ typedef struct _T_DP_ABORT_REQ {
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
typedef
struct
_T_DP_ABORT_IND
{
typedef
struct
_T_DP_ABORT_IND
{
PB_BOOL
locally_generated
;
PB_BOOL
locally_generated
;
USIGN8
subnet
;
/* 0, 1, 2, others reserved */
USIGN8
subnet
;
/* 0, 1, 2, others reserved */
USIGN8
reason
;
/* reason codes: see DPV1 specification */
USIGN8
reason
;
/* reason codes: see DPV1 specification */
...
@@ -1154,7 +1180,8 @@ typedef struct _T_DP_ABORT_IND {
...
@@ -1154,7 +1180,8 @@ typedef struct _T_DP_ABORT_IND {
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
typedef
struct
_T_DP_ERROR_CON
{
typedef
struct
_T_DP_ERROR_CON
{
USIGN16
status
;
USIGN16
status
;
USIGN8
rem_add
;
USIGN8
rem_add
;
USIGN8
error_decode
;
USIGN8
error_decode
;
...
...
profibus/lib/rt/src/pb_dps.h
View file @
ce758cd3
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2019 SSAB EMEA AB.
*
* This file is part of ProviewR.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 2 of
* the License, or (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with ProviewR. If not, see <http://www.gnu.org/licenses/>
*
* Linking ProviewR statically or dynamically with other modules is
* making a combined work based on ProviewR. Thus, the terms and
* conditions of the GNU General Public License cover the whole
* combination.
*
* In addition, as a special exception, the copyright holders of
* ProviewR give you permission to, from the build function in the
* ProviewR Configurator, combine ProviewR with modules generated by the
* ProviewR PLC Editor to a PLC program, regardless of the license
* terms of these modules. You may copy and distribute the resulting
* combined work under the terms of your choice, provided that every
* copy of the combined work is accompanied by a complete copy of
* the source code of ProviewR (the version used to produce the
* combined work), being distributed under the terms of the GNU
* General Public License plus this exception.
*/
/*****************************************************************************/
/*****************************************************************************/
/* */
/* */
/*
SOFTING AG
*/
/*
SOFTING Industrial Automation GmbH
*/
/* Richard-Reitzner-Allee 6 */
/* Richard-Reitzner-Allee 6 */
/* D-85540 Haar */
/* D-85540 Haar */
/* Phone: (++49)-(0)89-45656-0 */
/* Phone: (++49)-(0)89-45656-0 */
/* Fax: (++49)-(0)89-45656-399 */
/* Fax: (++49)-(0)89-45656-399 */
/* */
/* */
/*
Copyright (C) SOFTING AG 1995-2003
*/
/*
Copyright (C) SOFTING Industrial Automation GmbH 1995-2012
*/
/* All Rights Reserved */
/* All Rights Reserved */
/* */
/* */
/*****************************************************************************/
/*****************************************************************************/
/*****************************************************************************/
/*****************************************************************************/
/* */
/* */
/* Filename : PB_DPS.H */
/* Filename : PB_DPS.H */
/* Version : 5.22.0.00.release */
/* Version : 1.30.0.00.release SPC3 based */
/* Date : 26-February-1999 */
/* : 2.06.0.00.release ASPC2 based */
/* Author : SOFTING AG */
/* Date : July-2009 */
/* Author : SOFTING */
/* */
/* */
/* Description : This file contains the global defines and types of DPS */
/* Description : This file contains the global defines and types of DPS */
/* */
/* */
...
@@ -111,6 +77,9 @@
...
@@ -111,6 +77,9 @@
#define DPS_MAX_CFG_DATA_LEN DP_MAX_CFG_DATA_LEN
#define DPS_MAX_CFG_DATA_LEN DP_MAX_CFG_DATA_LEN
#define DPS_MIN_SSA_DATA_LEN 4
#define DPS_MIN_SSA_DATA_LEN 4
#define DPS_MAX_OUTPUT_DATA_LEN 244
#define DPS_MAX_INPUT_DATA_LEN 244
/****************************************************************************/
/****************************************************************************/
/*** DPS SERVICE CODES ******************************************************/
/*** DPS SERVICE CODES ******************************************************/
/****************************************************************************/
/****************************************************************************/
...
@@ -179,12 +148,12 @@
...
@@ -179,12 +148,12 @@
#define DPS_DIAG_BIT_WAIT_UNTIL_FETCHED 0x80
#define DPS_DIAG_BIT_WAIT_UNTIL_FETCHED 0x80
#define DPS_DIAG_BIT_STATUS_MASK \
#define DPS_DIAG_BIT_STATUS_MASK \
(DPS_DIAG_BIT_EXT_DIAG | DPS_DIAG_BIT_STAT_DIAG
\
(DPS_DIAG_BIT_EXT_DIAG | DPS_DIAG_BIT_STAT_DIAG
|
\
|
DPS_DIAG_BIT_EXT_DIAG_OVERFLOW)
DPS_DIAG_BIT_EXT_DIAG_OVERFLOW)
#define DPS_DIAG_BIT_MASK \
#define DPS_DIAG_BIT_MASK \
(DPS_DIAG_BIT_EXT_DIAG | DPS_DIAG_BIT_STAT_DIAG
\
(DPS_DIAG_BIT_EXT_DIAG | DPS_DIAG_BIT_STAT_DIAG
|
\
|
DPS_DIAG_BIT_EXT_DIAG_OVERFLOW | DPS_DIAG_BIT_WAIT_UNTIL_FETCHED)
DPS_DIAG_BIT_EXT_DIAG_OVERFLOW | DPS_DIAG_BIT_WAIT_UNTIL_FETCHED)
/*--- DPS SPC3 SPECIAL USR_PRM_BYTE ----------------------------------------*/
/*--- DPS SPC3 SPECIAL USR_PRM_BYTE ----------------------------------------*/
...
@@ -193,8 +162,8 @@
...
@@ -193,8 +162,8 @@
#define DPS_SPC3_USR_PRM_WD_BASE_1MS 0x04
#define DPS_SPC3_USR_PRM_WD_BASE_1MS 0x04
#define DPS_SPC3_USR_PRM_MASK \
#define DPS_SPC3_USR_PRM_MASK \
(DPS_SPC3_USR_PRM_DISABLE_STARTBIT | DPS_SPC3_USR_PRM_DISABLE_STOPBIT
\
(DPS_SPC3_USR_PRM_DISABLE_STARTBIT | DPS_SPC3_USR_PRM_DISABLE_STOPBIT
|
\
|
DPS_SPC3_USR_PRM_WD_BASE_1MS)
DPS_SPC3_USR_PRM_WD_BASE_1MS)
/*--- DPS INPUT / OUTPUT STATUS --------------------------------------------*/
/*--- DPS INPUT / OUTPUT STATUS --------------------------------------------*/
...
@@ -216,7 +185,8 @@
...
@@ -216,7 +185,8 @@
/*--- DPS USER INTERFACE STRUCTURES ----------------------------------------*/
/*--- DPS USER INTERFACE STRUCTURES ----------------------------------------*/
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
typedef
struct
_T_DPS_INPUT_DATA_HEADER
{
typedef
struct
_T_DPS_INPUT_DATA_HEADER
{
USIGN8
input_data_len
;
/* length of DPS_USR input data, 0..244 */
USIGN8
input_data_len
;
/* length of DPS_USR input data, 0..244 */
USIGN8
input_state
;
/* status of input image: DPS_INPUT_STATE_xxx */
USIGN8
input_state
;
/* status of input image: DPS_INPUT_STATE_xxx */
...
@@ -226,7 +196,8 @@ typedef struct _T_DPS_INPUT_DATA_HEADER {
...
@@ -226,7 +196,8 @@ typedef struct _T_DPS_INPUT_DATA_HEADER {
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
typedef
struct
_T_DPS_OUTPUT_DATA_HEADER
{
typedef
struct
_T_DPS_OUTPUT_DATA_HEADER
{
USIGN8
output_data_len
;
/* length of DP master output data, 0..244 */
USIGN8
output_data_len
;
/* length of DP master output data, 0..244 */
USIGN8
output_state
;
/* status of output image: DPS_OUTPUT_STATE_xxx */
USIGN8
output_state
;
/* status of output image: DPS_OUTPUT_STATE_xxx */
...
@@ -236,7 +207,8 @@ typedef struct _T_DPS_OUTPUT_DATA_HEADER {
...
@@ -236,7 +207,8 @@ typedef struct _T_DPS_OUTPUT_DATA_HEADER {
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
typedef
struct
_T_DPS_CON_IND
{
typedef
struct
_T_DPS_CON_IND
{
USIGN16
status
;
USIGN16
status
;
}
T_DPS_CON_IND
;
}
T_DPS_CON_IND
;
...
@@ -245,7 +217,8 @@ typedef struct _T_DPS_CON_IND {
...
@@ -245,7 +217,8 @@ typedef struct _T_DPS_CON_IND {
/*--- DPS USIF SERVICE STRUCTURES ------------------------------------------*/
/*--- DPS USIF SERVICE STRUCTURES ------------------------------------------*/
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
typedef
struct
_T_DPS_INIT_SLAVE_REQ
{
typedef
struct
_T_DPS_INIT_SLAVE_REQ
{
USIGN8
USIGN8
slave_add
;
/* 0..125, DPS_DEFAULT_SLAVE_ADD, DPS_NON_VOLATILE_SLAVE_ADD */
slave_add
;
/* 0..125, DPS_DEFAULT_SLAVE_ADD, DPS_NON_VOLATILE_SLAVE_ADD */
USIGN8
min_tsdr
;
/* min. station delay responder, default 0, 11..255 */
USIGN8
min_tsdr
;
/* min. station delay responder, default 0, 11..255 */
...
@@ -281,7 +254,8 @@ typedef struct _T_DPS_INIT_SLAVE_REQ {
...
@@ -281,7 +254,8 @@ typedef struct _T_DPS_INIT_SLAVE_REQ {
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
typedef
struct
_T_DPS_INIT_SLAVE_CON
{
typedef
struct
_T_DPS_INIT_SLAVE_CON
{
USIGN16
status
;
/* OK, IV, NO */
USIGN16
status
;
/* OK, IV, NO */
INT16
remaining_frame_memory
;
/* left memory for telegram buffers */
INT16
remaining_frame_memory
;
/* left memory for telegram buffers */
...
@@ -294,7 +268,8 @@ typedef VOID T_DPS_EXIT_SLAVE_REQ; /* no request parameters */
...
@@ -294,7 +268,8 @@ typedef VOID T_DPS_EXIT_SLAVE_REQ; /* no request parameters */
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
typedef
struct
_T_DPS_EXIT_SLAVE_CON
{
typedef
struct
_T_DPS_EXIT_SLAVE_CON
{
USIGN16
status
;
/* OK */
USIGN16
status
;
/* OK */
}
T_DPS_EXIT_SLAVE_CON
;
}
T_DPS_EXIT_SLAVE_CON
;
...
@@ -305,7 +280,8 @@ typedef VOID T_DPS_GET_STATUS_REQ; /* no request parameters */
...
@@ -305,7 +280,8 @@ typedef VOID T_DPS_GET_STATUS_REQ; /* no request parameters */
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
typedef
struct
_T_DPS_GET_STATUS_CON_IND
{
typedef
struct
_T_DPS_GET_STATUS_CON_IND
{
USIGN16
status
;
/* OK, TO */
USIGN16
status
;
/* OK, TO */
USIGN8
slave_state
;
/* operation state of DP slave, DPS_STATE_xxx */
USIGN8
slave_state
;
/* operation state of DP slave, DPS_STATE_xxx */
...
@@ -336,7 +312,8 @@ typedef struct _T_DPS_GET_STATUS_CON_IND {
...
@@ -336,7 +312,8 @@ typedef struct _T_DPS_GET_STATUS_CON_IND {
/*==========================================================================*/
/*==========================================================================*/
typedef
struct
_T_DPS_SLAVE_DIAG_REQ
{
typedef
struct
_T_DPS_SLAVE_DIAG_REQ
{
USIGN8
diag_state
;
/* diagnostic state of DP slave, DPS_DIAG_BIT_xxx */
USIGN8
diag_state
;
/* diagnostic state of DP slave, DPS_DIAG_BIT_xxx */
USIGN8
ext_diag_data_len
;
/* 0..DP_MAX_EXT_DIAG_DATA_LEN */
USIGN8
ext_diag_data_len
;
/* 0..DP_MAX_EXT_DIAG_DATA_LEN */
...
@@ -346,14 +323,16 @@ typedef struct _T_DPS_SLAVE_DIAG_REQ {
...
@@ -346,14 +323,16 @@ typedef struct _T_DPS_SLAVE_DIAG_REQ {
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
typedef
struct
_T_DPS_SLAVE_DIAG_CON
{
typedef
struct
_T_DPS_SLAVE_DIAG_CON
{
USIGN16
status
;
/* OK, IV, NO */
USIGN16
status
;
/* OK, IV, NO */
}
T_DPS_SLAVE_DIAG_CON
;
}
T_DPS_SLAVE_DIAG_CON
;
/*==========================================================================*/
/*==========================================================================*/
typedef
struct
_T_DPS_CHK_CFG_IND
{
typedef
struct
_T_DPS_CHK_CFG_IND
{
USIGN16
status
;
/* OK */
USIGN16
status
;
/* OK */
USIGN8
cfg_data_len
;
/* CFG from DP master, see EN 50170 */
USIGN8
cfg_data_len
;
/* CFG from DP master, see EN 50170 */
...
@@ -365,14 +344,16 @@ typedef struct _T_DPS_CHK_CFG_IND {
...
@@ -365,14 +344,16 @@ typedef struct _T_DPS_CHK_CFG_IND {
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
typedef
struct
_T_DPS_CHK_CFG_RES
{
typedef
struct
_T_DPS_CHK_CFG_RES
{
USIGN16
status
;
/* OK, NO */
USIGN16
status
;
/* OK, NO */
}
T_DPS_CHK_CFG_RES
;
}
T_DPS_CHK_CFG_RES
;
/*==========================================================================*/
/*==========================================================================*/
typedef
struct
_T_DPS_SET_PRM_IND
{
typedef
struct
_T_DPS_SET_PRM_IND
{
USIGN16
status
;
/* OK */
USIGN16
status
;
/* OK */
USIGN8
user_prm_data_len
;
/* 0..DP_MAX_USER_PRM_DATA_LEN */
USIGN8
user_prm_data_len
;
/* 0..DP_MAX_USER_PRM_DATA_LEN */
...
@@ -396,14 +377,16 @@ typedef struct _T_DPS_SET_PRM_IND {
...
@@ -396,14 +377,16 @@ typedef struct _T_DPS_SET_PRM_IND {
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
typedef
struct
_T_DPS_SET_PRM_RES
{
typedef
struct
_T_DPS_SET_PRM_RES
{
USIGN16
status
;
/* OK, NO */
USIGN16
status
;
/* OK, NO */
}
T_DPS_SET_PRM_RES
;
}
T_DPS_SET_PRM_RES
;
/*==========================================================================*/
/*==========================================================================*/
typedef
struct
_T_DPS_SET_SLAVE_ADD_IND
{
typedef
struct
_T_DPS_SET_SLAVE_ADD_IND
{
USIGN16
status
;
/* OK */
USIGN16
status
;
/* OK */
USIGN8
rem_slave_data_len
;
/* 0..DP_MAX_REM_SLAVE_DATA_LEN */
USIGN8
rem_slave_data_len
;
/* 0..DP_MAX_REM_SLAVE_DATA_LEN */
...
...
profibus/lib/rt/src/pb_err.h
View file @
ce758cd3
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2019 SSAB EMEA AB.
*
* This file is part of ProviewR.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 2 of
* the License, or (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with ProviewR. If not, see <http://www.gnu.org/licenses/>
*
* Linking ProviewR statically or dynamically with other modules is
* making a combined work based on ProviewR. Thus, the terms and
* conditions of the GNU General Public License cover the whole
* combination.
*
* In addition, as a special exception, the copyright holders of
* ProviewR give you permission to, from the build function in the
* ProviewR Configurator, combine ProviewR with modules generated by the
* ProviewR PLC Editor to a PLC program, regardless of the license
* terms of these modules. You may copy and distribute the resulting
* combined work under the terms of your choice, provided that every
* copy of the combined work is accompanied by a complete copy of
* the source code of ProviewR (the version used to produce the
* combined work), being distributed under the terms of the GNU
* General Public License plus this exception.
*/
/*****************************************************************************/
/*****************************************************************************/
/* */
/* */
/*
SOFTING AG
*/
/*
SOFTING Industrial Automation GmbH
*/
/* Richard-Reitzner-Allee 6 */
/* Richard-Reitzner-Allee 6 */
/* D-85540 Haar */
/* D-85540 Haar */
/* Phone: (++49)-(0)89-45656-0 */
/* Phone: (++49)-(0)89-45656-0 */
/* Fax: (++49)-(0)89-45656-399 */
/* Fax: (++49)-(0)89-45656-399 */
/* */
/* */
/*
Copyright (C) SOFTING AG 1995-2003
*/
/*
Copyright (C) SOFTING Industrial Automation GmbH 1995-2012
*/
/* All Rights Reserved */
/* All Rights Reserved */
/* */
/* */
/*****************************************************************************/
/*****************************************************************************/
...
@@ -49,9 +14,9 @@
...
@@ -49,9 +14,9 @@
/* PROFIBUS ABORT-, REJECT-, EVENT- and ERROR DEFINES and -TYPES */
/* PROFIBUS ABORT-, REJECT-, EVENT- and ERROR DEFINES and -TYPES */
/* */
/* */
/* Filename : PB_ERR.H */
/* Filename : PB_ERR.H */
/* Version : 5.
26.1
.00.release */
/* Version : 5.
46.0
.00.release */
/* Date :
27-June-2003
*/
/* Date :
October-2011
*/
/* Author : SOFTING
AG
*/
/* Author : SOFTING
*/
/* */
/* */
/* Description : This file contains the ABORT, REJECT, EVENT and ERROR */
/* Description : This file contains the ABORT, REJECT, EVENT and ERROR */
/* types and defines and the according reason codes. */
/* types and defines and the according reason codes. */
...
@@ -791,8 +756,7 @@
...
@@ -791,8 +756,7 @@
#define E_IF_INIT_INVALID_PARAMETER 8
/* invalid initialize parameter */
#define E_IF_INIT_INVALID_PARAMETER 8
/* invalid initialize parameter */
#define E_IF_LOADER_ERROR 9
/* download firmware error */
#define E_IF_LOADER_ERROR 9
/* download firmware error */
#define E_IF_NO_CNTRL_RES 10
/* controller does not respond */
#define E_IF_NO_CNTRL_RES 10
/* controller does not respond */
#define E_IF_INVALID_CNTRL_TYPE_VERSION \
#define E_IF_INVALID_CNTRL_TYPE_VERSION 11
/* inv. controller type or SW \
11
/* inv. controller type or SW \
vers.*/
vers.*/
#define E_IF_INVALID_LAYER 12
/* invalid layer */
#define E_IF_INVALID_LAYER 12
/* invalid layer */
#define E_IF_INVALID_SERVICE 13
/* invalid service identifier */
#define E_IF_INVALID_SERVICE 13
/* invalid service identifier */
...
@@ -807,7 +771,7 @@
...
@@ -807,7 +771,7 @@
#define E_IF_SERVICE_NOT_SUPPORTED 24
/* service not supported */
#define E_IF_SERVICE_NOT_SUPPORTED 24
/* service not supported */
#define E_IF_SERVICE_NOT_EXECUTABLE 25
/* service not executable */
#define E_IF_SERVICE_NOT_EXECUTABLE 25
/* service not executable */
#define E_IF_INVALID_VERSION 26
/* invalid version */
#define E_IF_INVALID_VERSION 26
/* invalid version */
#define E_IF_STATE_CONFLICT 27
/* state conflict */
#define E_IF_NO_CNTRL_PRESENT 28
/* controller not available */
#define E_IF_NO_CNTRL_PRESENT 28
/* controller not available */
#define E_IF_INVALID_PARAMETER 30
/* wrong parameter in REQ or RES */
#define E_IF_INVALID_PARAMETER 30
/* wrong parameter in REQ or RES */
#define E_IF_INIT_FAILED 31
/* init. API or Controller failed */
#define E_IF_INIT_FAILED 31
/* init. API or Controller failed */
...
@@ -819,12 +783,14 @@
...
@@ -819,12 +783,14 @@
/* error codes available only in Win NT ---------------------------------------
/* error codes available only in Win NT ---------------------------------------
*/
*/
#define E_IF_SLAVE_DIAG_DATA 0xF0
/* no data available */
#define E_IF_SLAVE_DIAG_DATA 0xF0
/* no data available */
/* new diagnostics data available */
/* new diagnostics data available */
#define E_IF_SLAVE_ERROR 0xF1
/* no data exchange */
#define E_IF_SLAVE_ERROR 0xF1
/* no data exchange */
#define E_IF_INVALID_DP_STATE 0xF2
/* DP is not in state clear/operate*/
#define E_IF_INVALID_DP_STATE 0xF2
/* DP is not in state clear/operate*/
#define E_IF_READING_REGISTRY 0xF3
/* error reading registry */
#define E_IF_READING_REGISTRY 0xF3
/* error reading registry */
#define E_IF_SOCKET_ERROR 0xFE
/* TCP socket error */
/* get detail with WSAGetLastError */
#define E_IF_OS_ERROR 0xFF
/* OS system (WIN,DOS) error */
#define E_IF_OS_ERROR 0xFF
/* OS system (WIN,DOS) error */
/* get detail with GetLastError */
/* get detail with GetLastError */
/* INTERFACE ERROR DETAIL CODES (only Win95/98) -------------------------------
/* INTERFACE ERROR DETAIL CODES (only Win95/98) -------------------------------
*/
*/
...
@@ -862,21 +828,24 @@
...
@@ -862,21 +828,24 @@
#define MAX_ERROR_DESCR_LENGTH _NAME_LENGTH(ERROR_DESCR_LENGTH)
#define MAX_ERROR_DESCR_LENGTH _NAME_LENGTH(ERROR_DESCR_LENGTH)
/* --- standard error data structure --------------------------------------- */
/* --- standard error data structure --------------------------------------- */
typedef
struct
_T_ERROR
{
typedef
struct
_T_ERROR
{
USIGN16
class_code
;
/* class and code */
USIGN16
class_code
;
/* class and code */
INT16
add_detail
;
/* additional detail */
INT16
add_detail
;
/* additional detail */
STRINGV
add_description
[
MAX_ERROR_DESCR_LENGTH
];
/* additional description */
STRINGV
add_description
[
MAX_ERROR_DESCR_LENGTH
];
/* additional description */
}
T_ERROR
;
}
T_ERROR
;
/* --- PI error data structure --------------------------------------------- */
/* --- PI error data structure --------------------------------------------- */
typedef
struct
_T_PI_ERROR
{
typedef
struct
_T_PI_ERROR
{
T_ERROR
error
;
/* standard error type */
T_ERROR
error
;
/* standard error type */
USIGN8
pi_state
;
/* pi state */
USIGN8
pi_state
;
/* pi state */
USIGN8
dummy
;
/* alignment */
USIGN8
dummy
;
/* alignment */
}
T_PI_ERROR
;
}
T_PI_ERROR
;
/* --- PI-LOC error data structure ----------------------------------------- */
/* --- PI-LOC error data structure ----------------------------------------- */
typedef
struct
_T_PI_LOC_ERROR
{
typedef
struct
_T_PI_LOC_ERROR
{
T_ERROR
error
;
/* standard error type */
T_ERROR
error
;
/* standard error type */
USIGN8
pi_state
;
/* pi state */
USIGN8
pi_state
;
/* pi state */
USIGN8
dummy
;
/* alignment */
USIGN8
dummy
;
/* alignment */
...
@@ -884,7 +853,8 @@ typedef struct _T_PI_LOC_ERROR {
...
@@ -884,7 +853,8 @@ typedef struct _T_PI_LOC_ERROR {
}
T_PI_LOC_ERROR
;
}
T_PI_LOC_ERROR
;
/* --- OD error data structure --------------------------------------------- */
/* --- OD error data structure --------------------------------------------- */
typedef
struct
_T_OD_ERROR
{
typedef
struct
_T_OD_ERROR
{
T_ERROR
error
;
/* standard error type */
T_ERROR
error
;
/* standard error type */
USIGN16
index
;
/* error index */
USIGN16
index
;
/* error index */
}
T_OD_ERROR
;
}
T_OD_ERROR
;
...
@@ -894,7 +864,8 @@ typedef T_OD_ERROR T_OV_ERROR;
...
@@ -894,7 +864,8 @@ typedef T_OD_ERROR T_OV_ERROR;
#endif
#endif
/* --- source OD error data structure -------------------------------------- */
/* --- source OD error data structure -------------------------------------- */
typedef
struct
_T_SRC_OD_ERROR
{
typedef
struct
_T_SRC_OD_ERROR
{
T_ERROR
error
;
/* standard error type */
T_ERROR
error
;
/* standard error type */
USIGN32
vfd_number
;
/* vfd number */
USIGN32
vfd_number
;
/* vfd number */
USIGN16
index
;
/* error index */
USIGN16
index
;
/* error index */
...
@@ -905,13 +876,15 @@ typedef T_SRC_OD_ERROR T_SRC_OV_ERROR;
...
@@ -905,13 +876,15 @@ typedef T_SRC_OD_ERROR T_SRC_OV_ERROR;
#endif
#endif
/* --- VFD error data structure -------------------------------------------- */
/* --- VFD error data structure -------------------------------------------- */
typedef
struct
_T_VFD_ERROR
{
typedef
struct
_T_VFD_ERROR
{
T_ERROR
error
;
/* standard error type */
T_ERROR
error
;
/* standard error type */
USIGN32
vfd_number
;
/* vfd number */
USIGN32
vfd_number
;
/* vfd number */
}
T_VFD_ERROR
;
}
T_VFD_ERROR
;
/* --- CRL error data structure -------------------------------------------- */
/* --- CRL error data structure -------------------------------------------- */
typedef
struct
_T_CRL_ERROR
{
typedef
struct
_T_CRL_ERROR
{
T_ERROR
error
;
/* standard error type */
T_ERROR
error
;
/* standard error type */
USIGN16
error_cr
;
/* error cr */
USIGN16
error_cr
;
/* error cr */
}
T_CRL_ERROR
;
}
T_CRL_ERROR
;
...
@@ -923,7 +896,8 @@ typedef T_CRL_ERROR T_KBL_ERROR;
...
@@ -923,7 +896,8 @@ typedef T_CRL_ERROR T_KBL_ERROR;
/*****************************************************************************/
/*****************************************************************************/
/************* FDLIF-ERROR DATA STRUCTURES *****************************/
/************* FDLIF-ERROR DATA STRUCTURES *****************************/
/*****************************************************************************/
/*****************************************************************************/
typedef
struct
_T_FDLIF_ERROR
{
typedef
struct
_T_FDLIF_ERROR
{
USIGN8
result
;
/* class and code */
USIGN8
result
;
/* class and code */
USIGN8
dummy
;
/* alignment byte */
USIGN8
dummy
;
/* alignment byte */
USIGN16
add_detail
;
/* additional detail */
USIGN16
add_detail
;
/* additional detail */
...
@@ -933,7 +907,8 @@ typedef struct _T_FDLIF_ERROR {
...
@@ -933,7 +907,8 @@ typedef struct _T_FDLIF_ERROR {
/************* EXCEPTION STRUCTURES *****************************/
/************* EXCEPTION STRUCTURES *****************************/
/*****************************************************************************/
/*****************************************************************************/
typedef
struct
_T_EXCEPTION
{
typedef
struct
_T_EXCEPTION
{
USIGN8
task_id
;
/* task identifier in which execption occurs */
USIGN8
task_id
;
/* task identifier in which execption occurs */
USIGN8
par1
;
/* parameter 1 */
USIGN8
par1
;
/* parameter 1 */
USIGN16
par2
;
/* parameter 2 */
USIGN16
par2
;
/* parameter 2 */
...
...
profibus/lib/rt/src/pb_fdl.h
View file @
ce758cd3
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2019 SSAB EMEA AB.
*
* This file is part of ProviewR.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 2 of
* the License, or (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with ProviewR. If not, see <http://www.gnu.org/licenses/>
*
* Linking ProviewR statically or dynamically with other modules is
* making a combined work based on ProviewR. Thus, the terms and
* conditions of the GNU General Public License cover the whole
* combination.
*
* In addition, as a special exception, the copyright holders of
* ProviewR give you permission to, from the build function in the
* ProviewR Configurator, combine ProviewR with modules generated by the
* ProviewR PLC Editor to a PLC program, regardless of the license
* terms of these modules. You may copy and distribute the resulting
* combined work under the terms of your choice, provided that every
* copy of the combined work is accompanied by a complete copy of
* the source code of ProviewR (the version used to produce the
* combined work), being distributed under the terms of the GNU
* General Public License plus this exception.
*/
/*****************************************************************************/
/*****************************************************************************/
/* */
/* */
/*
SOFTING AG
*/
/*
SOFTING Industrial Automation GmbH
*/
/* Richard-Reitzner-Allee 6 */
/* Richard-Reitzner-Allee 6 */
/* D-85540 Haar */
/* D-85540 Haar */
/* Phone: (++49)-(0)89-45656-0 */
/* Phone: (++49)-(0)89-45656-0 */
/* Fax: (++49)-(0)89-45656-399 */
/* Fax: (++49)-(0)89-45656-399 */
/* */
/* */
/*
Copyright (C) SOFTING AG 1995-2003
*/
/*
Copyright (C) SOFTING Industrial Automation GmbH 1995-2012
*/
/* All Rights Reserved */
/* All Rights Reserved */
/* */
/* */
/*****************************************************************************/
/*****************************************************************************/
...
@@ -50,8 +15,8 @@
...
@@ -50,8 +15,8 @@
/* */
/* */
/* Filename : PB_FDL.H */
/* Filename : PB_FDL.H */
/* Version : 5.21.0.00.release */
/* Version : 5.21.0.00.release */
/* Date :
27-February-1998
*/
/* Date :
February-1998
*/
/* Author : SOFTING
AG
*/
/* Author : SOFTING
*/
/* */
/* */
/* Description : This file contains the types and defines of the FDL-User- */
/* Description : This file contains the types and defines of the FDL-User- */
/* Interface */
/* Interface */
...
@@ -173,7 +138,8 @@
...
@@ -173,7 +138,8 @@
/* ************** Busparameter block ********************* */
/* ************** Busparameter block ********************* */
/* ************************************************************************** */
/* ************************************************************************** */
typedef
struct
_T_FDLIF_SET_BUSPARAMETER_REQ
{
typedef
struct
_T_FDLIF_SET_BUSPARAMETER_REQ
{
USIGN8
loc_add
;
/* local station */
USIGN8
loc_add
;
/* local station */
USIGN8
loc_segm
;
/* local segment */
USIGN8
loc_segm
;
/* local segment */
USIGN8
baud_rate
;
/* baud rate */
USIGN8
baud_rate
;
/* baud rate */
...
@@ -192,7 +158,8 @@ typedef struct _T_FDLIF_SET_BUSPARAMETER_REQ {
...
@@ -192,7 +158,8 @@ typedef struct _T_FDLIF_SET_BUSPARAMETER_REQ {
USIGN8
ident
[
202
];
/* for internal use */
USIGN8
ident
[
202
];
/* for internal use */
}
T_FDLIF_SET_BUSPARAMETER_REQ
;
}
T_FDLIF_SET_BUSPARAMETER_REQ
;
typedef
struct
_T_FDLIF_READ_BUSPARAMETER_CNF
{
typedef
struct
_T_FDLIF_READ_BUSPARAMETER_CNF
{
USIGN8
loc_add
;
/* local station */
USIGN8
loc_add
;
/* local station */
USIGN8
loc_segm
;
/* local segment */
USIGN8
loc_segm
;
/* local segment */
USIGN8
baud_rate
;
/* baud rate */
USIGN8
baud_rate
;
/* baud rate */
...
@@ -215,7 +182,8 @@ typedef struct _T_FDLIF_READ_BUSPARAMETER_CNF {
...
@@ -215,7 +182,8 @@ typedef struct _T_FDLIF_READ_BUSPARAMETER_CNF {
/* ******************* SAP block ************************* */
/* ******************* SAP block ************************* */
/* ************************************************************************* */
/* ************************************************************************* */
typedef
struct
_T_FDLIF_SAP_ACTIVATE_REQ
{
typedef
struct
_T_FDLIF_SAP_ACTIVATE_REQ
{
USIGN8
sap_nr
;
/* SAP to be activated */
USIGN8
sap_nr
;
/* SAP to be activated */
USIGN8
max_l_sdu_length_req
;
/* maximum length of request telegram */
USIGN8
max_l_sdu_length_req
;
/* maximum length of request telegram */
USIGN8
max_l_sdu_length_con_ind
;
/* maximum length of con/ind telegram */
USIGN8
max_l_sdu_length_con_ind
;
/* maximum length of con/ind telegram */
...
@@ -230,7 +198,8 @@ typedef struct _T_FDLIF_SAP_ACTIVATE_REQ {
...
@@ -230,7 +198,8 @@ typedef struct _T_FDLIF_SAP_ACTIVATE_REQ {
USIGN8
dummy
;
/* alignment byte */
USIGN8
dummy
;
/* alignment byte */
}
T_FDLIF_SAP_ACTIVATE_REQ
;
}
T_FDLIF_SAP_ACTIVATE_REQ
;
typedef
struct
_T_FDLIF_RSAP_ACTIVATE_REQ
{
typedef
struct
_T_FDLIF_RSAP_ACTIVATE_REQ
{
USIGN8
sap_nr
;
/* SAP to be activated */
USIGN8
sap_nr
;
/* SAP to be activated */
USIGN8
max_l_sdu_length_req
;
/* maximum length of req telegram */
USIGN8
max_l_sdu_length_req
;
/* maximum length of req telegram */
USIGN8
max_l_sdu_length_ind
;
/* maximum length of ind telegram */
USIGN8
max_l_sdu_length_ind
;
/* maximum length of ind telegram */
...
@@ -241,14 +210,16 @@ typedef struct _T_FDLIF_RSAP_ACTIVATE_REQ {
...
@@ -241,14 +210,16 @@ typedef struct _T_FDLIF_RSAP_ACTIVATE_REQ {
USIGN8
dummy
;
/* alignmnet byte */
USIGN8
dummy
;
/* alignmnet byte */
}
T_FDLIF_RSAP_ACTIVATE_REQ
;
}
T_FDLIF_RSAP_ACTIVATE_REQ
;
typedef
struct
_T_FDLIF_SAP_CHANGE_REQ
{
typedef
struct
_T_FDLIF_SAP_CHANGE_REQ
{
USIGN8
sap_nr
;
/* SAP to be activated */
USIGN8
sap_nr
;
/* SAP to be activated */
USIGN8
access_sap
;
/* permitted request SAPs */
USIGN8
access_sap
;
/* permitted request SAPs */
USIGN8
access_station
;
/* permitted requestor */
USIGN8
access_station
;
/* permitted requestor */
USIGN8
dummy
;
/* alignment byte */
USIGN8
dummy
;
/* alignment byte */
}
T_FDLIF_SAP_CHANGE_REQ
;
}
T_FDLIF_SAP_CHANGE_REQ
;
typedef
struct
_T_FDLIF_SAP_DEACTIVATE_REQ
{
typedef
struct
_T_FDLIF_SAP_DEACTIVATE_REQ
{
USIGN8
sap_nr
;
/* SAP to be activated */
USIGN8
sap_nr
;
/* SAP to be activated */
USIGN8
dummy
;
/* alignment byte */
USIGN8
dummy
;
/* alignment byte */
}
T_FDLIF_SAP_DEACTIVATE_REQ
;
}
T_FDLIF_SAP_DEACTIVATE_REQ
;
...
@@ -257,7 +228,8 @@ typedef struct _T_FDLIF_SAP_DEACTIVATE_REQ {
...
@@ -257,7 +228,8 @@ typedef struct _T_FDLIF_SAP_DEACTIVATE_REQ {
/* ************* Data transfer ********************* */
/* ************* Data transfer ********************* */
/* ************************************************************************* */
/* ************************************************************************* */
typedef
struct
_T_FDLIF_SDN_SDA_SRD_REQ
{
typedef
struct
_T_FDLIF_SDN_SDA_SRD_REQ
{
USIGN8
ssap
;
/* source SAP */
USIGN8
ssap
;
/* source SAP */
USIGN8
dsap
;
/* destination SAP */
USIGN8
dsap
;
/* destination SAP */
USIGN8
rem_add
;
/* address of remote station */
USIGN8
rem_add
;
/* address of remote station */
...
@@ -267,13 +239,15 @@ typedef struct _T_FDLIF_SDN_SDA_SRD_REQ {
...
@@ -267,13 +239,15 @@ typedef struct _T_FDLIF_SDN_SDA_SRD_REQ {
/* USIGN8 req_data [length] request data */
/* USIGN8 req_data [length] request data */
}
T_FDLIF_SDN_SDA_SRD_REQ
;
}
T_FDLIF_SDN_SDA_SRD_REQ
;
typedef
struct
_T_FDLIF_SRD_CNF
{
typedef
struct
_T_FDLIF_SRD_CNF
{
USIGN8
status
;
/* status */
USIGN8
status
;
/* status */
USIGN8
length
;
/* length of request data */
USIGN8
length
;
/* length of request data */
/* USIGN8 cnf_data [length]; request data */
/* USIGN8 cnf_data [length]; request data */
}
T_FDLIF_SRD_CNF
;
}
T_FDLIF_SRD_CNF
;
typedef
struct
_T_FDLIF_RUP_REQ
{
typedef
struct
_T_FDLIF_RUP_REQ
{
USIGN8
sap_nr
;
/* number of local SAP */
USIGN8
sap_nr
;
/* number of local SAP */
USIGN8
priority
;
/* priority of request */
USIGN8
priority
;
/* priority of request */
USIGN8
dummy
;
/* alignment byte */
USIGN8
dummy
;
/* alignment byte */
...
@@ -286,7 +260,8 @@ typedef struct _T_FDLIF_RUP_REQ {
...
@@ -286,7 +260,8 @@ typedef struct _T_FDLIF_RUP_REQ {
/* ************************************************************************* */
/* ************************************************************************* */
/* the possible events are defined in the header file PB_ERR.H */
/* the possible events are defined in the header file PB_ERR.H */
typedef
struct
_T_FDLIF_EVENT_IND
{
typedef
struct
_T_FDLIF_EVENT_IND
{
USIGN8
event
;
/* event */
USIGN8
event
;
/* event */
USIGN8
dummy
;
/* alignment byte */
USIGN8
dummy
;
/* alignment byte */
}
T_FDLIF_EVENT_IND
;
}
T_FDLIF_EVENT_IND
;
...
...
profibus/lib/rt/src/pb_fm7.h
View file @
ce758cd3
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2019 SSAB EMEA AB.
*
* This file is part of ProviewR.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 2 of
* the License, or (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with ProviewR. If not, see <http://www.gnu.org/licenses/>
*
* Linking ProviewR statically or dynamically with other modules is
* making a combined work based on ProviewR. Thus, the terms and
* conditions of the GNU General Public License cover the whole
* combination.
*
* In addition, as a special exception, the copyright holders of
* ProviewR give you permission to, from the build function in the
* ProviewR Configurator, combine ProviewR with modules generated by the
* ProviewR PLC Editor to a PLC program, regardless of the license
* terms of these modules. You may copy and distribute the resulting
* combined work under the terms of your choice, provided that every
* copy of the combined work is accompanied by a complete copy of
* the source code of ProviewR (the version used to produce the
* combined work), being distributed under the terms of the GNU
* General Public License plus this exception.
*/
/*****************************************************************************/
/*****************************************************************************/
/* */
/* */
/*
SOFTING AG
*/
/*
SOFTING Industrial Automation GmbH
*/
/* Richard-Reitzner-Allee 6 */
/* Richard-Reitzner-Allee 6 */
/* D-85540 Haar */
/* D-85540 Haar */
/* Phone: (++49)-(0)89-45656-0 */
/* Phone: (++49)-(0)89-45656-0 */
/* Fax: (++49)-(0)89-45656-399 */
/* Fax: (++49)-(0)89-45656-399 */
/* */
/* */
/*
Copyright (C) SOFTING AG 1995-2003
*/
/*
Copyright (C) SOFTING Industrial Automation GmbH 1995-2012
*/
/* All Rights Reserved */
/* All Rights Reserved */
/* */
/* */
/*****************************************************************************/
/*****************************************************************************/
...
@@ -50,8 +15,8 @@
...
@@ -50,8 +15,8 @@
/* */
/* */
/* Filename : PB_FM7.H */
/* Filename : PB_FM7.H */
/* Version : 5.21.0.00.release */
/* Version : 5.21.0.00.release */
/* Date :
27-February-1998
*/
/* Date :
February-1998
*/
/* Author : SOFTING
AG
*/
/* Author : SOFTING
*/
/* */
/* */
/* Description : This file contains the types and defines of the FM7-User- */
/* Description : This file contains the types and defines of the FM7-User- */
/* Interface */
/* Interface */
...
@@ -163,7 +128,8 @@
...
@@ -163,7 +128,8 @@
/* Initiate Service */
/* Initiate Service */
/****************************************************************************/
/****************************************************************************/
typedef
struct
_T_FM7_INIT_REQ
{
typedef
struct
_T_FM7_INIT_REQ
{
USIGN8
snd_len_low
;
/* max FM7 PDU size to send with low priority */
USIGN8
snd_len_low
;
/* max FM7 PDU size to send with low priority */
USIGN8
rcv_len_low
;
/* max FM7 PDU size to receive with low priority */
USIGN8
rcv_len_low
;
/* max FM7 PDU size to receive with low priority */
USIGN8
supported_services
[
FEAT_SUPP_LEN
];
/* supported FM7 services */
USIGN8
supported_services
[
FEAT_SUPP_LEN
];
/* supported FM7 services */
...
@@ -173,7 +139,8 @@ typedef struct _T_FM7_INIT_REQ {
...
@@ -173,7 +139,8 @@ typedef struct _T_FM7_INIT_REQ {
typedef
T_FM7_INIT_REQ
T_FMA_INIT_REQ
;
typedef
T_FM7_INIT_REQ
T_FMA_INIT_REQ
;
#endif
#endif
typedef
struct
_T_FM7_INIT_ERR_CNF
{
typedef
struct
_T_FM7_INIT_ERR_CNF
{
USIGN16
class_code
;
/* error code and class */
USIGN16
class_code
;
/* error code and class */
USIGN8
snd_len_low
;
/* max FM7 PDU size to send with low priority */
USIGN8
snd_len_low
;
/* max FM7 PDU size to send with low priority */
USIGN8
rcv_len_low
;
/* max FM7 PDU size to receive with low priority */
USIGN8
rcv_len_low
;
/* max FM7 PDU size to receive with low priority */
...
@@ -188,7 +155,8 @@ typedef T_FM7_INIT_ERR_CNF T_FMA_INIT_ERR_CNF;
...
@@ -188,7 +155,8 @@ typedef T_FM7_INIT_ERR_CNF T_FMA_INIT_ERR_CNF;
/* Abort Service */
/* Abort Service */
/****************************************************************************/
/****************************************************************************/
typedef
struct
_T_FM7_ABORT_REQ
{
typedef
struct
_T_FM7_ABORT_REQ
{
PB_BOOL
local
;
/* local or remote detected */
PB_BOOL
local
;
/* local or remote detected */
USIGN8
abort_id
;
/* identifier (USR,LLI_USR,LLI,FDL) */
USIGN8
abort_id
;
/* identifier (USR,LLI_USR,LLI,FDL) */
USIGN8
reason
;
/* abort reason code */
USIGN8
reason
;
/* abort reason code */
...
@@ -267,7 +235,8 @@ typedef T_FM7_ABORT_REQ T_FMA_ABORT_REQ;
...
@@ -267,7 +235,8 @@ typedef T_FM7_ABORT_REQ T_FMA_ABORT_REQ;
#define O_CONN 0x02
#define O_CONN 0x02
/*--- CRL-Header -----------------------------------------------------------*/
/*--- CRL-Header -----------------------------------------------------------*/
typedef
struct
_T_CRL_HDR
{
typedef
struct
_T_CRL_HDR
{
INT16
nr_of_entries
;
/* number of CRL enries */
INT16
nr_of_entries
;
/* number of CRL enries */
USIGN8
poll_sap
;
/* poll list SAP */
USIGN8
poll_sap
;
/* poll list SAP */
USIGN8
symbol_length
;
/* max symbol lenght in CRL */
USIGN8
symbol_length
;
/* max symbol lenght in CRL */
...
@@ -282,7 +251,8 @@ typedef T_CRL_HDR T_KBL_HDR;
...
@@ -282,7 +251,8 @@ typedef T_CRL_HDR T_KBL_HDR;
/*--- CRL-Static-Entry
/*--- CRL-Static-Entry
* -----------------------------------------------------------*/
* -----------------------------------------------------------*/
typedef
struct
_T_CRL_STATIC
{
typedef
struct
_T_CRL_STATIC
{
USIGN8
loc_lsap
;
/* local LSAP */
USIGN8
loc_lsap
;
/* local LSAP */
USIGN8
rem_add
;
/* remote address */
USIGN8
rem_add
;
/* remote address */
USIGN8
rem_segm
;
/* remote segment */
USIGN8
rem_segm
;
/* remote segment */
...
@@ -311,7 +281,8 @@ typedef T_CRL_STATIC T_KBL_STATIC;
...
@@ -311,7 +281,8 @@ typedef T_CRL_STATIC T_KBL_STATIC;
#endif
#endif
/*--- CRL-Dynamic-Entry ----------------------------------------------------*/
/*--- CRL-Dynamic-Entry ----------------------------------------------------*/
typedef
struct
_T_CRL_DYNAMIC
{
typedef
struct
_T_CRL_DYNAMIC
{
USIGN8
rem_add
;
/* current remote address */
USIGN8
rem_add
;
/* current remote address */
USIGN8
rem_segm
;
/* current remote segment */
USIGN8
rem_segm
;
/* current remote segment */
USIGN8
rem_lsap
;
/* current remote LSAP */
USIGN8
rem_lsap
;
/* current remote LSAP */
...
@@ -333,7 +304,8 @@ typedef T_CRL_DYNAMIC T_KBL_DYNAMIC;
...
@@ -333,7 +304,8 @@ typedef T_CRL_DYNAMIC T_KBL_DYNAMIC;
/****************************************************************************/
/****************************************************************************/
/*--- Load-CRL-Service -----------------------------------------------------*/
/*--- Load-CRL-Service -----------------------------------------------------*/
typedef
struct
_T_LOAD_CRL_REQ
{
typedef
struct
_T_LOAD_CRL_REQ
{
USIGN16
desired_cr
;
/* desired communication reference */
USIGN16
desired_cr
;
/* desired communication reference */
union
{
union
{
T_CRL_HDR
crl_hdr
;
/* CRL-Header-Entry */
T_CRL_HDR
crl_hdr
;
/* CRL-Header-Entry */
...
@@ -342,7 +314,8 @@ typedef struct _T_LOAD_CRL_REQ {
...
@@ -342,7 +314,8 @@ typedef struct _T_LOAD_CRL_REQ {
}
T_LOAD_CRL_REQ
;
}
T_LOAD_CRL_REQ
;
#if (PB_VER < 500)
#if (PB_VER < 500)
typedef
struct
_T_LOAD_KBL_REQ
{
typedef
struct
_T_LOAD_KBL_REQ
{
USIGN16
desired_cr
;
/* desired communication reference */
USIGN16
desired_cr
;
/* desired communication reference */
union
{
union
{
T_KBL_HDR
kbl_hdr
;
/* CRL-Header-Entry */
T_KBL_HDR
kbl_hdr
;
/* CRL-Header-Entry */
...
@@ -446,7 +419,8 @@ typedef struct _T_LOAD_KBL_REQ {
...
@@ -446,7 +419,8 @@ typedef struct _T_LOAD_KBL_REQ {
/* --- DTU Receiver ------------------------------------------------------- */
/* --- DTU Receiver ------------------------------------------------------- */
#define CONLS_SERVER 0
#define CONLS_SERVER 0
typedef
struct
_T_READ_CRL_REQ
{
typedef
struct
_T_READ_CRL_REQ
{
USIGN16
desired_cr
;
/* desired communication reference */
USIGN16
desired_cr
;
/* desired communication reference */
}
T_READ_CRL_REQ
;
}
T_READ_CRL_REQ
;
...
@@ -455,7 +429,8 @@ typedef T_READ_CRL_REQ T_READ_KBL_REQ;
...
@@ -455,7 +429,8 @@ typedef T_READ_CRL_REQ T_READ_KBL_REQ;
#endif
#endif
/*--- CRL-Entry Data-Type --------------------------------------------------*/
/*--- CRL-Entry Data-Type --------------------------------------------------*/
typedef
struct
_T_CRL_ENTRY
{
typedef
struct
_T_CRL_ENTRY
{
T_CRL_STATIC
crl_static
;
/* CRL-Static-Entry */
T_CRL_STATIC
crl_static
;
/* CRL-Static-Entry */
T_CRL_DYNAMIC
crl_dynamic
;
/* CRL-Dynamic-Entry */
T_CRL_DYNAMIC
crl_dynamic
;
/* CRL-Dynamic-Entry */
USIGN8
dummy
;
/* alignment */
USIGN8
dummy
;
/* alignment */
...
@@ -464,7 +439,8 @@ typedef struct _T_CRL_ENTRY {
...
@@ -464,7 +439,8 @@ typedef struct _T_CRL_ENTRY {
}
T_CRL_ENTRY
;
}
T_CRL_ENTRY
;
#if (PB_VER < 500)
#if (PB_VER < 500)
typedef
struct
_T_KBL_ENTRY
{
typedef
struct
_T_KBL_ENTRY
{
T_KBL_STATIC
kbl_static
;
/* CRL-Static-Entry */
T_KBL_STATIC
kbl_static
;
/* CRL-Static-Entry */
T_KBL_DYNAMIC
kbl_dynamic
;
/* CRL-Dynamic-Entry */
T_KBL_DYNAMIC
kbl_dynamic
;
/* CRL-Dynamic-Entry */
USIGN8
dummy
;
/* alignment */
USIGN8
dummy
;
/* alignment */
...
@@ -473,7 +449,8 @@ typedef struct _T_KBL_ENTRY {
...
@@ -473,7 +449,8 @@ typedef struct _T_KBL_ENTRY {
}
T_KBL_ENTRY
;
}
T_KBL_ENTRY
;
#endif
#endif
typedef
struct
_T_READ_CRL_CNF
{
typedef
struct
_T_READ_CRL_CNF
{
USIGN16
desired_cr
;
/* desired communication reference */
USIGN16
desired_cr
;
/* desired communication reference */
union
{
union
{
T_CRL_HDR
crl_hdr
;
/* CRL-header */
T_CRL_HDR
crl_hdr
;
/* CRL-header */
...
@@ -482,7 +459,8 @@ typedef struct _T_READ_CRL_CNF {
...
@@ -482,7 +459,8 @@ typedef struct _T_READ_CRL_CNF {
}
T_READ_CRL_CNF
;
}
T_READ_CRL_CNF
;
#if (PB_VER < 500)
#if (PB_VER < 500)
typedef
struct
_T_READ_KBL_CNF
{
typedef
struct
_T_READ_KBL_CNF
{
USIGN16
desired_cr
;
/* desired communication reference */
USIGN16
desired_cr
;
/* desired communication reference */
union
{
union
{
T_KBL_HDR
kbl_hdr
;
/* CRL-header */
T_KBL_HDR
kbl_hdr
;
/* CRL-header */
...
@@ -548,7 +526,8 @@ typedef struct _T_READ_KBL_CNF {
...
@@ -548,7 +526,8 @@ typedef struct _T_READ_KBL_CNF {
#define C_NOT_IN_RING_DESIRED NOT_IN_RING_DESIRED
#define C_NOT_IN_RING_DESIRED NOT_IN_RING_DESIRED
#endif
#endif
typedef
struct
_T_SET_BUSPARAMETER_REQ
{
typedef
struct
_T_SET_BUSPARAMETER_REQ
{
USIGN8
loc_add
;
/* local station */
USIGN8
loc_add
;
/* local station */
USIGN8
loc_segm
;
/* local segment */
USIGN8
loc_segm
;
/* local segment */
USIGN8
baud_rate
;
/* baud rate */
USIGN8
baud_rate
;
/* baud rate */
...
@@ -571,7 +550,8 @@ typedef struct _T_SET_BUSPARAMETER_REQ {
...
@@ -571,7 +550,8 @@ typedef struct _T_SET_BUSPARAMETER_REQ {
/* Read-Busparameter Service (only local) */
/* Read-Busparameter Service (only local) */
/****************************************************************************/
/****************************************************************************/
typedef
struct
_T_READ_BUSPARAMETER_CNF
{
typedef
struct
_T_READ_BUSPARAMETER_CNF
{
USIGN8
loc_add
;
/* local station */
USIGN8
loc_add
;
/* local station */
USIGN8
loc_segm
;
/* local segment */
USIGN8
loc_segm
;
/* local segment */
USIGN8
baud_rate
;
/* baud rate */
USIGN8
baud_rate
;
/* baud rate */
...
@@ -625,7 +605,8 @@ typedef struct _T_READ_BUSPARAMETER_CNF {
...
@@ -625,7 +605,8 @@ typedef struct _T_READ_BUSPARAMETER_CNF {
/****************************************************************************/
/****************************************************************************/
#if (PB_VER < 500)
#if (PB_VER < 500)
typedef
struct
_T_STATISTICS_BLOCK
{
typedef
struct
_T_STATISTICS_BLOCK
{
USIGN32
frame_send_count
;
/* frame sent counter */
USIGN32
frame_send_count
;
/* frame sent counter */
USIGN32
sd_count
;
/* valid start delimiter counter */
USIGN32
sd_count
;
/* valid start delimiter counter */
USIGN16
retry_count
;
/* retry frame sent counter */
USIGN16
retry_count
;
/* retry frame sent counter */
...
@@ -633,7 +614,8 @@ typedef struct _T_STATISTICS_BLOCK {
...
@@ -633,7 +614,8 @@ typedef struct _T_STATISTICS_BLOCK {
}
T_STATISTICS_BLOCK
;
}
T_STATISTICS_BLOCK
;
#endif
#endif
typedef
struct
_T_SET_VALUE_REQ
{
typedef
struct
_T_SET_VALUE_REQ
{
USIGN8
id
;
/* value identifier */
USIGN8
id
;
/* value identifier */
USIGN8
length
;
/* # of values in byte */
USIGN8
length
;
/* # of values in byte */
/* USIGN8 value[length]; list of values */
/* USIGN8 value[length]; list of values */
...
@@ -643,7 +625,8 @@ typedef struct _T_SET_VALUE_REQ {
...
@@ -643,7 +625,8 @@ typedef struct _T_SET_VALUE_REQ {
/* Read-Value Service (Local and Remote) */
/* Read-Value Service (Local and Remote) */
/****************************************************************************/
/****************************************************************************/
#if (PB_VER < 500)
#if (PB_VER < 500)
typedef
struct
_T_READ_STATISTIC_CTR_CNF
{
typedef
struct
_T_READ_STATISTIC_CTR_CNF
{
USIGN32
frame_send_count
;
/* frame sent counter */
USIGN32
frame_send_count
;
/* frame sent counter */
USIGN32
sd_count
;
/* valid start delimiter counter */
USIGN32
sd_count
;
/* valid start delimiter counter */
USIGN16
retry_count
;
/* retry frame sent counter */
USIGN16
retry_count
;
/* retry frame sent counter */
...
@@ -651,12 +634,14 @@ typedef struct _T_READ_STATISTIC_CTR_CNF {
...
@@ -651,12 +634,14 @@ typedef struct _T_READ_STATISTIC_CTR_CNF {
}
T_READ_STATISTIC_CTR_CNF
;
}
T_READ_STATISTIC_CTR_CNF
;
#endif
#endif
typedef
struct
_T_READ_VALUE_REQ
{
typedef
struct
_T_READ_VALUE_REQ
{
USIGN8
id
;
/* value identifier */
USIGN8
id
;
/* value identifier */
USIGN8
dummy
;
/* alignment */
USIGN8
dummy
;
/* alignment */
}
T_READ_VALUE_REQ
;
}
T_READ_VALUE_REQ
;
typedef
struct
_T_READ_VALUE_CNF
{
typedef
struct
_T_READ_VALUE_CNF
{
USIGN8
id
;
/* value identifier */
USIGN8
id
;
/* value identifier */
USIGN8
length
;
/* # of values in byte */
USIGN8
length
;
/* # of values in byte */
/* USIGN8 value[length]; list of values */
/* USIGN8 value[length]; list of values */
...
@@ -678,13 +663,15 @@ typedef struct _T_READ_VALUE_CNF {
...
@@ -678,13 +663,15 @@ typedef struct _T_READ_VALUE_CNF {
#define ID_PHY 5
#define ID_PHY 5
#endif
#endif
typedef
struct
_T_IDENT_REQ
{
typedef
struct
_T_IDENT_REQ
{
USIGN8
instance_id
;
/* instance identifier */
USIGN8
instance_id
;
/* instance identifier */
USIGN8
dummy
;
/* alignment byte */
USIGN8
dummy
;
/* alignment byte */
}
T_IDENT_REQ
;
}
T_IDENT_REQ
;
#if (PB_VER >= 500)
#if (PB_VER >= 500)
typedef
struct
_T_CHARACTERISTICS
{
typedef
struct
_T_CHARACTERISTICS
{
USIGN8
profile_number
[
2
];
/* profile number */
USIGN8
profile_number
[
2
];
/* profile number */
USIGN8
functions_supp
[
3
];
/* functions supported */
USIGN8
functions_supp
[
3
];
/* functions supported */
USIGN8
dummy1
;
/* alignment byte */
USIGN8
dummy1
;
/* alignment byte */
...
@@ -716,7 +703,8 @@ typedef struct _T_CHARACTERISTICS {
...
@@ -716,7 +703,8 @@ typedef struct _T_CHARACTERISTICS {
USIGN8
max_crl_symbol_length
;
/* max length of symbol in CRL */
USIGN8
max_crl_symbol_length
;
/* max length of symbol in CRL */
}
T_CHARACTERISTICS
;
}
T_CHARACTERISTICS
;
#else
#else
typedef
struct
_T_CHARACTERISTICS
{
typedef
struct
_T_CHARACTERISTICS
{
USIGN8
profile_number
[
2
];
/* profile number */
USIGN8
profile_number
[
2
];
/* profile number */
USIGN8
functions_supp
[
3
];
/* functions supported */
USIGN8
functions_supp
[
3
];
/* functions supported */
USIGN8
dummy1
;
/* alignment byte */
USIGN8
dummy1
;
/* alignment byte */
...
@@ -749,7 +737,8 @@ typedef struct _T_CHARACTERISTICS {
...
@@ -749,7 +737,8 @@ typedef struct _T_CHARACTERISTICS {
}
T_CHARACTERISTICS
;
}
T_CHARACTERISTICS
;
#endif
#endif
typedef
struct
_T_IDENT_CNF
{
typedef
struct
_T_IDENT_CNF
{
USIGN8
instance_id
;
/* instance ident */
USIGN8
instance_id
;
/* instance ident */
USIGN8
dummy
;
/* alignment */
USIGN8
dummy
;
/* alignment */
STRINGV
vendor_name
[
MAX_IDENT_STRING_LENGTH
];
/* vendor name */
STRINGV
vendor_name
[
MAX_IDENT_STRING_LENGTH
];
/* vendor name */
...
@@ -763,12 +752,14 @@ typedef struct _T_IDENT_CNF {
...
@@ -763,12 +752,14 @@ typedef struct _T_IDENT_CNF {
/* LSAP-Status Service (Local and Remote) */
/* LSAP-Status Service (Local and Remote) */
/****************************************************************************/
/****************************************************************************/
typedef
struct
_T_LSAP_STATUS_REQ
{
typedef
struct
_T_LSAP_STATUS_REQ
{
USIGN8
lsap
;
/* desired LSAP */
USIGN8
lsap
;
/* desired LSAP */
USIGN8
dummy
;
/* alignment byte */
USIGN8
dummy
;
/* alignment byte */
}
T_LSAP_STATUS_REQ
;
}
T_LSAP_STATUS_REQ
;
typedef
struct
_T_LSAP_STATUS_CNF
{
typedef
struct
_T_LSAP_STATUS_CNF
{
USIGN8
access
;
/* station address or all */
USIGN8
access
;
/* station address or all */
USIGN8
addr_extension
;
/* segment number */
USIGN8
addr_extension
;
/* segment number */
USIGN8
sda
;
/* SDA */
USIGN8
sda
;
/* SDA */
...
@@ -781,12 +772,14 @@ typedef struct _T_LSAP_STATUS_CNF {
...
@@ -781,12 +772,14 @@ typedef struct _T_LSAP_STATUS_CNF {
/* Get-Live-List Service (Local and Remote) */
/* Get-Live-List Service (Local and Remote) */
/****************************************************************************/
/****************************************************************************/
typedef
struct
_T_LIVE_LIST
{
typedef
struct
_T_LIVE_LIST
{
USIGN8
station
;
/* station number */
USIGN8
station
;
/* station number */
USIGN8
status
;
/* current station of station */
USIGN8
status
;
/* current station of station */
}
T_LIVE_LIST
;
}
T_LIVE_LIST
;
typedef
struct
_T_GET_LIVE_LIST_CNF
{
typedef
struct
_T_GET_LIVE_LIST_CNF
{
USIGN8
dummy
;
/* alignment */
USIGN8
dummy
;
/* alignment */
USIGN8
no_of_elements
;
/* # of live list elements */
USIGN8
no_of_elements
;
/* # of live list elements */
/* T_LIVE_LIST live_list[no_of_elements]; list of live list elements */
/* T_LIVE_LIST live_list[no_of_elements]; list of live list elements */
...
@@ -802,7 +795,8 @@ typedef struct _T_GET_LIVE_LIST_CNF {
...
@@ -802,7 +795,8 @@ typedef struct _T_GET_LIVE_LIST_CNF {
/* NOTE: instance identifier see IDENT service ---------------------------- */
/* NOTE: instance identifier see IDENT service ---------------------------- */
/* reason-codes and additional details are defined in PB_ERR.H --- */
/* reason-codes and additional details are defined in PB_ERR.H --- */
typedef
struct
_T_FM7_EVENT_IND
{
typedef
struct
_T_FM7_EVENT_IND
{
USIGN16
comm_ref
;
/* communication reference */
USIGN16
comm_ref
;
/* communication reference */
USIGN8
instance_id
;
/* LLI, FDL, PHY */
USIGN8
instance_id
;
/* LLI, FDL, PHY */
USIGN8
reason
;
/* reason code */
USIGN8
reason
;
/* reason code */
...
@@ -823,7 +817,8 @@ typedef T_FM7_EVENT_IND T_FMA7_EVENT_IND;
...
@@ -823,7 +817,8 @@ typedef T_FM7_EVENT_IND T_FMA7_EVENT_IND;
/* Set-Configuration Service (only local) */
/* Set-Configuration Service (only local) */
/*****************************************************************************/
/*****************************************************************************/
typedef
struct
T_SET_CONFIGURATION_REQ
{
typedef
struct
T_SET_CONFIGURATION_REQ
{
USIGN16
max_nr_of_fal_msg_buffers
;
/* max # of Layer7-Message-Buffers
USIGN16
max_nr_of_fal_msg_buffers
;
/* max # of Layer7-Message-Buffers
(all CR) */
(all CR) */
USIGN16
max_nr_of_fdl_msg_buffers
;
/* max # of Layer2-Message-Buffers
USIGN16
max_nr_of_fdl_msg_buffers
;
/* max # of Layer2-Message-Buffers
...
...
profibus/lib/rt/src/pb_fmb.h
View file @
ce758cd3
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2019 SSAB EMEA AB.
*
* This file is part of ProviewR.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 2 of
* the License, or (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with ProviewR. If not, see <http://www.gnu.org/licenses/>
*
* Linking ProviewR statically or dynamically with other modules is
* making a combined work based on ProviewR. Thus, the terms and
* conditions of the GNU General Public License cover the whole
* combination.
*
* In addition, as a special exception, the copyright holders of
* ProviewR give you permission to, from the build function in the
* ProviewR Configurator, combine ProviewR with modules generated by the
* ProviewR PLC Editor to a PLC program, regardless of the license
* terms of these modules. You may copy and distribute the resulting
* combined work under the terms of your choice, provided that every
* copy of the combined work is accompanied by a complete copy of
* the source code of ProviewR (the version used to produce the
* combined work), being distributed under the terms of the GNU
* General Public License plus this exception.
*/
/*****************************************************************************/
/*****************************************************************************/
/* */
/* */
/*
SOFTING AG
*/
/*
SOFTING Industrial Automation GmbH
*/
/* Richard-Reitzner-Allee 6 */
/* Richard-Reitzner-Allee 6 */
/* D-85540 Haar */
/* D-85540 Haar */
/* Phone: (++49)-(0)89-45656-0 */
/* Phone: (++49)-(0)89-45656-0 */
/* Fax: (++49)-(0)89-45656-399 */
/* Fax: (++49)-(0)89-45656-399 */
/* */
/* */
/*
Copyright (C) SOFTING AG 1995-2003
*/
/*
Copyright (C) SOFTING Industrial Automation GmbH 1995-2012
*/
/* All Rights Reserved */
/* All Rights Reserved */
/* */
/* */
/*****************************************************************************/
/*****************************************************************************/
...
@@ -50,8 +15,8 @@
...
@@ -50,8 +15,8 @@
/* */
/* */
/* Filename : PB_FMB.H */
/* Filename : PB_FMB.H */
/* Version : 5.21.0.00.release */
/* Version : 5.21.0.00.release */
/* Date :
27-February-1998
*/
/* Date :
February-1998
*/
/* Author : SOFTING
AG
*/
/* Author : SOFTING
*/
/* */
/* */
/* */
/* */
/* Description : This file contains the types and defines of the Fieldbus- */
/* Description : This file contains the types and defines of the Fieldbus- */
...
@@ -97,7 +62,8 @@
...
@@ -97,7 +62,8 @@
/*****************************************************************************/
/*****************************************************************************/
/* VFD-Configuration ------------------------------------------------------- */
/* VFD-Configuration ------------------------------------------------------- */
typedef
struct
_T_FMB_CONFIG_VFD
{
typedef
struct
_T_FMB_CONFIG_VFD
{
USIGN16
max_no_vfds
;
/* max. number of VFD's */
USIGN16
max_no_vfds
;
/* max. number of VFD's */
USIGN16
max_no_obj_descr
;
/* max. number of OD object descr.*/
USIGN16
max_no_obj_descr
;
/* max. number of OD object descr.*/
USIGN8
max_obj_name_length
;
/* max. size of OD object name */
USIGN8
max_obj_name_length
;
/* max. size of OD object name */
...
@@ -105,7 +71,8 @@ typedef struct _T_FMB_CONFIG_VFD {
...
@@ -105,7 +71,8 @@ typedef struct _T_FMB_CONFIG_VFD {
}
T_FMB_CONFIG_VFD
;
}
T_FMB_CONFIG_VFD
;
/* --- CRL-Configuration --------------------------------------------------- */
/* --- CRL-Configuration --------------------------------------------------- */
typedef
struct
_T_FMB_CONFIG_CRL
{
typedef
struct
_T_FMB_CONFIG_CRL
{
USIGN16
max_no_fal_sdbs
;
/* max. number of FAL-SDBs */
USIGN16
max_no_fal_sdbs
;
/* max. number of FAL-SDBs */
USIGN16
max_no_fdl_sdbs
;
/* max. number of FDL-SDBs */
USIGN16
max_no_fdl_sdbs
;
/* max. number of FDL-SDBs */
USIGN16
max_no_data_buffer
;
/* max. number of PDU buffers */
USIGN16
max_no_data_buffer
;
/* max. number of PDU buffers */
...
@@ -131,7 +98,8 @@ component 'max_no_parallel_ind' is introduced for future use - for
...
@@ -131,7 +98,8 @@ component 'max_no_parallel_ind' is introduced for future use - for
end of notes on T_FMB_CONFIG_CRL ------------------------------------------ */
end of notes on T_FMB_CONFIG_CRL ------------------------------------------ */
/* DP-Configuration -------------------------------------------------------- */
/* DP-Configuration -------------------------------------------------------- */
typedef
struct
_T_FMB_CONFIG_DP
{
typedef
struct
_T_FMB_CONFIG_DP
{
USIGN8
max_number_slaves
;
/* maximum number DP Slaves supported */
USIGN8
max_number_slaves
;
/* maximum number DP Slaves supported */
USIGN8
max_slave_output_len
;
/* max. length of slave output data */
USIGN8
max_slave_output_len
;
/* max. length of slave output data */
USIGN8
max_slave_input_len
;
/* max. length of slave input data */
USIGN8
max_slave_input_len
;
/* max. length of slave input data */
...
@@ -142,7 +110,8 @@ typedef struct _T_FMB_CONFIG_DP {
...
@@ -142,7 +110,8 @@ typedef struct _T_FMB_CONFIG_DP {
}
T_FMB_CONFIG_DP
;
}
T_FMB_CONFIG_DP
;
/* FDLIF-Configuration ----------------------------------------------------- */
/* FDLIF-Configuration ----------------------------------------------------- */
typedef
struct
_T_FMB_CONFIG_FDLIF
{
typedef
struct
_T_FMB_CONFIG_FDLIF
{
USIGN8
send_req_credits
;
/* max. number of send credits for SDA and SDN
USIGN8
send_req_credits
;
/* max. number of send credits for SDA and SDN
services */
services */
USIGN8
srd_req_credits
;
/* max. number of send credits for SRD services */
USIGN8
srd_req_credits
;
/* max. number of send credits for SRD services */
...
@@ -151,12 +120,14 @@ typedef struct _T_FMB_CONFIG_FDLIF {
...
@@ -151,12 +120,14 @@ typedef struct _T_FMB_CONFIG_FDLIF {
}
T_FMB_CONFIG_FDLIF
;
}
T_FMB_CONFIG_FDLIF
;
/* SM7-Configuration ------------------------------------------------------- */
/* SM7-Configuration ------------------------------------------------------- */
typedef
struct
_T_FMB_CONFIG_SM7
{
typedef
struct
_T_FMB_CONFIG_SM7
{
USIGN16
reserved
;
USIGN16
reserved
;
}
T_FMB_CONFIG_SM7
;
}
T_FMB_CONFIG_SM7
;
/* Fieldbus-Basic-Management-Configuration --------------------------------- */
/* Fieldbus-Basic-Management-Configuration --------------------------------- */
typedef
struct
_T_FMB_SET_CONFIGURATION_REQ
{
typedef
struct
_T_FMB_SET_CONFIGURATION_REQ
{
PB_BOOL
fms_active
;
/* FMS and FM7 services are usable */
PB_BOOL
fms_active
;
/* FMS and FM7 services are usable */
PB_BOOL
dp_active
;
/* DP services are usable */
PB_BOOL
dp_active
;
/* DP services are usable */
PB_BOOL
fdlif_active
;
/* FDLIF services are usable */
PB_BOOL
fdlif_active
;
/* FDLIF services are usable */
...
@@ -198,7 +169,8 @@ typedef struct _T_FMB_SET_CONFIGURATION_REQ {
...
@@ -198,7 +169,8 @@ typedef struct _T_FMB_SET_CONFIGURATION_REQ {
#define IN_RING_DESIRED PB_TRUE
#define IN_RING_DESIRED PB_TRUE
#define NOT_IN_RING_DESIRED PB_FALSE
#define NOT_IN_RING_DESIRED PB_FALSE
typedef
struct
_T_FMB_SET_BUSPARAMETER_REQ
{
typedef
struct
_T_FMB_SET_BUSPARAMETER_REQ
{
USIGN8
loc_add
;
/* local station */
USIGN8
loc_add
;
/* local station */
USIGN8
loc_segm
;
/* local segment */
USIGN8
loc_segm
;
/* local segment */
USIGN8
baud_rate
;
/* baud rate */
USIGN8
baud_rate
;
/* baud rate */
...
@@ -219,7 +191,8 @@ typedef struct _T_FMB_SET_BUSPARAMETER_REQ {
...
@@ -219,7 +191,8 @@ typedef struct _T_FMB_SET_BUSPARAMETER_REQ {
/* FMB-Read-FDL-Busparameter */
/* FMB-Read-FDL-Busparameter */
/*****************************************************************************/
/*****************************************************************************/
typedef
struct
_T_FMB_READ_BUSPARAMETER_CNF
{
typedef
struct
_T_FMB_READ_BUSPARAMETER_CNF
{
USIGN8
loc_add
;
/* local station */
USIGN8
loc_add
;
/* local station */
USIGN8
loc_segm
;
/* local segment */
USIGN8
loc_segm
;
/* local segment */
USIGN8
baud_rate
;
/* baud rate */
USIGN8
baud_rate
;
/* baud rate */
...
@@ -271,7 +244,8 @@ typedef struct _T_FMB_READ_BUSPARAMETER_CNF {
...
@@ -271,7 +244,8 @@ typedef struct _T_FMB_READ_BUSPARAMETER_CNF {
#endif
#endif
typedef
struct
_T_FMB_SET_VALUE_REQ
{
typedef
struct
_T_FMB_SET_VALUE_REQ
{
USIGN8
id
;
/* value identifier */
USIGN8
id
;
/* value identifier */
USIGN8
length
;
/* # of values in byte */
USIGN8
length
;
/* # of values in byte */
/* USIGN8 value[length]; list of values */
/* USIGN8 value[length]; list of values */
...
@@ -281,12 +255,14 @@ typedef struct _T_FMB_SET_VALUE_REQ {
...
@@ -281,12 +255,14 @@ typedef struct _T_FMB_SET_VALUE_REQ {
/* FMB-Read-Value Service */
/* FMB-Read-Value Service */
/*****************************************************************************/
/*****************************************************************************/
typedef
struct
_T_FMB_READ_VALUE_REQ
{
typedef
struct
_T_FMB_READ_VALUE_REQ
{
USIGN8
id
;
/* value identifier */
USIGN8
id
;
/* value identifier */
USIGN8
dummy
;
/* alignment */
USIGN8
dummy
;
/* alignment */
}
T_FMB_READ_VALUE_REQ
;
}
T_FMB_READ_VALUE_REQ
;
typedef
struct
_T_FMB_READ_VALUE_CNF
{
typedef
struct
_T_FMB_READ_VALUE_CNF
{
USIGN8
id
;
/* value identifier */
USIGN8
id
;
/* value identifier */
USIGN8
length
;
/* # of values in byte */
USIGN8
length
;
/* # of values in byte */
/* USIGN8 value[length]; list of values */
/* USIGN8 value[length]; list of values */
...
@@ -296,12 +272,14 @@ typedef struct _T_FMB_READ_VALUE_CNF {
...
@@ -296,12 +272,14 @@ typedef struct _T_FMB_READ_VALUE_CNF {
/* FMB-LSAP-Status Service */
/* FMB-LSAP-Status Service */
/*****************************************************************************/
/*****************************************************************************/
typedef
struct
_T_FMB_LSAP_STATUS_REQ
{
typedef
struct
_T_FMB_LSAP_STATUS_REQ
{
USIGN8
lsap
;
/* desired LSAP */
USIGN8
lsap
;
/* desired LSAP */
USIGN8
dummy
;
/* alignment byte */
USIGN8
dummy
;
/* alignment byte */
}
T_FMB_LSAP_STATUS_REQ
;
}
T_FMB_LSAP_STATUS_REQ
;
typedef
struct
_T_FMB_LSAP_STATUS_CNF
{
typedef
struct
_T_FMB_LSAP_STATUS_CNF
{
USIGN8
access
;
/* station address or all */
USIGN8
access
;
/* station address or all */
USIGN8
addr_extension
;
/* segment number */
USIGN8
addr_extension
;
/* segment number */
USIGN8
sda
;
/* SDA */
USIGN8
sda
;
/* SDA */
...
@@ -314,7 +292,8 @@ typedef struct _T_FMB_LSAP_STATUS_CNF {
...
@@ -314,7 +292,8 @@ typedef struct _T_FMB_LSAP_STATUS_CNF {
/* FMB-Validate-Master Service */
/* FMB-Validate-Master Service */
/*****************************************************************************/
/*****************************************************************************/
typedef
struct
_T_FMB_VALIDATE_MASTER_REQ
{
typedef
struct
_T_FMB_VALIDATE_MASTER_REQ
{
USIGN8
rem_add
;
/* desired remote station */
USIGN8
rem_add
;
/* desired remote station */
USIGN8
dummy
;
/* alignment byte */
USIGN8
dummy
;
/* alignment byte */
}
T_FMB_VALIDATE_MASTER_REQ
;
}
T_FMB_VALIDATE_MASTER_REQ
;
...
@@ -328,12 +307,14 @@ typedef struct _T_FMB_VALIDATE_MASTER_REQ {
...
@@ -328,12 +307,14 @@ typedef struct _T_FMB_VALIDATE_MASTER_REQ {
#define ACTIVE_READY 0x02
#define ACTIVE_READY 0x02
#define ACTIVE_IN_RING 0x03
#define ACTIVE_IN_RING 0x03
typedef
struct
_T_FMB_LIVE_LIST
{
typedef
struct
_T_FMB_LIVE_LIST
{
USIGN8
station
;
/* station number */
USIGN8
station
;
/* station number */
USIGN8
status
;
/* current station of station */
USIGN8
status
;
/* current station of station */
}
T_FMB_LIVE_LIST
;
}
T_FMB_LIVE_LIST
;
typedef
struct
_T_FMB_GET_LIVE_LIST_CNF
{
typedef
struct
_T_FMB_GET_LIVE_LIST_CNF
{
USIGN8
dummy
;
/* alignment */
USIGN8
dummy
;
/* alignment */
USIGN8
no_of_elements
;
/* # of live list elements */
USIGN8
no_of_elements
;
/* # of live list elements */
/* T_FMB_LIVE_LIST live_list[no_of_elements]; list of live list elements
/* T_FMB_LIVE_LIST live_list[no_of_elements]; list of live list elements
...
@@ -355,7 +336,8 @@ typedef struct _T_FMB_GET_LIVE_LIST_CNF {
...
@@ -355,7 +336,8 @@ typedef struct _T_FMB_GET_LIVE_LIST_CNF {
#define FM2_MAC_ERROR 0x13
/* fatal MAC error */
#define FM2_MAC_ERROR 0x13
/* fatal MAC error */
#define FM2_HW_ERROR 0x14
/* fatal HW error */
#define FM2_HW_ERROR 0x14
/* fatal HW error */
typedef
struct
_T_FMB_FM2_EVENT_IND
{
typedef
struct
_T_FMB_FM2_EVENT_IND
{
USIGN16
reason
;
/* reason code */
USIGN16
reason
;
/* reason code */
}
T_FMB_FM2_EVENT_IND
;
}
T_FMB_FM2_EVENT_IND
;
...
...
profibus/lib/rt/src/pb_fms.h
View file @
ce758cd3
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2019 SSAB EMEA AB.
*
* This file is part of ProviewR.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 2 of
* the License, or (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with ProviewR. If not, see <http://www.gnu.org/licenses/>
*
* Linking ProviewR statically or dynamically with other modules is
* making a combined work based on ProviewR. Thus, the terms and
* conditions of the GNU General Public License cover the whole
* combination.
*
* In addition, as a special exception, the copyright holders of
* ProviewR give you permission to, from the build function in the
* ProviewR Configurator, combine ProviewR with modules generated by the
* ProviewR PLC Editor to a PLC program, regardless of the license
* terms of these modules. You may copy and distribute the resulting
* combined work under the terms of your choice, provided that every
* copy of the combined work is accompanied by a complete copy of
* the source code of ProviewR (the version used to produce the
* combined work), being distributed under the terms of the GNU
* General Public License plus this exception.
*/
/*****************************************************************************/
/*****************************************************************************/
/* */
/* */
/*
SOFTING AG
*/
/*
SOFTING Industrial Automation GmbH
*/
/* Richard-Reitzner-Allee 6 */
/* Richard-Reitzner-Allee 6 */
/* D-85540 Haar */
/* D-85540 Haar */
/* Phone: (++49)-(0)89-45656-0 */
/* Phone: (++49)-(0)89-45656-0 */
/* Fax: (++49)-(0)89-45656-399 */
/* Fax: (++49)-(0)89-45656-399 */
/* */
/* */
/*
Copyright (C) SOFTING AG 1995-2003
*/
/*
Copyright (C) SOFTING Industrial Automation GmbH 1995-2012
*/
/* All Rights Reserved */
/* All Rights Reserved */
/* */
/* */
/*****************************************************************************/
/*****************************************************************************/
...
@@ -50,8 +15,8 @@
...
@@ -50,8 +15,8 @@
/* */
/* */
/* Filename : PB_FMS.H */
/* Filename : PB_FMS.H */
/* Version : 5.21.0.00.release */
/* Version : 5.21.0.00.release */
/* Date :
27-February-1998
*/
/* Date :
February-1998
*/
/* Author : SOFTING
AG
*/
/* Author : SOFTING
*/
/* */
/* */
/* Description : This file contains the types and defines of the FMS-User- */
/* Description : This file contains the types and defines of the FMS-User- */
/* Interface */
/* Interface */
...
@@ -408,7 +373,8 @@
...
@@ -408,7 +373,8 @@
/************* ACCESS CONTROL *********************/
/************* ACCESS CONTROL *********************/
/*****************************************************************************/
/*****************************************************************************/
typedef
struct
_T_ACCESS
{
typedef
struct
_T_ACCESS
{
USIGN8
pass_word
;
/* password */
USIGN8
pass_word
;
/* password */
USIGN8
acc_groups
;
/* access groups */
USIGN8
acc_groups
;
/* access groups */
USIGN16
acc_right
;
/* access rights */
USIGN16
acc_right
;
/* access rights */
...
@@ -419,7 +385,8 @@ typedef struct _T_ACCESS {
...
@@ -419,7 +385,8 @@ typedef struct _T_ACCESS {
/*****************************************************************************/
/*****************************************************************************/
/* --- standard access specification data structure (fixed size) ----------- */
/* --- standard access specification data structure (fixed size) ----------- */
typedef
struct
_T_ACC_SPEC
{
typedef
struct
_T_ACC_SPEC
{
USIGN8
tag
;
/* id of the access specification */
USIGN8
tag
;
/* id of the access specification */
USIGN8
dummy
;
/* alignment byte */
USIGN8
dummy
;
/* alignment byte */
union
{
union
{
...
@@ -430,7 +397,8 @@ typedef struct _T_ACC_SPEC {
...
@@ -430,7 +397,8 @@ typedef struct _T_ACC_SPEC {
/* --- dynamic access specification data structure (used in T_PI_CR8_REQ
/* --- dynamic access specification data structure (used in T_PI_CR8_REQ
and in T_VAR_DEFINE_VAR_LIST_REQ data structure (dynamic size) ----- */
and in T_VAR_DEFINE_VAR_LIST_REQ data structure (dynamic size) ----- */
typedef
struct
_T_DYN_ACC_SPEC
{
typedef
struct
_T_DYN_ACC_SPEC
{
USIGN8
tag
;
/* id of the access specification */
USIGN8
tag
;
/* id of the access specification */
USIGN8
length
;
/* length of access specification */
USIGN8
length
;
/* length of access specification */
/* USIGN8 acc_spec[length] access specification (index / name)
/* USIGN8 acc_spec[length] access specification (index / name)
...
@@ -442,7 +410,8 @@ typedef struct _T_DYN_ACC_SPEC {
...
@@ -442,7 +410,8 @@ typedef struct _T_DYN_ACC_SPEC {
/*****************************************************************************/
/*****************************************************************************/
/* --- Initiate-Service -----------------------------------------------------*/
/* --- Initiate-Service -----------------------------------------------------*/
typedef
struct
_T_CTXT_INIT_REQ
{
typedef
struct
_T_CTXT_INIT_REQ
{
USIGN8
profile_number
[
2
];
/* profile number */
USIGN8
profile_number
[
2
];
/* profile number */
PB_BOOL
protection
;
/* access protection */
PB_BOOL
protection
;
/* access protection */
USIGN8
password
;
/* password */
USIGN8
password
;
/* password */
...
@@ -456,7 +425,8 @@ typedef struct _T_CTXT_INIT_REQ {
...
@@ -456,7 +425,8 @@ typedef struct _T_CTXT_INIT_REQ {
USIGN8
supported_features
[
FEAT_SUPP_LEN
];
/* supported features */
USIGN8
supported_features
[
FEAT_SUPP_LEN
];
/* supported features */
}
T_CTXT_INIT_REQ
;
}
T_CTXT_INIT_REQ
;
typedef
struct
_T_CTXT_INIT_CNF
{
typedef
struct
_T_CTXT_INIT_CNF
{
USIGN8
profile_number
[
2
];
/* profile number */
USIGN8
profile_number
[
2
];
/* profile number */
INT16
od_version
;
/* od version */
INT16
od_version
;
/* od version */
PB_BOOL
protection
;
/* access protection */
PB_BOOL
protection
;
/* access protection */
...
@@ -465,7 +435,8 @@ typedef struct _T_CTXT_INIT_CNF {
...
@@ -465,7 +435,8 @@ typedef struct _T_CTXT_INIT_CNF {
USIGN8
dummy
;
/* alignment byte */
USIGN8
dummy
;
/* alignment byte */
}
T_CTXT_INIT_CNF
;
}
T_CTXT_INIT_CNF
;
typedef
struct
_T_CTXT_INIT_ERR_CNF
{
typedef
struct
_T_CTXT_INIT_ERR_CNF
{
USIGN16
class_code
;
/* error class, error code */
USIGN16
class_code
;
/* error class, error code */
USIGN8
snd_len_h
;
/* max pdu size to send (high prio) */
USIGN8
snd_len_h
;
/* max pdu size to send (high prio) */
USIGN8
snd_len_l
;
/* max pdu size to send (low prio) */
USIGN8
snd_len_l
;
/* max pdu size to send (low prio) */
...
@@ -475,7 +446,8 @@ typedef struct _T_CTXT_INIT_ERR_CNF {
...
@@ -475,7 +446,8 @@ typedef struct _T_CTXT_INIT_ERR_CNF {
}
T_CTXT_INIT_ERR_CNF
;
}
T_CTXT_INIT_ERR_CNF
;
/*--- abort service ---------------------------------------------------------*/
/*--- abort service ---------------------------------------------------------*/
typedef
struct
_T_CTXT_ABORT_REQ
{
typedef
struct
_T_CTXT_ABORT_REQ
{
PB_BOOL
local
;
/* local or remote detected */
PB_BOOL
local
;
/* local or remote detected */
USIGN8
abort_id
;
/* abort identifier USR, FMS, ... */
USIGN8
abort_id
;
/* abort identifier USR, FMS, ... */
USIGN8
reason
;
/* abort reason code */
USIGN8
reason
;
/* abort reason code */
...
@@ -484,7 +456,8 @@ typedef struct _T_CTXT_ABORT_REQ {
...
@@ -484,7 +456,8 @@ typedef struct _T_CTXT_ABORT_REQ {
}
T_CTXT_ABORT_REQ
;
}
T_CTXT_ABORT_REQ
;
/*--- reject service --------------------------------------------------------*/
/*--- reject service --------------------------------------------------------*/
typedef
struct
_T_CTXT_REJECT_IND
{
typedef
struct
_T_CTXT_REJECT_IND
{
PB_BOOL
detected_here
;
/* local or remote detected */
PB_BOOL
detected_here
;
/* local or remote detected */
USIGN8
orig_invoke_id
;
/* original invoke ID */
USIGN8
orig_invoke_id
;
/* original invoke ID */
USIGN8
pdu_type
;
/* reject PDU types */
USIGN8
pdu_type
;
/* reject PDU types */
...
@@ -495,25 +468,29 @@ typedef struct _T_CTXT_REJECT_IND {
...
@@ -495,25 +468,29 @@ typedef struct _T_CTXT_REJECT_IND {
/************* VARIABLE ACCESS MANAGEMENT *********************/
/************* VARIABLE ACCESS MANAGEMENT *********************/
/*****************************************************************************/
/*****************************************************************************/
typedef
struct
_T_SIMPLE_TYPE
{
typedef
struct
_T_SIMPLE_TYPE
{
USIGN16
data_type_index
;
/* index of data type */
USIGN16
data_type_index
;
/* index of data type */
USIGN8
length
;
/* size of data type */
USIGN8
length
;
/* size of data type */
USIGN8
dummy
;
/* alignment byte */
USIGN8
dummy
;
/* alignment byte */
}
T_SIMPLE_TYPE
;
}
T_SIMPLE_TYPE
;
typedef
struct
_T_ARRAY_TYPE
{
typedef
struct
_T_ARRAY_TYPE
{
USIGN16
data_type_index
;
/* index of data type */
USIGN16
data_type_index
;
/* index of data type */
USIGN8
length
;
/* size of data type */
USIGN8
length
;
/* size of data type */
USIGN8
no_of_elements
;
/* number of data types */
USIGN8
no_of_elements
;
/* number of data types */
}
T_ARRAY_TYPE
;
}
T_ARRAY_TYPE
;
typedef
struct
_T_RECORD_TYPE
{
typedef
struct
_T_RECORD_TYPE
{
USIGN8
no_of_elements
;
/* number of record elem. */
USIGN8
no_of_elements
;
/* number of record elem. */
USIGN8
dummy
;
/* alignment byte */
USIGN8
dummy
;
/* alignment byte */
T_SIMPLE_TYPE
simple
[
MAX_VAR_RECORD_ELEMENTS
];
/* list of simple types */
T_SIMPLE_TYPE
simple
[
MAX_VAR_RECORD_ELEMENTS
];
/* list of simple types */
}
T_RECORD_TYPE
;
}
T_RECORD_TYPE
;
typedef
struct
_T_TYPE_DESCR
{
typedef
struct
_T_TYPE_DESCR
{
USIGN8
tag
;
/* type description identifier */
USIGN8
tag
;
/* type description identifier */
USIGN8
dummy
;
/* alignment byte */
USIGN8
dummy
;
/* alignment byte */
union
{
union
{
...
@@ -528,7 +505,8 @@ typedef struct _T_TYPE_DESCR {
...
@@ -528,7 +505,8 @@ typedef struct _T_TYPE_DESCR {
/*--- Simple-Variable-Object-Description
/*--- Simple-Variable-Object-Description
* ------------------------------------------*/
* ------------------------------------------*/
typedef
struct
_T_SIMPLE_VAR_OBJECT
{
typedef
struct
_T_SIMPLE_VAR_OBJECT
{
USIGN16
index
;
/* logical address of the object */
USIGN16
index
;
/* logical address of the object */
USIGN8
obj_code
;
/* object code */
USIGN8
obj_code
;
/* object code */
USIGN8
length
;
/* length of object in octets */
USIGN8
length
;
/* length of object in octets */
...
@@ -541,7 +519,8 @@ typedef struct _T_SIMPLE_VAR_OBJECT {
...
@@ -541,7 +519,8 @@ typedef struct _T_SIMPLE_VAR_OBJECT {
/*--- Array-Variable-Object-Description
/*--- Array-Variable-Object-Description
* -------------------------------------------*/
* -------------------------------------------*/
typedef
struct
_T_ARRAY_OBJECT
{
typedef
struct
_T_ARRAY_OBJECT
{
USIGN16
index
;
/* logical address of the object */
USIGN16
index
;
/* logical address of the object */
USIGN8
obj_code
;
/* object code */
USIGN8
obj_code
;
/* object code */
USIGN8
length
;
/* length of an element in octets */
USIGN8
length
;
/* length of an element in octets */
...
@@ -556,7 +535,8 @@ typedef struct _T_ARRAY_OBJECT {
...
@@ -556,7 +535,8 @@ typedef struct _T_ARRAY_OBJECT {
/*--- Record-Variable-Object-Description
/*--- Record-Variable-Object-Description
* ------------------------------------------*/
* ------------------------------------------*/
typedef
struct
_T_RECORD_OBJECT
{
typedef
struct
_T_RECORD_OBJECT
{
USIGN16
index
;
/* index */
USIGN16
index
;
/* index */
USIGN8
obj_code
;
/* object code */
USIGN8
obj_code
;
/* object code */
USIGN8
no_of_address
;
/* number of local address */
USIGN8
no_of_address
;
/* number of local address */
...
@@ -570,7 +550,8 @@ typedef struct _T_RECORD_OBJECT {
...
@@ -570,7 +550,8 @@ typedef struct _T_RECORD_OBJECT {
/*--- Variable-List-Object-Description
/*--- Variable-List-Object-Description
* --------------------------------------------*/
* --------------------------------------------*/
typedef
struct
_T_VAR_LIST_OBJECT
{
typedef
struct
_T_VAR_LIST_OBJECT
{
USIGN16
index
;
/* logical address of the object */
USIGN16
index
;
/* logical address of the object */
USIGN8
obj_code
;
/* object code */
USIGN8
obj_code
;
/* object code */
USIGN8
no_of_var
;
/* number of variables */
USIGN8
no_of_var
;
/* number of variables */
...
@@ -585,13 +566,15 @@ typedef struct _T_VAR_LIST_OBJECT {
...
@@ -585,13 +566,15 @@ typedef struct _T_VAR_LIST_OBJECT {
/* --- Read-Service
/* --- Read-Service
* ---------------------------------------------------------------*/
* ---------------------------------------------------------------*/
typedef
struct
_T_VAR_READ_REQ
{
typedef
struct
_T_VAR_READ_REQ
{
T_ACC_SPEC
acc_spec
;
/* access specification */
T_ACC_SPEC
acc_spec
;
/* access specification */
USIGN8
subindex
;
/* subindex */
USIGN8
subindex
;
/* subindex */
USIGN8
dummy
;
/* alignment byte */
USIGN8
dummy
;
/* alignment byte */
}
T_VAR_READ_REQ
;
}
T_VAR_READ_REQ
;
typedef
struct
_T_VAR_READ_CNF
{
typedef
struct
_T_VAR_READ_CNF
{
USIGN8
dummy
;
/* alignment byte */
USIGN8
dummy
;
/* alignment byte */
USIGN8
length
;
/* length of values in bytes */
USIGN8
length
;
/* length of values in bytes */
/* USIGN8 value[lenght]; list of data */
/* USIGN8 value[lenght]; list of data */
...
@@ -599,13 +582,15 @@ typedef struct _T_VAR_READ_CNF {
...
@@ -599,13 +582,15 @@ typedef struct _T_VAR_READ_CNF {
/*--- Read-With-Type-Service
/*--- Read-With-Type-Service
* ------------------------------------------------------*/
* ------------------------------------------------------*/
typedef
struct
_T_VAR_READ_WITH_TYPE_REQ
{
typedef
struct
_T_VAR_READ_WITH_TYPE_REQ
{
T_ACC_SPEC
acc_spec
;
/* access specification */
T_ACC_SPEC
acc_spec
;
/* access specification */
USIGN8
subindex
;
/* subindex */
USIGN8
subindex
;
/* subindex */
USIGN8
dummy
;
/* alignment byte */
USIGN8
dummy
;
/* alignment byte */
}
T_VAR_READ_WITH_TYPE_REQ
;
}
T_VAR_READ_WITH_TYPE_REQ
;
typedef
struct
_T_VAR_READ_WITH_TYPE_CNF
{
typedef
struct
_T_VAR_READ_WITH_TYPE_CNF
{
USIGN8
no_of_type_descr
;
/* number of typedescription */
USIGN8
no_of_type_descr
;
/* number of typedescription */
USIGN8
length
;
/* # of values in bytes */
USIGN8
length
;
/* # of values in bytes */
/* T_TYPE_DESCR type_descr_list[no_of_type_descr]; list of type
/* T_TYPE_DESCR type_descr_list[no_of_type_descr]; list of type
...
@@ -615,7 +600,8 @@ typedef struct _T_VAR_READ_WITH_TYPE_CNF {
...
@@ -615,7 +600,8 @@ typedef struct _T_VAR_READ_WITH_TYPE_CNF {
/*--- Write-Service
/*--- Write-Service
* ---------------------------------------------------------------*/
* ---------------------------------------------------------------*/
typedef
struct
_T_VAR_WRITE_REQ
{
typedef
struct
_T_VAR_WRITE_REQ
{
T_ACC_SPEC
acc_spec
;
/* access specification */
T_ACC_SPEC
acc_spec
;
/* access specification */
USIGN8
subindex
;
/* subindex */
USIGN8
subindex
;
/* subindex */
USIGN8
length
;
/* # number of values in bytes */
USIGN8
length
;
/* # number of values in bytes */
...
@@ -624,7 +610,8 @@ typedef struct _T_VAR_WRITE_REQ {
...
@@ -624,7 +610,8 @@ typedef struct _T_VAR_WRITE_REQ {
/*--- Write-With-Type-Service
/*--- Write-With-Type-Service
* -----------------------------------------------------*/
* -----------------------------------------------------*/
typedef
struct
_T_VAR_WRITE_WITH_TYPE_REQ
{
typedef
struct
_T_VAR_WRITE_WITH_TYPE_REQ
{
T_ACC_SPEC
acc_spec
;
/* access specification */
T_ACC_SPEC
acc_spec
;
/* access specification */
USIGN8
subindex
;
/* subindex */
USIGN8
subindex
;
/* subindex */
USIGN8
dummy
;
/* alignment byte */
USIGN8
dummy
;
/* alignment byte */
...
@@ -637,7 +624,8 @@ typedef struct _T_VAR_WRITE_WITH_TYPE_REQ {
...
@@ -637,7 +624,8 @@ typedef struct _T_VAR_WRITE_WITH_TYPE_REQ {
/*--- Information-Report-Service
/*--- Information-Report-Service
* --------------------------------------------------*/
* --------------------------------------------------*/
typedef
struct
_T_VAR_INFO_RPT_REQ
{
typedef
struct
_T_VAR_INFO_RPT_REQ
{
USIGN8
priority
;
/* priority */
USIGN8
priority
;
/* priority */
USIGN8
subindex
;
/* subindex */
USIGN8
subindex
;
/* subindex */
T_ACC_SPEC
acc_spec
;
/* access specification */
T_ACC_SPEC
acc_spec
;
/* access specification */
...
@@ -648,7 +636,8 @@ typedef struct _T_VAR_INFO_RPT_REQ {
...
@@ -648,7 +636,8 @@ typedef struct _T_VAR_INFO_RPT_REQ {
/*--- Information-Report-With-Type-Service
/*--- Information-Report-With-Type-Service
* ----------------------------------------*/
* ----------------------------------------*/
typedef
struct
_T_VAR_INFO_RPT_WITH_TYPE_REQ
{
typedef
struct
_T_VAR_INFO_RPT_WITH_TYPE_REQ
{
USIGN8
priority
;
/* priority */
USIGN8
priority
;
/* priority */
USIGN8
subindex
;
/* subindex */
USIGN8
subindex
;
/* subindex */
T_ACC_SPEC
acc_spec
;
/* access specification */
T_ACC_SPEC
acc_spec
;
/* access specification */
...
@@ -661,7 +650,8 @@ typedef struct _T_VAR_INFO_RPT_WITH_TYPE_REQ {
...
@@ -661,7 +650,8 @@ typedef struct _T_VAR_INFO_RPT_WITH_TYPE_REQ {
/*--- Define-Variable-List-Service
/*--- Define-Variable-List-Service
* ------------------------------------------------*/
* ------------------------------------------------*/
typedef
struct
_T_VAR_DEFINE_VAR_LIST_REQ
{
typedef
struct
_T_VAR_DEFINE_VAR_LIST_REQ
{
T_ACCESS
access
;
/* access rights */
T_ACCESS
access
;
/* access rights */
STRINGV
name
[
MAX_OBJECT_NAME_LENGTH
];
/* variable list name */
STRINGV
name
[
MAX_OBJECT_NAME_LENGTH
];
/* variable list name */
USIGN8
extension
[
MAX_EXTENSION_LENGTH
];
/* extension */
USIGN8
extension
[
MAX_EXTENSION_LENGTH
];
/* extension */
...
@@ -675,25 +665,29 @@ typedef struct _T_VAR_DEFINE_VAR_LIST_REQ {
...
@@ -675,25 +665,29 @@ typedef struct _T_VAR_DEFINE_VAR_LIST_REQ {
#endif
#endif
}
T_VAR_DEFINE_VAR_LIST_REQ
;
}
T_VAR_DEFINE_VAR_LIST_REQ
;
typedef
struct
_T_VAR_DEFINE_VAR_LIST_CNF
{
typedef
struct
_T_VAR_DEFINE_VAR_LIST_CNF
{
USIGN16
index
;
/* index of variable list */
USIGN16
index
;
/* index of variable list */
}
T_VAR_DEFINE_VAR_LIST_CNF
;
}
T_VAR_DEFINE_VAR_LIST_CNF
;
/*--- Delete-Variable-List-Service
/*--- Delete-Variable-List-Service
* ------------------------------------------------*/
* ------------------------------------------------*/
typedef
struct
_T_VAR_DELETE_VAR_LIST_REQ
{
typedef
struct
_T_VAR_DELETE_VAR_LIST_REQ
{
T_ACC_SPEC
acc_spec
;
/* access specification */
T_ACC_SPEC
acc_spec
;
/* access specification */
}
T_VAR_DELETE_VAR_LIST_REQ
;
}
T_VAR_DELETE_VAR_LIST_REQ
;
/*--- Physical-Read-Service
/*--- Physical-Read-Service
* -------------------------------------------------------*/
* -------------------------------------------------------*/
typedef
struct
_T_VAR_PHYS_READ_REQ
{
typedef
struct
_T_VAR_PHYS_READ_REQ
{
USIGN32
int_addr
;
/* physical address to be read */
USIGN32
int_addr
;
/* physical address to be read */
USIGN8
length
;
/* length in octets */
USIGN8
length
;
/* length in octets */
USIGN8
dummy
;
/* alignment byte */
USIGN8
dummy
;
/* alignment byte */
}
T_VAR_PHYS_READ_REQ
;
}
T_VAR_PHYS_READ_REQ
;
typedef
struct
_T_VAR_PHYS_READ_CNF
{
typedef
struct
_T_VAR_PHYS_READ_CNF
{
USIGN8
dummy
;
/* alignment byte */
USIGN8
dummy
;
/* alignment byte */
USIGN8
length
;
/* length of values in bytes */
USIGN8
length
;
/* length of values in bytes */
/* USIGN8 data[length]; list of data */
/* USIGN8 data[length]; list of data */
...
@@ -701,7 +695,8 @@ typedef struct _T_VAR_PHYS_READ_CNF {
...
@@ -701,7 +695,8 @@ typedef struct _T_VAR_PHYS_READ_CNF {
/*--- Physical-Write-Service
/*--- Physical-Write-Service
* ------------------------------------------------------*/
* ------------------------------------------------------*/
typedef
struct
_T_VAR_PHYS_WRITE_REQ
{
typedef
struct
_T_VAR_PHYS_WRITE_REQ
{
USIGN32
int_addr
;
/* physical address to be write */
USIGN32
int_addr
;
/* physical address to be write */
USIGN8
dummy
;
/* length in octets */
USIGN8
dummy
;
/* length in octets */
USIGN8
length
;
/* length in octets */
USIGN8
length
;
/* length in octets */
...
@@ -710,7 +705,8 @@ typedef struct _T_VAR_PHYS_WRITE_REQ {
...
@@ -710,7 +705,8 @@ typedef struct _T_VAR_PHYS_WRITE_REQ {
/*--- Data-Event service
/*--- Data-Event service
* ----------------------------------------------------------*/
* ----------------------------------------------------------*/
typedef
struct
_T_VAR_DATA_EVENT_IND
{
typedef
struct
_T_VAR_DATA_EVENT_IND
{
USIGN16
index
;
/* index */
USIGN16
index
;
/* index */
USIGN8
dummy
;
/* alignment byte */
USIGN8
dummy
;
/* alignment byte */
USIGN8
length
;
/* length of values in bytes */
USIGN8
length
;
/* length of values in bytes */
...
@@ -722,7 +718,8 @@ typedef struct _T_VAR_DATA_EVENT_IND {
...
@@ -722,7 +718,8 @@ typedef struct _T_VAR_DATA_EVENT_IND {
/*****************************************************************************/
/*****************************************************************************/
/*--- Event-Object-Description ----------------------------------------------*/
/*--- Event-Object-Description ----------------------------------------------*/
typedef
struct
_T_EVENT_OBJECT
{
typedef
struct
_T_EVENT_OBJECT
{
USIGN16
index_event
;
/* index */
USIGN16
index_event
;
/* index */
USIGN8
obj_code
;
/* object code */
USIGN8
obj_code
;
/* object code */
USIGN8
data_length
;
/* size of event data */
USIGN8
data_length
;
/* size of event data */
...
@@ -735,7 +732,8 @@ typedef struct _T_EVENT_OBJECT {
...
@@ -735,7 +732,8 @@ typedef struct _T_EVENT_OBJECT {
}
T_EVENT_OBJECT
;
}
T_EVENT_OBJECT
;
/*--- Event-Notification-Service --------------------------------------------*/
/*--- Event-Notification-Service --------------------------------------------*/
typedef
struct
_T_EVENT_NOTIFY_REQ
{
typedef
struct
_T_EVENT_NOTIFY_REQ
{
USIGN8
priority
;
/* priority */
USIGN8
priority
;
/* priority */
USIGN8
event_number
;
/* event number */
USIGN8
event_number
;
/* event number */
T_ACC_SPEC
acc_spec
;
/* access specification */
T_ACC_SPEC
acc_spec
;
/* access specification */
...
@@ -745,7 +743,8 @@ typedef struct _T_EVENT_NOTIFY_REQ {
...
@@ -745,7 +743,8 @@ typedef struct _T_EVENT_NOTIFY_REQ {
}
T_EVENT_NOTIFY_REQ
;
}
T_EVENT_NOTIFY_REQ
;
/*--- Event-Notification-With-Type-Service ----------------------------------*/
/*--- Event-Notification-With-Type-Service ----------------------------------*/
typedef
struct
_T_EVENT_NOTIFY_WITH_TYPE_REQ
{
typedef
struct
_T_EVENT_NOTIFY_WITH_TYPE_REQ
{
USIGN8
priority
;
/* priority */
USIGN8
priority
;
/* priority */
USIGN8
event_number
;
/* event number */
USIGN8
event_number
;
/* event number */
T_ACC_SPEC
acc_spec
;
/* access specification */
T_ACC_SPEC
acc_spec
;
/* access specification */
...
@@ -756,14 +755,16 @@ typedef struct _T_EVENT_NOTIFY_WITH_TYPE_REQ {
...
@@ -756,14 +755,16 @@ typedef struct _T_EVENT_NOTIFY_WITH_TYPE_REQ {
}
T_EVENT_NOTIFY_WITH_TYPE_REQ
;
}
T_EVENT_NOTIFY_WITH_TYPE_REQ
;
/*--- Alter-Event-Condition-Monitoring --------------------------------------*/
/*--- Alter-Event-Condition-Monitoring --------------------------------------*/
typedef
struct
_T_ALT_EVN_CND_MNT_REQ
{
typedef
struct
_T_ALT_EVN_CND_MNT_REQ
{
T_ACC_SPEC
acc_spec
;
/* access specification */
T_ACC_SPEC
acc_spec
;
/* access specification */
PB_BOOL
enabled
;
/* enable or disable the event */
PB_BOOL
enabled
;
/* enable or disable the event */
USIGN8
dummy
;
/* alignment byte */
USIGN8
dummy
;
/* alignment byte */
}
T_ALT_EVN_CND_MNT_REQ
;
}
T_ALT_EVN_CND_MNT_REQ
;
/*--- Acknowledge-Event-Notification ----------------------------------------*/
/*--- Acknowledge-Event-Notification ----------------------------------------*/
typedef
struct
_T_ACK_EVN_NOTIFY_REQ
{
typedef
struct
_T_ACK_EVN_NOTIFY_REQ
{
T_ACC_SPEC
acc_spec
;
/* access specification */
T_ACC_SPEC
acc_spec
;
/* access specification */
USIGN8
event_number
;
/* event count number */
USIGN8
event_number
;
/* event count number */
USIGN8
dummy
;
/* alignment byte */
USIGN8
dummy
;
/* alignment byte */
...
@@ -774,7 +775,8 @@ typedef struct _T_ACK_EVN_NOTIFY_REQ {
...
@@ -774,7 +775,8 @@ typedef struct _T_ACK_EVN_NOTIFY_REQ {
/*****************************************************************************/
/*****************************************************************************/
/*--- Domain-Object-Description ---------------------------------------------*/
/*--- Domain-Object-Description ---------------------------------------------*/
typedef
struct
_T_DOM_OBJECT
{
typedef
struct
_T_DOM_OBJECT
{
USIGN16
index
;
/* index */
USIGN16
index
;
/* index */
USIGN8
obj_code
;
/* object code */
USIGN8
obj_code
;
/* object code */
USIGN8
state
;
/* domain state */
USIGN8
state
;
/* domain state */
...
@@ -791,35 +793,41 @@ typedef struct _T_DOM_OBJECT {
...
@@ -791,35 +793,41 @@ typedef struct _T_DOM_OBJECT {
/*--- Generic-Domain-Download-Services --------------------------------------*/
/*--- Generic-Domain-Download-Services --------------------------------------*/
/*--- Domain-Upload-Services ----------------------------------------------*/
/*--- Domain-Upload-Services ----------------------------------------------*/
typedef
struct
_T_DOM_REQ
{
typedef
struct
_T_DOM_REQ
{
T_ACC_SPEC
acc_spec
;
/* access specification */
T_ACC_SPEC
acc_spec
;
/* access specification */
}
T_DOM_REQ
;
}
T_DOM_REQ
;
typedef
struct
_T_DNL_UPL_SEG_CNF
{
typedef
struct
_T_DNL_UPL_SEG_CNF
{
PB_BOOL
more_follows
;
/* more_follows */
PB_BOOL
more_follows
;
/* more_follows */
USIGN8
data_len
;
/* data length */
USIGN8
data_len
;
/* data length */
/* USIGN8 data[data_len]; list of data */
/* USIGN8 data[data_len]; list of data */
}
T_DNL_UPL_SEG_CNF
;
}
T_DNL_UPL_SEG_CNF
;
typedef
struct
_T_GEN_DNL_SEG_REQ
{
typedef
struct
_T_GEN_DNL_SEG_REQ
{
T_ACC_SPEC
acc_spec
;
/* access specification */
T_ACC_SPEC
acc_spec
;
/* access specification */
PB_BOOL
more_follows
;
/* more_follows */
PB_BOOL
more_follows
;
/* more_follows */
USIGN8
data_len
;
/* data length */
USIGN8
data_len
;
/* data length */
/* USIGN8 data[data_len]; list of data */
/* USIGN8 data[data_len]; list of data */
}
T_GEN_DNL_SEG_REQ
;
}
T_GEN_DNL_SEG_REQ
;
typedef
struct
_T_TERM_DNL_REQ
{
typedef
struct
_T_TERM_DNL_REQ
{
T_ACC_SPEC
acc_spec
;
/* access specification */
T_ACC_SPEC
acc_spec
;
/* access specification */
PB_BOOL
final_result
;
/* final result */
PB_BOOL
final_result
;
/* final result */
USIGN8
dummy
;
/* alignment */
USIGN8
dummy
;
/* alignment */
}
T_TERM_DNL_REQ
;
}
T_TERM_DNL_REQ
;
typedef
struct
_T_GEN_TERM_DNL_CNF
{
typedef
struct
_T_GEN_TERM_DNL_CNF
{
PB_BOOL
final_result
;
/* final result */
PB_BOOL
final_result
;
/* final result */
USIGN8
dummy
;
/* alignment */
USIGN8
dummy
;
/* alignment */
}
T_GEN_TERM_DNL_CNF
;
}
T_GEN_TERM_DNL_CNF
;
typedef
struct
_T_REQUEST_DOM_REQ
{
typedef
struct
_T_REQUEST_DOM_REQ
{
T_ACC_SPEC
acc_spec
;
/* access specification */
T_ACC_SPEC
acc_spec
;
/* access specification */
USIGN8
dummy
;
/* alignment */
USIGN8
dummy
;
/* alignment */
USIGN8
add_info_length
;
/* length of add. information */
USIGN8
add_info_length
;
/* length of add. information */
...
@@ -831,7 +839,8 @@ typedef struct _T_REQUEST_DOM_REQ {
...
@@ -831,7 +839,8 @@ typedef struct _T_REQUEST_DOM_REQ {
/*****************************************************************************/
/*****************************************************************************/
/*--- Program-Invocation-Object ---------------------------------------------*/
/*--- Program-Invocation-Object ---------------------------------------------*/
typedef
struct
_T_PI_OBJECT
{
typedef
struct
_T_PI_OBJECT
{
USIGN16
index
;
/* pi_index in OD */
USIGN16
index
;
/* pi_index in OD */
USIGN8
obj_code
;
/* object code for OD */
USIGN8
obj_code
;
/* object code for OD */
USIGN8
cnt_dom
;
/* # domains */
USIGN8
cnt_dom
;
/* # domains */
...
@@ -847,7 +856,8 @@ typedef struct _T_PI_OBJECT {
...
@@ -847,7 +856,8 @@ typedef struct _T_PI_OBJECT {
}
T_PI_OBJECT
;
}
T_PI_OBJECT
;
/*--- Create-PI-Service -----------------------------------------------------*/
/*--- Create-PI-Service -----------------------------------------------------*/
typedef
struct
_T_PI_CR8_REQ
{
typedef
struct
_T_PI_CR8_REQ
{
T_ACCESS
access
;
/* access rights */
T_ACCESS
access
;
/* access rights */
USIGN8
cnt_dom
;
/* number of domains */
USIGN8
cnt_dom
;
/* number of domains */
PB_BOOL
reusable
;
/* => TRUE pi is reusable */
PB_BOOL
reusable
;
/* => TRUE pi is reusable */
...
@@ -861,51 +871,60 @@ typedef struct _T_PI_CR8_REQ {
...
@@ -861,51 +871,60 @@ typedef struct _T_PI_CR8_REQ {
#endif
#endif
}
T_PI_CR8_REQ
;
}
T_PI_CR8_REQ
;
typedef
struct
_T_PI_CR8_CNF
{
typedef
struct
_T_PI_CR8_CNF
{
USIGN16
index
;
/* index of PI */
USIGN16
index
;
/* index of PI */
}
T_PI_CR8_CNF
;
}
T_PI_CR8_CNF
;
/*--- Delete-PI-Service -----------------------------------------------------*/
/*--- Delete-PI-Service -----------------------------------------------------*/
typedef
struct
_T_PI_DEL_REQ
{
typedef
struct
_T_PI_DEL_REQ
{
T_ACC_SPEC
acc_spec
;
/* access specification */
T_ACC_SPEC
acc_spec
;
/* access specification */
}
T_PI_DEL_REQ
;
}
T_PI_DEL_REQ
;
/*--- Start-PI-Service ------------------------------------------------------*/
/*--- Start-PI-Service ------------------------------------------------------*/
typedef
struct
_T_PI_START_REQ
{
typedef
struct
_T_PI_START_REQ
{
T_ACC_SPEC
acc_spec
;
/* access specific. */
T_ACC_SPEC
acc_spec
;
/* access specific. */
USIGN8
exec_arg
[
MAX_EXECUTION_ARGUMENT_LENGTH
];
/* execution arg. */
USIGN8
exec_arg
[
MAX_EXECUTION_ARGUMENT_LENGTH
];
/* execution arg. */
}
T_PI_START_REQ
;
}
T_PI_START_REQ
;
/*--- Stop-PI-Service -------------------------------------------------------*/
/*--- Stop-PI-Service -------------------------------------------------------*/
typedef
struct
_T_PI_STOP_REQ
{
typedef
struct
_T_PI_STOP_REQ
{
T_ACC_SPEC
acc_spec
;
/* access specific. */
T_ACC_SPEC
acc_spec
;
/* access specific. */
}
T_PI_STOP_REQ
;
}
T_PI_STOP_REQ
;
/*--- Resume-PI-Service -----------------------------------------------------*/
/*--- Resume-PI-Service -----------------------------------------------------*/
typedef
struct
_T_PI_RESUME_REQ
{
typedef
struct
_T_PI_RESUME_REQ
{
T_ACC_SPEC
acc_spec
;
/* access specific. */
T_ACC_SPEC
acc_spec
;
/* access specific. */
USIGN8
exec_arg
[
MAX_EXECUTION_ARGUMENT_LENGTH
];
/* execution arg. */
USIGN8
exec_arg
[
MAX_EXECUTION_ARGUMENT_LENGTH
];
/* execution arg. */
}
T_PI_RESUME_REQ
;
}
T_PI_RESUME_REQ
;
/*--- Reset-PI-Service ------------------------------------------------------*/
/*--- Reset-PI-Service ------------------------------------------------------*/
typedef
struct
_T_PI_RESET_REQ
{
typedef
struct
_T_PI_RESET_REQ
{
T_ACC_SPEC
acc_spec
;
/* access specific. */
T_ACC_SPEC
acc_spec
;
/* access specific. */
}
T_PI_RESET_REQ
;
}
T_PI_RESET_REQ
;
/*--- Kill-PI-Service -------------------------------------------------------*/
/*--- Kill-PI-Service -------------------------------------------------------*/
typedef
struct
_T_PI_KILL_REQ
{
typedef
struct
_T_PI_KILL_REQ
{
T_ACC_SPEC
acc_spec
;
/* access specific. */
T_ACC_SPEC
acc_spec
;
/* access specific. */
}
T_PI_KILL_REQ
;
}
T_PI_KILL_REQ
;
/*--- PI-SET-STATE-Service ( only local Service ) ---------------------------*/
/*--- PI-SET-STATE-Service ( only local Service ) ---------------------------*/
typedef
struct
_T_PI_SET_STATE_REQ
{
typedef
struct
_T_PI_SET_STATE_REQ
{
USIGN32
vfd_number
;
/* vfd number */
USIGN32
vfd_number
;
/* vfd number */
T_ACC_SPEC
acc_spec
;
/* access specification */
T_ACC_SPEC
acc_spec
;
/* access specification */
USIGN8
state
;
/* new PI state */
USIGN8
state
;
/* new PI state */
USIGN8
dummy
;
/* alignment byte */
USIGN8
dummy
;
/* alignment byte */
}
T_PI_SET_STATE_REQ
;
}
T_PI_SET_STATE_REQ
;
typedef
struct
_T_PI_SET_STATE_CNF
{
typedef
struct
_T_PI_SET_STATE_CNF
{
USIGN32
vfd_number
;
/* vfd number */
USIGN32
vfd_number
;
/* vfd number */
}
T_PI_SET_STATE_CNF
;
}
T_PI_SET_STATE_CNF
;
...
@@ -915,7 +934,8 @@ typedef struct _T_PI_SET_STATE_CNF {
...
@@ -915,7 +934,8 @@ typedef struct _T_PI_SET_STATE_CNF {
/* --- OD-Object-Description
/* --- OD-Object-Description
* ---------------------------------------------------*/
* ---------------------------------------------------*/
typedef
struct
_T_OD_OBJ_DESCR_HDR
{
typedef
struct
_T_OD_OBJ_DESCR_HDR
{
USIGN16
index
;
/* index = 0 */
USIGN16
index
;
/* index = 0 */
USIGN8
obj_code
;
/* object-code = 1 */
USIGN8
obj_code
;
/* object-code = 1 */
PB_BOOL
flag
;
/* => TRUE write protected */
PB_BOOL
flag
;
/* => TRUE write protected */
...
@@ -937,7 +957,8 @@ typedef struct _T_OD_OBJ_DESCR_HDR {
...
@@ -937,7 +957,8 @@ typedef struct _T_OD_OBJ_DESCR_HDR {
}
T_OD_OBJ_DESCR_HDR
;
}
T_OD_OBJ_DESCR_HDR
;
#if (PB_VER < 500)
#if (PB_VER < 500)
typedef
struct
T_OV_OBJ_DESCR_HDR
{
typedef
struct
T_OV_OBJ_DESCR_HDR
{
USIGN16
index
;
/* index = 0 */
USIGN16
index
;
/* index = 0 */
USIGN8
obj_code
;
/* object-code = 1 */
USIGN8
obj_code
;
/* object-code = 1 */
BOOL
flag
;
/* => TRUE write protected */
BOOL
flag
;
/* => TRUE write protected */
...
@@ -960,7 +981,8 @@ typedef struct T_OV_OBJ_DESCR_HDR {
...
@@ -960,7 +981,8 @@ typedef struct T_OV_OBJ_DESCR_HDR {
#endif
#endif
/* --- OD-Null-Object-Description -------------------------------------------*/
/* --- OD-Null-Object-Description -------------------------------------------*/
typedef
struct
_T_OD_NULL_OBJECT
{
typedef
struct
_T_OD_NULL_OBJECT
{
USIGN16
index
;
/* index */
USIGN16
index
;
/* index */
USIGN8
obj_code
;
/* object code */
USIGN8
obj_code
;
/* object code */
USIGN8
dummy
;
/* alignment reasons */
USIGN8
dummy
;
/* alignment reasons */
...
@@ -971,7 +993,8 @@ typedef T_OD_NULL_OBJECT T_OV_NULL_OBJECT;
...
@@ -971,7 +993,8 @@ typedef T_OD_NULL_OBJECT T_OV_NULL_OBJECT;
#endif
#endif
/* --- OD-Static-Type-Object-Description ------------------------------------*/
/* --- OD-Static-Type-Object-Description ------------------------------------*/
typedef
struct
_T_OD_ST_DT_DESCR
{
typedef
struct
_T_OD_ST_DT_DESCR
{
USIGN16
index
;
/* index */
USIGN16
index
;
/* index */
USIGN8
obj_code
;
/* object code */
USIGN8
obj_code
;
/* object code */
USIGN8
dummy
;
/* alignment byte */
USIGN8
dummy
;
/* alignment byte */
...
@@ -983,7 +1006,8 @@ typedef T_OD_ST_DT_DESCR T_OV_ST_DT_DESCR;
...
@@ -983,7 +1006,8 @@ typedef T_OD_ST_DT_DESCR T_OV_ST_DT_DESCR;
#endif
#endif
/* --- OD-Static-Structure-Object-Description -------------------------------*/
/* --- OD-Static-Structure-Object-Description -------------------------------*/
typedef
struct
_T_OD_DT_LIST
{
typedef
struct
_T_OD_DT_LIST
{
USIGN16
index_of_type
;
/* logical address of the type */
USIGN16
index_of_type
;
/* logical address of the type */
USIGN8
length
;
/* length of the element in octets */
USIGN8
length
;
/* length of the element in octets */
USIGN8
dummy
;
/* alignment byte */
USIGN8
dummy
;
/* alignment byte */
...
@@ -993,7 +1017,8 @@ typedef struct _T_OD_DT_LIST {
...
@@ -993,7 +1017,8 @@ typedef struct _T_OD_DT_LIST {
typedef
T_OD_DT_LIST
T_OV_DT_LIST
;
typedef
T_OD_DT_LIST
T_OV_DT_LIST
;
#endif
#endif
typedef
struct
_T_OD_ST_DS_DESCR
{
typedef
struct
_T_OD_ST_DS_DESCR
{
USIGN16
index
;
/* index */
USIGN16
index
;
/* index */
USIGN8
obj_code
;
/* object code */
USIGN8
obj_code
;
/* object code */
USIGN8
no_of_elements
;
/* number of record elements */
USIGN8
no_of_elements
;
/* number of record elements */
...
@@ -1002,7 +1027,8 @@ typedef struct _T_OD_ST_DS_DESCR {
...
@@ -1002,7 +1027,8 @@ typedef struct _T_OD_ST_DS_DESCR {
}
T_OD_ST_DS_DESCR
;
}
T_OD_ST_DS_DESCR
;
#if (PB_VER < 500)
#if (PB_VER < 500)
typedef
struct
_T_OV_ST_DS_DESCR
{
typedef
struct
_T_OV_ST_DS_DESCR
{
USIGN16
index
;
/* index */
USIGN16
index
;
/* index */
USIGN8
obj_code
;
/* object code */
USIGN8
obj_code
;
/* object code */
USIGN8
no_of_elements
;
/* number of record elements */
USIGN8
no_of_elements
;
/* number of record elements */
...
@@ -1013,7 +1039,8 @@ typedef struct _T_OV_ST_DS_DESCR {
...
@@ -1013,7 +1039,8 @@ typedef struct _T_OV_ST_DS_DESCR {
/* --- OD-OBJECT-DESCRIPTION ----------------------------------------------- */
/* --- OD-OBJECT-DESCRIPTION ----------------------------------------------- */
#if (PB_VER >= 500)
#if (PB_VER >= 500)
typedef
struct
_T_OBJECT_DESCR
{
typedef
struct
_T_OBJECT_DESCR
{
union
{
union
{
T_OD_OBJ_DESCR_HDR
od_obj_descr
;
T_OD_OBJ_DESCR_HDR
od_obj_descr
;
T_OD_NULL_OBJECT
null_obj_descr
;
T_OD_NULL_OBJECT
null_obj_descr
;
...
@@ -1029,7 +1056,8 @@ typedef struct _T_OBJECT_DESCR {
...
@@ -1029,7 +1056,8 @@ typedef struct _T_OBJECT_DESCR {
}
id
;
}
id
;
}
T_OBJECT_DESCR
;
}
T_OBJECT_DESCR
;
#else
#else
typedef
struct
_T_OBJECT_DESCR
{
typedef
struct
_T_OBJECT_DESCR
{
union
{
union
{
T_OV_OBJ_DESCR_HDR
ov_obj_descr
;
T_OV_OBJ_DESCR_HDR
ov_obj_descr
;
T_OV_NULL_OBJECT
null_obj_descr
;
T_OV_NULL_OBJECT
null_obj_descr
;
...
@@ -1047,13 +1075,15 @@ typedef struct _T_OBJECT_DESCR {
...
@@ -1047,13 +1075,15 @@ typedef struct _T_OBJECT_DESCR {
#endif
#endif
/* --- OD-PACKED-OBJECT-DESCRIPTION ---------------------------------------- */
/* --- OD-PACKED-OBJECT-DESCRIPTION ---------------------------------------- */
typedef
struct
_T_PACKED_OBJECT_DESCR
{
typedef
struct
_T_PACKED_OBJECT_DESCR
{
USIGN8
length
;
/* length of packed object description*/
USIGN8
length
;
/* length of packed object description*/
/* USIGN8 packed_obj_descr[length]; packed object description */
/* USIGN8 packed_obj_descr[length]; packed object description */
}
T_PACKED_OBJECT_DESCR
;
}
T_PACKED_OBJECT_DESCR
;
/* --- Get-OD-Service -------------------------------------------------------*/
/* --- Get-OD-Service -------------------------------------------------------*/
typedef
struct
_T_GET_OD_REQ
{
typedef
struct
_T_GET_OD_REQ
{
PB_BOOL
format
;
/* TRUE = long format / FALSE = short */
PB_BOOL
format
;
/* TRUE = long format / FALSE = short */
USIGN8
dummy
;
/* alignment byte */
USIGN8
dummy
;
/* alignment byte */
T_ACC_SPEC
acc_spec
;
/* access specification */
T_ACC_SPEC
acc_spec
;
/* access specification */
...
@@ -1063,7 +1093,8 @@ typedef struct _T_GET_OD_REQ {
...
@@ -1063,7 +1093,8 @@ typedef struct _T_GET_OD_REQ {
typedef
T_GET_OD_REQ
T_GET_OV_REQ
;
typedef
T_GET_OD_REQ
T_GET_OV_REQ
;
#endif
#endif
typedef
struct
_T_GET_OD_CNF
{
typedef
struct
_T_GET_OD_CNF
{
PB_BOOL
more_follows
;
/* further object descr. follow */
PB_BOOL
more_follows
;
/* further object descr. follow */
USIGN8
no_of_od_descr
;
/* # of object description */
USIGN8
no_of_od_descr
;
/* # of object description */
/* T_PACKED_OBJECT_DESCR obj_descr_list[no_of_od_descr]; list of object
/* T_PACKED_OBJECT_DESCR obj_descr_list[no_of_od_descr]; list of object
...
@@ -1071,7 +1102,8 @@ typedef struct _T_GET_OD_CNF {
...
@@ -1071,7 +1102,8 @@ typedef struct _T_GET_OD_CNF {
}
T_GET_OD_CNF
;
}
T_GET_OD_CNF
;
#if (PB_VER < 500)
#if (PB_VER < 500)
typedef
struct
_T_GET_OV_CNF
{
typedef
struct
_T_GET_OV_CNF
{
PB_BOOL
more_follows
;
/* further object descr. follow */
PB_BOOL
more_follows
;
/* further object descr. follow */
USIGN8
no_of_ov_descr
;
/* # of object description */
USIGN8
no_of_ov_descr
;
/* # of object description */
/* T_PACKED_OBJECT_DESCR obj_descr_list[no_of_ov_descr]; list of object
/* T_PACKED_OBJECT_DESCR obj_descr_list[no_of_ov_descr]; list of object
...
@@ -1080,7 +1112,8 @@ typedef struct _T_GET_OV_CNF {
...
@@ -1080,7 +1112,8 @@ typedef struct _T_GET_OV_CNF {
#endif
#endif
/* --- Put-OD-Services ------------------------------------------------------*/
/* --- Put-OD-Services ------------------------------------------------------*/
typedef
struct
_T_INIT_PUT_OD_REQ
{
typedef
struct
_T_INIT_PUT_OD_REQ
{
INT8
consequence
;
/* Loading interactive/non-interactive */
INT8
consequence
;
/* Loading interactive/non-interactive */
USIGN8
dummy
;
/* alignment */
USIGN8
dummy
;
/* alignment */
}
T_INIT_PUT_OD_REQ
;
}
T_INIT_PUT_OD_REQ
;
...
@@ -1089,7 +1122,8 @@ typedef struct _T_INIT_PUT_OD_REQ {
...
@@ -1089,7 +1122,8 @@ typedef struct _T_INIT_PUT_OD_REQ {
typedef
T_INIT_PUT_OD_REQ
T_INIT_PUT_OV_REQ
;
typedef
T_INIT_PUT_OD_REQ
T_INIT_PUT_OV_REQ
;
#endif
#endif
typedef
struct
_T_PUT_OD_REQ
{
typedef
struct
_T_PUT_OD_REQ
{
USIGN8
dummy
;
/* alignment */
USIGN8
dummy
;
/* alignment */
USIGN8
no_of_od_descr
;
/* # of object description */
USIGN8
no_of_od_descr
;
/* # of object description */
/* T_PACKED_OBJECT_DESCR obj_descr_list[no_of_od_descr]; list of object
/* T_PACKED_OBJECT_DESCR obj_descr_list[no_of_od_descr]; list of object
...
@@ -1097,7 +1131,8 @@ typedef struct _T_PUT_OD_REQ {
...
@@ -1097,7 +1131,8 @@ typedef struct _T_PUT_OD_REQ {
}
T_PUT_OD_REQ
;
}
T_PUT_OD_REQ
;
#if (PB_VER < 500)
#if (PB_VER < 500)
typedef
struct
_T_PUT_OV_REQ
{
typedef
struct
_T_PUT_OV_REQ
{
USIGN8
dummy
;
/* alignment */
USIGN8
dummy
;
/* alignment */
USIGN8
no_of_ov_descr
;
/* # of object description */
USIGN8
no_of_ov_descr
;
/* # of object description */
/* T_PACKED_OBJECT_DESCR obj_descr_list[no_of_ov_descr]; list of object
/* T_PACKED_OBJECT_DESCR obj_descr_list[no_of_ov_descr]; list of object
...
@@ -1106,7 +1141,8 @@ typedef struct _T_PUT_OV_REQ {
...
@@ -1106,7 +1141,8 @@ typedef struct _T_PUT_OV_REQ {
#endif
#endif
/* --- Load-OD-Local-Service ------------------------------------------------*/
/* --- Load-OD-Local-Service ------------------------------------------------*/
typedef
struct
_T_INIT_LOAD_OD_REQ
{
typedef
struct
_T_INIT_LOAD_OD_REQ
{
USIGN32
vfd_number
;
USIGN32
vfd_number
;
INT8
consequence
;
INT8
consequence
;
USIGN8
dummy
;
USIGN8
dummy
;
...
@@ -1116,7 +1152,8 @@ typedef struct _T_INIT_LOAD_OD_REQ {
...
@@ -1116,7 +1152,8 @@ typedef struct _T_INIT_LOAD_OD_REQ {
typedef
T_INIT_LOAD_OD_REQ
T_INIT_LOAD_OV_REQ
;
typedef
T_INIT_LOAD_OD_REQ
T_INIT_LOAD_OV_REQ
;
#endif
#endif
typedef
struct
_T_INIT_LOAD_OD_CNF
{
typedef
struct
_T_INIT_LOAD_OD_CNF
{
USIGN32
vfd_number
;
USIGN32
vfd_number
;
}
T_INIT_LOAD_OD_CNF
;
}
T_INIT_LOAD_OD_CNF
;
...
@@ -1124,7 +1161,8 @@ typedef struct _T_INIT_LOAD_OD_CNF {
...
@@ -1124,7 +1161,8 @@ typedef struct _T_INIT_LOAD_OD_CNF {
typedef
T_INIT_LOAD_OD_CNF
T_INIT_LOAD_OV_CNF
;
typedef
T_INIT_LOAD_OD_CNF
T_INIT_LOAD_OV_CNF
;
#endif
#endif
typedef
struct
_T_LOAD_OD_REQ
{
typedef
struct
_T_LOAD_OD_REQ
{
USIGN32
vfd_number
;
USIGN32
vfd_number
;
T_OBJECT_DESCR
obj_descr
;
T_OBJECT_DESCR
obj_descr
;
}
T_LOAD_OD_REQ
;
}
T_LOAD_OD_REQ
;
...
@@ -1133,7 +1171,8 @@ typedef struct _T_LOAD_OD_REQ {
...
@@ -1133,7 +1171,8 @@ typedef struct _T_LOAD_OD_REQ {
typedef
T_LOAD_OD_REQ
T_LOAD_OV_REQ
;
typedef
T_LOAD_OD_REQ
T_LOAD_OV_REQ
;
#endif
#endif
typedef
struct
_T_LOAD_OD_CNF
{
typedef
struct
_T_LOAD_OD_CNF
{
USIGN32
vfd_number
;
USIGN32
vfd_number
;
}
T_LOAD_OD_CNF
;
}
T_LOAD_OD_CNF
;
...
@@ -1141,7 +1180,8 @@ typedef struct _T_LOAD_OD_CNF {
...
@@ -1141,7 +1180,8 @@ typedef struct _T_LOAD_OD_CNF {
typedef
T_LOAD_OD_CNF
T_LOAD_OV_CNF
;
typedef
T_LOAD_OD_CNF
T_LOAD_OV_CNF
;
#endif
#endif
typedef
struct
_T_TERM_LOAD_OD_REQ
{
typedef
struct
_T_TERM_LOAD_OD_REQ
{
USIGN32
vfd_number
;
USIGN32
vfd_number
;
}
T_TERM_LOAD_OD_REQ
;
}
T_TERM_LOAD_OD_REQ
;
...
@@ -1149,7 +1189,8 @@ typedef struct _T_TERM_LOAD_OD_REQ {
...
@@ -1149,7 +1189,8 @@ typedef struct _T_TERM_LOAD_OD_REQ {
typedef
T_TERM_LOAD_OD_REQ
T_TERM_LOAD_OV_REQ
;
typedef
T_TERM_LOAD_OD_REQ
T_TERM_LOAD_OV_REQ
;
#endif
#endif
typedef
struct
_T_TERM_LOAD_OD_CNF
{
typedef
struct
_T_TERM_LOAD_OD_CNF
{
USIGN32
vfd_number
;
USIGN32
vfd_number
;
}
T_TERM_LOAD_OD_CNF
;
}
T_TERM_LOAD_OD_CNF
;
...
@@ -1158,7 +1199,8 @@ typedef T_TERM_LOAD_OD_CNF T_TERM_LOAD_OV_CNF;
...
@@ -1158,7 +1199,8 @@ typedef T_TERM_LOAD_OD_CNF T_TERM_LOAD_OV_CNF;
#endif
#endif
/*--- Read-OD-Local-Service -------------------------------------------------*/
/*--- Read-OD-Local-Service -------------------------------------------------*/
typedef
struct
_T_OD_READ_LOC_REQ
{
typedef
struct
_T_OD_READ_LOC_REQ
{
USIGN32
vfd_number
;
USIGN32
vfd_number
;
USIGN8
obj_code
;
USIGN8
obj_code
;
USIGN8
dummy
;
USIGN8
dummy
;
...
@@ -1169,7 +1211,8 @@ typedef struct _T_OD_READ_LOC_REQ {
...
@@ -1169,7 +1211,8 @@ typedef struct _T_OD_READ_LOC_REQ {
typedef
T_OD_READ_LOC_REQ
T_OV_READ_LOC_REQ
;
typedef
T_OD_READ_LOC_REQ
T_OV_READ_LOC_REQ
;
#endif
#endif
typedef
struct
_T_OD_READ_LOC_CNF
{
typedef
struct
_T_OD_READ_LOC_CNF
{
USIGN32
vfd_number
;
/* vfd number */
USIGN32
vfd_number
;
/* vfd number */
T_OBJECT_DESCR
obj_descr
;
/* object description */
T_OBJECT_DESCR
obj_descr
;
/* object description */
}
T_OD_READ_LOC_CNF
;
}
T_OD_READ_LOC_CNF
;
...
@@ -1183,7 +1226,8 @@ typedef T_OD_READ_LOC_CNF T_OV_READ_LOC_CNF;
...
@@ -1183,7 +1226,8 @@ typedef T_OD_READ_LOC_CNF T_OV_READ_LOC_CNF;
/*****************************************************************************/
/*****************************************************************************/
/*--- Create-VFD-Service ----------------------------------------------------*/
/*--- Create-VFD-Service ----------------------------------------------------*/
typedef
struct
_T_VFD_CREATE_REQ
{
typedef
struct
_T_VFD_CREATE_REQ
{
USIGN32
vfd_number
;
/* vfd number */
USIGN32
vfd_number
;
/* vfd number */
STRINGV
vendor_name
[
MAX_VFD_STRING_LENGTH
];
/* vendor name */
STRINGV
vendor_name
[
MAX_VFD_STRING_LENGTH
];
/* vendor name */
STRINGV
model_name
[
MAX_VFD_STRING_LENGTH
];
/* model-name */
STRINGV
model_name
[
MAX_VFD_STRING_LENGTH
];
/* model-name */
...
@@ -1191,23 +1235,27 @@ typedef struct _T_VFD_CREATE_REQ {
...
@@ -1191,23 +1235,27 @@ typedef struct _T_VFD_CREATE_REQ {
USIGN8
profile_number
[
2
];
/* profile number */
USIGN8
profile_number
[
2
];
/* profile number */
}
T_VFD_CREATE_REQ
;
}
T_VFD_CREATE_REQ
;
typedef
struct
_T_VFD_CREATE_CNF
{
typedef
struct
_T_VFD_CREATE_CNF
{
USIGN32
vfd_number
;
/* vfd number */
USIGN32
vfd_number
;
/* vfd number */
}
T_VFD_CREATE_CNF
;
}
T_VFD_CREATE_CNF
;
/*--- VFD-Set-Physical-Status -----------------------------------------------*/
/*--- VFD-Set-Physical-Status -----------------------------------------------*/
typedef
struct
_T_VFD_SET_PHYS_STATUS_REQ
{
typedef
struct
_T_VFD_SET_PHYS_STATUS_REQ
{
USIGN32
vfd_number
;
/* vfd number */
USIGN32
vfd_number
;
/* vfd number */
USIGN8
physical_status
;
/* physical status */
USIGN8
physical_status
;
/* physical status */
USIGN8
dummy
;
/* alignment byte */
USIGN8
dummy
;
/* alignment byte */
}
T_VFD_SET_PHYS_STATUS_REQ
;
}
T_VFD_SET_PHYS_STATUS_REQ
;
typedef
struct
_T_VFD_SET_PHYS_STATUS_CNF
{
typedef
struct
_T_VFD_SET_PHYS_STATUS_CNF
{
USIGN32
vfd_number
;
/* vfd number */
USIGN32
vfd_number
;
/* vfd number */
}
T_VFD_SET_PHYS_STATUS_CNF
;
}
T_VFD_SET_PHYS_STATUS_CNF
;
/*--- Status-Service --------------------------------------------------------*/
/*--- Status-Service --------------------------------------------------------*/
typedef
struct
_T_VFD_STATUS_CNF
{
typedef
struct
_T_VFD_STATUS_CNF
{
USIGN8
logical_status
;
/* logical status */
USIGN8
logical_status
;
/* logical status */
USIGN8
physical_status
;
/* physical status */
USIGN8
physical_status
;
/* physical status */
USIGN8
local_detail
[
3
];
/* local detail */
USIGN8
local_detail
[
3
];
/* local detail */
...
@@ -1215,7 +1263,8 @@ typedef struct _T_VFD_STATUS_CNF {
...
@@ -1215,7 +1263,8 @@ typedef struct _T_VFD_STATUS_CNF {
}
T_VFD_STATUS_CNF
;
}
T_VFD_STATUS_CNF
;
/*--- Unsolicited-Status-Service --------------------------------------------*/
/*--- Unsolicited-Status-Service --------------------------------------------*/
typedef
struct
_T_VFD_UNSOL_STATUS_REQ
{
typedef
struct
_T_VFD_UNSOL_STATUS_REQ
{
USIGN8
priority
;
/* priority */
USIGN8
priority
;
/* priority */
USIGN8
logical_status
;
/* logical status */
USIGN8
logical_status
;
/* logical status */
USIGN8
physical_status
;
/* physical status */
USIGN8
physical_status
;
/* physical status */
...
@@ -1225,7 +1274,8 @@ typedef struct _T_VFD_UNSOL_STATUS_REQ {
...
@@ -1225,7 +1274,8 @@ typedef struct _T_VFD_UNSOL_STATUS_REQ {
}
T_VFD_UNSOL_STATUS_REQ
;
}
T_VFD_UNSOL_STATUS_REQ
;
/*--- Identify-Service ------------------------------------------------------*/
/*--- Identify-Service ------------------------------------------------------*/
typedef
struct
_T_VFD_IDENTIFY_CNF
{
typedef
struct
_T_VFD_IDENTIFY_CNF
{
STRINGV
vendor_name
[
MAX_VFD_STRING_LENGTH
];
/* producer of the device */
STRINGV
vendor_name
[
MAX_VFD_STRING_LENGTH
];
/* producer of the device */
STRINGV
model_name
[
MAX_VFD_STRING_LENGTH
];
/* model-name of the device */
STRINGV
model_name
[
MAX_VFD_STRING_LENGTH
];
/* model-name of the device */
STRINGV
revision
[
MAX_VFD_STRING_LENGTH
];
/* revision of the device */
STRINGV
revision
[
MAX_VFD_STRING_LENGTH
];
/* revision of the device */
...
...
profibus/lib/rt/src/pb_hw.h
deleted
100644 → 0
View file @
9344a78b
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2019 SSAB EMEA AB.
*
* This file is part of ProviewR.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 2 of
* the License, or (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with ProviewR. If not, see <http://www.gnu.org/licenses/>
*
* Linking ProviewR statically or dynamically with other modules is
* making a combined work based on ProviewR. Thus, the terms and
* conditions of the GNU General Public License cover the whole
* combination.
*
* In addition, as a special exception, the copyright holders of
* ProviewR give you permission to, from the build function in the
* ProviewR Configurator, combine ProviewR with modules generated by the
* ProviewR PLC Editor to a PLC program, regardless of the license
* terms of these modules. You may copy and distribute the resulting
* combined work under the terms of your choice, provided that every
* copy of the combined work is accompanied by a complete copy of
* the source code of ProviewR (the version used to produce the
* combined work), being distributed under the terms of the GNU
* General Public License plus this exception.
*/
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2011 SSAB Oxelosund AB.
*
* This file is part of Proview.
* Copyright (C) SOFTING GmbH 1995-1999.
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 2 of
* the License, or (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with the program, if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
/*****************************************************************************/
/* */
/* SOFTING GmbH */
/* Richard-Reitzner-Allee 6 */
/* D-85540 Haar */
/* Phone: (++49)-(0)89-45656-0 */
/* Fax: (++49)-(0)89-45656-399 */
/* */
/* Copyright (C) SOFTING GmbH 1995-1999 */
/* */
/*****************************************************************************/
/*****************************************************************************/
/* PROFIBoard SPECIFIC DEFINES */
/* Filename : PB_HW.H */
/* Version : 5.22.0.00.release */
/* Date : 26-February-1999 */
/* Author : SOFTING-BG2 */
/* */
/* Description : This file contains the PROFIboard specific defines */
/* */
/* CHANGE_NOTES */
/* */
/* date name change */
/* ----------------------------------------------------------------------- */
/* 03.03.98 BOE new/modify #defines for DPRAM SIZES and IRQ-VAL */
/* offset in DPR */
/* */
/*****************************************************************************/
/*****************************************************************************/
/*****************************************************************************/
#ifndef __PB_HW__
#define __PB_HW__
/* --- macros to access DPR ----------------------------------------------- */
#define _GET_DPR_BYTE(var) var
#define _SET_DPR_BYTE(out_var, in_var) out_var = in_var
#define _GET_DPR_WORD(var) var
#define _SET_DPR_WORD(out_var, in_var) out_var = in_var
#define _SET_CHIP_SELECT_ADDR(addr)
/* --- DPRAM SIZES / IRQ-VAL offset in DPR --------------------------------- */
#define DPRAM_SIZE_PROFIBOARD 0x4000
/* 16 KB DPRAM */
#define DPRAM_SIZE_PROFI_104 0x4000
/* 16 KB DPRAM */
#define DPRAM_H_TO_C_IRQ_OFFSET 0x2
/* IRQ memory cells at DPRAM end */
#define DPRAM_C_TO_H_IRQ_OFFSET 0x4
/* --- IRQ-VALUE ----------------------------------------------------------- */
#define RST_IRQ_VALUE 0xAA
/* Reset */
#define REQ_IRQ_VALUE 0xF0
/* SND/RCV Request */
#define ACK_IRQ_VALUE 0x0F
/* SND/RCV Acknowledge */
#define DP_SLAVE_IO_REQ_IRQ_VALUE 0xE0
/* DP-SLAVE-IO Request */
#define DP_SLAVE_IO_ACK_IRQ_VALUE 0x0E
/* DP-SLAVE-IO Acknowldege */
#define DP_DATA_STOP_REQ_IRQ_VALUE 0xD0
/* data transfer stop Request */
#define DP_DATA_STOP_ACK_IRQ_VALUE 0x0D
/* data transfer stop Acknowldege */
/* --- Read Registers in the I/O Area of the PC ---------------------------- */
#define IDENT_1 (IO_BASE_ADD + 0)
/* Identification Byte 1 */
#define IDENT_2 (IO_BASE_ADD + 1)
/* Identification Byte 2 */
#define IDENT_3 (IO_BASE_ADD + 2)
/* Identification Byte 3 */
#define IDENT_4 (IO_BASE_ADD + 3)
/* Identification Byte 4 */
/* --- Write Registers in the I/O Area of the PC --------------------------- */
#define BOARD_CTRL (IO_BASE_ADD + 0)
/* Board Control Register */
#define BASE_ADD (IO_BASE_ADD + 1)
/* DPRAM Base Address Register */
#define PAGE_SEL (IO_BASE_ADD + 2)
/* Page Select Register */
#define CP_IRQ (IO_BASE_ADD + 3)
/* Interrupt Register */
/* -- Pindefinition of the Board Control Register -------------------------- */
#define C165_RESET 0x01
/* Reset of the C165 (low active)*/
#define EN_DPRAM 0x02
/* Enable DPRAM for PC (high active)*/
#define SIZE_16_64 0x04
/* DPRAM size 1:16 kByte 0:64kByte*/
/* 64 kByte (low) */
#define BASE_A14 0x08
/* Address low within the 64 kByte */
#define BASE_A15 0x10
/* Address high within the 64 kByte */
#define DPR_WIDTH_8_16 0x20
/* DPRAM width 0:16Bit 1:8Bit */
#define MEMCS16_LA_SA 0x40
/* MEMCS16 generation 0:LA 1:SA */
/* --- Pindefinition of the DPRAM Base Adress Register --------------------- */
/* Bit 7: Base Address 23 (MSB) to */
/* Bit 0: Base Address 16 (LSB) */
/* --- Pindefinition of the Page Select Register --------------------------- */
#define PAGE_A0 0x01
/* Page Address low within the 64 kByte window */
#define PAGE_A1 0x02
/* Page Address high within the 64 kByte window */
#define PAGE_0 0x00
/* Page 0 0KB - 16KB */
#define PAGE_1 0x01
/* Page 1 16KB - 32KB */
#define PAGE_2 0x02
/* Page 2 32KB - 48KB */
#define PAGE_3 0x03
/* Page 3 48KB - 64KB */
/* --- Macros to Set or Clear Page ----------------------------------------- */
#define CLEAR_PAGE(reg) ((reg) & ~(PAGE_A0 | PAGE_A1))
#define SET_PAGE(reg, page) (CLEAR_PAGE(reg) | page)
/* --- Board I/O identifier ------------------------------------------------ */
#define HW_IO_ID_PROFIBOARD_0 0x96
#define HW_IO_ID_PROFIBOARD_1 0x26
#define HW_IO_ID_PROFIBOARD_2 0x6B
#define HW_IO_ID_PROFI104_0 0x2C
#define HW_IO_ID_PROFI104_1 0x12
#define HW_IO_ID_PROFI104_2 0x41
#endif
profibus/lib/rt/src/pb_if.h
View file @
ce758cd3
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2019 SSAB EMEA AB.
*
* This file is part of ProviewR.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 2 of
* the License, or (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with ProviewR. If not, see <http://www.gnu.org/licenses/>
*
* Linking ProviewR statically or dynamically with other modules is
* making a combined work based on ProviewR. Thus, the terms and
* conditions of the GNU General Public License cover the whole
* combination.
*
* In addition, as a special exception, the copyright holders of
* ProviewR give you permission to, from the build function in the
* ProviewR Configurator, combine ProviewR with modules generated by the
* ProviewR PLC Editor to a PLC program, regardless of the license
* terms of these modules. You may copy and distribute the resulting
* combined work under the terms of your choice, provided that every
* copy of the combined work is accompanied by a complete copy of
* the source code of ProviewR (the version used to produce the
* combined work), being distributed under the terms of the GNU
* General Public License plus this exception.
*/
/*****************************************************************************/
/*****************************************************************************/
/* */
/* */
/*
SOFTING AG
*/
/*
SOFTING Industrial Automation GmbH
*/
/* Richard-Reitzner-Allee 6 */
/* Richard-Reitzner-Allee 6 */
/* D-85540 Haar */
/* D-85540 Haar */
/* Phone: (++49)-(0)89-45656-0 */
/* Phone: (++49)-(0)89-45656-0 */
/* Fax: (++49)-(0)89-45656-399 */
/* Fax: (++49)-(0)89-45656-399 */
/* */
/* */
/*
Copyright (C) SOFTING AG 1995-2003
*/
/*
Copyright (C) SOFTING Industrial Automation GmbH 1995-2012
*/
/* All Rights Reserved */
/* All Rights Reserved */
/* */
/* */
/*****************************************************************************/
/*****************************************************************************/
...
@@ -49,9 +14,9 @@
...
@@ -49,9 +14,9 @@
/* PROFIBUS APPLICATION PROGRAM INTERFACE */
/* PROFIBUS APPLICATION PROGRAM INTERFACE */
/* */
/* */
/* Filename : PB_IF.H */
/* Filename : PB_IF.H */
/* Version : 5.
26.1
.00.release */
/* Version : 5.
46.0
.00.release */
/* Date :
27-June-2003
*/
/* Date :
October-2011
*/
/* Author : SOFTING
AG
*/
/* Author : SOFTING
*/
/* */
/* */
/* Description : This file contains the extern function declarations, */
/* Description : This file contains the extern function declarations, */
/* defines and types of the PROFIBUS Communication Interface */
/* defines and types of the PROFIBUS Communication Interface */
...
@@ -102,8 +67,7 @@
...
@@ -102,8 +67,7 @@
#define ACK_IRQ 0x0F
/* acknowledge REQ/RES */
#define ACK_IRQ 0x0F
/* acknowledge REQ/RES */
#define DP_SLAVE_IO_REQ_IRQ 0xE0
/* MASTER: DP-SLAVE-IO IND/REQ */
#define DP_SLAVE_IO_REQ_IRQ 0xE0
/* MASTER: DP-SLAVE-IO IND/REQ */
#define DP_SLAVE_IO_ACK_IRQ 0x0E
/* MASTER: DP-SLAVE-IO acknowldege IND/REQ */
#define DP_SLAVE_IO_ACK_IRQ 0x0E
/* MASTER: DP-SLAVE-IO acknowldege IND/REQ */
#define DP_DATA_STOP_REQ_IRQ \
#define DP_DATA_STOP_REQ_IRQ 0xD0
/* MASTER: data transfer stop REQ received \
0xD0
/* MASTER: data transfer stop REQ received \
*/
*/
#define DP_DATA_STOP_ACK_IRQ 0x0D
/* MASTER: data transfer stop Acknowldege */
#define DP_DATA_STOP_ACK_IRQ 0x0D
/* MASTER: data transfer stop Acknowldege */
#define TRC_REQ_IRQ 0xC0
/* TRACE REQ is received */
#define TRC_REQ_IRQ 0xC0
/* TRACE REQ is received */
...
@@ -187,15 +151,15 @@
...
@@ -187,15 +151,15 @@
* ---------------------------------------------------------------- */
* ---------------------------------------------------------------- */
#define ID_DP_SLAVE_IO_IMAGE 0x80
/* MASTER: image for slave io datas */
#define ID_DP_SLAVE_IO_IMAGE 0x80
/* MASTER: image for slave io datas */
#define ID_DP_STATUS_IMAGE 0x81
/* MASTER: image for status datas */
#define ID_DP_STATUS_IMAGE 0x81
/* MASTER: image for status datas */
#define ID_DP_SLAVE_IO_CONFIG_IMAGE \
#define ID_DP_SLAVE_IO_CONFIG_IMAGE 0x82
/* MASTER: DPRAM layout of slave io \
0x82
/* MASTER: DPRAM layout of slave io \
*/
*/
/* --- DP-SLAVE
/* --- DP-SLAVE
* ----------------------------------------------------------------- */
* ----------------------------------------------------------------- */
#define ID_DPS_SLAVE_INPUT_IMAGE 0x90
/* SLAVE: image for slave input datas */
#define ID_DPS_SLAVE_INPUT_IMAGE 0x90
/* SLAVE: image for slave input datas */
#define ID_DPS_SLAVE_OUTPUT_IMAGE \
#define ID_DPS_SLAVE_OUTPUT_IMAGE 0x91
/* SLAVE: image for slave output datas \
0x91
/* SLAVE: image for slave output datas \
*/
/* --- 0x92 reserved for internal use
*/
*/
/* --- 0xA0 - 0xEF reserved for future use --- (no identifiers defined)
/* --- 0xA0 - 0xEF reserved for future use --- (no identifiers defined)
...
@@ -216,20 +180,8 @@
...
@@ -216,20 +180,8 @@
/* PROFI SERVICE DESCRIPTION BLOCK */
/* PROFI SERVICE DESCRIPTION BLOCK */
/**********************************************************************************/
/**********************************************************************************/
typedef
struct
_T_PROFI_DEVICE_HANDLE
{
typedef
struct
_T_PROFI_SERVICE_DESCR
HANDLE
hServiceReadDevice
;
// Handle for Service device
{
HANDLE
hServiceWriteDevice
;
// Handle for Service device
HANDLE
hDpDataDevice
;
// Handle for DP-Data device
HANDLE
hDpsInputDataDevice
;
// Handle for DP-Slave Input-Data device
HANDLE
hDpsOutputDataDevice
;
// Handle for DP-Slave Output-Data device
USIGN8
CurrentBoardNumber
;
}
T_PROFI_DEVICE_HANDLE
;
/**********************************************************************************/
/* PROFI SERVICE DESCRIPTION BLOCK */
/**********************************************************************************/
typedef
struct
_T_PROFI_SERVICE_DESCR
{
USIGN16
comm_ref
;
/* communication reference */
USIGN16
comm_ref
;
/* communication reference */
USIGN8
layer
;
/* layer identifier */
USIGN8
layer
;
/* layer identifier */
USIGN8
service
;
/* service identifier */
USIGN8
service
;
/* service identifier */
...
@@ -242,7 +194,8 @@ typedef struct _T_PROFI_SERVICE_DESCR {
...
@@ -242,7 +194,8 @@ typedef struct _T_PROFI_SERVICE_DESCR {
/**********************************************************************************/
/**********************************************************************************/
/* PROFI INITIALIZATION DATA STRUCTURE */
/* PROFI INITIALIZATION DATA STRUCTURE */
/**********************************************************************************/
/**********************************************************************************/
typedef
struct
_T_PROFI_INIT
{
typedef
struct
_T_PROFI_INIT
{
USIGN32
dpr_address
;
/* DPR address */
USIGN32
dpr_address
;
/* DPR address */
INT16
io_port_address
;
/* IO port address */
INT16
io_port_address
;
/* IO port address */
PB_BOOL
load_firmware
;
/* PB_TRUE for PROFI-IF
PB_BOOL
load_firmware
;
/* PB_TRUE for PROFI-IF
...
@@ -287,9 +240,10 @@ extern "C" {
...
@@ -287,9 +240,10 @@ extern "C" {
#endif
#endif
#if defined(WIN32) || defined(_LINUX)
#if defined(WIN32) || defined(_LINUX)
FUNCTION
extern
INT16
CALL_CONV
profi_set_default
(
FUNCTION
extern
INT16
CALL_CONV
profi_set_default
(
IN
USIGN8
Board
,
OUT
T_PROFI_DEVICE_HANDLE
*
hDevice
,
IN
USIGN8
Board
,
IN
USIGN8
Channel
,
IN
USIGN8
Channel
,
IN
USIGN32
ReadTimeout
,
IN
USIGN32
WriteTimeout
)
IN
USIGN32
ReadTimeout
,
IN
USIGN32
WriteTimeout
)
/*----------------------------------------------------------------------------
/*----------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
FUNCTIONAL_DESCRIPTION
...
@@ -316,8 +270,9 @@ FUNCTION extern INT16 CALL_CONV profi_set_default(
...
@@ -316,8 +270,9 @@ FUNCTION extern INT16 CALL_CONV profi_set_default(
-----------------------------------------------------------------------------*/
-----------------------------------------------------------------------------*/
;
;
FUNCTION
extern
INT16
CALL_CONV
profi_init
(
OUT
T_PROFI_DEVICE_HANDLE
*
hDevice
,
FUNCTION
extern
INT16
CALL_CONV
profi_init
(
IN
USIGN8
Board
,
IN
USIGN8
Board
,
IN
USIGN32
ReadTimeout
,
IN
USIGN32
WriteTimeout
)
IN
USIGN32
ReadTimeout
,
IN
USIGN32
WriteTimeout
)
/*----------------------------------------------------------------------------
/*----------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
FUNCTIONAL_DESCRIPTION
...
@@ -345,8 +300,9 @@ FUNCTION extern INT16 CALL_CONV profi_init(OUT T_PROFI_DEVICE_HANDLE* hDevice,
...
@@ -345,8 +300,9 @@ FUNCTION extern INT16 CALL_CONV profi_init(OUT T_PROFI_DEVICE_HANDLE* hDevice,
;
;
#endif
#endif
FUNCTION
extern
INT16
CALL_CONV
init_profibus
(
FUNCTION
extern
INT16
CALL_CONV
init_profibus
(
IN
USIGN32
DprAdress
,
IN
USIGN32
DprAdress
,
IN
USIGN16
IoPortAdress
,
IN
PB_BOOL
Dummy
)
IN
USIGN16
IoPortAdress
,
IN
PB_BOOL
Dummy
)
/*----------------------------------------------------------------------------
/*----------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
FUNCTIONAL_DESCRIPTION
...
@@ -374,7 +330,7 @@ FUNCTION extern INT16 CALL_CONV init_profibus(
...
@@ -374,7 +330,7 @@ FUNCTION extern INT16 CALL_CONV init_profibus(
-----------------------------------------------------------------------------*/
-----------------------------------------------------------------------------*/
;
;
FUNCTION
extern
INT16
CALL_CONV
profi_end
(
IN
T_PROFI_DEVICE_HANDLE
*
hDevice
)
FUNCTION
extern
INT16
CALL_CONV
profi_end
(
VOID
)
/*----------------------------------------------------------------------------
/*----------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
FUNCTIONAL_DESCRIPTION
...
@@ -389,8 +345,7 @@ FUNCTION extern INT16 CALL_CONV profi_end(IN T_PROFI_DEVICE_HANDLE* hDevice)
...
@@ -389,8 +345,7 @@ FUNCTION extern INT16 CALL_CONV profi_end(IN T_PROFI_DEVICE_HANDLE* hDevice)
;
;
FUNCTION
extern
INT16
CALL_CONV
profi_snd_req_res
(
FUNCTION
extern
INT16
CALL_CONV
profi_snd_req_res
(
IN
T_PROFI_DEVICE_HANDLE
*
hDevice
,
IN
T_PROFI_SERVICE_DESCR
*
pSdb
,
IN
T_PROFI_SERVICE_DESCR
*
pSdb
,
IN
VOID
*
pData
,
IN
PB_BOOL
dummy
)
IN
VOID
*
pData
,
IN
PB_BOOL
dummy
)
/*----------------------------------------------------------------------------
/*----------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
FUNCTIONAL_DESCRIPTION
...
@@ -426,9 +381,9 @@ FUNCTION extern INT16 CALL_CONV profi_snd_req_res(
...
@@ -426,9 +381,9 @@ FUNCTION extern INT16 CALL_CONV profi_snd_req_res(
----------------------------------------------------------------------------*/
----------------------------------------------------------------------------*/
;
;
FUNCTION
extern
INT16
CALL_CONV
profi_rcv_con_ind
(
FUNCTION
extern
INT16
CALL_CONV
IN
T_PROFI_DEVICE_HANDLE
*
hDevice
,
OUT
T_PROFI_SERVICE_DESCR
*
pSdb
,
profi_rcv_con_ind
(
OUT
T_PROFI_SERVICE_DESCR
*
pSdb
,
OUT
VOID
*
pData
,
OUT
VOID
*
pData
,
INOUT
USIGN16
*
pDataLength
)
INOUT
USIGN16
*
pDataLength
)
/*----------------------------------------------------------------------------
/*----------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
FUNCTIONAL_DESCRIPTION
...
@@ -455,9 +410,10 @@ FUNCTION extern INT16 CALL_CONV profi_rcv_con_ind(
...
@@ -455,9 +410,10 @@ FUNCTION extern INT16 CALL_CONV profi_rcv_con_ind(
----------------------------------------------------------------------------*/
----------------------------------------------------------------------------*/
;
;
FUNCTION
extern
INT16
CALL_CONV
profi_set_data
(
FUNCTION
extern
INT16
CALL_CONV
profi_set_data
(
IN
USIGN8
DataId
,
IN
T_PROFI_DEVICE_HANDLE
*
hDevice
,
IN
USIGN8
DataId
,
IN
USIGN16
Offset
,
IN
USIGN16
Offset
,
IN
USIGN16
DataLength
,
IN
VOID
*
pData
)
IN
USIGN16
DataLength
,
IN
VOID
*
pData
)
/*-----------------------------------------------------------------------------
/*-----------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
FUNCTIONAL_DESCRIPTION
...
@@ -485,9 +441,10 @@ FUNCTION extern INT16 CALL_CONV profi_set_data(
...
@@ -485,9 +441,10 @@ FUNCTION extern INT16 CALL_CONV profi_set_data(
-----------------------------------------------------------------------------*/
-----------------------------------------------------------------------------*/
;
;
FUNCTION
extern
INT16
CALL_CONV
profi_get_data
(
FUNCTION
extern
INT16
CALL_CONV
profi_get_data
(
IN
USIGN8
DataId
,
IN
T_PROFI_DEVICE_HANDLE
*
hDevice
,
IN
USIGN8
DataId
,
IN
USIGN16
Offset
,
IN
USIGN16
Offset
,
INOUT
USIGN16
*
pDataLength
,
OUT
VOID
*
pData
)
INOUT
USIGN16
*
pDataLength
,
OUT
VOID
*
pData
)
/*-----------------------------------------------------------------------------
/*-----------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
FUNCTIONAL_DESCRIPTION
...
@@ -515,8 +472,8 @@ FUNCTION extern INT16 CALL_CONV profi_get_data(
...
@@ -515,8 +472,8 @@ FUNCTION extern INT16 CALL_CONV profi_get_data(
-----------------------------------------------------------------------------*/
-----------------------------------------------------------------------------*/
;
;
FUNCTION
extern
INT16
CALL_CONV
profi_set_dps_input_data
(
FUNCTION
extern
INT16
CALL_CONV
profi_set_dps_input_data
(
IN
USIGN8
*
pData
,
IN
T_PROFI_DEVICE_HANDLE
*
hDevice
,
IN
USIGN8
*
pData
,
IN
USIGN8
DataLength
,
IN
USIGN8
DataLength
,
OUT
USIGN8
*
pState
)
OUT
USIGN8
*
pState
)
/*-----------------------------------------------------------------------------
/*-----------------------------------------------------------------------------
...
@@ -540,8 +497,7 @@ FUNCTION extern INT16 CALL_CONV profi_set_dps_input_data(
...
@@ -540,8 +497,7 @@ FUNCTION extern INT16 CALL_CONV profi_set_dps_input_data(
;
;
FUNCTION
extern
INT16
CALL_CONV
profi_get_dps_input_data
(
FUNCTION
extern
INT16
CALL_CONV
profi_get_dps_input_data
(
IN
T_PROFI_DEVICE_HANDLE
*
hDevice
,
OUT
USIGN8
*
pData
,
OUT
USIGN8
*
pData
,
INOUT
USIGN8
*
pDataLength
,
OUT
USIGN8
*
pState
)
INOUT
USIGN8
*
pDataLength
,
OUT
USIGN8
*
pState
)
/*-----------------------------------------------------------------------------
/*-----------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
FUNCTIONAL_DESCRIPTION
...
@@ -561,8 +517,7 @@ FUNCTION extern INT16 CALL_CONV profi_get_dps_input_data(
...
@@ -561,8 +517,7 @@ FUNCTION extern INT16 CALL_CONV profi_get_dps_input_data(
;
;
FUNCTION
extern
INT16
CALL_CONV
profi_get_dps_output_data
(
FUNCTION
extern
INT16
CALL_CONV
profi_get_dps_output_data
(
IN
T_PROFI_DEVICE_HANDLE
*
hDevice
,
OUT
USIGN8
*
pData
,
OUT
USIGN8
*
pData
,
INOUT
USIGN8
*
pDataLength
,
OUT
USIGN8
*
pState
)
INOUT
USIGN8
*
pDataLength
,
OUT
USIGN8
*
pState
)
/*-----------------------------------------------------------------------------
/*-----------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
FUNCTIONAL_DESCRIPTION
...
@@ -583,9 +538,8 @@ FUNCTION extern INT16 CALL_CONV profi_get_dps_output_data(
...
@@ -583,9 +538,8 @@ FUNCTION extern INT16 CALL_CONV profi_get_dps_output_data(
-----------------------------------------------------------------------------*/
-----------------------------------------------------------------------------*/
;
;
FUNCTION
extern
INT16
CALL_CONV
profi_get_versions
(
FUNCTION
extern
INT16
CALL_CONV
IN
T_PROFI_DEVICE_HANDLE
*
hDevice
,
OUT
CSTRING
*
pPapiVersion
,
profi_get_versions
(
OUT
CSTRING
*
pPapiVersion
,
OUT
CSTRING
*
pFirmwareVersion
)
OUT
CSTRING
*
pFirmwareVersion
)
/*----------------------------------------------------------------------------
/*----------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
FUNCTIONAL_DESCRIPTION
...
@@ -604,8 +558,8 @@ FUNCTION extern INT16 CALL_CONV profi_get_versions(
...
@@ -604,8 +558,8 @@ FUNCTION extern INT16 CALL_CONV profi_get_versions(
-----------------------------------------------------------------------------*/
-----------------------------------------------------------------------------*/
;
;
FUNCTION
extern
INT16
CALL_CONV
profi_get_serial_device_number
(
FUNCTION
extern
INT16
CALL_CONV
IN
T_PROFI_DEVICE_HANDLE
*
hDevice
,
OUT
USIGN32
*
pSerialDeviceNumber
)
profi_get_serial_device_number
(
OUT
USIGN32
*
pSerialDeviceNumber
)
/*----------------------------------------------------------------------------
/*----------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
FUNCTIONAL_DESCRIPTION
...
@@ -686,7 +640,9 @@ FUNCTION extern HANDLE CALL_CONV profi_open_basic_management(
...
@@ -686,7 +640,9 @@ FUNCTION extern HANDLE CALL_CONV profi_open_basic_management(
;
;
FUNCTION
extern
HANDLE
CALL_CONV
profi_open
(
IN
HANDLE
hBasicMgmtDevice
,
FUNCTION
extern
HANDLE
CALL_CONV
profi_open
(
IN
HANDLE
hBasicMgmtDevice
,
IN
INT32
DeviceType
,
IN
USIGN32
Index
,
IN
INT32
DesiredAccess
)
IN
INT32
DeviceType
,
IN
USIGN32
Index
,
IN
INT32
DesiredAccess
)
/*----------------------------------------------------------------------------
/*----------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
FUNCTIONAL_DESCRIPTION
...
@@ -737,9 +693,9 @@ FUNCTION extern BOOL CALL_CONV profi_close(IN HANDLE hDevice)
...
@@ -737,9 +693,9 @@ FUNCTION extern BOOL CALL_CONV profi_close(IN HANDLE hDevice)
-----------------------------------------------------------------------------*/
-----------------------------------------------------------------------------*/
;
;
FUNCTION
extern
INT16
CALL_CONV
profi_read_service
(
IN
HANDLE
hDevice
,
FUNCTION
extern
INT16
CALL_CONV
OUT
T_PROFI_SERVICE_DESCR
*
pSdb
,
OUT
VOID
*
pData
,
profi_read_service
(
IN
HANDLE
hDevice
,
OUT
T_PROFI_SERVICE_DESCR
*
pSdb
,
INOUT
USIGN16
*
pDataLength
)
OUT
VOID
*
pData
,
INOUT
USIGN16
*
pDataLength
)
/*----------------------------------------------------------------------------
/*----------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
FUNCTIONAL_DESCRIPTION
...
@@ -840,8 +796,9 @@ FUNCTION extern INT16 CALL_CONV profi_read_multi(
...
@@ -840,8 +796,9 @@ FUNCTION extern INT16 CALL_CONV profi_read_multi(
-----------------------------------------------------------------------------*/
-----------------------------------------------------------------------------*/
;
;
FUNCTION
extern
INT16
CALL_CONV
profi_read_data
(
FUNCTION
extern
INT16
CALL_CONV
profi_read_data
(
IN
HANDLE
hDevice
,
IN
HANDLE
hDevice
,
OUT
VOID
*
pData
,
OUT
USIGN16
*
pDataLength
)
OUT
VOID
*
pData
,
OUT
USIGN16
*
pDataLength
)
/*----------------------------------------------------------------------------
/*----------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
FUNCTIONAL_DESCRIPTION
...
@@ -867,8 +824,9 @@ FUNCTION extern INT16 CALL_CONV profi_read_data(
...
@@ -867,8 +824,9 @@ FUNCTION extern INT16 CALL_CONV profi_read_data(
-----------------------------------------------------------------------------*/
-----------------------------------------------------------------------------*/
;
;
FUNCTION
extern
INT16
CALL_CONV
profi_write_data
(
FUNCTION
extern
INT16
CALL_CONV
profi_write_data
(
IN
HANDLE
hDevice
,
IN
HANDLE
hDevice
,
IN
VOID
*
pData
,
IN
USIGN16
DataLength
)
IN
VOID
*
pData
,
IN
USIGN16
DataLength
)
/*----------------------------------------------------------------------------
/*----------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
FUNCTIONAL_DESCRIPTION
...
@@ -894,7 +852,9 @@ FUNCTION extern INT16 CALL_CONV profi_write_data(
...
@@ -894,7 +852,9 @@ FUNCTION extern INT16 CALL_CONV profi_write_data(
;
;
FUNCTION
extern
INT16
CALL_CONV
profi_read_dps_data
(
IN
HANDLE
hDevice
,
FUNCTION
extern
INT16
CALL_CONV
profi_read_dps_data
(
IN
HANDLE
hDevice
,
OUT
USIGN8
*
pData
,
INOUT
USIGN8
*
pDataLength
,
OUT
USIGN8
*
pState
)
OUT
USIGN8
*
pData
,
INOUT
USIGN8
*
pDataLength
,
OUT
USIGN8
*
pState
)
/*----------------------------------------------------------------------------
/*----------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
FUNCTIONAL_DESCRIPTION
...
@@ -922,7 +882,9 @@ FUNCTION extern INT16 CALL_CONV profi_read_dps_data(IN HANDLE hDevice,
...
@@ -922,7 +882,9 @@ FUNCTION extern INT16 CALL_CONV profi_read_dps_data(IN HANDLE hDevice,
;
;
FUNCTION
extern
INT16
CALL_CONV
profi_write_dps_data
(
IN
HANDLE
hDevice
,
FUNCTION
extern
INT16
CALL_CONV
profi_write_dps_data
(
IN
HANDLE
hDevice
,
IN
USIGN8
*
pData
,
IN
USIGN8
DataLength
,
OUT
USIGN8
*
pState
)
IN
USIGN8
*
pData
,
IN
USIGN8
DataLength
,
OUT
USIGN8
*
pState
)
/*-----------------------------------------------------------------------------
/*-----------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
FUNCTIONAL_DESCRIPTION
...
@@ -944,8 +906,9 @@ FUNCTION extern INT16 CALL_CONV profi_write_dps_data(IN HANDLE hDevice,
...
@@ -944,8 +906,9 @@ FUNCTION extern INT16 CALL_CONV profi_write_dps_data(IN HANDLE hDevice,
-----------------------------------------------------------------------------*/
-----------------------------------------------------------------------------*/
;
;
FUNCTION
extern
BOOL
CALL_CONV
profi_get_cntrl_info
(
IN
USIGN8
Board
,
FUNCTION
extern
BOOL
CALL_CONV
OUT
char
*
pFirmwareVersion
,
OUT
USIGN32
*
pSerialDeviceNumber
)
profi_get_cntrl_info
(
IN
USIGN8
Board
,
OUT
char
*
pFirmwareVersion
,
OUT
USIGN32
*
pSerialDeviceNumber
)
/*----------------------------------------------------------------------------
/*----------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
FUNCTIONAL_DESCRIPTION
...
@@ -967,8 +930,9 @@ FUNCTION extern BOOL CALL_CONV profi_get_cntrl_info(IN USIGN8 Board,
...
@@ -967,8 +930,9 @@ FUNCTION extern BOOL CALL_CONV profi_get_cntrl_info(IN USIGN8 Board,
-----------------------------------------------------------------------------*/
-----------------------------------------------------------------------------*/
;
;
FUNCTION
extern
BOOL
CALL_CONV
profi_set_timeout
(
FUNCTION
extern
BOOL
CALL_CONV
profi_set_timeout
(
IN
HANDLE
hBasicMgmtDevice
,
IN
HANDLE
hBasicMgmtDevice
,
IN
USIGN32
ReadTimeout
,
IN
USIGN32
WriteTimeout
)
IN
USIGN32
ReadTimeout
,
IN
USIGN32
WriteTimeout
)
/*----------------------------------------------------------------------------
/*----------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
FUNCTIONAL_DESCRIPTION
...
@@ -990,7 +954,8 @@ FUNCTION extern BOOL CALL_CONV profi_set_timeout(
...
@@ -990,7 +954,8 @@ FUNCTION extern BOOL CALL_CONV profi_set_timeout(
;
;
FUNCTION
extern
BOOL
CALL_CONV
profi_get_timeout
(
IN
HANDLE
hBasicMgmtDevice
,
FUNCTION
extern
BOOL
CALL_CONV
profi_get_timeout
(
IN
HANDLE
hBasicMgmtDevice
,
OUT
USIGN32
*
pReadTimeout
,
OUT
USIGN32
*
pWriteTimeout
)
OUT
USIGN32
*
pReadTimeout
,
OUT
USIGN32
*
pWriteTimeout
)
/*----------------------------------------------------------------------------
/*----------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
FUNCTIONAL_DESCRIPTION
...
@@ -1011,8 +976,8 @@ FUNCTION extern BOOL CALL_CONV profi_get_timeout(IN HANDLE hBasicMgmtDevice,
...
@@ -1011,8 +976,8 @@ FUNCTION extern BOOL CALL_CONV profi_get_timeout(IN HANDLE hBasicMgmtDevice,
-----------------------------------------------------------------------------*/
-----------------------------------------------------------------------------*/
;
;
FUNCTION
extern
BOOL
CALL_CONV
profi_set_queue_size
(
FUNCTION
extern
BOOL
CALL_CONV
profi_set_queue_size
(
IN
HANDLE
hBasicMgmtDevice
,
IN
HANDLE
hBasicMgmtDevice
,
IN
USIGN32
QueueSize
)
IN
USIGN32
QueueSize
)
/*----------------------------------------------------------------------------
/*----------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
FUNCTIONAL_DESCRIPTION
...
@@ -1029,8 +994,8 @@ FUNCTION extern BOOL CALL_CONV profi_set_queue_size(
...
@@ -1029,8 +994,8 @@ FUNCTION extern BOOL CALL_CONV profi_set_queue_size(
-----------------------------------------------------------------------------*/
-----------------------------------------------------------------------------*/
;
;
FUNCTION
extern
BOOL
CALL_CONV
profi_get_queue_size
(
FUNCTION
extern
BOOL
CALL_CONV
profi_get_queue_size
(
IN
HANDLE
hBasicMgmtDevice
,
IN
HANDLE
hBasicMgmtDevice
,
OUT
USIGN32
*
pQueueSize
)
OUT
USIGN32
*
pQueueSize
)
/*----------------------------------------------------------------------------
/*----------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
FUNCTIONAL_DESCRIPTION
...
@@ -1047,8 +1012,8 @@ FUNCTION extern BOOL CALL_CONV profi_get_queue_size(
...
@@ -1047,8 +1012,8 @@ FUNCTION extern BOOL CALL_CONV profi_get_queue_size(
-----------------------------------------------------------------------------*/
-----------------------------------------------------------------------------*/
;
;
FUNCTION
extern
BOOL
CALL_CONV
profi_get_overrun_count
(
FUNCTION
extern
BOOL
CALL_CONV
IN
HANDLE
hBasicMgmtDevice
,
OUT
USIGN32
*
pOverrunCount
)
profi_get_overrun_count
(
IN
HANDLE
hBasicMgmtDevice
,
OUT
USIGN32
*
pOverrunCount
)
/*----------------------------------------------------------------------------
/*----------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
FUNCTIONAL_DESCRIPTION
...
...
profibus/lib/rt/src/pb_ioctl.h
View file @
ce758cd3
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2019 SSAB EMEA AB.
*
* This file is part of ProviewR.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 2 of
* the License, or (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with ProviewR. If not, see <http://www.gnu.org/licenses/>
*
* Linking ProviewR statically or dynamically with other modules is
* making a combined work based on ProviewR. Thus, the terms and
* conditions of the GNU General Public License cover the whole
* combination.
*
* In addition, as a special exception, the copyright holders of
* ProviewR give you permission to, from the build function in the
* ProviewR Configurator, combine ProviewR with modules generated by the
* ProviewR PLC Editor to a PLC program, regardless of the license
* terms of these modules. You may copy and distribute the resulting
* combined work under the terms of your choice, provided that every
* copy of the combined work is accompanied by a complete copy of
* the source code of ProviewR (the version used to produce the
* combined work), being distributed under the terms of the GNU
* General Public License plus this exception.
*/
/*****************************************************************************/
/*****************************************************************************/
/* */
/* */
/*
SOFTING AG
*/
/*
SOFTING Industrial Automation GmbH
*/
/* Richard-Reitzner-Allee 6 */
/* Richard-Reitzner-Allee 6 */
/* D-85540 Haar */
/* D-85540 Haar */
/* Phone: (++49)-(0)89-45656-0 */
/* Phone: (++49)-(0)89-45656-0 */
/* Fax: (++49)-(0)89-45656-399 */
/* Fax: (++49)-(0)89-45656-399 */
/* */
/* */
/*
Copyright (C) SOFTING AG 1995-2003
*/
/*
Copyright (C) SOFTING Industrial Automation GmbH 1995-2012
*/
/* All Rights Reserved */
/* All Rights Reserved */
/* */
/* */
/*****************************************************************************/
/*****************************************************************************/
/*****************************************************************************/
/*****************************************************************************/
/*
PROFIBUS WINDOWS NT DRIVERS
*/
/*
PROFIBUS LINUX DRIVERS
*/
/* */
/* */
/* Filename : PB_IOCTL.H */
/* Filename : PB_IOCTL.H */
/* Version : 5.
26.0.01
.release */
/* Version : 5.
45.0.00
.release */
/* Date :
30-April-2003
*/
/* Date :
December-2009
*/
/* Author : SOFTING
AG
*/
/* Author : SOFTING
*/
/* */
/* */
/* Description : This file contains the global declarations */
/* Description : This file contains the global declarations */
/* to access the PROFIBUS Drivers for Linux */
/* to access the PROFIBUS Drivers for Linux */
...
@@ -77,33 +42,43 @@
...
@@ -77,33 +42,43 @@
#define IOCTL_PROFI_SET_DEBUGLEVEL 0x6909
#define IOCTL_PROFI_SET_DEBUGLEVEL 0x6909
#ifdef __KERNEL__
#ifdef __KERNEL__
extern
int
pb_ioctl
(
struct
inode
*
inode
,
struct
file
*
file
,
unsigned
int
cmd
,
#if LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 32)
long
pb_ioctl
(
struct
file
*
file
,
unsigned
int
cmd
,
unsigned
long
arg
);
#else
int
pb_ioctl
(
struct
inode
*
inode
,
struct
file
*
file
,
unsigned
int
cmd
,
unsigned
long
arg
);
unsigned
long
arg
);
#endif
#endif
#endif
/*****************************************************************************/
/*****************************************************************************/
/* Structure for data image description */
/* Structure for data image description */
/*****************************************************************************/
/*****************************************************************************/
typedef
struct
_StatusAndData
{
// #pragma pack(push,1)
typedef
struct
_StatusAndData
{
void
*
StatusImage
;
void
*
StatusImage
;
int
StatusLength
;
__s32
StatusLength
;
void
*
Data
;
void
*
Data
;
int
DataLength
;
__s32
DataLength
;
}
StatusAndData
;
}
__attribute__
((
aligned
(
8
)))
StatusAndData
;
typedef
struct
_NTIoctl
{
typedef
struct
_NTIoctl
{
void
*
InBuf
;
void
*
InBuf
;
int
InBufLength
;
__s32
InBufLength
;
void
*
OutBuf
;
void
*
OutBuf
;
int
OutBufLength
;
__s32
OutBufLength
;
}
NTIoctl
;
}
__attribute__
((
aligned
(
8
)))
NTIoctl
;
typedef
struct
_DataImage
{
typedef
struct
_DataImage
int
id
;
{
__s32
id
;
void
*
Buf
;
void
*
Buf
;
unsigned
short
Length
;
// sizeof( Buf )
__u16
Length
;
// sizeof( Buf )
}
DataImage
;
}
__attribute__
((
aligned
(
8
)))
DataImage
;
// #pragma pack(pop)
/*****************************************************************************/
/*****************************************************************************/
/* Operation Mode as (FMS/DPV1-Master or DP-Slave) */
/* Operation Mode as (FMS/DPV1-Master or DP-Slave) */
...
...
profibus/lib/rt/src/pb_ntdrv.h
View file @
ce758cd3
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2019 SSAB EMEA AB.
*
* This file is part of ProviewR.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 2 of
* the License, or (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with ProviewR. If not, see <http://www.gnu.org/licenses/>
*
* Linking ProviewR statically or dynamically with other modules is
* making a combined work based on ProviewR. Thus, the terms and
* conditions of the GNU General Public License cover the whole
* combination.
*
* In addition, as a special exception, the copyright holders of
* ProviewR give you permission to, from the build function in the
* ProviewR Configurator, combine ProviewR with modules generated by the
* ProviewR PLC Editor to a PLC program, regardless of the license
* terms of these modules. You may copy and distribute the resulting
* combined work under the terms of your choice, provided that every
* copy of the combined work is accompanied by a complete copy of
* the source code of ProviewR (the version used to produce the
* combined work), being distributed under the terms of the GNU
* General Public License plus this exception.
*/
/*****************************************************************************/
/*****************************************************************************/
/* */
/* */
/*
SOFTING AG
*/
/*
SOFTING Industrial Automation GmbH
*/
/* Richard-Reitzner-Allee 6 */
/* Richard-Reitzner-Allee 6 */
/* D-85540 Haar */
/* D-85540 Haar */
/* Phone: (++49)-(0)89-45656-0 */
/* Phone: (++49)-(0)89-45656-0 */
/* Fax: (++49)-(0)89-45656-399 */
/* Fax: (++49)-(0)89-45656-399 */
/* */
/* */
/*
Copyright (C) SOFTING AG 1995-2003
*/
/*
Copyright (C) SOFTING Industrial Automation GmbH 1995-2012
*/
/* All Rights Reserved */
/* All Rights Reserved */
/* */
/* */
/*****************************************************************************/
/*****************************************************************************/
/*****************************************************************************/
/*****************************************************************************/
/*
PROFIBUS WINDOWS NT DRIVERS
*/
/*
PROFIBUS LINUX DRIVERS
*/
/* */
/* */
/* Filename : PB_NTDRV.H */
/* Filename : PB_NTDRV.H */
/* Version : 5.
26.0.01
.release */
/* Version : 5.
45.0.00
.release */
/* Date :
30-April-2003
*/
/* Date :
December-2009
*/
/* Author : SOFTING
AG
*/
/* Author : SOFTING
*/
/* */
/* */
/* Description : This file contains the global declarations */
/* Description : This file contains the global declarations */
/* to access the PROFIBUS Drivers for
Windows NT
*/
/* to access the PROFIBUS Drivers for
Linux
*/
/* */
/* */
/*****************************************************************************/
/*****************************************************************************/
...
@@ -72,66 +37,66 @@
...
@@ -72,66 +37,66 @@
#define FILE_DEVICE_PROFIBOARD 0x8000
#define FILE_DEVICE_PROFIBOARD 0x8000
#define IOCTL_PROFI_CREATE_DP_MANAGEMENT \
#define IOCTL_PROFI_CREATE_DP_MANAGEMENT \
(ULONG) CTL_CODE(
\
(ULONG) CTL_CODE(
FILE_DEVICE_PROFIBOARD, 0x800, METHOD_BUFFERED,
\
FILE_DEVICE_PROFIBOARD, 0x800, METHOD_BUFFERED,
FILE_ANY_ACCESS)
FILE_ANY_ACCESS)
#define IOCTL_PROFI_CREATE_DP_SERVICE \
#define IOCTL_PROFI_CREATE_DP_SERVICE \
(ULONG) CTL_CODE(
\
(ULONG) CTL_CODE(
FILE_DEVICE_PROFIBOARD, 0x801, METHOD_BUFFERED,
\
FILE_DEVICE_PROFIBOARD, 0x801, METHOD_BUFFERED,
FILE_ANY_ACCESS)
FILE_ANY_ACCESS)
#define IOCTL_PROFI_CREATE_DP_SLAVE_DATA \
#define IOCTL_PROFI_CREATE_DP_SLAVE_DATA \
(ULONG) CTL_CODE(
\
(ULONG) CTL_CODE(
FILE_DEVICE_PROFIBOARD, 0x802, METHOD_BUFFERED,
\
FILE_DEVICE_PROFIBOARD, 0x802, METHOD_BUFFERED,
FILE_ANY_ACCESS)
FILE_ANY_ACCESS)
#define IOCTL_PROFI_CREATE_FDL_MANAGEMENT \
#define IOCTL_PROFI_CREATE_FDL_MANAGEMENT \
(ULONG) CTL_CODE(
\
(ULONG) CTL_CODE(
FILE_DEVICE_PROFIBOARD, 0x803, METHOD_BUFFERED,
\
FILE_DEVICE_PROFIBOARD, 0x803, METHOD_BUFFERED,
FILE_ANY_ACCESS)
FILE_ANY_ACCESS)
#define IOCTL_PROFI_CREATE_FDL_SAP \
#define IOCTL_PROFI_CREATE_FDL_SAP \
(ULONG) CTL_CODE(
\
(ULONG) CTL_CODE(
FILE_DEVICE_PROFIBOARD, 0x804, METHOD_BUFFERED,
\
FILE_DEVICE_PROFIBOARD, 0x804, METHOD_BUFFERED,
FILE_ANY_ACCESS)
FILE_ANY_ACCESS)
#define IOCTL_PROFI_CREATE_FMS_MANAGEMENT \
#define IOCTL_PROFI_CREATE_FMS_MANAGEMENT \
(ULONG) CTL_CODE(
\
(ULONG) CTL_CODE(
FILE_DEVICE_PROFIBOARD, 0x805, METHOD_BUFFERED,
\
FILE_DEVICE_PROFIBOARD, 0x805, METHOD_BUFFERED,
FILE_ANY_ACCESS)
FILE_ANY_ACCESS)
#define IOCTL_PROFI_CREATE_FMS_CR \
#define IOCTL_PROFI_CREATE_FMS_CR \
(ULONG) CTL_CODE(
\
(ULONG) CTL_CODE(
FILE_DEVICE_PROFIBOARD, 0x806, METHOD_BUFFERED,
\
FILE_DEVICE_PROFIBOARD, 0x806, METHOD_BUFFERED,
FILE_ANY_ACCESS)
FILE_ANY_ACCESS)
#define IOCTL_PROFI_CREATE_DP_MSAC \
#define IOCTL_PROFI_CREATE_DP_MSAC \
(ULONG) CTL_CODE(
\
(ULONG) CTL_CODE(
FILE_DEVICE_PROFIBOARD, 0x80e, METHOD_BUFFERED,
\
FILE_DEVICE_PROFIBOARD, 0x80e, METHOD_BUFFERED,
FILE_ANY_ACCESS)
FILE_ANY_ACCESS)
#define IOCTL_PROFI_SET_TIMEOUT \
#define IOCTL_PROFI_SET_TIMEOUT \
(ULONG) CTL_CODE(
\
(ULONG) CTL_CODE(
FILE_DEVICE_PROFIBOARD, 0x808, METHOD_BUFFERED,
\
FILE_DEVICE_PROFIBOARD, 0x808, METHOD_BUFFERED,
FILE_READ_ACCESS)
FILE_READ_ACCESS)
#define IOCTL_PROFI_GET_TIMEOUT \
#define IOCTL_PROFI_GET_TIMEOUT \
(ULONG) CTL_CODE(
\
(ULONG) CTL_CODE(
FILE_DEVICE_PROFIBOARD, 0x809, METHOD_BUFFERED,
\
FILE_DEVICE_PROFIBOARD, 0x809, METHOD_BUFFERED,
FILE_ANY_ACCESS)
FILE_ANY_ACCESS)
#define IOCTL_PROFI_SET_QUEUE_SIZE \
#define IOCTL_PROFI_SET_QUEUE_SIZE \
(ULONG) CTL_CODE(
\
(ULONG) CTL_CODE(
FILE_DEVICE_PROFIBOARD, 0x80a, METHOD_BUFFERED,
\
FILE_DEVICE_PROFIBOARD, 0x80a, METHOD_BUFFERED,
FILE_ANY_ACCESS)
FILE_ANY_ACCESS)
#define IOCTL_PROFI_GET_QUEUE_SIZE \
#define IOCTL_PROFI_GET_QUEUE_SIZE \
(ULONG) CTL_CODE(
\
(ULONG) CTL_CODE(
FILE_DEVICE_PROFIBOARD, 0x80b, METHOD_BUFFERED,
\
FILE_DEVICE_PROFIBOARD, 0x80b, METHOD_BUFFERED,
FILE_ANY_ACCESS)
FILE_ANY_ACCESS)
#define IOCTL_PROFI_GET_OVERRUN_COUNT \
#define IOCTL_PROFI_GET_OVERRUN_COUNT \
(ULONG) CTL_CODE(
\
(ULONG) CTL_CODE(
FILE_DEVICE_PROFIBOARD, 0x80c, METHOD_BUFFERED,
\
FILE_DEVICE_PROFIBOARD, 0x80c, METHOD_BUFFERED,
FILE_ANY_ACCESS)
FILE_ANY_ACCESS)
#define IOCTL_PROFI_READ_MULTI \
#define IOCTL_PROFI_READ_MULTI \
(ULONG) CTL_CODE(
\
(ULONG) CTL_CODE(
FILE_DEVICE_PROFIBOARD, 0x80d, METHOD_BUFFERED,
\
FILE_DEVICE_PROFIBOARD, 0x80d, METHOD_BUFFERED,
FILE_ANY_ACCESS)
FILE_ANY_ACCESS)
#define IOCTL_PROFI_GET_DATA_IMAGE \
#define IOCTL_PROFI_GET_DATA_IMAGE \
(ULONG) CTL_CODE(
\
(ULONG) CTL_CODE(
FILE_DEVICE_PROFIBOARD, 0x80f, METHOD_BUFFERED,
\
FILE_DEVICE_PROFIBOARD, 0x80f, METHOD_BUFFERED,
FILE_ANY_ACCESS)
FILE_ANY_ACCESS)
#define IOCTL_PROFI_SET_DPS_DATA \
#define IOCTL_PROFI_SET_DPS_DATA \
(ULONG) CTL_CODE(
\
(ULONG) CTL_CODE(
FILE_DEVICE_PROFIBOARD, 0x810, METHOD_IN_DIRECT,
\
FILE_DEVICE_PROFIBOARD, 0x810, METHOD_IN_DIRECT,
FILE_ANY_ACCESS)
FILE_ANY_ACCESS)
#define IOCTL_PROFI_SET_DP_BITS \
#define IOCTL_PROFI_SET_DP_BITS \
(ULONG) CTL_CODE(
\
(ULONG) CTL_CODE(
FILE_DEVICE_PROFIBOARD, 0x811, METHOD_BUFFERED,
\
FILE_DEVICE_PROFIBOARD, 0x811, METHOD_BUFFERED,
FILE_WRITE_ACCESS)
FILE_WRITE_ACCESS)
#define IOCTL_PROFI_CLEAR_DP_BITS \
#define IOCTL_PROFI_CLEAR_DP_BITS \
(ULONG) CTL_CODE(
\
(ULONG) CTL_CODE(
FILE_DEVICE_PROFIBOARD, 0x812, METHOD_BUFFERED,
\
FILE_DEVICE_PROFIBOARD, 0x812, METHOD_BUFFERED,
FILE_WRITE_ACCESS)
FILE_WRITE_ACCESS)
#define IOCTL_PROFI_CHECK_DEV_CONN \
#define IOCTL_PROFI_CHECK_DEV_CONN \
(ULONG) CTL_CODE(
\
(ULONG) CTL_CODE(
FILE_DEVICE_PROFIBOARD, 0x813, METHOD_BUFFERED,
\
FILE_DEVICE_PROFIBOARD, 0x813, METHOD_BUFFERED,
FILE_ANY_ACCESS)
FILE_ANY_ACCESS)
/*****************************************************************************/
/*****************************************************************************/
/* Macros to access for PROFIBUS specific error codes */
/* Macros to access for PROFIBUS specific error codes */
...
@@ -153,7 +118,8 @@
...
@@ -153,7 +118,8 @@
#define WAIT_FOREVER ((ULONG)-1)
#define WAIT_FOREVER ((ULONG)-1)
typedef
struct
_PROFI_TIMEOUT
{
typedef
struct
_PROFI_TIMEOUT
{
ULONG
TimeoutRead
;
ULONG
TimeoutRead
;
ULONG
TimeoutWrite
;
ULONG
TimeoutWrite
;
}
PROFI_TIMEOUT
,
T_PROFI_TIMEOUT
;
}
PROFI_TIMEOUT
,
T_PROFI_TIMEOUT
;
...
@@ -162,7 +128,8 @@ typedef struct _PROFI_TIMEOUT {
...
@@ -162,7 +128,8 @@ typedef struct _PROFI_TIMEOUT {
/* Structure for data image description */
/* Structure for data image description */
/*****************************************************************************/
/*****************************************************************************/
typedef
struct
_PROFI_DATA_IMAGE_DESCR
{
typedef
struct
_PROFI_DATA_IMAGE_DESCR
{
UCHAR
imageId
;
UCHAR
imageId
;
USHORT
offset
;
USHORT
offset
;
UCHAR
bus
;
UCHAR
bus
;
...
@@ -172,7 +139,8 @@ typedef struct _PROFI_DATA_IMAGE_DESCR {
...
@@ -172,7 +139,8 @@ typedef struct _PROFI_DATA_IMAGE_DESCR {
/* Structure for bit access in DP output data */
/* Structure for bit access in DP output data */
/*****************************************************************************/
/*****************************************************************************/
typedef
struct
_PROFI_DP_BIT_ACCESS
{
typedef
struct
_PROFI_DP_BIT_ACCESS
{
USHORT
offset
;
USHORT
offset
;
UCHAR
mask
;
UCHAR
mask
;
}
PROFI_DP_BIT_ACCESS
,
T_PROFI_DP_BIT_ACCESS
;
}
PROFI_DP_BIT_ACCESS
,
T_PROFI_DP_BIT_ACCESS
;
...
...
profibus/lib/rt/src/pb_tools.h
View file @
ce758cd3
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2019 SSAB EMEA AB.
*
* This file is part of ProviewR.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 2 of
* the License, or (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with ProviewR. If not, see <http://www.gnu.org/licenses/>
*
* Linking ProviewR statically or dynamically with other modules is
* making a combined work based on ProviewR. Thus, the terms and
* conditions of the GNU General Public License cover the whole
* combination.
*
* In addition, as a special exception, the copyright holders of
* ProviewR give you permission to, from the build function in the
* ProviewR Configurator, combine ProviewR with modules generated by the
* ProviewR PLC Editor to a PLC program, regardless of the license
* terms of these modules. You may copy and distribute the resulting
* combined work under the terms of your choice, provided that every
* copy of the combined work is accompanied by a complete copy of
* the source code of ProviewR (the version used to produce the
* combined work), being distributed under the terms of the GNU
* General Public License plus this exception.
*/
/*****************************************************************************/
/*****************************************************************************/
/* */
/* */
/*
SOFTING AG
*/
/*
SOFTING Industrial Automation GmbH
*/
/* Richard-Reitzner-Allee 6 */
/* Richard-Reitzner-Allee 6 */
/* D-85540 Haar */
/* D-85540 Haar */
/* Phone: (++49)-(0)89-45656-0 */
/* Phone: (++49)-(0)89-45656-0 */
/* Fax: (++49)-(0)89-45656-399 */
/* Fax: (++49)-(0)89-45656-399 */
/* */
/* */
/*
Copyright (C) SOFTING AG 1995-2003
*/
/*
Copyright (C) SOFTING Industrial Automation GmbH 1995-2012
*/
/* All Rights Reserved */
/* All Rights Reserved */
/* */
/* */
/*****************************************************************************/
/*****************************************************************************/
...
@@ -50,8 +15,8 @@
...
@@ -50,8 +15,8 @@
/* */
/* */
/* Filename : PB_TOOLS.H */
/* Filename : PB_TOOLS.H */
/* Version : 5.21.0.00.release */
/* Version : 5.21.0.00.release */
/* Date :
27-February-1998
*/
/* Date :
February-1998
*/
/* Author : SOFTING
AG
*/
/* Author : SOFTING
*/
/* */
/* */
/* Description : This file contains the global function declarations, */
/* Description : This file contains the global function declarations, */
/* defines and types of the PROFIBUS-TOOLS-Interface */
/* defines and types of the PROFIBUS-TOOLS-Interface */
...
@@ -79,8 +44,8 @@ extern "C" {
...
@@ -79,8 +44,8 @@ extern "C" {
/*----- function prototypes to get default busparameters -------------------*/
/*----- function prototypes to get default busparameters -------------------*/
#ifdef __PB_DP__
#ifdef __PB_DP__
FUNCTION
extern
PB_BOOL
CALL_CONV
pbt_get_dp_def_bus_param
(
IN
USIGN8
BaudRate
,
FUNCTION
extern
PB_BOOL
CALL_CONV
pbt_get_dp_def_bus_param
(
IN
USIGN8
StationAddr
,
IN
USIGN16
Mode
,
IN
USIGN8
BaudRate
,
IN
USIGN8
StationAddr
,
IN
USIGN16
Mode
,
OUT
T_DP_BUS_PARA_SET
FAR
*
pBusParameters
)
OUT
T_DP_BUS_PARA_SET
FAR
*
pBusParameters
)
/*----------------------------------------------------------------------------
/*----------------------------------------------------------------------------
...
@@ -158,9 +123,9 @@ FUNCTION extern PB_BOOL CALL_CONV pbt_get_fdlif_def_bus_param(
...
@@ -158,9 +123,9 @@ FUNCTION extern PB_BOOL CALL_CONV pbt_get_fdlif_def_bus_param(
#endif
#endif
#ifdef __PB_FMB__
#ifdef __PB_FMB__
FUNCTION
extern
PB_BOOL
CALL_CONV
pbt_get_fmb_def_bus_param
(
IN
USIGN8
BaudRate
,
FUNCTION
extern
PB_BOOL
CALL_CONV
pbt_get_fmb_def_bus_param
(
IN
USIGN8
StationAddr
,
IN
PB_BOOL
InRingDesired
,
IN
USIGN16
Mode
,
IN
USIGN8
BaudRate
,
IN
USIGN8
StationAddr
,
IN
PB_BOOL
InRingDesired
,
OUT
T_FMB_SET_BUSPARAMETER_REQ
FAR
*
pBusParameters
)
IN
USIGN16
Mode
,
OUT
T_FMB_SET_BUSPARAMETER_REQ
FAR
*
pBusParameters
)
/*----------------------------------------------------------------------------
/*----------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
FUNCTIONAL_DESCRIPTION
...
@@ -200,8 +165,9 @@ FUNCTION extern VOID CALL_CONV ccrl_resrces_init(IN T_CRL_HDR FAR* pCrlHdr)
...
@@ -200,8 +165,9 @@ FUNCTION extern VOID CALL_CONV ccrl_resrces_init(IN T_CRL_HDR FAR* pCrlHdr)
----------------------------------------------------------------------------*/
----------------------------------------------------------------------------*/
;
;
FUNCTION
extern
USIGN16
CALL_CONV
ccrl_resrces_add_entry
(
IN
USIGN16
Cr
,
FUNCTION
extern
USIGN16
CALL_CONV
IN
T_CRL_STATIC
FAR
*
pCrlStatic
,
OUT
T_FMB_CONFIG_CRL
FAR
*
pCrlConfig
)
ccrl_resrces_add_entry
(
IN
USIGN16
Cr
,
IN
T_CRL_STATIC
FAR
*
pCrlStatic
,
OUT
T_FMB_CONFIG_CRL
FAR
*
pCrlConfig
)
/*------------------------------------------------------------------------------
/*------------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
FUNCTIONAL_DESCRIPTION
...
...
profibus/lib/rt/src/pb_type.h
View file @
ce758cd3
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2019 SSAB EMEA AB.
*
* This file is part of ProviewR.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 2 of
* the License, or (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with ProviewR. If not, see <http://www.gnu.org/licenses/>
*
* Linking ProviewR statically or dynamically with other modules is
* making a combined work based on ProviewR. Thus, the terms and
* conditions of the GNU General Public License cover the whole
* combination.
*
* In addition, as a special exception, the copyright holders of
* ProviewR give you permission to, from the build function in the
* ProviewR Configurator, combine ProviewR with modules generated by the
* ProviewR PLC Editor to a PLC program, regardless of the license
* terms of these modules. You may copy and distribute the resulting
* combined work under the terms of your choice, provided that every
* copy of the combined work is accompanied by a complete copy of
* the source code of ProviewR (the version used to produce the
* combined work), being distributed under the terms of the GNU
* General Public License plus this exception.
*/
/*****************************************************************************/
/*****************************************************************************/
/* */
/* */
/*
SOFTING AG
*/
/*
SOFTING Industrial Automation GmbH
*/
/* Richard-Reitzner-Allee 6 */
/* Richard-Reitzner-Allee 6 */
/* D-85540 Haar */
/* D-85540 Haar */
/* Phone: (++49)-(0)89-45656-0 */
/* Phone: (++49)-(0)89-45656-0 */
/* Fax: (++49)-(0)89-45656-399 */
/* Fax: (++49)-(0)89-45656-399 */
/* */
/* */
/*
Copyright (C) SOFTING AG 1995-2003
*/
/*
Copyright (C) SOFTING Industrial Automation GmbH 1995-2012
*/
/* All Rights Reserved */
/* All Rights Reserved */
/* */
/* */
/*****************************************************************************/
/*****************************************************************************/
...
@@ -50,8 +15,8 @@
...
@@ -50,8 +15,8 @@
/* */
/* */
/* Filename : PB_TYPE.H */
/* Filename : PB_TYPE.H */
/* Version : 5.22.0.00.release */
/* Version : 5.22.0.00.release */
/* Date :
26-February-1999
*/
/* Date :
February-1999
*/
/* Author : SOFTING
AG
*/
/* Author : SOFTING
*/
/* */
/* */
/* Description : This file contains the PROFIBUS basic types */
/* Description : This file contains the PROFIBUS basic types */
/* */
/* */
...
@@ -60,6 +25,10 @@
...
@@ -60,6 +25,10 @@
#ifndef __PB_TYPE__
#ifndef __PB_TYPE__
#define __PB_TYPE__
#define __PB_TYPE__
#ifdef _LINUX
#include <linux/types.h>
#endif
#include "pb_conf.h"
/* PAPI configuration parameters */
#include "pb_conf.h"
/* PAPI configuration parameters */
#ifndef NULL
#ifndef NULL
...
@@ -84,7 +53,7 @@ typedef unsigned char PB_BOOL;
...
@@ -84,7 +53,7 @@ typedef unsigned char PB_BOOL;
typedef
unsigned
char
OCTET
;
typedef
unsigned
char
OCTET
;
typedef
unsigned
char
USIGN8
;
typedef
unsigned
char
USIGN8
;
typedef
unsigned
short
USIGN16
;
typedef
unsigned
short
USIGN16
;
typedef
unsigned
long
USIGN32
;
typedef
__u32
USIGN32
;
typedef
signed
char
INT8
;
typedef
signed
char
INT8
;
typedef
signed
short
INT16
;
typedef
signed
short
INT16
;
...
@@ -92,7 +61,7 @@ typedef signed short INT16;
...
@@ -92,7 +61,7 @@ typedef signed short INT16;
#ifdef WIN32
#ifdef WIN32
typedef
int
INT32
;
typedef
int
INT32
;
#else
#else
typedef
signed
long
INT32
;
typedef
__s32
INT32
;
#endif
#endif
#ifdef _LINUX
#ifdef _LINUX
...
...
profibus/wbl/mcomp/src/profibus.wb_load
View file @
ce758cd3
...
@@ -2150,13 +2150,15 @@ Volume Profibus $ClassVolume 0.0.250.7
...
@@ -2150,13 +2150,15 @@ Volume Profibus $ClassVolume 0.0.250.7
EndObject
EndObject
EndObject
EndObject
!/**
!/**
! @Author Claes Jurstrand
! @Author Claes Jurstrand
/Marcus Nordenberg
! @Version 1.
0
! @Version 1.
1
! @Group Profibus
! @Group Profibus
! @Summary Configurates a Profibus PCI master card (Softing profiboard)
! @Summary Configurates a Profibus PCI master card (Softing profiboard)
! Configurates a Profibus PCI master card (Softing Profiboard). Available on LynxOS and Linux.
! Configurates a Profibus PCI master card (Softing Profiboard). Available on LynxOS and Linux.
! The object should be named Px, where x is the number of the device, eg P1.
! The object should be named Px, where x is the number of the device, eg P1.
! You can have maximum two buses (master cards) on each system.
! You can have maximum two buses (master cards) on each system. The latest API from Softing
! can only handle one board per process. So you have to make sure to select PlcThread
! objects from different PlcProcess objects.
!*/
!*/
Object Pb_Profiboard $ClassDef 13 16-JAN-2006 09:46:40.51
Object Pb_Profiboard $ClassDef 13 16-JAN-2006 09:46:40.51
Body SysBody 16-JAN-2006 09:46:40.51
Body SysBody 16-JAN-2006 09:46:40.51
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment