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
df0831a3
Commit
df0831a3
authored
Jun 26, 2019
by
Marcus Nordenberg
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
format code
parent
ce758cd3
Changes
25
Show whitespace changes
Inline
Side-by-side
Showing
25 changed files
with
2612 additions
and
1933 deletions
+2612
-1933
profibus/lib/rt/src/cif_dev_i.h
profibus/lib/rt/src/cif_dev_i.h
+205
-165
profibus/lib/rt/src/cif_types.h
profibus/lib/rt/src/cif_types.h
+1
-1
profibus/lib/rt/src/cif_user.h
profibus/lib/rt/src/cif_user.h
+145
-114
profibus/lib/rt/src/rcs_user.h
profibus/lib/rt/src/rcs_user.h
+56
-50
profibus/lib/rt/src/rcsdef.h
profibus/lib/rt/src/rcsdef.h
+41
-41
profibus/lib/rt/src/rt_io_m_pb_ai.c
profibus/lib/rt/src/rt_io_m_pb_ai.c
+110
-74
profibus/lib/rt/src/rt_io_m_pb_ao.c
profibus/lib/rt/src/rt_io_m_pb_ao.c
+54
-31
profibus/lib/rt/src/rt_io_m_pb_di.c
profibus/lib/rt/src/rt_io_m_pb_di.c
+32
-21
profibus/lib/rt/src/rt_io_m_pb_do.c
profibus/lib/rt/src/rt_io_m_pb_do.c
+25
-18
profibus/lib/rt/src/rt_io_m_pb_dp_slave.c
profibus/lib/rt/src/rt_io_m_pb_dp_slave.c
+62
-41
profibus/lib/rt/src/rt_io_m_pb_fdl_datatransfer.c
profibus/lib/rt/src/rt_io_m_pb_fdl_datatransfer.c
+45
-32
profibus/lib/rt/src/rt_io_m_pb_fdl_sap.c
profibus/lib/rt/src/rt_io_m_pb_fdl_sap.c
+3
-2
profibus/lib/rt/src/rt_io_m_pb_hilscher.c
profibus/lib/rt/src/rt_io_m_pb_hilscher.c
+321
-212
profibus/lib/rt/src/rt_io_m_pb_ii.c
profibus/lib/rt/src/rt_io_m_pb_ii.c
+52
-26
profibus/lib/rt/src/rt_io_m_pb_io.c
profibus/lib/rt/src/rt_io_m_pb_io.c
+28
-17
profibus/lib/rt/src/rt_io_m_pb_module.c
profibus/lib/rt/src/rt_io_m_pb_module.c
+18
-15
profibus/lib/rt/src/rt_io_m_pb_profiboard.c
profibus/lib/rt/src/rt_io_m_pb_profiboard.c
+519
-406
profibus/lib/rt/src/rt_io_pb_locals.h
profibus/lib/rt/src/rt_io_pb_locals.h
+17
-11
profibus/lib/rt/src/rt_io_pn_locals.h
profibus/lib/rt/src/rt_io_pn_locals.h
+4
-2
profibus/lib/rt/src/rt_io_pnak_locals.h
profibus/lib/rt/src/rt_io_pnak_locals.h
+34
-45
profibus/lib/rt/src/rt_pn_gsdml_data.h
profibus/lib/rt/src/rt_pn_gsdml_data.h
+33
-50
profibus/lib/rt/src/rt_pn_iface.h
profibus/lib/rt/src/rt_pn_iface.h
+17
-17
profibus/lib/rt/src/rt_pnak.h
profibus/lib/rt/src/rt_pnak.h
+245
-190
profibus/lib/rt/src/rt_profinet.h
profibus/lib/rt/src/rt_profinet.h
+545
-317
profibus/lib/rt/src/version.h
profibus/lib/rt/src/version.h
+0
-35
No files found.
profibus/lib/rt/src/cif_dev_i.h
View file @
df0831a3
...
@@ -146,7 +146,8 @@ extern "C" {
...
@@ -146,7 +146,8 @@ extern "C" {
#endif
/* PACKED */
#endif
/* PACKED */
// max. length is 255 + 8 Bytes
// max. length is 255 + 8 Bytes
typedef
struct
tagMSG_STRUC
{
typedef
struct
tagMSG_STRUC
{
unsigned
char
rx
PACKED
;
unsigned
char
rx
PACKED
;
unsigned
char
tx
PACKED
;
unsigned
char
tx
PACKED
;
unsigned
char
ln
PACKED
;
unsigned
char
ln
PACKED
;
...
@@ -165,13 +166,15 @@ typedef struct tagMSG_STRUC {
...
@@ -165,13 +166,15 @@ typedef struct tagMSG_STRUC {
/* ------------------------------------------------------------------------------------
/* ------------------------------------------------------------------------------------
*/
*/
typedef
struct
tagIOINFO
{
typedef
struct
tagIOINFO
{
unsigned
char
bComBit
PACKED
;
unsigned
char
bComBit
PACKED
;
unsigned
char
bIOExchangeMode
PACKED
;
unsigned
char
bIOExchangeMode
PACKED
;
unsigned
int
ulIOExchangeCnt
PACKED
;
unsigned
int
ulIOExchangeCnt
PACKED
;
}
IOINFO
;
}
IOINFO
;
typedef
struct
tagVERSIONINFO
{
/* DEV serial number and OS versions */
typedef
struct
tagVERSIONINFO
{
/* DEV serial number and OS versions */
unsigned
int
ulDate
PACKED
PACKED
;
unsigned
int
ulDate
PACKED
PACKED
;
unsigned
int
ulDeviceNo
PACKED
;
unsigned
int
ulDeviceNo
PACKED
;
unsigned
int
ulSerialNo
PACKED
;
unsigned
int
ulSerialNo
PACKED
;
...
@@ -182,25 +185,31 @@ typedef struct tagVERSIONINFO { /* DEV serial number and OS versions */
...
@@ -182,25 +185,31 @@ typedef struct tagVERSIONINFO { /* DEV serial number and OS versions */
unsigned
char
OemIdentifier
[
4
]
PACKED
;
unsigned
char
OemIdentifier
[
4
]
PACKED
;
}
VERSIONINFO
;
}
VERSIONINFO
;
typedef
struct
tagFIRMWAREINFO
{
typedef
struct
tagFIRMWAREINFO
{
unsigned
char
FirmwareName
[
16
]
PACKED
;
unsigned
char
FirmwareName
[
16
]
PACKED
;
unsigned
char
FirmwareVersion
[
16
]
PACKED
;
unsigned
char
FirmwareVersion
[
16
]
PACKED
;
}
FIRMWAREINFO
;
}
FIRMWAREINFO
;
typedef
struct
tagTASKSTATE
{
typedef
struct
tagTASKSTATE
{
unsigned
char
TaskState
[
64
]
PACKED
;
unsigned
char
TaskState
[
64
]
PACKED
;
}
TASKSTATE
;
}
TASKSTATE
;
typedef
struct
tagTASKPARAM
{
typedef
struct
tagTASKPARAM
{
unsigned
char
TaskParameter
[
64
]
PACKED
;
unsigned
char
TaskParameter
[
64
]
PACKED
;
}
TASKPARAM
;
}
TASKPARAM
;
typedef
struct
tagRAWDATA
{
typedef
struct
tagRAWDATA
{
unsigned
char
abRawData
[
1022
]
PACKED
;
unsigned
char
abRawData
[
1022
]
PACKED
;
}
RAWDATA
;
}
RAWDATA
;
typedef
struct
tagTASKINFO
{
typedef
struct
tagTASKINFO
struct
{
{
struct
{
char
TaskName
[
8
]
PACKED
;
/* Task name */
char
TaskName
[
8
]
PACKED
;
/* Task name */
unsigned
short
Version
PACKED
;
/* Task version */
unsigned
short
Version
PACKED
;
/* Task version */
unsigned
char
TaskCondition
PACKED
;
unsigned
char
TaskCondition
PACKED
;
...
@@ -208,7 +217,8 @@ typedef struct tagTASKINFO {
...
@@ -208,7 +217,8 @@ typedef struct tagTASKINFO {
}
tInfo
[
7
];
}
tInfo
[
7
];
}
TASKINFO
;
}
TASKINFO
;
typedef
struct
tagRCSINFO
{
typedef
struct
tagRCSINFO
{
unsigned
short
RcsVersion
PACKED
;
/* Operationsystem Version */
unsigned
short
RcsVersion
PACKED
;
/* Operationsystem Version */
unsigned
char
RcsError
PACKED
;
unsigned
char
RcsError
PACKED
;
unsigned
char
HostWatchDog
PACKED
;
unsigned
char
HostWatchDog
PACKED
;
...
@@ -218,7 +228,8 @@ typedef struct tagRCSINFO {
...
@@ -218,7 +228,8 @@ typedef struct tagRCSINFO {
unsigned
char
DriverType
PACKED
;
unsigned
char
DriverType
PACKED
;
}
RCSINFO
;
}
RCSINFO
;
typedef
struct
tagDEVINFO
{
typedef
struct
tagDEVINFO
{
unsigned
char
DpmSize
PACKED
;
unsigned
char
DpmSize
PACKED
;
unsigned
char
DevType
PACKED
;
unsigned
char
DevType
PACKED
;
unsigned
char
DevModel
PACKED
;
unsigned
char
DevModel
PACKED
;
...
@@ -232,9 +243,11 @@ typedef struct tagDEVINFO {
...
@@ -232,9 +243,11 @@ typedef struct tagDEVINFO {
*/
*/
// Board information structure
// Board information structure
typedef
struct
tagBOARD_INFO
{
typedef
struct
tagBOARD_INFO
{
unsigned
char
abDriverVersion
[
16
]
PACKED
;
// DRV driver information string
unsigned
char
abDriverVersion
[
16
]
PACKED
;
// DRV driver information string
struct
{
struct
{
unsigned
short
usBoard
PACKED
;
// DRV board number
unsigned
short
usBoard
PACKED
;
// DRV board number
unsigned
short
usAvailable
PACKED
;
// DRV board is available
unsigned
short
usAvailable
PACKED
;
// DRV board is available
unsigned
long
ulPhysicalAddress
PACKED
;
// DRV physical DPM address
unsigned
long
ulPhysicalAddress
PACKED
;
// DRV physical DPM address
...
@@ -244,7 +257,8 @@ typedef struct tagBOARD_INFO {
...
@@ -244,7 +257,8 @@ typedef struct tagBOARD_INFO {
}
BOARD_INFO
;
}
BOARD_INFO
;
// Driver information structure
// Driver information structure
typedef
struct
tagDRIVERINFO
{
typedef
struct
tagDRIVERINFO
{
unsigned
long
OpenCnt
PACKED
;
// number of driver open
unsigned
long
OpenCnt
PACKED
;
// number of driver open
unsigned
long
CloseCnt
PACKED
;
// number of driver close
unsigned
long
CloseCnt
PACKED
;
// number of driver close
unsigned
long
ReadCnt
PACKED
;
// number of DevGetMessage commands
unsigned
long
ReadCnt
PACKED
;
// number of DevGetMessage commands
...
@@ -263,9 +277,11 @@ typedef struct tagDRIVERINFO {
...
@@ -263,9 +277,11 @@ typedef struct tagDRIVERINFO {
}
DRIVERINFO
;
}
DRIVERINFO
;
// Extended board information structure
// Extended board information structure
typedef
struct
tagBOARD_INFOEX
{
typedef
struct
tagBOARD_INFOEX
{
unsigned
char
abDriverVersion
[
16
]
PACKED
;
// DRV driver information string
unsigned
char
abDriverVersion
[
16
]
PACKED
;
// DRV driver information string
struct
{
struct
{
unsigned
short
usBoard
PACKED
;
// DRV board number
unsigned
short
usBoard
PACKED
;
// DRV board number
unsigned
short
usAvailable
PACKED
;
// DRV board is available
unsigned
short
usAvailable
PACKED
;
// DRV board is available
unsigned
long
ulPhysicalAddress
PACKED
;
// DRV physical DPM address
unsigned
long
ulPhysicalAddress
PACKED
;
// DRV physical DPM address
...
@@ -279,7 +295,8 @@ typedef struct tagBOARD_INFOEX {
...
@@ -279,7 +295,8 @@ typedef struct tagBOARD_INFOEX {
}
BOARD_INFOEX
;
}
BOARD_INFOEX
;
// State field structure
// State field structure
typedef
struct
tagCOMSTATE
{
typedef
struct
tagCOMSTATE
{
unsigned
short
usMode
PACKED
;
// Actual STATE mode
unsigned
short
usMode
PACKED
;
// Actual STATE mode
unsigned
short
usStateFlag
PACKED
;
// State flag
unsigned
short
usStateFlag
PACKED
;
// State flag
unsigned
char
abState
[
64
]
PACKED
;
// State area
unsigned
char
abState
[
64
]
PACKED
;
// State area
...
@@ -345,7 +362,8 @@ typedef struct tagCOMSTATE {
...
@@ -345,7 +362,8 @@ typedef struct tagCOMSTATE {
#define CIF_IOC_MAXNR 25
#define CIF_IOC_MAXNR 25
// interface structure for ioctl's
// interface structure for ioctl's
typedef
struct
cif_ioctl_data
{
typedef
struct
cif_ioctl_data
{
unsigned
long
lInpBuffLen
PACKED
;
unsigned
long
lInpBuffLen
PACKED
;
unsigned
long
lOutBuffLen
PACKED
;
unsigned
long
lOutBuffLen
PACKED
;
unsigned
char
*
pInpBuff
PACKED
;
unsigned
char
*
pInpBuff
PACKED
;
...
@@ -353,7 +371,8 @@ typedef struct cif_ioctl_data {
...
@@ -353,7 +371,8 @@ typedef struct cif_ioctl_data {
}
cif_ioctl_data
;
}
cif_ioctl_data
;
// SET BOARD OPERATION MODE
// SET BOARD OPERATION MODE
typedef
struct
tagDEVIO_SETOPMODE
{
typedef
struct
tagDEVIO_SETOPMODE
{
unsigned
short
usBoard
PACKED
;
unsigned
short
usBoard
PACKED
;
unsigned
short
usMode
PACKED
;
// Interrupt/polling mode
unsigned
short
usMode
PACKED
;
// Interrupt/polling mode
unsigned
short
usIrq
PACKED
;
unsigned
short
usIrq
PACKED
;
...
@@ -361,7 +380,8 @@ typedef struct tagDEVIO_SETOPMODE {
...
@@ -361,7 +380,8 @@ typedef struct tagDEVIO_SETOPMODE {
}
DEVIO_SETOPMODE
;
}
DEVIO_SETOPMODE
;
// GETBOARDINFORMATION
// GETBOARDINFORMATION
typedef
struct
tagDEVIO_GETBOARDINFOCMD
{
typedef
struct
tagDEVIO_GETBOARDINFOCMD
{
unsigned
short
usDevNumber
PACKED
;
// n.a.
unsigned
short
usDevNumber
PACKED
;
// n.a.
unsigned
short
usInfoLen
PACKED
;
// Information length
unsigned
short
usInfoLen
PACKED
;
// Information length
BOARD_INFO
*
ptBoardInfo
PACKED
;
BOARD_INFO
*
ptBoardInfo
PACKED
;
...
@@ -369,7 +389,8 @@ typedef struct tagDEVIO_GETBOARDINFOCMD {
...
@@ -369,7 +389,8 @@ typedef struct tagDEVIO_GETBOARDINFOCMD {
}
DEVIO_GETBOARDINFOCMD
;
}
DEVIO_GETBOARDINFOCMD
;
// Extnded GETBOARDINFORMATION
// Extnded GETBOARDINFORMATION
typedef
struct
tagDEVIO_GETBOARDINFOEXCMD
{
typedef
struct
tagDEVIO_GETBOARDINFOEXCMD
{
unsigned
short
usDevNumber
PACKED
;
// n.a.
unsigned
short
usDevNumber
PACKED
;
// n.a.
unsigned
short
usInfoLen
PACKED
;
// Information length
unsigned
short
usInfoLen
PACKED
;
// Information length
BOARD_INFOEX
*
ptBoard
PACKED
;
BOARD_INFOEX
*
ptBoard
PACKED
;
...
@@ -382,7 +403,8 @@ typedef struct tagDEVIO_GETBOARDINFOEXCMD {
...
@@ -382,7 +403,8 @@ typedef struct tagDEVIO_GETBOARDINFOEXCMD {
#define WARMSTART 3
#define WARMSTART 3
#define BOOTSTART 4
#define BOOTSTART 4
typedef
struct
tagDEVIO_RESETCMD
{
typedef
struct
tagDEVIO_RESETCMD
{
unsigned
short
usBoard
PACKED
;
// DEV board number
unsigned
short
usBoard
PACKED
;
// DEV board number
unsigned
short
usMode
PACKED
;
// DEV function
unsigned
short
usMode
PACKED
;
// DEV function
unsigned
long
ulTimeout
PACKED
;
// Service timeout
unsigned
long
ulTimeout
PACKED
;
// Service timeout
...
@@ -391,7 +413,8 @@ typedef struct tagDEVIO_RESETCMD {
...
@@ -391,7 +413,8 @@ typedef struct tagDEVIO_RESETCMD {
}
DEVIO_RESETCMD
;
}
DEVIO_RESETCMD
;
// PUTTASKPARAMETER
// PUTTASKPARAMETER
typedef
struct
tagDEVIO_PUTPARAMETERCMD
{
typedef
struct
tagDEVIO_PUTPARAMETERCMD
{
unsigned
short
usBoard
PACKED
;
// DEV board number
unsigned
short
usBoard
PACKED
;
// DEV board number
unsigned
short
usTaskParamNum
PACKED
;
// Number of the parameter area
unsigned
short
usTaskParamNum
PACKED
;
// Number of the parameter area
unsigned
short
usTaskParamLen
PACKED
;
// Lenght of parameter data
unsigned
short
usTaskParamLen
PACKED
;
// Lenght of parameter data
...
@@ -400,7 +423,8 @@ typedef struct tagDEVIO_PUTPARAMETERCMD {
...
@@ -400,7 +423,8 @@ typedef struct tagDEVIO_PUTPARAMETERCMD {
}
DEVIO_PUTPARAMETERCMD
;
}
DEVIO_PUTPARAMETERCMD
;
// PUTMESSAGE
// PUTMESSAGE
typedef
struct
tagDEVIO_PUTMESSAGECMD
{
typedef
struct
tagDEVIO_PUTMESSAGECMD
{
unsigned
short
usBoard
PACKED
;
// DEV board number
unsigned
short
usBoard
PACKED
;
// DEV board number
MSG_STRUC
tMsg
PACKED
;
// Message data
MSG_STRUC
tMsg
PACKED
;
// Message data
unsigned
long
ulTimeout
PACKED
;
// Service timeout
unsigned
long
ulTimeout
PACKED
;
// Service timeout
...
@@ -408,7 +432,8 @@ typedef struct tagDEVIO_PUTMESSAGECMD {
...
@@ -408,7 +432,8 @@ typedef struct tagDEVIO_PUTMESSAGECMD {
}
DEVIO_PUTMESSAGECMD
;
}
DEVIO_PUTMESSAGECMD
;
// GETMESSAGE
// GETMESSAGE
typedef
struct
tagDEVIO_GETMESSAGECMD
{
typedef
struct
tagDEVIO_GETMESSAGECMD
{
unsigned
short
usBoard
PACKED
;
// DEV board number
unsigned
short
usBoard
PACKED
;
// DEV board number
unsigned
long
ulTimeout
PACKED
;
// Service timeout
unsigned
long
ulTimeout
PACKED
;
// Service timeout
unsigned
long
ulMsgSize
PACKED
;
// User message buffer size
unsigned
long
ulMsgSize
PACKED
;
// User message buffer size
...
@@ -417,7 +442,8 @@ typedef struct tagDEVIO_GETMESSAGECMD {
...
@@ -417,7 +442,8 @@ typedef struct tagDEVIO_GETMESSAGECMD {
}
DEVIO_GETMESSAGECMD
;
}
DEVIO_GETMESSAGECMD
;
// GETTASKSTATE
// GETTASKSTATE
typedef
struct
tagDEVIO_GETTASKSTATECMD
{
typedef
struct
tagDEVIO_GETTASKSTATECMD
{
unsigned
char
ucBoard
PACKED
;
// DEV board number
unsigned
char
ucBoard
PACKED
;
// DEV board number
unsigned
short
usStateNum
PACKED
;
// Task state field number
unsigned
short
usStateNum
PACKED
;
// Task state field number
unsigned
short
usStateLen
PACKED
;
// Lenght of state data
unsigned
short
usStateLen
PACKED
;
// Lenght of state data
...
@@ -433,7 +459,8 @@ typedef struct tagDEVIO_GETTASKSTATECMD {
...
@@ -433,7 +459,8 @@ typedef struct tagDEVIO_GETTASKSTATECMD {
#define HOST_MBX_FULL 1
#define HOST_MBX_FULL 1
#define HOST_MBX_SYSERR 2
#define HOST_MBX_SYSERR 2
typedef
struct
tagDEVIO_MBXINFOCMD
{
typedef
struct
tagDEVIO_MBXINFOCMD
{
unsigned
char
ucBoard
PACKED
;
// DEV board number
unsigned
char
ucBoard
PACKED
;
// DEV board number
unsigned
short
usDevMbxState
PACKED
;
// State of the device mailbox
unsigned
short
usDevMbxState
PACKED
;
// State of the device mailbox
unsigned
short
usHostMbxState
PACKED
;
// State of the host mailbox
unsigned
short
usHostMbxState
PACKED
;
// State of the host mailbox
...
@@ -452,7 +479,8 @@ typedef struct tagDEVIO_MBXINFOCMD {
...
@@ -452,7 +479,8 @@ typedef struct tagDEVIO_MBXINFOCMD {
#define SPECIAL_CONTROL_CLEAR 0
#define SPECIAL_CONTROL_CLEAR 0
#define SPECIAL_CONTROL_SET 1
#define SPECIAL_CONTROL_SET 1
typedef
struct
tagDEVIO_TRIGGERCMD
{
typedef
struct
tagDEVIO_TRIGGERCMD
{
unsigned
short
usBoard
PACKED
;
// DEV board number
unsigned
short
usBoard
PACKED
;
// DEV board number
unsigned
short
usMode
PACKED
;
// DEV function
unsigned
short
usMode
PACKED
;
// DEV function
unsigned
long
ulTimeout
PACKED
;
// DEV timeout
unsigned
long
ulTimeout
PACKED
;
// DEV timeout
...
@@ -472,7 +500,8 @@ typedef struct tagDEVIO_TRIGGERCMD {
...
@@ -472,7 +500,8 @@ typedef struct tagDEVIO_TRIGGERCMD {
#define GET_IO_INFO 7
#define GET_IO_INFO 7
#define GET_IO_SEND_DATA 8
#define GET_IO_SEND_DATA 8
typedef
struct
tagDEVIO_GETDEVINFOCMD
{
typedef
struct
tagDEVIO_GETDEVINFOCMD
{
unsigned
short
usBoard
PACKED
;
// DEV board number
unsigned
short
usBoard
PACKED
;
// DEV board number
unsigned
short
usInfoArea
PACKED
;
// Number of info area
unsigned
short
usInfoArea
PACKED
;
// Number of info area
unsigned
short
usInfoLen
PACKED
;
// Lenght of info data
unsigned
short
usInfoLen
PACKED
;
// Lenght of info data
...
@@ -481,14 +510,16 @@ typedef struct tagDEVIO_GETDEVINFOCMD {
...
@@ -481,14 +510,16 @@ typedef struct tagDEVIO_GETDEVINFOCMD {
}
DEVIO_GETDEVINFOCMD
;
}
DEVIO_GETDEVINFOCMD
;
// EXITDRV
// EXITDRV
typedef
struct
tagDEVIO_EXITCMD
{
typedef
struct
tagDEVIO_EXITCMD
{
unsigned
short
usBoard
PACKED
;
// DEV board number
unsigned
short
usBoard
PACKED
;
// DEV board number
unsigned
short
usDrvOpenCount
PACKED
;
// dr�er opencount
unsigned
short
usDrvOpenCount
PACKED
;
// dr�er opencount
short
sError
PACKED
;
short
sError
PACKED
;
}
DEVIO_EXITCMD
;
}
DEVIO_EXITCMD
;
// GETTASKPARAMETER
// GETTASKPARAMETER
typedef
struct
tagDEVIO_GETPARAMETERCMD
{
typedef
struct
tagDEVIO_GETPARAMETERCMD
{
unsigned
short
usBoard
PACKED
;
// DEV board number
unsigned
short
usBoard
PACKED
;
// DEV board number
unsigned
short
usTaskParamNum
PACKED
;
// Number of the parameter area
unsigned
short
usTaskParamNum
PACKED
;
// Number of the parameter area
unsigned
short
usTaskParamLen
PACKED
;
// Lenght of parameter data
unsigned
short
usTaskParamLen
PACKED
;
// Lenght of parameter data
...
@@ -497,7 +528,8 @@ typedef struct tagDEVIO_GETPARAMETERCMD {
...
@@ -497,7 +528,8 @@ typedef struct tagDEVIO_GETPARAMETERCMD {
}
DEVIO_GETPARAMETERCMD
;
}
DEVIO_GETPARAMETERCMD
;
// EXIO
// EXIO
typedef
struct
tagDEVIO_EXIOCMD
{
typedef
struct
tagDEVIO_EXIOCMD
{
unsigned
short
usBoard
PACKED
;
// DEV board number
unsigned
short
usBoard
PACKED
;
// DEV board number
unsigned
short
usSendOffset
PACKED
;
// Byte offset send data
unsigned
short
usSendOffset
PACKED
;
// Byte offset send data
unsigned
short
usSendLen
PACKED
;
// Length of send data
unsigned
short
usSendLen
PACKED
;
// Length of send data
...
@@ -510,7 +542,8 @@ typedef struct tagDEVIO_EXIOCMD {
...
@@ -510,7 +542,8 @@ typedef struct tagDEVIO_EXIOCMD {
}
DEVIO_EXIOCMD
;
}
DEVIO_EXIOCMD
;
// EXIOEX
// EXIOEX
typedef
struct
tagDEVIO_EXIOCMDEX
{
typedef
struct
tagDEVIO_EXIOCMDEX
{
unsigned
short
usBoard
PACKED
;
// DEV board number
unsigned
short
usBoard
PACKED
;
// DEV board number
unsigned
short
usSendOffset
PACKED
;
// Byte offset send data
unsigned
short
usSendOffset
PACKED
;
// Byte offset send data
unsigned
short
usSendLen
PACKED
;
// Length of send data
unsigned
short
usSendLen
PACKED
;
// Length of send data
...
@@ -531,7 +564,8 @@ typedef struct tagDEVIO_EXIOCMDEX {
...
@@ -531,7 +564,8 @@ typedef struct tagDEVIO_EXIOCMDEX {
#define STATE_MODE_3 3
#define STATE_MODE_3 3
#define STATE_MODE_4 4
#define STATE_MODE_4 4
typedef
struct
tagDEVIO_EXIOCMDERR
{
typedef
struct
tagDEVIO_EXIOCMDERR
{
unsigned
short
usBoard
PACKED
;
// DEV board number
unsigned
short
usBoard
PACKED
;
// DEV board number
unsigned
short
usSendOffset
PACKED
;
// Byte offset send data
unsigned
short
usSendOffset
PACKED
;
// Byte offset send data
unsigned
short
usSendLen
PACKED
;
// Length of send data
unsigned
short
usSendLen
PACKED
;
// Length of send data
...
@@ -545,7 +579,8 @@ typedef struct tagDEVIO_EXIOCMDERR {
...
@@ -545,7 +579,8 @@ typedef struct tagDEVIO_EXIOCMDERR {
}
DEVIO_EXIOCMDERR
;
}
DEVIO_EXIOCMDERR
;
// READIO
// READIO
typedef
struct
tagDEVIO_READSENDCMD
{
typedef
struct
tagDEVIO_READSENDCMD
{
unsigned
short
usBoard
PACKED
;
// DEV board number
unsigned
short
usBoard
PACKED
;
// DEV board number
unsigned
short
usReadOffset
PACKED
;
// Byte offset send/receive data
unsigned
short
usReadOffset
PACKED
;
// Byte offset send/receive data
unsigned
short
usReadLen
PACKED
;
// Length of send/receive data
unsigned
short
usReadLen
PACKED
;
// Length of send/receive data
...
@@ -555,7 +590,8 @@ typedef struct tagDEVIO_READSENDCMD {
...
@@ -555,7 +590,8 @@ typedef struct tagDEVIO_READSENDCMD {
// ExtData
// ExtData
#define EXTDATASIZE 20
#define EXTDATASIZE 20
typedef
struct
tagDEVIO_EXTDATACMD
{
typedef
struct
tagDEVIO_EXTDATACMD
{
unsigned
short
usBoard
PACKED
;
// DEV board number
unsigned
short
usBoard
PACKED
;
// DEV board number
unsigned
short
usMode
PACKED
;
// DEV mode
unsigned
short
usMode
PACKED
;
// DEV mode
unsigned
char
*
pabExtData
PACKED
;
// DEV Extended data
unsigned
char
*
pabExtData
PACKED
;
// DEV Extended data
...
@@ -563,7 +599,8 @@ typedef struct tagDEVIO_EXTDATACMD {
...
@@ -563,7 +599,8 @@ typedef struct tagDEVIO_EXTDATACMD {
}
DEVIO_EXTDATACMD
;
}
DEVIO_EXTDATACMD
;
// GetMbxData
// GetMbxData
typedef
struct
tagDEVIO_GETMBXCMD
{
typedef
struct
tagDEVIO_GETMBXCMD
{
unsigned
short
usBoard
PACKED
;
// DEV board number
unsigned
short
usBoard
PACKED
;
// DEV board number
unsigned
short
usDevLen
PACKED
;
// DEV length of dev data
unsigned
short
usDevLen
PACKED
;
// DEV length of dev data
unsigned
short
usHostLen
PACKED
;
// DEV length of host data
unsigned
short
usHostLen
PACKED
;
// DEV length of host data
...
@@ -575,7 +612,8 @@ typedef struct tagDEVIO_GETMBXCMD {
...
@@ -575,7 +612,8 @@ typedef struct tagDEVIO_GETMBXCMD {
// ReadWriteRawData
// ReadWriteRawData
#define PARAMETER_READ 1
#define PARAMETER_READ 1
#define PARAMETER_WRITE 2
#define PARAMETER_WRITE 2
typedef
struct
tagDEVIO_RWRAWDATACMD
{
typedef
struct
tagDEVIO_RWRAWDATACMD
{
unsigned
short
usBoard
PACKED
;
// DEV board number
unsigned
short
usBoard
PACKED
;
// DEV board number
unsigned
short
usMode
PACKED
;
// DEV read or write
unsigned
short
usMode
PACKED
;
// DEV read or write
unsigned
short
usOffset
PACKED
;
// DEV offset in the DPM last kByte
unsigned
short
usOffset
PACKED
;
// DEV offset in the DPM last kByte
...
@@ -584,7 +622,8 @@ typedef struct tagDEVIO_RWRAWDATACMD {
...
@@ -584,7 +622,8 @@ typedef struct tagDEVIO_RWRAWDATACMD {
short
sError
PACKED
;
short
sError
PACKED
;
}
DEVIO_RWRAWDATACMD
;
}
DEVIO_RWRAWDATACMD
;
// ReadWriteDPMData
// ReadWriteDPMData
typedef
struct
tagDEVIO_RWDPMDATACMD
{
typedef
struct
tagDEVIO_RWDPMDATACMD
{
unsigned
short
usBoard
PACKED
;
// DEV board number
unsigned
short
usBoard
PACKED
;
// DEV board number
unsigned
short
usMode
PACKED
;
// DEV read or write
unsigned
short
usMode
PACKED
;
// DEV read or write
unsigned
short
usOffset
PACKED
;
// DEV offset in the DPM last kByte
unsigned
short
usOffset
PACKED
;
// DEV offset in the DPM last kByte
...
@@ -598,7 +637,8 @@ typedef struct tagDEVIO_RWDPMDATACMD {
...
@@ -598,7 +637,8 @@ typedef struct tagDEVIO_RWDPMDATACMD {
#define DPM_PTR_OPEN_USR 2
#define DPM_PTR_OPEN_USR 2
#define DPM_PTR_CLOSE 3
#define DPM_PTR_CLOSE 3
typedef
struct
tagDEVIO_GETDPMPTR
{
typedef
struct
tagDEVIO_GETDPMPTR
{
unsigned
short
usMode
PACKED
;
// DEV mode
unsigned
short
usMode
PACKED
;
// DEV mode
unsigned
short
usBoard
PACKED
;
// DEV board number
unsigned
short
usBoard
PACKED
;
// DEV board number
void
*
pvUserData
PACKED
;
// DEV user data for pmi
void
*
pvUserData
PACKED
;
// DEV user data for pmi
...
...
profibus/lib/rt/src/cif_types.h
View file @
df0831a3
profibus/lib/rt/src/cif_user.h
View file @
df0831a3
...
@@ -156,7 +156,8 @@ extern "C" {
...
@@ -156,7 +156,8 @@ extern "C" {
*/
*/
// max. length is 288 Bytes, max message length is 255 + 8 Bytes
// max. length is 288 Bytes, max message length is 255 + 8 Bytes
typedef
struct
tagMSG_STRUC
{
typedef
struct
tagMSG_STRUC
{
unsigned
char
rx
PACKED
;
unsigned
char
rx
PACKED
;
unsigned
char
tx
PACKED
;
unsigned
char
tx
PACKED
;
unsigned
char
ln
PACKED
;
unsigned
char
ln
PACKED
;
...
@@ -230,14 +231,16 @@ typedef struct tagMSG_STRUC {
...
@@ -230,14 +231,16 @@ typedef struct tagMSG_STRUC {
#define CONFIGURATION_DOWNLOAD 2
#define CONFIGURATION_DOWNLOAD 2
// Device exchange IO information
// Device exchange IO information
typedef
struct
tagIOINFO
{
typedef
struct
tagIOINFO
{
unsigned
char
bComBit
PACKED
;
/* Actual state of the COM bit */
unsigned
char
bComBit
PACKED
;
/* Actual state of the COM bit */
unsigned
char
bIOExchangeMode
PACKED
;
/* Actual data exchange mode (0..5) */
unsigned
char
bIOExchangeMode
PACKED
;
/* Actual data exchange mode (0..5) */
unsigned
int
ulIOExchangeCnt
PACKED
;
/* Exchange IO counter */
unsigned
int
ulIOExchangeCnt
PACKED
;
/* Exchange IO counter */
}
IOINFO
;
}
IOINFO
;
// Device version information
// Device version information
typedef
struct
tagVERSIONINFO
{
/* DEV serial number and OS versions */
typedef
struct
tagVERSIONINFO
{
/* DEV serial number and OS versions */
unsigned
int
ulDate
PACKED
;
unsigned
int
ulDate
PACKED
;
unsigned
int
ulDeviceNo
PACKED
;
unsigned
int
ulDeviceNo
PACKED
;
unsigned
int
ulSerialNo
PACKED
;
unsigned
int
ulSerialNo
PACKED
;
...
@@ -249,29 +252,35 @@ typedef struct tagVERSIONINFO { /* DEV serial number and OS versions */
...
@@ -249,29 +252,35 @@ typedef struct tagVERSIONINFO { /* DEV serial number and OS versions */
}
VERSIONINFO
;
}
VERSIONINFO
;
// Device firmware information
// Device firmware information
typedef
struct
tagFIRMWAREINFO
{
typedef
struct
tagFIRMWAREINFO
{
unsigned
char
abFirmwareName
[
16
]
PACKED
;
/* Firmware name */
unsigned
char
abFirmwareName
[
16
]
PACKED
;
/* Firmware name */
unsigned
char
abFirmwareVersion
[
16
]
PACKED
;
/* Firmware version */
unsigned
char
abFirmwareVersion
[
16
]
PACKED
;
/* Firmware version */
}
FIRMWAREINFO
;
}
FIRMWAREINFO
;
// Device task state information
// Device task state information
typedef
struct
tagTASKSTATE
{
typedef
struct
tagTASKSTATE
{
unsigned
char
abTaskState
[
64
]
PACKED
;
/* Task state field */
unsigned
char
abTaskState
[
64
]
PACKED
;
/* Task state field */
}
TASKSTATE
;
}
TASKSTATE
;
// Device task paramater data
// Device task paramater data
typedef
struct
tagTASKPARAM
{
typedef
struct
tagTASKPARAM
{
unsigned
char
abTaskParameter
[
64
]
PACKED
;
/* Task parameter field */
unsigned
char
abTaskParameter
[
64
]
PACKED
;
/* Task parameter field */
}
TASKPARAM
;
}
TASKPARAM
;
// Device raw data structure
// Device raw data structure
typedef
struct
tagRAWDATA
{
typedef
struct
tagRAWDATA
{
unsigned
char
abRawData
[
1022
]
PACKED
;
/* Definition of the last kByte */
unsigned
char
abRawData
[
1022
]
PACKED
;
/* Definition of the last kByte */
}
RAWDATA
;
}
RAWDATA
;
// Device task information
// Device task information
typedef
struct
tagTASKINFO
{
typedef
struct
tagTASKINFO
struct
{
{
struct
{
unsigned
char
abTaskName
[
8
]
PACKED
;
/* Task name */
unsigned
char
abTaskName
[
8
]
PACKED
;
/* Task name */
unsigned
short
usTaskVersion
PACKED
;
/* Task version */
unsigned
short
usTaskVersion
PACKED
;
/* Task version */
unsigned
char
bTaskCondition
PACKED
;
/* Actual task condition */
unsigned
char
bTaskCondition
PACKED
;
/* Actual task condition */
...
@@ -280,7 +289,8 @@ typedef struct tagTASKINFO {
...
@@ -280,7 +289,8 @@ typedef struct tagTASKINFO {
}
TASKINFO
;
}
TASKINFO
;
// Device operating system (RCS) information
// Device operating system (RCS) information
typedef
struct
tagRCSINFO
{
typedef
struct
tagRCSINFO
{
unsigned
short
usRcsVersion
unsigned
short
usRcsVersion
PACKED
;
/* Device operating system (RCS) version */
PACKED
;
/* Device operating system (RCS) version */
unsigned
char
bRcsError
PACKED
;
/* Operating system errors */
unsigned
char
bRcsError
PACKED
;
/* Operating system errors */
...
@@ -292,7 +302,8 @@ typedef struct tagRCSINFO {
...
@@ -292,7 +302,8 @@ typedef struct tagRCSINFO {
}
RCSINFO
;
}
RCSINFO
;
// Device description
// Device description
typedef
struct
tagDEVINFO
{
typedef
struct
tagDEVINFO
{
unsigned
char
bDpmSize
PACKED
;
/* Device dpm size (2,8...) */
unsigned
char
bDpmSize
PACKED
;
/* Device dpm size (2,8...) */
unsigned
char
bDevType
PACKED
;
/* Device type (manufactor code) */
unsigned
char
bDevType
PACKED
;
/* Device type (manufactor code) */
unsigned
char
bDevModel
PACKED
;
/* Device model (manufactor code) */
unsigned
char
bDevModel
PACKED
;
/* Device model (manufactor code) */
...
@@ -307,9 +318,11 @@ typedef struct tagDEVINFO {
...
@@ -307,9 +318,11 @@ typedef struct tagDEVINFO {
*/
*/
// Board information structure
// Board information structure
typedef
struct
tagBOARD_INFO
{
typedef
struct
tagBOARD_INFO
{
unsigned
char
abDriverVersion
[
16
]
PACKED
;
// DRV driver information string
unsigned
char
abDriverVersion
[
16
]
PACKED
;
// DRV driver information string
struct
{
struct
{
unsigned
short
usBoard
PACKED
;
// DRV board number
unsigned
short
usBoard
PACKED
;
// DRV board number
unsigned
short
usAvailable
PACKED
;
// DRV board is available
unsigned
short
usAvailable
PACKED
;
// DRV board is available
unsigned
long
ulPhysicalAddress
PACKED
;
// DRV physical DPM address
unsigned
long
ulPhysicalAddress
PACKED
;
// DRV physical DPM address
...
@@ -319,7 +332,8 @@ typedef struct tagBOARD_INFO {
...
@@ -319,7 +332,8 @@ typedef struct tagBOARD_INFO {
}
BOARD_INFO
;
}
BOARD_INFO
;
// Internal driver state information structure
// Internal driver state information structure
typedef
struct
tagDRIVERINFO
{
typedef
struct
tagDRIVERINFO
{
unsigned
long
ulOpenCnt
PACKED
;
// DevOpen() counter
unsigned
long
ulOpenCnt
PACKED
;
// DevOpen() counter
unsigned
long
CloseCnt
PACKED
;
// number of driver close
unsigned
long
CloseCnt
PACKED
;
// number of driver close
unsigned
long
ulReadCnt
PACKED
;
// Number of DevGetMessage commands
unsigned
long
ulReadCnt
PACKED
;
// Number of DevGetMessage commands
...
@@ -338,9 +352,11 @@ typedef struct tagDRIVERINFO {
...
@@ -338,9 +352,11 @@ typedef struct tagDRIVERINFO {
}
DRIVERINFO
;
}
DRIVERINFO
;
// Extended board information structure
// Extended board information structure
typedef
struct
tagBOARD_INFOEX
{
typedef
struct
tagBOARD_INFOEX
{
unsigned
char
abDriverVersion
[
16
]
PACKED
;
// DRV driver information string
unsigned
char
abDriverVersion
[
16
]
PACKED
;
// DRV driver information string
struct
{
struct
{
unsigned
short
usBoard
PACKED
;
// DRV board number
unsigned
short
usBoard
PACKED
;
// DRV board number
unsigned
short
usAvailable
PACKED
;
// DRV board is available
unsigned
short
usAvailable
PACKED
;
// DRV board is available
unsigned
long
ulPhysicalAddress
PACKED
;
// DRV physical DPM address
unsigned
long
ulPhysicalAddress
PACKED
;
// DRV physical DPM address
...
@@ -357,7 +373,8 @@ typedef struct tagBOARD_INFOEX {
...
@@ -357,7 +373,8 @@ typedef struct tagBOARD_INFOEX {
// 64-bit Linux machine & 32-bit Windows machine
// 64-bit Linux machine & 32-bit Windows machine
// #ifdef CONFIG_64BIT
// #ifdef CONFIG_64BIT
// Extended board information structure
// Extended board information structure
typedef
struct
tagBOARD_INFOEX_32
{
typedef
struct
tagBOARD_INFOEX_32
{
unsigned
char
abDriverVersion
[
16
]
PACKED
;
// DRV driver information string
unsigned
char
abDriverVersion
[
16
]
PACKED
;
// DRV driver information string
unsigned
char
abCatchall
[
484
]
PACKED
;
// catchall
unsigned
char
abCatchall
[
484
]
PACKED
;
// catchall
/*struct {
/*struct {
...
@@ -374,7 +391,8 @@ typedef struct tagBOARD_INFOEX_32 {
...
@@ -374,7 +391,8 @@ typedef struct tagBOARD_INFOEX_32 {
}
BOARD_INFOEX_32
;
}
BOARD_INFOEX_32
;
// Communication state field structure
// Communication state field structure
typedef
struct
tagCOMSTATE
{
typedef
struct
tagCOMSTATE
{
unsigned
short
usMode
PACKED
;
// Actual STATE mode
unsigned
short
usMode
PACKED
;
// Actual STATE mode
unsigned
short
usStateFlag
PACKED
;
// State flag
unsigned
short
usStateFlag
PACKED
;
// State flag
unsigned
char
abState
[
64
]
PACKED
;
// State area
unsigned
char
abState
[
64
]
PACKED
;
// State area
...
@@ -409,78 +427,91 @@ extern short DevInitBoard(unsigned short usDevNumber);
...
@@ -409,78 +427,91 @@ extern short DevInitBoard(unsigned short usDevNumber);
extern
short
DevExitBoard
(
unsigned
short
usDevNumber
);
extern
short
DevExitBoard
(
unsigned
short
usDevNumber
);
extern
short
DevPutTaskParameter
(
unsigned
short
usDevNumber
,
extern
short
DevPutTaskParameter
(
unsigned
short
usDevNumber
,
unsigned
short
usNumber
,
unsigned
short
usSize
,
void
*
pvData
);
unsigned
short
usNumber
,
unsigned
short
usSize
,
void
*
pvData
);
extern
short
DevReset
(
extern
short
DevReset
(
unsigned
short
usDevNumber
,
unsigned
short
usMode
,
unsigned
short
usDevNumber
,
unsigned
short
usMode
,
unsigned
long
ulTimeout
);
unsigned
long
ulTimeout
);
extern
short
DevPutMessage
(
extern
short
DevPutMessage
(
unsigned
short
usDevNumber
,
MSG_STRUC
*
ptMessage
,
unsigned
short
usDevNumber
,
MSG_STRUC
*
ptMessage
,
unsigned
long
ulTimeout
);
unsigned
long
ulTimeout
);
extern
short
DevGetMessage
(
unsigned
short
usDevNumber
,
unsigned
short
usSize
,
extern
short
DevGetMessage
(
unsigned
short
usDevNumber
,
unsigned
short
usSize
,
MSG_STRUC
*
ptMessage
,
unsigned
long
ulTimeout
);
MSG_STRUC
*
ptMessage
,
unsigned
long
ulTimeout
);
extern
short
DevGetTaskState
(
unsigned
short
usDevNumber
,
extern
short
DevGetTaskState
(
unsigned
short
usDevNumber
,
unsigned
short
usNumber
,
unsigned
short
usSize
,
void
*
pvData
);
unsigned
short
usNumber
,
unsigned
short
usSize
,
void
*
pvData
);
extern
short
DevGetMBXState
(
unsigned
short
usDevNumber
,
extern
short
DevGetMBXState
(
unsigned
short
usDevNumber
,
unsigned
short
*
pusDevMBXState
,
unsigned
short
*
pusHostMBXState
);
unsigned
short
*
pusDevMBXState
,
unsigned
short
*
pusHostMBXState
);
extern
short
DevTriggerWatchDog
(
unsigned
short
usDevNumber
,
extern
short
DevTriggerWatchDog
(
unsigned
short
usDevNumber
,
unsigned
short
usFunction
,
unsigned
short
*
usDevWatchDog
);
unsigned
short
usFunction
,
unsigned
short
*
usDevWatchDog
);
extern
short
DevGetInfo
(
unsigned
short
usDevNumber
,
unsigned
short
usFunction
,
extern
short
DevGetInfo
(
unsigned
short
usDevNumber
,
unsigned
short
usFunction
,
unsigned
short
usSize
,
void
*
pvData
);
unsigned
short
usSize
,
void
*
pvData
);
extern
short
DevGetTaskParameter
(
unsigned
short
usDevNumber
,
extern
short
DevGetTaskParameter
(
unsigned
short
usDevNumber
,
unsigned
short
usNumber
,
unsigned
short
usSize
,
void
*
pvData
);
unsigned
short
usNumber
,
unsigned
short
usSize
,
void
*
pvData
);
extern
short
DevExchangeIO
(
unsigned
short
usDevNumber
,
extern
short
DevExchangeIO
(
unsigned
short
usDevNumber
,
unsigned
short
usSendOffset
,
unsigned
short
usSendSize
,
void
*
pvSendData
,
unsigned
short
usSendOffset
,
unsigned
short
usReceiveOffset
,
unsigned
short
usReceiveSize
,
unsigned
short
usSendSize
,
void
*
pvSendData
,
void
*
pvReceiveData
,
unsigned
long
ulTimeout
);
unsigned
short
usReceiveOffset
,
unsigned
short
usReceiveSize
,
void
*
pvReceiveData
,
unsigned
long
ulTimeout
);
extern
short
DevReadSendData
(
unsigned
short
usDevNumber
,
extern
short
DevReadSendData
(
unsigned
short
usDevNumber
,
unsigned
short
usOffset
,
unsigned
short
usSize
,
void
*
pvData
);
unsigned
short
usOffset
,
unsigned
short
usSize
,
void
*
pvData
);
extern
short
DevSetHostState
(
extern
short
DevSetHostState
(
unsigned
short
usDevNumber
,
unsigned
short
usMode
,
unsigned
short
usDevNumber
,
unsigned
short
usMode
,
unsigned
long
ulTimeout
);
unsigned
long
ulTimeout
);
extern
short
DevExtendedData
(
unsigned
short
usDevNumber
,
unsigned
short
usMode
,
extern
short
DevExtendedData
(
unsigned
short
usDevNumber
,
unsigned
short
usMode
,
unsigned
short
usSize
,
void
*
pvData
);
unsigned
short
usSize
,
void
*
pvData
);
extern
short
DevGetMBXData
(
unsigned
short
usDevNumber
,
extern
short
DevGetMBXData
(
unsigned
short
usDevNumber
,
unsigned
short
usHostSize
,
void
*
pvHostData
,
unsigned
short
usDevSize
,
unsigned
short
usHostSize
,
void
*
pvHostData
,
void
*
pvDevData
);
unsigned
short
usDevSize
,
void
*
pvDevData
);
extern
short
DevGetBoardInfoEx
(
void
*
pvData
);
extern
short
DevGetBoardInfoEx
(
void
*
pvData
);
extern
short
DevExchangeIOEx
(
unsigned
short
usDevNumber
,
unsigned
short
usMode
,
extern
short
DevExchangeIOEx
(
unsigned
short
usDevNumber
,
unsigned
short
usMode
,
unsigned
short
usSendOffset
,
unsigned
short
usSendSize
,
void
*
pvSendData
,
unsigned
short
usSendOffset
,
unsigned
short
usReceiveOffset
,
unsigned
short
usReceiveSize
,
unsigned
short
usSendSize
,
void
*
pvSendData
,
void
*
pvReceiveData
,
unsigned
long
ulTimeout
);
unsigned
short
usReceiveOffset
,
unsigned
short
usReceiveSize
,
void
*
pvReceiveData
,
unsigned
long
ulTimeout
);
extern
short
DevExchangeIOErr
(
unsigned
short
usDevNumber
,
extern
short
DevExchangeIOErr
(
unsigned
short
usDevNumber
,
unsigned
short
usSendOffset
,
unsigned
short
usSendSize
,
void
*
pvSendData
,
unsigned
short
usSendOffset
,
unsigned
short
usReceiveOffset
,
unsigned
short
usReceiveSize
,
unsigned
short
usSendSize
,
void
*
pvSendData
,
void
*
pvReceiveData
,
COMSTATE
*
ptState
,
unsigned
long
ulTimeout
);
unsigned
short
usReceiveOffset
,
unsigned
short
usReceiveSize
,
void
*
pvReceiveData
,
COMSTATE
*
ptState
,
unsigned
long
ulTimeout
);
extern
short
DevReadWriteDPMRaw
(
unsigned
short
usDevNumber
,
extern
short
DevReadWriteDPMRaw
(
unsigned
short
usDevNumber
,
unsigned
short
usMode
,
unsigned
short
usOffset
,
unsigned
short
usSize
,
unsigned
short
usMode
,
unsigned
short
usOffset
,
void
*
pvData
);
unsigned
short
usSize
,
void
*
pvData
);
extern
short
DevSpecialControl
(
unsigned
short
usDevNumber
,
extern
short
DevSpecialControl
(
unsigned
short
usDevNumber
,
unsigned
short
usMode
,
unsigned
short
*
pusCtrlAck
);
unsigned
short
usMode
,
unsigned
short
*
pusCtrlAck
);
extern
short
DevDownload
(
unsigned
short
usDevNumber
,
unsigned
short
usMode
,
extern
short
DevDownload
(
unsigned
short
usDevNumber
,
unsigned
short
usMode
,
unsigned
char
*
pszFileName
,
unsigned
long
*
pdwBytes
);
unsigned
char
*
pszFileName
,
unsigned
long
*
pdwBytes
);
extern
short
DevReadWriteDPMData
(
unsigned
short
usDevNumber
,
extern
short
DevReadWriteDPMData
(
unsigned
short
usDevNumber
,
unsigned
short
usMode
,
unsigned
short
usOffset
,
unsigned
short
usSize
,
unsigned
short
usMode
,
unsigned
short
usOffset
,
void
*
pvData
);
unsigned
short
usSize
,
void
*
pvData
);
extern
short
DevSetOpMode
(
extern
short
DevSetOpMode
(
unsigned
short
usBoard
,
unsigned
short
usMode
,
unsigned
short
usBoard
,
unsigned
short
usMode
,
unsigned
short
*
usIrq
);
unsigned
short
*
usIrq
);
#ifdef __cplusplus
#ifdef __cplusplus
}
}
...
...
profibus/lib/rt/src/rcs_user.h
View file @
df0831a3
...
@@ -171,7 +171,8 @@
...
@@ -171,7 +171,8 @@
/* ------------------------ RCS message definition ------------------------ */
/* ------------------------ RCS message definition ------------------------ */
typedef
struct
RCS_MESSAGEHEADERtag
{
typedef
struct
RCS_MESSAGEHEADERtag
{
unsigned
char
rx
;
/* receiver */
unsigned
char
rx
;
/* receiver */
unsigned
char
tx
;
/* transmitter */
unsigned
char
tx
;
/* transmitter */
unsigned
char
ln
;
/* lenght */
unsigned
char
ln
;
/* lenght */
...
@@ -182,7 +183,8 @@ typedef struct RCS_MESSAGEHEADERtag {
...
@@ -182,7 +183,8 @@ typedef struct RCS_MESSAGEHEADERtag {
unsigned
char
e
;
/* extension */
unsigned
char
e
;
/* extension */
}
RCS_MESSAGEHEADER
;
}
RCS_MESSAGEHEADER
;
typedef
struct
RCS_MESSAGEtag
{
typedef
struct
RCS_MESSAGEtag
{
unsigned
char
rx
;
/* receiver */
unsigned
char
rx
;
/* receiver */
unsigned
char
tx
;
/* transmitter */
unsigned
char
tx
;
/* transmitter */
unsigned
char
ln
;
/* lenght */
unsigned
char
ln
;
/* lenght */
...
@@ -197,7 +199,8 @@ typedef struct RCS_MESSAGEtag {
...
@@ -197,7 +199,8 @@ typedef struct RCS_MESSAGEtag {
/* ----------------- Standard telegram header ----------------------------- */
/* ----------------- Standard telegram header ----------------------------- */
/* Keyword: MESSAGE, TASK_B_10 --------------------------------------------*/
/* Keyword: MESSAGE, TASK_B_10 --------------------------------------------*/
typedef
struct
RCS_TELEGRAMHEADER_10tag
{
typedef
struct
RCS_TELEGRAMHEADER_10tag
{
unsigned
char
device_adr
;
/* device address */
unsigned
char
device_adr
;
/* device address */
unsigned
char
data_area
;
/* data area */
unsigned
char
data_area
;
/* data area */
unsigned
short
data_adr
;
/* data address */
unsigned
short
data_adr
;
/* data address */
...
@@ -207,7 +210,8 @@ typedef struct RCS_TELEGRAMHEADER_10tag {
...
@@ -207,7 +210,8 @@ typedef struct RCS_TELEGRAMHEADER_10tag {
unsigned
char
function
;
/* function */
unsigned
char
function
;
/* function */
}
RCS_TELEGRAMHEADER_10
;
}
RCS_TELEGRAMHEADER_10
;
typedef
struct
RCS_MESSAGETELEGRAMHEADER_10_tag
{
typedef
struct
RCS_MESSAGETELEGRAMHEADER_10_tag
{
unsigned
char
rx
;
/* receiver */
unsigned
char
rx
;
/* receiver */
unsigned
char
tx
;
/* transmitter */
unsigned
char
tx
;
/* transmitter */
unsigned
char
ln
;
/* lenght */
unsigned
char
ln
;
/* lenght */
...
@@ -225,7 +229,8 @@ typedef struct RCS_MESSAGETELEGRAMHEADER_10_tag {
...
@@ -225,7 +229,8 @@ typedef struct RCS_MESSAGETELEGRAMHEADER_10_tag {
unsigned
char
function
;
/* function */
unsigned
char
function
;
/* function */
}
RCS_MESSAGETELEGRAMHEADER_10
;
}
RCS_MESSAGETELEGRAMHEADER_10
;
typedef
struct
RCS_TELEGRAMHEADERDATA_10tag
{
typedef
struct
RCS_TELEGRAMHEADERDATA_10tag
{
unsigned
char
device_adr
;
unsigned
char
device_adr
;
unsigned
char
data_area
;
unsigned
char
data_area
;
unsigned
short
data_adr
;
unsigned
short
data_adr
;
...
@@ -237,7 +242,8 @@ typedef struct RCS_TELEGRAMHEADERDATA_10tag {
...
@@ -237,7 +242,8 @@ typedef struct RCS_TELEGRAMHEADERDATA_10tag {
d
[
RCS_SEGMENT_LEN
-
RCS_MESSAGEHEADER_LEN
-
RCS_TELEGRAMHEADER_LEN
];
d
[
RCS_SEGMENT_LEN
-
RCS_MESSAGEHEADER_LEN
-
RCS_TELEGRAMHEADER_LEN
];
}
RCS_TELEGRAMHEADERDATA_10
;
}
RCS_TELEGRAMHEADERDATA_10
;
typedef
struct
RCS_MESSAGETELEGRAM_10tag
{
typedef
struct
RCS_MESSAGETELEGRAM_10tag
{
unsigned
char
rx
;
/* receiver */
unsigned
char
rx
;
/* receiver */
unsigned
char
tx
;
/* transmitter */
unsigned
char
tx
;
/* transmitter */
unsigned
char
ln
;
/* lenght */
unsigned
char
ln
;
/* lenght */
...
...
profibus/lib/rt/src/rcsdef.h
View file @
df0831a3
profibus/lib/rt/src/rt_io_m_pb_ai.c
View file @
df0831a3
...
@@ -56,8 +56,8 @@
...
@@ -56,8 +56,8 @@
\*----------------------------------------------------------------------------*/
\*----------------------------------------------------------------------------*/
void
ConvertAi
(
pwr_sClass_ChanAi
*
cop
,
pwr_tInt16
nobits
,
pwr_tUInt8
rawvalue8
,
void
ConvertAi
(
pwr_sClass_ChanAi
*
cop
,
pwr_tInt16
nobits
,
pwr_tUInt8
rawvalue8
,
pwr_tUInt16
rawvalue16
,
pwr_tUInt32
rawvalue32
,
pwr_tFloat32
*
actvalue_p
,
pwr_tUInt16
rawvalue16
,
pwr_tUInt32
rawvalue32
,
pwr_tEnum
representation
)
pwr_tFloat32
*
actvalue_p
,
pwr_tEnum
representation
)
{
{
pwr_tFloat32
sigvalue
;
pwr_tFloat32
sigvalue
;
...
@@ -66,24 +66,30 @@ void ConvertAi(pwr_sClass_ChanAi* cop, pwr_tInt16 nobits, pwr_tUInt8 rawvalue8,
...
@@ -66,24 +66,30 @@ void ConvertAi(pwr_sClass_ChanAi* cop, pwr_tInt16 nobits, pwr_tUInt8 rawvalue8,
pwr_tFloat32
f_raw
=
0
.
0
;
pwr_tFloat32
f_raw
=
0
.
0
;
int
i
;
int
i
;
if
(
nobits
==
32
)
{
if
(
nobits
==
32
)
{
if
(
representation
==
PB_NUMREP_SIGNEDINT
)
if
(
representation
==
PB_NUMREP_SIGNEDINT
)
f_raw
=
(
float
)((
int
)
rawvalue32
);
f_raw
=
(
float
)((
int
)
rawvalue32
);
else
else
f_raw
=
(
float
)
rawvalue32
;
f_raw
=
(
float
)
rawvalue32
;
}
else
if
(
nobits
==
16
)
{
}
else
if
(
nobits
==
16
)
{
if
(
representation
==
PB_NUMREP_SIGNEDINT
)
if
(
representation
==
PB_NUMREP_SIGNEDINT
)
f_raw
=
(
float
)((
short
)
rawvalue16
);
f_raw
=
(
float
)((
short
)
rawvalue16
);
else
else
f_raw
=
(
float
)
rawvalue16
;
f_raw
=
(
float
)
rawvalue16
;
}
else
if
(
nobits
==
8
)
{
}
else
if
(
nobits
==
8
)
{
if
(
representation
==
PB_NUMREP_SIGNEDINT
)
if
(
representation
==
PB_NUMREP_SIGNEDINT
)
f_raw
=
(
float
)((
char
)
rawvalue8
);
f_raw
=
(
float
)((
char
)
rawvalue8
);
else
else
f_raw
=
(
float
)
rawvalue8
;
f_raw
=
(
float
)
rawvalue8
;
}
}
switch
(
cop
->
SensorPolyType
)
{
switch
(
cop
->
SensorPolyType
)
{
case
0
:
case
0
:
*
actvalue_p
=
cop
->
SigValPolyCoef0
+
cop
->
SigValPolyCoef1
*
f_raw
;
*
actvalue_p
=
cop
->
SigValPolyCoef0
+
cop
->
SigValPolyCoef1
*
f_raw
;
break
;
break
;
...
@@ -94,7 +100,8 @@ void ConvertAi(pwr_sClass_ChanAi* cop, pwr_tInt16 nobits, pwr_tUInt8 rawvalue8,
...
@@ -94,7 +100,8 @@ void ConvertAi(pwr_sClass_ChanAi* cop, pwr_tInt16 nobits, pwr_tUInt8 rawvalue8,
sigvalue
=
cop
->
SigValPolyCoef0
+
cop
->
SigValPolyCoef1
*
f_raw
;
sigvalue
=
cop
->
SigValPolyCoef0
+
cop
->
SigValPolyCoef1
*
f_raw
;
polycoef_p
=
&
cop
->
SensorPolyCoef2
;
polycoef_p
=
&
cop
->
SensorPolyCoef2
;
actvalue
=
0
;
actvalue
=
0
;
for
(
i
=
0
;
i
<
3
;
i
++
)
{
for
(
i
=
0
;
i
<
3
;
i
++
)
{
actvalue
=
sigvalue
*
actvalue
+
*
polycoef_p
;
actvalue
=
sigvalue
*
actvalue
+
*
polycoef_p
;
polycoef_p
--
;
polycoef_p
--
;
}
}
...
@@ -124,8 +131,9 @@ void ConvertAi(pwr_sClass_ChanAi* cop, pwr_tInt16 nobits, pwr_tUInt8 rawvalue8,
...
@@ -124,8 +131,9 @@ void ConvertAi(pwr_sClass_ChanAi* cop, pwr_tInt16 nobits, pwr_tUInt8 rawvalue8,
\*----------------------------------------------------------------------------*/
\*----------------------------------------------------------------------------*/
void
ConvertAit
(
pwr_sClass_ChanAit
*
cop
,
pwr_tInt16
nobits
,
void
ConvertAit
(
pwr_sClass_ChanAit
*
cop
,
pwr_tInt16
nobits
,
pwr_tUInt16
rawvalue8
,
pwr_tUInt16
rawvalue16
,
pwr_tUInt32
rawvalue32
,
pwr_tUInt16
rawvalue8
,
pwr_tUInt16
rawvalue16
,
pwr_tFloat32
*
actvalue_p
,
pwr_tEnum
representation
)
pwr_tUInt32
rawvalue32
,
pwr_tFloat32
*
actvalue_p
,
pwr_tEnum
representation
)
{
{
pwr_tFloat32
Slope
;
pwr_tFloat32
Slope
;
pwr_tFloat32
Intercept
;
pwr_tFloat32
Intercept
;
...
@@ -136,17 +144,22 @@ void ConvertAit(pwr_sClass_ChanAit* cop, pwr_tInt16 nobits,
...
@@ -136,17 +144,22 @@ void ConvertAit(pwr_sClass_ChanAit* cop, pwr_tInt16 nobits,
pwr_tFloat32
sigvalue
;
pwr_tFloat32
sigvalue
;
pwr_tFloat32
f_raw
=
0
.
0
;
pwr_tFloat32
f_raw
=
0
.
0
;
if
(
nobits
==
32
)
{
if
(
nobits
==
32
)
{
if
(
representation
==
PB_NUMREP_SIGNEDINT
)
if
(
representation
==
PB_NUMREP_SIGNEDINT
)
f_raw
=
(
float
)((
int
)
rawvalue32
);
f_raw
=
(
float
)((
int
)
rawvalue32
);
else
else
f_raw
=
(
float
)
rawvalue32
;
f_raw
=
(
float
)
rawvalue32
;
}
else
if
(
nobits
==
16
)
{
}
else
if
(
nobits
==
16
)
{
if
(
representation
==
PB_NUMREP_SIGNEDINT
)
if
(
representation
==
PB_NUMREP_SIGNEDINT
)
f_raw
=
(
float
)((
short
)
rawvalue16
);
f_raw
=
(
float
)((
short
)
rawvalue16
);
else
else
f_raw
=
(
float
)
rawvalue16
;
f_raw
=
(
float
)
rawvalue16
;
}
else
if
(
nobits
==
8
)
{
}
else
if
(
nobits
==
8
)
{
if
(
representation
==
PB_NUMREP_SIGNEDINT
)
if
(
representation
==
PB_NUMREP_SIGNEDINT
)
f_raw
=
(
float
)((
char
)
rawvalue8
);
f_raw
=
(
float
)((
char
)
rawvalue8
);
else
else
...
@@ -157,7 +170,8 @@ void ConvertAit(pwr_sClass_ChanAit* cop, pwr_tInt16 nobits,
...
@@ -157,7 +170,8 @@ void ConvertAit(pwr_sClass_ChanAit* cop, pwr_tInt16 nobits,
Last
=
cop
->
NoOfCoordinates
;
Last
=
cop
->
NoOfCoordinates
;
while
((
Last
-
First
)
>
1
)
{
while
((
Last
-
First
)
>
1
)
{
Middle
=
(
First
+
Last
)
/
2
;
Middle
=
(
First
+
Last
)
/
2
;
TransTabValue
=
cop
->
InValue
[
Middle
];
TransTabValue
=
cop
->
InValue
[
Middle
];
if
(
sigvalue
<
TransTabValue
)
if
(
sigvalue
<
TransTabValue
)
...
@@ -174,8 +188,8 @@ void ConvertAit(pwr_sClass_ChanAit* cop, pwr_tInt16 nobits,
...
@@ -174,8 +188,8 @@ void ConvertAit(pwr_sClass_ChanAit* cop, pwr_tInt16 nobits,
/*----------------------------------------------------------------------------*\
/*----------------------------------------------------------------------------*\
Init method for the Pb module Ai
Init method for the Pb module Ai
\*----------------------------------------------------------------------------*/
\*----------------------------------------------------------------------------*/
static
pwr_tStatus
IoCardInit
(
static
pwr_tStatus
IoCardInit
(
io_tCtx
ctx
,
io_sAgent
*
ap
,
io_sRack
*
rp
,
io_tCtx
ctx
,
io_sAgent
*
ap
,
io_sRack
*
rp
,
io_sCard
*
cp
)
io_sCard
*
cp
)
{
{
io_sCardLocal
*
local
;
io_sCardLocal
*
local
;
pwr_sClass_Pb_Ai
*
op
;
pwr_sClass_Pb_Ai
*
op
;
...
@@ -185,23 +199,28 @@ static pwr_tStatus IoCardInit(
...
@@ -185,23 +199,28 @@ static pwr_tStatus IoCardInit(
op
=
(
pwr_sClass_Pb_Ai
*
)
cp
->
op
;
op
=
(
pwr_sClass_Pb_Ai
*
)
cp
->
op
;
local
=
(
io_sCardLocal
*
)
cp
->
Local
;
local
=
(
io_sCardLocal
*
)
cp
->
Local
;
if
(
rp
->
Class
!=
pwr_cClass_Pb_DP_Slave
)
{
if
(
rp
->
Class
!=
pwr_cClass_Pb_DP_Slave
)
{
errh_Info
(
"Illegal object type %s"
,
cp
->
Name
);
errh_Info
(
"Illegal object type %s"
,
cp
->
Name
);
return
1
;
return
1
;
}
}
if
(
op
->
Status
>=
PB_MODULE_STATE_OPERATE
)
{
if
(
op
->
Status
>=
PB_MODULE_STATE_OPERATE
)
for
(
i
=
0
;
i
<
IO_MAXCHAN
;
i
++
)
{
{
for
(
i
=
0
;
i
<
IO_MAXCHAN
;
i
++
)
{
local
->
scancount
[
i
]
=
0
;
local
->
scancount
[
i
]
=
0
;
}
}
// Calculate polycoeff
// Calculate polycoeff
for
(
i
=
0
;
i
<
cp
->
ChanListSize
;
i
++
)
{
for
(
i
=
0
;
i
<
cp
->
ChanListSize
;
i
++
)
{
chanp
=
&
cp
->
chanlist
[
i
];
chanp
=
&
cp
->
chanlist
[
i
];
if
(
!
chanp
->
cop
)
if
(
!
chanp
->
cop
)
continue
;
continue
;
io_AiRangeToCoef
(
chanp
);
io_AiRangeToCoef
(
chanp
);
}
}
}
else
}
else
errh_Info
(
"Error initializing Pb module Ai %s"
,
cp
->
Name
);
errh_Info
(
"Error initializing Pb module Ai %s"
,
cp
->
Name
);
return
IO__SUCCESS
;
return
IO__SUCCESS
;
...
@@ -210,8 +229,8 @@ static pwr_tStatus IoCardInit(
...
@@ -210,8 +229,8 @@ static pwr_tStatus IoCardInit(
/*----------------------------------------------------------------------------*\
/*----------------------------------------------------------------------------*\
Read method for the Pb Ai card
Read method for the Pb Ai card
\*----------------------------------------------------------------------------*/
\*----------------------------------------------------------------------------*/
static
pwr_tStatus
IoCardRead
(
static
pwr_tStatus
IoCardRead
(
io_tCtx
ctx
,
io_sAgent
*
ap
,
io_sRack
*
rp
,
io_tCtx
ctx
,
io_sAgent
*
ap
,
io_sRack
*
rp
,
io_sCard
*
cp
)
io_sCard
*
cp
)
{
{
io_sCardLocal
*
local
;
io_sCardLocal
*
local
;
pwr_sClass_Pb_Ai
*
op
;
pwr_sClass_Pb_Ai
*
op
;
...
@@ -232,8 +251,10 @@ static pwr_tStatus IoCardRead(
...
@@ -232,8 +251,10 @@ static pwr_tStatus IoCardRead(
op
=
(
pwr_sClass_Pb_Ai
*
)
cp
->
op
;
op
=
(
pwr_sClass_Pb_Ai
*
)
cp
->
op
;
slave
=
(
pwr_sClass_Pb_DP_Slave
*
)
rp
->
op
;
slave
=
(
pwr_sClass_Pb_DP_Slave
*
)
rp
->
op
;
if
(
op
->
Status
>=
PB_MODULE_STATE_OPERATE
&&
slave
->
DisableSlave
!=
1
)
{
if
(
op
->
Status
>=
PB_MODULE_STATE_OPERATE
&&
slave
->
DisableSlave
!=
1
)
for
(
i
=
0
;
i
<
cp
->
ChanListSize
;
i
++
)
{
{
for
(
i
=
0
;
i
<
cp
->
ChanListSize
;
i
++
)
{
chanp
=
&
cp
->
chanlist
[
i
];
chanp
=
&
cp
->
chanlist
[
i
];
if
(
!
chanp
->
cop
||
!
chanp
->
sop
)
if
(
!
chanp
->
cop
||
!
chanp
->
sop
)
continue
;
continue
;
...
@@ -244,71 +265,82 @@ static pwr_tStatus IoCardRead(
...
@@ -244,71 +265,82 @@ static pwr_tStatus IoCardRead(
if
(
cop
->
CalculateNewCoef
)
if
(
cop
->
CalculateNewCoef
)
io_AiRangeToCoef
(
chanp
);
io_AiRangeToCoef
(
chanp
);
if
(
cop
->
ConversionOn
)
{
if
(
cop
->
ConversionOn
)
if
(
local
->
scancount
[
i
]
<=
1
)
{
{
if
(
op
->
BytesPerChannel
==
4
)
{
if
(
local
->
scancount
[
i
]
<=
1
)
{
if
(
op
->
BytesPerChannel
==
4
)
{
memcpy
(
&
udata32
,
local
->
input_area
+
op
->
OffsetInputs
+
4
*
i
,
4
);
memcpy
(
&
udata32
,
local
->
input_area
+
op
->
OffsetInputs
+
4
*
i
,
4
);
if
(
slave
->
ByteOrdering
==
pwr_eByteOrderingEnum_BigEndian
)
if
(
slave
->
ByteOrdering
==
pwr_eByteOrderingEnum_BigEndian
)
udata32
=
swap32
(
udata32
);
udata32
=
swap32
(
udata32
);
data32
=
(
pwr_tInt32
)
udata32
;
data32
=
(
pwr_tInt32
)
udata32
;
sop
->
RawValue
=
0
;
sop
->
RawValue
=
0
;
if
(
op
->
NumberRepresentation
==
PB_NUMREP_UNSIGNEDINT
)
if
(
op
->
NumberRepresentation
==
PB_NUMREP_UNSIGNEDINT
)
sop
->
SigValue
sop
->
SigValue
=
=
udata32
*
cop
->
SigValPolyCoef1
+
cop
->
SigValPolyCoef0
;
udata32
*
cop
->
SigValPolyCoef1
+
cop
->
SigValPolyCoef0
;
else
else
sop
->
SigValue
sop
->
SigValue
=
=
data32
*
cop
->
SigValPolyCoef1
+
cop
->
SigValPolyCoef0
;
data32
*
cop
->
SigValPolyCoef1
+
cop
->
SigValPolyCoef0
;
switch
(
chanp
->
ChanClass
)
{
switch
(
chanp
->
ChanClass
)
{
case
pwr_cClass_ChanAi
:
case
pwr_cClass_ChanAi
:
ConvertAi
(
ConvertAi
(
cop
,
32
,
0
,
0
,
udata32
,
&
actvalue
,
cop
,
32
,
0
,
0
,
udata32
,
&
actvalue
,
op
->
NumberRepresentation
);
op
->
NumberRepresentation
);
break
;
break
;
case
pwr_cClass_ChanAit
:
case
pwr_cClass_ChanAit
:
ConvertAit
((
pwr_sClass_ChanAit
*
)
cop
,
32
,
0
,
0
,
udata32
,
&
actvalue
,
ConvertAit
((
pwr_sClass_ChanAit
*
)
cop
,
32
,
0
,
0
,
udata32
,
&
actvalue
,
op
->
NumberRepresentation
);
op
->
NumberRepresentation
);
break
;
break
;
}
}
}
else
if
(
op
->
BytesPerChannel
==
3
)
{
}
else
if
(
op
->
BytesPerChannel
==
3
)
{
udata32
=
0
;
udata32
=
0
;
memcpy
(
&
udata32
,
local
->
input_area
+
op
->
OffsetInputs
+
3
*
i
,
3
);
memcpy
(
&
udata32
,
local
->
input_area
+
op
->
OffsetInputs
+
3
*
i
,
3
);
if
(
slave
->
ByteOrdering
==
pwr_eByteOrderingEnum_BigEndian
)
{
if
(
slave
->
ByteOrdering
==
pwr_eByteOrderingEnum_BigEndian
)
{
udata32
=
swap32
(
udata32
);
udata32
=
swap32
(
udata32
);
udata32
=
udata32
>>
8
;
udata32
=
udata32
>>
8
;
}
}
data32
=
(
pwr_tInt32
)
udata32
;
data32
=
(
pwr_tInt32
)
udata32
;
sop
->
RawValue
=
0
;
sop
->
RawValue
=
0
;
if
(
op
->
NumberRepresentation
==
PB_NUMREP_UNSIGNEDINT
)
if
(
op
->
NumberRepresentation
==
PB_NUMREP_UNSIGNEDINT
)
sop
->
SigValue
sop
->
SigValue
=
=
udata32
*
cop
->
SigValPolyCoef1
+
cop
->
SigValPolyCoef0
;
udata32
*
cop
->
SigValPolyCoef1
+
cop
->
SigValPolyCoef0
;
else
else
sop
->
SigValue
sop
->
SigValue
=
=
data32
*
cop
->
SigValPolyCoef1
+
cop
->
SigValPolyCoef0
;
data32
*
cop
->
SigValPolyCoef1
+
cop
->
SigValPolyCoef0
;
switch
(
chanp
->
ChanClass
)
{
switch
(
chanp
->
ChanClass
)
{
case
pwr_cClass_ChanAi
:
case
pwr_cClass_ChanAi
:
ConvertAi
(
ConvertAi
(
cop
,
32
,
0
,
0
,
udata32
,
&
actvalue
,
cop
,
32
,
0
,
0
,
udata32
,
&
actvalue
,
op
->
NumberRepresentation
);
op
->
NumberRepresentation
);
break
;
break
;
case
pwr_cClass_ChanAit
:
case
pwr_cClass_ChanAit
:
ConvertAit
((
pwr_sClass_ChanAit
*
)
cop
,
32
,
0
,
0
,
udata32
,
&
actvalue
,
ConvertAit
((
pwr_sClass_ChanAit
*
)
cop
,
32
,
0
,
0
,
udata32
,
&
actvalue
,
op
->
NumberRepresentation
);
op
->
NumberRepresentation
);
break
;
break
;
}
}
}
else
if
(
op
->
BytesPerChannel
==
2
)
{
}
else
if
(
op
->
BytesPerChannel
==
2
)
{
memcpy
(
&
udata16
,
local
->
input_area
+
op
->
OffsetInputs
+
2
*
i
,
2
);
memcpy
(
&
udata16
,
local
->
input_area
+
op
->
OffsetInputs
+
2
*
i
,
2
);
if
(
slave
->
ByteOrdering
==
pwr_eByteOrderingEnum_BigEndian
)
if
(
slave
->
ByteOrdering
==
pwr_eByteOrderingEnum_BigEndian
)
udata16
=
swap16
(
udata16
);
udata16
=
swap16
(
udata16
);
data16
=
(
pwr_tInt16
)
udata16
;
data16
=
(
pwr_tInt16
)
udata16
;
sop
->
RawValue
=
udata16
;
sop
->
RawValue
=
udata16
;
if
(
op
->
NumberRepresentation
==
PB_NUMREP_UNSIGNEDINT
)
if
(
op
->
NumberRepresentation
==
PB_NUMREP_UNSIGNEDINT
)
sop
->
SigValue
sop
->
SigValue
=
=
udata16
*
cop
->
SigValPolyCoef1
+
cop
->
SigValPolyCoef0
;
udata16
*
cop
->
SigValPolyCoef1
+
cop
->
SigValPolyCoef0
;
else
else
sop
->
SigValue
sop
->
SigValue
=
=
data16
*
cop
->
SigValPolyCoef1
+
cop
->
SigValPolyCoef0
;
data16
*
cop
->
SigValPolyCoef1
+
cop
->
SigValPolyCoef0
;
switch
(
chanp
->
ChanClass
)
{
switch
(
chanp
->
ChanClass
)
{
case
pwr_cClass_ChanAi
:
case
pwr_cClass_ChanAi
:
ConvertAi
(
ConvertAi
(
cop
,
16
,
0
,
udata16
,
0
,
&
actvalue
,
cop
,
16
,
0
,
udata16
,
0
,
&
actvalue
,
op
->
NumberRepresentation
);
op
->
NumberRepresentation
);
break
;
break
;
case
pwr_cClass_ChanAit
:
case
pwr_cClass_ChanAit
:
ConvertAit
((
pwr_sClass_ChanAit
*
)
cop
,
16
,
0
,
udata16
,
0
,
&
actvalue
,
ConvertAit
((
pwr_sClass_ChanAit
*
)
cop
,
16
,
0
,
udata16
,
0
,
&
actvalue
,
...
@@ -317,20 +349,22 @@ static pwr_tStatus IoCardRead(
...
@@ -317,20 +349,22 @@ static pwr_tStatus IoCardRead(
}
}
}
}
else
if
(
op
->
BytesPerChannel
==
1
)
{
else
if
(
op
->
BytesPerChannel
==
1
)
{
memcpy
(
&
udata8
,
local
->
input_area
+
op
->
OffsetInputs
+
i
,
1
);
memcpy
(
&
udata8
,
local
->
input_area
+
op
->
OffsetInputs
+
i
,
1
);
data8
=
(
pwr_tInt8
)
udata8
;
data8
=
(
pwr_tInt8
)
udata8
;
sop
->
RawValue
=
udata8
;
sop
->
RawValue
=
udata8
;
if
(
op
->
NumberRepresentation
==
PB_NUMREP_UNSIGNEDINT
)
if
(
op
->
NumberRepresentation
==
PB_NUMREP_UNSIGNEDINT
)
sop
->
SigValue
sop
->
SigValue
=
=
udata8
*
cop
->
SigValPolyCoef1
+
cop
->
SigValPolyCoef0
;
udata8
*
cop
->
SigValPolyCoef1
+
cop
->
SigValPolyCoef0
;
else
else
sop
->
SigValue
sop
->
SigValue
=
=
data8
*
cop
->
SigValPolyCoef1
+
cop
->
SigValPolyCoef0
;
data8
*
cop
->
SigValPolyCoef1
+
cop
->
SigValPolyCoef0
;
switch
(
chanp
->
ChanClass
)
{
switch
(
chanp
->
ChanClass
)
{
case
pwr_cClass_ChanAi
:
case
pwr_cClass_ChanAi
:
ConvertAi
(
ConvertAi
(
cop
,
8
,
udata8
,
0
,
0
,
&
actvalue
,
cop
,
8
,
udata8
,
0
,
0
,
&
actvalue
,
op
->
NumberRepresentation
);
op
->
NumberRepresentation
);
break
;
break
;
case
pwr_cClass_ChanAit
:
case
pwr_cClass_ChanAit
:
ConvertAit
((
pwr_sClass_ChanAit
*
)
cop
,
8
,
udata8
,
0
,
0
,
&
actvalue
,
ConvertAit
((
pwr_sClass_ChanAit
*
)
cop
,
8
,
udata8
,
0
,
0
,
&
actvalue
,
...
@@ -340,11 +374,12 @@ static pwr_tStatus IoCardRead(
...
@@ -340,11 +374,12 @@ static pwr_tStatus IoCardRead(
}
}
// Filter
// Filter
if
(
sop
->
FilterType
==
1
&&
sop
->
FilterAttribute
[
0
]
>
0
if
(
sop
->
FilterType
==
1
&&
sop
->
FilterAttribute
[
0
]
>
0
&&
&&
sop
->
FilterAttribute
[
0
]
>
ctx
->
ScanTime
)
{
sop
->
FilterAttribute
[
0
]
>
ctx
->
ScanTime
)
actvalue
=
*
(
pwr_tFloat32
*
)
chanp
->
vbp
{
+
ctx
->
ScanTime
/
sop
->
FilterAttribute
[
0
]
actvalue
=
*
(
pwr_tFloat32
*
)
chanp
->
vbp
+
*
(
actvalue
-
*
(
pwr_tFloat32
*
)
chanp
->
vbp
);
ctx
->
ScanTime
/
sop
->
FilterAttribute
[
0
]
*
(
actvalue
-
*
(
pwr_tFloat32
*
)
chanp
->
vbp
);
}
}
*
(
pwr_tFloat32
*
)
chanp
->
vbp
=
actvalue
;
*
(
pwr_tFloat32
*
)
chanp
->
vbp
=
actvalue
;
...
@@ -362,8 +397,8 @@ static pwr_tStatus IoCardRead(
...
@@ -362,8 +397,8 @@ static pwr_tStatus IoCardRead(
/*----------------------------------------------------------------------------*\
/*----------------------------------------------------------------------------*\
Close method for the Pb Ai card
Close method for the Pb Ai card
\*----------------------------------------------------------------------------*/
\*----------------------------------------------------------------------------*/
static
pwr_tStatus
IoCardClose
(
static
pwr_tStatus
IoCardClose
(
io_tCtx
ctx
,
io_sAgent
*
ap
,
io_sRack
*
rp
,
io_tCtx
ctx
,
io_sAgent
*
ap
,
io_sRack
*
rp
,
io_sCard
*
cp
)
io_sCard
*
cp
)
{
{
io_sCardLocal
*
local
;
io_sCardLocal
*
local
;
local
=
cp
->
Local
;
local
=
cp
->
Local
;
...
@@ -377,5 +412,6 @@ static pwr_tStatus IoCardClose(
...
@@ -377,5 +412,6 @@ static pwr_tStatus IoCardClose(
Every method to be exported to the workbench should be registred here.
Every method to be exported to the workbench should be registred here.
\*----------------------------------------------------------------------------*/
\*----------------------------------------------------------------------------*/
pwr_dExport
pwr_BindIoMethods
(
Pb_Ai
)
=
{
pwr_BindIoMethod
(
IoCardInit
),
pwr_dExport
pwr_BindIoMethods
(
Pb_Ai
)
=
{
pwr_BindIoMethod
(
IoCardRead
),
pwr_BindIoMethod
(
IoCardClose
),
pwr_NullMethod
};
pwr_BindIoMethod
(
IoCardInit
),
pwr_BindIoMethod
(
IoCardRead
),
pwr_BindIoMethod
(
IoCardClose
),
pwr_NullMethod
};
profibus/lib/rt/src/rt_io_m_pb_ao.c
View file @
df0831a3
...
@@ -52,8 +52,8 @@
...
@@ -52,8 +52,8 @@
/*----------------------------------------------------------------------------*\
/*----------------------------------------------------------------------------*\
Init method for the Pb module Ao
Init method for the Pb module Ao
\*----------------------------------------------------------------------------*/
\*----------------------------------------------------------------------------*/
static
pwr_tStatus
IoCardInit
(
static
pwr_tStatus
IoCardInit
(
io_tCtx
ctx
,
io_sAgent
*
ap
,
io_sRack
*
rp
,
io_tCtx
ctx
,
io_sAgent
*
ap
,
io_sRack
*
rp
,
io_sCard
*
cp
)
io_sCard
*
cp
)
{
{
io_sCardLocal
*
local
;
io_sCardLocal
*
local
;
pwr_sClass_Pb_Ao
*
op
;
pwr_sClass_Pb_Ao
*
op
;
...
@@ -63,20 +63,24 @@ static pwr_tStatus IoCardInit(
...
@@ -63,20 +63,24 @@ static pwr_tStatus IoCardInit(
op
=
(
pwr_sClass_Pb_Ao
*
)
cp
->
op
;
op
=
(
pwr_sClass_Pb_Ao
*
)
cp
->
op
;
local
=
(
io_sCardLocal
*
)
cp
->
Local
;
local
=
(
io_sCardLocal
*
)
cp
->
Local
;
if
(
rp
->
Class
!=
pwr_cClass_Pb_DP_Slave
)
{
if
(
rp
->
Class
!=
pwr_cClass_Pb_DP_Slave
)
{
errh_Info
(
"Illegal object type %s"
,
cp
->
Name
);
errh_Info
(
"Illegal object type %s"
,
cp
->
Name
);
return
IO__SUCCESS
;
return
IO__SUCCESS
;
}
}
if
(
op
->
Status
>=
PB_MODULE_STATE_OPERATE
)
{
if
(
op
->
Status
>=
PB_MODULE_STATE_OPERATE
)
{
// Calculate polycoeff
// Calculate polycoeff
for
(
i
=
0
;
i
<
cp
->
ChanListSize
;
i
++
)
{
for
(
i
=
0
;
i
<
cp
->
ChanListSize
;
i
++
)
{
chanp
=
&
cp
->
chanlist
[
i
];
chanp
=
&
cp
->
chanlist
[
i
];
if
(
!
chanp
->
cop
)
if
(
!
chanp
->
cop
)
continue
;
continue
;
io_AoRangeToCoef
(
chanp
);
io_AoRangeToCoef
(
chanp
);
}
}
}
else
}
else
errh_Info
(
"Error initializing Pb module Ao %s"
,
cp
->
Name
);
errh_Info
(
"Error initializing Pb module Ao %s"
,
cp
->
Name
);
return
IO__SUCCESS
;
return
IO__SUCCESS
;
...
@@ -85,8 +89,8 @@ static pwr_tStatus IoCardInit(
...
@@ -85,8 +89,8 @@ static pwr_tStatus IoCardInit(
/*----------------------------------------------------------------------------*\
/*----------------------------------------------------------------------------*\
Write method for the Pb module Ao
Write method for the Pb module Ao
\*----------------------------------------------------------------------------*/
\*----------------------------------------------------------------------------*/
static
pwr_tStatus
IoCardWrite
(
static
pwr_tStatus
IoCardWrite
(
io_tCtx
ctx
,
io_sAgent
*
ap
,
io_sRack
*
rp
,
io_tCtx
ctx
,
io_sAgent
*
ap
,
io_sRack
*
rp
,
io_sCard
*
cp
)
io_sCard
*
cp
)
{
{
io_sCardLocal
*
local
;
io_sCardLocal
*
local
;
pwr_sClass_Pb_Ao
*
op
;
pwr_sClass_Pb_Ao
*
op
;
...
@@ -109,10 +113,12 @@ static pwr_tStatus IoCardWrite(
...
@@ -109,10 +113,12 @@ static pwr_tStatus IoCardWrite(
op
=
(
pwr_sClass_Pb_Ao
*
)
cp
->
op
;
op
=
(
pwr_sClass_Pb_Ao
*
)
cp
->
op
;
slave
=
(
pwr_sClass_Pb_DP_Slave
*
)
rp
->
op
;
slave
=
(
pwr_sClass_Pb_DP_Slave
*
)
rp
->
op
;
if
(
op
->
Status
>=
PB_MODULE_STATE_OPERATE
&&
slave
->
DisableSlave
!=
1
)
{
if
(
op
->
Status
>=
PB_MODULE_STATE_OPERATE
&&
slave
->
DisableSlave
!=
1
)
{
fixout
=
ctx
->
Node
->
EmergBreakTrue
&&
ctx
->
Node
->
EmergBreakSelect
==
FIXOUT
;
fixout
=
ctx
->
Node
->
EmergBreakTrue
&&
ctx
->
Node
->
EmergBreakSelect
==
FIXOUT
;
for
(
i
=
0
;
i
<
cp
->
ChanListSize
;
i
++
)
{
for
(
i
=
0
;
i
<
cp
->
ChanListSize
;
i
++
)
{
chanp
=
&
cp
->
chanlist
[
i
];
chanp
=
&
cp
->
chanlist
[
i
];
if
(
!
chanp
->
cop
||
!
chanp
->
sop
)
if
(
!
chanp
->
cop
||
!
chanp
->
sop
)
continue
;
continue
;
...
@@ -125,7 +131,8 @@ static pwr_tStatus IoCardWrite(
...
@@ -125,7 +131,8 @@ static pwr_tStatus IoCardWrite(
value
=
cop
->
FixedOutValue
;
value
=
cop
->
FixedOutValue
;
else
if
(
cop
->
TestOn
)
else
if
(
cop
->
TestOn
)
value
=
cop
->
TestValue
;
value
=
cop
->
TestValue
;
else
{
else
{
value
=
*
(
pwr_tFloat32
*
)
chanp
->
vbp
;
value
=
*
(
pwr_tFloat32
*
)
chanp
->
vbp
;
}
}
...
@@ -152,50 +159,66 @@ static pwr_tStatus IoCardWrite(
...
@@ -152,50 +159,66 @@ static pwr_tStatus IoCardWrite(
// Calculate signal value
// Calculate signal value
sop
->
SigValue
=
cop
->
SigValPolyCoef1
*
value
+
cop
->
SigValPolyCoef0
;
sop
->
SigValue
=
cop
->
SigValPolyCoef1
*
value
+
cop
->
SigValPolyCoef0
;
if
(
op
->
BytesPerChannel
==
4
)
{
if
(
op
->
BytesPerChannel
==
4
)
if
(
op
->
NumberRepresentation
==
PB_NUMREP_UNSIGNEDINT
)
{
{
if
(
op
->
NumberRepresentation
==
PB_NUMREP_UNSIGNEDINT
)
{
udata32
=
(
pwr_tUInt32
)
rawvalue
;
udata32
=
(
pwr_tUInt32
)
rawvalue
;
if
(
slave
->
ByteOrdering
==
pwr_eByteOrderingEnum_BigEndian
)
if
(
slave
->
ByteOrdering
==
pwr_eByteOrderingEnum_BigEndian
)
udata32
=
swap32
(
udata32
);
udata32
=
swap32
(
udata32
);
memcpy
(
local
->
output_area
+
op
->
OffsetOutputs
+
4
*
i
,
&
udata32
,
4
);
memcpy
(
local
->
output_area
+
op
->
OffsetOutputs
+
4
*
i
,
&
udata32
,
4
);
}
else
if
(
op
->
NumberRepresentation
==
PB_NUMREP_SIGNEDINT
)
{
}
else
if
(
op
->
NumberRepresentation
==
PB_NUMREP_SIGNEDINT
)
{
data32
=
(
pwr_tInt32
)
rawvalue
;
data32
=
(
pwr_tInt32
)
rawvalue
;
if
(
slave
->
ByteOrdering
==
pwr_eByteOrderingEnum_BigEndian
)
if
(
slave
->
ByteOrdering
==
pwr_eByteOrderingEnum_BigEndian
)
data32
=
swap32
(
data32
);
data32
=
swap32
(
data32
);
memcpy
(
local
->
output_area
+
op
->
OffsetOutputs
+
4
*
i
,
&
data32
,
4
);
memcpy
(
local
->
output_area
+
op
->
OffsetOutputs
+
4
*
i
,
&
data32
,
4
);
}
}
}
}
else
if
(
op
->
BytesPerChannel
==
3
)
{
else
if
(
op
->
BytesPerChannel
==
3
)
if
(
op
->
NumberRepresentation
==
PB_NUMREP_UNSIGNEDINT
)
{
{
if
(
op
->
NumberRepresentation
==
PB_NUMREP_UNSIGNEDINT
)
{
udata32
=
(
pwr_tUInt32
)
rawvalue
;
udata32
=
(
pwr_tUInt32
)
rawvalue
;
if
(
slave
->
ByteOrdering
==
pwr_eByteOrderingEnum_BigEndian
)
if
(
slave
->
ByteOrdering
==
pwr_eByteOrderingEnum_BigEndian
)
udata32
=
swap32
(
udata32
);
udata32
=
swap32
(
udata32
);
memcpy
(
local
->
output_area
+
op
->
OffsetOutputs
+
3
*
i
,
&
udata32
,
3
);
memcpy
(
local
->
output_area
+
op
->
OffsetOutputs
+
3
*
i
,
&
udata32
,
3
);
}
else
if
(
op
->
NumberRepresentation
==
PB_NUMREP_SIGNEDINT
)
{
}
else
if
(
op
->
NumberRepresentation
==
PB_NUMREP_SIGNEDINT
)
{
data32
=
(
pwr_tInt32
)
rawvalue
;
data32
=
(
pwr_tInt32
)
rawvalue
;
if
(
slave
->
ByteOrdering
==
pwr_eByteOrderingEnum_BigEndian
)
if
(
slave
->
ByteOrdering
==
pwr_eByteOrderingEnum_BigEndian
)
data32
=
swap32
(
data32
);
data32
=
swap32
(
data32
);
memcpy
(
local
->
output_area
+
op
->
OffsetOutputs
+
3
*
i
,
&
data32
,
3
);
memcpy
(
local
->
output_area
+
op
->
OffsetOutputs
+
3
*
i
,
&
data32
,
3
);
}
}
}
}
else
if
(
op
->
BytesPerChannel
==
2
)
{
else
if
(
op
->
BytesPerChannel
==
2
)
if
(
op
->
NumberRepresentation
==
PB_NUMREP_UNSIGNEDINT
)
{
{
if
(
op
->
NumberRepresentation
==
PB_NUMREP_UNSIGNEDINT
)
{
udata16
=
(
pwr_tUInt16
)
rawvalue
;
udata16
=
(
pwr_tUInt16
)
rawvalue
;
if
(
slave
->
ByteOrdering
==
pwr_eByteOrderingEnum_BigEndian
)
if
(
slave
->
ByteOrdering
==
pwr_eByteOrderingEnum_BigEndian
)
udata16
=
swap16
(
udata16
);
udata16
=
swap16
(
udata16
);
memcpy
(
local
->
output_area
+
op
->
OffsetOutputs
+
2
*
i
,
&
udata16
,
2
);
memcpy
(
local
->
output_area
+
op
->
OffsetOutputs
+
2
*
i
,
&
udata16
,
2
);
}
else
if
(
op
->
NumberRepresentation
==
PB_NUMREP_SIGNEDINT
)
{
}
else
if
(
op
->
NumberRepresentation
==
PB_NUMREP_SIGNEDINT
)
{
data16
=
(
pwr_tInt16
)
rawvalue
;
data16
=
(
pwr_tInt16
)
rawvalue
;
if
(
slave
->
ByteOrdering
==
pwr_eByteOrderingEnum_BigEndian
)
if
(
slave
->
ByteOrdering
==
pwr_eByteOrderingEnum_BigEndian
)
data16
=
swap16
(
data16
);
data16
=
swap16
(
data16
);
memcpy
(
local
->
output_area
+
op
->
OffsetOutputs
+
2
*
i
,
&
data16
,
2
);
memcpy
(
local
->
output_area
+
op
->
OffsetOutputs
+
2
*
i
,
&
data16
,
2
);
}
}
}
}
else
if
(
op
->
BytesPerChannel
==
1
)
{
else
if
(
op
->
BytesPerChannel
==
1
)
if
(
op
->
NumberRepresentation
==
PB_NUMREP_UNSIGNEDINT
)
{
{
if
(
op
->
NumberRepresentation
==
PB_NUMREP_UNSIGNEDINT
)
{
udata8
=
(
pwr_tUInt8
)
rawvalue
;
udata8
=
(
pwr_tUInt8
)
rawvalue
;
memcpy
(
local
->
output_area
+
op
->
OffsetOutputs
+
i
,
&
udata8
,
1
);
memcpy
(
local
->
output_area
+
op
->
OffsetOutputs
+
i
,
&
udata8
,
1
);
}
else
if
(
op
->
NumberRepresentation
==
PB_NUMREP_SIGNEDINT
)
{
}
else
if
(
op
->
NumberRepresentation
==
PB_NUMREP_SIGNEDINT
)
{
data8
=
(
pwr_tInt8
)
rawvalue
;
data8
=
(
pwr_tInt8
)
rawvalue
;
memcpy
(
local
->
output_area
+
op
->
OffsetOutputs
+
i
,
&
data8
,
1
);
memcpy
(
local
->
output_area
+
op
->
OffsetOutputs
+
i
,
&
data8
,
1
);
}
}
...
@@ -209,8 +232,8 @@ static pwr_tStatus IoCardWrite(
...
@@ -209,8 +232,8 @@ static pwr_tStatus IoCardWrite(
/*----------------------------------------------------------------------------*\
/*----------------------------------------------------------------------------*\
\*----------------------------------------------------------------------------*/
\*----------------------------------------------------------------------------*/
static
pwr_tStatus
IoCardClose
(
static
pwr_tStatus
IoCardClose
(
io_tCtx
ctx
,
io_sAgent
*
ap
,
io_sRack
*
rp
,
io_tCtx
ctx
,
io_sAgent
*
ap
,
io_sRack
*
rp
,
io_sCard
*
cp
)
io_sCard
*
cp
)
{
{
io_sCardLocal
*
local
;
io_sCardLocal
*
local
;
local
=
cp
->
Local
;
local
=
cp
->
Local
;
...
@@ -224,6 +247,6 @@ static pwr_tStatus IoCardClose(
...
@@ -224,6 +247,6 @@ static pwr_tStatus IoCardClose(
Every method to be exported to the workbench should be registred here.
Every method to be exported to the workbench should be registred here.
\*----------------------------------------------------------------------------*/
\*----------------------------------------------------------------------------*/
pwr_dExport
pwr_BindIoMethods
(
Pb_Ao
)
pwr_dExport
pwr_BindIoMethods
(
Pb_Ao
)
=
{
=
{
pwr_BindIoMethod
(
IoCardInit
),
pwr_BindIoMethod
(
IoCardWrite
),
pwr_BindIoMethod
(
IoCardInit
),
pwr_BindIoMethod
(
IoCardWrite
),
pwr_BindIoMethod
(
IoCardClose
),
pwr_NullMethod
};
pwr_BindIoMethod
(
IoCardClose
),
pwr_NullMethod
};
profibus/lib/rt/src/rt_io_m_pb_di.c
View file @
df0831a3
...
@@ -54,8 +54,8 @@
...
@@ -54,8 +54,8 @@
/*----------------------------------------------------------------------------*\
/*----------------------------------------------------------------------------*\
Move di data word to valuebase.
Move di data word to valuebase.
\*----------------------------------------------------------------------------*/
\*----------------------------------------------------------------------------*/
void
pbio_DiUnpackWord
(
void
pbio_DiUnpackWord
(
io_sCard
*
cp
,
pwr_tUInt16
data
,
pwr_tUInt16
mask
,
io_sCard
*
cp
,
pwr_tUInt16
data
,
pwr_tUInt16
mask
,
int
index
)
int
index
)
{
{
io_sChannel
*
chanp
;
io_sChannel
*
chanp
;
...
@@ -64,7 +64,8 @@ void pbio_DiUnpackWord(
...
@@ -64,7 +64,8 @@ void pbio_DiUnpackWord(
else
else
chanp
=
&
cp
->
chanlist
[
16
];
chanp
=
&
cp
->
chanlist
[
16
];
if
(
mask
==
IO_CONVMASK_ALL
)
{
if
(
mask
==
IO_CONVMASK_ALL
)
{
/* No conversion test */
/* No conversion test */
if
(
chanp
->
cop
&&
chanp
->
sop
)
if
(
chanp
->
cop
&&
chanp
->
sop
)
*
(
pwr_tUInt16
*
)(
chanp
->
vbp
)
=
((
data
&
1
)
!=
0
);
*
(
pwr_tUInt16
*
)(
chanp
->
vbp
)
=
((
data
&
1
)
!=
0
);
...
@@ -114,7 +115,9 @@ void pbio_DiUnpackWord(
...
@@ -114,7 +115,9 @@ void pbio_DiUnpackWord(
if
(
chanp
->
cop
&&
chanp
->
sop
)
if
(
chanp
->
cop
&&
chanp
->
sop
)
*
(
pwr_tUInt16
*
)(
chanp
->
vbp
)
=
((
data
&
32768
)
!=
0
);
*
(
pwr_tUInt16
*
)(
chanp
->
vbp
)
=
((
data
&
32768
)
!=
0
);
chanp
++
;
chanp
++
;
}
else
{
}
else
{
if
(
chanp
->
cop
&&
chanp
->
sop
&&
mask
&
1
)
if
(
chanp
->
cop
&&
chanp
->
sop
&&
mask
&
1
)
*
(
pwr_tUInt16
*
)(
chanp
->
vbp
)
=
((
data
&
1
)
!=
0
);
*
(
pwr_tUInt16
*
)(
chanp
->
vbp
)
=
((
data
&
1
)
!=
0
);
chanp
++
;
chanp
++
;
...
@@ -169,8 +172,8 @@ void pbio_DiUnpackWord(
...
@@ -169,8 +172,8 @@ void pbio_DiUnpackWord(
/*----------------------------------------------------------------------------*\
/*----------------------------------------------------------------------------*\
Init method for the Pb module Di
Init method for the Pb module Di
\*----------------------------------------------------------------------------*/
\*----------------------------------------------------------------------------*/
static
pwr_tStatus
IoCardInit
(
static
pwr_tStatus
IoCardInit
(
io_tCtx
ctx
,
io_sAgent
*
ap
,
io_sRack
*
rp
,
io_tCtx
ctx
,
io_sAgent
*
ap
,
io_sRack
*
rp
,
io_sCard
*
cp
)
io_sCard
*
cp
)
{
{
io_sCardLocal
*
local
;
io_sCardLocal
*
local
;
pwr_sClass_Pb_Di
*
op
;
pwr_sClass_Pb_Di
*
op
;
...
@@ -180,8 +183,8 @@ static pwr_tStatus IoCardInit(
...
@@ -180,8 +183,8 @@ static pwr_tStatus IoCardInit(
// Check configuration
// Check configuration
if
(
op
->
NumberOfChannels
!=
8
&&
op
->
NumberOfChannels
!=
16
if
(
op
->
NumberOfChannels
!=
8
&&
op
->
NumberOfChannels
!=
16
&&
&&
op
->
NumberOfChannels
!=
32
)
op
->
NumberOfChannels
!=
32
)
op
->
Status
=
PB_MODULE_STATE_NOTINIT
;
op
->
Status
=
PB_MODULE_STATE_NOTINIT
;
if
(
op
->
Orientation
>
op
->
NumberOfChannels
)
if
(
op
->
Orientation
>
op
->
NumberOfChannels
)
...
@@ -196,8 +199,8 @@ static pwr_tStatus IoCardInit(
...
@@ -196,8 +199,8 @@ static pwr_tStatus IoCardInit(
/*----------------------------------------------------------------------------*\
/*----------------------------------------------------------------------------*\
Read method for the Pb module Di
Read method for the Pb module Di
\*----------------------------------------------------------------------------*/
\*----------------------------------------------------------------------------*/
static
pwr_tStatus
IoCardRead
(
static
pwr_tStatus
IoCardRead
(
io_tCtx
ctx
,
io_sAgent
*
ap
,
io_sRack
*
rp
,
io_tCtx
ctx
,
io_sAgent
*
ap
,
io_sRack
*
rp
,
io_sCard
*
cp
)
io_sCard
*
cp
)
{
{
io_sCardLocal
*
local
;
io_sCardLocal
*
local
;
pwr_sClass_Pb_Di
*
op
;
pwr_sClass_Pb_Di
*
op
;
...
@@ -208,22 +211,27 @@ static pwr_tStatus IoCardRead(
...
@@ -208,22 +211,27 @@ static pwr_tStatus IoCardRead(
pwr_sClass_Di
*
sig_di
;
pwr_sClass_Di
*
sig_di
;
pwr_tUInt32
mask
=
0
;
pwr_tUInt32
mask
=
0
;
pwr_tUInt16
data
[
2
]
=
{
0
,
0
};
pwr_tUInt16
data
[
2
]
=
{
0
,
0
};
pwr_tUInt32
*
data32
;
pwr_tUInt32
*
data32
;
local
=
(
io_sCardLocal
*
)
cp
->
Local
;
local
=
(
io_sCardLocal
*
)
cp
->
Local
;
op
=
(
pwr_sClass_Pb_Di
*
)
cp
->
op
;
op
=
(
pwr_sClass_Pb_Di
*
)
cp
->
op
;
slave
=
(
pwr_sClass_Pb_DP_Slave
*
)
rp
->
op
;
slave
=
(
pwr_sClass_Pb_DP_Slave
*
)
rp
->
op
;
if
(
op
->
Status
>=
PB_MODULE_STATE_OPERATE
&&
slave
->
DisableSlave
!=
1
)
{
if
(
op
->
Status
>=
PB_MODULE_STATE_OPERATE
&&
slave
->
DisableSlave
!=
1
)
{
memcpy
(
&
data
,
local
->
input_area
+
op
->
OffsetInputs
,
op
->
BytesOfInput
);
memcpy
(
&
data
,
local
->
input_area
+
op
->
OffsetInputs
,
op
->
BytesOfInput
);
data32
=
(
pwr_tUInt32
*
)
&
data
;
data32
=
(
pwr_tUInt32
*
)
&
data
;
if
(
slave
->
ByteOrdering
==
pwr_eByteOrderingEnum_BigEndian
)
{
if
(
slave
->
ByteOrdering
==
pwr_eByteOrderingEnum_BigEndian
)
if
(
op
->
Orientation
==
PB_ORIENTATION_WORD
)
{
{
if
(
op
->
Orientation
==
PB_ORIENTATION_WORD
)
{
data
[
0
]
=
swap16
(
data
[
0
]);
data
[
0
]
=
swap16
(
data
[
0
]);
data
[
1
]
=
swap16
(
data
[
1
]);
data
[
1
]
=
swap16
(
data
[
1
]);
}
else
if
(
op
->
Orientation
==
PB_ORIENTATION_DWORD
)
{
}
else
if
(
op
->
Orientation
==
PB_ORIENTATION_DWORD
)
{
*
data32
=
swap32
(
*
data32
);
*
data32
=
swap32
(
*
data32
);
}
}
}
}
...
@@ -233,11 +241,13 @@ static pwr_tStatus IoCardRead(
...
@@ -233,11 +241,13 @@ static pwr_tStatus IoCardRead(
data
[
1
]
=
data
[
1
]
^
op
->
InvMask2
;
data
[
1
]
=
data
[
1
]
^
op
->
InvMask2
;
// Packa upp
// Packa upp
for
(
i
=
0
;
i
<
cp
->
ChanListSize
;
i
++
)
{
for
(
i
=
0
;
i
<
cp
->
ChanListSize
;
i
++
)
{
chanp
=
&
cp
->
chanlist
[
i
];
chanp
=
&
cp
->
chanlist
[
i
];
chan_di
=
(
pwr_sClass_ChanDi
*
)
chanp
->
cop
;
chan_di
=
(
pwr_sClass_ChanDi
*
)
chanp
->
cop
;
sig_di
=
(
pwr_sClass_Di
*
)
chanp
->
sop
;
sig_di
=
(
pwr_sClass_Di
*
)
chanp
->
sop
;
if
(
chan_di
&&
sig_di
)
{
if
(
chan_di
&&
sig_di
)
{
mask
=
1
<<
chan_di
->
Number
;
mask
=
1
<<
chan_di
->
Number
;
*
(
pwr_tUInt16
*
)(
chanp
->
vbp
)
=
((
*
data32
&
mask
)
!=
0
);
*
(
pwr_tUInt16
*
)(
chanp
->
vbp
)
=
((
*
data32
&
mask
)
!=
0
);
}
}
...
@@ -258,8 +268,8 @@ static pwr_tStatus IoCardRead(
...
@@ -258,8 +268,8 @@ static pwr_tStatus IoCardRead(
/*----------------------------------------------------------------------------*\
/*----------------------------------------------------------------------------*\
\*----------------------------------------------------------------------------*/
\*----------------------------------------------------------------------------*/
static
pwr_tStatus
IoCardClose
(
static
pwr_tStatus
IoCardClose
(
io_tCtx
ctx
,
io_sAgent
*
ap
,
io_sRack
*
rp
,
io_tCtx
ctx
,
io_sAgent
*
ap
,
io_sRack
*
rp
,
io_sCard
*
cp
)
io_sCard
*
cp
)
{
{
io_sCardLocal
*
local
;
io_sCardLocal
*
local
;
local
=
cp
->
Local
;
local
=
cp
->
Local
;
...
@@ -273,5 +283,6 @@ static pwr_tStatus IoCardClose(
...
@@ -273,5 +283,6 @@ static pwr_tStatus IoCardClose(
Every method to be exported to the workbench should be registred here.
Every method to be exported to the workbench should be registred here.
\*----------------------------------------------------------------------------*/
\*----------------------------------------------------------------------------*/
pwr_dExport
pwr_BindIoMethods
(
Pb_Di
)
=
{
pwr_BindIoMethod
(
IoCardInit
),
pwr_dExport
pwr_BindIoMethods
(
Pb_Di
)
=
{
pwr_BindIoMethod
(
IoCardRead
),
pwr_BindIoMethod
(
IoCardClose
),
pwr_NullMethod
};
pwr_BindIoMethod
(
IoCardInit
),
pwr_BindIoMethod
(
IoCardRead
),
pwr_BindIoMethod
(
IoCardClose
),
pwr_NullMethod
};
profibus/lib/rt/src/rt_io_m_pb_do.c
View file @
df0831a3
...
@@ -52,8 +52,8 @@
...
@@ -52,8 +52,8 @@
/*----------------------------------------------------------------------------*\
/*----------------------------------------------------------------------------*\
Init method for the Pb module Do
Init method for the Pb module Do
\*----------------------------------------------------------------------------*/
\*----------------------------------------------------------------------------*/
static
pwr_tStatus
IoCardInit
(
static
pwr_tStatus
IoCardInit
(
io_tCtx
ctx
,
io_sAgent
*
ap
,
io_sRack
*
rp
,
io_tCtx
ctx
,
io_sAgent
*
ap
,
io_sRack
*
rp
,
io_sCard
*
cp
)
io_sCard
*
cp
)
{
{
io_sCardLocal
*
local
;
io_sCardLocal
*
local
;
pwr_sClass_Pb_Do
*
op
;
pwr_sClass_Pb_Do
*
op
;
...
@@ -61,8 +61,8 @@ static pwr_tStatus IoCardInit(
...
@@ -61,8 +61,8 @@ static pwr_tStatus IoCardInit(
op
=
(
pwr_sClass_Pb_Do
*
)
cp
->
op
;
op
=
(
pwr_sClass_Pb_Do
*
)
cp
->
op
;
local
=
(
io_sCardLocal
*
)
cp
->
Local
;
local
=
(
io_sCardLocal
*
)
cp
->
Local
;
if
(
op
->
NumberOfChannels
!=
8
&&
op
->
NumberOfChannels
!=
16
if
(
op
->
NumberOfChannels
!=
8
&&
op
->
NumberOfChannels
!=
16
&&
&&
op
->
NumberOfChannels
!=
32
)
op
->
NumberOfChannels
!=
32
)
op
->
Status
=
PB_MODULE_STATE_NOTINIT
;
op
->
Status
=
PB_MODULE_STATE_NOTINIT
;
if
(
op
->
Orientation
>
op
->
NumberOfChannels
)
if
(
op
->
Orientation
>
op
->
NumberOfChannels
)
...
@@ -77,8 +77,8 @@ static pwr_tStatus IoCardInit(
...
@@ -77,8 +77,8 @@ static pwr_tStatus IoCardInit(
/*----------------------------------------------------------------------------*\
/*----------------------------------------------------------------------------*\
Write method for the Pb module Do
Write method for the Pb module Do
\*----------------------------------------------------------------------------*/
\*----------------------------------------------------------------------------*/
static
pwr_tStatus
IoCardWrite
(
static
pwr_tStatus
IoCardWrite
(
io_tCtx
ctx
,
io_sAgent
*
ap
,
io_sRack
*
rp
,
io_tCtx
ctx
,
io_sAgent
*
ap
,
io_sRack
*
rp
,
io_sCard
*
cp
)
io_sCard
*
cp
)
{
{
io_sCardLocal
*
local
;
io_sCardLocal
*
local
;
pwr_sClass_Pb_Do
*
op
;
pwr_sClass_Pb_Do
*
op
;
...
@@ -90,22 +90,25 @@ static pwr_tStatus IoCardWrite(
...
@@ -90,22 +90,25 @@ static pwr_tStatus IoCardWrite(
pwr_tUInt32
mask
=
0
;
pwr_tUInt32
mask
=
0
;
pwr_tInt32
do_actval
;
pwr_tInt32
do_actval
;
pwr_tUInt16
data
[
2
]
=
{
0
,
0
};
pwr_tUInt16
data
[
2
]
=
{
0
,
0
};
pwr_tUInt32
*
data32
;
pwr_tUInt32
*
data32
;
local
=
(
io_sCardLocal
*
)
cp
->
Local
;
local
=
(
io_sCardLocal
*
)
cp
->
Local
;
op
=
(
pwr_sClass_Pb_Do
*
)
cp
->
op
;
op
=
(
pwr_sClass_Pb_Do
*
)
cp
->
op
;
slave
=
(
pwr_sClass_Pb_DP_Slave
*
)
rp
->
op
;
slave
=
(
pwr_sClass_Pb_DP_Slave
*
)
rp
->
op
;
if
(
op
->
Status
>=
PB_MODULE_STATE_OPERATE
&&
slave
->
DisableSlave
!=
1
)
{
if
(
op
->
Status
>=
PB_MODULE_STATE_OPERATE
&&
slave
->
DisableSlave
!=
1
)
{
data32
=
(
pwr_tUInt32
*
)
&
data
;
data32
=
(
pwr_tUInt32
*
)
&
data
;
// Packa ner
// Packa ner
for
(
i
=
0
;
i
<
cp
->
ChanListSize
;
i
++
)
{
for
(
i
=
0
;
i
<
cp
->
ChanListSize
;
i
++
)
{
chanp
=
&
cp
->
chanlist
[
i
];
chanp
=
&
cp
->
chanlist
[
i
];
chan_do
=
(
pwr_sClass_ChanDo
*
)
chanp
->
cop
;
chan_do
=
(
pwr_sClass_ChanDo
*
)
chanp
->
cop
;
sig_do
=
(
pwr_sClass_Do
*
)
chanp
->
sop
;
sig_do
=
(
pwr_sClass_Do
*
)
chanp
->
sop
;
if
(
chan_do
&&
sig_do
)
{
if
(
chan_do
&&
sig_do
)
{
mask
=
1
<<
chan_do
->
Number
;
mask
=
1
<<
chan_do
->
Number
;
do_actval
=
*
(
pwr_tInt32
*
)
chanp
->
vbp
;
do_actval
=
*
(
pwr_tInt32
*
)
chanp
->
vbp
;
if
(
do_actval
!=
0
)
if
(
do_actval
!=
0
)
...
@@ -118,11 +121,15 @@ static pwr_tStatus IoCardWrite(
...
@@ -118,11 +121,15 @@ static pwr_tStatus IoCardWrite(
io_DoPackWord(cp, &data[0], 0);
io_DoPackWord(cp, &data[0], 0);
if (op->NumberOfChannels > 16) io_DoPackWord(cp, &data[1], 1);
if (op->NumberOfChannels > 16) io_DoPackWord(cp, &data[1], 1);
*/
*/
if
(
slave
->
ByteOrdering
==
pwr_eByteOrderingEnum_BigEndian
)
{
if
(
slave
->
ByteOrdering
==
pwr_eByteOrderingEnum_BigEndian
)
if
(
op
->
Orientation
==
PB_ORIENTATION_WORD
)
{
{
if
(
op
->
Orientation
==
PB_ORIENTATION_WORD
)
{
data
[
0
]
=
swap16
(
data
[
0
]);
data
[
0
]
=
swap16
(
data
[
0
]);
data
[
1
]
=
swap16
(
data
[
1
]);
data
[
1
]
=
swap16
(
data
[
1
]);
}
else
if
(
op
->
Orientation
==
PB_ORIENTATION_DWORD
)
{
}
else
if
(
op
->
Orientation
==
PB_ORIENTATION_DWORD
)
{
*
data32
=
swap32
(
*
data32
);
*
data32
=
swap32
(
*
data32
);
}
}
}
}
...
@@ -135,8 +142,8 @@ static pwr_tStatus IoCardWrite(
...
@@ -135,8 +142,8 @@ static pwr_tStatus IoCardWrite(
/*----------------------------------------------------------------------------*\
/*----------------------------------------------------------------------------*\
\*----------------------------------------------------------------------------*/
\*----------------------------------------------------------------------------*/
static
pwr_tStatus
IoCardClose
(
static
pwr_tStatus
IoCardClose
(
io_tCtx
ctx
,
io_sAgent
*
ap
,
io_sRack
*
rp
,
io_tCtx
ctx
,
io_sAgent
*
ap
,
io_sRack
*
rp
,
io_sCard
*
cp
)
io_sCard
*
cp
)
{
{
io_sCardLocal
*
local
;
io_sCardLocal
*
local
;
local
=
cp
->
Local
;
local
=
cp
->
Local
;
...
@@ -150,6 +157,6 @@ static pwr_tStatus IoCardClose(
...
@@ -150,6 +157,6 @@ static pwr_tStatus IoCardClose(
Every method to be exported to the workbench should be registred here.
Every method to be exported to the workbench should be registred here.
\*----------------------------------------------------------------------------*/
\*----------------------------------------------------------------------------*/
pwr_dExport
pwr_BindIoMethods
(
Pb_Do
)
pwr_dExport
pwr_BindIoMethods
(
Pb_Do
)
=
{
=
{
pwr_BindIoMethod
(
IoCardInit
),
pwr_BindIoMethod
(
IoCardWrite
),
pwr_BindIoMethod
(
IoCardInit
),
pwr_BindIoMethod
(
IoCardWrite
),
pwr_BindIoMethod
(
IoCardClose
),
pwr_NullMethod
};
pwr_BindIoMethod
(
IoCardClose
),
pwr_NullMethod
};
profibus/lib/rt/src/rt_io_m_pb_dp_slave.c
View file @
df0831a3
...
@@ -112,7 +112,8 @@ static pwr_tStatus IoRackInit(io_tCtx ctx, io_sAgent* ap, io_sRack* rp)
...
@@ -112,7 +112,8 @@ static pwr_tStatus IoRackInit(io_tCtx ctx, io_sAgent* ap, io_sRack* rp)
latent_input_count
=
0
;
latent_input_count
=
0
;
latent_output_count
=
0
;
latent_output_count
=
0
;
while
(
cardp
)
{
while
(
cardp
)
{
local_card
=
calloc
(
1
,
sizeof
(
*
local_card
));
local_card
=
calloc
(
1
,
sizeof
(
*
local_card
));
cardp
->
Local
=
local_card
;
cardp
->
Local
=
local_card
;
local_card
->
input_area
=
(
void
*
)
&
(
op
->
Inputs
);
local_card
->
input_area
=
(
void
*
)
&
(
op
->
Inputs
);
...
@@ -124,7 +125,8 @@ static pwr_tStatus IoRackInit(io_tCtx ctx, io_sAgent* ap, io_sRack* rp)
...
@@ -124,7 +125,8 @@ static pwr_tStatus IoRackInit(io_tCtx ctx, io_sAgent* ap, io_sRack* rp)
while
(
ODD
(
gdh_GetSuperClass
(
cid
,
&
cid
,
cardp
->
Objid
)))
while
(
ODD
(
gdh_GetSuperClass
(
cid
,
&
cid
,
cardp
->
Objid
)))
;
;
switch
(
cid
)
{
switch
(
cid
)
{
/* Old style configuring with Pb_xx objects. Still here for combatibility
/* Old style configuring with Pb_xx objects. Still here for combatibility
reasons.
reasons.
New systems (from v4.1.3) should be build with Pb_Module objects or
New systems (from v4.1.3) should be build with Pb_Module objects or
...
@@ -186,16 +188,19 @@ static pwr_tStatus IoRackInit(io_tCtx ctx, io_sAgent* ap, io_sRack* rp)
...
@@ -186,16 +188,19 @@ static pwr_tStatus IoRackInit(io_tCtx ctx, io_sAgent* ap, io_sRack* rp)
mp
=
(
pwr_sClass_Pb_Module
*
)
cardp
->
op
;
mp
=
(
pwr_sClass_Pb_Module
*
)
cardp
->
op
;
mp
->
Status
=
PB__INITFAIL
;
mp
->
Status
=
PB__INITFAIL
;
cardp
->
offset
=
0
;
cardp
->
offset
=
0
;
for
(
i
=
0
;
i
<
cardp
->
ChanListSize
;
i
++
)
{
for
(
i
=
0
;
i
<
cardp
->
ChanListSize
;
i
++
)
{
chanp
=
&
cardp
->
chanlist
[
i
];
chanp
=
&
cardp
->
chanlist
[
i
];
if
(
is_diag
(
&
chanp
->
ChanAref
))
{
if
(
is_diag
(
&
chanp
->
ChanAref
))
{
chanp
->
udata
|=
PB_UDATA_DIAG
;
chanp
->
udata
|=
PB_UDATA_DIAG
;
switch
(
chanp
->
ChanClass
)
{
switch
(
chanp
->
ChanClass
)
{
case
pwr_cClass_ChanIi
:
case
pwr_cClass_ChanIi
:
chanp
->
offset
=
((
pwr_sClass_ChanIi
*
)
chanp
->
cop
)
->
Number
;
chanp
->
offset
=
((
pwr_sClass_ChanIi
*
)
chanp
->
cop
)
->
Number
;
chanp
->
size
chanp
->
size
=
=
GetChanSize
(((
pwr_sClass_ChanIi
*
)
chanp
->
cop
)
->
Representation
);
GetChanSize
(((
pwr_sClass_ChanIi
*
)
chanp
->
cop
)
->
Representation
);
break
;
break
;
default:
default:
errh_Error
(
"Diagnostic channel class, card %s"
,
cardp
->
Name
);
errh_Error
(
"Diagnostic channel class, card %s"
,
cardp
->
Name
);
...
@@ -203,30 +208,34 @@ static pwr_tStatus IoRackInit(io_tCtx ctx, io_sAgent* ap, io_sRack* rp)
...
@@ -203,30 +208,34 @@ static pwr_tStatus IoRackInit(io_tCtx ctx, io_sAgent* ap, io_sRack* rp)
continue
;
continue
;
}
}
if
(
chanp
->
ChanClass
!=
pwr_cClass_ChanDi
)
{
if
(
chanp
->
ChanClass
!=
pwr_cClass_ChanDi
)
{
input_counter
+=
latent_input_count
;
input_counter
+=
latent_input_count
;
latent_input_count
=
0
;
latent_input_count
=
0
;
}
}
if
(
chanp
->
ChanClass
!=
pwr_cClass_ChanDo
)
{
if
(
chanp
->
ChanClass
!=
pwr_cClass_ChanDo
)
{
output_counter
+=
latent_output_count
;
output_counter
+=
latent_output_count
;
latent_output_count
=
0
;
latent_output_count
=
0
;
}
}
switch
(
chanp
->
ChanClass
)
{
switch
(
chanp
->
ChanClass
)
{
case
pwr_cClass_ChanDi
:
case
pwr_cClass_ChanDi
:
chan_di
=
(
pwr_sClass_ChanDi
*
)
chanp
->
cop
;
chan_di
=
(
pwr_sClass_ChanDi
*
)
chanp
->
cop
;
if
(
chan_di
->
Number
==
0
)
{
if
(
chan_di
->
Number
==
0
)
{
input_counter
+=
latent_input_count
;
input_counter
+=
latent_input_count
;
latent_input_count
=
0
;
latent_input_count
=
0
;
}
}
chanp
->
offset
=
input_counter
;
chanp
->
offset
=
input_counter
;
chanp
->
mask
=
1
<<
chan_di
->
Number
;
chanp
->
mask
=
1
<<
chan_di
->
Number
;
if
(
chan_di
->
Representation
==
pwr_eDataRepEnum_Bit16
if
(
chan_di
->
Representation
==
pwr_eDataRepEnum_Bit16
&&
&&
op
->
ByteOrdering
==
pwr_eByteOrderingEnum_BigEndian
)
op
->
ByteOrdering
==
pwr_eByteOrderingEnum_BigEndian
)
chanp
->
mask
=
swap16
(
chanp
->
mask
);
chanp
->
mask
=
swap16
(
chanp
->
mask
);
if
(
chan_di
->
Representation
==
pwr_eDataRepEnum_Bit32
if
(
chan_di
->
Representation
==
pwr_eDataRepEnum_Bit32
&&
&&
op
->
ByteOrdering
==
pwr_eByteOrderingEnum_BigEndian
)
op
->
ByteOrdering
==
pwr_eByteOrderingEnum_BigEndian
)
chanp
->
mask
=
swap32
(
chanp
->
mask
);
chanp
->
mask
=
swap32
(
chanp
->
mask
);
if
(
chan_di
->
Number
==
0
)
if
(
chan_di
->
Number
==
0
)
latent_input_count
=
GetChanSize
(
chan_di
->
Representation
);
latent_input_count
=
GetChanSize
(
chan_di
->
Representation
);
...
@@ -269,18 +278,19 @@ static pwr_tStatus IoRackInit(io_tCtx ctx, io_sAgent* ap, io_sRack* rp)
...
@@ -269,18 +278,19 @@ static pwr_tStatus IoRackInit(io_tCtx ctx, io_sAgent* ap, io_sRack* rp)
case
pwr_cClass_ChanDo
:
case
pwr_cClass_ChanDo
:
chan_do
=
(
pwr_sClass_ChanDo
*
)
chanp
->
cop
;
chan_do
=
(
pwr_sClass_ChanDo
*
)
chanp
->
cop
;
if
(
chan_do
->
Number
==
0
)
{
if
(
chan_do
->
Number
==
0
)
{
output_counter
+=
latent_output_count
;
output_counter
+=
latent_output_count
;
latent_output_count
=
0
;
latent_output_count
=
0
;
}
}
chanp
->
offset
=
output_counter
;
chanp
->
offset
=
output_counter
;
chan_size
=
GetChanSize
(
chan_do
->
Representation
);
chan_size
=
GetChanSize
(
chan_do
->
Representation
);
chanp
->
mask
=
1
<<
chan_do
->
Number
;
chanp
->
mask
=
1
<<
chan_do
->
Number
;
if
(
chan_do
->
Representation
==
pwr_eDataRepEnum_Bit16
if
(
chan_do
->
Representation
==
pwr_eDataRepEnum_Bit16
&&
&&
op
->
ByteOrdering
==
pwr_eByteOrderingEnum_BigEndian
)
op
->
ByteOrdering
==
pwr_eByteOrderingEnum_BigEndian
)
chanp
->
mask
=
swap16
(
chanp
->
mask
);
chanp
->
mask
=
swap16
(
chanp
->
mask
);
if
(
chan_do
->
Representation
==
pwr_eDataRepEnum_Bit32
if
(
chan_do
->
Representation
==
pwr_eDataRepEnum_Bit32
&&
&&
op
->
ByteOrdering
==
pwr_eByteOrderingEnum_BigEndian
)
op
->
ByteOrdering
==
pwr_eByteOrderingEnum_BigEndian
)
chanp
->
mask
=
swap32
(
chanp
->
mask
);
chanp
->
mask
=
swap32
(
chanp
->
mask
);
if
(
chan_do
->
Number
==
0
)
if
(
chan_do
->
Number
==
0
)
latent_output_count
=
GetChanSize
(
chan_do
->
Representation
);
latent_output_count
=
GetChanSize
(
chan_do
->
Representation
);
...
@@ -342,35 +352,45 @@ static pwr_tStatus IoRackRead(io_tCtx ctx, io_sAgent* ap, io_sRack* rp)
...
@@ -342,35 +352,45 @@ static pwr_tStatus IoRackRead(io_tCtx ctx, io_sAgent* ap, io_sRack* rp)
/* The reading of the process image is now performed at the agent level,
/* The reading of the process image is now performed at the agent level,
this eliminates the need for board specific code at the rack level. */
this eliminates the need for board specific code at the rack level. */
if
(
sp
->
DisableSlave
!=
1
&&
mp
->
DisableBus
!=
1
)
{
if
(
sp
->
DisableSlave
!=
1
&&
mp
->
DisableBus
!=
1
)
if
(
sp
->
Status
==
PB__NORMAL
)
{
{
if
(
sp
->
Status
==
PB__NORMAL
)
{
sp
->
ErrorCount
=
0
;
sp
->
ErrorCount
=
0
;
}
else
{
}
else
{
if
(
local
->
start_cnt
>=
local
->
start_time
)
if
(
local
->
start_cnt
>=
local
->
start_time
)
sp
->
ErrorCount
++
;
sp
->
ErrorCount
++
;
}
}
if
(
sp
->
ErrorCount
==
sp
->
ErrorSoftLimit
)
{
if
(
sp
->
ErrorCount
==
sp
->
ErrorSoftLimit
)
{
errh_Error
(
"IO Error soft limit reached on card '%s'"
,
rp
->
Name
);
errh_Error
(
"IO Error soft limit reached on card '%s'"
,
rp
->
Name
);
ctx
->
IOHandler
->
CardErrorSoftLimit
=
1
;
ctx
->
IOHandler
->
CardErrorSoftLimit
=
1
;
ctx
->
IOHandler
->
ErrorSoftLimitObject
=
cdh_ObjidToAref
(
rp
->
Objid
);
ctx
->
IOHandler
->
ErrorSoftLimitObject
=
cdh_ObjidToAref
(
rp
->
Objid
);
}
}
if
(
sp
->
ErrorCount
==
sp
->
ErrorHardLimit
)
{
if
(
sp
->
ErrorCount
==
sp
->
ErrorHardLimit
)
{
errh_Error
(
"IO Error hard limit reached on card '%s', stall action %d"
,
errh_Error
(
"IO Error hard limit reached on card '%s', stall action %d"
,
rp
->
Name
,
sp
->
StallAction
);
rp
->
Name
,
sp
->
StallAction
);
ctx
->
IOHandler
->
CardErrorHardLimit
=
1
;
ctx
->
IOHandler
->
CardErrorHardLimit
=
1
;
ctx
->
IOHandler
->
ErrorHardLimitObject
=
cdh_ObjidToAref
(
rp
->
Objid
);
ctx
->
IOHandler
->
ErrorHardLimitObject
=
cdh_ObjidToAref
(
rp
->
Objid
);
}
}
if
(
sp
->
ErrorCount
>
sp
->
ErrorHardLimit
if
(
sp
->
ErrorCount
>
sp
->
ErrorHardLimit
&&
&&
sp
->
StallAction
==
pwr_ePbStallAction_ResetInputs
)
{
sp
->
StallAction
==
pwr_ePbStallAction_ResetInputs
)
{
memset
(
&
sp
->
Inputs
,
0
,
sp
->
BytesOfInput
);
memset
(
&
sp
->
Inputs
,
0
,
sp
->
BytesOfInput
);
}
}
if
(
sp
->
ErrorCount
>
sp
->
ErrorHardLimit
if
(
sp
->
ErrorCount
>
sp
->
ErrorHardLimit
&&
&&
sp
->
StallAction
==
pwr_ePbStallAction_EmergencyBreak
)
{
sp
->
StallAction
==
pwr_ePbStallAction_EmergencyBreak
)
{
ctx
->
Node
->
EmergBreakTrue
=
1
;
ctx
->
Node
->
EmergBreakTrue
=
1
;
}
}
}
else
{
}
else
{
sp
->
ErrorCount
=
0
;
sp
->
ErrorCount
=
0
;
sp
->
Status
=
PB__DISABLED
;
sp
->
Status
=
PB__DISABLED
;
}
}
...
@@ -410,6 +430,7 @@ static pwr_tStatus IoRackClose(io_tCtx ctx, io_sAgent* ap, io_sRack* rp)
...
@@ -410,6 +430,7 @@ static pwr_tStatus IoRackClose(io_tCtx ctx, io_sAgent* ap, io_sRack* rp)
Every method to be exported to the workbench should be registred here.
Every method to be exported to the workbench should be registred here.
\*----------------------------------------------------------------------------*/
\*----------------------------------------------------------------------------*/
pwr_dExport
pwr_BindIoMethods
(
Pb_DP_Slave
)
=
{
pwr_BindIoMethod
(
IoRackInit
),
pwr_dExport
pwr_BindIoMethods
(
Pb_DP_Slave
)
=
{
pwr_BindIoMethod
(
IoRackRead
),
pwr_BindIoMethod
(
IoRackWrite
),
pwr_BindIoMethod
(
IoRackInit
),
pwr_BindIoMethod
(
IoRackRead
),
pwr_BindIoMethod
(
IoRackClose
),
pwr_NullMethod
};
pwr_BindIoMethod
(
IoRackWrite
),
pwr_BindIoMethod
(
IoRackClose
),
pwr_NullMethod
};
profibus/lib/rt/src/rt_io_m_pb_fdl_datatransfer.c
View file @
df0831a3
...
@@ -65,7 +65,8 @@
...
@@ -65,7 +65,8 @@
static
unsigned
char
req_res_buffer
[
512
];
static
unsigned
char
req_res_buffer
[
512
];
static
short
fdlif_sda_sdn_sdr_req
(
io_sAgentLocal
*
local_agent
,
static
short
fdlif_sda_sdn_sdr_req
(
io_sAgentLocal
*
local_agent
,
pwr_sClass_Pb_FDL_SAP
*
sap
,
pwr_sClass_Pb_FDL_DataTransfer
*
op
,
pwr_sClass_Pb_FDL_SAP
*
sap
,
pwr_sClass_Pb_FDL_DataTransfer
*
op
,
io_sFDLCardLocal
*
local
)
io_sFDLCardLocal
*
local
)
/*-----------------------------------------------------------------------------
/*-----------------------------------------------------------------------------
...
@@ -106,16 +107,20 @@ possible return values:
...
@@ -106,16 +107,20 @@ possible return values:
*/
*/
sdb
.
comm_ref
=
0
;
sdb
.
comm_ref
=
0
;
sdb
.
layer
=
FDLIF
;
sdb
.
layer
=
FDLIF
;
switch
(
op
->
Type
)
{
switch
(
op
->
Type
)
case
pwr_ePbFDLDataTransferTypeEnum_FDLIF_SDA
:
{
{
case
pwr_ePbFDLDataTransferTypeEnum_FDLIF_SDA
:
{
sdb
.
service
=
FDLIF_SDA
;
sdb
.
service
=
FDLIF_SDA
;
break
;
break
;
}
}
case
pwr_ePbFDLDataTransferTypeEnum_FDLIF_SDN
:
{
case
pwr_ePbFDLDataTransferTypeEnum_FDLIF_SDN
:
{
sdb
.
service
=
FDLIF_SDN
;
sdb
.
service
=
FDLIF_SDN
;
break
;
break
;
}
}
case
pwr_ePbFDLDataTransferTypeEnum_FDLIF_SRD
:
{
case
pwr_ePbFDLDataTransferTypeEnum_FDLIF_SRD
:
{
sdb
.
service
=
FDLIF_SRD
;
sdb
.
service
=
FDLIF_SRD
;
break
;
break
;
}
}
...
@@ -128,14 +133,16 @@ possible return values:
...
@@ -128,14 +133,16 @@ possible return values:
sdb
.
invoke_id
=
local
->
invoke_id
=
local_agent
->
invoke_id
;
sdb
.
invoke_id
=
local
->
invoke_id
=
local_agent
->
invoke_id
;
local_agent
->
invoke_id
=
(
local_agent
->
invoke_id
+
1
)
%
128
;
local_agent
->
invoke_id
=
(
local_agent
->
invoke_id
+
1
)
%
128
;
result
=
profi_snd_req_res
(
// result = profi_snd_req_res(
(
T_PROFI_DEVICE_HANDLE
*
)
local_agent
,
&
sdb
,
(
void
*
)
req
,
PB_FALSE
);
// (T_PROFI_DEVICE_HANDLE*)local_agent, &sdb, (void*)req, PB_FALSE);
result
=
profi_snd_req_res
(
&
sdb
,
(
void
*
)
req
,
PB_FALSE
);
return
((
pwr_tBoolean
)(
result
==
E_OK
));
return
((
pwr_tBoolean
)(
result
==
E_OK
));
}
}
static
short
fdlif_reply_update_mult_req
(
io_sAgentLocal
*
local_agent
,
static
short
fdlif_reply_update_mult_req
(
io_sAgentLocal
*
local_agent
,
pwr_sClass_Pb_FDL_SAP
*
sap
,
pwr_sClass_Pb_FDL_DataTransfer
*
op
,
pwr_sClass_Pb_FDL_SAP
*
sap
,
pwr_sClass_Pb_FDL_DataTransfer
*
op
,
io_sFDLCardLocal
*
local
)
io_sFDLCardLocal
*
local
)
/*-----------------------------------------------------------------------------
/*-----------------------------------------------------------------------------
...
@@ -179,8 +186,9 @@ possible return values:
...
@@ -179,8 +186,9 @@ possible return values:
sdb
.
invoke_id
=
local
->
invoke_id
=
local_agent
->
invoke_id
;
sdb
.
invoke_id
=
local
->
invoke_id
=
local_agent
->
invoke_id
;
local_agent
->
invoke_id
=
(
local_agent
->
invoke_id
+
1
)
%
128
;
local_agent
->
invoke_id
=
(
local_agent
->
invoke_id
+
1
)
%
128
;
result
=
profi_snd_req_res
(
// result = profi_snd_req_res((T_PROFI_DEVICE_HANDLE*)local_agent, &sdb,
(
T_PROFI_DEVICE_HANDLE
*
)
local_agent
,
&
sdb
,
(
void
*
)
req
,
PB_FALSE
);
// (void*)req, PB_FALSE);
result
=
profi_snd_req_res
(
&
sdb
,
(
void
*
)
req
,
PB_FALSE
);
return
((
pwr_tBoolean
)(
result
==
E_OK
));
return
((
pwr_tBoolean
)(
result
==
E_OK
));
}
}
...
@@ -188,8 +196,8 @@ possible return values:
...
@@ -188,8 +196,8 @@ possible return values:
/*----------------------------------------------------------------------------*\
/*----------------------------------------------------------------------------*\
Init method for the Pb module
Init method for the Pb module
\*----------------------------------------------------------------------------*/
\*----------------------------------------------------------------------------*/
static
pwr_tStatus
IoCardInit
(
static
pwr_tStatus
IoCardInit
(
io_tCtx
ctx
,
io_sAgent
*
ap
,
io_sRack
*
rp
,
io_tCtx
ctx
,
io_sAgent
*
ap
,
io_sRack
*
rp
,
io_sCard
*
cp
)
io_sCard
*
cp
)
{
{
io_sFDLCardLocal
*
local
;
io_sFDLCardLocal
*
local
;
pwr_sClass_Pb_FDL_DataTransfer
*
op
=
(
pwr_sClass_Pb_FDL_DataTransfer
*
)
cp
->
op
;
pwr_sClass_Pb_FDL_DataTransfer
*
op
=
(
pwr_sClass_Pb_FDL_DataTransfer
*
)
cp
->
op
;
...
@@ -206,8 +214,8 @@ static pwr_tStatus IoCardInit(
...
@@ -206,8 +214,8 @@ static pwr_tStatus IoCardInit(
local
->
byte_ordering
=
((
pwr_sClass_Pb_FDL_SAP
*
)
rp
->
op
)
->
ByteOrdering
;
local
->
byte_ordering
=
((
pwr_sClass_Pb_FDL_SAP
*
)
rp
->
op
)
->
ByteOrdering
;
io_bus_card_init
(
ctx
,
cp
,
&
input_area_offset
,
&
input_area_chansize
,
io_bus_card_init
(
ctx
,
cp
,
&
input_area_offset
,
&
input_area_chansize
,
&
output_area_offset
,
&
output_area_chansize
,
local
->
byte_ordering
,
&
output_area_offset
,
&
output_area_chansize
,
io_eAlignment_Packed
);
local
->
byte_ordering
,
io_eAlignment_Packed
);
local
->
input_area_size
=
input_area_offset
+
input_area_chansize
;
local
->
input_area_size
=
input_area_offset
+
input_area_chansize
;
local
->
output_area_size
=
output_area_offset
+
output_area_chansize
;
local
->
output_area_size
=
output_area_offset
+
output_area_chansize
;
...
@@ -227,8 +235,8 @@ static pwr_tStatus IoCardInit(
...
@@ -227,8 +235,8 @@ static pwr_tStatus IoCardInit(
/*----------------------------------------------------------------------------*\
/*----------------------------------------------------------------------------*\
Read method for the Pb FDL Data transfer module
Read method for the Pb FDL Data transfer module
\*----------------------------------------------------------------------------*/
\*----------------------------------------------------------------------------*/
static
pwr_tStatus
IoCardRead
(
static
pwr_tStatus
IoCardRead
(
io_tCtx
ctx
,
io_sAgent
*
ap
,
io_sRack
*
rp
,
io_tCtx
ctx
,
io_sAgent
*
ap
,
io_sRack
*
rp
,
io_sCard
*
cp
)
io_sCard
*
cp
)
{
{
io_sFDLCardLocal
*
local
=
(
io_sFDLCardLocal
*
)
cp
->
Local
;
io_sFDLCardLocal
*
local
=
(
io_sFDLCardLocal
*
)
cp
->
Local
;
...
@@ -241,8 +249,8 @@ static pwr_tStatus IoCardRead(
...
@@ -241,8 +249,8 @@ static pwr_tStatus IoCardRead(
/*----------------------------------------------------------------------------*\
/*----------------------------------------------------------------------------*\
Write method for the Pb FDL Data transfer module
Write method for the Pb FDL Data transfer module
\*----------------------------------------------------------------------------*/
\*----------------------------------------------------------------------------*/
static
pwr_tStatus
IoCardWrite
(
static
pwr_tStatus
IoCardWrite
(
io_tCtx
ctx
,
io_sAgent
*
ap
,
io_sRack
*
rp
,
io_tCtx
ctx
,
io_sAgent
*
ap
,
io_sRack
*
rp
,
io_sCard
*
cp
)
io_sCard
*
cp
)
{
{
io_sAgentLocal
*
local_agent
=
(
io_sAgentLocal
*
)
ap
->
Local
;
io_sAgentLocal
*
local_agent
=
(
io_sAgentLocal
*
)
ap
->
Local
;
pwr_sClass_Pb_FDL_DataTransfer
*
op
=
(
pwr_sClass_Pb_FDL_DataTransfer
*
)
cp
->
op
;
pwr_sClass_Pb_FDL_DataTransfer
*
op
=
(
pwr_sClass_Pb_FDL_DataTransfer
*
)
cp
->
op
;
...
@@ -251,16 +259,21 @@ static pwr_tStatus IoCardWrite(
...
@@ -251,16 +259,21 @@ static pwr_tStatus IoCardWrite(
op
->
Status
=
sap
->
Status
;
op
->
Status
=
sap
->
Status
;
if
(
op
->
Status
==
PB__NORMAL
)
{
if
(
op
->
Status
==
PB__NORMAL
)
{
io_bus_card_write
(
ctx
,
cp
,
local
->
output_area
,
local
->
byte_ordering
,
io_bus_card_write
(
ctx
,
cp
,
local
->
output_area
,
local
->
byte_ordering
,
local
->
float_representation
);
local
->
float_representation
);
if
(
op
->
SendReq
)
{
if
(
op
->
SendReq
)
{
pthread_mutex_lock
(
&
local_agent
->
mutex
);
pthread_mutex_lock
(
&
local_agent
->
mutex
);
if
(
sap
->
Responder
)
{
if
(
sap
->
Responder
)
{
fdlif_reply_update_mult_req
(
local_agent
,
sap
,
op
,
local
);
fdlif_reply_update_mult_req
(
local_agent
,
sap
,
op
,
local
);
}
else
{
}
else
{
fdlif_sda_sdn_sdr_req
(
local_agent
,
sap
,
op
,
local
);
fdlif_sda_sdn_sdr_req
(
local_agent
,
sap
,
op
,
local
);
}
}
op
->
SendReq
=
0
;
op
->
SendReq
=
0
;
...
@@ -274,8 +287,8 @@ static pwr_tStatus IoCardWrite(
...
@@ -274,8 +287,8 @@ static pwr_tStatus IoCardWrite(
/*----------------------------------------------------------------------------*\
/*----------------------------------------------------------------------------*\
Close method for the Pb module
Close method for the Pb module
\*----------------------------------------------------------------------------*/
\*----------------------------------------------------------------------------*/
static
pwr_tStatus
IoCardClose
(
static
pwr_tStatus
IoCardClose
(
io_tCtx
ctx
,
io_sAgent
*
ap
,
io_sRack
*
rp
,
io_tCtx
ctx
,
io_sAgent
*
ap
,
io_sRack
*
rp
,
io_sCard
*
cp
)
io_sCard
*
cp
)
{
{
io_sCardLocal
*
local
;
io_sCardLocal
*
local
;
local
=
cp
->
Local
;
local
=
cp
->
Local
;
...
@@ -290,7 +303,7 @@ static pwr_tStatus IoCardClose(
...
@@ -290,7 +303,7 @@ static pwr_tStatus IoCardClose(
Every method to be exported to the workbench should be registred here.
Every method to be exported to the workbench should be registred here.
\*----------------------------------------------------------------------------*/
\*----------------------------------------------------------------------------*/
pwr_dExport
pwr_BindIoMethods
(
Pb_FDL_DataTransfer
)
pwr_dExport
pwr_BindIoMethods
(
Pb_FDL_DataTransfer
)
=
{
=
{
pwr_BindIoMethod
(
IoCardInit
),
pwr_BindIoMethod
(
IoCardRead
),
pwr_BindIoMethod
(
IoCardInit
),
pwr_BindIoMethod
(
IoCardRead
),
pwr_BindIoMethod
(
IoCardWrite
),
pwr_BindIoMethod
(
IoCardClose
),
pwr_BindIoMethod
(
IoCardWrite
),
pwr_BindIoMethod
(
IoCardClose
),
pwr_NullMethod
};
pwr_NullMethod
};
profibus/lib/rt/src/rt_io_m_pb_fdl_sap.c
View file @
df0831a3
...
@@ -85,5 +85,6 @@ static pwr_tStatus IoRackClose(io_tCtx ctx, io_sAgent* ap, io_sRack* rp)
...
@@ -85,5 +85,6 @@ static pwr_tStatus IoRackClose(io_tCtx ctx, io_sAgent* ap, io_sRack* rp)
Every method to be exported to the workbench should be registred here.
Every method to be exported to the workbench should be registred here.
\*----------------------------------------------------------------------------*/
\*----------------------------------------------------------------------------*/
pwr_dExport
pwr_BindIoMethods
(
Pb_FDL_SAP
)
=
{
pwr_BindIoMethod
(
IoRackInit
),
pwr_dExport
pwr_BindIoMethods
(
Pb_FDL_SAP
)
=
{
pwr_BindIoMethod
(
IoRackInit
),
pwr_BindIoMethod
(
IoRackClose
),
pwr_NullMethod
};
pwr_BindIoMethod
(
IoRackClose
),
pwr_NullMethod
};
profibus/lib/rt/src/rt_io_m_pb_hilscher.c
View file @
df0831a3
...
@@ -86,7 +86,8 @@ board.
...
@@ -86,7 +86,8 @@ board.
#include "rt_io_pb_locals.h"
#include "rt_io_pb_locals.h"
typedef
struct
{
typedef
struct
{
/* Board number. */
/* Board number. */
unsigned
short
dev_number
;
unsigned
short
dev_number
;
/* Number of occupied bytes in the input area of the dual port ram. */
/* Number of occupied bytes in the input area of the dual port ram. */
...
@@ -114,7 +115,8 @@ static pwr_tStatus IoAgentClose(io_tCtx ctx, io_sAgent* ap);
...
@@ -114,7 +115,8 @@ static pwr_tStatus IoAgentClose(io_tCtx ctx, io_sAgent* ap);
/* Start segment of the database, shall be 8 for
/* Start segment of the database, shall be 8 for
CIF30-DPM, CIF104-DPM, COM-DPM, COM-PB, CIF104-PB and CIF 50-PB.
CIF30-DPM, CIF104-DPM, COM-DPM, COM-PB, CIF104-PB and CIF 50-PB.
Shall be 0 for CIF 30-PB and CIF 60-PB. */
Shall be 0 for CIF 30-PB and CIF 60-PB. */
typedef
struct
{
typedef
struct
{
/* Used to terminate the table, se to 1 for every entry but the
/* Used to terminate the table, se to 1 for every entry but the
last (dummy entry), which should be 0. */
last (dummy entry), which should be 0. */
unsigned
char
entry
;
unsigned
char
entry
;
...
@@ -129,15 +131,14 @@ typedef struct {
...
@@ -129,15 +131,14 @@ typedef struct {
/* Table of known boards, consists of four fields according to the board type.
/* Table of known boards, consists of four fields according to the board type.
The last entry must be a null termination (entry == 0).
The last entry must be a null termination (entry == 0).
*/
*/
boards
known_boards
[]
boards
known_boards
[]
=
{
=
{
{
1
,
{
8
,
50
,
66
,
{
'C'
,
'I'
,
'F'
}
},
8
,
"Hilscher CIF 50-PB"
},
{
1
,
{
8
,
50
,
66
,
{
'C'
,
'I'
,
'F'
}},
8
,
"Hilscher CIF 50-PB"
},
{
0
,
{},
0
,
""
}};
{
0
,
{},
0
,
""
}
};
#endif
/* FLASH_WRITE_ENABLE */
#endif
/* FLASH_WRITE_ENABLE */
/* Initializes Profibus DP interface on the CIF board referred to by local.
/* Initializes Profibus DP interface on the CIF board referred to by local.
DRV_NO_ERROR is returned upon success. */
DRV_NO_ERROR is returned upon success. */
static
short
dpm_init_master
(
static
short
dpm_init_master
(
io_sAgentLocalHilscher
*
local
,
io_sAgentLocalHilscher
*
local
,
pwr_sClass_Pb_Hilscher
*
op
,
io_sAgent
*
ap
)
pwr_sClass_Pb_Hilscher
*
op
,
io_sAgent
*
ap
)
{
{
short
rv
;
short
rv
;
DPM_PLC_PARAMETER
prm
;
DPM_PLC_PARAMETER
prm
;
...
@@ -166,8 +167,9 @@ static short dpm_init_master(
...
@@ -166,8 +167,9 @@ static short dpm_init_master(
/* Writes parameters to the board local->dev_number, task 2, size is
/* Writes parameters to the board local->dev_number, task 2, size is
* hardcoded to 16 as specified in dpm_pie.pdf, page 9. */
* hardcoded to 16 as specified in dpm_pie.pdf, page 9. */
if
((
rv
=
DevPutTaskParameter
(
local
->
dev_number
,
2
,
16
,
&
prm
))
if
((
rv
=
DevPutTaskParameter
(
local
->
dev_number
,
2
,
16
,
&
prm
))
!=
!=
DRV_NO_ERROR
)
{
DRV_NO_ERROR
)
{
errh_Error
(
"Profibus DP Master %s - "
errh_Error
(
"Profibus DP Master %s - "
" DevPutTaskParameter() failed with return code %d"
,
" DevPutTaskParameter() failed with return code %d"
,
ap
->
Name
,
rv
);
ap
->
Name
,
rv
);
...
@@ -175,7 +177,8 @@ static short dpm_init_master(
...
@@ -175,7 +177,8 @@ static short dpm_init_master(
}
}
/* Resets board to put new master parameters into effect. */
/* Resets board to put new master parameters into effect. */
if
((
rv
=
DevReset
(
local
->
dev_number
,
WARMSTART
,
8000
))
!=
DRV_NO_ERROR
)
{
if
((
rv
=
DevReset
(
local
->
dev_number
,
WARMSTART
,
8000
))
!=
DRV_NO_ERROR
)
{
errh_Error
(
"Profibus DP Master %s - "
errh_Error
(
"Profibus DP Master %s - "
" DevReset() failed with return code %d"
,
" DevReset() failed with return code %d"
,
ap
->
Name
,
rv
);
ap
->
Name
,
rv
);
...
@@ -191,12 +194,15 @@ static short dpm_init(io_sAgentLocalHilscher* local, io_sAgent* ap)
...
@@ -191,12 +194,15 @@ static short dpm_init(io_sAgentLocalHilscher* local, io_sAgent* ap)
{
{
short
rv
;
short
rv
;
if
((
rv
=
DevOpenDriver
())
!=
DRV_NO_ERROR
)
{
if
((
rv
=
DevOpenDriver
())
!=
DRV_NO_ERROR
)
{
errh_Error
(
"Profibus DP Master %s - "
errh_Error
(
"Profibus DP Master %s - "
" DevOpenDriver() failed with return code %d"
,
" DevOpenDriver() failed with return code %d"
,
ap
->
Name
,
rv
);
ap
->
Name
,
rv
);
return
rv
;
return
rv
;
}
else
if
((
rv
=
DevInitBoard
(
local
->
dev_number
))
!=
DRV_NO_ERROR
)
{
}
else
if
((
rv
=
DevInitBoard
(
local
->
dev_number
))
!=
DRV_NO_ERROR
)
{
errh_Error
(
"Profibus DP Master %s - "
errh_Error
(
"Profibus DP Master %s - "
" DevInitBoard() failed with return code %d"
,
" DevInitBoard() failed with return code %d"
,
ap
->
Name
,
rv
);
ap
->
Name
,
rv
);
...
@@ -213,13 +219,15 @@ static short dpm_exit(io_sAgentLocalHilscher* local, io_sAgent* ap)
...
@@ -213,13 +219,15 @@ static short dpm_exit(io_sAgentLocalHilscher* local, io_sAgent* ap)
short
rv
;
short
rv
;
short
rv_ret
=
DRV_NO_ERROR
;
short
rv_ret
=
DRV_NO_ERROR
;
if
((
rv
=
DevExitBoard
(
local
->
dev_number
))
!=
DRV_NO_ERROR
)
{
if
((
rv
=
DevExitBoard
(
local
->
dev_number
))
!=
DRV_NO_ERROR
)
{
errh_Error
(
"Profibus DP Master %s - "
errh_Error
(
"Profibus DP Master %s - "
" DevExitBoard() failed with return code %d"
,
" DevExitBoard() failed with return code %d"
,
ap
->
Name
,
rv
);
ap
->
Name
,
rv
);
rv_ret
=
rv
;
rv_ret
=
rv
;
}
}
if
((
rv
=
DevCloseDriver
())
!=
DRV_NO_ERROR
)
{
if
((
rv
=
DevCloseDriver
())
!=
DRV_NO_ERROR
)
{
errh_Error
(
"Profibus DP Master %s - "
errh_Error
(
"Profibus DP Master %s - "
" DevCloseDriver() failed with return code %d"
,
" DevCloseDriver() failed with return code %d"
,
ap
->
Name
,
rv
);
ap
->
Name
,
rv
);
...
@@ -251,29 +259,35 @@ static short module_cnt_inputs(io_sCard* cp)
...
@@ -251,29 +259,35 @@ static short module_cnt_inputs(io_sCard* cp)
for
(
cid
=
cp
->
Class
;
ODD
(
gdh_GetSuperClass
(
cid
,
&
cid
,
cp
->
Objid
));)
for
(
cid
=
cp
->
Class
;
ODD
(
gdh_GetSuperClass
(
cid
,
&
cid
,
cp
->
Objid
));)
;
;
if
(
cid
==
pwr_cClass_Pb_Module
)
{
if
(
cid
==
pwr_cClass_Pb_Module
)
{
/* New style configuring (from v4.1.3) with Pb_Module objects or
/* New style configuring (from v4.1.3) with Pb_Module objects or
subclass. Loop all channels in the module and set channel size and
subclass. Loop all channels in the module and set channel size and
offset. */
offset. */
for
(
i
=
0
;
i
<
cp
->
ChanListSize
;
++
i
)
{
for
(
i
=
0
;
i
<
cp
->
ChanListSize
;
++
i
)
{
chanp
=
&
cp
->
chanlist
[
i
];
chanp
=
&
cp
->
chanlist
[
i
];
if
(
is_diag
(
&
chanp
->
ChanAref
))
{
if
(
is_diag
(
&
chanp
->
ChanAref
))
{
chanp
->
udata
|=
PB_UDATA_DIAG
;
chanp
->
udata
|=
PB_UDATA_DIAG
;
if
(
chanp
->
ChanClass
!=
pwr_cClass_ChanIi
)
if
(
chanp
->
ChanClass
!=
pwr_cClass_ChanIi
)
errh_Error
(
"Diagnostic channel class, card %s"
,
cp
->
Name
);
errh_Error
(
"Diagnostic channel class, card %s"
,
cp
->
Name
);
continue
;
continue
;
}
}
if
(
chanp
->
ChanClass
!=
pwr_cClass_ChanDi
)
{
if
(
chanp
->
ChanClass
!=
pwr_cClass_ChanDi
)
{
input_counter
+=
latent_input_count
;
input_counter
+=
latent_input_count
;
latent_input_count
=
0
;
latent_input_count
=
0
;
}
}
switch
(
chanp
->
ChanClass
)
{
switch
(
chanp
->
ChanClass
)
{
case
pwr_cClass_ChanDi
:
case
pwr_cClass_ChanDi
:
chan_di
=
(
pwr_sClass_ChanDi
*
)
chanp
->
cop
;
chan_di
=
(
pwr_sClass_ChanDi
*
)
chanp
->
cop
;
if
(
chan_di
->
Number
==
0
)
{
if
(
chan_di
->
Number
==
0
)
{
input_counter
+=
latent_input_count
;
input_counter
+=
latent_input_count
;
latent_input_count
=
0
;
latent_input_count
=
0
;
}
}
...
@@ -326,29 +340,35 @@ static short module_cnt_outputs(io_sCard* cp)
...
@@ -326,29 +340,35 @@ static short module_cnt_outputs(io_sCard* cp)
for
(
cid
=
cp
->
Class
;
ODD
(
gdh_GetSuperClass
(
cid
,
&
cid
,
cp
->
Objid
));)
for
(
cid
=
cp
->
Class
;
ODD
(
gdh_GetSuperClass
(
cid
,
&
cid
,
cp
->
Objid
));)
;
;
if
(
cid
==
pwr_cClass_Pb_Module
)
{
if
(
cid
==
pwr_cClass_Pb_Module
)
{
/* New style configuring (from v4.1.3) with Pb_Module objects or
/* New style configuring (from v4.1.3) with Pb_Module objects or
subclass. Loop all channels in the module and set channel size and
subclass. Loop all channels in the module and set channel size and
offset. */
offset. */
for
(
i
=
0
;
i
<
cp
->
ChanListSize
;
i
++
)
{
for
(
i
=
0
;
i
<
cp
->
ChanListSize
;
i
++
)
{
chanp
=
&
cp
->
chanlist
[
i
];
chanp
=
&
cp
->
chanlist
[
i
];
if
(
is_diag
(
&
chanp
->
ChanAref
))
{
if
(
is_diag
(
&
chanp
->
ChanAref
))
{
chanp
->
udata
|=
PB_UDATA_DIAG
;
chanp
->
udata
|=
PB_UDATA_DIAG
;
if
(
chanp
->
ChanClass
!=
pwr_cClass_ChanIi
)
if
(
chanp
->
ChanClass
!=
pwr_cClass_ChanIi
)
errh_Error
(
"Diagnostic channel class, card %s"
,
cp
->
Name
);
errh_Error
(
"Diagnostic channel class, card %s"
,
cp
->
Name
);
continue
;
continue
;
}
}
if
(
chanp
->
ChanClass
!=
pwr_cClass_ChanDo
)
{
if
(
chanp
->
ChanClass
!=
pwr_cClass_ChanDo
)
{
output_counter
+=
latent_output_count
;
output_counter
+=
latent_output_count
;
latent_output_count
=
0
;
latent_output_count
=
0
;
}
}
switch
(
chanp
->
ChanClass
)
{
switch
(
chanp
->
ChanClass
)
{
case
pwr_cClass_ChanDo
:
case
pwr_cClass_ChanDo
:
chan_do
=
(
pwr_sClass_ChanDo
*
)
chanp
->
cop
;
chan_do
=
(
pwr_sClass_ChanDo
*
)
chanp
->
cop
;
if
(
chan_do
->
Number
==
0
)
{
if
(
chan_do
->
Number
==
0
)
{
output_counter
+=
latent_output_count
;
output_counter
+=
latent_output_count
;
latent_output_count
=
0
;
latent_output_count
=
0
;
}
}
...
@@ -385,7 +405,8 @@ The function will also set up the required fields in op so that Proview
...
@@ -385,7 +405,8 @@ The function will also set up the required fields in op so that Proview
may perform IO operations using the IoAgentRead() and IoAgentWrite() functions
may perform IO operations using the IoAgentRead() and IoAgentWrite() functions
in this module. */
in this module. */
static
void
dpm_set_add_tab
(
pwr_sClass_Pb_DP_Slave
*
op
,
io_sAgent
*
ap
,
static
void
dpm_set_add_tab
(
pwr_sClass_Pb_DP_Slave
*
op
,
io_sAgent
*
ap
,
io_sRack
*
rp
,
DPM_SL_PRM_ADD_TAB
*
add_tab
,
int
add_tab_len
)
io_sRack
*
rp
,
DPM_SL_PRM_ADD_TAB
*
add_tab
,
int
add_tab_len
)
{
{
io_sCard
*
cardp
;
io_sCard
*
cardp
;
short
input_counter
;
short
input_counter
;
...
@@ -400,10 +421,10 @@ static void dpm_set_add_tab(pwr_sClass_Pb_DP_Slave* op, io_sAgent* ap,
...
@@ -400,10 +421,10 @@ static void dpm_set_add_tab(pwr_sClass_Pb_DP_Slave* op, io_sAgent* ap,
slaves/modules have occupied so far. */
slaves/modules have occupied so far. */
unsigned
short
*
input_size
;
unsigned
short
*
input_size
;
unsigned
short
*
output_size
;
unsigned
short
*
output_size
;
input_size
input_size
=
=
(
unsigned
short
*
)
&
((
io_sAgentLocalHilscher
*
)
ap
->
Local
)
->
input_size
;
(
unsigned
short
*
)
&
((
io_sAgentLocalHilscher
*
)
ap
->
Local
)
->
input_size
;
output_size
output_size
=
=
(
unsigned
short
*
)
&
((
io_sAgentLocalHilscher
*
)
ap
->
Local
)
->
output_size
;
(
unsigned
short
*
)
&
((
io_sAgentLocalHilscher
*
)
ap
->
Local
)
->
output_size
;
/* This lets Proview find the IO-area for this module (in this case it is
/* This lets Proview find the IO-area for this module (in this case it is
actually handled at the agent level, thus in this file). The offsets
actually handled at the agent level, thus in this file). The offsets
...
@@ -415,12 +436,14 @@ static void dpm_set_add_tab(pwr_sClass_Pb_DP_Slave* op, io_sAgent* ap,
...
@@ -415,12 +436,14 @@ static void dpm_set_add_tab(pwr_sClass_Pb_DP_Slave* op, io_sAgent* ap,
op
->
BytesOfOutput
=
0
;
op
->
BytesOfOutput
=
0
;
/* Finds our rack (slave). */
/* Finds our rack (slave). */
for
(
sl
=
rp
;
sl
!=
NULL
for
(
sl
=
rp
;
&&
((
pwr_sClass_Pb_DP_Slave
*
)
sl
->
op
)
->
SlaveAddress
!=
op
->
SlaveAddress
;
sl
!=
NULL
&&
((
pwr_sClass_Pb_DP_Slave
*
)
sl
->
op
)
->
SlaveAddress
!=
op
->
SlaveAddress
;
sl
=
sl
->
next
)
sl
=
sl
->
next
)
;
;
if
(
sl
==
NULL
if
(
sl
==
NULL
||
||
((
pwr_sClass_Pb_DP_Slave
*
)
sl
->
op
)
->
SlaveAddress
!=
op
->
SlaveAddress
)
{
((
pwr_sClass_Pb_DP_Slave
*
)
sl
->
op
)
->
SlaveAddress
!=
op
->
SlaveAddress
)
{
errh_Error
(
"Profibus DP Master %s - "
errh_Error
(
"Profibus DP Master %s - "
" Can't find rack for slave %d"
,
" Can't find rack for slave %d"
,
ap
->
Name
,
op
->
SlaveAddress
);
ap
->
Name
,
op
->
SlaveAddress
);
...
@@ -429,7 +452,8 @@ static void dpm_set_add_tab(pwr_sClass_Pb_DP_Slave* op, io_sAgent* ap,
...
@@ -429,7 +452,8 @@ static void dpm_set_add_tab(pwr_sClass_Pb_DP_Slave* op, io_sAgent* ap,
/* Iterates through the cards (modules in Profibus terminology) of
/* Iterates through the cards (modules in Profibus terminology) of
the current rack, counting the length of the input area as we go. */
the current rack, counting the length of the input area as we go. */
for
(
cardp
=
sl
->
cardlist
;
cardp
;
cardp
=
cardp
->
next
)
{
for
(
cardp
=
sl
->
cardlist
;
cardp
;
cardp
=
cardp
->
next
)
{
/* Gets the size of the input area for this module. */
/* Gets the size of the input area for this module. */
input_counter
=
module_cnt_inputs
(
cardp
);
input_counter
=
module_cnt_inputs
(
cardp
);
...
@@ -438,19 +462,21 @@ static void dpm_set_add_tab(pwr_sClass_Pb_DP_Slave* op, io_sAgent* ap,
...
@@ -438,19 +462,21 @@ static void dpm_set_add_tab(pwr_sClass_Pb_DP_Slave* op, io_sAgent* ap,
/* Only modules with and input or output area are required to
/* Only modules with and input or output area are required to
have an entry in the add tab. */
have an entry in the add tab. */
if
(
input_counter
>
0
)
{
if
(
input_counter
>
0
)
{
assert
(
add_tab
->
bInput_Count
+
4
<
add_tab_len
);
assert
(
add_tab
->
bInput_Count
+
4
<
add_tab_len
);
/* The MSB tells the Hilscher board whether to treat the address
/* The MSB tells the Hilscher board whether to treat the address
as a byte (set) or word (unset) offset
as a byte (set) or word (unset) offset
(see dpm_pie.pdf, page 45). */
(see dpm_pie.pdf, page 45). */
add_tab
->
ausEA_Offset
[
add_tab
->
bInput_Count
++
]
add_tab
->
ausEA_Offset
[
add_tab
->
bInput_Count
++
]
=
=
*
input_size
|
EA_OFFSET_BYTE
;
*
input_size
|
EA_OFFSET_BYTE
;
*
input_size
+=
input_counter
;
*
input_size
+=
input_counter
;
}
}
}
}
/* Now process the output areas. */
/* Now process the output areas. */
for
(
cardp
=
sl
->
cardlist
;
cardp
;
cardp
=
cardp
->
next
)
{
for
(
cardp
=
sl
->
cardlist
;
cardp
;
cardp
=
cardp
->
next
)
{
/* Gets the size of the output area for this module. */
/* Gets the size of the output area for this module. */
output_counter
=
module_cnt_outputs
(
cardp
);
output_counter
=
module_cnt_outputs
(
cardp
);
...
@@ -459,14 +485,15 @@ static void dpm_set_add_tab(pwr_sClass_Pb_DP_Slave* op, io_sAgent* ap,
...
@@ -459,14 +485,15 @@ static void dpm_set_add_tab(pwr_sClass_Pb_DP_Slave* op, io_sAgent* ap,
/* Only modules with and input or output area are required to
/* Only modules with and input or output area are required to
have an entry in the add tab. */
have an entry in the add tab. */
if
(
output_counter
>
0
)
{
if
(
output_counter
>
0
)
{
assert
(
add_tab
->
bInput_Count
+
add_tab
->
bOutput_Count
+
4
<
add_tab_len
);
assert
(
add_tab
->
bInput_Count
+
add_tab
->
bOutput_Count
+
4
<
add_tab_len
);
/* The MSB tells the Hilscher board whether to treat the address
/* The MSB tells the Hilscher board whether to treat the address
as a byte (set) or word (unset) offset
as a byte (set) or word (unset) offset
(see dpm_pie.pdf, page 45). */
(see dpm_pie.pdf, page 45). */
/* The input offsets precedes the output offsets. */
/* The input offsets precedes the output offsets. */
add_tab
->
ausEA_Offset
[
add_tab
->
bInput_Count
+
add_tab
->
bOutput_Count
++
]
add_tab
->
ausEA_Offset
[
add_tab
->
bInput_Count
+
add_tab
->
bOutput_Count
++
]
=
=
*
output_size
|
EA_OFFSET_BYTE
;
*
output_size
|
EA_OFFSET_BYTE
;
*
output_size
+=
output_counter
;
*
output_size
+=
output_counter
;
}
}
}
}
...
@@ -474,9 +501,10 @@ static void dpm_set_add_tab(pwr_sClass_Pb_DP_Slave* op, io_sAgent* ap,
...
@@ -474,9 +501,10 @@ static void dpm_set_add_tab(pwr_sClass_Pb_DP_Slave* op, io_sAgent* ap,
assert
(
add_tab
->
bInput_Count
+
add_tab
->
bOutput_Count
<=
MAX_EA_OFFSET_LEN
);
assert
(
add_tab
->
bInput_Count
+
add_tab
->
bOutput_Count
<=
MAX_EA_OFFSET_LEN
);
/* Updates the length of the add_tab struct. */
/* Updates the length of the add_tab struct. */
add_tab
->
usAdd_Tab_Len
=
sizeof
(
add_tab
->
usAdd_Tab_Len
)
add_tab
->
usAdd_Tab_Len
=
+
sizeof
(
add_tab
->
bInput_Count
)
+
sizeof
(
add_tab
->
bOutput_Count
)
sizeof
(
add_tab
->
usAdd_Tab_Len
)
+
sizeof
(
add_tab
->
bInput_Count
)
+
+
2
*
add_tab
->
bInput_Count
+
2
*
add_tab
->
bOutput_Count
;
sizeof
(
add_tab
->
bOutput_Count
)
+
2
*
add_tab
->
bInput_Count
+
2
*
add_tab
->
bOutput_Count
;
}
}
/* Writes instructions for reflashing the board to the error log. */
/* Writes instructions for reflashing the board to the error log. */
...
@@ -499,9 +527,11 @@ static void dpm_ddlm_answer_msg_print_error(RCS_MESSAGE* msg, io_sAgent* ap)
...
@@ -499,9 +527,11 @@ static void dpm_ddlm_answer_msg_print_error(RCS_MESSAGE* msg, io_sAgent* ap)
if
(
msg
==
NULL
)
if
(
msg
==
NULL
)
return
;
return
;
switch
(
msg
->
a
)
{
switch
(
msg
->
a
)
{
case
DDLM_Download
:
case
DDLM_Download
:
switch
(
msg
->
f
)
{
switch
(
msg
->
f
)
{
case
0
:
case
0
:
return
;
return
;
case
CON_NO
:
case
CON_NO
:
...
@@ -551,7 +581,8 @@ static void dpm_ddlm_answer_msg_print_error(RCS_MESSAGE* msg, io_sAgent* ap)
...
@@ -551,7 +581,8 @@ static void dpm_ddlm_answer_msg_print_error(RCS_MESSAGE* msg, io_sAgent* ap)
break
;
break
;
case
DDLM_Slave_Diag
:
case
DDLM_Slave_Diag
:
switch
(
msg
->
f
)
{
switch
(
msg
->
f
)
{
case
0
:
case
0
:
return
;
return
;
case
CON_NA
:
case
CON_NA
:
...
@@ -582,7 +613,8 @@ or 127 to set master bus parameters. The bus parameters are read from
...
@@ -582,7 +613,8 @@ or 127 to set master bus parameters. The bus parameters are read from
the buffer prmdata and shall be of length prmlen. DRV_NO_ERROR is returned
the buffer prmdata and shall be of length prmlen. DRV_NO_ERROR is returned
if successful. */
if successful. */
static
short
dpm_ddlm_download
(
io_sAgentLocalHilscher
*
local
,
static
short
dpm_ddlm_download
(
io_sAgentLocalHilscher
*
local
,
unsigned
char
address
,
unsigned
int
prmlen
,
void
*
prmdata
,
io_sAgent
*
ap
)
unsigned
char
address
,
unsigned
int
prmlen
,
void
*
prmdata
,
io_sAgent
*
ap
)
{
{
short
rv
;
short
rv
;
int
got_response
=
0
;
int
got_response
=
0
;
...
@@ -613,8 +645,9 @@ static short dpm_ddlm_download(io_sAgentLocalHilscher* local,
...
@@ -613,8 +645,9 @@ static short dpm_ddlm_download(io_sAgentLocalHilscher* local,
assert
(
prmlen
<=
240
);
assert
(
prmlen
<=
240
);
memcpy
(
&
(
msg
.
d
[
4
]),
prmdata
,
prmlen
);
memcpy
(
&
(
msg
.
d
[
4
]),
prmdata
,
prmlen
);
if
((
rv
=
DevPutMessage
(
local
->
dev_number
,
(
MSG_STRUC
*
)
&
msg
,
5000
))
if
((
rv
=
DevPutMessage
(
local
->
dev_number
,
(
MSG_STRUC
*
)
&
msg
,
5000
))
!=
!=
DRV_NO_ERROR
)
{
DRV_NO_ERROR
)
{
errh_Error
(
"Profibus DP Master %s - DDLM_Download - DevPutMessage()"
errh_Error
(
"Profibus DP Master %s - DDLM_Download - DevPutMessage()"
" returned %d"
,
" returned %d"
,
ap
->
Name
,
rv
);
ap
->
Name
,
rv
);
...
@@ -622,23 +655,30 @@ static short dpm_ddlm_download(io_sAgentLocalHilscher* local,
...
@@ -622,23 +655,30 @@ static short dpm_ddlm_download(io_sAgentLocalHilscher* local,
}
}
/* Checks confirmation message. */
/* Checks confirmation message. */
while
(
!
got_response
)
{
while
(
!
got_response
)
if
((
rv
=
DevGetMessage
(
{
local
->
dev_number
,
sizeof
(
rcv_msg
),
(
MSG_STRUC
*
)
&
rcv_msg
,
5000
))
if
((
rv
=
DevGetMessage
(
local
->
dev_number
,
sizeof
(
rcv_msg
),
!=
DRV_NO_ERROR
)
{
(
MSG_STRUC
*
)
&
rcv_msg
,
5000
))
!=
DRV_NO_ERROR
)
{
errh_Error
(
"Profibus DP Master %s - DDLM_Download - DevGetMessage()"
errh_Error
(
"Profibus DP Master %s - DDLM_Download - DevGetMessage()"
" returned %d"
,
" returned %d"
,
ap
->
Name
,
rv
);
ap
->
Name
,
rv
);
return
rv
;
return
rv
;
}
else
if
(
rcv_msg
.
nr
!=
local
->
cif_msgcnt
||
rcv_msg
.
rx
!=
16
}
||
rcv_msg
.
tx
!=
3
||
rcv_msg
.
a
!=
DDLM_Download
)
{
else
if
(
rcv_msg
.
nr
!=
local
->
cif_msgcnt
||
rcv_msg
.
rx
!=
16
||
rcv_msg
.
tx
!=
3
||
rcv_msg
.
a
!=
DDLM_Download
)
{
/* Discards all messages prior to our response. */
/* Discards all messages prior to our response. */
memset
(
&
rcv_msg
,
0
,
sizeof
(
rcv_msg
));
memset
(
&
rcv_msg
,
0
,
sizeof
(
rcv_msg
));
continue
;
continue
;
}
else
if
(
rcv_msg
.
f
!=
0
)
{
}
else
if
(
rcv_msg
.
f
!=
0
)
{
dpm_ddlm_answer_msg_print_error
(
&
rcv_msg
,
ap
);
dpm_ddlm_answer_msg_print_error
(
&
rcv_msg
,
ap
);
return
rcv_msg
.
f
;
return
rcv_msg
.
f
;
}
else
{
}
else
{
got_response
=
1
;
got_response
=
1
;
}
}
}
}
...
@@ -648,8 +688,8 @@ static short dpm_ddlm_download(io_sAgentLocalHilscher* local,
...
@@ -648,8 +688,8 @@ static short dpm_ddlm_download(io_sAgentLocalHilscher* local,
/* Configures the master bus parameters of the board referred to by
/* Configures the master bus parameters of the board referred to by
local, the struct containing the parameters should be passed in op. */
local, the struct containing the parameters should be passed in op. */
static
short
dpm_download_master_prm
(
static
short
dpm_download_master_prm
(
io_sAgentLocalHilscher
*
local
,
io_sAgentLocalHilscher
*
local
,
pwr_sClass_Pb_Hilscher
*
op
,
io_sAgent
*
ap
)
pwr_sClass_Pb_Hilscher
*
op
,
io_sAgent
*
ap
)
{
{
DPM_BUS_DP
prm
;
DPM_BUS_DP
prm
;
...
@@ -661,10 +701,13 @@ static short dpm_download_master_prm(
...
@@ -661,10 +701,13 @@ static short dpm_download_master_prm(
prm
.
usBus_Para_Len
=
32
;
prm
.
usBus_Para_Len
=
32
;
/* The master's address is hardcoded to 0. */
/* The master's address is hardcoded to 0. */
prm
.
bFDL_Add
=
0
;
prm
.
bFDL_Add
=
0
;
prm
.
bBaudrate
=
((
op
->
BaudRate
==
500
)
?
(
DP_BAUD_500
)
prm
.
bBaudrate
=
((
op
->
BaudRate
==
500
)
?
(
DP_BAUD_500
)
:
(
op
->
BaudRate
==
1500
)
:
(
op
->
BaudRate
==
1500
)
?
(
DP_BAUD_1500
)
?
(
DP_BAUD_1500
)
:
(
op
->
BaudRate
==
3000
)
?
(
DP_BAUD_3000
)
:
(
op
->
BaudRate
==
3000
)
?
(
DP_BAUD_3000
)
:
(
op
->
BaudRate
==
6000
)
:
(
op
->
BaudRate
==
6000
)
?
(
DP_BAUD_6000
)
?
(
DP_BAUD_6000
)
:
(
op
->
BaudRate
==
12000
)
?
(
DP_BAUD_12000
)
:
(
op
->
BaudRate
==
12000
)
?
(
DP_BAUD_12000
)
...
@@ -696,7 +739,8 @@ is passed in local. op holds the slave to configure, the corresponding
...
@@ -696,7 +739,8 @@ is passed in local. op holds the slave to configure, the corresponding
agent pointer and rack pointer must be passed in ap and rp respectively.
agent pointer and rack pointer must be passed in ap and rp respectively.
DRV_NO_ERROR will be returned upon success. */
DRV_NO_ERROR will be returned upon success. */
static
short
dpm_download_slave_prm
(
io_sAgentLocalHilscher
*
local
,
static
short
dpm_download_slave_prm
(
io_sAgentLocalHilscher
*
local
,
pwr_sClass_Pb_DP_Slave
*
op
,
io_sAgent
*
ap
,
io_sRack
*
rp
)
pwr_sClass_Pb_DP_Slave
*
op
,
io_sAgent
*
ap
,
io_sRack
*
rp
)
{
{
unsigned
char
buf
[
DPM_MAX_LEN_DATA_UNIT
];
unsigned
char
buf
[
DPM_MAX_LEN_DATA_UNIT
];
unsigned
int
bufcnt
=
0
;
unsigned
int
bufcnt
=
0
;
...
@@ -790,8 +834,8 @@ static short dpm_download_slave_prm(io_sAgentLocalHilscher* local,
...
@@ -790,8 +834,8 @@ static short dpm_download_slave_prm(io_sAgentLocalHilscher* local,
board referred to by local. The function will return DRV_NO_ERROR if
board referred to by local. The function will return DRV_NO_ERROR if
the request was sent without error, however, it tells us nothing
the request was sent without error, however, it tells us nothing
about whether any diagnostics data was sent back. */
about whether any diagnostics data was sent back. */
static
short
dpm_req_slave_diag
(
static
short
dpm_req_slave_diag
(
io_sAgentLocalHilscher
*
local
,
io_sAgentLocalHilscher
*
local
,
unsigned
char
address
,
io_sAgent
*
ap
)
unsigned
char
address
,
io_sAgent
*
ap
)
{
{
short
rv
;
short
rv
;
RCS_MESSAGETELEGRAM_10
msg
;
RCS_MESSAGETELEGRAM_10
msg
;
...
@@ -819,8 +863,9 @@ static short dpm_req_slave_diag(
...
@@ -819,8 +863,9 @@ static short dpm_req_slave_diag(
msg
.
function
=
TASK_TFC_READ
;
msg
.
function
=
TASK_TFC_READ
;
/* Requests diagnostic data from slave. */
/* Requests diagnostic data from slave. */
if
((
rv
=
DevPutMessage
(
local
->
dev_number
,
(
MSG_STRUC
*
)
&
msg
,
0
))
if
((
rv
=
DevPutMessage
(
local
->
dev_number
,
(
MSG_STRUC
*
)
&
msg
,
0
))
!=
!=
DRV_NO_ERROR
)
{
DRV_NO_ERROR
)
{
errh_Info
(
"Profibus DP Master %s - DDLM_Slave_Diag - DevPutMessage()"
errh_Info
(
"Profibus DP Master %s - DDLM_Slave_Diag - DevPutMessage()"
" returned %d"
,
" returned %d"
,
ap
->
Name
,
rv
);
ap
->
Name
,
rv
);
...
@@ -834,8 +879,8 @@ static short dpm_req_slave_diag(
...
@@ -834,8 +879,8 @@ static short dpm_req_slave_diag(
to gather diagnostics data asynchronously. The desired agent's local
to gather diagnostics data asynchronously. The desired agent's local
struct is passed via local and the associated rack list (Profibus slaves) is
struct is passed via local and the associated rack list (Profibus slaves) is
passed in slave_list. */
passed in slave_list. */
static
void
dpm_update_slave_diag
(
static
void
dpm_update_slave_diag
(
io_sAgentLocalHilscher
*
local
,
io_sAgentLocalHilscher
*
local
,
io_sRack
*
slave_list
,
io_sAgent
*
ap
)
io_sRack
*
slave_list
,
io_sAgent
*
ap
)
{
{
short
rv
;
short
rv
;
RCS_MESSAGETELEGRAM_10
rcv_msg
;
RCS_MESSAGETELEGRAM_10
rcv_msg
;
...
@@ -846,30 +891,37 @@ static void dpm_update_slave_diag(
...
@@ -846,30 +891,37 @@ static void dpm_update_slave_diag(
memset
(
&
rcv_msg
,
0
,
sizeof
(
rcv_msg
));
memset
(
&
rcv_msg
,
0
,
sizeof
(
rcv_msg
));
/* Gets pending diagnostic messages, discards all other messages. */
/* Gets pending diagnostic messages, discards all other messages. */
while
((
rv
=
DevGetMessage
(
while
((
rv
=
DevGetMessage
(
local
->
dev_number
,
sizeof
(
rcv_msg
),
local
->
dev_number
,
sizeof
(
rcv_msg
),
(
MSG_STRUC
*
)
&
rcv_msg
,
0
))
(
MSG_STRUC
*
)
&
rcv_msg
,
0
))
==
DRV_NO_ERROR
)
==
DRV_NO_ERROR
)
{
{
if
(
rcv_msg
.
rx
!=
16
||
rcv_msg
.
tx
!=
3
||
rcv_msg
.
a
!=
DDLM_Slave_Diag
)
{
if
(
rcv_msg
.
rx
!=
16
||
rcv_msg
.
tx
!=
3
||
rcv_msg
.
a
!=
DDLM_Slave_Diag
)
{
/* Discards received message. */
/* Discards received message. */
memset
(
&
rcv_msg
,
0
,
sizeof
(
rcv_msg
));
memset
(
&
rcv_msg
,
0
,
sizeof
(
rcv_msg
));
continue
;
continue
;
}
else
if
(
rcv_msg
.
f
!=
0
)
{
}
else
if
(
rcv_msg
.
f
!=
0
)
{
dpm_ddlm_answer_msg_print_error
((
RCS_MESSAGE
*
)
&
rcv_msg
,
ap
);
dpm_ddlm_answer_msg_print_error
((
RCS_MESSAGE
*
)
&
rcv_msg
,
ap
);
/* Discards received message. */
/* Discards received message. */
memset
(
&
rcv_msg
,
0
,
sizeof
(
rcv_msg
));
memset
(
&
rcv_msg
,
0
,
sizeof
(
rcv_msg
));
continue
;
continue
;
}
else
{
}
else
{
/*** Updates Proview's structs with the acquired diagnostics. ***/
/*** Updates Proview's structs with the acquired diagnostics. ***/
/* Finds our slave. */
/* Finds our slave. */
for
(
sl
=
slave_list
;
sl
!=
NULL
;
sl
=
sl
->
next
)
{
for
(
sl
=
slave_list
;
sl
!=
NULL
;
sl
=
sl
->
next
)
{
sp
=
(
pwr_sClass_Pb_DP_Slave
*
)
sl
->
op
;
sp
=
(
pwr_sClass_Pb_DP_Slave
*
)
sl
->
op
;
if
(
sp
->
SlaveAddress
==
rcv_msg
.
device_adr
)
if
(
sp
->
SlaveAddress
==
rcv_msg
.
device_adr
)
break
;
break
;
}
}
/* The slave from which we were to read diagnostic data could not
/* The slave from which we were to read diagnostic data could not
be found -- abort. */
be found -- abort. */
if
(
sp
->
SlaveAddress
!=
rcv_msg
.
device_adr
)
{
if
(
sp
->
SlaveAddress
!=
rcv_msg
.
device_adr
)
{
errh_Error
(
"Profibus DP Master %s - Received diagnostic message"
errh_Error
(
"Profibus DP Master %s - Received diagnostic message"
" from unknown slave %d"
,
" from unknown slave %d"
,
ap
->
Name
,
rcv_msg
.
device_adr
);
ap
->
Name
,
rcv_msg
.
device_adr
);
...
@@ -888,22 +940,30 @@ static void dpm_update_slave_diag(
...
@@ -888,22 +940,30 @@ static void dpm_update_slave_diag(
/* Updates the slave's status */
/* Updates the slave's status */
if
(
!
(
sp
->
StationStatus1
&
~
pwr_mPbStationStatus1Mask_ExternalDiag
)
if
(
!
(
sp
->
StationStatus1
&
~
pwr_mPbStationStatus1Mask_ExternalDiag
)
&&
&&
!
(
sp
->
StationStatus2
!
(
sp
->
StationStatus2
&
&
~
(
pwr_mPbStationStatus2Mask_Default
~
(
pwr_mPbStationStatus2Mask_Default
|
|
pwr_mPbStationStatus2Mask_ResponseMonitoringOn
)))
{
pwr_mPbStationStatus2Mask_ResponseMonitoringOn
)))
{
sp
->
Status
=
PB__NORMAL
;
sp
->
Status
=
PB__NORMAL
;
}
else
if
(
sp
->
StationStatus1
&
pwr_mPbStationStatus1Mask_NonExistent
)
{
}
else
if
(
sp
->
StationStatus1
&
pwr_mPbStationStatus1Mask_NonExistent
)
{
sp
->
Status
=
PB__NOCONN
;
sp
->
Status
=
PB__NOCONN
;
}
else
if
((
sp
->
StationStatus1
}
&
(
pwr_mPbStationStatus1Mask_ConfigFault
else
if
((
sp
->
StationStatus1
&
(
pwr_mPbStationStatus1Mask_ConfigFault
|
|
pwr_mPbStationStatus1Mask_ParamFault
))
pwr_mPbStationStatus1Mask_ParamFault
))
||
||
(
sp
->
StationStatus2
(
sp
->
StationStatus2
&
&
pwr_mPbStationStatus2Mask_NewParamsRequested
))
{
pwr_mPbStationStatus2Mask_NewParamsRequested
))
{
sp
->
Status
=
PB__CONFIGERR
;
sp
->
Status
=
PB__CONFIGERR
;
}
else
if
(
sp
->
StationStatus1
&
pwr_mPbStationStatus1Mask_MasterLock
)
{
}
else
if
(
sp
->
StationStatus1
&
pwr_mPbStationStatus1Mask_MasterLock
)
{
sp
->
Status
=
PB__MASTERLOCK
;
sp
->
Status
=
PB__MASTERLOCK
;
}
else
{
/* if (sp->StationStatus1
}
else
{
/* if (sp->StationStatus1
& pwr_mPbStationStatus1Mask_NotReady) */
& pwr_mPbStationStatus1Mask_NotReady) */
sp
->
Status
=
PB__NOTREADY
;
sp
->
Status
=
PB__NOTREADY
;
}
}
...
@@ -917,10 +977,14 @@ static void dpm_print_diag(io_sAgent* ap, DPM_DIAGNOSTICS* diag)
...
@@ -917,10 +977,14 @@ static void dpm_print_diag(io_sAgent* ap, DPM_DIAGNOSTICS* diag)
{
{
char
*
s
;
char
*
s
;
if
(
diag
->
tError
.
bErr_Event
==
0
)
{
if
(
diag
->
tError
.
bErr_Event
==
0
)
{
return
;
return
;
}
else
if
(
diag
->
tError
.
bErr_Rem_Adr
==
255
)
{
}
switch
(
diag
->
tError
.
bErr_Event
)
{
else
if
(
diag
->
tError
.
bErr_Rem_Adr
==
255
)
{
switch
(
diag
->
tError
.
bErr_Event
)
{
case
TASK_F_NO_USR_TASK
:
case
TASK_F_NO_USR_TASK
:
s
=
"usr task not found"
;
s
=
"usr task not found"
;
break
;
break
;
...
@@ -993,8 +1057,11 @@ static void dpm_print_diag(io_sAgent* ap, DPM_DIAGNOSTICS* diag)
...
@@ -993,8 +1057,11 @@ static void dpm_print_diag(io_sAgent* ap, DPM_DIAGNOSTICS* diag)
errh_Info
(
"Profibus DP Master %s - %s"
,
ap
->
Name
,
s
);
errh_Info
(
"Profibus DP Master %s - %s"
,
ap
->
Name
,
s
);
return
;
return
;
}
else
{
}
switch
(
diag
->
tError
.
bErr_Event
)
{
else
{
switch
(
diag
->
tError
.
bErr_Event
)
{
case
CON_NA
:
case
CON_NA
:
s
=
"no reaction of the remote station"
;
s
=
"no reaction of the remote station"
;
break
;
break
;
...
@@ -1035,8 +1102,9 @@ static short dpm_check_board_type(io_sAgentLocalHilscher* local, io_sAgent* ap,
...
@@ -1035,8 +1102,9 @@ static short dpm_check_board_type(io_sAgentLocalHilscher* local, io_sAgent* ap,
assert
(
DRV_NO_ERROR
==
0
);
assert
(
DRV_NO_ERROR
==
0
);
/* Gets device information from the board. */
/* Gets device information from the board. */
if
((
rv
=
DevGetInfo
(
local
->
dev_number
,
GET_DEV_INFO
,
sizeof
(
info
),
&
info
))
if
((
rv
=
DevGetInfo
(
local
->
dev_number
,
GET_DEV_INFO
,
sizeof
(
info
),
&
info
))
!=
!=
DRV_NO_ERROR
)
{
DRV_NO_ERROR
)
{
errh_Error
(
"Profibus DP Master %s - Error %d while checking board type."
,
errh_Error
(
"Profibus DP Master %s - Error %d while checking board type."
,
ap
->
Name
,
rv
);
ap
->
Name
,
rv
);
return
rv
;
return
rv
;
...
@@ -1055,7 +1123,8 @@ static short dpm_check_board_type(io_sAgentLocalHilscher* local, io_sAgent* ap,
...
@@ -1055,7 +1123,8 @@ static short dpm_check_board_type(io_sAgentLocalHilscher* local, io_sAgent* ap,
if
(
memcmp
(
&
known_boards
[
i
].
info
,
&
info
,
sizeof
(
info
))
==
0
)
if
(
memcmp
(
&
known_boards
[
i
].
info
,
&
info
,
sizeof
(
info
))
==
0
)
break
;
break
;
if
(
known_boards
[
i
].
entry
==
0
)
{
if
(
known_boards
[
i
].
entry
==
0
)
{
/* Board was not found in table. */
/* Board was not found in table. */
errh_Error
(
"Profibus DP Master %s - Unknown board."
,
ap
->
Name
);
errh_Error
(
"Profibus DP Master %s - Unknown board."
,
ap
->
Name
);
errh_Error
(
"To add support for this board, look up its database start"
);
errh_Error
(
"To add support for this board, look up its database start"
);
...
@@ -1067,8 +1136,9 @@ static short dpm_check_board_type(io_sAgentLocalHilscher* local, io_sAgent* ap,
...
@@ -1067,8 +1136,9 @@ static short dpm_check_board_type(io_sAgentLocalHilscher* local, io_sAgent* ap,
errh_Error
(
"in the above mentioned documentation."
);
errh_Error
(
"in the above mentioned documentation."
);
errh_Error
(
"{ 1, { %d, %d, %d, { '%c', '%c', '%c'} }, "
errh_Error
(
"{ 1, { %d, %d, %d, { '%c', '%c', '%c'} }, "
"<db start segment>,
\"
<board name>
\"
},"
,
"<db start segment>,
\"
<board name>
\"
},"
,
info
.
bDpmSize
,
info
.
bDevType
,
info
.
bDevModel
,
info
.
abDevIdentifier
[
0
],
info
.
bDpmSize
,
info
.
bDevType
,
info
.
bDevModel
,
info
.
abDevIdentifier
[
1
],
info
.
abDevIdentifier
[
2
]);
info
.
abDevIdentifier
[
0
],
info
.
abDevIdentifier
[
1
],
info
.
abDevIdentifier
[
2
]);
return
BOARD_INIT_ERROR
;
return
BOARD_INIT_ERROR
;
}
}
...
@@ -1084,8 +1154,8 @@ static short dpm_check_board_type(io_sAgentLocalHilscher* local, io_sAgent* ap,
...
@@ -1084,8 +1154,8 @@ static short dpm_check_board_type(io_sAgentLocalHilscher* local, io_sAgent* ap,
/* Deletes the "PROFIBUS" protocol settings database from the card referred
/* Deletes the "PROFIBUS" protocol settings database from the card referred
to by local, this procedure is described on page 32 -- 33 in dpm_pie.pdf. */
to by local, this procedure is described on page 32 -- 33 in dpm_pie.pdf. */
static
short
dpm_delete_flash_prmdb
(
static
short
dpm_delete_flash_prmdb
(
io_sAgentLocalHilscher
*
local
,
io_sAgentLocalHilscher
*
local
,
io_sAgent
*
ap
)
io_sAgent
*
ap
)
{
{
unsigned
char
db_startsegment
;
unsigned
char
db_startsegment
;
int
s
=
3
;
int
s
=
3
;
...
@@ -1114,11 +1184,12 @@ static short dpm_delete_flash_prmdb(
...
@@ -1114,11 +1184,12 @@ static short dpm_delete_flash_prmdb(
msg
.
d
[
0
]
=
4
;
/* mode = delete data base */
msg
.
d
[
0
]
=
4
;
/* mode = delete data base */
msg
.
d
[
1
]
=
db_startsegment
;
msg
.
d
[
1
]
=
db_startsegment
;
errh_Info
(
errh_Info
(
"Profibus DP Master %s - Sending delete database request..."
,
"Profibus DP Master %s - Sending delete database request..."
,
ap
->
Name
);
ap
->
Name
);
/* Sends delete database request. */
/* Sends delete database request. */
if
((
rv
=
DevPutMessage
(
local
->
dev_number
,
(
MSG_STRUC
*
)
&
msg
,
5000
))
if
((
rv
=
DevPutMessage
(
local
->
dev_number
,
(
MSG_STRUC
*
)
&
msg
,
5000
))
!=
!=
DRV_NO_ERROR
)
{
DRV_NO_ERROR
)
{
errh_Error
(
"Profibus DP Master %s -"
errh_Error
(
"Profibus DP Master %s -"
" DevPutMessage failed with return code %d"
,
" DevPutMessage failed with return code %d"
,
ap
->
Name
,
rv
);
ap
->
Name
,
rv
);
...
@@ -1136,20 +1207,25 @@ static short dpm_delete_flash_prmdb(
...
@@ -1136,20 +1207,25 @@ static short dpm_delete_flash_prmdb(
memset
(
&
msg
,
0
,
sizeof
(
msg
));
memset
(
&
msg
,
0
,
sizeof
(
msg
));
/* Gets response message. */
/* Gets response message. */
while
(
!
got_response
)
{
while
(
!
got_response
)
if
((
rv
=
DevGetMessage
(
{
local
->
dev_number
,
sizeof
(
msg
),
(
MSG_STRUC
*
)
&
msg
,
10000
))
if
((
rv
=
DevGetMessage
(
local
->
dev_number
,
sizeof
(
msg
),
(
MSG_STRUC
*
)
&
msg
,
!=
DRV_NO_ERROR
)
{
10000
))
!=
DRV_NO_ERROR
)
{
errh_Error
(
"Profibus DP Master %s -"
errh_Error
(
"Profibus DP Master %s -"
" DevGetMessage failed with return code %d
\n
"
,
" DevGetMessage failed with return code %d
\n
"
,
ap
->
Name
,
rv
);
ap
->
Name
,
rv
);
return
rv
;
return
rv
;
}
else
if
(
msg
.
nr
!=
local
->
cif_msgcnt
||
msg
.
rx
!=
16
||
msg
.
tx
!=
0
}
||
msg
.
a
!=
6
)
{
else
if
(
msg
.
nr
!=
local
->
cif_msgcnt
||
msg
.
rx
!=
16
||
msg
.
tx
!=
0
||
msg
.
a
!=
6
)
{
/* Discards all messages prior to our response. */
/* Discards all messages prior to our response. */
memset
(
&
msg
,
0
,
sizeof
(
msg
));
memset
(
&
msg
,
0
,
sizeof
(
msg
));
continue
;
continue
;
}
else
{
}
else
{
if
(
msg
.
f
!=
0
)
if
(
msg
.
f
!=
0
)
errh_Error
(
"Profibus DP Master %s -"
errh_Error
(
"Profibus DP Master %s -"
" Delete db confirmation message f-flag set to %d"
,
" Delete db confirmation message f-flag set to %d"
,
...
@@ -1173,8 +1249,9 @@ static short dpm_delete_flash_prmdb(
...
@@ -1173,8 +1249,9 @@ static short dpm_delete_flash_prmdb(
/* Wrapper for dpm_init_master(), takes care of checking for (and optionally
/* Wrapper for dpm_init_master(), takes care of checking for (and optionally
removing) the sycon database if present. */
removing) the sycon database if present. */
static
short
dpm_init_master_check_sycon_db
(
static
short
dpm_init_master_check_sycon_db
(
io_sAgentLocalHilscher
*
local
,
io_sAgentLocalHilscher
*
local
,
pwr_sClass_Pb_Hilscher
*
op
,
io_sAgent
*
ap
)
pwr_sClass_Pb_Hilscher
*
op
,
io_sAgent
*
ap
)
{
{
short
rv
;
short
rv
;
DRIVERINFO
di
;
DRIVERINFO
di
;
...
@@ -1182,26 +1259,32 @@ static short dpm_init_master_check_sycon_db(
...
@@ -1182,26 +1259,32 @@ static short dpm_init_master_check_sycon_db(
assert
(
DRV_NO_ERROR
==
0
);
assert
(
DRV_NO_ERROR
==
0
);
/* Initializes DP Master. */
/* Initializes DP Master. */
if
((
rv
=
dpm_init_master
(
local
,
op
,
ap
))
!=
DRV_NO_ERROR
)
{
if
((
rv
=
dpm_init_master
(
local
,
op
,
ap
))
!=
DRV_NO_ERROR
)
{
return
rv
;
return
rv
;
}
else
if
((
rv
=
DevGetInfo
(
}
local
->
dev_number
,
GET_DRIVER_INFO
,
sizeof
(
di
),
&
di
))
else
if
((
rv
=
DevGetInfo
(
local
->
dev_number
,
GET_DRIVER_INFO
,
sizeof
(
di
),
!=
DRV_NO_ERROR
)
{
&
di
))
!=
DRV_NO_ERROR
)
{
errh_Error
(
"Profibus DP Master %s -"
errh_Error
(
"Profibus DP Master %s -"
" DevGetInfo failed with return code %d"
,
" DevGetInfo failed with return code %d"
,
ap
->
Name
,
rv
);
ap
->
Name
,
rv
);
return
rv
;
return
rv
;
}
else
if
((
di
.
bHostFlags
&
(
READY_FLAG
|
RUN_FLAG
))
}
==
(
READY_FLAG
|
RUN_FLAG
))
{
else
if
((
di
.
bHostFlags
&
(
READY_FLAG
|
RUN_FLAG
))
==
(
READY_FLAG
|
RUN_FLAG
))
{
/* RUN and RDY bits set */
/* RUN and RDY bits set */
errh_Info
(
errh_Info
(
"Profibus DP Master %s - Hostflags: 0x%X"
,
ap
->
Name
,
"Profibus DP Master %s - Hostflags: 0x%X"
,
ap
->
Name
,
di
.
bHostFlags
);
di
.
bHostFlags
);
errh_Info
(
"Device is configured by SyCon."
);
errh_Info
(
"Device is configured by SyCon."
);
#ifdef FLASH_WRITE_ENABLE
#ifdef FLASH_WRITE_ENABLE
errh_Info
(
"Deleting SyCon database from board's flash."
);
errh_Info
(
"Deleting SyCon database from board's flash."
);
if
((
rv
=
dpm_delete_flash_prmdb
(
local
,
ap
))
!=
DRV_NO_ERROR
)
{
if
((
rv
=
dpm_delete_flash_prmdb
(
local
,
ap
))
!=
DRV_NO_ERROR
)
{
return
rv
;
return
rv
;
}
else
{
}
else
{
/* Reinitializes DP Master. */
/* Reinitializes DP Master. */
rv
=
dpm_init_master
(
local
,
op
,
ap
);
rv
=
dpm_init_master
(
local
,
op
,
ap
);
}
}
...
@@ -1231,13 +1314,14 @@ static pwr_tStatus IoAgentInit(io_tCtx ctx, io_sAgent* ap)
...
@@ -1231,13 +1314,14 @@ static pwr_tStatus IoAgentInit(io_tCtx ctx, io_sAgent* ap)
pwr_sClass_Pb_DP_Slave
*
sop
;
pwr_sClass_Pb_DP_Slave
*
sop
;
char
name
[
196
];
char
name
[
196
];
struct
timespec
rqtp
=
{
0
,
20000000
};
/* 20 ms */
struct
timespec
rqtp
=
{
0
,
20000000
};
/* 20 ms */
int
retry
;
int
retry
;
/* Allocates area for local data structure */
/* Allocates area for local data structure */
ap
->
Local
=
calloc
(
1
,
sizeof
(
io_sAgentLocalHilscher
));
ap
->
Local
=
calloc
(
1
,
sizeof
(
io_sAgentLocalHilscher
));
if
(
!
ap
->
Local
)
{
if
(
!
ap
->
Local
)
{
errh_Error
(
"ERROR config Profibus DP Master %s - %s"
,
ap
->
Name
,
"calloc"
);
errh_Error
(
"ERROR config Profibus DP Master %s - %s"
,
ap
->
Name
,
"calloc"
);
return
IO__ERRINIDEVICE
;
return
IO__ERRINIDEVICE
;
}
}
...
@@ -1249,7 +1333,8 @@ static pwr_tStatus IoAgentInit(io_tCtx ctx, io_sAgent* ap)
...
@@ -1249,7 +1333,8 @@ static pwr_tStatus IoAgentInit(io_tCtx ctx, io_sAgent* ap)
op
->
Status
=
PB__NOTINIT
;
op
->
Status
=
PB__NOTINIT
;
/* Initializes interface. */
/* Initializes interface. */
if
(
ctx
->
Node
->
Restarts
>
0
)
{
if
(
ctx
->
Node
->
Restarts
>
0
)
{
nanosleep
(
&
rqtp
,
NULL
);
nanosleep
(
&
rqtp
,
NULL
);
}
}
...
@@ -1263,42 +1348,49 @@ static pwr_tStatus IoAgentInit(io_tCtx ctx, io_sAgent* ap)
...
@@ -1263,42 +1348,49 @@ static pwr_tStatus IoAgentInit(io_tCtx ctx, io_sAgent* ap)
local
->
watchdog
=
0
;
local
->
watchdog
=
0
;
/* Initializes Profibus driver API. */
/* Initializes Profibus driver API. */
if
(
dpm_init
(
local
,
ap
)
!=
DRV_NO_ERROR
)
{
if
(
dpm_init
(
local
,
ap
)
!=
DRV_NO_ERROR
)
{
/* Cannot open driver */
/* Cannot open driver */
op
->
Status
=
PB__INITFAIL
;
op
->
Status
=
PB__INITFAIL
;
errh_Error
(
errh_Error
(
"ERROR config Profibus DP Master %s - %s"
,
ap
->
Name
,
"ERROR config Profibus DP Master %s - %s"
,
ap
->
Name
,
"open device"
);
"open device"
);
ctx
->
Node
->
EmergBreakTrue
=
1
;
ctx
->
Node
->
EmergBreakTrue
=
1
;
return
IO__ERRDEVICE
;
return
IO__ERRDEVICE
;
}
}
/* If this is not the Profibus I/O process, return */
/* If this is not the Profibus I/O process, return */
if
((
op
->
Process
&
io_mProcess_Profibus
)
if
((
op
->
Process
&
io_mProcess_Profibus
)
&&
&&
(
ctx
->
Process
!=
io_mProcess_Profibus
))
{
(
ctx
->
Process
!=
io_mProcess_Profibus
))
{
op
->
Status
=
PB__NOTINIT
;
op
->
Status
=
PB__NOTINIT
;
errh_Info
(
"Init template I/O agent for Profibus DP Master %s, %d"
,
ap
->
Name
,
errh_Info
(
"Init template I/O agent for Profibus DP Master %s, %d"
,
ap
->
Name
,
ctx
->
Process
);
ctx
->
Process
);
return
IO__SUCCESS
;
return
IO__SUCCESS
;
}
}
if
(
ctx
->
Node
->
Restarts
>
0
)
{
if
(
ctx
->
Node
->
Restarts
>
0
)
errh_Info
(
{
"Warm restart - Skipping config of Profibus DP Master %s"
,
ap
->
Name
);
errh_Info
(
"Warm restart - Skipping config of Profibus DP Master %s"
,
ap
->
Name
);
op
->
Status
=
PB__NORMAL
;
op
->
Status
=
PB__NORMAL
;
return
IO__SUCCESS
;
return
IO__SUCCESS
;
}
}
errh_Info
(
"Config of Profibus DP Master %s"
,
ap
->
Name
);
errh_Info
(
"Config of Profibus DP Master %s"
,
ap
->
Name
);
if
(
op
->
DisableBus
!=
1
)
{
if
(
op
->
DisableBus
!=
1
)
{
ok
=
FALSE
;
ok
=
FALSE
;
if
(
ctx
->
Node
->
Restarts
==
0
)
{
if
(
ctx
->
Node
->
Restarts
==
0
)
{
retry
=
0
;
retry
=
0
;
while
(
!
ok
)
{
while
(
!
ok
)
{
op
->
Status
=
PB__NOTINIT
;
op
->
Status
=
PB__NOTINIT
;
/* Sets DP master parameters and checks for sycon database. */
/* Sets DP master parameters and checks for sycon database. */
if
(
dpm_init_master_check_sycon_db
(
local
,
op
,
ap
)
!=
DRV_NO_ERROR
)
{
if
(
dpm_init_master_check_sycon_db
(
local
,
op
,
ap
)
!=
DRV_NO_ERROR
)
{
op
->
Status
=
PB__INITFAIL
;
op
->
Status
=
PB__INITFAIL
;
errh_Error
(
"ERROR config Profibus DP Master %s - %s"
,
ap
->
Name
,
errh_Error
(
"ERROR config Profibus DP Master %s - %s"
,
ap
->
Name
,
"dp init master"
);
"dp init master"
);
...
@@ -1309,18 +1401,20 @@ static pwr_tStatus IoAgentInit(io_tCtx ctx, io_sAgent* ap)
...
@@ -1309,18 +1401,20 @@ static pwr_tStatus IoAgentInit(io_tCtx ctx, io_sAgent* ap)
and initializes them. */
and initializes them. */
op
->
NumberSlaves
=
0
;
op
->
NumberSlaves
=
0
;
status
=
gdh_GetChild
(
ap
->
Objid
,
&
slave_objid
);
status
=
gdh_GetChild
(
ap
->
Objid
,
&
slave_objid
);
while
(
ODD
(
status
))
{
while
(
ODD
(
status
))
{
status
=
gdh_GetObjectClass
(
slave_objid
,
&
slave_class
);
status
=
gdh_GetObjectClass
(
slave_objid
,
&
slave_class
);
status
=
gdh_ObjidToPointer
(
slave_objid
,
(
pwr_tAddress
*
)
&
sop
);
status
=
gdh_ObjidToPointer
(
slave_objid
,
(
pwr_tAddress
*
)
&
sop
);
status
=
gdh_ObjidToName
(
status
=
gdh_ObjidToName
(
slave_objid
,
(
char
*
)
&
name
,
sizeof
(
name
),
slave_objid
,
(
char
*
)
&
name
,
sizeof
(
name
),
cdh_mNName
);
cdh_mNName
);
errh_Info
(
"Download Profibus DP Slave config - %s"
,
name
);
errh_Info
(
"Download Profibus DP Slave config - %s"
,
name
);
/* Calculates IO offsets and configures the slave. */
/* Calculates IO offsets and configures the slave. */
if
(
dpm_download_slave_prm
(
local
,
sop
,
ap
,
ap
->
racklist
)
if
(
dpm_download_slave_prm
(
local
,
sop
,
ap
,
ap
->
racklist
)
!=
!=
DRV_NO_ERROR
)
{
DRV_NO_ERROR
)
{
errh_Error
(
"ERROR Init Profibus DP slave %s"
,
name
);
errh_Error
(
"ERROR Init Profibus DP slave %s"
,
name
);
}
}
errh_Info
(
"Profibus DP slave %d: in offs %d, input size %d,"
errh_Info
(
"Profibus DP slave %d: in offs %d, input size %d,"
...
@@ -1333,7 +1427,8 @@ static pwr_tStatus IoAgentInit(io_tCtx ctx, io_sAgent* ap)
...
@@ -1333,7 +1427,8 @@ static pwr_tStatus IoAgentInit(io_tCtx ctx, io_sAgent* ap)
/* Downloads the DP bus parameters -- this initiates the
/* Downloads the DP bus parameters -- this initiates the
cyclic data exchange. */
cyclic data exchange. */
if
(
dpm_download_master_prm
(
local
,
op
,
ap
)
!=
DRV_NO_ERROR
)
{
if
(
dpm_download_master_prm
(
local
,
op
,
ap
)
!=
DRV_NO_ERROR
)
{
op
->
Status
=
PB__INITFAIL
;
op
->
Status
=
PB__INITFAIL
;
errh_Error
(
"ERROR config Profibus DP Master %s - %s"
,
ap
->
Name
,
errh_Error
(
"ERROR config Profibus DP Master %s - %s"
,
ap
->
Name
,
"dp download bus"
);
"dp download bus"
);
...
@@ -1344,7 +1439,8 @@ static pwr_tStatus IoAgentInit(io_tCtx ctx, io_sAgent* ap)
...
@@ -1344,7 +1439,8 @@ static pwr_tStatus IoAgentInit(io_tCtx ctx, io_sAgent* ap)
}
/* End - While !ok */
}
/* End - While !ok */
}
/* End - Initialization only if not restart */
}
/* End - Initialization only if not restart */
}
else
}
else
op
->
Status
=
PB__DISABLED
;
op
->
Status
=
PB__DISABLED
;
return
IO__SUCCESS
;
return
IO__SUCCESS
;
...
@@ -1376,12 +1472,14 @@ static pwr_tStatus IoAgentRead(io_tCtx ctx, io_sAgent* ap)
...
@@ -1376,12 +1472,14 @@ static pwr_tStatus IoAgentRead(io_tCtx ctx, io_sAgent* ap)
however, keeping this code here enables us to confine all the Profibus
however, keeping this code here enables us to confine all the Profibus
board specific code at the agent level. */
board specific code at the agent level. */
for
(
slave_list
=
ap
->
racklist
;
slave_list
!=
NULL
;
for
(
slave_list
=
ap
->
racklist
;
slave_list
!=
NULL
;
slave_list
=
slave_list
->
next
)
{
slave_list
=
slave_list
->
next
)
{
sp
=
(
pwr_sClass_Pb_DP_Slave
*
)
slave_list
->
op
;
sp
=
(
pwr_sClass_Pb_DP_Slave
*
)
slave_list
->
op
;
mp
=
(
pwr_sClass_Pb_Hilscher
*
)
ap
->
op
;
mp
=
(
pwr_sClass_Pb_Hilscher
*
)
ap
->
op
;
if
(
sp
->
Status
==
PB__NORMAL
&&
mp
->
Status
==
PB__NORMAL
if
(
sp
->
Status
==
PB__NORMAL
&&
mp
->
Status
==
PB__NORMAL
&&
&&
sp
->
DisableSlave
!=
1
&&
mp
->
DisableBus
!=
1
)
{
sp
->
DisableSlave
!=
1
&&
mp
->
DisableBus
!=
1
)
{
/* Triggers the board's watchdog. */
/* Triggers the board's watchdog. */
DevTriggerWatchDog
(
local
->
dev_number
,
WATCHDOG_START
,
&
local
->
watchdog
);
DevTriggerWatchDog
(
local
->
dev_number
,
WATCHDOG_START
,
&
local
->
watchdog
);
/* Reads process image from the slave. */
/* Reads process image from the slave. */
...
@@ -1399,8 +1497,8 @@ static pwr_tStatus IoAgentRead(io_tCtx ctx, io_sAgent* ap)
...
@@ -1399,8 +1497,8 @@ static pwr_tStatus IoAgentRead(io_tCtx ctx, io_sAgent* ap)
Make a poll to see if there are diagnostics, the answer also tells us
Make a poll to see if there are diagnostics, the answer also tells us
if there are any hardware faults. */
if there are any hardware faults. */
if
((
op
->
Process
&
io_mProcess_Profibus
)
if
((
op
->
Process
&
io_mProcess_Profibus
)
&&
&&
(
ctx
->
Process
!=
io_mProcess_Profibus
))
(
ctx
->
Process
!=
io_mProcess_Profibus
))
return
IO__SUCCESS
;
return
IO__SUCCESS
;
if
(
op
->
DisableBus
==
1
)
if
(
op
->
DisableBus
==
1
)
...
@@ -1409,27 +1507,32 @@ static pwr_tStatus IoAgentRead(io_tCtx ctx, io_sAgent* ap)
...
@@ -1409,27 +1507,32 @@ static pwr_tStatus IoAgentRead(io_tCtx ctx, io_sAgent* ap)
/* Reads the protocol states and checks for errors. */
/* Reads the protocol states and checks for errors. */
DevGetTaskState
(
local
->
dev_number
,
2
,
64
,
&
diag
);
DevGetTaskState
(
local
->
dev_number
,
2
,
64
,
&
diag
);
/* Checks if master is in state OPERATE. */
/* Checks if master is in state OPERATE. */
switch
(
diag
.
bDPM_state
)
{
switch
(
diag
.
bDPM_state
)
{
case
OPERATE
:
case
OPERATE
:
if
(
op
->
Status
!=
PB__NORMAL
)
{
if
(
op
->
Status
!=
PB__NORMAL
)
{
op
->
Status
=
PB__NORMAL
;
op
->
Status
=
PB__NORMAL
;
errh_Info
(
"Profibus DP Master %s - Mode changed to OPERATE"
,
ap
->
Name
);
errh_Info
(
"Profibus DP Master %s - Mode changed to OPERATE"
,
ap
->
Name
);
}
}
break
;
break
;
case
CLEAR
:
case
CLEAR
:
if
(
op
->
Status
!=
PB__CLEARED
)
{
if
(
op
->
Status
!=
PB__CLEARED
)
{
op
->
Status
=
PB__CLEARED
;
op
->
Status
=
PB__CLEARED
;
errh_Info
(
"Profibus DP Master %s - Mode changed to CLEAR"
,
ap
->
Name
);
errh_Info
(
"Profibus DP Master %s - Mode changed to CLEAR"
,
ap
->
Name
);
}
}
break
;
break
;
case
STOP
:
case
STOP
:
if
(
op
->
Status
!=
PB__STOPPED
)
{
if
(
op
->
Status
!=
PB__STOPPED
)
{
op
->
Status
=
PB__STOPPED
;
op
->
Status
=
PB__STOPPED
;
errh_Info
(
"Profibus DP Master %s - Mode changed to STOP"
,
ap
->
Name
);
errh_Info
(
"Profibus DP Master %s - Mode changed to STOP"
,
ap
->
Name
);
}
}
break
;
break
;
case
OFFLINE
:
case
OFFLINE
:
if
(
op
->
Status
!=
PB__NOTINIT
)
{
if
(
op
->
Status
!=
PB__NOTINIT
)
{
errh_Info
(
"Profibus DP Master %s - Mode changed to OFFLINE"
,
ap
->
Name
);
errh_Info
(
"Profibus DP Master %s - Mode changed to OFFLINE"
,
ap
->
Name
);
op
->
Status
=
PB__NOTINIT
;
op
->
Status
=
PB__NOTINIT
;
}
}
...
@@ -1443,10 +1546,12 @@ static pwr_tStatus IoAgentRead(io_tCtx ctx, io_sAgent* ap)
...
@@ -1443,10 +1546,12 @@ static pwr_tStatus IoAgentRead(io_tCtx ctx, io_sAgent* ap)
/* Checks if there are any new diagnostics data that we should read from
/* Checks if there are any new diagnostics data that we should read from
any of our slaves. */
any of our slaves. */
for
(
i
=
0
;
i
<=
127
;
++
i
)
{
for
(
i
=
0
;
i
<=
127
;
++
i
)
{
/* The abSl_diag data structure is described on page 22 in
/* The abSl_diag data structure is described on page 22 in
dpm_pie.pdf. */
dpm_pie.pdf. */
if
(
diag
.
abSl_diag
[
i
>>
3
]
&
(
1
<<
(
i
&
7
)))
{
if
(
diag
.
abSl_diag
[
i
>>
3
]
&
(
1
<<
(
i
&
7
)))
{
/* Request diagnostics from slaves with unread diagnostic data. */
/* Request diagnostics from slaves with unread diagnostic data. */
dpm_req_slave_diag
(
local
,
i
,
ap
);
dpm_req_slave_diag
(
local
,
i
,
ap
);
}
}
...
@@ -1457,12 +1562,12 @@ static pwr_tStatus IoAgentRead(io_tCtx ctx, io_sAgent* ap)
...
@@ -1457,12 +1562,12 @@ static pwr_tStatus IoAgentRead(io_tCtx ctx, io_sAgent* ap)
before its watchdog times out the diagnostics would not be updated. The
before its watchdog times out the diagnostics would not be updated. The
following code covers that case, it is a bit ugly, but works. */
following code covers that case, it is a bit ugly, but works. */
for
(
slave_list
=
ap
->
racklist
;
slave_list
!=
NULL
;
for
(
slave_list
=
ap
->
racklist
;
slave_list
!=
NULL
;
slave_list
=
slave_list
->
next
)
{
slave_list
=
slave_list
->
next
)
{
sp
=
(
pwr_sClass_Pb_DP_Slave
*
)
slave_list
->
op
;
sp
=
(
pwr_sClass_Pb_DP_Slave
*
)
slave_list
->
op
;
/* The abSl_state has the same layout as the abSl_diag bitmap. */
/* The abSl_state has the same layout as the abSl_diag bitmap. */
if
(
sp
->
StationStatus1
&
pwr_mPbStationStatus1Mask_NonExistent
if
(
sp
->
StationStatus1
&
pwr_mPbStationStatus1Mask_NonExistent
&&
&&
diag
.
abSl_state
[
sp
->
SlaveAddress
>>
3
]
diag
.
abSl_state
[
sp
->
SlaveAddress
>>
3
]
&
(
1
<<
(
sp
->
SlaveAddress
&
7
)))
&
(
1
<<
(
sp
->
SlaveAddress
&
7
)))
dpm_req_slave_diag
(
local
,
sp
->
SlaveAddress
,
ap
);
dpm_req_slave_diag
(
local
,
sp
->
SlaveAddress
,
ap
);
}
}
/* Collects requested slave diagnostics. */
/* Collects requested slave diagnostics. */
...
@@ -1489,20 +1594,23 @@ static pwr_tStatus IoAgentWrite(io_tCtx ctx, io_sAgent* ap)
...
@@ -1489,20 +1594,23 @@ static pwr_tStatus IoAgentWrite(io_tCtx ctx, io_sAgent* ap)
however, keeping this code here enables us to confine all the Profibus
however, keeping this code here enables us to confine all the Profibus
board specific code at the agent level. */
board specific code at the agent level. */
for
(
slave_list
=
ap
->
racklist
;
slave_list
!=
NULL
;
for
(
slave_list
=
ap
->
racklist
;
slave_list
!=
NULL
;
slave_list
=
slave_list
->
next
)
{
slave_list
=
slave_list
->
next
)
{
sp
=
(
pwr_sClass_Pb_DP_Slave
*
)
slave_list
->
op
;
sp
=
(
pwr_sClass_Pb_DP_Slave
*
)
slave_list
->
op
;
mp
=
(
pwr_sClass_Pb_Hilscher
*
)
ap
->
op
;
mp
=
(
pwr_sClass_Pb_Hilscher
*
)
ap
->
op
;
if
((
sp
->
Status
==
PB__NORMAL
||
sp
->
Status
==
PB__NOCONN
)
if
((
sp
->
Status
==
PB__NORMAL
||
sp
->
Status
==
PB__NOCONN
)
&&
&&
mp
->
Status
==
PB__NORMAL
&&
(
sp
->
DisableSlave
!=
1
)
mp
->
Status
==
PB__NORMAL
&&
(
sp
->
DisableSlave
!=
1
)
&&
&&
(
mp
->
DisableBus
!=
1
))
{
(
mp
->
DisableBus
!=
1
))
if
(
sp
->
BytesOfOutput
>
0
)
{
{
if
(
sp
->
BytesOfOutput
>
0
)
{
/* Trigger the board's watchdog. */
/* Trigger the board's watchdog. */
DevTriggerWatchDog
(
local
->
dev_number
,
WATCHDOG_START
,
&
local
->
watchdog
);
DevTriggerWatchDog
(
local
->
dev_number
,
WATCHDOG_START
,
&
local
->
watchdog
);
/* Writes process image to the slave. */
/* Writes process image to the slave. */
if
(
DevExchangeIO
(
local
->
dev_number
,
sp
->
OffsetOutputs
,
if
(
DevExchangeIO
(
local
->
dev_number
,
sp
->
OffsetOutputs
,
sp
->
BytesOfOutput
,
sp
->
Outputs
,
0
,
0
,
NULL
,
100
)
sp
->
BytesOfOutput
,
sp
->
Outputs
,
0
,
0
,
NULL
,
!=
DRV_NO_ERROR
)
100
)
!=
DRV_NO_ERROR
)
sp
->
ErrorCount
++
;
sp
->
ErrorCount
++
;
}
}
}
}
...
@@ -1530,6 +1638,7 @@ static pwr_tStatus IoAgentClose(io_tCtx ctx, io_sAgent* ap)
...
@@ -1530,6 +1638,7 @@ static pwr_tStatus IoAgentClose(io_tCtx ctx, io_sAgent* ap)
Every method to be exported to the workbench should be registred here.
Every method to be exported to the workbench should be registred here.
\*----------------------------------------------------------------------------*/
\*----------------------------------------------------------------------------*/
pwr_dExport
pwr_BindIoMethods
(
Pb_Hilscher
)
=
{
pwr_BindIoMethod
(
IoAgentInit
),
pwr_dExport
pwr_BindIoMethods
(
Pb_Hilscher
)
=
{
pwr_BindIoMethod
(
IoAgentRead
),
pwr_BindIoMethod
(
IoAgentWrite
),
pwr_BindIoMethod
(
IoAgentInit
),
pwr_BindIoMethod
(
IoAgentRead
),
pwr_BindIoMethod
(
IoAgentClose
),
pwr_NullMethod
};
pwr_BindIoMethod
(
IoAgentWrite
),
pwr_BindIoMethod
(
IoAgentClose
),
pwr_NullMethod
};
profibus/lib/rt/src/rt_io_m_pb_ii.c
View file @
df0831a3
...
@@ -51,8 +51,8 @@
...
@@ -51,8 +51,8 @@
/*----------------------------------------------------------------------------*\
/*----------------------------------------------------------------------------*\
Init method for the Pb module Ii
Init method for the Pb module Ii
\*----------------------------------------------------------------------------*/
\*----------------------------------------------------------------------------*/
static
pwr_tStatus
IoCardInit
(
static
pwr_tStatus
IoCardInit
(
io_tCtx
ctx
,
io_sAgent
*
ap
,
io_sRack
*
rp
,
io_tCtx
ctx
,
io_sAgent
*
ap
,
io_sRack
*
rp
,
io_sCard
*
cp
)
io_sCard
*
cp
)
{
{
io_sCardLocal
*
local
;
io_sCardLocal
*
local
;
pwr_sClass_Pb_Ii
*
op
;
pwr_sClass_Pb_Ii
*
op
;
...
@@ -60,7 +60,8 @@ static pwr_tStatus IoCardInit(
...
@@ -60,7 +60,8 @@ static pwr_tStatus IoCardInit(
op
=
(
pwr_sClass_Pb_Ii
*
)
cp
->
op
;
op
=
(
pwr_sClass_Pb_Ii
*
)
cp
->
op
;
local
=
(
io_sCardLocal
*
)
cp
->
Local
;
local
=
(
io_sCardLocal
*
)
cp
->
Local
;
if
(
rp
->
Class
!=
pwr_cClass_Pb_DP_Slave
)
{
if
(
rp
->
Class
!=
pwr_cClass_Pb_DP_Slave
)
{
errh_Info
(
"Illegal object type %s"
,
cp
->
Name
);
errh_Info
(
"Illegal object type %s"
,
cp
->
Name
);
return
IO__SUCCESS
;
return
IO__SUCCESS
;
}
}
...
@@ -74,8 +75,8 @@ static pwr_tStatus IoCardInit(
...
@@ -74,8 +75,8 @@ static pwr_tStatus IoCardInit(
/*----------------------------------------------------------------------------*\
/*----------------------------------------------------------------------------*\
Read method for the Pb Ii card
Read method for the Pb Ii card
\*----------------------------------------------------------------------------*/
\*----------------------------------------------------------------------------*/
static
pwr_tStatus
IoCardRead
(
static
pwr_tStatus
IoCardRead
(
io_tCtx
ctx
,
io_sAgent
*
ap
,
io_sRack
*
rp
,
io_tCtx
ctx
,
io_sAgent
*
ap
,
io_sRack
*
rp
,
io_sCard
*
cp
)
io_sCard
*
cp
)
{
{
io_sCardLocal
*
local
;
io_sCardLocal
*
local
;
pwr_sClass_Pb_Ii
*
op
;
pwr_sClass_Pb_Ii
*
op
;
...
@@ -95,8 +96,10 @@ static pwr_tStatus IoCardRead(
...
@@ -95,8 +96,10 @@ static pwr_tStatus IoCardRead(
op
=
(
pwr_sClass_Pb_Ii
*
)
cp
->
op
;
op
=
(
pwr_sClass_Pb_Ii
*
)
cp
->
op
;
slave
=
(
pwr_sClass_Pb_DP_Slave
*
)
rp
->
op
;
slave
=
(
pwr_sClass_Pb_DP_Slave
*
)
rp
->
op
;
if
(
op
->
Status
>=
PB_MODULE_STATE_OPERATE
&&
slave
->
DisableSlave
!=
1
)
{
if
(
op
->
Status
>=
PB_MODULE_STATE_OPERATE
&&
slave
->
DisableSlave
!=
1
)
for
(
i
=
0
;
i
<
cp
->
ChanListSize
;
i
++
)
{
{
for
(
i
=
0
;
i
<
cp
->
ChanListSize
;
i
++
)
{
chanp
=
&
cp
->
chanlist
[
i
];
chanp
=
&
cp
->
chanlist
[
i
];
if
(
!
chanp
->
cop
||
!
chanp
->
sop
)
if
(
!
chanp
->
cop
||
!
chanp
->
sop
)
continue
;
continue
;
...
@@ -104,54 +107,76 @@ static pwr_tStatus IoCardRead(
...
@@ -104,54 +107,76 @@ static pwr_tStatus IoCardRead(
cop
=
(
pwr_sClass_ChanIi
*
)
chanp
->
cop
;
cop
=
(
pwr_sClass_ChanIi
*
)
chanp
->
cop
;
sop
=
(
pwr_sClass_Ii
*
)
chanp
->
sop
;
sop
=
(
pwr_sClass_Ii
*
)
chanp
->
sop
;
if
(
cop
->
ConversionOn
)
{
if
(
cop
->
ConversionOn
)
if
(
op
->
BytesPerChannel
==
4
)
{
{
if
(
op
->
NumberRepresentation
==
PB_NUMREP_UNSIGNEDINT
)
{
if
(
op
->
BytesPerChannel
==
4
)
{
if
(
op
->
NumberRepresentation
==
PB_NUMREP_UNSIGNEDINT
)
{
memcpy
(
&
udata32
,
local
->
input_area
+
op
->
OffsetInputs
+
4
*
i
,
4
);
memcpy
(
&
udata32
,
local
->
input_area
+
op
->
OffsetInputs
+
4
*
i
,
4
);
if
(
slave
->
ByteOrdering
==
pwr_eByteOrderingEnum_BigEndian
)
if
(
slave
->
ByteOrdering
==
pwr_eByteOrderingEnum_BigEndian
)
udata32
=
swap32
(
udata32
);
udata32
=
swap32
(
udata32
);
*
(
pwr_tInt32
*
)
chanp
->
vbp
=
(
pwr_tInt32
)
udata32
;
*
(
pwr_tInt32
*
)
chanp
->
vbp
=
(
pwr_tInt32
)
udata32
;
}
else
if
(
op
->
NumberRepresentation
==
PB_NUMREP_SIGNEDINT
)
{
}
else
if
(
op
->
NumberRepresentation
==
PB_NUMREP_SIGNEDINT
)
{
memcpy
(
&
data32
,
local
->
input_area
+
op
->
OffsetInputs
+
4
*
i
,
4
);
memcpy
(
&
data32
,
local
->
input_area
+
op
->
OffsetInputs
+
4
*
i
,
4
);
if
(
slave
->
ByteOrdering
==
pwr_eByteOrderingEnum_BigEndian
)
if
(
slave
->
ByteOrdering
==
pwr_eByteOrderingEnum_BigEndian
)
data32
=
swap32
(
data32
);
data32
=
swap32
(
data32
);
*
(
pwr_tInt32
*
)
chanp
->
vbp
=
data32
;
*
(
pwr_tInt32
*
)
chanp
->
vbp
=
data32
;
}
}
}
else
if
(
op
->
BytesPerChannel
==
3
)
{
}
if
(
op
->
NumberRepresentation
==
PB_NUMREP_UNSIGNEDINT
)
{
else
if
(
op
->
BytesPerChannel
==
3
)
{
if
(
op
->
NumberRepresentation
==
PB_NUMREP_UNSIGNEDINT
)
{
udata32
=
0
;
udata32
=
0
;
memcpy
(
&
udata32
,
local
->
input_area
+
op
->
OffsetInputs
+
3
*
i
,
3
);
memcpy
(
&
udata32
,
local
->
input_area
+
op
->
OffsetInputs
+
3
*
i
,
3
);
if
(
slave
->
ByteOrdering
==
pwr_eByteOrderingEnum_BigEndian
)
{
if
(
slave
->
ByteOrdering
==
pwr_eByteOrderingEnum_BigEndian
)
{
udata32
=
swap32
(
udata32
);
udata32
=
swap32
(
udata32
);
udata32
=
udata32
>>
8
;
udata32
=
udata32
>>
8
;
}
}
*
(
pwr_tInt32
*
)
chanp
->
vbp
=
(
pwr_tInt32
)
udata32
;
*
(
pwr_tInt32
*
)
chanp
->
vbp
=
(
pwr_tInt32
)
udata32
;
}
else
if
(
op
->
NumberRepresentation
==
PB_NUMREP_SIGNEDINT
)
{
}
else
if
(
op
->
NumberRepresentation
==
PB_NUMREP_SIGNEDINT
)
{
data32
=
0
;
data32
=
0
;
memcpy
(
&
data32
,
local
->
input_area
+
op
->
OffsetInputs
+
3
*
i
,
3
);
memcpy
(
&
data32
,
local
->
input_area
+
op
->
OffsetInputs
+
3
*
i
,
3
);
if
(
slave
->
ByteOrdering
==
pwr_eByteOrderingEnum_BigEndian
)
{
if
(
slave
->
ByteOrdering
==
pwr_eByteOrderingEnum_BigEndian
)
{
data32
=
swap32
(
data32
);
data32
=
swap32
(
data32
);
data32
=
data32
>>
8
;
data32
=
data32
>>
8
;
}
}
*
(
pwr_tInt32
*
)
chanp
->
vbp
=
data32
;
*
(
pwr_tInt32
*
)
chanp
->
vbp
=
data32
;
}
}
}
else
if
(
op
->
BytesPerChannel
==
2
)
{
}
if
(
op
->
NumberRepresentation
==
PB_NUMREP_UNSIGNEDINT
)
{
else
if
(
op
->
BytesPerChannel
==
2
)
{
if
(
op
->
NumberRepresentation
==
PB_NUMREP_UNSIGNEDINT
)
{
memcpy
(
&
udata16
,
local
->
input_area
+
op
->
OffsetInputs
+
2
*
i
,
2
);
memcpy
(
&
udata16
,
local
->
input_area
+
op
->
OffsetInputs
+
2
*
i
,
2
);
if
(
slave
->
ByteOrdering
==
pwr_eByteOrderingEnum_BigEndian
)
if
(
slave
->
ByteOrdering
==
pwr_eByteOrderingEnum_BigEndian
)
udata16
=
swap16
(
udata16
);
udata16
=
swap16
(
udata16
);
*
(
pwr_tInt32
*
)
chanp
->
vbp
=
(
pwr_tInt32
)
udata16
;
*
(
pwr_tInt32
*
)
chanp
->
vbp
=
(
pwr_tInt32
)
udata16
;
}
else
if
(
op
->
NumberRepresentation
==
PB_NUMREP_SIGNEDINT
)
{
}
else
if
(
op
->
NumberRepresentation
==
PB_NUMREP_SIGNEDINT
)
{
memcpy
(
&
data16
,
local
->
input_area
+
op
->
OffsetInputs
+
2
*
i
,
2
);
memcpy
(
&
data16
,
local
->
input_area
+
op
->
OffsetInputs
+
2
*
i
,
2
);
if
(
slave
->
ByteOrdering
==
pwr_eByteOrderingEnum_BigEndian
)
if
(
slave
->
ByteOrdering
==
pwr_eByteOrderingEnum_BigEndian
)
data16
=
swap16
(
data16
);
data16
=
swap16
(
data16
);
*
(
pwr_tInt32
*
)
chanp
->
vbp
=
(
pwr_tInt32
)
data16
;
*
(
pwr_tInt32
*
)
chanp
->
vbp
=
(
pwr_tInt32
)
data16
;
}
}
}
else
if
(
op
->
BytesPerChannel
==
1
)
{
}
if
(
op
->
NumberRepresentation
==
PB_NUMREP_UNSIGNEDINT
)
{
else
if
(
op
->
BytesPerChannel
==
1
)
{
if
(
op
->
NumberRepresentation
==
PB_NUMREP_UNSIGNEDINT
)
{
memcpy
(
&
udata8
,
local
->
input_area
+
op
->
OffsetInputs
+
i
,
1
);
memcpy
(
&
udata8
,
local
->
input_area
+
op
->
OffsetInputs
+
i
,
1
);
*
(
pwr_tInt32
*
)
chanp
->
vbp
=
(
pwr_tInt32
)
udata8
;
*
(
pwr_tInt32
*
)
chanp
->
vbp
=
(
pwr_tInt32
)
udata8
;
}
else
if
(
op
->
NumberRepresentation
==
PB_NUMREP_SIGNEDINT
)
{
}
else
if
(
op
->
NumberRepresentation
==
PB_NUMREP_SIGNEDINT
)
{
memcpy
(
&
data8
,
local
->
input_area
+
op
->
OffsetInputs
+
i
,
1
);
memcpy
(
&
data8
,
local
->
input_area
+
op
->
OffsetInputs
+
i
,
1
);
*
(
pwr_tInt32
*
)
chanp
->
vbp
=
(
pwr_tInt32
)
data8
;
*
(
pwr_tInt32
*
)
chanp
->
vbp
=
(
pwr_tInt32
)
data8
;
}
}
...
@@ -166,8 +191,8 @@ static pwr_tStatus IoCardRead(
...
@@ -166,8 +191,8 @@ static pwr_tStatus IoCardRead(
/*----------------------------------------------------------------------------*\
/*----------------------------------------------------------------------------*\
Close method for the Pb Ii card
Close method for the Pb Ii card
\*----------------------------------------------------------------------------*/
\*----------------------------------------------------------------------------*/
static
pwr_tStatus
IoCardClose
(
static
pwr_tStatus
IoCardClose
(
io_tCtx
ctx
,
io_sAgent
*
ap
,
io_sRack
*
rp
,
io_tCtx
ctx
,
io_sAgent
*
ap
,
io_sRack
*
rp
,
io_sCard
*
cp
)
io_sCard
*
cp
)
{
{
io_sCardLocal
*
local
;
io_sCardLocal
*
local
;
local
=
cp
->
Local
;
local
=
cp
->
Local
;
...
@@ -181,5 +206,6 @@ static pwr_tStatus IoCardClose(
...
@@ -181,5 +206,6 @@ static pwr_tStatus IoCardClose(
Every method to be exported to the workbench should be registred here.
Every method to be exported to the workbench should be registred here.
\*----------------------------------------------------------------------------*/
\*----------------------------------------------------------------------------*/
pwr_dExport
pwr_BindIoMethods
(
Pb_Ii
)
=
{
pwr_BindIoMethod
(
IoCardInit
),
pwr_dExport
pwr_BindIoMethods
(
Pb_Ii
)
=
{
pwr_BindIoMethod
(
IoCardRead
),
pwr_BindIoMethod
(
IoCardClose
),
pwr_NullMethod
};
pwr_BindIoMethod
(
IoCardInit
),
pwr_BindIoMethod
(
IoCardRead
),
pwr_BindIoMethod
(
IoCardClose
),
pwr_NullMethod
};
profibus/lib/rt/src/rt_io_m_pb_io.c
View file @
df0831a3
...
@@ -49,8 +49,8 @@
...
@@ -49,8 +49,8 @@
/*----------------------------------------------------------------------------*\
/*----------------------------------------------------------------------------*\
Init method for the Pb module Io
Init method for the Pb module Io
\*----------------------------------------------------------------------------*/
\*----------------------------------------------------------------------------*/
static
pwr_tStatus
IoCardInit
(
static
pwr_tStatus
IoCardInit
(
io_tCtx
ctx
,
io_sAgent
*
ap
,
io_sRack
*
rp
,
io_tCtx
ctx
,
io_sAgent
*
ap
,
io_sRack
*
rp
,
io_sCard
*
cp
)
io_sCard
*
cp
)
{
{
io_sCardLocal
*
local
;
io_sCardLocal
*
local
;
pwr_sClass_Pb_Io
*
op
;
pwr_sClass_Pb_Io
*
op
;
...
@@ -58,12 +58,14 @@ static pwr_tStatus IoCardInit(
...
@@ -58,12 +58,14 @@ static pwr_tStatus IoCardInit(
op
=
(
pwr_sClass_Pb_Io
*
)
cp
->
op
;
op
=
(
pwr_sClass_Pb_Io
*
)
cp
->
op
;
local
=
(
io_sCardLocal
*
)
cp
->
Local
;
local
=
(
io_sCardLocal
*
)
cp
->
Local
;
if
(
rp
->
Class
!=
pwr_cClass_Pb_DP_Slave
)
{
if
(
rp
->
Class
!=
pwr_cClass_Pb_DP_Slave
)
{
errh_Info
(
"Illegal object type %s"
,
cp
->
Name
);
errh_Info
(
"Illegal object type %s"
,
cp
->
Name
);
return
IO__SUCCESS
;
return
IO__SUCCESS
;
}
}
if
(
op
->
Status
<
PB_MODULE_STATE_OPERATE
)
{
if
(
op
->
Status
<
PB_MODULE_STATE_OPERATE
)
{
errh_Info
(
"Error initializing Pb module Io %s"
,
cp
->
Name
);
errh_Info
(
"Error initializing Pb module Io %s"
,
cp
->
Name
);
}
}
...
@@ -73,8 +75,8 @@ static pwr_tStatus IoCardInit(
...
@@ -73,8 +75,8 @@ static pwr_tStatus IoCardInit(
/*----------------------------------------------------------------------------*\
/*----------------------------------------------------------------------------*\
Write method for the Pb module Io
Write method for the Pb module Io
\*----------------------------------------------------------------------------*/
\*----------------------------------------------------------------------------*/
static
pwr_tStatus
IoCardWrite
(
static
pwr_tStatus
IoCardWrite
(
io_tCtx
ctx
,
io_sAgent
*
ap
,
io_sRack
*
rp
,
io_tCtx
ctx
,
io_sAgent
*
ap
,
io_sRack
*
rp
,
io_sCard
*
cp
)
io_sCard
*
cp
)
{
{
io_sCardLocal
*
local
;
io_sCardLocal
*
local
;
pwr_sClass_Pb_Io
*
op
;
pwr_sClass_Pb_Io
*
op
;
...
@@ -91,8 +93,10 @@ static pwr_tStatus IoCardWrite(
...
@@ -91,8 +93,10 @@ static pwr_tStatus IoCardWrite(
op
=
(
pwr_sClass_Pb_Io
*
)
cp
->
op
;
op
=
(
pwr_sClass_Pb_Io
*
)
cp
->
op
;
slave
=
(
pwr_sClass_Pb_DP_Slave
*
)
rp
->
op
;
slave
=
(
pwr_sClass_Pb_DP_Slave
*
)
rp
->
op
;
if
(
op
->
Status
>=
PB_MODULE_STATE_OPERATE
&&
slave
->
DisableSlave
!=
1
)
{
if
(
op
->
Status
>=
PB_MODULE_STATE_OPERATE
&&
slave
->
DisableSlave
!=
1
)
for
(
i
=
0
;
i
<
cp
->
ChanListSize
;
i
++
)
{
{
for
(
i
=
0
;
i
<
cp
->
ChanListSize
;
i
++
)
{
chanp
=
&
cp
->
chanlist
[
i
];
chanp
=
&
cp
->
chanlist
[
i
];
if
(
!
chanp
->
cop
||
!
chanp
->
sop
)
if
(
!
chanp
->
cop
||
!
chanp
->
sop
)
continue
;
continue
;
...
@@ -105,20 +109,27 @@ static pwr_tStatus IoCardWrite(
...
@@ -105,20 +109,27 @@ static pwr_tStatus IoCardWrite(
data32
=
*
(
pwr_tInt32
*
)
chanp
->
vbp
;
data32
=
*
(
pwr_tInt32
*
)
chanp
->
vbp
;
if
(
op
->
BytesPerChannel
==
4
)
{
if
(
op
->
BytesPerChannel
==
4
)
{
if
(
slave
->
ByteOrdering
==
pwr_eByteOrderingEnum_BigEndian
)
if
(
slave
->
ByteOrdering
==
pwr_eByteOrderingEnum_BigEndian
)
data32
=
swap32
(
data32
);
data32
=
swap32
(
data32
);
memcpy
(
local
->
output_area
+
op
->
OffsetOutputs
+
4
*
i
,
&
data32
,
4
);
memcpy
(
local
->
output_area
+
op
->
OffsetOutputs
+
4
*
i
,
&
data32
,
4
);
}
else
if
(
op
->
BytesPerChannel
==
3
)
{
}
else
if
(
op
->
BytesPerChannel
==
3
)
{
if
(
slave
->
ByteOrdering
==
pwr_eByteOrderingEnum_BigEndian
)
if
(
slave
->
ByteOrdering
==
pwr_eByteOrderingEnum_BigEndian
)
data32
=
swap32
(
data32
);
data32
=
swap32
(
data32
);
memcpy
(
local
->
output_area
+
op
->
OffsetOutputs
+
3
*
i
,
&
data32
,
3
);
memcpy
(
local
->
output_area
+
op
->
OffsetOutputs
+
3
*
i
,
&
data32
,
3
);
}
else
if
(
op
->
BytesPerChannel
==
2
)
{
}
else
if
(
op
->
BytesPerChannel
==
2
)
{
data16
=
(
pwr_tInt16
)
data32
;
data16
=
(
pwr_tInt16
)
data32
;
if
(
slave
->
ByteOrdering
==
pwr_eByteOrderingEnum_BigEndian
)
if
(
slave
->
ByteOrdering
==
pwr_eByteOrderingEnum_BigEndian
)
data16
=
swap16
(
data16
);
data16
=
swap16
(
data16
);
memcpy
(
local
->
output_area
+
op
->
OffsetOutputs
+
2
*
i
,
&
data16
,
2
);
memcpy
(
local
->
output_area
+
op
->
OffsetOutputs
+
2
*
i
,
&
data16
,
2
);
}
else
if
(
op
->
BytesPerChannel
==
1
)
{
}
else
if
(
op
->
BytesPerChannel
==
1
)
{
data8
=
(
pwr_tInt8
)
data32
;
data8
=
(
pwr_tInt8
)
data32
;
memcpy
(
local
->
output_area
+
op
->
OffsetOutputs
+
i
,
&
data8
,
1
);
memcpy
(
local
->
output_area
+
op
->
OffsetOutputs
+
i
,
&
data8
,
1
);
}
}
...
@@ -130,8 +141,8 @@ static pwr_tStatus IoCardWrite(
...
@@ -130,8 +141,8 @@ static pwr_tStatus IoCardWrite(
/*----------------------------------------------------------------------------*\
/*----------------------------------------------------------------------------*\
\*----------------------------------------------------------------------------*/
\*----------------------------------------------------------------------------*/
static
pwr_tStatus
IoCardClose
(
static
pwr_tStatus
IoCardClose
(
io_tCtx
ctx
,
io_sAgent
*
ap
,
io_sRack
*
rp
,
io_tCtx
ctx
,
io_sAgent
*
ap
,
io_sRack
*
rp
,
io_sCard
*
cp
)
io_sCard
*
cp
)
{
{
io_sCardLocal
*
local
;
io_sCardLocal
*
local
;
local
=
cp
->
Local
;
local
=
cp
->
Local
;
...
@@ -145,6 +156,6 @@ static pwr_tStatus IoCardClose(
...
@@ -145,6 +156,6 @@ static pwr_tStatus IoCardClose(
Every method to be exported to the workbench should be registred here.
Every method to be exported to the workbench should be registred here.
\*----------------------------------------------------------------------------*/
\*----------------------------------------------------------------------------*/
pwr_dExport
pwr_BindIoMethods
(
Pb_Io
)
pwr_dExport
pwr_BindIoMethods
(
Pb_Io
)
=
{
=
{
pwr_BindIoMethod
(
IoCardInit
),
pwr_BindIoMethod
(
IoCardWrite
),
pwr_BindIoMethod
(
IoCardInit
),
pwr_BindIoMethod
(
IoCardWrite
),
pwr_BindIoMethod
(
IoCardClose
),
pwr_NullMethod
};
pwr_BindIoMethod
(
IoCardClose
),
pwr_NullMethod
};
profibus/lib/rt/src/rt_io_m_pb_module.c
View file @
df0831a3
...
@@ -52,8 +52,8 @@
...
@@ -52,8 +52,8 @@
/*----------------------------------------------------------------------------*\
/*----------------------------------------------------------------------------*\
Init method for the Pb module
Init method for the Pb module
\*----------------------------------------------------------------------------*/
\*----------------------------------------------------------------------------*/
static
pwr_tStatus
IoCardInit
(
static
pwr_tStatus
IoCardInit
(
io_tCtx
ctx
,
io_sAgent
*
ap
,
io_sRack
*
rp
,
io_tCtx
ctx
,
io_sAgent
*
ap
,
io_sRack
*
rp
,
io_sCard
*
cp
)
io_sCard
*
cp
)
{
{
io_sCardLocal
*
local
;
io_sCardLocal
*
local
;
pwr_sClass_Pb_Module
*
op
;
pwr_sClass_Pb_Module
*
op
;
...
@@ -62,7 +62,8 @@ static pwr_tStatus IoCardInit(
...
@@ -62,7 +62,8 @@ static pwr_tStatus IoCardInit(
op
=
(
pwr_sClass_Pb_Module
*
)
cp
->
op
;
op
=
(
pwr_sClass_Pb_Module
*
)
cp
->
op
;
local
=
(
io_sCardLocal
*
)
cp
->
Local
;
local
=
(
io_sCardLocal
*
)
cp
->
Local
;
for
(
i
=
0
;
i
<
IO_MAXCHAN
;
i
++
)
{
for
(
i
=
0
;
i
<
IO_MAXCHAN
;
i
++
)
{
local
->
scancount
[
i
]
=
0
;
local
->
scancount
[
i
]
=
0
;
}
}
...
@@ -74,8 +75,8 @@ static pwr_tStatus IoCardInit(
...
@@ -74,8 +75,8 @@ static pwr_tStatus IoCardInit(
/*----------------------------------------------------------------------------*\
/*----------------------------------------------------------------------------*\
Read method for the Pb module
Read method for the Pb module
\*----------------------------------------------------------------------------*/
\*----------------------------------------------------------------------------*/
static
pwr_tStatus
IoCardRead
(
static
pwr_tStatus
IoCardRead
(
io_tCtx
ctx
,
io_sAgent
*
ap
,
io_sRack
*
rp
,
io_tCtx
ctx
,
io_sAgent
*
ap
,
io_sRack
*
rp
,
io_sCard
*
cp
)
io_sCard
*
cp
)
{
{
io_sCardLocal
*
local
;
io_sCardLocal
*
local
;
pwr_sClass_Pb_Module
*
op
;
pwr_sClass_Pb_Module
*
op
;
...
@@ -101,8 +102,8 @@ static pwr_tStatus IoCardRead(
...
@@ -101,8 +102,8 @@ static pwr_tStatus IoCardRead(
/*----------------------------------------------------------------------------*\
/*----------------------------------------------------------------------------*\
Write method for the Pb module
Write method for the Pb module
\*----------------------------------------------------------------------------*/
\*----------------------------------------------------------------------------*/
static
pwr_tStatus
IoCardWrite
(
static
pwr_tStatus
IoCardWrite
(
io_tCtx
ctx
,
io_sAgent
*
ap
,
io_sRack
*
rp
,
io_tCtx
ctx
,
io_sAgent
*
ap
,
io_sRack
*
rp
,
io_sCard
*
cp
)
io_sCard
*
cp
)
{
{
io_sCardLocal
*
local
;
io_sCardLocal
*
local
;
pwr_sClass_Pb_Module
*
op
;
pwr_sClass_Pb_Module
*
op
;
...
@@ -114,7 +115,8 @@ static pwr_tStatus IoCardWrite(
...
@@ -114,7 +115,8 @@ static pwr_tStatus IoCardWrite(
op
->
Status
=
slave
->
Status
;
op
->
Status
=
slave
->
Status
;
if
(
op
->
Status
==
PB__NORMAL
)
{
if
(
op
->
Status
==
PB__NORMAL
)
{
io_bus_card_write
(
ctx
,
cp
,
local
->
output_area
,
slave
->
ByteOrdering
,
io_bus_card_write
(
ctx
,
cp
,
local
->
output_area
,
slave
->
ByteOrdering
,
slave
->
FloatRepresentation
);
slave
->
FloatRepresentation
);
}
}
...
@@ -125,8 +127,8 @@ static pwr_tStatus IoCardWrite(
...
@@ -125,8 +127,8 @@ static pwr_tStatus IoCardWrite(
/*----------------------------------------------------------------------------*\
/*----------------------------------------------------------------------------*\
Close method for the Pb module
Close method for the Pb module
\*----------------------------------------------------------------------------*/
\*----------------------------------------------------------------------------*/
static
pwr_tStatus
IoCardClose
(
static
pwr_tStatus
IoCardClose
(
io_tCtx
ctx
,
io_sAgent
*
ap
,
io_sRack
*
rp
,
io_tCtx
ctx
,
io_sAgent
*
ap
,
io_sRack
*
rp
,
io_sCard
*
cp
)
io_sCard
*
cp
)
{
{
io_sCardLocal
*
local
;
io_sCardLocal
*
local
;
local
=
cp
->
Local
;
local
=
cp
->
Local
;
...
@@ -141,6 +143,7 @@ static pwr_tStatus IoCardClose(
...
@@ -141,6 +143,7 @@ static pwr_tStatus IoCardClose(
Every method to be exported to the workbench should be registred here.
Every method to be exported to the workbench should be registred here.
\*----------------------------------------------------------------------------*/
\*----------------------------------------------------------------------------*/
pwr_dExport
pwr_BindIoMethods
(
Pb_Module
)
=
{
pwr_BindIoMethod
(
IoCardInit
),
pwr_dExport
pwr_BindIoMethods
(
Pb_Module
)
=
{
pwr_BindIoMethod
(
IoCardRead
),
pwr_BindIoMethod
(
IoCardWrite
),
pwr_BindIoMethod
(
IoCardInit
),
pwr_BindIoMethod
(
IoCardRead
),
pwr_BindIoMethod
(
IoCardClose
),
pwr_NullMethod
};
pwr_BindIoMethod
(
IoCardWrite
),
pwr_BindIoMethod
(
IoCardClose
),
pwr_NullMethod
};
profibus/lib/rt/src/rt_io_m_pb_profiboard.c
View file @
df0831a3
...
@@ -78,23 +78,23 @@ static pwr_tStatus IoAgentInit(io_tCtx ctx, io_sAgent* ap);
...
@@ -78,23 +78,23 @@ static pwr_tStatus IoAgentInit(io_tCtx ctx, io_sAgent* ap);
static
pwr_tStatus
IoAgentRead
(
io_tCtx
ctx
,
io_sAgent
*
ap
);
static
pwr_tStatus
IoAgentRead
(
io_tCtx
ctx
,
io_sAgent
*
ap
);
static
pwr_tStatus
IoAgentWrite
(
io_tCtx
ctx
,
io_sAgent
*
ap
);
static
pwr_tStatus
IoAgentWrite
(
io_tCtx
ctx
,
io_sAgent
*
ap
);
static
pwr_tStatus
IoAgentClose
(
io_tCtx
ctx
,
io_sAgent
*
ap
);
static
pwr_tStatus
IoAgentClose
(
io_tCtx
ctx
,
io_sAgent
*
ap
);
static
pwr_tStatus
IoAgentSwap
(
io_tCtx
ctx
,
io_sAgent
*
ap
,
io_eEvent
event
);
/*----------------------------------------------------------------------------*\
/*----------------------------------------------------------------------------*\
Sends request to Profiboard for setting FMB parameters
Sends request to Profiboard for setting FMB parameters
\*----------------------------------------------------------------------------*/
\*----------------------------------------------------------------------------*/
static
short
try_profi_rcv_con_ind
(
T_PROFI_
DEVICE_HANDLE
*
hDevice
,
static
short
try_profi_rcv_con_ind
(
T_PROFI_
SERVICE_DESCR
*
con_ind_sdb
,
T_PROFI_SERVICE_DESCR
*
con_ind_sdb
,
USIGN8
*
con_ind_buffer
,
USIGN8
*
con_ind_buffer
,
USIGN16
*
con_ind_buffer_len
,
INT16
*
result
)
USIGN16
*
con_ind_buffer_len
,
INT16
*
result
)
{
{
int
retry_counter
;
int
retry_counter
;
struct
timespec
rqtp
=
{
0
,
10000000
};
// 10 ms
struct
timespec
rqtp
=
{
0
,
10000000
};
// 10 ms
retry_counter
=
DP_MAX_SERVICE_RETRY
;
retry_counter
=
DP_MAX_SERVICE_RETRY
;
do
{
do
{
nanosleep
(
&
rqtp
,
NULL
);
nanosleep
(
&
rqtp
,
NULL
);
*
result
=
profi_rcv_con_ind
(
*
result
=
hDevice
,
con_ind_sdb
,
con_ind_buffer
,
con_ind_buffer_len
);
profi_rcv_con_ind
(
con_ind_sdb
,
con_ind_buffer
,
con_ind_buffer_len
);
}
while
((
*
result
==
NO_CON_IND_RECEIVED
)
&&
(
retry_counter
--
>
0
));
}
while
((
*
result
==
NO_CON_IND_RECEIVED
)
&&
(
retry_counter
--
>
0
));
if
(
*
result
==
E_IF_FATAL_ERROR
)
if
(
*
result
==
E_IF_FATAL_ERROR
)
...
@@ -105,8 +105,7 @@ static short try_profi_rcv_con_ind(T_PROFI_DEVICE_HANDLE* hDevice,
...
@@ -105,8 +105,7 @@ static short try_profi_rcv_con_ind(T_PROFI_DEVICE_HANDLE* hDevice,
/*----------------------------------------------------------------------------*\
/*----------------------------------------------------------------------------*\
Sends request to Profiboard for setting FMB parameters
Sends request to Profiboard for setting FMB parameters
\*----------------------------------------------------------------------------*/
\*----------------------------------------------------------------------------*/
static
short
fmb_set_configuration
(
static
short
fmb_set_configuration
(
io_sAgent
*
ap
)
T_PROFI_DEVICE_HANDLE
*
hDevice
,
io_sAgent
*
ap
)
{
{
T_PROFI_SERVICE_DESCR
sdb
;
T_PROFI_SERVICE_DESCR
sdb
;
T_FMB_SET_CONFIGURATION_REQ
data
;
T_FMB_SET_CONFIGURATION_REQ
data
;
...
@@ -126,7 +125,8 @@ static short fmb_set_configuration(
...
@@ -126,7 +125,8 @@ static short fmb_set_configuration(
/* Iterate over the slaves. */
/* Iterate over the slaves. */
for
(
slave_list
=
ap
->
racklist
;
slave_list
!=
NULL
;
for
(
slave_list
=
ap
->
racklist
;
slave_list
!=
NULL
;
slave_list
=
slave_list
->
next
)
{
slave_list
=
slave_list
->
next
)
{
cid
=
slave_list
->
Class
;
cid
=
slave_list
->
Class
;
while
(
ODD
(
gdh_GetSuperClass
(
cid
,
&
cid
,
pwr_cNOid
)))
while
(
ODD
(
gdh_GetSuperClass
(
cid
,
&
cid
,
pwr_cNOid
)))
...
@@ -167,13 +167,14 @@ static short fmb_set_configuration(
...
@@ -167,13 +167,14 @@ static short fmb_set_configuration(
data
.
fdlif
.
receive_credits
=
20
;
data
.
fdlif
.
receive_credits
=
20
;
data
.
fdlif
.
max_no_resp_saps
=
20
;
data
.
fdlif
.
max_no_resp_saps
=
20
;
profi_snd_req_res
(
hDevice
,
&
sdb
,
&
data
,
PB_FALSE
);
profi_snd_req_res
(
&
sdb
,
&
data
,
PB_FALSE
);
try_profi_rcv_con_ind
(
try_profi_rcv_con_ind
(
&
con_ind_sdb
,
con_ind_buffer
,
&
con_ind_buffer_len
,
hDevice
,
&
con_ind_sdb
,
con_ind_buffer
,
&
con_ind_buffer_len
,
&
result
);
&
result
);
if
((
con_ind_sdb
.
service
==
FMB_SET_CONFIGURATION
)
if
((
con_ind_sdb
.
service
==
FMB_SET_CONFIGURATION
)
&&
&&
(
con_ind_sdb
.
primitive
==
CON
)
&&
(
con_ind_sdb
.
result
==
POS
))
{
(
con_ind_sdb
.
primitive
==
CON
)
&&
(
con_ind_sdb
.
result
==
POS
))
{
return
(
PB_TRUE
);
return
(
PB_TRUE
);
}
}
...
@@ -183,7 +184,7 @@ static short fmb_set_configuration(
...
@@ -183,7 +184,7 @@ static short fmb_set_configuration(
/*----------------------------------------------------------------------------*\
/*----------------------------------------------------------------------------*\
Sends request to Profiboard for setting DP master parameters
Sends request to Profiboard for setting DP master parameters
\*----------------------------------------------------------------------------*/
\*----------------------------------------------------------------------------*/
static
short
dp_init_master
(
T_PROFI_DEVICE_HANDLE
*
hDevice
)
static
short
dp_init_master
()
{
{
T_PROFI_SERVICE_DESCR
sdb
;
T_PROFI_SERVICE_DESCR
sdb
;
T_DP_INIT_MASTER_REQ
data
;
T_DP_INIT_MASTER_REQ
data
;
...
@@ -203,19 +204,20 @@ static short dp_init_master(T_PROFI_DEVICE_HANDLE* hDevice)
...
@@ -203,19 +204,20 @@ static short dp_init_master(T_PROFI_DEVICE_HANDLE* hDevice)
data
.
master_default_address
=
0
;
data
.
master_default_address
=
0
;
data
.
master_class2
=
PB_FALSE
;
data
.
master_class2
=
PB_FALSE
;
data
.
lowest_slave_address
=
2
;
data
.
lowest_slave_address
=
2
;
data
.
slave_io_address_mode
data
.
slave_io_address_mode
=
=
DP_AAM_IO_BLOCKS
;
// only mode possible with Linux-driver DP_AAM_ARRAY;
DP_AAM_IO_BLOCKS
;
// only mode possible with Linux-driver DP_AAM_ARRAY;
data
.
clear_outputs
=
PB_TRUE
;
data
.
clear_outputs
=
PB_TRUE
;
data
.
auto_remote_services
=
DP_AUTO_REMOTE_SERVICES
;
data
.
auto_remote_services
=
DP_AUTO_REMOTE_SERVICES
;
data
.
cyclic_data_transfer
=
PB_TRUE
;
data
.
cyclic_data_transfer
=
PB_TRUE
;
profi_snd_req_res
(
hDevice
,
&
sdb
,
&
data
,
PB_FALSE
);
profi_snd_req_res
(
&
sdb
,
&
data
,
PB_FALSE
);
try_profi_rcv_con_ind
(
try_profi_rcv_con_ind
(
&
con_ind_sdb
,
con_ind_buffer
,
&
con_ind_buffer_len
,
hDevice
,
&
con_ind_sdb
,
con_ind_buffer
,
&
con_ind_buffer_len
,
&
result
);
&
result
);
if
((
con_ind_sdb
.
service
==
DP_INIT_MASTER
)
&&
(
con_ind_sdb
.
primitive
==
CON
)
if
((
con_ind_sdb
.
service
==
DP_INIT_MASTER
)
&&
&&
(
con_ind_sdb
.
result
==
POS
))
{
(
con_ind_sdb
.
primitive
==
CON
)
&&
(
con_ind_sdb
.
result
==
POS
))
{
return
(
PB_TRUE
);
return
(
PB_TRUE
);
}
}
...
@@ -225,11 +227,11 @@ static short dp_init_master(T_PROFI_DEVICE_HANDLE* hDevice)
...
@@ -225,11 +227,11 @@ static short dp_init_master(T_PROFI_DEVICE_HANDLE* hDevice)
/*----------------------------------------------------------------------------*\
/*----------------------------------------------------------------------------*\
Sends request to Profiboard for setting DP bus parameters
Sends request to Profiboard for setting DP bus parameters
\*----------------------------------------------------------------------------*/
\*----------------------------------------------------------------------------*/
static
short
dp_download_bus
(
static
short
dp_download_bus
(
pwr_sClass_Pb_Profiboard
*
op
)
T_PROFI_DEVICE_HANDLE
*
hDevice
,
pwr_sClass_Pb_Profiboard
*
op
)
{
{
T_PROFI_SERVICE_DESCR
sdb
;
T_PROFI_SERVICE_DESCR
sdb
;
struct
{
struct
{
T_DP_DOWNLOAD_REQ
drp
;
T_DP_DOWNLOAD_REQ
drp
;
T_DP_BUS_PARA_SET
dbp
;
T_DP_BUS_PARA_SET
dbp
;
}
data
;
}
data
;
...
@@ -255,7 +257,8 @@ static short dp_download_bus(
...
@@ -255,7 +257,8 @@ static short dp_download_bus(
data
.
dbp
.
bus_para_len
=
swap16
(
66
);
data
.
dbp
.
bus_para_len
=
swap16
(
66
);
data
.
dbp
.
fdl_add
=
0
;
data
.
dbp
.
fdl_add
=
0
;
switch
(
op
->
BaudRate
)
{
switch
(
op
->
BaudRate
)
{
case
500
:
case
500
:
data
.
dbp
.
baud_rate
=
DP_KBAUD_500
;
data
.
dbp
.
baud_rate
=
DP_KBAUD_500
;
break
;
break
;
...
@@ -298,13 +301,14 @@ static short dp_download_bus(
...
@@ -298,13 +301,14 @@ static short dp_download_bus(
for
(
i
=
0
;
i
<
32
;
i
++
)
for
(
i
=
0
;
i
<
32
;
i
++
)
data
.
dbp
.
master_class2_name
[
i
]
=
0
;
data
.
dbp
.
master_class2_name
[
i
]
=
0
;
profi_snd_req_res
(
hDevice
,
&
sdb
,
&
data
,
PB_FALSE
);
profi_snd_req_res
(
&
sdb
,
&
data
,
PB_FALSE
);
try_profi_rcv_con_ind
(
try_profi_rcv_con_ind
(
&
con_ind_sdb
,
con_ind_buffer
,
&
con_ind_buffer_len
,
hDevice
,
&
con_ind_sdb
,
con_ind_buffer
,
&
con_ind_buffer_len
,
&
result
);
&
result
);
if
((
con_ind_sdb
.
service
==
DP_DOWNLOAD_LOC
)
&&
(
con_ind_sdb
.
primitive
==
CON
)
if
((
con_ind_sdb
.
service
==
DP_DOWNLOAD_LOC
)
&&
&&
(
con_ind_sdb
.
result
==
POS
))
{
(
con_ind_sdb
.
primitive
==
CON
)
&&
(
con_ind_sdb
.
result
==
POS
))
{
return
(
PB_TRUE
);
return
(
PB_TRUE
);
}
}
...
@@ -313,8 +317,7 @@ static short dp_download_bus(
...
@@ -313,8 +317,7 @@ static short dp_download_bus(
/*********************** FMB_SET_BUSPARAMETER ******************************/
/*********************** FMB_SET_BUSPARAMETER ******************************/
static
short
fmb_set_busparameter
(
static
short
fmb_set_busparameter
(
pwr_sClass_Pb_Profiboard
*
op
)
T_PROFI_DEVICE_HANDLE
*
hDevice
,
pwr_sClass_Pb_Profiboard
*
op
)
/* ------------------------------------------------------------------------ */
/* ------------------------------------------------------------------------ */
/* FUNCTIONAL_DESCRIPTION: */
/* FUNCTIONAL_DESCRIPTION: */
/* */
/* */
...
@@ -337,7 +340,8 @@ static short fmb_set_busparameter(
...
@@ -337,7 +340,8 @@ static short fmb_set_busparameter(
bus_par_req
.
loc_segm
=
255
;
bus_par_req
.
loc_segm
=
255
;
bus_par_req
.
medium_red
=
0
;
bus_par_req
.
medium_red
=
0
;
switch
(
op
->
BaudRate
)
{
switch
(
op
->
BaudRate
)
{
case
500
:
case
500
:
bus_par_req
.
baud_rate
=
DP_KBAUD_500
;
bus_par_req
.
baud_rate
=
DP_KBAUD_500
;
break
;
break
;
...
@@ -381,13 +385,14 @@ static short fmb_set_busparameter(
...
@@ -381,13 +385,14 @@ static short fmb_set_busparameter(
/* Send Request */
/* Send Request */
profi_snd_req_res
(
hDevice
,
&
sdb
,
&
bus_par_req
,
PB_FALSE
);
profi_snd_req_res
(
&
sdb
,
&
bus_par_req
,
PB_FALSE
);
try_profi_rcv_con_ind
(
try_profi_rcv_con_ind
(
&
con_ind_sdb
,
con_ind_buffer
,
&
con_ind_buffer_len
,
hDevice
,
&
con_ind_sdb
,
con_ind_buffer
,
&
con_ind_buffer_len
,
&
result
);
&
result
);
if
((
con_ind_sdb
.
service
==
FMB_SET_BUSPARAMETER
)
if
((
con_ind_sdb
.
service
==
FMB_SET_BUSPARAMETER
)
&&
&&
(
con_ind_sdb
.
primitive
==
CON
)
&&
(
con_ind_sdb
.
result
==
POS
))
{
(
con_ind_sdb
.
primitive
==
CON
)
&&
(
con_ind_sdb
.
result
==
POS
))
{
return
(
PB_TRUE
);
return
(
PB_TRUE
);
}
}
...
@@ -397,8 +402,7 @@ static short fmb_set_busparameter(
...
@@ -397,8 +402,7 @@ static short fmb_set_busparameter(
/*********************** DP_SET_BUSPARAMETER ******************************/
/*********************** DP_SET_BUSPARAMETER ******************************/
static
short
dp_set_busparameter
(
static
short
dp_set_busparameter
(
pwr_sClass_Pb_Profiboard
*
op
)
T_PROFI_DEVICE_HANDLE
*
hDevice
,
pwr_sClass_Pb_Profiboard
*
op
)
/* ------------------------------------------------------------------------ */
/* ------------------------------------------------------------------------ */
/* FUNCTIONAL_DESCRIPTION: */
/* FUNCTIONAL_DESCRIPTION: */
/* */
/* */
...
@@ -432,15 +436,16 @@ static short dp_set_busparameter(
...
@@ -432,15 +436,16 @@ static short dp_set_busparameter(
/* Send Request */
/* Send Request */
profi_snd_req_res
(
hDevice
,
&
sdb
,
&
bus_par_req
,
PB_FALSE
);
profi_snd_req_res
(
&
sdb
,
&
bus_par_req
,
PB_FALSE
);
con_ind_sdb
.
service
=
0
;
con_ind_sdb
.
service
=
0
;
while
(
con_ind_sdb
.
service
!=
DP_SET_BUSPARAMETER
)
while
(
con_ind_sdb
.
service
!=
DP_SET_BUSPARAMETER
)
try_profi_rcv_con_ind
(
try_profi_rcv_con_ind
(
&
con_ind_sdb
,
con_ind_buffer
,
&
con_ind_buffer_len
,
hDevice
,
&
con_ind_sdb
,
con_ind_buffer
,
&
con_ind_buffer_len
,
&
result
);
&
result
);
if
((
con_ind_sdb
.
service
==
DP_SET_BUSPARAMETER
)
if
((
con_ind_sdb
.
service
==
DP_SET_BUSPARAMETER
)
&&
&&
(
con_ind_sdb
.
primitive
==
CON
)
&&
(
con_ind_sdb
.
result
==
POS
))
{
(
con_ind_sdb
.
primitive
==
CON
)
&&
(
con_ind_sdb
.
result
==
POS
))
{
return
(
PB_TRUE
);
return
(
PB_TRUE
);
}
}
...
@@ -448,8 +453,7 @@ static short dp_set_busparameter(
...
@@ -448,8 +453,7 @@ static short dp_set_busparameter(
}
/* dp_set_busparameter */
}
/* dp_set_busparameter */
static
short
fdlif_sap_activate_req
(
static
short
fdlif_sap_activate_req
(
pwr_sClass_Pb_FDL_SAP
*
op
)
T_PROFI_DEVICE_HANDLE
*
hDevice
,
pwr_sClass_Pb_FDL_SAP
*
op
)
/*-----------------------------------------------------------------------------
/*-----------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
FUNCTIONAL_DESCRIPTION
...
@@ -498,24 +502,24 @@ possible return values:
...
@@ -498,24 +502,24 @@ possible return values:
/* Send Request */
/* Send Request */
profi_snd_req_res
(
hDevice
,
&
sdb
,
&
sap
,
PB_FALSE
);
profi_snd_req_res
(
&
sdb
,
&
sap
,
PB_FALSE
);
con_ind_sdb
.
service
=
0
;
con_ind_sdb
.
service
=
0
;
while
(
con_ind_sdb
.
service
!=
FDLIF_SAP_ACTIVATE
)
while
(
con_ind_sdb
.
service
!=
FDLIF_SAP_ACTIVATE
)
try_profi_rcv_con_ind
(
try_profi_rcv_con_ind
(
&
con_ind_sdb
,
con_ind_buffer
,
&
con_ind_buffer_len
,
hDevice
,
&
con_ind_sdb
,
con_ind_buffer
,
&
con_ind_buffer_len
,
&
result
);
&
result
);
if
((
con_ind_sdb
.
service
==
FDLIF_SAP_ACTIVATE
)
if
((
con_ind_sdb
.
service
==
FDLIF_SAP_ACTIVATE
)
&&
&&
(
con_ind_sdb
.
primitive
==
CON
)
&&
(
con_ind_sdb
.
result
==
POS
))
{
(
con_ind_sdb
.
primitive
==
CON
)
&&
(
con_ind_sdb
.
result
==
POS
))
{
return
(
PB_TRUE
);
return
(
PB_TRUE
);
}
}
return
(
PB_FALSE
);
return
(
PB_FALSE
);
}
}
static
short
fdlif_rsap_activate_req
(
static
short
fdlif_rsap_activate_req
(
pwr_sClass_Pb_FDL_SAP
*
op
)
T_PROFI_DEVICE_HANDLE
*
hDevice
,
pwr_sClass_Pb_FDL_SAP
*
op
)
/*-----------------------------------------------------------------------------
/*-----------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
FUNCTIONAL_DESCRIPTION
...
@@ -560,16 +564,17 @@ possible return values:
...
@@ -560,16 +564,17 @@ possible return values:
/* Send Request */
/* Send Request */
profi_snd_req_res
(
hDevice
,
&
sdb
,
&
rsap
,
PB_FALSE
);
profi_snd_req_res
(
&
sdb
,
&
rsap
,
PB_FALSE
);
con_ind_sdb
.
service
=
0
;
con_ind_sdb
.
service
=
0
;
while
(
con_ind_sdb
.
service
!=
FDLIF_RSAP_ACTIVATE
)
while
(
con_ind_sdb
.
service
!=
FDLIF_RSAP_ACTIVATE
)
try_profi_rcv_con_ind
(
try_profi_rcv_con_ind
(
&
con_ind_sdb
,
con_ind_buffer
,
&
con_ind_buffer_len
,
hDevice
,
&
con_ind_sdb
,
con_ind_buffer
,
&
con_ind_buffer_len
,
&
result
);
&
result
);
if
((
con_ind_sdb
.
service
==
FDLIF_RSAP_ACTIVATE
)
if
((
con_ind_sdb
.
service
==
FDLIF_RSAP_ACTIVATE
)
&&
&&
(
con_ind_sdb
.
primitive
==
CON
)
&&
(
con_ind_sdb
.
result
==
POS
))
{
(
con_ind_sdb
.
primitive
==
CON
)
&&
(
con_ind_sdb
.
result
==
POS
))
{
return
(
PB_TRUE
);
return
(
PB_TRUE
);
}
}
...
@@ -579,7 +584,7 @@ possible return values:
...
@@ -579,7 +584,7 @@ possible return values:
/*----------------------------------------------------------------------------*\
/*----------------------------------------------------------------------------*\
Sends request for selecting operation mode to the Profiboard
Sends request for selecting operation mode to the Profiboard
\*----------------------------------------------------------------------------*/
\*----------------------------------------------------------------------------*/
static
short
dp_act_param_loc
(
T_PROFI_DEVICE_HANDLE
*
hDevice
,
short
arg
)
static
short
dp_act_param_loc
(
short
arg
)
{
{
T_PROFI_SERVICE_DESCR
sdb
;
T_PROFI_SERVICE_DESCR
sdb
;
T_DP_ACT_PARAM_REQ
apr
;
T_DP_ACT_PARAM_REQ
apr
;
...
@@ -598,7 +603,7 @@ static short dp_act_param_loc(T_PROFI_DEVICE_HANDLE* hDevice, short arg)
...
@@ -598,7 +603,7 @@ static short dp_act_param_loc(T_PROFI_DEVICE_HANDLE* hDevice, short arg)
apr
.
activate
=
arg
;
apr
.
activate
=
arg
;
apr
.
dummy
=
0
;
apr
.
dummy
=
0
;
retval
=
profi_snd_req_res
(
hDevice
,
&
sdb
,
&
apr
,
PB_FALSE
);
retval
=
profi_snd_req_res
(
&
sdb
,
&
apr
,
PB_FALSE
);
return
retval
;
return
retval
;
}
}
...
@@ -606,7 +611,7 @@ static short dp_act_param_loc(T_PROFI_DEVICE_HANDLE* hDevice, short arg)
...
@@ -606,7 +611,7 @@ static short dp_act_param_loc(T_PROFI_DEVICE_HANDLE* hDevice, short arg)
/*----------------------------------------------------------------------------*\
/*----------------------------------------------------------------------------*\
Sends request for getting slave diagnostics
Sends request for getting slave diagnostics
\*----------------------------------------------------------------------------*/
\*----------------------------------------------------------------------------*/
static
pwr_tBoolean
dp_get_slave_diag
(
T_PROFI_DEVICE_HANDLE
*
hDevice
)
static
pwr_tBoolean
dp_get_slave_diag
()
{
{
T_PROFI_SERVICE_DESCR
sdb
;
T_PROFI_SERVICE_DESCR
sdb
;
pwr_tUInt16
retval
;
pwr_tUInt16
retval
;
...
@@ -619,7 +624,7 @@ static pwr_tBoolean dp_get_slave_diag(T_PROFI_DEVICE_HANDLE* hDevice)
...
@@ -619,7 +624,7 @@ static pwr_tBoolean dp_get_slave_diag(T_PROFI_DEVICE_HANDLE* hDevice)
sdb
.
invoke_id
=
0
;
sdb
.
invoke_id
=
0
;
sdb
.
result
=
0
;
sdb
.
result
=
0
;
retval
=
profi_snd_req_res
(
hDevice
,
&
sdb
,
&
sdb
,
PB_FALSE
);
retval
=
profi_snd_req_res
(
&
sdb
,
&
sdb
,
PB_FALSE
);
return
((
pwr_tBoolean
)(
retval
==
E_OK
));
return
((
pwr_tBoolean
)(
retval
==
E_OK
));
}
}
...
@@ -627,50 +632,62 @@ static pwr_tBoolean dp_get_slave_diag(T_PROFI_DEVICE_HANDLE* hDevice)
...
@@ -627,50 +632,62 @@ static pwr_tBoolean dp_get_slave_diag(T_PROFI_DEVICE_HANDLE* hDevice)
/*----------------------------------------------------------------------------*\
/*----------------------------------------------------------------------------*\
Get slave diagnostics
Get slave diagnostics
\*----------------------------------------------------------------------------*/
\*----------------------------------------------------------------------------*/
static
void
dp_get_slave_diag_con
(
static
void
T_DP_GET_SLAVE_DIAG_CON
*
get_slave_diag_con_ptr
,
io_sRack
*
slave_list
,
dp_get_slave_diag_con
(
T_DP_GET_SLAVE_DIAG_CON
*
get_slave_diag_con_ptr
,
char
log
)
io_sRack
*
slave_list
,
char
log
)
{
{
T_DP_DIAG_DATA
FAR
*
diag_data_ptr
;
T_DP_DIAG_DATA
FAR
*
diag_data_ptr
;
char
s
[
128
];
char
s
[
128
];
pwr_sClass_Pb_DP_Slave
*
sp
;
pwr_sClass_Pb_DP_Slave
*
sp
;
if
(
get_slave_diag_con_ptr
->
diag_data_len
>=
DP_MIN_SLAVE_DIAG_LEN
)
{
if
(
get_slave_diag_con_ptr
->
diag_data_len
>=
DP_MIN_SLAVE_DIAG_LEN
)
{
diag_data_ptr
=
(
T_DP_DIAG_DATA
FAR
*
)(
get_slave_diag_con_ptr
+
1
);
diag_data_ptr
=
(
T_DP_DIAG_DATA
FAR
*
)(
get_slave_diag_con_ptr
+
1
);
while
(
slave_list
!=
NULL
)
{
while
(
slave_list
!=
NULL
)
{
sp
=
(
pwr_sClass_Pb_DP_Slave
*
)
slave_list
->
op
;
sp
=
(
pwr_sClass_Pb_DP_Slave
*
)
slave_list
->
op
;
if
(
sp
->
SlaveAddress
==
get_slave_diag_con_ptr
->
rem_add
)
{
if
(
sp
->
SlaveAddress
==
get_slave_diag_con_ptr
->
rem_add
)
{
sp
->
StationStatus1
=
diag_data_ptr
->
station_status_1
;
sp
->
StationStatus1
=
diag_data_ptr
->
station_status_1
;
sp
->
StationStatus2
=
diag_data_ptr
->
station_status_2
;
sp
->
StationStatus2
=
diag_data_ptr
->
station_status_2
;
sp
->
StationStatus3
=
diag_data_ptr
->
station_status_3
;
sp
->
StationStatus3
=
diag_data_ptr
->
station_status_3
;
sp
->
BytesOfDiag
sp
->
BytesOfDiag
=
=
get_slave_diag_con_ptr
->
diag_data_len
-
DP_MIN_SLAVE_DIAG_LEN
;
get_slave_diag_con_ptr
->
diag_data_len
-
DP_MIN_SLAVE_DIAG_LEN
;
memcpy
(
sp
->
Diag
,
diag_data_ptr
+
1
,
memcpy
(
sp
->
Diag
,
diag_data_ptr
+
1
,
MIN
(
get_slave_diag_con_ptr
->
diag_data_len
-
DP_MIN_SLAVE_DIAG_LEN
,
MIN
(
get_slave_diag_con_ptr
->
diag_data_len
-
DP_MIN_SLAVE_DIAG_LEN
,
DP_MAX_EXT_DIAG_DATA_LEN
));
DP_MAX_EXT_DIAG_DATA_LEN
));
/* Update slave status */
/* Update slave status */
if
(
!
(
sp
->
StationStatus1
&
~
pwr_mPbStationStatus1Mask_ExternalDiag
)
if
(
!
(
sp
->
StationStatus1
&
~
pwr_mPbStationStatus1Mask_ExternalDiag
)
&&
&&
!
(
sp
->
StationStatus2
!
(
sp
->
StationStatus2
&
&
~
(
pwr_mPbStationStatus2Mask_Default
~
(
pwr_mPbStationStatus2Mask_Default
|
|
pwr_mPbStationStatus2Mask_ResponseMonitoringOn
)))
{
pwr_mPbStationStatus2Mask_ResponseMonitoringOn
)))
{
sp
->
Status
=
PB__NORMAL
;
sp
->
Status
=
PB__NORMAL
;
}
else
if
(
sp
->
StationStatus1
&
pwr_mPbStationStatus1Mask_NonExistent
)
{
}
else
if
(
sp
->
StationStatus1
&
pwr_mPbStationStatus1Mask_NonExistent
)
{
sp
->
Status
=
PB__NOCONN
;
sp
->
Status
=
PB__NOCONN
;
}
else
if
((
sp
->
StationStatus1
}
&
(
pwr_mPbStationStatus1Mask_ConfigFault
else
if
((
sp
->
StationStatus1
&
|
pwr_mPbStationStatus1Mask_ParamFault
))
(
pwr_mPbStationStatus1Mask_ConfigFault
|
||
(
sp
->
StationStatus2
pwr_mPbStationStatus1Mask_ParamFault
))
||
&
pwr_mPbStationStatus2Mask_NewParamsRequested
))
{
(
sp
->
StationStatus2
&
pwr_mPbStationStatus2Mask_NewParamsRequested
))
{
sp
->
Status
=
PB__CONFIGERR
;
sp
->
Status
=
PB__CONFIGERR
;
}
else
if
(
sp
->
StationStatus1
&
pwr_mPbStationStatus1Mask_MasterLock
)
{
}
else
if
(
sp
->
StationStatus1
&
pwr_mPbStationStatus1Mask_MasterLock
)
{
sp
->
Status
=
PB__MASTERLOCK
;
sp
->
Status
=
PB__MASTERLOCK
;
}
else
// if (sp->StationStatus1 & pwr_mPbStationStatus1Mask_NotReady)
}
else
// if (sp->StationStatus1 & pwr_mPbStationStatus1Mask_NotReady)
{
{
sp
->
Status
=
PB__NOTREADY
;
sp
->
Status
=
PB__NOTREADY
;
}
}
...
@@ -681,9 +698,10 @@ static void dp_get_slave_diag_con(
...
@@ -681,9 +698,10 @@ static void dp_get_slave_diag_con(
slave_list
=
slave_list
->
next
;
slave_list
=
slave_list
->
next
;
}
}
if
(
log
)
{
if
(
log
)
sprintf
(
s
,
{
"Slave [%3hhu] [0x%04hX]: Status = 0x%02hhX 0x%02hhX 0x%02hhX, "
sprintf
(
s
,
"Slave [%3hhu] [0x%04hX]: Status = 0x%02hhX 0x%02hhX 0x%02hhX, "
"Master = %3hhu, Ext = %u, Diags = %hu"
,
"Master = %3hhu, Ext = %u, Diags = %hu"
,
get_slave_diag_con_ptr
->
rem_add
,
swap16
(
diag_data_ptr
->
ident_number
),
get_slave_diag_con_ptr
->
rem_add
,
swap16
(
diag_data_ptr
->
ident_number
),
diag_data_ptr
->
station_status_1
,
diag_data_ptr
->
station_status_2
,
diag_data_ptr
->
station_status_1
,
diag_data_ptr
->
station_status_2
,
...
@@ -697,8 +715,9 @@ static void dp_get_slave_diag_con(
...
@@ -697,8 +715,9 @@ static void dp_get_slave_diag_con(
}
/* diag_data_len */
}
/* diag_data_len */
}
}
static
void
fdlif_sda_sdn_srd_ind
(
static
void
fdlif_sda_sdn_srd_ind
(
INT8
invoke_id
,
INT8
invoke_id
,
T_FDLIF_SDN_SDA_SRD_REQ
*
ind_ptr
,
io_sRack
*
slave_list
)
T_FDLIF_SDN_SDA_SRD_REQ
*
ind_ptr
,
io_sRack
*
slave_list
)
/*-----------------------------------------------------------------------------
/*-----------------------------------------------------------------------------
FUNCTIONAL_DESCRIPTION
FUNCTIONAL_DESCRIPTION
...
@@ -713,20 +732,25 @@ possible return values:
...
@@ -713,20 +732,25 @@ possible return values:
USIGN8
*
data_ptr
;
USIGN8
*
data_ptr
;
pwr_sClass_Pb_FDL_SAP
*
sp
;
pwr_sClass_Pb_FDL_SAP
*
sp
;
if
(
ind_ptr
->
length
>
0
)
{
if
(
ind_ptr
->
length
>
0
)
{
data_ptr
=
(
USIGN8
*
)(
ind_ptr
+
1
);
data_ptr
=
(
USIGN8
*
)(
ind_ptr
+
1
);
// print_data (data_ptr, cnf_ptr->length);
// print_data (data_ptr, cnf_ptr->length);
while
(
slave_list
!=
NULL
)
{
while
(
slave_list
!=
NULL
)
if
(((
io_sRackLocal
*
)
slave_list
->
Local
)
->
fdl
)
{
{
if
(((
io_sRackLocal
*
)
slave_list
->
Local
)
->
fdl
)
{
sp
=
(
pwr_sClass_Pb_FDL_SAP
*
)
slave_list
->
op
;
sp
=
(
pwr_sClass_Pb_FDL_SAP
*
)
slave_list
->
op
;
if
(
sp
->
SAP_Nr
==
ind_ptr
->
ssap
)
{
if
(
sp
->
SAP_Nr
==
ind_ptr
->
ssap
)
{
io_sCard
*
card_list
=
slave_list
->
cardlist
;
io_sCard
*
card_list
=
slave_list
->
cardlist
;
pwr_sClass_Pb_FDL_DataTransfer
*
cp
;
pwr_sClass_Pb_FDL_DataTransfer
*
cp
;
io_sFDLCardLocal
*
local_card
;
io_sFDLCardLocal
*
local_card
;
if
(
card_list
!=
NULL
)
{
if
(
card_list
!=
NULL
)
{
cp
=
(
pwr_sClass_Pb_FDL_DataTransfer
*
)
card_list
->
op
;
cp
=
(
pwr_sClass_Pb_FDL_DataTransfer
*
)
card_list
->
op
;
local_card
=
(
io_sFDLCardLocal
*
)
card_list
->
Local
;
local_card
=
(
io_sFDLCardLocal
*
)
card_list
->
Local
;
...
@@ -764,29 +788,37 @@ possible return values:
...
@@ -764,29 +788,37 @@ possible return values:
pwr_sClass_Pb_FDL_SAP
*
sp
;
pwr_sClass_Pb_FDL_SAP
*
sp
;
USIGN8
res
;
USIGN8
res
;
if
(
result
==
POS
)
{
if
(
result
==
POS
)
{
res
=
0
;
res
=
0
;
}
else
{
}
else
{
res
=
cnf_ptr
->
status
;
res
=
cnf_ptr
->
status
;
}
}
data_ptr
=
(
USIGN8
*
)(
cnf_ptr
+
1
);
data_ptr
=
(
USIGN8
*
)(
cnf_ptr
+
1
);
while
(
slave_list
!=
NULL
)
{
while
(
slave_list
!=
NULL
)
if
(((
io_sRackLocal
*
)
slave_list
->
Local
)
->
fdl
)
{
{
if
(((
io_sRackLocal
*
)
slave_list
->
Local
)
->
fdl
)
{
sp
=
(
pwr_sClass_Pb_FDL_SAP
*
)
slave_list
->
op
;
sp
=
(
pwr_sClass_Pb_FDL_SAP
*
)
slave_list
->
op
;
if
(
!
sp
->
Responder
)
{
if
(
!
sp
->
Responder
)
{
io_sCard
*
card_list
=
slave_list
->
cardlist
;
io_sCard
*
card_list
=
slave_list
->
cardlist
;
pwr_sClass_Pb_FDL_DataTransfer
*
cp
;
pwr_sClass_Pb_FDL_DataTransfer
*
cp
;
io_sFDLCardLocal
*
local_card
;
io_sFDLCardLocal
*
local_card
;
while
(
card_list
!=
NULL
)
{
while
(
card_list
!=
NULL
)
{
cp
=
(
pwr_sClass_Pb_FDL_DataTransfer
*
)
card_list
->
op
;
cp
=
(
pwr_sClass_Pb_FDL_DataTransfer
*
)
card_list
->
op
;
local_card
=
(
io_sFDLCardLocal
*
)
card_list
->
Local
;
local_card
=
(
io_sFDLCardLocal
*
)
card_list
->
Local
;
if
((
local_card
->
invoke_id
==
invoke_id
)
if
((
local_card
->
invoke_id
==
invoke_id
)
&&
&&
(
cp
->
Type
==
pwr_ePbFDLDataTransferTypeEnum_FDLIF_SRD
))
{
(
cp
->
Type
==
pwr_ePbFDLDataTransferTypeEnum_FDLIF_SRD
))
{
cp
->
Result
=
res
;
cp
->
Result
=
res
;
if
(
cnf_ptr
->
length
>
0
)
if
(
cnf_ptr
->
length
>
0
)
memcpy
(
local_card
->
input_area
,
data_ptr
,
memcpy
(
local_card
->
input_area
,
data_ptr
,
...
@@ -806,33 +838,41 @@ possible return values:
...
@@ -806,33 +838,41 @@ possible return values:
return
;
return
;
}
}
static
void
fdlif_sda_sdn_con
(
static
void
fdlif_sda_sdn_con
(
INT8
invoke_id
,
INT16
result
,
INT8
invoke_id
,
INT16
result
,
T_FDLIF_ERROR
*
err_ptr
,
io_sRack
*
slave_list
)
T_FDLIF_ERROR
*
err_ptr
,
io_sRack
*
slave_list
)
{
{
pwr_sClass_Pb_FDL_SAP
*
sp
;
pwr_sClass_Pb_FDL_SAP
*
sp
;
USIGN8
res
;
USIGN8
res
;
if
(
result
==
POS
)
{
if
(
result
==
POS
)
{
res
=
0
;
res
=
0
;
}
else
{
}
else
{
res
=
err_ptr
->
result
;
res
=
err_ptr
->
result
;
}
}
// print_data (data_ptr, cnf_ptr->length);
// print_data (data_ptr, cnf_ptr->length);
while
(
slave_list
!=
NULL
)
{
while
(
slave_list
!=
NULL
)
if
(((
io_sRackLocal
*
)
slave_list
->
Local
)
->
fdl
)
{
{
if
(((
io_sRackLocal
*
)
slave_list
->
Local
)
->
fdl
)
{
sp
=
(
pwr_sClass_Pb_FDL_SAP
*
)
slave_list
->
op
;
sp
=
(
pwr_sClass_Pb_FDL_SAP
*
)
slave_list
->
op
;
if
(
!
sp
->
Responder
)
{
if
(
!
sp
->
Responder
)
{
io_sCard
*
card_list
=
slave_list
->
cardlist
;
io_sCard
*
card_list
=
slave_list
->
cardlist
;
pwr_sClass_Pb_FDL_DataTransfer
*
cp
;
pwr_sClass_Pb_FDL_DataTransfer
*
cp
;
io_sFDLCardLocal
*
local_card
;
io_sFDLCardLocal
*
local_card
;
while
(
card_list
!=
NULL
)
{
while
(
card_list
!=
NULL
)
{
cp
=
(
pwr_sClass_Pb_FDL_DataTransfer
*
)
card_list
->
op
;
cp
=
(
pwr_sClass_Pb_FDL_DataTransfer
*
)
card_list
->
op
;
local_card
=
(
io_sFDLCardLocal
*
)
card_list
->
Local
;
local_card
=
(
io_sFDLCardLocal
*
)
card_list
->
Local
;
if
(
local_card
->
invoke_id
==
invoke_id
)
{
if
(
local_card
->
invoke_id
==
invoke_id
)
{
cp
->
Result
=
res
;
cp
->
Result
=
res
;
break
;
break
;
}
}
...
@@ -852,8 +892,7 @@ static void fdlif_sda_sdn_con(
...
@@ -852,8 +892,7 @@ static void fdlif_sda_sdn_con(
/*----------------------------------------------------------------------------*\
/*----------------------------------------------------------------------------*\
Starts download sequence of prm data to one slave
Starts download sequence of prm data to one slave
\*----------------------------------------------------------------------------*/
\*----------------------------------------------------------------------------*/
static
pwr_tStatus
start_download_seq
(
static
pwr_tStatus
start_download_seq
(
pwr_sClass_Pb_DP_Slave
*
op
)
T_PROFI_DEVICE_HANDLE
*
hDevice
,
pwr_sClass_Pb_DP_Slave
*
op
)
{
{
T_PROFI_SERVICE_DESCR
sdb
;
T_PROFI_SERVICE_DESCR
sdb
;
T_DP_START_SEQ_REQ
ssrp
;
T_DP_START_SEQ_REQ
ssrp
;
...
@@ -875,13 +914,14 @@ static pwr_tStatus start_download_seq(
...
@@ -875,13 +914,14 @@ static pwr_tStatus start_download_seq(
ssrp
.
area_code
=
op
->
SlaveAddress
;
ssrp
.
area_code
=
op
->
SlaveAddress
;
ssrp
.
timeout
=
timeout
;
ssrp
.
timeout
=
timeout
;
profi_snd_req_res
(
hDevice
,
&
sdb
,
&
ssrp
,
PB_FALSE
);
profi_snd_req_res
(
&
sdb
,
&
ssrp
,
PB_FALSE
);
try_profi_rcv_con_ind
(
try_profi_rcv_con_ind
(
&
con_ind_sdb
,
con_ind_buffer
,
&
con_ind_buffer_len
,
hDevice
,
&
con_ind_sdb
,
con_ind_buffer
,
&
con_ind_buffer_len
,
&
result
);
&
result
);
if
((
con_ind_sdb
.
service
==
DP_START_SEQ_LOC
)
if
((
con_ind_sdb
.
service
==
DP_START_SEQ_LOC
)
&&
&&
(
con_ind_sdb
.
primitive
==
CON
)
&&
(
con_ind_sdb
.
result
==
POS
))
{
(
con_ind_sdb
.
primitive
==
CON
)
&&
(
con_ind_sdb
.
result
==
POS
))
{
op
->
Status
=
PB__NOCONN
;
op
->
Status
=
PB__NOCONN
;
return
(
PB_TRUE
);
return
(
PB_TRUE
);
}
}
...
@@ -894,8 +934,7 @@ static pwr_tStatus start_download_seq(
...
@@ -894,8 +934,7 @@ static pwr_tStatus start_download_seq(
/*----------------------------------------------------------------------------*\
/*----------------------------------------------------------------------------*\
Starts download sequence of prm data to one slave
Starts download sequence of prm data to one slave
\*----------------------------------------------------------------------------*/
\*----------------------------------------------------------------------------*/
static
pwr_tStatus
end_download_seq
(
static
pwr_tStatus
end_download_seq
(
pwr_sClass_Pb_DP_Slave
*
op
)
T_PROFI_DEVICE_HANDLE
*
hDevice
,
pwr_sClass_Pb_DP_Slave
*
op
)
{
{
T_PROFI_SERVICE_DESCR
sdb
;
T_PROFI_SERVICE_DESCR
sdb
;
T_DP_END_SEQ_REQ
esrp
;
T_DP_END_SEQ_REQ
esrp
;
...
@@ -915,13 +954,14 @@ static pwr_tStatus end_download_seq(
...
@@ -915,13 +954,14 @@ static pwr_tStatus end_download_seq(
esrp
.
rem_add
=
0
;
esrp
.
rem_add
=
0
;
esrp
.
dummy
=
0
;
esrp
.
dummy
=
0
;
profi_snd_req_res
(
hDevice
,
&
sdb
,
&
esrp
,
PB_FALSE
);
profi_snd_req_res
(
&
sdb
,
&
esrp
,
PB_FALSE
);
try_profi_rcv_con_ind
(
try_profi_rcv_con_ind
(
&
con_ind_sdb
,
con_ind_buffer
,
&
con_ind_buffer_len
,
hDevice
,
&
con_ind_sdb
,
con_ind_buffer
,
&
con_ind_buffer_len
,
&
result
);
&
result
);
if
((
con_ind_sdb
.
service
==
DP_END_SEQ_LOC
)
&&
(
con_ind_sdb
.
primitive
==
CON
)
if
((
con_ind_sdb
.
service
==
DP_END_SEQ_LOC
)
&&
&&
(
con_ind_sdb
.
result
==
POS
))
{
(
con_ind_sdb
.
primitive
==
CON
)
&&
(
con_ind_sdb
.
result
==
POS
))
{
op
->
Status
=
PB__NOCONN
;
op
->
Status
=
PB__NOCONN
;
return
(
PB_TRUE
);
return
(
PB_TRUE
);
}
}
...
@@ -934,12 +974,12 @@ static pwr_tStatus end_download_seq(
...
@@ -934,12 +974,12 @@ static pwr_tStatus end_download_seq(
/*----------------------------------------------------------------------------*\
/*----------------------------------------------------------------------------*\
Initializes one DP slave in the master card
Initializes one DP slave in the master card
\*----------------------------------------------------------------------------*/
\*----------------------------------------------------------------------------*/
static
pwr_tStatus
dp_download_slave
(
static
pwr_tStatus
dp_download_slave
(
pwr_sClass_Pb_DP_Slave
*
op
)
T_PROFI_DEVICE_HANDLE
*
hDevice
,
pwr_sClass_Pb_DP_Slave
*
op
)
{
{
int
i
;
int
i
;
T_PROFI_SERVICE_DESCR
sdb
;
T_PROFI_SERVICE_DESCR
sdb
;
struct
{
struct
{
T_DP_DOWNLOAD_REQ
drp
;
T_DP_DOWNLOAD_REQ
drp
;
unsigned
char
param
[
512
];
unsigned
char
param
[
512
];
}
slave_data
;
}
slave_data
;
...
@@ -961,8 +1001,9 @@ static pwr_tStatus dp_download_slave(
...
@@ -961,8 +1001,9 @@ static pwr_tStatus dp_download_slave(
op
->
Status
=
PB__NOTINIT
;
op
->
Status
=
PB__NOTINIT
;
download_data_size
=
sizeof
(
prm_head
)
+
sizeof
(
prm_data
)
+
op
->
PrmUserDataLen
download_data_size
=
sizeof
(
prm_head
)
+
sizeof
(
prm_data
)
+
+
op
->
ConfigDataLen
+
sizeof
(
aat_data
)
+
sizeof
(
user_data
);
op
->
PrmUserDataLen
+
op
->
ConfigDataLen
+
sizeof
(
aat_data
)
+
sizeof
(
user_data
);
data_len
=
download_data_size
;
data_len
=
download_data_size
;
...
@@ -1020,42 +1061,53 @@ static pwr_tStatus dp_download_slave(
...
@@ -1020,42 +1061,53 @@ static pwr_tStatus dp_download_slave(
send_buf
=
(
char
*
)
slave_data
.
param
;
send_buf
=
(
char
*
)
slave_data
.
param
;
if
(
data_len
>
DP_MAX_DOWNLOAD_DATA_LEN
)
{
if
(
data_len
>
DP_MAX_DOWNLOAD_DATA_LEN
)
if
(
!
start_download_seq
(
hDevice
,
op
))
{
{
if
(
!
start_download_seq
(
op
))
{
op
->
Status
=
PB__INITFAIL
;
op
->
Status
=
PB__INITFAIL
;
return
(
PB_FALSE
);
return
(
PB_FALSE
);
}
}
}
}
while
(
download_data_size
>
0
)
{
while
(
download_data_size
>
0
)
{
slave_data
.
drp
.
data_len
=
MIN
(
download_data_size
,
DP_MAX_DOWNLOAD_DATA_LEN
);
slave_data
.
drp
.
data_len
=
MIN
(
download_data_size
,
DP_MAX_DOWNLOAD_DATA_LEN
);
profi_snd_req_res
(
hDevice
,
&
sdb
,
&
slave_data
,
PB_FALSE
);
profi_snd_req_res
(
&
sdb
,
&
slave_data
,
PB_FALSE
);
try_profi_rcv_con_ind
(
try_profi_rcv_con_ind
(
&
con_ind_sdb
,
con_ind_buffer
,
&
con_ind_buffer_len
,
hDevice
,
&
con_ind_sdb
,
con_ind_buffer
,
&
con_ind_buffer_len
,
&
result
);
&
result
);
if
(
con_ind_sdb
.
service
==
DP_DOWNLOAD_LOC
)
{
if
(
con_ind_sdb
.
service
==
DP_DOWNLOAD_LOC
)
if
((
con_ind_sdb
.
primitive
==
CON
)
&&
(
con_ind_sdb
.
result
==
POS
))
{
{
if
((
con_ind_sdb
.
primitive
==
CON
)
&&
(
con_ind_sdb
.
result
==
POS
))
{
op
->
Status
=
PB__NOCONN
;
op
->
Status
=
PB__NOCONN
;
}
else
{
}
else
{
op
->
Status
=
PB__INITFAIL
;
op
->
Status
=
PB__INITFAIL
;
failure
=
TRUE
;
failure
=
TRUE
;
break
;
break
;
}
}
}
}
if
(
download_data_size
>
DP_MAX_DOWNLOAD_DATA_LEN
)
{
if
(
download_data_size
>
DP_MAX_DOWNLOAD_DATA_LEN
)
{
download_data_size
-=
DP_MAX_DOWNLOAD_DATA_LEN
;
download_data_size
-=
DP_MAX_DOWNLOAD_DATA_LEN
;
slave_data
.
drp
.
add_offset
+=
DP_MAX_DOWNLOAD_DATA_LEN
;
slave_data
.
drp
.
add_offset
+=
DP_MAX_DOWNLOAD_DATA_LEN
;
send_buf
+=
DP_MAX_DOWNLOAD_DATA_LEN
;
send_buf
+=
DP_MAX_DOWNLOAD_DATA_LEN
;
memcpy
(
slave_data
.
param
,
send_buf
,
memcpy
(
slave_data
.
param
,
send_buf
,
MIN
(
download_data_size
,
DP_MAX_DOWNLOAD_DATA_LEN
));
MIN
(
download_data_size
,
DP_MAX_DOWNLOAD_DATA_LEN
));
}
else
}
else
download_data_size
=
0
;
download_data_size
=
0
;
}
}
if
(
data_len
>
DP_MAX_DOWNLOAD_DATA_LEN
)
{
if
(
data_len
>
DP_MAX_DOWNLOAD_DATA_LEN
)
if
(
!
end_download_seq
(
hDevice
,
op
))
{
{
if
(
!
end_download_seq
(
op
))
{
op
->
Status
=
PB__INITFAIL
;
op
->
Status
=
PB__INITFAIL
;
return
(
PB_FALSE
);
return
(
PB_FALSE
);
}
}
...
@@ -1070,8 +1122,7 @@ static pwr_tStatus dp_download_slave(
...
@@ -1070,8 +1122,7 @@ static pwr_tStatus dp_download_slave(
/*----------------------------------------------------------------------------*\
/*----------------------------------------------------------------------------*\
Calculate offsets of inputs and outputs for a slave
Calculate offsets of inputs and outputs for a slave
\*----------------------------------------------------------------------------*/
\*----------------------------------------------------------------------------*/
static
pwr_tStatus
dp_io_offsets
(
static
pwr_tStatus
dp_io_offsets
(
pwr_sClass_Pb_DP_Slave
*
op
)
T_PROFI_DEVICE_HANDLE
*
hDevice
,
pwr_sClass_Pb_DP_Slave
*
op
)
{
{
T_PROFI_SERVICE_DESCR
sdb
;
T_PROFI_SERVICE_DESCR
sdb
;
T_DP_GET_SLAVE_PARAM_REQ
get_slave_param_req
;
T_DP_GET_SLAVE_PARAM_REQ
get_slave_param_req
;
...
@@ -1093,20 +1144,21 @@ static pwr_tStatus dp_io_offsets(
...
@@ -1093,20 +1144,21 @@ static pwr_tStatus dp_io_offsets(
get_slave_param_req
.
identifier
=
DP_SLAVE_PARAM_SLAVE_INFO
;
get_slave_param_req
.
identifier
=
DP_SLAVE_PARAM_SLAVE_INFO
;
get_slave_param_req
.
rem_add
=
op
->
SlaveAddress
;
get_slave_param_req
.
rem_add
=
op
->
SlaveAddress
;
result
=
profi_snd_req_res
(
hDevice
,
&
sdb
,
&
get_slave_param_req
,
PB_FALSE
);
result
=
profi_snd_req_res
(
&
sdb
,
&
get_slave_param_req
,
PB_FALSE
);
if
(
result
!=
E_OK
)
if
(
result
!=
E_OK
)
return
(
result
);
return
(
result
);
try_profi_rcv_con_ind
(
try_profi_rcv_con_ind
(
&
con_ind_sdb
,
con_ind_buffer
,
&
con_ind_buffer_len
,
hDevice
,
&
con_ind_sdb
,
con_ind_buffer
,
&
con_ind_buffer_len
,
&
result
);
&
result
);
get_slave_param_con_ptr
=
(
T_DP_GET_SLAVE_PARAM_CON
FAR
*
)
con_ind_buffer
;
get_slave_param_con_ptr
=
(
T_DP_GET_SLAVE_PARAM_CON
FAR
*
)
con_ind_buffer
;
if
((
con_ind_sdb
.
service
==
DP_GET_SLAVE_PARAM
)
if
((
con_ind_sdb
.
service
==
DP_GET_SLAVE_PARAM
)
&&
&&
(
con_ind_sdb
.
primitive
==
CON
)
&&
(
con_ind_sdb
.
result
==
POS
))
{
(
con_ind_sdb
.
primitive
==
CON
)
&&
(
con_ind_sdb
.
result
==
POS
))
slave_info_ptr
{
=
(
T_DP_SLAVE_PARAM_SLAVE_INFO
FAR
*
)(
get_slave_param_con_ptr
+
1
);
slave_info_ptr
=
(
T_DP_SLAVE_PARAM_SLAVE_INFO
FAR
*
)(
get_slave_param_con_ptr
+
1
);
op
->
BytesOfInput
=
slave_info_ptr
->
number_inputs
;
op
->
BytesOfInput
=
slave_info_ptr
->
number_inputs
;
op
->
BytesOfOutput
=
slave_info_ptr
->
number_outputs
;
op
->
BytesOfOutput
=
slave_info_ptr
->
number_outputs
;
...
@@ -1127,7 +1179,6 @@ void* handle_events(void* ptr)
...
@@ -1127,7 +1179,6 @@ void* handle_events(void* ptr)
io_sAgentLocal
*
local
;
io_sAgentLocal
*
local
;
io_sAgent
*
ap
;
io_sAgent
*
ap
;
short
sts
;
short
sts
;
T_PROFI_DEVICE_HANDLE
*
hDevice
;
pwr_sClass_Pb_Profiboard
*
op
;
pwr_sClass_Pb_Profiboard
*
op
;
char
s
[
128
];
char
s
[
128
];
...
@@ -1135,13 +1186,12 @@ void* handle_events(void* ptr)
...
@@ -1135,13 +1186,12 @@ void* handle_events(void* ptr)
USIGN16
con_ind_buffer_len
=
256
;
USIGN16
con_ind_buffer_len
=
256
;
T_PROFI_SERVICE_DESCR
con_ind_sdb
;
T_PROFI_SERVICE_DESCR
con_ind_sdb
;
T_DP_GET_SLAVE_DIAG_CON
*
get_slave_diag_con_ptr
;
T_DP_GET_SLAVE_DIAG_CON
*
get_slave_diag_con_ptr
;
struct
timespec
rqtp
=
{
0
,
10000000
};
// 10 ms
struct
timespec
rqtp
=
{
0
,
10000000
};
// 10 ms
args
=
(
agent_args
*
)
ptr
;
args
=
(
agent_args
*
)
ptr
;
local
=
(
io_sAgentLocal
*
)
args
->
local
;
local
=
(
io_sAgentLocal
*
)
args
->
local
;
ap
=
args
->
ap
;
ap
=
args
->
ap
;
hDevice
=
(
T_PROFI_DEVICE_HANDLE
*
)
ap
->
Local
;
op
=
(
pwr_sClass_Pb_Profiboard
*
)
ap
->
op
;
op
=
(
pwr_sClass_Pb_Profiboard
*
)
ap
->
op
;
/* If everything is fine we should be in state OPERATE
/* If everything is fine we should be in state OPERATE
...
@@ -1149,39 +1199,53 @@ void* handle_events(void* ptr)
...
@@ -1149,39 +1199,53 @@ void* handle_events(void* ptr)
if there are any hardware faults. In that case, make a reset and a new
if there are any hardware faults. In that case, make a reset and a new
init. */
init. */
while
(
1
)
{
while
(
1
)
{
if
(
op
->
DisableBus
)
if
(
op
->
DisableBus
)
exit
(
0
);
exit
(
0
);
pthread_mutex_lock
(
&
local
->
mutex
);
pthread_mutex_lock
(
&
local
->
mutex
);
con_ind_buffer_len
=
256
;
con_ind_buffer_len
=
256
;
sts
=
profi_rcv_con_ind
(
sts
=
profi_rcv_con_ind
(
&
con_ind_sdb
,
con_ind_buffer
,
&
con_ind_buffer_len
);
hDevice
,
&
con_ind_sdb
,
con_ind_buffer
,
&
con_ind_buffer_len
);
if
(
sts
==
CON_IND_RECEIVED
)
if
(
sts
==
CON_IND_RECEIVED
)
{
{
switch
(
con_ind_sdb
.
layer
)
{
switch
(
con_ind_sdb
.
layer
)
case
DP_USR
:
{
{
if
(
con_ind_sdb
.
primitive
==
CON
)
{
case
DP_USR
:
if
(
con_ind_sdb
.
result
==
POS
)
{
{
switch
(
con_ind_sdb
.
service
)
{
if
(
con_ind_sdb
.
primitive
==
CON
)
{
if
(
con_ind_sdb
.
result
==
POS
)
{
switch
(
con_ind_sdb
.
service
)
{
/*--------------------------------------------------------------*/
/*--------------------------------------------------------------*/
case
DP_ACT_PARAM_LOC
:
{
case
DP_ACT_PARAM_LOC
:
if
(
op
->
Status
==
PB__NOTINIT
)
{
{
if
(
op
->
Status
==
PB__NOTINIT
)
{
op
->
Status
=
PB__STOPPED
;
op
->
Status
=
PB__STOPPED
;
errh_Info
(
"Profibus DP Master %s to state STOPPED"
,
ap
->
Name
);
errh_Info
(
"Profibus DP Master %s to state STOPPED"
,
ap
->
Name
);
dp_act_param_loc
(
hDevice
,
DP_OP_MODE_CLEAR
);
dp_act_param_loc
(
DP_OP_MODE_CLEAR
);
}
else
if
(
op
->
Status
==
PB__STOPPED
)
{
}
else
if
(
op
->
Status
==
PB__STOPPED
)
{
op
->
Status
=
PB__CLEARED
;
op
->
Status
=
PB__CLEARED
;
errh_Info
(
"Profibus DP Master %s to state CLEARED"
,
ap
->
Name
);
errh_Info
(
"Profibus DP Master %s to state CLEARED"
,
ap
->
Name
);
dp_act_param_loc
(
hDevice
,
DP_OP_MODE_OPERATE
);
dp_act_param_loc
(
DP_OP_MODE_OPERATE
);
}
else
if
(
op
->
Status
==
PB__CLEARED
)
{
}
else
if
(
op
->
Status
==
PB__CLEARED
)
{
errh_Info
(
"Profibus DP Master %s to state OPERATE"
,
ap
->
Name
);
errh_Info
(
"Profibus DP Master %s to state OPERATE"
,
ap
->
Name
);
op
->
Status
=
PB__NORMAL
;
op
->
Status
=
PB__NORMAL
;
if
(
!
local
->
slave_diag_requested
&&
local
->
parallel_service
)
{
if
(
!
local
->
slave_diag_requested
&&
local
->
parallel_service
)
if
(
dp_get_slave_diag
(
hDevice
))
{
{
if
(
dp_get_slave_diag
())
{
local
->
slave_diag_requested
=
op
->
Diag
[
3
]
=
PB_TRUE
;
local
->
slave_diag_requested
=
op
->
Diag
[
3
]
=
PB_TRUE
;
local
->
parallel_service
=
PB_FALSE
;
local
->
parallel_service
=
PB_FALSE
;
}
}
...
@@ -1193,61 +1257,74 @@ void* handle_events(void* ptr)
...
@@ -1193,61 +1257,74 @@ void* handle_events(void* ptr)
/*--------------------------------------------------------------*/
/*--------------------------------------------------------------*/
case
DP_GET_SLAVE_DIAG
:
{
case
DP_GET_SLAVE_DIAG
:
get_slave_diag_con_ptr
{
=
(
T_DP_GET_SLAVE_DIAG_CON
FAR
*
)
con_ind_buffer
;
get_slave_diag_con_ptr
=
(
T_DP_GET_SLAVE_DIAG_CON
FAR
*
)
con_ind_buffer
;
dp_get_slave_diag_con
(
dp_get_slave_diag_con
(
get_slave_diag_con_ptr
,
ap
->
racklist
,
get_slave_diag_con_ptr
,
ap
->
racklist
,
op
->
Diag
[
1
]);
op
->
Diag
[
1
]);
op
->
Diag
[
2
]
++
;
op
->
Diag
[
2
]
++
;
local
->
slave_diag_requested
=
op
->
Diag
[
3
]
=
PB_FALSE
;
local
->
slave_diag_requested
=
op
->
Diag
[
3
]
=
PB_FALSE
;
if
(
get_slave_diag_con_ptr
->
diag_entries
<
0
)
{
if
(
get_slave_diag_con_ptr
->
diag_entries
<
0
)
{
errh_Warning
(
"Profibus - diagnostic circular buffer owerflow."
);
errh_Warning
(
"Profibus - diagnostic circular buffer owerflow."
);
}
}
if
(
get_slave_diag_con_ptr
->
diag_entries
)
{
if
(
get_slave_diag_con_ptr
->
diag_entries
)
{
local
->
slave_diag_requested
=
op
->
Diag
[
3
]
=
PB_TRUE
;
local
->
slave_diag_requested
=
op
->
Diag
[
3
]
=
PB_TRUE
;
dp_get_slave_diag
(
hDevice
);
dp_get_slave_diag
();
}
}
break
;
break
;
}
/* case DP_GET_SLAVE_DIAG */
}
/* case DP_GET_SLAVE_DIAG */
/*--------------------------------------------------------------*/
/*--------------------------------------------------------------*/
default:
{
default:
{
break
;
break
;
}
/* deafult service */
}
/* deafult service */
}
/* switch */
}
/* switch */
}
/* if POS */
}
/* if POS */
else
{
else
{
op
->
Status
=
PB__NOTINIT
;
op
->
Status
=
PB__NOTINIT
;
errh_Error
(
"Profibus DP Master %s - %x neg con rec"
,
ap
->
Name
,
errh_Error
(
"Profibus DP Master %s - %x neg con rec"
,
ap
->
Name
,
*
((
unsigned
short
*
)
con_ind_buffer
));
*
((
unsigned
short
*
)
con_ind_buffer
));
}
/* else POS */
}
/* else POS */
}
/* if CON */
}
/* if CON */
else
if
(
con_ind_sdb
.
primitive
==
IND
)
{
else
if
(
con_ind_sdb
.
primitive
==
IND
)
if
(
con_ind_sdb
.
result
==
POS
)
{
{
switch
(
con_ind_sdb
.
service
)
{
if
(
con_ind_sdb
.
result
==
POS
)
{
switch
(
con_ind_sdb
.
service
)
{
/*--------------------------------------------------------------*/
/*--------------------------------------------------------------*/
case
DP_ACT_PARAM_LOC
:
{
case
DP_ACT_PARAM_LOC
:
{
USIGN8
usif_state
;
USIGN8
usif_state
;
usif_state
=
((
T_DP_ACT_PARAM_IND
FAR
*
)
con_ind_buffer
)
->
activate
;
usif_state
=
((
T_DP_ACT_PARAM_IND
FAR
*
)
con_ind_buffer
)
->
activate
;
switch
(
usif_state
)
{
switch
(
usif_state
)
case
DP_OP_MODE_STOP
:
{
{
case
DP_OP_MODE_STOP
:
{
op
->
Status
=
PB__STOPPED
;
op
->
Status
=
PB__STOPPED
;
sprintf
(
s
,
"Mode changed to STOP"
);
sprintf
(
s
,
"Mode changed to STOP"
);
break
;
break
;
}
}
case
DP_OP_MODE_CLEAR
:
{
case
DP_OP_MODE_CLEAR
:
{
op
->
Status
=
PB__CLEARED
;
op
->
Status
=
PB__CLEARED
;
sprintf
(
s
,
"Mode changed to CLEAR"
);
sprintf
(
s
,
"Mode changed to CLEAR"
);
break
;
break
;
}
}
case
DP_OP_MODE_OPERATE
:
{
case
DP_OP_MODE_OPERATE
:
{
op
->
Status
=
PB__NORMAL
;
op
->
Status
=
PB__NORMAL
;
sprintf
(
s
,
"Mode changed to OPERATE"
);
sprintf
(
s
,
"Mode changed to OPERATE"
);
break
;
break
;
...
@@ -1256,14 +1333,17 @@ void* handle_events(void* ptr)
...
@@ -1256,14 +1333,17 @@ void* handle_events(void* ptr)
errh_Info
(
"Profibus DP Master %s - %s"
,
ap
->
Name
,
s
);
errh_Info
(
"Profibus DP Master %s - %s"
,
ap
->
Name
,
s
);
if
(
usif_state
==
DP_OP_MODE_STOP
)
{
if
(
usif_state
==
DP_OP_MODE_STOP
)
{
usif_state
=
DP_OP_MODE_CLEAR
;
usif_state
=
DP_OP_MODE_CLEAR
;
dp_act_param_loc
(
hDevice
,
DP_OP_MODE_CLEAR
);
dp_act_param_loc
(
DP_OP_MODE_CLEAR
);
}
else
if
(
usif_state
==
DP_OP_MODE_CLEAR
)
{
}
else
if
(
usif_state
==
DP_OP_MODE_CLEAR
)
{
usif_state
=
DP_OP_MODE_OPERATE
;
usif_state
=
DP_OP_MODE_OPERATE
;
dp_act_param_loc
(
hDevice
,
DP_OP_MODE_OPERATE
);
dp_act_param_loc
(
DP_OP_MODE_OPERATE
);
}
}
break
;
break
;
...
@@ -1271,28 +1351,37 @@ void* handle_events(void* ptr)
...
@@ -1271,28 +1351,37 @@ void* handle_events(void* ptr)
/*--------------------------------------------------------------*/
/*--------------------------------------------------------------*/
case
DP_GET_SLAVE_DIAG
:
{
case
DP_GET_SLAVE_DIAG
:
get_slave_diag_con_ptr
{
=
(
T_DP_GET_SLAVE_DIAG_CON
FAR
*
)
con_ind_buffer
;
get_slave_diag_con_ptr
=
(
T_DP_GET_SLAVE_DIAG_CON
FAR
*
)
con_ind_buffer
;
dp_get_slave_diag_con
(
dp_get_slave_diag_con
(
get_slave_diag_con_ptr
,
ap
->
racklist
,
get_slave_diag_con_ptr
,
ap
->
racklist
,
op
->
Diag
[
1
]);
op
->
Diag
[
1
]);
op
->
Diag
[
0
]
++
;
op
->
Diag
[
0
]
++
;
if
(
get_slave_diag_con_ptr
->
diag_entries
<
0
)
{
if
(
get_slave_diag_con_ptr
->
diag_entries
<
0
)
{
errh_Warning
(
"Profibus - diagnostic circular buffer owerflow."
);
errh_Warning
(
"Profibus - diagnostic circular buffer owerflow."
);
}
}
if
((
get_slave_diag_con_ptr
->
diag_entries
)
if
((
get_slave_diag_con_ptr
->
diag_entries
)
&&
&&
(
!
local
->
slave_diag_requested
))
{
(
!
local
->
slave_diag_requested
))
if
(
op
->
Status
==
PB__NORMAL
)
{
{
if
(
dp_get_slave_diag
(
hDevice
))
{
if
(
op
->
Status
==
PB__NORMAL
)
{
if
(
dp_get_slave_diag
())
{
local
->
slave_diag_requested
=
op
->
Diag
[
3
]
=
PB_TRUE
;
local
->
slave_diag_requested
=
op
->
Diag
[
3
]
=
PB_TRUE
;
}
else
{
}
else
{
errh_Warning
(
"Profibus - Request for diag failed."
);
errh_Warning
(
"Profibus - Request for diag failed."
);
}
}
}
else
{
}
else
{
local
->
parallel_service
=
PB_TRUE
;
local
->
parallel_service
=
PB_TRUE
;
}
}
}
}
...
@@ -1302,12 +1391,14 @@ void* handle_events(void* ptr)
...
@@ -1302,12 +1391,14 @@ void* handle_events(void* ptr)
/*--------------------------------------------------------------*/
/*--------------------------------------------------------------*/
default:
{
default:
{
break
;
break
;
}
/* deafult service */
}
/* deafult service */
}
/* switch */
}
/* switch */
}
/* if POS */
}
/* if POS */
else
{
else
{
op
->
Status
=
PB__NOTINIT
;
op
->
Status
=
PB__NOTINIT
;
errh_Error
(
"Profibus DP Master %s - %x neg ind rec"
,
ap
->
Name
,
errh_Error
(
"Profibus DP Master %s - %x neg ind rec"
,
ap
->
Name
,
*
((
unsigned
short
*
)
con_ind_buffer
));
*
((
unsigned
short
*
)
con_ind_buffer
));
...
@@ -1316,17 +1407,22 @@ void* handle_events(void* ptr)
...
@@ -1316,17 +1407,22 @@ void* handle_events(void* ptr)
break
;
break
;
}
}
case
FMB_USR
:
{
case
FMB_USR
:
switch
(
con_ind_sdb
.
service
)
{
{
switch
(
con_ind_sdb
.
service
)
{
/*--------------------------------------------------------------*/
/*--------------------------------------------------------------*/
/*--------------------------------------------------------------*/
/*--------------------------------------------------------------*/
case
FMB_SET_CONFIGURATION
:
case
FMB_SET_CONFIGURATION
:
case
FMB_EXIT
:
case
FMB_EXIT
:
case
FMB_RESET
:
{
case
FMB_RESET
:
{
break
;
break
;
}
}
case
FMB_FM2_EVENT
:
{
case
FMB_FM2_EVENT
:
switch
(((
T_FMB_FM2_EVENT_IND
FAR
*
)
con_ind_buffer
)
->
reason
)
{
{
switch
(((
T_FMB_FM2_EVENT_IND
FAR
*
)
con_ind_buffer
)
->
reason
)
{
case
FM2_FAULT_ADDRESS
:
case
FM2_FAULT_ADDRESS
:
sprintf
(
s
,
"Duplicate address recognized"
);
sprintf
(
s
,
"Duplicate address recognized"
);
break
;
break
;
...
@@ -1356,7 +1452,8 @@ void* handle_events(void* ptr)
...
@@ -1356,7 +1452,8 @@ void* handle_events(void* ptr)
break
;
break
;
}
/* case FMB_FM2_EVENT */
}
/* case FMB_FM2_EVENT */
default:
{
default:
{
printf
(
"
\n
not supported FMB service received
\n
"
);
printf
(
"
\n
not supported FMB service received
\n
"
);
printf
(
"service: %d primitive: %d
\n
"
,
con_ind_sdb
.
service
,
printf
(
"service: %d primitive: %d
\n
"
,
con_ind_sdb
.
service
,
con_ind_sdb
.
primitive
);
con_ind_sdb
.
primitive
);
...
@@ -1365,8 +1462,10 @@ void* handle_events(void* ptr)
...
@@ -1365,8 +1462,10 @@ void* handle_events(void* ptr)
}
/* switch */
}
/* switch */
break
;
break
;
}
}
case
FDLIF_USR
:
{
case
FDLIF_USR
:
switch
(
con_ind_sdb
.
service
)
{
{
switch
(
con_ind_sdb
.
service
)
{
case
FDLIF_EVENT
:
case
FDLIF_EVENT
:
case
FDLIF_SET_BUSPARAMETER
:
case
FDLIF_SET_BUSPARAMETER
:
case
FDLIF_READ_BUSPARAMETER
:
case
FDLIF_READ_BUSPARAMETER
:
...
@@ -1380,30 +1479,42 @@ void* handle_events(void* ptr)
...
@@ -1380,30 +1479,42 @@ void* handle_events(void* ptr)
break
;
break
;
case
FDLIF_SDN
:
case
FDLIF_SDN
:
if
(
con_ind_sdb
.
primitive
==
IND
)
{
if
(
con_ind_sdb
.
primitive
==
IND
)
{
fdlif_sda_sdn_srd_ind
(
con_ind_sdb
.
invoke_id
,
fdlif_sda_sdn_srd_ind
(
con_ind_sdb
.
invoke_id
,
(
T_FDLIF_SDN_SDA_SRD_REQ
FAR
*
)
con_ind_buffer
,
ap
->
racklist
);
(
T_FDLIF_SDN_SDA_SRD_REQ
FAR
*
)
con_ind_buffer
,
}
else
{
ap
->
racklist
);
}
else
{
fdlif_sda_sdn_con
(
con_ind_sdb
.
invoke_id
,
con_ind_sdb
.
result
,
fdlif_sda_sdn_con
(
con_ind_sdb
.
invoke_id
,
con_ind_sdb
.
result
,
(
T_FDLIF_ERROR
*
)
con_ind_buffer
,
ap
->
racklist
);
(
T_FDLIF_ERROR
*
)
con_ind_buffer
,
ap
->
racklist
);
}
}
break
;
break
;
case
FDLIF_SDA
:
case
FDLIF_SDA
:
if
(
con_ind_sdb
.
primitive
==
IND
)
{
if
(
con_ind_sdb
.
primitive
==
IND
)
{
fdlif_sda_sdn_srd_ind
(
con_ind_sdb
.
invoke_id
,
fdlif_sda_sdn_srd_ind
(
con_ind_sdb
.
invoke_id
,
(
T_FDLIF_SDN_SDA_SRD_REQ
FAR
*
)
con_ind_buffer
,
ap
->
racklist
);
(
T_FDLIF_SDN_SDA_SRD_REQ
FAR
*
)
con_ind_buffer
,
}
else
{
ap
->
racklist
);
}
else
{
fdlif_sda_sdn_con
(
con_ind_sdb
.
invoke_id
,
con_ind_sdb
.
result
,
fdlif_sda_sdn_con
(
con_ind_sdb
.
invoke_id
,
con_ind_sdb
.
result
,
(
T_FDLIF_ERROR
*
)
con_ind_buffer
,
ap
->
racklist
);
(
T_FDLIF_ERROR
*
)
con_ind_buffer
,
ap
->
racklist
);
}
}
break
;
break
;
case
FDLIF_SRD
:
case
FDLIF_SRD
:
if
(
con_ind_sdb
.
primitive
==
IND
)
{
if
(
con_ind_sdb
.
primitive
==
IND
)
{
fdlif_sda_sdn_srd_ind
(
con_ind_sdb
.
invoke_id
,
fdlif_sda_sdn_srd_ind
(
con_ind_sdb
.
invoke_id
,
(
T_FDLIF_SDN_SDA_SRD_REQ
FAR
*
)
con_ind_buffer
,
ap
->
racklist
);
(
T_FDLIF_SDN_SDA_SRD_REQ
FAR
*
)
con_ind_buffer
,
}
else
{
ap
->
racklist
);
}
else
{
fdlif_srd_con
(
con_ind_sdb
.
result
,
con_ind_sdb
.
invoke_id
,
fdlif_srd_con
(
con_ind_sdb
.
result
,
con_ind_sdb
.
invoke_id
,
(
T_FDLIF_SRD_CNF
*
)
con_ind_buffer
,
ap
->
racklist
);
(
T_FDLIF_SRD_CNF
*
)
con_ind_buffer
,
ap
->
racklist
);
}
}
...
@@ -1423,11 +1534,15 @@ void* handle_events(void* ptr)
...
@@ -1423,11 +1534,15 @@ void* handle_events(void* ptr)
con_ind_sdb
.
service
,
con_ind_sdb
.
primitive
);
con_ind_sdb
.
service
,
con_ind_sdb
.
primitive
);
break
;
break
;
}
}
}
}
else
if
(
sts
!=
NO_CON_IND_RECEIVED
)
{
else
if
(
sts
!=
NO_CON_IND_RECEIVED
)
{
op
->
Status
=
PB__NOTINIT
;
op
->
Status
=
PB__NOTINIT
;
}
else
{
}
if
(
local
->
slave_diag_requested
)
{
else
{
if
(
local
->
slave_diag_requested
)
{
// errh_Info( "Profibus - Diag re-request");
// errh_Info( "Profibus - Diag re-request");
// dp_get_slave_diag(hDevice);
// dp_get_slave_diag(hDevice);
}
}
...
@@ -1445,7 +1560,6 @@ static pwr_tStatus IoAgentInit(io_tCtx ctx, io_sAgent* ap)
...
@@ -1445,7 +1560,6 @@ static pwr_tStatus IoAgentInit(io_tCtx ctx, io_sAgent* ap)
pwr_sClass_Pb_Profiboard
*
op
;
pwr_sClass_Pb_Profiboard
*
op
;
pwr_tUInt16
sts
;
pwr_tUInt16
sts
;
pwr_tStatus
status
;
pwr_tStatus
status
;
T_PROFI_DEVICE_HANDLE
*
hDevice
;
io_sAgentLocal
*
local
;
io_sAgentLocal
*
local
;
pwr_tCid
cid
;
pwr_tCid
cid
;
...
@@ -1459,7 +1573,7 @@ static pwr_tStatus IoAgentInit(io_tCtx ctx, io_sAgent* ap)
...
@@ -1459,7 +1573,7 @@ static pwr_tStatus IoAgentInit(io_tCtx ctx, io_sAgent* ap)
char
name
[
196
];
char
name
[
196
];
struct
timespec
rqtp
=
{
0
,
20000000
};
// 20 ms
struct
timespec
rqtp
=
{
0
,
20000000
};
// 20 ms
int
retry
;
int
retry
;
...
@@ -1467,13 +1581,12 @@ static pwr_tStatus IoAgentInit(io_tCtx ctx, io_sAgent* ap)
...
@@ -1467,13 +1581,12 @@ static pwr_tStatus IoAgentInit(io_tCtx ctx, io_sAgent* ap)
/* Allocate area for local data structure */
/* Allocate area for local data structure */
ap
->
Local
=
calloc
(
1
,
sizeof
(
io_sAgentLocal
));
ap
->
Local
=
calloc
(
1
,
sizeof
(
io_sAgentLocal
));
if
(
!
ap
->
Local
)
{
if
(
!
ap
->
Local
)
{
errh_Error
(
"ERROR config Profibus DP Master %s - %s"
,
ap
->
Name
,
"calloc"
);
errh_Error
(
"ERROR config Profibus DP Master %s - %s"
,
ap
->
Name
,
"calloc"
);
return
IO__ERRINIDEVICE
;
return
IO__ERRINIDEVICE
;
}
}
hDevice
=
(
T_PROFI_DEVICE_HANDLE
*
)
ap
->
Local
;
local
=
(
io_sAgentLocal
*
)
ap
->
Local
;
local
=
(
io_sAgentLocal
*
)
ap
->
Local
;
op
=
(
pwr_sClass_Pb_Profiboard
*
)
ap
->
op
;
op
=
(
pwr_sClass_Pb_Profiboard
*
)
ap
->
op
;
...
@@ -1482,58 +1595,67 @@ static pwr_tStatus IoAgentInit(io_tCtx ctx, io_sAgent* ap)
...
@@ -1482,58 +1595,67 @@ static pwr_tStatus IoAgentInit(io_tCtx ctx, io_sAgent* ap)
/* Initialize interface */
/* Initialize interface */
if
(
ctx
->
Node
->
Restarts
>
0
)
{
if
(
ctx
->
Node
->
Restarts
>
0
)
{
nanosleep
(
&
rqtp
,
NULL
);
nanosleep
(
&
rqtp
,
NULL
);
}
}
errh_Info
(
"Initializing interface for Profibus DP Master %s"
,
ap
->
Name
);
errh_Info
(
"Initializing interface for Profibus DP Master %s"
,
ap
->
Name
);
sts
=
profi_init
(
hDevice
,
(
unsigned
char
)
op
->
BusNumber
-
1
,
0
,
0
);
sts
=
profi_init
((
unsigned
char
)
op
->
BusNumber
-
1
,
0
,
0
);
if
(
sts
!=
E_OK
)
{
if
(
sts
!=
E_OK
)
{
/* Can't open driver */
/* Can't open driver */
op
->
Status
=
PB__INITFAIL
;
op
->
Status
=
PB__INITFAIL
;
errh_Error
(
errh_Error
(
"ERROR config Profibus DP Master %s - %s"
,
ap
->
Name
,
"ERROR config Profibus DP Master %s - %s"
,
ap
->
Name
,
"open device"
);
"open device"
);
ctx
->
Node
->
EmergBreakTrue
=
1
;
ctx
->
Node
->
EmergBreakTrue
=
1
;
return
IO__ERRDEVICE
;
return
IO__ERRDEVICE
;
}
}
/* If this is not the Profibus I/O process, return */
/* If this is not the Profibus I/O process, return */
if
((
op
->
Process
&
io_mProcess_Profibus
)
if
((
op
->
Process
&
io_mProcess_Profibus
)
&&
&&
(
ctx
->
Process
!=
io_mProcess_Profibus
))
{
(
ctx
->
Process
!=
io_mProcess_Profibus
))
{
op
->
Status
=
PB__NOTINIT
;
op
->
Status
=
PB__NOTINIT
;
errh_Info
(
"Init template I/O agent for Profibus DP Master %s, %d"
,
ap
->
Name
,
errh_Info
(
"Init template I/O agent for Profibus DP Master %s, %d"
,
ap
->
Name
,
ctx
->
Process
);
ctx
->
Process
);
return
IO__SUCCESS
;
return
IO__SUCCESS
;
}
}
if
(
ctx
->
Node
->
Restarts
>
0
)
{
if
(
ctx
->
Node
->
Restarts
>
0
)
errh_Info
(
{
"Warm restart - Skipping config of Profibus DP Master %s"
,
ap
->
Name
);
errh_Info
(
"Warm restart - Skipping config of Profibus DP Master %s"
,
ap
->
Name
);
op
->
Status
=
PB__NORMAL
;
op
->
Status
=
PB__NORMAL
;
// return IO__SUCCESS;
// return IO__SUCCESS;
}
}
errh_Info
(
"Config of Profibus DP Master %s"
,
ap
->
Name
);
errh_Info
(
"Config of Profibus DP Master %s"
,
ap
->
Name
);
if
(
op
->
DisableBus
!=
1
)
{
if
(
op
->
DisableBus
!=
1
)
{
ok
=
FALSE
;
ok
=
FALSE
;
if
(
ctx
->
Node
->
Restarts
==
0
)
{
if
(
ctx
->
Node
->
Restarts
==
0
)
{
retry
=
0
;
retry
=
0
;
while
(
!
ok
)
{
while
(
!
ok
)
{
op
->
Status
=
PB__NOTINIT
;
op
->
Status
=
PB__NOTINIT
;
/* Set FMB configuration */
/* Set FMB configuration */
sts
=
fmb_set_configuration
(
hDevice
,
ap
);
sts
=
fmb_set_configuration
(
ap
);
if
(
!
sts
)
{
if
(
!
sts
)
{
op
->
Status
=
PB__INITFAIL
;
op
->
Status
=
PB__INITFAIL
;
errh_Error
(
"ERROR config Profibus DP Master %s - %s"
,
ap
->
Name
,
errh_Error
(
"ERROR config Profibus DP Master %s - %s"
,
ap
->
Name
,
"fmb set configuration"
);
"fmb set configuration"
);
retry
++
;
retry
++
;
if
(
retry
<
2
)
{
if
(
retry
<
2
)
{
nanosleep
(
&
rqtp
,
NULL
);
nanosleep
(
&
rqtp
,
NULL
);
continue
;
continue
;
}
}
...
@@ -1542,9 +1664,11 @@ static pwr_tStatus IoAgentInit(io_tCtx ctx, io_sAgent* ap)
...
@@ -1542,9 +1664,11 @@ static pwr_tStatus IoAgentInit(io_tCtx ctx, io_sAgent* ap)
/* Set DP master parameters */
/* Set DP master parameters */
if
(
local
->
dp
)
{
if
(
local
->
dp
)
sts
=
dp_init_master
(
hDevice
);
{
if
(
!
sts
)
{
sts
=
dp_init_master
();
if
(
!
sts
)
{
op
->
Status
=
PB__INITFAIL
;
op
->
Status
=
PB__INITFAIL
;
errh_Error
(
"ERROR config Profibus DP Master %s - %s"
,
ap
->
Name
,
errh_Error
(
"ERROR config Profibus DP Master %s - %s"
,
ap
->
Name
,
"dp init master"
);
"dp init master"
);
...
@@ -1554,33 +1678,43 @@ static pwr_tStatus IoAgentInit(io_tCtx ctx, io_sAgent* ap)
...
@@ -1554,33 +1678,43 @@ static pwr_tStatus IoAgentInit(io_tCtx ctx, io_sAgent* ap)
/* Download DP bus parameters */
/* Download DP bus parameters */
if
(
local
->
dp
&&
!
local
->
fdl
)
{
if
(
local
->
dp
&&
!
local
->
fdl
)
sts
=
dp_download_bus
(
hDevice
,
op
);
{
if
(
!
sts
)
{
sts
=
dp_download_bus
(
op
);
if
(
!
sts
)
{
op
->
Status
=
PB__INITFAIL
;
op
->
Status
=
PB__INITFAIL
;
errh_Error
(
"ERROR config Profibus DP Master %s - %s"
,
ap
->
Name
,
errh_Error
(
"ERROR config Profibus DP Master %s - %s"
,
ap
->
Name
,
"dp download bus"
);
"dp download bus"
);
return
IO__ERRINIDEVICE
;
return
IO__ERRINIDEVICE
;
}
}
}
else
if
(
!
local
->
dp
&&
local
->
fdl
)
{
}
sts
=
fmb_set_busparameter
(
hDevice
,
op
);
else
if
(
!
local
->
dp
&&
local
->
fdl
)
if
(
!
sts
)
{
{
sts
=
fmb_set_busparameter
(
op
);
if
(
!
sts
)
{
op
->
Status
=
PB__INITFAIL
;
op
->
Status
=
PB__INITFAIL
;
errh_Error
(
"ERROR config Profibus FDL Master %s - %s"
,
ap
->
Name
,
errh_Error
(
"ERROR config Profibus FDL Master %s - %s"
,
ap
->
Name
,
"fmb set busparam"
);
"fmb set busparam"
);
return
IO__ERRINIDEVICE
;
return
IO__ERRINIDEVICE
;
}
else
}
else
op
->
Status
=
PB__NORMAL
;
op
->
Status
=
PB__NORMAL
;
}
else
{
}
sts
=
fmb_set_busparameter
(
hDevice
,
op
);
else
if
(
!
sts
)
{
{
sts
=
fmb_set_busparameter
(
op
);
if
(
!
sts
)
{
op
->
Status
=
PB__INITFAIL
;
op
->
Status
=
PB__INITFAIL
;
errh_Error
(
"ERROR config Profibus Master %s - %s"
,
ap
->
Name
,
errh_Error
(
"ERROR config Profibus Master %s - %s"
,
ap
->
Name
,
"fmb set busparam"
);
"fmb set busparam"
);
return
IO__ERRINIDEVICE
;
return
IO__ERRINIDEVICE
;
}
}
sts
=
dp_set_busparameter
(
hDevice
,
op
);
sts
=
dp_set_busparameter
(
op
);
if
(
!
sts
)
{
if
(
!
sts
)
{
op
->
Status
=
PB__INITFAIL
;
op
->
Status
=
PB__INITFAIL
;
errh_Error
(
"ERROR config Profibus DP Master %s - %s"
,
ap
->
Name
,
errh_Error
(
"ERROR config Profibus DP Master %s - %s"
,
ap
->
Name
,
"dp set busparam"
);
"dp set busparam"
);
...
@@ -1594,7 +1728,8 @@ static pwr_tStatus IoAgentInit(io_tCtx ctx, io_sAgent* ap)
...
@@ -1594,7 +1728,8 @@ static pwr_tStatus IoAgentInit(io_tCtx ctx, io_sAgent* ap)
op
->
NumberSlaves
=
0
;
op
->
NumberSlaves
=
0
;
status
=
gdh_GetChild
(
ap
->
Objid
,
&
slave_objid
);
status
=
gdh_GetChild
(
ap
->
Objid
,
&
slave_objid
);
while
(
ODD
(
status
))
{
while
(
ODD
(
status
))
{
status
=
gdh_GetObjectClass
(
slave_objid
,
&
slave_class
);
status
=
gdh_GetObjectClass
(
slave_objid
,
&
slave_class
);
cid
=
slave_class
;
cid
=
slave_class
;
...
@@ -1603,35 +1738,38 @@ static pwr_tStatus IoAgentInit(io_tCtx ctx, io_sAgent* ap)
...
@@ -1603,35 +1738,38 @@ static pwr_tStatus IoAgentInit(io_tCtx ctx, io_sAgent* ap)
;
;
status
=
gdh_ObjidToPointer
(
slave_objid
,
(
pwr_tAddress
*
)
&
sop
);
status
=
gdh_ObjidToPointer
(
slave_objid
,
(
pwr_tAddress
*
)
&
sop
);
status
=
gdh_ObjidToName
(
status
=
gdh_ObjidToName
(
slave_objid
,
(
char
*
)
&
name
,
sizeof
(
name
),
slave_objid
,
(
char
*
)
&
name
,
sizeof
(
name
),
cdh_mNName
);
cdh_mNName
);
if
(
cid
==
pwr_cClass_Pb_DP_Slave
)
{
if
(
cid
==
pwr_cClass_Pb_DP_Slave
)
{
errh_Info
(
"Download Profibus DP Slave config - %s"
,
name
);
errh_Info
(
"Download Profibus DP Slave config - %s"
,
name
);
status
=
dp_download_slave
(
hDevice
,
(
pwr_sClass_Pb_DP_Slave
*
)
sop
);
status
=
dp_download_slave
((
pwr_sClass_Pb_DP_Slave
*
)
sop
);
if
(
!
status
)
{
if
(
!
status
)
{
errh_Error
(
"ERROR Init Profibus DP slave %s"
,
name
);
errh_Error
(
"ERROR Init Profibus DP slave %s"
,
name
);
}
}
op
->
NumberSlaves
++
;
op
->
NumberSlaves
++
;
}
}
if
(
cid
==
pwr_cClass_Pb_FDL_SAP
)
{
if
(
cid
==
pwr_cClass_Pb_FDL_SAP
)
{
errh_Info
(
"Download Profibus FDL SAP config - %s"
,
name
);
errh_Info
(
"Download Profibus FDL SAP config - %s"
,
name
);
if
(
!
((
pwr_sClass_Pb_FDL_SAP
*
)
sop
)
->
Responder
)
if
(
!
((
pwr_sClass_Pb_FDL_SAP
*
)
sop
)
->
Responder
)
status
=
fdlif_sap_activate_req
(
status
=
fdlif_sap_activate_req
((
pwr_sClass_Pb_FDL_SAP
*
)
sop
);
hDevice
,
(
pwr_sClass_Pb_FDL_SAP
*
)
sop
);
else
else
status
=
fdlif_rsap_activate_req
(
status
=
fdlif_rsap_activate_req
((
pwr_sClass_Pb_FDL_SAP
*
)
sop
);
hDevice
,
(
pwr_sClass_Pb_FDL_SAP
*
)
sop
);
if
(
!
status
)
{
if
(
!
status
)
{
((
pwr_sClass_Pb_FDL_SAP
*
)
sop
)
->
Status
=
PB__INITFAIL
;
((
pwr_sClass_Pb_FDL_SAP
*
)
sop
)
->
Status
=
PB__INITFAIL
;
errh_Error
(
"ERROR Init Profibus FDL SAP %s"
,
name
);
errh_Error
(
"ERROR Init Profibus FDL SAP %s"
,
name
);
}
else
}
else
((
pwr_sClass_Pb_FDL_SAP
*
)
sop
)
->
Status
=
PB__NORMAL
;
((
pwr_sClass_Pb_FDL_SAP
*
)
sop
)
->
Status
=
PB__NORMAL
;
}
}
...
@@ -1642,7 +1780,8 @@ static pwr_tStatus IoAgentInit(io_tCtx ctx, io_sAgent* ap)
...
@@ -1642,7 +1780,8 @@ static pwr_tStatus IoAgentInit(io_tCtx ctx, io_sAgent* ap)
status
=
gdh_GetChild
(
ap
->
Objid
,
&
slave_objid
);
status
=
gdh_GetChild
(
ap
->
Objid
,
&
slave_objid
);
while
(
ODD
(
status
))
{
while
(
ODD
(
status
))
{
status
=
gdh_GetObjectClass
(
slave_objid
,
&
slave_class
);
status
=
gdh_GetObjectClass
(
slave_objid
,
&
slave_class
);
cid
=
slave_class
;
cid
=
slave_class
;
...
@@ -1650,18 +1789,21 @@ static pwr_tStatus IoAgentInit(io_tCtx ctx, io_sAgent* ap)
...
@@ -1650,18 +1789,21 @@ static pwr_tStatus IoAgentInit(io_tCtx ctx, io_sAgent* ap)
while
(
ODD
(
gdh_GetSuperClass
(
cid
,
&
cid
,
pwr_cNOid
)))
while
(
ODD
(
gdh_GetSuperClass
(
cid
,
&
cid
,
pwr_cNOid
)))
;
;
if
(
cid
==
pwr_cClass_Pb_DP_Slave
)
{
if
(
cid
==
pwr_cClass_Pb_DP_Slave
)
{
status
=
gdh_ObjidToPointer
(
slave_objid
,
(
pwr_tAddress
*
)
&
sop
);
status
=
gdh_ObjidToPointer
(
slave_objid
,
(
pwr_tAddress
*
)
&
sop
);
status
=
dp_io_offsets
(
hDevice
,
sop
);
status
=
dp_io_offsets
(
sop
);
}
}
status
=
gdh_GetNextSibling
(
slave_objid
,
&
slave_objid
);
status
=
gdh_GetNextSibling
(
slave_objid
,
&
slave_objid
);
}
}
/* Move to STOP mode, this will fix the DPRAM layout */
/* Move to STOP mode, this will fix the DPRAM layout */
if
(
local
->
dp
)
{
if
(
local
->
dp
)
sts
=
dp_act_param_loc
(
hDevice
,
DP_OP_MODE_STOP
);
{
if
(
sts
!=
E_OK
)
{
sts
=
dp_act_param_loc
(
DP_OP_MODE_STOP
);
if
(
sts
!=
E_OK
)
{
op
->
Status
=
PB__INITFAIL
;
op
->
Status
=
PB__INITFAIL
;
errh_Error
(
"ERROR config Profibus DP Master %s - %s"
,
ap
->
Name
,
errh_Error
(
"ERROR config Profibus DP Master %s - %s"
,
ap
->
Name
,
"act param loc to STOPPED"
);
"act param loc to STOPPED"
);
...
@@ -1684,55 +1826,9 @@ static pwr_tStatus IoAgentInit(io_tCtx ctx, io_sAgent* ap)
...
@@ -1684,55 +1826,9 @@ static pwr_tStatus IoAgentInit(io_tCtx ctx, io_sAgent* ap)
return IO__ERRINIDEVICE;
return IO__ERRINIDEVICE;
}
}
} */
} */
}
else
op
->
Status
=
PB__DISABLED
;
return
IO__SUCCESS
;
}
/*----------------------------------------------------------------------------*\
Swap method for the Pb_profiboard agent
\*----------------------------------------------------------------------------*/
static
pwr_tStatus
IoAgentSwap
(
io_tCtx
ctx
,
io_sAgent
*
ap
,
io_eEvent
event
)
{
switch
(
event
)
{
case
io_eEvent_IoCommSwapInit
:
case
io_eEvent_IoCommSwap
:
{
pwr_sClass_Pb_Profiboard
*
op
;
char
DeviceName
[
64
];
io_sAgentLocal
*
local
;
if
(
ap
->
Local
==
NULL
)
{
/* Allocate area for local data structure */
ap
->
Local
=
calloc
(
1
,
sizeof
(
io_sAgentLocal
));
if
(
!
ap
->
Local
)
{
errh_Error
(
"ERROR swap init Profibus DP Master %s - %s"
,
ap
->
Name
,
"calloc"
);
return
IO__ERRINIDEVICE
;
}
local
=
(
io_sAgentLocal
*
)
ap
->
Local
;
errh_Info
(
"Swap init interface for Profibus DP Master %s"
,
ap
->
Name
);
op
=
(
pwr_sClass_Pb_Profiboard
*
)
ap
->
op
;
sprintf
(
DeviceName
,
"/dev/pbboard%u"
,
op
->
BusNumber
-
1
);
local
->
hDpsBoardDevice
=
open
(
DeviceName
,
O_RDONLY
|
O_NONBLOCK
);
if
(
local
->
hDpsBoardDevice
==
-
1
)
{
errh_Error
(
"ERROR swap init Profibus DP Master %s - %s"
,
ap
->
Name
,
"open"
);
return
IO__ERRINIDEVICE
;
}
}
break
;
}
case
io_eEvent_EmergencyBreak
:
case
io_eEvent_IoCommEmergencyBreak
:
IoAgentClose
(
ctx
,
ap
);
break
;
}
}
else
op
->
Status
=
PB__DISABLED
;
return
IO__SUCCESS
;
return
IO__SUCCESS
;
}
}
...
@@ -1743,7 +1839,6 @@ static pwr_tStatus IoAgentSwap(io_tCtx ctx, io_sAgent* ap, io_eEvent event)
...
@@ -1743,7 +1839,6 @@ static pwr_tStatus IoAgentSwap(io_tCtx ctx, io_sAgent* ap, io_eEvent event)
static
pwr_tStatus
IoAgentRead
(
io_tCtx
ctx
,
io_sAgent
*
ap
)
static
pwr_tStatus
IoAgentRead
(
io_tCtx
ctx
,
io_sAgent
*
ap
)
{
{
io_sAgentLocal
*
local
;
io_sAgentLocal
*
local
;
T_PROFI_DEVICE_HANDLE
*
hDevice
;
pwr_sClass_Pb_Profiboard
*
op
;
pwr_sClass_Pb_Profiboard
*
op
;
pwr_tUInt16
sts
;
pwr_tUInt16
sts
;
...
@@ -1752,18 +1847,19 @@ static pwr_tStatus IoAgentRead(io_tCtx ctx, io_sAgent* ap)
...
@@ -1752,18 +1847,19 @@ static pwr_tStatus IoAgentRead(io_tCtx ctx, io_sAgent* ap)
pwr_tUInt16
data_len
;
pwr_tUInt16
data_len
;
io_sRack
*
slave_list
;
io_sRack
*
slave_list
;
hDevice
=
(
T_PROFI_DEVICE_HANDLE
*
)
ap
->
Local
;
local
=
(
io_sAgentLocal
*
)
ap
->
Local
;
local
=
(
io_sAgentLocal
*
)
ap
->
Local
;
op
=
(
pwr_sClass_Pb_Profiboard
*
)
ap
->
op
;
op
=
(
pwr_sClass_Pb_Profiboard
*
)
ap
->
op
;
/* Activate supervision thread, first cycle */
/* Activate supervision thread, first cycle */
if
(
!
local
->
args
.
local
)
{
if
(
!
local
->
args
.
local
)
{
pthread_attr_t
attr
;
pthread_attr_t
attr
;
pthread_mutexattr_t
mutexattr
;
pthread_mutexattr_t
mutexattr
;
local
->
args
.
local
=
local
;
local
->
args
.
local
=
local
;
local
->
args
.
ap
=
ap
;
local
->
args
.
ap
=
ap
;
local
->
args
.
ctx
=
ctx
;
pthread_mutexattr_init
(
&
mutexattr
);
pthread_mutexattr_init
(
&
mutexattr
);
pthread_mutex_init
(
&
local
->
mutex
,
&
mutexattr
);
pthread_mutex_init
(
&
local
->
mutex
,
&
mutexattr
);
...
@@ -1777,17 +1873,20 @@ static pwr_tStatus IoAgentRead(io_tCtx ctx, io_sAgent* ap)
...
@@ -1777,17 +1873,20 @@ static pwr_tStatus IoAgentRead(io_tCtx ctx, io_sAgent* ap)
/* Iterate over the slaves. */
/* Iterate over the slaves. */
for
(
slave_list
=
ap
->
racklist
;
slave_list
!=
NULL
;
for
(
slave_list
=
ap
->
racklist
;
slave_list
!=
NULL
;
slave_list
=
slave_list
->
next
)
{
slave_list
=
slave_list
->
next
)
if
(((
io_sRackLocal
*
)
slave_list
->
Local
)
->
dp
)
{
{
if
(((
io_sRackLocal
*
)
slave_list
->
Local
)
->
dp
)
{
sp
=
(
pwr_sClass_Pb_DP_Slave
*
)
slave_list
->
op
;
sp
=
(
pwr_sClass_Pb_DP_Slave
*
)
slave_list
->
op
;
mp
=
(
pwr_sClass_Pb_Profiboard
*
)
ap
->
op
;
mp
=
(
pwr_sClass_Pb_Profiboard
*
)
ap
->
op
;
/* Read process data. */
/* Read process data. */
if
(
sp
->
Status
==
PB__NORMAL
&&
mp
->
Status
==
PB__NORMAL
if
(
sp
->
Status
==
PB__NORMAL
&&
mp
->
Status
==
PB__NORMAL
&&
&&
sp
->
DisableSlave
!=
1
&&
mp
->
DisableBus
!=
1
)
{
sp
->
DisableSlave
!=
1
&&
mp
->
DisableBus
!=
1
)
{
data_len
=
sp
->
BytesOfInput
;
data_len
=
sp
->
BytesOfInput
;
sts
=
profi_get_data
(
hDevice
,
ID_DP_SLAVE_IO_IMAGE
,
sp
->
OffsetInputs
,
sts
=
profi_get_data
(
ID_DP_SLAVE_IO_IMAGE
,
sp
->
OffsetInputs
,
&
data_len
,
&
data_len
,
&
sp
->
Inputs
);
&
sp
->
Inputs
);
}
}
}
}
}
}
...
@@ -1803,32 +1902,34 @@ static pwr_tStatus IoAgentRead(io_tCtx ctx, io_sAgent* ap)
...
@@ -1803,32 +1902,34 @@ static pwr_tStatus IoAgentRead(io_tCtx ctx, io_sAgent* ap)
static
pwr_tStatus
IoAgentWrite
(
io_tCtx
ctx
,
io_sAgent
*
ap
)
static
pwr_tStatus
IoAgentWrite
(
io_tCtx
ctx
,
io_sAgent
*
ap
)
{
{
io_sAgentLocal
*
local
;
io_sAgentLocal
*
local
;
T_PROFI_DEVICE_HANDLE
*
hDevice
;
pwr_tUInt16
sts
;
pwr_tUInt16
sts
;
pwr_sClass_Pb_Profiboard
*
mp
;
pwr_sClass_Pb_Profiboard
*
mp
;
pwr_sClass_Pb_DP_Slave
*
sp
;
pwr_sClass_Pb_DP_Slave
*
sp
;
io_sRack
*
slave_list
;
io_sRack
*
slave_list
;
hDevice
=
(
T_PROFI_DEVICE_HANDLE
*
)
ap
->
Local
;
local
=
(
io_sAgentLocal
*
)
ap
->
Local
;
local
=
(
io_sAgentLocal
*
)
ap
->
Local
;
pthread_mutex_lock
(
&
local
->
mutex
);
pthread_mutex_lock
(
&
local
->
mutex
);
/* Iterate over the slaves. */
/* Iterate over the slaves. */
for
(
slave_list
=
ap
->
racklist
;
slave_list
!=
NULL
;
for
(
slave_list
=
ap
->
racklist
;
slave_list
!=
NULL
;
slave_list
=
slave_list
->
next
)
{
slave_list
=
slave_list
->
next
)
if
(((
io_sRackLocal
*
)
slave_list
->
Local
)
->
dp
)
{
{
if
(((
io_sRackLocal
*
)
slave_list
->
Local
)
->
dp
)
{
sp
=
(
pwr_sClass_Pb_DP_Slave
*
)
slave_list
->
op
;
sp
=
(
pwr_sClass_Pb_DP_Slave
*
)
slave_list
->
op
;
mp
=
(
pwr_sClass_Pb_Profiboard
*
)
ap
->
op
;
mp
=
(
pwr_sClass_Pb_Profiboard
*
)
ap
->
op
;
// Write the whole I/O output area from local area
// Write the whole I/O output area from local area
if
((
sp
->
Status
==
PB__NORMAL
||
sp
->
Status
==
PB__NOCONN
)
if
((
sp
->
Status
==
PB__NORMAL
||
sp
->
Status
==
PB__NOCONN
)
&&
&&
mp
->
Status
==
PB__NORMAL
&&
(
sp
->
DisableSlave
!=
1
)
mp
->
Status
==
PB__NORMAL
&&
(
sp
->
DisableSlave
!=
1
)
&&
&&
(
mp
->
DisableBus
!=
1
))
{
(
mp
->
DisableBus
!=
1
))
if
(
sp
->
BytesOfOutput
>
0
)
{
{
sts
=
profi_set_data
(
hDevice
,
ID_DP_SLAVE_IO_IMAGE
,
sp
->
OffsetOutputs
,
if
(
sp
->
BytesOfOutput
>
0
)
{
sts
=
profi_set_data
(
ID_DP_SLAVE_IO_IMAGE
,
sp
->
OffsetOutputs
,
sp
->
BytesOfOutput
,
&
sp
->
Outputs
);
sp
->
BytesOfOutput
,
&
sp
->
Outputs
);
if
(
sts
!=
E_OK
)
if
(
sts
!=
E_OK
)
...
@@ -1849,7 +1950,6 @@ static pwr_tStatus IoAgentWrite(io_tCtx ctx, io_sAgent* ap)
...
@@ -1849,7 +1950,6 @@ static pwr_tStatus IoAgentWrite(io_tCtx ctx, io_sAgent* ap)
static
pwr_tStatus
IoAgentClose
(
io_tCtx
ctx
,
io_sAgent
*
ap
)
static
pwr_tStatus
IoAgentClose
(
io_tCtx
ctx
,
io_sAgent
*
ap
)
{
{
io_sAgentLocal
*
local
;
io_sAgentLocal
*
local
;
T_PROFI_DEVICE_HANDLE
*
hDevice
;
pwr_tStatus
sts
=
PB_FALSE
;
pwr_tStatus
sts
=
PB_FALSE
;
T_PROFI_SERVICE_DESCR
sdb
;
T_PROFI_SERVICE_DESCR
sdb
;
...
@@ -1867,7 +1967,6 @@ static pwr_tStatus IoAgentClose(io_tCtx ctx, io_sAgent* ap)
...
@@ -1867,7 +1967,6 @@ static pwr_tStatus IoAgentClose(io_tCtx ctx, io_sAgent* ap)
pthread_mutex_lock
(
&
local
->
mutex
);
pthread_mutex_lock
(
&
local
->
mutex
);
hDevice
=
(
T_PROFI_DEVICE_HANDLE
*
)
ap
->
Local
;
sdb
.
comm_ref
=
0
;
sdb
.
comm_ref
=
0
;
sdb
.
layer
=
DP
;
sdb
.
layer
=
DP
;
sdb
.
service
=
DP_EXIT_MASTER
;
sdb
.
service
=
DP_EXIT_MASTER
;
...
@@ -1875,35 +1974,49 @@ static pwr_tStatus IoAgentClose(io_tCtx ctx, io_sAgent* ap)
...
@@ -1875,35 +1974,49 @@ static pwr_tStatus IoAgentClose(io_tCtx ctx, io_sAgent* ap)
sdb
.
invoke_id
=
0
;
sdb
.
invoke_id
=
0
;
sdb
.
result
=
0
;
sdb
.
result
=
0
;
profi_snd_req_res
(
hDevice
,
&
sdb
,
&
sdb
,
PB_FALSE
);
profi_snd_req_res
(
&
sdb
,
&
sdb
,
PB_FALSE
);
try_profi_rcv_con_ind
(
try_profi_rcv_con_ind
(
&
con_ind_sdb
,
con_ind_buffer
,
&
con_ind_buffer_len
,
hDevice
,
&
con_ind_sdb
,
con_ind_buffer
,
&
con_ind_buffer_len
,
&
result
);
&
result
);
if
((
con_ind_sdb
.
service
==
DP_EXIT_MASTER
)
&&
(
con_ind_sdb
.
primitive
==
CON
)
if
((
con_ind_sdb
.
service
==
DP_EXIT_MASTER
)
&&
&&
(
con_ind_sdb
.
result
==
POS
))
{
(
con_ind_sdb
.
primitive
==
CON
)
&&
(
con_ind_sdb
.
result
==
POS
))
{
sts
=
PB_TRUE
;
sts
=
PB_TRUE
;
}
}
close
(
local
->
hServiceReadDevice
);
profi_end
();
close
(
local
->
hServiceWriteDevice
);
close
(
local
->
hDpDataDevice
);
close
(
local
->
hDpsInputDataDevice
);
close
(
local
->
hDpsOutputDataDevice
);
close
(
local
->
hDpsBoardDevice
);
pthread_mutex_unlock
(
&
local
->
mutex
);
pthread_mutex_unlock
(
&
local
->
mutex
);
free
((
char
*
)
local
);
free
((
char
*
)
local
);
if
(
ctx
->
Node
->
EmergBreakTrue
==
1
)
errh_Fatal
(
"Emergency break detected shutting down profibus"
);
return
sts
;
return
sts
;
}
}
static
pwr_tStatus
IoAgentSwap
(
io_tCtx
ctx
,
io_sAgent
*
ap
,
io_eEvent
event
)
{
switch
(
event
)
{
case
io_eEvent_EmergencyBreak
:
case
io_eEvent_IoCommEmergencyBreak
:
IoAgentClose
(
ctx
,
ap
);
break
;
default:
break
;
}
return
IO__SUCCESS
;
}
/*----------------------------------------------------------------------------*\
/*----------------------------------------------------------------------------*\
Every method to be exported to the workbench should be registred here.
Every method to be exported to the workbench should be registred here.
\*----------------------------------------------------------------------------*/
\*----------------------------------------------------------------------------*/
pwr_dExport
pwr_BindIoMethods
(
Pb_Profiboard
)
pwr_dExport
pwr_BindIoMethods
(
Pb_Profiboard
)
=
{
=
{
pwr_BindIoMethod
(
IoAgentInit
),
pwr_BindIoMethod
(
IoAgentRead
),
pwr_BindIoMethod
(
IoAgentInit
),
pwr_BindIoMethod
(
IoAgentRead
),
pwr_BindIoMethod
(
IoAgentWrite
),
pwr_BindIoMethod
(
IoAgentClose
),
pwr_BindIoMethod
(
IoAgentWrite
),
pwr_BindIoMethod
(
IoAgentClose
),
pwr_BindIoMethod
(
IoAgentSwap
),
pwr_NullMethod
};
pwr_BindIoMethod
(
IoAgentSwap
),
pwr_NullMethod
};
profibus/lib/rt/src/rt_io_pb_locals.h
View file @
df0831a3
...
@@ -72,20 +72,23 @@
...
@@ -72,20 +72,23 @@
/* io_sAgentLocal now lives in the respective agent modules. */
/* io_sAgentLocal now lives in the respective agent modules. */
typedef
struct
_io_sRackLocal
{
typedef
struct
_io_sRackLocal
{
unsigned
char
fdl
;
unsigned
char
fdl
;
unsigned
char
dp
;
unsigned
char
dp
;
unsigned
int
start_time
;
unsigned
int
start_time
;
unsigned
int
start_cnt
;
unsigned
int
start_cnt
;
}
io_sRackLocal
;
}
io_sRackLocal
;
typedef
struct
{
typedef
struct
{
void
*
input_area
;
void
*
input_area
;
void
*
output_area
;
void
*
output_area
;
int
scancount
[
IO_MAXCHAN
];
int
scancount
[
IO_MAXCHAN
];
}
io_sCardLocal
;
}
io_sCardLocal
;
typedef
struct
{
typedef
struct
{
unsigned
short
invoke_id
;
unsigned
short
invoke_id
;
unsigned
short
input_area_size
;
unsigned
short
input_area_size
;
unsigned
short
output_area_size
;
unsigned
short
output_area_size
;
...
@@ -95,12 +98,15 @@ typedef struct {
...
@@ -95,12 +98,15 @@ typedef struct {
unsigned
short
float_representation
;
unsigned
short
float_representation
;
}
io_sFDLCardLocal
;
}
io_sFDLCardLocal
;
typedef
struct
_agent_args
{
typedef
struct
_agent_args
{
void
*
local
;
void
*
local
;
io_sAgent
*
ap
;
io_sAgent
*
ap
;
io_tCtx
ctx
;
}
agent_args
;
}
agent_args
;
typedef
struct
{
typedef
struct
{
int
hServiceReadDevice
;
// Handle for Service device
int
hServiceReadDevice
;
// Handle for Service device
int
hServiceWriteDevice
;
// Handle for Service device
int
hServiceWriteDevice
;
// Handle for Service device
int
hDpDataDevice
;
// Handle for DP-Data device
int
hDpDataDevice
;
// Handle for DP-Data device
...
...
profibus/lib/rt/src/rt_io_pn_locals.h
View file @
df0831a3
...
@@ -39,7 +39,8 @@
...
@@ -39,7 +39,8 @@
/* rt_io_pn_locals.h -- Profinet io handling locals. */
/* rt_io_pn_locals.h -- Profinet io handling locals. */
typedef
struct
_io_sPnRackLocal
{
typedef
struct
_io_sPnRackLocal
{
unsigned
short
bytes_of_input
;
unsigned
short
bytes_of_input
;
unsigned
short
bytes_of_output
;
unsigned
short
bytes_of_output
;
unsigned
char
*
inputs
;
unsigned
char
*
inputs
;
...
@@ -49,7 +50,8 @@ typedef struct _io_sPnRackLocal {
...
@@ -49,7 +50,8 @@ typedef struct _io_sPnRackLocal {
unsigned
int
start_cnt
;
unsigned
int
start_cnt
;
}
io_sPnRackLocal
;
}
io_sPnRackLocal
;
typedef
struct
_io_sPnCardLocal
{
typedef
struct
_io_sPnCardLocal
{
unsigned
int
input_area_size
;
unsigned
int
input_area_size
;
unsigned
int
output_area_size
;
unsigned
int
output_area_size
;
unsigned
char
*
input_area
;
unsigned
char
*
input_area
;
...
...
profibus/lib/rt/src/rt_io_pnak_locals.h
View file @
df0831a3
...
@@ -45,7 +45,8 @@
...
@@ -45,7 +45,8 @@
/* rt_io_pnak_locals.h -- Profinet io handling locals. */
/* rt_io_pnak_locals.h -- Profinet io handling locals. */
typedef
struct
_PN_Alarm_Data
{
typedef
struct
_PN_Alarm_Data
{
unsigned
short
alarm_type
;
unsigned
short
alarm_type
;
unsigned
short
alarm_prio
;
unsigned
short
alarm_prio
;
unsigned
short
rem_alarms
;
unsigned
short
rem_alarms
;
...
@@ -58,12 +59,10 @@ typedef struct _PN_Alarm_Data {
...
@@ -58,12 +59,10 @@ typedef struct _PN_Alarm_Data {
unsigned
char
*
data
;
unsigned
char
*
data
;
}
PN_Alarm_Data
;
}
PN_Alarm_Data
;
class
PnApiData
{
class
PnApiData
{
public:
public:
PnApiData
()
PnApiData
()
:
api
(
0
)
{}
:
api
(
0
)
{
}
unsigned
int
api
;
unsigned
int
api
;
std
::
vector
<
unsigned
int
>
module_index
;
std
::
vector
<
unsigned
int
>
module_index
;
...
@@ -73,14 +72,12 @@ public:
...
@@ -73,14 +72,12 @@ public:
int
print
(
std
::
ofstream
&
fp
);
int
print
(
std
::
ofstream
&
fp
);
};
};
class
PnIOCRData
{
class
PnIOCRData
{
public:
public:
PnIOCRData
()
PnIOCRData
()
:
type
(
0
)
:
type
(
0
),
number_modules
(
0
),
identifier
(
0
),
io_data_length
(
0
),
,
number_modules
(
0
)
clean_io_data_length
(
0
)
,
identifier
(
0
)
,
io_data_length
(
0
)
,
clean_io_data_length
(
0
)
{
{
}
}
...
@@ -97,16 +94,12 @@ public:
...
@@ -97,16 +94,12 @@ public:
int
print
(
std
::
ofstream
&
fp
);
int
print
(
std
::
ofstream
&
fp
);
};
};
class
PnSubmoduleData
{
class
PnSubmoduleData
{
public:
public:
PnSubmoduleData
()
PnSubmoduleData
()
:
subslot_number
(
0
)
:
subslot_number
(
0
),
subslot_idx
(
0
),
type
(
0
),
state
(
0
),
ident_number
(
0
),
,
subslot_idx
(
0
)
phys_ident_number
(
0
),
api
(
0
)
,
type
(
0
)
,
state
(
0
)
,
ident_number
(
0
)
,
phys_ident_number
(
0
)
,
api
(
0
)
{
{
}
}
...
@@ -133,14 +126,12 @@ public:
...
@@ -133,14 +126,12 @@ public:
int
print
(
std
::
ofstream
&
fp
);
int
print
(
std
::
ofstream
&
fp
);
};
};
class
PnModuleData
{
class
PnModuleData
{
public:
public:
PnModuleData
()
PnModuleData
()
:
slot_number
(
0
)
:
slot_number
(
0
),
slot_idx
(
0
),
state
(
0
),
ident_number
(
0
),
,
slot_idx
(
0
)
phys_ident_number
(
0
)
,
state
(
0
)
,
ident_number
(
0
)
,
phys_ident_number
(
0
)
{
{
}
}
...
@@ -161,13 +152,11 @@ public:
...
@@ -161,13 +152,11 @@ public:
int
print
(
std
::
ofstream
&
fp
);
int
print
(
std
::
ofstream
&
fp
);
};
};
class
PnDeviceData
{
class
PnDeviceData
{
public:
public:
PnDeviceData
()
PnDeviceData
()
:
device_ref
(
0
)
:
device_ref
(
0
),
alarm_ref
(
0
),
device_state
(
0
),
no_diff_modules
(
0
)
,
alarm_ref
(
0
)
,
device_state
(
0
)
,
no_diff_modules
(
0
)
{
{
memset
(
&
alarm_data
,
0
,
sizeof
(
PN_Alarm_Data
));
memset
(
&
alarm_data
,
0
,
sizeof
(
PN_Alarm_Data
));
}
}
...
@@ -182,10 +171,7 @@ public:
...
@@ -182,10 +171,7 @@ public:
std
::
vector
<
PnModuleData
*>
module_data
;
std
::
vector
<
PnModuleData
*>
module_data
;
std
::
vector
<
PnIOCRData
*>
iocr_data
;
std
::
vector
<
PnIOCRData
*>
iocr_data
;
~
PnDeviceData
()
~
PnDeviceData
()
{
device_reset
();
}
{
device_reset
();
}
void
device_reset
()
void
device_reset
()
{
{
for
(
unsigned
int
i
=
0
;
i
<
module_data
.
size
();
i
++
)
for
(
unsigned
int
i
=
0
;
i
<
module_data
.
size
();
i
++
)
...
@@ -201,7 +187,8 @@ public:
...
@@ -201,7 +187,8 @@ public:
int
paste_slot
(
unsigned
int
slot_idx
);
int
paste_slot
(
unsigned
int
slot_idx
);
};
};
class
PnDeviceInfo
{
class
PnDeviceInfo
{
public:
public:
PnDeviceInfo
()
{}
PnDeviceInfo
()
{}
unsigned
char
ipaddress
[
4
];
unsigned
char
ipaddress
[
4
];
...
@@ -212,12 +199,14 @@ public:
...
@@ -212,12 +199,14 @@ public:
int
deviceid
;
int
deviceid
;
};
};
typedef
struct
_agent_args
{
typedef
struct
_agent_args
{
void
*
local
;
void
*
local
;
io_sAgent
*
ap
;
io_sAgent
*
ap
;
}
agent_args
;
}
agent_args
;
class
io_sAgentLocal
{
class
io_sAgentLocal
{
public:
public:
io_sAgentLocal
()
{}
io_sAgentLocal
()
{}
...
...
profibus/lib/rt/src/rt_pn_gsdml_data.h
View file @
df0831a3
...
@@ -43,15 +43,12 @@
...
@@ -43,15 +43,12 @@
#include "co_xml_parser.h"
#include "co_xml_parser.h"
class
GsdmlDataRecord
{
class
GsdmlDataRecord
{
public:
public:
GsdmlDataRecord
()
GsdmlDataRecord
()
:
record_idx
(
0
)
:
record_idx
(
0
),
data
(
0
),
data_reversed_endianess
(
0
),
data_length
(
0
),
,
data
(
0
)
index
(
0
),
transfer_sequence
(
0
)
,
data_reversed_endianess
(
0
)
,
data_length
(
0
)
,
index
(
0
)
,
transfer_sequence
(
0
)
{
{
}
}
...
@@ -74,14 +71,11 @@ public:
...
@@ -74,14 +71,11 @@ public:
int
print
(
std
::
ofstream
&
fp
,
bool
reverse_endianess
);
int
print
(
std
::
ofstream
&
fp
,
bool
reverse_endianess
);
};
};
class
GsdmlIOCRData
{
class
GsdmlIOCRData
{
public:
public:
GsdmlIOCRData
()
GsdmlIOCRData
()
:
type
(
0
)
:
type
(
0
),
properties
(
0
),
send_clock_factor
(
0
),
phase
(
0
),
api
(
0
)
,
properties
(
0
)
,
send_clock_factor
(
0
)
,
phase
(
0
)
,
api
(
0
)
{
{
}
}
...
@@ -95,16 +89,13 @@ public:
...
@@ -95,16 +89,13 @@ public:
int
print
(
std
::
ofstream
&
fp
);
int
print
(
std
::
ofstream
&
fp
);
};
};
class
GsdmlSubslotData
{
class
GsdmlSubslotData
{
public:
public:
GsdmlSubslotData
()
GsdmlSubslotData
()
:
subslot_number
(
0
)
:
subslot_number
(
0
),
subslot_idx
(
0
),
submodule_enum_number
(
0
),
,
subslot_idx
(
0
)
submodule_ident_number
(
0
),
api
(
0
),
io_input_length
(
0
),
,
submodule_enum_number
(
0
)
io_output_length
(
0
)
,
submodule_ident_number
(
0
)
,
api
(
0
)
,
io_input_length
(
0
)
,
io_output_length
(
0
)
{
{
}
}
...
@@ -123,24 +114,22 @@ public:
...
@@ -123,24 +114,22 @@ public:
delete
data_record
[
i
];
delete
data_record
[
i
];
}
}
GsdmlSubslotData
(
const
GsdmlSubslotData
&
x
)
GsdmlSubslotData
(
const
GsdmlSubslotData
&
x
)
:
subslot_number
(
x
.
subslot_number
)
:
subslot_number
(
x
.
subslot_number
),
subslot_idx
(
x
.
subslot_idx
)
,
subslot_idx
(
x
.
subslot_idx
)
{
for
(
unsigned
int
i
=
0
;
i
<
x
.
data_record
.
size
();
i
++
)
{
{
for
(
unsigned
int
i
=
0
;
i
<
x
.
data_record
.
size
();
i
++
)
{
data_record
.
push_back
(
new
GsdmlDataRecord
(
*
x
.
data_record
[
i
]));
data_record
.
push_back
(
new
GsdmlDataRecord
(
*
x
.
data_record
[
i
]));
}
}
}
}
int
print
(
std
::
ofstream
&
fp
,
bool
reverse_endianess
);
int
print
(
std
::
ofstream
&
fp
,
bool
reverse_endianess
);
};
};
class
GsdmlSlotData
{
class
GsdmlSlotData
{
public:
public:
GsdmlSlotData
()
GsdmlSlotData
()
:
module_enum_number
(
0
)
:
module_enum_number
(
0
),
module_class
(
0
),
module_oid
(
pwr_cNOid
),
,
module_class
(
0
)
slot_number
(
0
),
slot_idx
(
0
)
,
module_oid
(
pwr_cNOid
)
,
slot_number
(
0
)
,
slot_idx
(
0
)
{
{
module_text
[
0
]
=
0
;
module_text
[
0
]
=
0
;
}
}
...
@@ -165,20 +154,20 @@ public:
...
@@ -165,20 +154,20 @@ public:
subslot_data
.
clear
();
subslot_data
.
clear
();
}
}
GsdmlSlotData
(
const
GsdmlSlotData
&
x
)
GsdmlSlotData
(
const
GsdmlSlotData
&
x
)
:
module_enum_number
(
x
.
module_enum_number
)
:
module_enum_number
(
x
.
module_enum_number
)
,
module_class
(
x
.
module_class
),
,
module_class
(
x
.
module_class
)
module_oid
(
pwr_cNObjid
),
slot_number
(
x
.
slot_number
),
,
module_oid
(
pwr_cNObjid
)
slot_idx
(
x
.
slot_idx
)
,
slot_number
(
x
.
slot_number
)
{
,
slot_idx
(
x
.
slot_idx
)
for
(
unsigned
int
i
=
0
;
i
<
x
.
subslot_data
.
size
();
i
++
)
{
{
for
(
unsigned
int
i
=
0
;
i
<
x
.
subslot_data
.
size
();
i
++
)
{
subslot_data
.
push_back
(
new
GsdmlSubslotData
(
*
x
.
subslot_data
[
i
]));
subslot_data
.
push_back
(
new
GsdmlSubslotData
(
*
x
.
subslot_data
[
i
]));
}
}
}
}
int
print
(
std
::
ofstream
&
fp
,
bool
reverse_endianess
);
int
print
(
std
::
ofstream
&
fp
,
bool
reverse_endianess
);
};
};
class
GsdmlChannelDiag
{
class
GsdmlChannelDiag
{
public:
public:
GsdmlChannelDiag
();
GsdmlChannelDiag
();
unsigned
short
error_type
;
unsigned
short
error_type
;
...
@@ -189,15 +178,12 @@ public:
...
@@ -189,15 +178,12 @@ public:
int
print
(
std
::
ofstream
&
fp
);
int
print
(
std
::
ofstream
&
fp
);
};
};
class
GsdmlDeviceData
{
class
GsdmlDeviceData
{
public:
public:
GsdmlDeviceData
()
GsdmlDeviceData
()
:
device_num
(
0
)
:
device_num
(
0
),
vendor_id
(
0
),
device_id
(
0
),
byte_order
(
0
),
,
vendor_id
(
0
)
read_data_is_native_ordered
(
1
),
instance
(
0
)
,
device_id
(
0
)
,
byte_order
(
0
)
,
read_data_is_native_ordered
(
1
)
,
instance
(
0
)
{
{
device_name
[
0
]
=
0
;
device_name
[
0
]
=
0
;
ip_address
[
0
]
=
0
;
ip_address
[
0
]
=
0
;
...
@@ -254,13 +240,10 @@ public:
...
@@ -254,13 +240,10 @@ public:
int
get_value
(
const
char
*
attr
,
char
*
buf
,
int
bufsize
);
int
get_value
(
const
char
*
attr
,
char
*
buf
,
int
bufsize
);
};
};
class
GsdmlDataReader
:
public
co_xml_interpreter
{
class
GsdmlDataReader
:
public
co_xml_interpreter
{
public:
public:
GsdmlDataReader
(
GsdmlDeviceData
*
d
)
GsdmlDataReader
(
GsdmlDeviceData
*
d
)
:
data
(
d
),
new_filename
(
0
)
{}
:
data
(
d
)
,
new_filename
(
0
)
{
}
int
tag
(
const
char
*
name
);
int
tag
(
const
char
*
name
);
int
metatag
(
const
char
*
name
);
int
metatag
(
const
char
*
name
);
int
tag_end
(
const
char
*
name
);
int
tag_end
(
const
char
*
name
);
...
...
profibus/lib/rt/src/rt_pn_iface.h
View file @
df0831a3
...
@@ -47,24 +47,24 @@
...
@@ -47,24 +47,24 @@
#define PN_MAX_MANU_SPEC_DIAGS 200
#define PN_MAX_MANU_SPEC_DIAGS 200
void
pack_set_ip_settings_req
(
void
pack_set_ip_settings_req
(
T_PNAK_SERVICE_REQ_RES
*
ServiceReqRes
,
T_PNAK_SERVICE_REQ_RES
*
ServiceReqRes
,
PnDeviceInfo
*
dev_info
);
PnDeviceInfo
*
dev_info
);
void
pack_set_device_name_req
(
void
pack_set_device_name_req
(
T_PNAK_SERVICE_REQ_RES
*
ServiceReqRes
,
T_PNAK_SERVICE_REQ_RES
*
ServiceReqRes
,
PnDeviceInfo
*
dev_info
);
PnDeviceInfo
*
dev_info
);
void
pack_set_identification_req
(
T_PNAK_SERVICE_REQ_RES
*
ServiceReqRes
);
void
pack_set_identification_req
(
T_PNAK_SERVICE_REQ_RES
*
ServiceReqRes
);
void
pack_get_device_state_req
(
void
pack_get_device_state_req
(
T_PNAK_SERVICE_REQ_RES
*
ServiceReqRes
,
T_PNAK_SERVICE_REQ_RES
*
ServiceReqRes
,
unsigned
short
device_ref
);
unsigned
short
device_ref
);
void
pack_write_req
(
T_PNAK_SERVICE_REQ_RES
*
ServiceReqRes
,
void
pack_write_req
(
T_PNAK_SERVICE_REQ_RES
*
ServiceReqRes
,
unsigned
short
device_ref
,
pwr_sClass_PnWriteReq
*
wr_req
);
unsigned
short
device_ref
,
pwr_sClass_PnWriteReq
*
wr_req
);
void
pack_get_los_req
(
T_PNAK_SERVICE_REQ_RES
*
ServiceReqRes
);
void
pack_get_los_req
(
T_PNAK_SERVICE_REQ_RES
*
ServiceReqRes
);
void
pack_get_alarm_req
(
void
pack_get_alarm_req
(
T_PNAK_SERVICE_REQ_RES
*
ServiceReqRes
,
T_PNAK_SERVICE_REQ_RES
*
ServiceReqRes
,
unsigned
short
ref
);
unsigned
short
ref
);
void
pack_alarm_ack_req
(
T_PNAK_SERVICE_REQ_RES
*
ServiceReqRes
,
void
pack_alarm_ack_req
(
T_PNAK_SERVICE_REQ_RES
*
ServiceReqRes
,
unsigned
short
ref
,
unsigned
short
prio
);
unsigned
short
ref
,
unsigned
short
prio
);
...
@@ -76,13 +76,13 @@ int unpack_write_con(T_PNAK_SERVICE_DESCRIPTION* pSdb, io_sAgentLocal* local);
...
@@ -76,13 +76,13 @@ int unpack_write_con(T_PNAK_SERVICE_DESCRIPTION* pSdb, io_sAgentLocal* local);
int
unpack_get_los_con
(
T_PNAK_SERVICE_DESCRIPTION
*
pSdb
,
io_sAgentLocal
*
local
);
int
unpack_get_los_con
(
T_PNAK_SERVICE_DESCRIPTION
*
pSdb
,
io_sAgentLocal
*
local
);
int
unpack_get_alarm_con
(
int
unpack_get_alarm_con
(
T_PNAK_SERVICE_DESCRIPTION
*
pSdb
,
T_PNAK_SERVICE_DESCRIPTION
*
pSdb
,
io_sAgentLocal
*
local
,
io_sAgent
*
ap
);
io_sAgentLocal
*
local
,
io_sAgent
*
ap
);
int
unpack_get_device_state_con
(
int
unpack_get_device_state_con
(
T_PNAK_SERVICE_DESCRIPTION
*
pSdb
,
T_PNAK_SERVICE_DESCRIPTION
*
pSdb
,
io_sAgentLocal
*
local
,
io_sAgent
*
ap
);
io_sAgentLocal
*
local
,
io_sAgent
*
ap
);
int
unpack_download_con
(
int
unpack_download_con
(
T_PNAK_SERVICE_DESCRIPTION
*
pSdb
,
T_PNAK_SERVICE_DESCRIPTION
*
pSdb
,
io_sAgentLocal
*
local
);
io_sAgentLocal
*
local
);
int
handle_service_con
(
io_sAgentLocal
*
local
,
io_sAgent
*
ap
);
int
handle_service_con
(
io_sAgentLocal
*
local
,
io_sAgent
*
ap
);
...
...
profibus/lib/rt/src/rt_pnak.h
View file @
df0831a3
...
@@ -174,7 +174,8 @@ typedef unsigned short T_PNAK_EXCEPTION_SOURCE;
...
@@ -174,7 +174,8 @@ typedef unsigned short T_PNAK_EXCEPTION_SOURCE;
#define PNAK_EXCEPTION_SOURCE_IS_PNAK 1u
#define PNAK_EXCEPTION_SOURCE_IS_PNAK 1u
#define PNAK_EXCEPTION_SOURCE_IS_APPL 2u
#define PNAK_EXCEPTION_SOURCE_IS_APPL 2u
typedef
struct
_T_PNAK_EXCEPTION
{
typedef
struct
_T_PNAK_EXCEPTION
{
T_PNAK_EXCEPTION_SOURCE
Source
;
T_PNAK_EXCEPTION_SOURCE
Source
;
unsigned
short
ChannelId
;
unsigned
short
ChannelId
;
...
@@ -204,7 +205,8 @@ typedef unsigned short T_PNAK_MODE_ID;
...
@@ -204,7 +205,8 @@ typedef unsigned short T_PNAK_MODE_ID;
#define PNAK_VERSION_STRING_LENGTH 42
#define PNAK_VERSION_STRING_LENGTH 42
typedef
struct
_T_PNAK_VERSION
{
typedef
struct
_T_PNAK_VERSION
{
unsigned
short
IfId
;
unsigned
short
IfId
;
unsigned
short
HostIfId
;
unsigned
short
HostIfId
;
unsigned
short
HostConfigIfId
;
unsigned
short
HostConfigIfId
;
...
@@ -218,7 +220,8 @@ typedef struct _T_PNAK_VERSION {
...
@@ -218,7 +220,8 @@ typedef struct _T_PNAK_VERSION {
}
PACK_WORD_ALIGNMENT
(
T_PNAK_VERSION
);
}
PACK_WORD_ALIGNMENT
(
T_PNAK_VERSION
);
typedef
struct
_T_PNAK_VERSIONS
{
typedef
struct
_T_PNAK_VERSIONS
{
T_PNAK_VERSION
Firmware
;
T_PNAK_VERSION
Firmware
;
T_PNAK_VERSION
Pnak
;
T_PNAK_VERSION
Pnak
;
...
@@ -264,32 +267,31 @@ typedef PN_U32 T_PNAK_WAIT_OBJECT;
...
@@ -264,32 +267,31 @@ typedef PN_U32 T_PNAK_WAIT_OBJECT;
#define PNAK_WAIT_TIMEOUT ((T_PNAK_WAIT_OBJECT)0x80000000uL)
#define PNAK_WAIT_TIMEOUT ((T_PNAK_WAIT_OBJECT)0x80000000uL)
#define PNAK_WAIT_OBJECTS_SERVICE \
#define PNAK_WAIT_OBJECTS_SERVICE \
(PNAK_WAIT_OBJECT_SERVICE_CON | PNAK_WAIT_OBJECT_SERVICE_IND
\
(PNAK_WAIT_OBJECT_SERVICE_CON | PNAK_WAIT_OBJECT_SERVICE_IND
|
\
|
PNAK_WAIT_OBJECT_SERVICE_REQ_RES_HANDLED)
PNAK_WAIT_OBJECT_SERVICE_REQ_RES_HANDLED)
#define PNAK_WAIT_OBJECTS_EVENT_IND \
#define PNAK_WAIT_OBJECTS_EVENT_IND \
(PNAK_WAIT_OBJECT_STATE_CHANGED | PNAK_WAIT_OBJECT_ALARM
\
(PNAK_WAIT_OBJECT_STATE_CHANGED | PNAK_WAIT_OBJECT_ALARM
|
\
| PNAK_WAIT_OBJECT_ALARM_ACK | PNAK_WAIT_OBJECT_DEVICE_STATE_CHANGED
\
PNAK_WAIT_OBJECT_ALARM_ACK | PNAK_WAIT_OBJECT_DEVICE_STATE_CHANGED |
\
| PNAK_WAIT_OBJECT_ETHERNET_STATE_CHANGED | PNAK_WAIT_OBJECT_PTCP
\
PNAK_WAIT_OBJECT_ETHERNET_STATE_CHANGED | PNAK_WAIT_OBJECT_PTCP |
\
|
PNAK_WAIT_OBJECT_MRPD)
PNAK_WAIT_OBJECT_MRPD)
#define PNAK_WAIT_OBJECTS_DATA_IND \
#define PNAK_WAIT_OBJECTS_DATA_IND \
(PNAK_WAIT_OBJECT_PROVIDER_DATA_UPDATED
\
(PNAK_WAIT_OBJECT_PROVIDER_DATA_UPDATED
|
\
|
PNAK_WAIT_OBJECT_CONSUMER_DATA_CHANGED)
PNAK_WAIT_OBJECT_CONSUMER_DATA_CHANGED)
#define PNAK_WAIT_OBJECTS_SOCKET_IND \
#define PNAK_WAIT_OBJECTS_SOCKET_IND \
(PNAK_WAIT_OBJECT_SOCKET_STATE_CHANGED
\
(PNAK_WAIT_OBJECT_SOCKET_STATE_CHANGED
|
\
|
PNAK_WAIT_OBJECT_SOCKET_DATA_RECEIVED)
PNAK_WAIT_OBJECT_SOCKET_DATA_RECEIVED)
#define PNAK_WAIT_OBJECTS_OTHER \
#define PNAK_WAIT_OBJECTS_OTHER \
(PNAK_WAIT_OBJECT_EXCEPTION | PNAK_WAIT_OBJECT_CHANNEL_CLOSED
\
(PNAK_WAIT_OBJECT_EXCEPTION | PNAK_WAIT_OBJECT_CHANNEL_CLOSED
|
\
|
PNAK_WAIT_OBJECT_INTERRUPTED)
PNAK_WAIT_OBJECT_INTERRUPTED)
#define PNAK_WAIT_OBJECTS_USER \
#define PNAK_WAIT_OBJECTS_USER \
(PNAK_USER_WAIT_OBJECT_1 | PNAK_USER_WAIT_OBJECT_2 |
PNAK_USER_WAIT_OBJECT_3
\
(PNAK_USER_WAIT_OBJECT_1 | PNAK_USER_WAIT_OBJECT_2 |
\
| PNAK_USER_WAIT_OBJECT_4 | PNAK_USER_WAIT_OBJECT_5
\
PNAK_USER_WAIT_OBJECT_3 | PNAK_USER_WAIT_OBJECT_4 |
\
| PNAK_USER_WAIT_OBJECT_6 | PNAK_USER_WAIT_OBJECT_7
\
PNAK_USER_WAIT_OBJECT_5 | PNAK_USER_WAIT_OBJECT_6 |
\
| PNAK_USER_WAIT_OBJECT_8)
PNAK_USER_WAIT_OBJECT_7
| PNAK_USER_WAIT_OBJECT_8)
#define PNAK_WAIT_OBJECTS_ALL \
#define PNAK_WAIT_OBJECTS_ALL \
(PNAK_WAIT_OBJECTS_OTHER | PNAK_WAIT_OBJECTS_EVENT_IND \
(PNAK_WAIT_OBJECTS_OTHER | PNAK_WAIT_OBJECTS_EVENT_IND | \
| PNAK_WAIT_OBJECTS_DATA_IND | PNAK_WAIT_OBJECTS_SERVICE \
PNAK_WAIT_OBJECTS_DATA_IND | PNAK_WAIT_OBJECTS_SERVICE | \
| PNAK_WAIT_OBJECTS_SOCKET_IND | PNAK_WAIT_OBJECTS_USER \
PNAK_WAIT_OBJECTS_SOCKET_IND | PNAK_WAIT_OBJECTS_USER | PNAK_WAIT_TIMEOUT)
| PNAK_WAIT_TIMEOUT)
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
...
@@ -317,7 +319,8 @@ typedef unsigned char T_PNAK_SERVICE_RESULT;
...
@@ -317,7 +319,8 @@ typedef unsigned char T_PNAK_SERVICE_RESULT;
#define PNAK_RESULT_POS (T_PNAK_SERVICE_RESULT)0x00u
#define PNAK_RESULT_POS (T_PNAK_SERVICE_RESULT)0x00u
#define PNAK_RESULT_NEG (T_PNAK_SERVICE_RESULT)0x01u
#define PNAK_RESULT_NEG (T_PNAK_SERVICE_RESULT)0x01u
typedef
struct
_T_PNAK_SERVICE_DESCRIPTION
{
typedef
struct
_T_PNAK_SERVICE_DESCRIPTION
{
unsigned
short
DeviceRef
;
unsigned
short
DeviceRef
;
unsigned
char
Instance
;
unsigned
char
Instance
;
...
@@ -353,14 +356,16 @@ typedef struct _T_PNAK_SERVICE_DESCRIPTION {
...
@@ -353,14 +356,16 @@ typedef struct _T_PNAK_SERVICE_DESCRIPTION {
/*=== SERVICE REQUEST/RESPONSE ==============================================*/
/*=== SERVICE REQUEST/RESPONSE ==============================================*/
typedef
struct
_T_PNAK_SERVICE_REQ_RES_ENTRY
{
typedef
struct
_T_PNAK_SERVICE_REQ_RES_ENTRY
{
unsigned
short
ServiceOffset
;
unsigned
short
ServiceOffset
;
}
PACK_WORD_ALIGNMENT
(
T_PNAK_SERVICE_REQ_RES_ENTRY
);
}
PACK_WORD_ALIGNMENT
(
T_PNAK_SERVICE_REQ_RES_ENTRY
);
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PNAK_SERVICE_REQ_RES
{
typedef
struct
_T_PNAK_SERVICE_REQ_RES
{
unsigned
short
NumberEntries
;
unsigned
short
NumberEntries
;
T_PNAK_SERVICE_REQ_RES_ENTRY
ServiceEntry
[
PNAK_MAX_NUMBER_REQ_SERVICES
];
T_PNAK_SERVICE_REQ_RES_ENTRY
ServiceEntry
[
PNAK_MAX_NUMBER_REQ_SERVICES
];
...
@@ -370,14 +375,16 @@ typedef struct _T_PNAK_SERVICE_REQ_RES {
...
@@ -370,14 +375,16 @@ typedef struct _T_PNAK_SERVICE_REQ_RES {
/*=== SERVICE CONFIRMATION ==================================================*/
/*=== SERVICE CONFIRMATION ==================================================*/
typedef
struct
_T_PNAK_SERVICE_CON_ENTRY
{
typedef
struct
_T_PNAK_SERVICE_CON_ENTRY
{
unsigned
short
ServiceOffset
;
unsigned
short
ServiceOffset
;
}
PACK_WORD_ALIGNMENT
(
T_PNAK_SERVICE_CON_ENTRY
);
}
PACK_WORD_ALIGNMENT
(
T_PNAK_SERVICE_CON_ENTRY
);
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PNAK_SERVICE_CON
{
typedef
struct
_T_PNAK_SERVICE_CON
{
unsigned
short
NumberEntries
;
unsigned
short
NumberEntries
;
T_PNAK_SERVICE_CON_ENTRY
ServiceEntry
[
PNAK_MAX_NUMBER_CON_SERVICES
];
T_PNAK_SERVICE_CON_ENTRY
ServiceEntry
[
PNAK_MAX_NUMBER_CON_SERVICES
];
...
@@ -387,14 +394,16 @@ typedef struct _T_PNAK_SERVICE_CON {
...
@@ -387,14 +394,16 @@ typedef struct _T_PNAK_SERVICE_CON {
/*=== SERVICE INDICATION ====================================================*/
/*=== SERVICE INDICATION ====================================================*/
typedef
struct
_T_PNAK_SERVICE_IND_ENTRY
{
typedef
struct
_T_PNAK_SERVICE_IND_ENTRY
{
unsigned
short
ServiceOffset
;
unsigned
short
ServiceOffset
;
}
PACK_WORD_ALIGNMENT
(
T_PNAK_SERVICE_IND_ENTRY
);
}
PACK_WORD_ALIGNMENT
(
T_PNAK_SERVICE_IND_ENTRY
);
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PNAK_SERVICE_IND
{
typedef
struct
_T_PNAK_SERVICE_IND
{
unsigned
short
NumberEntries
;
unsigned
short
NumberEntries
;
T_PNAK_SERVICE_IND_ENTRY
ServiceEntry
[
PNAK_MAX_NUMBER_IND_SERVICES
];
T_PNAK_SERVICE_IND_ENTRY
ServiceEntry
[
PNAK_MAX_NUMBER_IND_SERVICES
];
...
@@ -413,14 +422,16 @@ typedef unsigned short T_PNAK_MODE;
...
@@ -413,14 +422,16 @@ typedef unsigned short T_PNAK_MODE;
/*=== EVENT REQUEST ==========================================================*/
/*=== EVENT REQUEST ==========================================================*/
typedef
struct
_T_PNAK_EVENT_SET_MODE
{
typedef
struct
_T_PNAK_EVENT_SET_MODE
{
T_PNAK_MODE
Mode
;
T_PNAK_MODE
Mode
;
}
PACK_WORD_ALIGNMENT
(
T_PNAK_EVENT_SET_MODE
);
}
PACK_WORD_ALIGNMENT
(
T_PNAK_EVENT_SET_MODE
);
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PNAK_EVENT_SET_DEVICE_STATE
{
typedef
struct
_T_PNAK_EVENT_SET_DEVICE_STATE
{
T_BITSET_256
ActivateDeviceReference
;
T_BITSET_256
ActivateDeviceReference
;
T_BITSET_256
DeactivateDeviceReference
;
T_BITSET_256
DeactivateDeviceReference
;
...
@@ -444,7 +455,8 @@ typedef enum _T_PNAK_STATE {
...
@@ -444,7 +455,8 @@ typedef enum _T_PNAK_STATE {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PNAK_EVENT_STATE
{
typedef
struct
_T_PNAK_EVENT_STATE
{
T_PNAK_MODE
Mode
;
T_PNAK_MODE
Mode
;
T_PNAK_STATE
State
;
T_PNAK_STATE
State
;
...
@@ -452,14 +464,16 @@ typedef struct _T_PNAK_EVENT_STATE {
...
@@ -452,14 +464,16 @@ typedef struct _T_PNAK_EVENT_STATE {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PNAK_EVENT_ALARM
{
typedef
struct
_T_PNAK_EVENT_ALARM
{
T_BITSET_256
DeviceReference
;
T_BITSET_256
DeviceReference
;
}
PACK_WORD_ALIGNMENT
(
T_PNAK_EVENT_ALARM
);
}
PACK_WORD_ALIGNMENT
(
T_PNAK_EVENT_ALARM
);
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PNAK_EVENT_ALARM_ACK
{
typedef
struct
_T_PNAK_EVENT_ALARM_ACK
{
T_BITSET_256
DeviceReference
;
T_BITSET_256
DeviceReference
;
}
PACK_WORD_ALIGNMENT
(
T_PNAK_EVENT_ALARM_ACK
);
}
PACK_WORD_ALIGNMENT
(
T_PNAK_EVENT_ALARM_ACK
);
...
@@ -475,16 +489,16 @@ typedef struct _T_PNAK_EVENT_ALARM_ACK {
...
@@ -475,16 +489,16 @@ typedef struct _T_PNAK_EVENT_ALARM_ACK {
#define PNAK_DEVICE_STATE_CONTROL_ERROR 0x40u
#define PNAK_DEVICE_STATE_CONTROL_ERROR 0x40u
#define PNAK_DEVICE_STATE_CLOSE_PENDING 0x80u
#define PNAK_DEVICE_STATE_CLOSE_PENDING 0x80u
#define PNAK_DEVICE_STATE_MASK \
#define PNAK_DEVICE_STATE_MASK \
(PNAK_DEVICE_STATE_DEACTIVATED | PNAK_DEVICE_STATE_FIND_DEVICE \
(PNAK_DEVICE_STATE_DEACTIVATED | PNAK_DEVICE_STATE_FIND_DEVICE | \
| PNAK_DEVICE_STATE_CONNECTION_ESTABLISHMENT \
PNAK_DEVICE_STATE_CONNECTION_ESTABLISHMENT | PNAK_DEVICE_STATE_CONNECTED)
| PNAK_DEVICE_STATE_CONNECTED)
#define PNAK_DEVICE_STATE_MASK_CONNECTING \
#define PNAK_DEVICE_STATE_MASK_CONNECTING \
(PNAK_DEVICE_STATE_FIND_DEVICE | PNAK_DEVICE_STATE_CONNECTION_ESTABLISHMENT)
(PNAK_DEVICE_STATE_FIND_DEVICE | PNAK_DEVICE_STATE_CONNECTION_ESTABLISHMENT)
#define PNAK_DEVICE_STATE_ERROR_MASK \
#define PNAK_DEVICE_STATE_ERROR_MASK \
(PNAK_DEVICE_STATE_CONNECT_ERROR | PNAK_DEVICE_STATE_WRITE_ERROR
\
(PNAK_DEVICE_STATE_CONNECT_ERROR | PNAK_DEVICE_STATE_WRITE_ERROR
|
\
|
PNAK_DEVICE_STATE_CONTROL_ERROR)
PNAK_DEVICE_STATE_CONTROL_ERROR)
typedef
struct
_T_PNAK_EVENT_DEVICE_STATE
{
typedef
struct
_T_PNAK_EVENT_DEVICE_STATE
{
unsigned
char
State
[
MAX_NUMBER_SUPPORTED_DEVICES
];
unsigned
char
State
[
MAX_NUMBER_SUPPORTED_DEVICES
];
}
PACK_WORD_ALIGNMENT
(
T_PNAK_EVENT_DEVICE_STATE
);
}
PACK_WORD_ALIGNMENT
(
T_PNAK_EVENT_DEVICE_STATE
);
...
@@ -500,12 +514,14 @@ typedef struct _T_PNAK_EVENT_DEVICE_STATE {
...
@@ -500,12 +514,14 @@ typedef struct _T_PNAK_EVENT_DEVICE_STATE {
#define PNAK_MRPD_MISSING_APPEARS 0x8000u
#define PNAK_MRPD_MISSING_APPEARS 0x8000u
#define PNAK_MRPD_MISSING_DISAPPEARS 0x0000u
#define PNAK_MRPD_MISSING_DISAPPEARS 0x0000u
typedef
struct
_T_PNAK_EVENT_MRPD_IOCR
{
typedef
struct
_T_PNAK_EVENT_MRPD_IOCR
{
PN_U16
FrameId
[
PN_SERVICE_DOWNLOAD_MAX_NUMBER_IOCRS
];
PN_U16
FrameId
[
PN_SERVICE_DOWNLOAD_MAX_NUMBER_IOCRS
];
}
PACK_WORD_ALIGNMENT
(
T_PNAK_EVENT_MRPD_IOCR
);
}
PACK_WORD_ALIGNMENT
(
T_PNAK_EVENT_MRPD_IOCR
);
typedef
struct
_T_PNAK_EVENT_MRPD
{
typedef
struct
_T_PNAK_EVENT_MRPD
{
T_PNAK_EVENT_MRPD_IOCR
AR
[
MAX_NUMBER_CMDEV_CONNECTIONS
];
T_PNAK_EVENT_MRPD_IOCR
AR
[
MAX_NUMBER_CMDEV_CONNECTIONS
];
}
PACK_WORD_ALIGNMENT
(
T_PNAK_EVENT_MRPD
);
}
PACK_WORD_ALIGNMENT
(
T_PNAK_EVENT_MRPD
);
...
@@ -520,13 +536,14 @@ typedef struct _T_PNAK_EVENT_MRPD {
...
@@ -520,13 +536,14 @@ typedef struct _T_PNAK_EVENT_MRPD {
#define PNAK_EVENT_PTCP 0x00000020uL
#define PNAK_EVENT_PTCP 0x00000020uL
#define PNAK_EVENT_MRPD 0x00000040uL
#define PNAK_EVENT_MRPD 0x00000040uL
#define PNAK_EVENT_MASK \
#define PNAK_EVENT_MASK \
(PNAK_EVENT_STATE_CHANGED | PNAK_EVENT_DEVICE_STATE_CHANGED
\
(PNAK_EVENT_STATE_CHANGED | PNAK_EVENT_DEVICE_STATE_CHANGED
|
\
| PNAK_EVENT_ALARM | PNAK_EVENT_ALARM_ACK
\
PNAK_EVENT_ALARM | PNAK_EVENT_ALARM_ACK |
\
|
PNAK_EVENT_ETHERNET_STATE_CHANGED | PNAK_EVENT_PTCP | PNAK_EVENT_MRPD)
PNAK_EVENT_ETHERNET_STATE_CHANGED | PNAK_EVENT_PTCP | PNAK_EVENT_MRPD)
typedef
PN_U32
T_PNAK_EVENT_REG
;
typedef
PN_U32
T_PNAK_EVENT_REG
;
typedef
struct
_T_PNAK_EVENT_IND_MASK
{
typedef
struct
_T_PNAK_EVENT_IND_MASK
{
T_PNAK_EVENT_REG
EventMaskReg
;
T_PNAK_EVENT_REG
EventMaskReg
;
}
PACK_WORD_ALIGNMENT
(
T_PNAK_EVENT_IND_MASK
);
}
PACK_WORD_ALIGNMENT
(
T_PNAK_EVENT_IND_MASK
);
...
@@ -553,7 +570,8 @@ STATISTIC INTERFACE
...
@@ -553,7 +570,8 @@ STATISTIC INTERFACE
#define PNIO_STATUS_ENCODING_LITTLE_ENDIAN 0x10u
#define PNIO_STATUS_ENCODING_LITTLE_ENDIAN 0x10u
#define PNIO_STATUS_ENCODING_MASK 0xF0u
#define PNIO_STATUS_ENCODING_MASK 0xF0u
typedef
struct
_T_PNAK_CONNECTION_STATISTIC
{
typedef
struct
_T_PNAK_CONNECTION_STATISTIC
{
PN_U32
Coding
;
PN_U32
Coding
;
PN_U8
Encoding
;
PN_U8
Encoding
;
...
@@ -563,7 +581,8 @@ typedef struct _T_PNAK_CONNECTION_STATISTIC {
...
@@ -563,7 +581,8 @@ typedef struct _T_PNAK_CONNECTION_STATISTIC {
}
T_PNAK_CONNECTION_STATISTIC
;
}
T_PNAK_CONNECTION_STATISTIC
;
typedef
struct
_T_PNAK_CMCTL_STATISTIC
{
typedef
struct
_T_PNAK_CMCTL_STATISTIC
{
PN_U32
NumberDevicesInStartup
;
PN_U32
NumberDevicesInStartup
;
PN_U32
NumberDevicesConnected
;
PN_U32
NumberDevicesConnected
;
...
@@ -576,7 +595,8 @@ typedef struct _T_PNAK_CMCTL_STATISTIC {
...
@@ -576,7 +595,8 @@ typedef struct _T_PNAK_CMCTL_STATISTIC {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PNAK_CMDEV_STATISTIC
{
typedef
struct
_T_PNAK_CMDEV_STATISTIC
{
T_PNAK_CONNECTION_STATISTIC
Cmdev
[
MAX_NUMBER_CMDEV_CONNECTIONS
];
T_PNAK_CONNECTION_STATISTIC
Cmdev
[
MAX_NUMBER_CMDEV_CONNECTIONS
];
}
T_PNAK_CMDEV_STATISTIC
;
}
T_PNAK_CMDEV_STATISTIC
;
...
@@ -587,14 +607,16 @@ DATA INTERFACE
...
@@ -587,14 +607,16 @@ DATA INTERFACE
/*=== DATA INDICATION =======================================================*/
/*=== DATA INDICATION =======================================================*/
typedef
struct
_T_PNAK_DATA_CONSUMER_DATA_CHANGED
{
typedef
struct
_T_PNAK_DATA_CONSUMER_DATA_CHANGED
{
T_BITSET_256
DeviceReference
;
T_BITSET_256
DeviceReference
;
}
PACK_WORD_ALIGNMENT
(
T_PNAK_DATA_CONSUMER_DATA_CHANGED
);
}
PACK_WORD_ALIGNMENT
(
T_PNAK_DATA_CONSUMER_DATA_CHANGED
);
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PNAK_DATA_PROVIDER_DATA_UPDATED
{
typedef
struct
_T_PNAK_DATA_PROVIDER_DATA_UPDATED
{
T_BITSET_256
DeviceReference
;
T_BITSET_256
DeviceReference
;
}
PACK_WORD_ALIGNMENT
(
T_PNAK_DATA_PROVIDER_DATA_UPDATED
);
}
PACK_WORD_ALIGNMENT
(
T_PNAK_DATA_PROVIDER_DATA_UPDATED
);
...
@@ -607,7 +629,8 @@ typedef struct _T_PNAK_DATA_PROVIDER_DATA_UPDATED {
...
@@ -607,7 +629,8 @@ typedef struct _T_PNAK_DATA_PROVIDER_DATA_UPDATED {
typedef
PN_U32
T_PNAK_DATA_EVENT_REG
;
typedef
PN_U32
T_PNAK_DATA_EVENT_REG
;
typedef
struct
_T_PNAK_DATA_IND_MASK
{
typedef
struct
_T_PNAK_DATA_IND_MASK
{
T_PNAK_DATA_EVENT_REG
EventMaskReg
;
T_PNAK_DATA_EVENT_REG
EventMaskReg
;
}
PACK_WORD_ALIGNMENT
(
T_PNAK_DATA_IND_MASK
);
}
PACK_WORD_ALIGNMENT
(
T_PNAK_DATA_IND_MASK
);
...
@@ -645,62 +668,69 @@ extern T_PNAK_RESULT pnak_stop_stack(unsigned short);
...
@@ -645,62 +668,69 @@ extern T_PNAK_RESULT pnak_stop_stack(unsigned short);
/*--- General interface functions -------------------------------------------*/
/*--- General interface functions -------------------------------------------*/
extern
T_PNAK_RESULT
pnak_wait_for_multiple_objects
(
extern
T_PNAK_RESULT
pnak_wait_for_multiple_objects
(
unsigned
short
,
unsigned
short
,
T_PNAK_WAIT_OBJECT
*
,
T_PNAK_TIMEOUT
);
T_PNAK_WAIT_OBJECT
*
,
extern
T_PNAK_RESULT
pnak_set_multiple_objects
(
T_PNAK_TIMEOUT
);
unsigned
short
,
const
T_PNAK_WAIT_OBJECT
);
extern
T_PNAK_RESULT
pnak_set_multiple_objects
(
unsigned
short
,
extern
T_PNAK_RESULT
pnak_mask_multiple_objects
(
const
T_PNAK_WAIT_OBJECT
);
unsigned
short
,
const
T_PNAK_WAIT_OBJECT
);
extern
T_PNAK_RESULT
pnak_mask_multiple_objects
(
unsigned
short
,
const
T_PNAK_WAIT_OBJECT
);
extern
T_PNAK_RESULT
pnak_get_exception
(
unsigned
short
,
T_PNAK_EXCEPTION
*
);
extern
T_PNAK_RESULT
pnak_get_exception
(
unsigned
short
,
T_PNAK_EXCEPTION
*
);
extern
T_PNAK_RESULT
pnak_get_version
(
unsigned
short
,
T_PNAK_VERSIONS
*
);
extern
T_PNAK_RESULT
pnak_get_version
(
unsigned
short
,
T_PNAK_VERSIONS
*
);
extern
T_PNAK_RESULT
pnak_snmp_get_data
(
unsigned
short
,
T_PNAK_OID
*
,
void
*
,
extern
T_PNAK_RESULT
pnak_snmp_get_data
(
unsigned
short
,
T_PNAK_OID
*
,
void
*
,
PN_U32
*
,
PN_U32
*
,
unsigned
char
,
PN_BOOL
);
PN_U32
*
,
PN_U32
*
,
unsigned
char
,
extern
T_PNAK_RESULT
pnak_snmp_check_data
(
PN_BOOL
);
unsigned
short
,
T_PNAK_OID
*
,
void
*
,
PN_U32
,
PN_U32
,
unsigned
char
);
extern
T_PNAK_RESULT
pnak_snmp_check_data
(
unsigned
short
,
T_PNAK_OID
*
,
void
*
,
extern
T_PNAK_RESULT
pnak_snmp_set_data
(
PN_U32
,
PN_U32
,
unsigned
char
);
unsigned
short
,
T_PNAK_OID
*
,
void
*
,
PN_U32
,
PN_U32
);
extern
T_PNAK_RESULT
pnak_snmp_set_data
(
unsigned
short
,
T_PNAK_OID
*
,
void
*
,
PN_U32
,
PN_U32
);
extern
T_PNAK_RESULT
pnak_retrigger_watchdog
(
unsigned
short
,
PN_U32
);
extern
T_PNAK_RESULT
pnak_retrigger_watchdog
(
unsigned
short
,
PN_U32
);
/*--- Service interface functions -------------------------------------------*/
/*--- Service interface functions -------------------------------------------*/
extern
T_PNAK_RESULT
pnak_limit_number_parallel_services
(
extern
T_PNAK_RESULT
pnak_limit_number_parallel_services
(
unsigned
short
,
unsigned
short
,
unsigned
short
,
unsigned
short
);
unsigned
short
,
unsigned
short
);
extern
T_PNAK_RESULT
pnak_send_service_req_res
(
extern
T_PNAK_RESULT
pnak_send_service_req_res
(
unsigned
short
,
unsigned
short
,
const
T_PNAK_SERVICE_REQ_RES
*
);
const
T_PNAK_SERVICE_REQ_RES
*
);
extern
T_PNAK_RESULT
pnak_get_service_ind
(
unsigned
short
,
T_PNAK_SERVICE_IND
*
);
extern
T_PNAK_RESULT
pnak_get_service_ind
(
unsigned
short
,
T_PNAK_SERVICE_IND
*
);
extern
T_PNAK_RESULT
pnak_get_service_con
(
unsigned
short
,
T_PNAK_SERVICE_CON
*
);
extern
T_PNAK_RESULT
pnak_get_service_con
(
unsigned
short
,
T_PNAK_SERVICE_CON
*
);
/*--- Event interface functions ---------------------------------------------*/
/*--- Event interface functions ---------------------------------------------*/
extern
T_PNAK_RESULT
pnak_set_mode
(
extern
T_PNAK_RESULT
pnak_set_mode
(
unsigned
short
,
unsigned
short
,
const
T_PNAK_EVENT_SET_MODE
*
);
const
T_PNAK_EVENT_SET_MODE
*
);
extern
T_PNAK_RESULT
pnak_set_device_state
(
extern
T_PNAK_RESULT
unsigned
short
,
const
T_PNAK_EVENT_SET_DEVICE_STATE
*
);
pnak_set_device_state
(
unsigned
short
,
const
T_PNAK_EVENT_SET_DEVICE_STATE
*
);
extern
T_PNAK_RESULT
pnak_get_state
(
unsigned
short
,
T_PNAK_EVENT_STATE
*
);
extern
T_PNAK_RESULT
pnak_get_state
(
unsigned
short
,
T_PNAK_EVENT_STATE
*
);
extern
T_PNAK_RESULT
pnak_get_device_state_ind
(
extern
T_PNAK_RESULT
pnak_get_device_state_ind
(
unsigned
short
,
unsigned
short
,
T_PNAK_EVENT_DEVICE_STATE
*
);
T_PNAK_EVENT_DEVICE_STATE
*
);
extern
T_PNAK_RESULT
pnak_get_alarm_ind
(
unsigned
short
,
T_PNAK_EVENT_ALARM
*
);
extern
T_PNAK_RESULT
pnak_get_alarm_ind
(
unsigned
short
,
T_PNAK_EVENT_ALARM
*
);
extern
T_PNAK_RESULT
pnak_get_alarm_ack_ind
(
extern
T_PNAK_RESULT
pnak_get_alarm_ack_ind
(
unsigned
short
,
unsigned
short
,
T_PNAK_EVENT_ALARM_ACK
*
);
T_PNAK_EVENT_ALARM_ACK
*
);
extern
T_PNAK_RESULT
pnak_get_ptcp_ind
(
unsigned
short
,
PN_U32
*
);
extern
T_PNAK_RESULT
pnak_get_ptcp_ind
(
unsigned
short
,
PN_U32
*
);
extern
T_PNAK_RESULT
pnak_get_mrpd_ind
(
unsigned
short
,
T_PNAK_EVENT_MRPD
*
);
extern
T_PNAK_RESULT
pnak_get_mrpd_ind
(
unsigned
short
,
T_PNAK_EVENT_MRPD
*
);
/*--- Data interface functions ----------------------------------------------*/
/*--- Data interface functions ----------------------------------------------*/
extern
T_PNAK_RESULT
pnak_set_iocr_data
(
unsigned
short
,
unsigned
short
,
extern
T_PNAK_RESULT
pnak_set_iocr_data
(
unsigned
short
,
unsigned
short
,
const
unsigned
char
*
,
unsigned
short
,
unsigned
char
);
const
unsigned
char
*
,
unsigned
short
,
unsigned
char
);
extern
T_PNAK_RESULT
pnak_get_iocr_data
(
unsigned
short
,
unsigned
short
,
extern
T_PNAK_RESULT
pnak_get_iocr_data
(
unsigned
short
,
unsigned
short
,
unsigned
char
*
,
unsigned
short
*
,
unsigned
char
*
,
unsigned
char
*
);
unsigned
char
*
,
unsigned
short
*
,
extern
T_PNAK_RESULT
pnak_get_consumer_data_changed_ind
(
unsigned
char
*
,
unsigned
char
*
);
unsigned
short
,
T_PNAK_DATA_CONSUMER_DATA_CHANGED
*
);
extern
T_PNAK_RESULT
extern
T_PNAK_RESULT
pnak_get_provider_data_updated
(
pnak_get_consumer_data_changed_ind
(
unsigned
short
,
unsigned
short
,
T_PNAK_DATA_PROVIDER_DATA_UPDATED
*
);
T_PNAK_DATA_CONSUMER_DATA_CHANGED
*
);
extern
T_PNAK_RESULT
pnak_get_provider_data_updated
(
unsigned
short
,
T_PNAK_DATA_PROVIDER_DATA_UPDATED
*
);
/*=============================================================================
/*=============================================================================
CALLBACK INTERFACE
CALLBACK INTERFACE
...
@@ -710,36 +740,40 @@ typedef int (*T_PNAK_WAIT_OBJECT_CALLBACK)(unsigned short, T_PNAK_WAIT_OBJECT);
...
@@ -710,36 +740,40 @@ typedef int (*T_PNAK_WAIT_OBJECT_CALLBACK)(unsigned short, T_PNAK_WAIT_OBJECT);
typedef
int
(
*
T_PNAK_HW_START_CALLBACK
)(
unsigned
short
,
T_PNAK_MODE_ID
,
void
*
);
typedef
int
(
*
T_PNAK_HW_START_CALLBACK
)(
unsigned
short
,
T_PNAK_MODE_ID
,
void
*
);
typedef
void
(
*
T_PROVIDER_CALLBACK
)(
unsigned
short
,
unsigned
short
,
typedef
void
(
*
T_PROVIDER_CALLBACK
)(
unsigned
short
,
unsigned
short
,
unsigned
char
*
,
unsigned
short
,
unsigned
char
*
);
unsigned
char
*
,
unsigned
short
,
unsigned
char
*
);
typedef
void
(
*
T_CONSUMER_CALLBACK
)(
unsigned
short
,
unsigned
short
,
typedef
void
(
*
T_CONSUMER_CALLBACK
)(
unsigned
short
,
unsigned
short
,
const
unsigned
char
*
,
unsigned
short
,
unsigned
char
,
unsigned
char
);
const
unsigned
char
*
,
unsigned
short
,
unsigned
char
,
unsigned
char
);
extern
T_PNAK_RESULT
pnak_register_provider_callback
(
extern
T_PNAK_RESULT
pnak_register_provider_callback
(
unsigned
short
,
unsigned
short
,
T_PROVIDER_CALLBACK
);
T_PROVIDER_CALLBACK
);
extern
T_PNAK_RESULT
pnak_unregister_provider_callback
(
unsigned
short
);
extern
T_PNAK_RESULT
pnak_unregister_provider_callback
(
unsigned
short
);
extern
T_PNAK_RESULT
pnak_register_consumer_callback
(
extern
T_PNAK_RESULT
pnak_register_consumer_callback
(
unsigned
short
,
unsigned
short
,
T_CONSUMER_CALLBACK
);
T_CONSUMER_CALLBACK
);
extern
T_PNAK_RESULT
pnak_unregister_consumer_callback
(
unsigned
short
);
extern
T_PNAK_RESULT
pnak_unregister_consumer_callback
(
unsigned
short
);
extern
T_PNAK_RESULT
pnak_register_ethernet_provider_hook
(
extern
T_PNAK_RESULT
pnak_register_ethernet_provider_hook
(
unsigned
short
,
unsigned
short
,
T_PROVIDER_CALLBACK
);
T_PROVIDER_CALLBACK
);
extern
T_PNAK_RESULT
pnak_unregister_ethernet_provider_hook
(
unsigned
short
);
extern
T_PNAK_RESULT
pnak_unregister_ethernet_provider_hook
(
unsigned
short
);
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
void
(
*
T_PNAK_CMCTL_STATISTIC_CALLBACK
)(
typedef
void
(
*
T_PNAK_CMCTL_STATISTIC_CALLBACK
)(
unsigned
short
,
unsigned
short
,
T_PNAK_CMCTL_STATISTIC
*
);
T_PNAK_CMCTL_STATISTIC
*
);
extern
T_PNAK_RESULT
pnak_register_cmctl_statistic_callback
(
extern
T_PNAK_RESULT
unsigned
short
,
T_PNAK_CMCTL_STATISTIC_CALLBACK
);
pnak_register_cmctl_statistic_callback
(
unsigned
short
,
T_PNAK_CMCTL_STATISTIC_CALLBACK
);
extern
T_PNAK_RESULT
pnak_unregister_cmctl_statistic_callback
(
unsigned
short
);
extern
T_PNAK_RESULT
pnak_unregister_cmctl_statistic_callback
(
unsigned
short
);
typedef
void
(
*
T_PNAK_CMDEV_STATISTIC_CALLBACK
)(
typedef
void
(
*
T_PNAK_CMDEV_STATISTIC_CALLBACK
)(
unsigned
short
,
unsigned
short
,
T_PNAK_CMDEV_STATISTIC
*
);
T_PNAK_CMDEV_STATISTIC
*
);
extern
T_PNAK_RESULT
pnak_register_cmdev_statistic_callback
(
extern
T_PNAK_RESULT
unsigned
short
,
T_PNAK_CMDEV_STATISTIC_CALLBACK
);
pnak_register_cmdev_statistic_callback
(
unsigned
short
,
T_PNAK_CMDEV_STATISTIC_CALLBACK
);
extern
T_PNAK_RESULT
pnak_unregister_cmdev_statistic_callback
(
unsigned
short
);
extern
T_PNAK_RESULT
pnak_unregister_cmdev_statistic_callback
(
unsigned
short
);
#endif
/* __DOXYGEN__ */
#endif
/* __DOXYGEN__ */
...
@@ -838,12 +872,12 @@ SOCKET USER INTERFACE
...
@@ -838,12 +872,12 @@ SOCKET USER INTERFACE
(SOCK_FLAG_TYPE_TCP | 0x00000001uL)
/**< Enables keep-alive packets to \
(SOCK_FLAG_TYPE_TCP | 0x00000001uL)
/**< Enables keep-alive packets to \
supervise a TCP connection */
supervise a TCP connection */
#define SOCK_FLAG_ENABLE_BROADCAST \
#define SOCK_FLAG_ENABLE_BROADCAST \
(SOCK_FLAG_TYPE_UDP
\
(SOCK_FLAG_TYPE_UDP
|
\
| 0x00000002uL)
/**< Enables the transmission of broadcast messages over
\
0x00000002uL)
/**< Enables the transmission of broadcast messages over
\
a UDP socket */
a UDP socket */
#define SOCK_FLAG_ENABLE_MULTICAST \
#define SOCK_FLAG_ENABLE_MULTICAST \
(SOCK_FLAG_TYPE_UDP
\
(SOCK_FLAG_TYPE_UDP
|
\
| 0x00000004uL)
/**< Enables the transmission of multicast messages over
\
0x00000004uL)
/**< Enables the transmission of multicast messages over
\
a UDP socket */
a UDP socket */
#define SOCK_FLAG_USER_MASK \
#define SOCK_FLAG_USER_MASK \
0x0000FFFFuL
/**< Specifies the bits wich are valid for the socket \
0x0000FFFFuL
/**< Specifies the bits wich are valid for the socket \
...
@@ -931,7 +965,8 @@ typedef enum _T_SOCKET_RESULT {
...
@@ -931,7 +965,8 @@ typedef enum _T_SOCKET_RESULT {
* (big-endian).
* (big-endian).
*/
*/
typedef
struct
_T_PNAK_SOCK_ADDR
{
typedef
struct
_T_PNAK_SOCK_ADDR
{
PN_U32
IpAddress
;
/**< IP address */
PN_U32
IpAddress
;
/**< IP address */
unsigned
short
Port
;
/**< port number */
unsigned
short
Port
;
/**< port number */
...
@@ -948,7 +983,8 @@ typedef struct _T_PNAK_SOCK_ADDR {
...
@@ -948,7 +983,8 @@ typedef struct _T_PNAK_SOCK_ADDR {
* @{
* @{
* \brief Configurable Options for the socket interface
* \brief Configurable Options for the socket interface
*/
*/
typedef
struct
_T_PNAK_SOCK_CONFIG_OPTIONS
{
typedef
struct
_T_PNAK_SOCK_CONFIG_OPTIONS
{
PN_U32
PN_U32
Timeout
;
/**< Keep-Alive Timeout in milliseconds. The Keep-Alive Timeout
Timeout
;
/**< Keep-Alive Timeout in milliseconds. The Keep-Alive Timeout
will be used for the supervision of TCP connections. The
will be used for the supervision of TCP connections. The
...
@@ -973,7 +1009,8 @@ typedef struct _T_PNAK_SOCK_CONFIG_OPTIONS {
...
@@ -973,7 +1009,8 @@ typedef struct _T_PNAK_SOCK_CONFIG_OPTIONS {
* All of the structure data must be specified in network-byte-order
* All of the structure data must be specified in network-byte-order
* (big-endian).
* (big-endian).
*/
*/
typedef
struct
_T_PNAK_SOCK_NETWORK_SETTINGS
{
typedef
struct
_T_PNAK_SOCK_NETWORK_SETTINGS
{
PN_U32
IpAddress
;
/**< The IP-Address of the Device. For future use only. */
PN_U32
IpAddress
;
/**< The IP-Address of the Device. For future use only. */
PN_U32
SubnetMask
;
/**< The Netmask of the Device. For future use only. */
PN_U32
SubnetMask
;
/**< The Netmask of the Device. For future use only. */
PN_U32
GatewayAddress
;
/**< The Gateway of the Device. For future use only. */
PN_U32
GatewayAddress
;
/**< The Gateway of the Device. For future use only. */
...
@@ -992,7 +1029,8 @@ typedef struct _T_PNAK_SOCK_NETWORK_SETTINGS {
...
@@ -992,7 +1029,8 @@ typedef struct _T_PNAK_SOCK_NETWORK_SETTINGS {
* @{
* @{
* \brief This structure holds the initialization data for the socket interface
* \brief This structure holds the initialization data for the socket interface
*/
*/
typedef
struct
_T_PNAK_SOCK_INIT
{
typedef
struct
_T_PNAK_SOCK_INIT
{
T_PNAK_SOCK_NETWORK_SETTINGS
T_PNAK_SOCK_NETWORK_SETTINGS
NetworkSettings
;
/**< Network specific parameter */
NetworkSettings
;
/**< Network specific parameter */
T_PNAK_SOCK_CONFIG_OPTIONS
T_PNAK_SOCK_CONFIG_OPTIONS
...
@@ -1054,7 +1092,8 @@ typedef struct _T_PNAK_SOCK_INIT {
...
@@ -1054,7 +1092,8 @@ typedef struct _T_PNAK_SOCK_INIT {
* @{
* @{
* \brief This structure holds status informations about a single TCP connection
* \brief This structure holds status informations about a single TCP connection
*/
*/
typedef
struct
_T_PNAK_SOCK_TCP_CONNECTION_LOCAL_STATUS
{
typedef
struct
_T_PNAK_SOCK_TCP_CONNECTION_LOCAL_STATUS
{
PN_U32
Status
;
/**< Local status of the TCP connection. Valid values: \ref
PN_U32
Status
;
/**< Local status of the TCP connection. Valid values: \ref
ConnectionStatus */
ConnectionStatus */
PN_U32
StatusCode
;
/**< Indicates the last error of the TCP connection. Valid
PN_U32
StatusCode
;
/**< Indicates the last error of the TCP connection. Valid
...
@@ -1072,7 +1111,8 @@ typedef struct _T_PNAK_SOCK_TCP_CONNECTION_LOCAL_STATUS {
...
@@ -1072,7 +1111,8 @@ typedef struct _T_PNAK_SOCK_TCP_CONNECTION_LOCAL_STATUS {
* \brief This structure holds status informations about all TCP connections of
* \brief This structure holds status informations about all TCP connections of
* a socket
* a socket
*/
*/
typedef
struct
_T_PNAK_SOCK_TCP_LOCAL_STATUS_DATA
{
typedef
struct
_T_PNAK_SOCK_TCP_LOCAL_STATUS_DATA
{
PN_U32
NumberConnections
;
/**< Number of TCP connection for which status info
PN_U32
NumberConnections
;
/**< Number of TCP connection for which status info
is provided */
is provided */
...
@@ -1088,7 +1128,8 @@ typedef struct _T_PNAK_SOCK_TCP_LOCAL_STATUS_DATA {
...
@@ -1088,7 +1128,8 @@ typedef struct _T_PNAK_SOCK_TCP_LOCAL_STATUS_DATA {
* Status of a socket
* Status of a socket
* @{
* @{
*/
*/
#define SOCK_LOCAL_STATUS_CLOSED 0x00000001uL
/**< The local socket is closed \
#define SOCK_LOCAL_STATUS_CLOSED \
0x00000001uL
/**< The local socket is closed \
*/
*/
#define SOCK_LOCAL_STATUS_OFFLINE \
#define SOCK_LOCAL_STATUS_OFFLINE \
0x00000002uL
/**< The local port associated with the socket is not open. \
0x00000002uL
/**< The local port associated with the socket is not open. \
...
@@ -1116,7 +1157,8 @@ typedef struct _T_PNAK_SOCK_TCP_LOCAL_STATUS_DATA {
...
@@ -1116,7 +1157,8 @@ typedef struct _T_PNAK_SOCK_TCP_LOCAL_STATUS_DATA {
* @{
* @{
* \brief This structure holds status informations about a socket
* \brief This structure holds status informations about a socket
*/
*/
typedef
struct
_T_PNAK_SOCK_IOC_GET_LOCAL_STATUS
{
typedef
struct
_T_PNAK_SOCK_IOC_GET_LOCAL_STATUS
{
PN_U32
Status
;
/**< Common socket status information. Valid values: \ref
PN_U32
Status
;
/**< Common socket status information. Valid values: \ref
SocketStatus */
SocketStatus */
PN_U32
StatusCode
;
/**< Common socket error code. Valid values: \ref
PN_U32
StatusCode
;
/**< Common socket error code. Valid values: \ref
...
@@ -1172,7 +1214,8 @@ typedef struct _T_PNAK_SOCK_IOC_GET_LOCAL_STATUS {
...
@@ -1172,7 +1214,8 @@ typedef struct _T_PNAK_SOCK_IOC_GET_LOCAL_STATUS {
* @{
* @{
* \brief This structure holds TCP specific send status informations
* \brief This structure holds TCP specific send status informations
*/
*/
typedef
struct
_T_PNAK_SOCK_TCP_SEND_STATUS_DATA
{
typedef
struct
_T_PNAK_SOCK_TCP_SEND_STATUS_DATA
{
T_PNAK_SOCK_ADDR
T_PNAK_SOCK_ADDR
RemoteAddr
;
/**< Address information of the remote connection partner */
RemoteAddr
;
/**< Address information of the remote connection partner */
...
@@ -1184,7 +1227,8 @@ typedef struct _T_PNAK_SOCK_TCP_SEND_STATUS_DATA {
...
@@ -1184,7 +1227,8 @@ typedef struct _T_PNAK_SOCK_TCP_SEND_STATUS_DATA {
* @{
* @{
* \brief This structure holds send status informations
* \brief This structure holds send status informations
*/
*/
typedef
struct
_T_PNAK_SOCK_IOC_GET_SEND_STATUS
{
typedef
struct
_T_PNAK_SOCK_IOC_GET_SEND_STATUS
{
PN_U32
Status
;
/**< Common send status information. Valid values: \ref
PN_U32
Status
;
/**< Common send status information. Valid values: \ref
SendStatus */
SendStatus */
PN_U32
StatusCode
;
/**< Common send error code. Valid values: \ref
PN_U32
StatusCode
;
/**< Common send error code. Valid values: \ref
...
@@ -1221,7 +1265,8 @@ typedef struct _T_PNAK_SOCK_IOC_GET_SEND_STATUS {
...
@@ -1221,7 +1265,8 @@ typedef struct _T_PNAK_SOCK_IOC_GET_SEND_STATUS {
* Receive Error Codes
* Receive Error Codes
* @{
* @{
*/
*/
#define SOCK_RECEIVE_STATUS_CODE_NO_ERROR 0x00000000uL
/**< No error detected \
#define SOCK_RECEIVE_STATUS_CODE_NO_ERROR \
0x00000000uL
/**< No error detected \
*/
*/
/** @} */
/** @} */
/** @} */
/** @} */
...
@@ -1230,7 +1275,8 @@ typedef struct _T_PNAK_SOCK_IOC_GET_SEND_STATUS {
...
@@ -1230,7 +1275,8 @@ typedef struct _T_PNAK_SOCK_IOC_GET_SEND_STATUS {
* @{
* @{
* \brief This structure holds TCP specific receive status informations
* \brief This structure holds TCP specific receive status informations
*/
*/
typedef
struct
_T_PNAK_SOCK_TCP_RECEIVE_STATUS_DATA
{
typedef
struct
_T_PNAK_SOCK_TCP_RECEIVE_STATUS_DATA
{
T_PNAK_SOCK_ADDR
T_PNAK_SOCK_ADDR
RemoteAddr
;
/**< Address information of the remote connection partner */
RemoteAddr
;
/**< Address information of the remote connection partner */
...
@@ -1242,7 +1288,8 @@ typedef struct _T_PNAK_SOCK_TCP_RECEIVE_STATUS_DATA {
...
@@ -1242,7 +1288,8 @@ typedef struct _T_PNAK_SOCK_TCP_RECEIVE_STATUS_DATA {
* @{
* @{
* \brief This structure holds receive status informations
* \brief This structure holds receive status informations
*/
*/
typedef
struct
_T_PNAK_SOCK_IOC_GET_RECEIVE_STATUS
{
typedef
struct
_T_PNAK_SOCK_IOC_GET_RECEIVE_STATUS
{
PN_U32
Status
;
/**< Common receive status information. Valid values: \ref
PN_U32
Status
;
/**< Common receive status information. Valid values: \ref
ReceiveStatus */
ReceiveStatus */
PN_U32
StatusCode
;
/**< Common receive error code. Valid values: \ref
PN_U32
StatusCode
;
/**< Common receive error code. Valid values: \ref
...
@@ -1265,7 +1312,8 @@ typedef struct _T_PNAK_SOCK_IOC_GET_RECEIVE_STATUS {
...
@@ -1265,7 +1312,8 @@ typedef struct _T_PNAK_SOCK_IOC_GET_RECEIVE_STATUS {
* @{
* @{
* \brief This structure specifies the TCP connection which shall be aborted
* \brief This structure specifies the TCP connection which shall be aborted
*/
*/
typedef
struct
_T_PNAK_SOCK_IOC_CLOSE_TCP_CONNECTION
{
typedef
struct
_T_PNAK_SOCK_IOC_CLOSE_TCP_CONNECTION
{
T_PNAK_SOCK_ADDR
T_PNAK_SOCK_ADDR
RemoteAddr
;
/**< Address information of the remote connection partner */
RemoteAddr
;
/**< Address information of the remote connection partner */
...
@@ -1282,7 +1330,8 @@ typedef struct _T_PNAK_SOCK_IOC_CLOSE_TCP_CONNECTION {
...
@@ -1282,7 +1330,8 @@ typedef struct _T_PNAK_SOCK_IOC_CLOSE_TCP_CONNECTION {
* \brief This structure specifies the IP addresses from which a connection
* \brief This structure specifies the IP addresses from which a connection
* establishment shall be accepted
* establishment shall be accepted
*/
*/
typedef
struct
_T_PNAK_SOCK_IOC_TCP_ACCEPT_FILTER
{
typedef
struct
_T_PNAK_SOCK_IOC_TCP_ACCEPT_FILTER
{
PN_U16
NumberEntries
;
/**< number of filter entries */
PN_U16
NumberEntries
;
/**< number of filter entries */
PN_U16
Alignment
;
PN_U16
Alignment
;
...
@@ -1299,7 +1348,8 @@ typedef struct _T_PNAK_SOCK_IOC_TCP_ACCEPT_FILTER {
...
@@ -1299,7 +1348,8 @@ typedef struct _T_PNAK_SOCK_IOC_TCP_ACCEPT_FILTER {
* \brief This structure specifies the IP addresses of the multicast group the
* \brief This structure specifies the IP addresses of the multicast group the
* application wants to join or leave
* application wants to join or leave
*/
*/
typedef
struct
_T_PNAK_SOCK_IOC_MULTICAST
{
typedef
struct
_T_PNAK_SOCK_IOC_MULTICAST
{
PN_U32
IpAddress
;
PN_U32
IpAddress
;
}
PACK_WORD_ALIGNMENT
(
T_PNAK_SOCK_IOC_MULTICAST
);
}
PACK_WORD_ALIGNMENT
(
T_PNAK_SOCK_IOC_MULTICAST
);
...
@@ -1323,7 +1373,8 @@ typedef struct _T_PNAK_SOCK_IOC_MULTICAST {
...
@@ -1323,7 +1373,8 @@ typedef struct _T_PNAK_SOCK_IOC_MULTICAST {
#define SOCK_IOC_TCP_ACCEPT_FILTER \
#define SOCK_IOC_TCP_ACCEPT_FILTER \
0x00000005uL
/**< Defines which IP Addresses are accepted by the socket */
0x00000005uL
/**< Defines which IP Addresses are accepted by the socket */
#define SOCK_IOC_UDP_ADD_MULTICAST 0x00000006uL
/**< Join a multicast group */
#define SOCK_IOC_UDP_ADD_MULTICAST 0x00000006uL
/**< Join a multicast group */
#define SOCK_IOC_UDP_DEL_MULTICAST 0x00000007uL
/**< Leave a multicast group \
#define SOCK_IOC_UDP_DEL_MULTICAST \
0x00000007uL
/**< Leave a multicast group \
*/
*/
/** @} */
/** @} */
/** @} */
/** @} */
...
@@ -1332,7 +1383,8 @@ typedef struct _T_PNAK_SOCK_IOC_MULTICAST {
...
@@ -1332,7 +1383,8 @@ typedef struct _T_PNAK_SOCK_IOC_MULTICAST {
* @{
* @{
* \brief This structure holds the data for an IO Control Command
* \brief This structure holds the data for an IO Control Command
*/
*/
typedef
struct
_T_PNAK_SOCK_IO_CONTROL
{
typedef
struct
_T_PNAK_SOCK_IO_CONTROL
{
PN_U32
Command
;
/**< Specifies the IO Control Command. Valid values: \ref
PN_U32
Command
;
/**< Specifies the IO Control Command. Valid values: \ref
IoctlCommand */
IoctlCommand */
...
@@ -1375,19 +1427,22 @@ extern T_SOCKET_RESULT pnak_sock_term(unsigned short);
...
@@ -1375,19 +1427,22 @@ extern T_SOCKET_RESULT pnak_sock_term(unsigned short);
/*--- socket interface functions --------------------------------------------*/
/*--- socket interface functions --------------------------------------------*/
extern
T_SOCKET_RESULT
pnak_sock_create
(
unsigned
short
,
PN_U32
,
extern
T_SOCKET_RESULT
pnak_sock_create
(
unsigned
short
,
PN_U32
,
T_PNAK_SOCK_ADDR
*
,
T_PNAK_SOCK_ADDR
*
,
unsigned
short
*
);
T_PNAK_SOCK_ADDR
*
,
T_PNAK_SOCK_ADDR
*
,
unsigned
short
*
);
extern
T_SOCKET_RESULT
pnak_sock_close
(
unsigned
short
,
unsigned
short
);
extern
T_SOCKET_RESULT
pnak_sock_close
(
unsigned
short
,
unsigned
short
);
extern
T_SOCKET_RESULT
pnak_sock_send
(
unsigned
short
,
unsigned
short
,
extern
T_SOCKET_RESULT
pnak_sock_send
(
unsigned
short
,
unsigned
short
,
T_PNAK_SOCK_ADDR
*
,
PN_U16
,
const
unsigned
char
*
);
T_PNAK_SOCK_ADDR
*
,
PN_U16
,
extern
T_SOCKET_RESULT
pnak_sock_receive
(
const
unsigned
char
*
);
unsigned
short
,
unsigned
short
,
T_PNAK_SOCK_ADDR
*
,
PN_U16
*
,
unsigned
char
*
);
extern
T_SOCKET_RESULT
pnak_sock_receive
(
unsigned
short
,
unsigned
short
,
extern
T_SOCKET_RESULT
pnak_sock_ioctl
(
T_PNAK_SOCK_ADDR
*
,
PN_U16
*
,
unsigned
short
,
unsigned
short
,
T_PNAK_SOCK_IO_CONTROL
*
);
unsigned
char
*
);
extern
T_SOCKET_RESULT
pnak_sock_ioctl
(
unsigned
short
,
unsigned
short
,
T_PNAK_SOCK_IO_CONTROL
*
);
/*--- socket interface helper functions -------------------------------------*/
/*--- socket interface helper functions -------------------------------------*/
extern
T_SOCKET_RESULT
pnak_sock_get_receive_status
(
extern
T_SOCKET_RESULT
pnak_sock_get_receive_status
(
unsigned
short
,
unsigned
short
,
T_BITSET_64
*
);
T_BITSET_64
*
);
#endif
/* __DOXYGEN__ */
#endif
/* __DOXYGEN__ */
...
...
profibus/lib/rt/src/rt_profinet.h
View file @
df0831a3
...
@@ -160,10 +160,10 @@ DEFINES
...
@@ -160,10 +160,10 @@ DEFINES
#define PROFINET_AR_PROPERTY_DATA_RATE_1GBIT 0x00000040uL
#define PROFINET_AR_PROPERTY_DATA_RATE_1GBIT 0x00000040uL
#define PROFINET_AR_PROPERTY_DATA_RATE_10GBIT 0x00000060uL
#define PROFINET_AR_PROPERTY_DATA_RATE_10GBIT 0x00000060uL
#define PROFINET_AR_PROPERTY_DATA_RATE_MASK \
#define PROFINET_AR_PROPERTY_DATA_RATE_MASK \
(PROFINET_AR_PROPERTY_DATA_RATE_AT_LEAST_100MBIT
\
(PROFINET_AR_PROPERTY_DATA_RATE_AT_LEAST_100MBIT
|
\
| PROFINET_AR_PROPERTY_DATA_RATE_100MBIT
\
PROFINET_AR_PROPERTY_DATA_RATE_100MBIT |
\
| PROFINET_AR_PROPERTY_DATA_RATE_1GBIT
\
PROFINET_AR_PROPERTY_DATA_RATE_1GBIT |
\
|
PROFINET_AR_PROPERTY_DATA_RATE_10GBIT)
PROFINET_AR_PROPERTY_DATA_RATE_10GBIT)
#define PROFINET_AR_PROPERTY_ACCESS_BY_EXP_SUB_BLOCK 0x00000000uL
#define PROFINET_AR_PROPERTY_ACCESS_BY_EXP_SUB_BLOCK 0x00000000uL
#define PROFINET_AR_PROPERTY_ACCESS_BY_DEVICE 0x00000100uL
#define PROFINET_AR_PROPERTY_ACCESS_BY_DEVICE 0x00000100uL
#define PROFINET_AR_PROPERTY_COMPANION_SINGLE_AR 0x00000000uL
#define PROFINET_AR_PROPERTY_COMPANION_SINGLE_AR 0x00000000uL
...
@@ -174,21 +174,22 @@ DEFINES
...
@@ -174,21 +174,22 @@ DEFINES
#define PROFINET_AR_PROPERTY_STARTUP_MODE_LEGACY 0x00000000uL
#define PROFINET_AR_PROPERTY_STARTUP_MODE_LEGACY 0x00000000uL
#define PROFINET_AR_PROPERTY_STARTUP_MODE_ADVANCED 0x40000000uL
#define PROFINET_AR_PROPERTY_STARTUP_MODE_ADVANCED 0x40000000uL
#define PROFINET_AR_PROPERTY_STARTUP_MODE_MASK \
#define PROFINET_AR_PROPERTY_STARTUP_MODE_MASK \
(PROFINET_AR_PROPERTY_STARTUP_MODE_LEGACY
\
(PROFINET_AR_PROPERTY_STARTUP_MODE_LEGACY
|
\
|
PROFINET_AR_PROPERTY_STARTUP_MODE_ADVANCED)
PROFINET_AR_PROPERTY_STARTUP_MODE_ADVANCED)
#define PROFINET_AR_PROPERTY_PULL_MODULE_ALARM_ALLOWED 0x80000000uL
#define PROFINET_AR_PROPERTY_PULL_MODULE_ALARM_ALLOWED 0x80000000uL
#define PROFINET_AR_PROPERTY_MASK \
#define PROFINET_AR_PROPERTY_MASK \
(PROFINET_AR_PROPERTY_STATE_MASK | PROFINET_AR_PROPERTY_TAKEOVER_NOT_ALLOWED \
(PROFINET_AR_PROPERTY_STATE_MASK | \
| PROFINET_AR_PROPERTY_TAKEOVER_ALLOWED \
PROFINET_AR_PROPERTY_TAKEOVER_NOT_ALLOWED | \
| PROFINET_AR_PROPERTY_PARAMETER_SERVER_EXT \
PROFINET_AR_PROPERTY_TAKEOVER_ALLOWED | \
| PROFINET_AR_PROPERTY_PARAMETER_SERVER_CM \
PROFINET_AR_PROPERTY_PARAMETER_SERVER_EXT | \
| PROFINET_AR_PROPERTY_DATA_RATE_MASK \
PROFINET_AR_PROPERTY_PARAMETER_SERVER_CM | \
| PROFINET_AR_PROPERTY_ACCESS_BY_EXP_SUB_BLOCK \
PROFINET_AR_PROPERTY_DATA_RATE_MASK | \
| PROFINET_AR_PROPERTY_ACCESS_BY_DEVICE \
PROFINET_AR_PROPERTY_ACCESS_BY_EXP_SUB_BLOCK | \
| PROFINET_AR_PROPERTY_COMPANION_SINGLE_AR \
PROFINET_AR_PROPERTY_ACCESS_BY_DEVICE | \
| PROFINET_AR_PROPERTY_COMPANION_AR_WITHOUT_ACK \
PROFINET_AR_PROPERTY_COMPANION_SINGLE_AR | \
| PROFINET_AR_PROPERTY_STARTUP_MODE_MASK \
PROFINET_AR_PROPERTY_COMPANION_AR_WITHOUT_ACK | \
| PROFINET_AR_PROPERTY_PULL_MODULE_ALARM_ALLOWED)
PROFINET_AR_PROPERTY_STARTUP_MODE_MASK | \
PROFINET_AR_PROPERTY_PULL_MODULE_ALARM_ALLOWED)
/*===========================================================================*/
/*===========================================================================*/
...
@@ -204,8 +205,8 @@ DEFINES
...
@@ -204,8 +205,8 @@ DEFINES
#define PROFINET_IO_CR_RT_CLASS3 0x00000003uL
#define PROFINET_IO_CR_RT_CLASS3 0x00000003uL
#define PROFINET_IO_CR_RT_CLASS_UDP 0x00000004uL
#define PROFINET_IO_CR_RT_CLASS_UDP 0x00000004uL
#define PROFINET_IO_CR_RT_CLASS_MASK \
#define PROFINET_IO_CR_RT_CLASS_MASK \
(PROFINET_IO_CR_RT_CLASS1 | PROFINET_IO_CR_RT_CLASS2
\
(PROFINET_IO_CR_RT_CLASS1 | PROFINET_IO_CR_RT_CLASS2
|
\
|
PROFINET_IO_CR_RT_CLASS3 | PROFINET_IO_CR_RT_CLASS_UDP)
PROFINET_IO_CR_RT_CLASS3 | PROFINET_IO_CR_RT_CLASS_UDP)
#define PROFINET_IO_CR_PROPERTIES_RESERVED_MASK 0xFF001FF0uL
#define PROFINET_IO_CR_PROPERTIES_RESERVED_MASK 0xFF001FF0uL
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
...
@@ -242,8 +243,8 @@ DEFINES
...
@@ -242,8 +243,8 @@ DEFINES
#define PROFINET_IO_CR_TAG_DEFAULT_VLAN 0x0001uL
#define PROFINET_IO_CR_TAG_DEFAULT_VLAN 0x0001uL
#define PROFINET_IO_CR_TAG_USER_PRIORITY 0xC000uL
#define PROFINET_IO_CR_TAG_USER_PRIORITY 0xC000uL
#define PROFINET_IO_CR_TAG_MASK \
#define PROFINET_IO_CR_TAG_MASK \
(PROFINET_IO_CR_TAG_NO_VLAN | PROFINET_IO_CR_TAG_DEFAULT_VLAN
\
(PROFINET_IO_CR_TAG_NO_VLAN | PROFINET_IO_CR_TAG_DEFAULT_VLAN
|
\
|
PROFINET_IO_CR_TAG_USER_PRIORITY)
PROFINET_IO_CR_TAG_USER_PRIORITY)
#define PROFINET_IO_CR_MIN_FRAME_SEND_OFFSET 0x00000000uL
#define PROFINET_IO_CR_MIN_FRAME_SEND_OFFSET 0x00000000uL
#define PROFINET_IO_CR_MAX_FRAME_SEND_OFFSET 0x003D08FFuL
#define PROFINET_IO_CR_MAX_FRAME_SEND_OFFSET 0x003D08FFuL
...
@@ -281,9 +282,9 @@ DEFINES
...
@@ -281,9 +282,9 @@ DEFINES
#define PROFINET_MODULE_STATE_PROPER_MODULE 0x0002u
#define PROFINET_MODULE_STATE_PROPER_MODULE 0x0002u
#define PROFINET_MODULE_STATE_SUBSTITUTE_MODULE 0x0003u
#define PROFINET_MODULE_STATE_SUBSTITUTE_MODULE 0x0003u
#define PROFINET_MODULE_STATE_MASK \
#define PROFINET_MODULE_STATE_MASK \
(PROFINET_MODULE_STATE_NO_MODULE | PROFINET_MODULE_STATE_WRONG_MODULE
\
(PROFINET_MODULE_STATE_NO_MODULE | PROFINET_MODULE_STATE_WRONG_MODULE
|
\
| PROFINET_MODULE_STATE_PROPER_MODULE
\
PROFINET_MODULE_STATE_PROPER_MODULE |
\
|
PROFINET_MODULE_STATE_SUBSTITUTE_MODULE)
PROFINET_MODULE_STATE_SUBSTITUTE_MODULE)
/*===========================================================================*/
/*===========================================================================*/
...
@@ -307,9 +308,9 @@ DEFINES
...
@@ -307,9 +308,9 @@ DEFINES
#define PROFINET_IO_SUBMODULE_TYPE_OUTPUT 0x0002u
#define PROFINET_IO_SUBMODULE_TYPE_OUTPUT 0x0002u
#define PROFINET_IO_SUBMODULE_TYPE_INPUT_AND_OUTPUT 0x0003u
#define PROFINET_IO_SUBMODULE_TYPE_INPUT_AND_OUTPUT 0x0003u
#define PROFINET_IO_SUBMODULE_TYPE_IO_MASK \
#define PROFINET_IO_SUBMODULE_TYPE_IO_MASK \
(PROFINET_IO_SUBMODULE_TYPE_NO_INPUT_NO_OUTPUT
\
(PROFINET_IO_SUBMODULE_TYPE_NO_INPUT_NO_OUTPUT
|
\
| PROFINET_IO_SUBMODULE_TYPE_INPUT | PROFINET_IO_SUBMODULE_TYPE_OUTPUT
\
PROFINET_IO_SUBMODULE_TYPE_INPUT | PROFINET_IO_SUBMODULE_TYPE_OUTPUT |
\
|
PROFINET_IO_SUBMODULE_TYPE_INPUT_AND_OUTPUT)
PROFINET_IO_SUBMODULE_TYPE_INPUT_AND_OUTPUT)
#define PROFINET_IO_SUBMODULE_TYPE_SHARED_INPUT 0x0004u
#define PROFINET_IO_SUBMODULE_TYPE_SHARED_INPUT 0x0004u
#define PROFINET_IO_SUBMODULE_TYPE_NORMAL_INPUT 0x0000u
#define PROFINET_IO_SUBMODULE_TYPE_NORMAL_INPUT 0x0000u
...
@@ -320,14 +321,14 @@ DEFINES
...
@@ -320,14 +321,14 @@ DEFINES
#define PROFINET_IO_SUBMODULE_TYPE_DISCARD_IOXS 0x0020u
#define PROFINET_IO_SUBMODULE_TYPE_DISCARD_IOXS 0x0020u
#define PROFINET_IO_SUBMODULE_TYPE_MASK \
#define PROFINET_IO_SUBMODULE_TYPE_MASK \
(PROFINET_IO_SUBMODULE_TYPE_IO_MASK
\
(PROFINET_IO_SUBMODULE_TYPE_IO_MASK
|
\
| PROFINET_IO_SUBMODULE_TYPE_SHARED_INPUT
\
PROFINET_IO_SUBMODULE_TYPE_SHARED_INPUT |
\
| PROFINET_IO_SUBMODULE_TYPE_NORMAL_INPUT
\
PROFINET_IO_SUBMODULE_TYPE_NORMAL_INPUT |
\
| PROFINET_IO_SUBMODULE_TYPE_REDUCED_INPUT
\
PROFINET_IO_SUBMODULE_TYPE_REDUCED_INPUT |
\
| PROFINET_IO_SUBMODULE_TYPE_NORMAL_OUTPUT
\
PROFINET_IO_SUBMODULE_TYPE_NORMAL_OUTPUT |
\
| PROFINET_IO_SUBMODULE_TYPE_REDUCED_OUTPUT
\
PROFINET_IO_SUBMODULE_TYPE_REDUCED_OUTPUT |
\
| PROFINET_IO_SUBMODULE_TYPE_NORMAL_IOXS
\
PROFINET_IO_SUBMODULE_TYPE_NORMAL_IOXS |
\
|
PROFINET_IO_SUBMODULE_TYPE_DISCARD_IOXS)
PROFINET_IO_SUBMODULE_TYPE_DISCARD_IOXS)
/*===========================================================================*/
/*===========================================================================*/
...
@@ -350,11 +351,10 @@ DEFINES
...
@@ -350,11 +351,10 @@ DEFINES
#define CYCLIC_DATA_STATUS_NORMAL_OPERATION 0x20u
#define CYCLIC_DATA_STATUS_NORMAL_OPERATION 0x20u
#define CYCLIC_DATA_STATUS_PROBLEM_DETECTED 0x00u
#define CYCLIC_DATA_STATUS_PROBLEM_DETECTED 0x00u
#define CYCLIC_DATA_STATUS_MASK \
#define CYCLIC_DATA_STATUS_MASK \
(CYCLIC_DATA_STATUS_STATE_PRIMARY | CYCLIC_DATA_STATUS_STATE_BACKUP \
(CYCLIC_DATA_STATUS_STATE_PRIMARY | CYCLIC_DATA_STATUS_STATE_BACKUP | \
| CYCLIC_DATA_STATUS_DATA_VALID | CYCLIC_DATA_STATUS_DATA_INVALID \
CYCLIC_DATA_STATUS_DATA_VALID | CYCLIC_DATA_STATUS_DATA_INVALID | \
| CYCLIC_DATA_STATUS_STATE_RUN | CYCLIC_DATA_STATUS_STATE_STOP \
CYCLIC_DATA_STATUS_STATE_RUN | CYCLIC_DATA_STATUS_STATE_STOP | \
| CYCLIC_DATA_STATUS_NORMAL_OPERATION \
CYCLIC_DATA_STATUS_NORMAL_OPERATION | CYCLIC_DATA_STATUS_PROBLEM_DETECTED)
| CYCLIC_DATA_STATUS_PROBLEM_DETECTED)
/*===========================================================================*/
/*===========================================================================*/
...
@@ -404,12 +404,12 @@ DEFINES
...
@@ -404,12 +404,12 @@ DEFINES
#define PROFINET_MC_CR_ADDR_RESOLUTION_MIN_FACTOR 0x00010000uL
#define PROFINET_MC_CR_ADDR_RESOLUTION_MIN_FACTOR 0x00010000uL
#define PROFINET_MC_CR_ADDR_RESOLUTION_MAX_FACTOR 0xFFFF0000uL
#define PROFINET_MC_CR_ADDR_RESOLUTION_MAX_FACTOR 0xFFFF0000uL
#define PROFINET_MC_CR_ADDR_RESOLUTION_FACTOR_MASK \
#define PROFINET_MC_CR_ADDR_RESOLUTION_FACTOR_MASK \
(PROFINET_MC_CR_ADDR_RESOLUTION_MIN_FACTOR
\
(PROFINET_MC_CR_ADDR_RESOLUTION_MIN_FACTOR
|
\
|
PROFINET_MC_CR_ADDR_RESOLUTION_MAX_FACTOR)
PROFINET_MC_CR_ADDR_RESOLUTION_MAX_FACTOR)
#define PROFINET_MC_CR_MASK \
#define PROFINET_MC_CR_MASK \
(PROFINET_MC_CR_ADDR_RESOLUTION_MASK
\
(PROFINET_MC_CR_ADDR_RESOLUTION_MASK
|
\
|
PROFINET_MC_CR_ADDR_RESOLUTION_FACTOR_MASK)
PROFINET_MC_CR_ADDR_RESOLUTION_FACTOR_MASK)
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
...
@@ -482,7 +482,8 @@ DEFINES
...
@@ -482,7 +482,8 @@ DEFINES
/*===========================================================================*/
/*===========================================================================*/
typedef
struct
_T_PN_MAC_ADDRESS
{
typedef
struct
_T_PN_MAC_ADDRESS
{
PN_U8
HighAndVersionHighByte
;
PN_U8
HighAndVersionHighByte
;
PN_U8
HighAndVersionLowByte
;
PN_U8
HighAndVersionLowByte
;
...
@@ -496,7 +497,8 @@ typedef struct _T_PN_MAC_ADDRESS {
...
@@ -496,7 +497,8 @@ typedef struct _T_PN_MAC_ADDRESS {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PROFINET_UUID
{
typedef
struct
_T_PROFINET_UUID
{
PN_U8
TimeLowHighWordHighByte
;
PN_U8
TimeLowHighWordHighByte
;
PN_U8
TimeLowHighWordLowByte
;
PN_U8
TimeLowHighWordLowByte
;
PN_U8
TimeLowLowWordHighByte
;
PN_U8
TimeLowLowWordHighByte
;
...
@@ -625,7 +627,8 @@ typedef struct _T_PROFINET_UUID {
...
@@ -625,7 +627,8 @@ typedef struct _T_PROFINET_UUID {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PN_SERVICE_ERROR_CON
{
typedef
struct
_T_PN_SERVICE_ERROR_CON
{
PN_U8
Code
;
PN_U8
Code
;
PN_U8
Detail
;
PN_U8
Detail
;
...
@@ -639,15 +642,16 @@ typedef struct _T_PN_SERVICE_ERROR_CON {
...
@@ -639,15 +642,16 @@ typedef struct _T_PN_SERVICE_ERROR_CON {
#define PROFINET_IO_MCR_FRAME_ID_RT_CLASS1_BASE (PN_U16)0xF800u
#define PROFINET_IO_MCR_FRAME_ID_RT_CLASS1_BASE (PN_U16)0xF800u
#define PROFINET_IO_MCR_FRAME_ID_RT_CLASS1_NUMBER_IDS (PN_U16)0x03FFu
#define PROFINET_IO_MCR_FRAME_ID_RT_CLASS1_NUMBER_IDS (PN_U16)0x03FFu
#define PROFINET_IO_MCR_FRAME_ID_RT_CLASS1_HIGHEST_FRAME_ID \
#define PROFINET_IO_MCR_FRAME_ID_RT_CLASS1_HIGHEST_FRAME_ID \
(PN_U16)(PROFINET_IO_MCR_FRAME_ID_RT_CLASS1_BASE
\
(PN_U16)(PROFINET_IO_MCR_FRAME_ID_RT_CLASS1_BASE
+
\
+
PROFINET_IO_MCR_FRAME_ID_RT_CLASS1_NUMBER_IDS)
PROFINET_IO_MCR_FRAME_ID_RT_CLASS1_NUMBER_IDS)
#define PROFINET_IO_MCR_FRAME_ID_RT_CLASS2_BASE (PN_U16)0xBC00u
#define PROFINET_IO_MCR_FRAME_ID_RT_CLASS2_BASE (PN_U16)0xBC00u
#define PROFINET_IO_MCR_FRAME_ID_RT_CLASS2_NUMBER_IDS (PN_U16)0x03FFu
#define PROFINET_IO_MCR_FRAME_ID_RT_CLASS2_NUMBER_IDS (PN_U16)0x03FFu
#define PROFINET_IO_MCR_FRAME_ID_RT_CLASS2_HIGHEST_FRAME_ID \
#define PROFINET_IO_MCR_FRAME_ID_RT_CLASS2_HIGHEST_FRAME_ID \
(PN_U16)(PROFINET_IO_MCR_FRAME_ID_RT_CLASS2_BASE
\
(PN_U16)(PROFINET_IO_MCR_FRAME_ID_RT_CLASS2_BASE
+
\
+
PROFINET_IO_MCR_FRAME_ID_RT_CLASS2_NUMBER_IDS)
PROFINET_IO_MCR_FRAME_ID_RT_CLASS2_NUMBER_IDS)
typedef
struct
_T_PN_MCR_PROVIDER
{
typedef
struct
_T_PN_MCR_PROVIDER
{
PN_U8
FrameIdHighByte
;
PN_U8
FrameIdHighByte
;
PN_U8
FrameIdLowByte
;
PN_U8
FrameIdLowByte
;
...
@@ -655,7 +659,8 @@ typedef struct _T_PN_MCR_PROVIDER {
...
@@ -655,7 +659,8 @@ typedef struct _T_PN_MCR_PROVIDER {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PN_MCR_CONSUMER
{
typedef
struct
_T_PN_MCR_CONSUMER
{
PN_U8
FrameIdHighByte
;
PN_U8
FrameIdHighByte
;
PN_U8
FrameIdLowByte
;
PN_U8
FrameIdLowByte
;
...
@@ -680,20 +685,21 @@ typedef struct _T_PN_MCR_CONSUMER {
...
@@ -680,20 +685,21 @@ typedef struct _T_PN_MCR_CONSUMER {
#define PROFINET_IO_CR_FRAME_ID_RT_CLASS3_BASE (PN_U16)0x0100u
#define PROFINET_IO_CR_FRAME_ID_RT_CLASS3_BASE (PN_U16)0x0100u
#define PROFINET_IO_CR_FRAME_ID_RT_CLASS3_NUMBER_IDS (PN_U16)0x05FFu
#define PROFINET_IO_CR_FRAME_ID_RT_CLASS3_NUMBER_IDS (PN_U16)0x05FFu
#define PROFINET_IO_CR_FRAME_ID_RT_CLASS3_HIGHEST_FRAME_ID \
#define PROFINET_IO_CR_FRAME_ID_RT_CLASS3_HIGHEST_FRAME_ID \
(PN_U16)(PROFINET_IO_CR_FRAME_ID_RT_CLASS3_BASE
\
(PN_U16)(PROFINET_IO_CR_FRAME_ID_RT_CLASS3_BASE
+
\
+
PROFINET_IO_CR_FRAME_ID_RT_CLASS3_NUMBER_IDS)
PROFINET_IO_CR_FRAME_ID_RT_CLASS3_NUMBER_IDS)
#define PROFINET_IO_CR_FRAME_ID_RT_CLASS3_MRPD_BASE (PN_U16)0x0700u
#define PROFINET_IO_CR_FRAME_ID_RT_CLASS3_MRPD_BASE (PN_U16)0x0700u
#define PROFINET_IO_CR_FRAME_ID_RT_CLASS3_MRPD_NUMBER_IDS (PN_U16)0x08FFu
#define PROFINET_IO_CR_FRAME_ID_RT_CLASS3_MRPD_NUMBER_IDS (PN_U16)0x08FFu
#define PROFINET_IO_CR_FRAME_ID_RT_CLASS3_MRPD_HIGHEST_FRAME_ID \
#define PROFINET_IO_CR_FRAME_ID_RT_CLASS3_MRPD_HIGHEST_FRAME_ID \
(PN_U16)(PROFINET_IO_CR_FRAME_ID_RT_CLASS3_MRPD_BASE
\
(PN_U16)(PROFINET_IO_CR_FRAME_ID_RT_CLASS3_MRPD_BASE
+
\
+
PROFINET_IO_CR_FRAME_ID_RT_CLASS3_MRPD_NUMBER_IDS)
PROFINET_IO_CR_FRAME_ID_RT_CLASS3_MRPD_NUMBER_IDS)
typedef
T_PN_MCR_PROVIDER
T_PN_RTC3_PROVIDER
;
typedef
T_PN_MCR_PROVIDER
T_PN_RTC3_PROVIDER
;
typedef
T_PN_MCR_PROVIDER
T_PN_RTC3_CONSUMER
;
typedef
T_PN_MCR_PROVIDER
T_PN_RTC3_CONSUMER
;
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PN_ALARM_CR
{
typedef
struct
_T_PN_ALARM_CR
{
PN_U8
VersionHighByte
;
PN_U8
VersionHighByte
;
PN_U8
VersionLowByte
;
PN_U8
VersionLowByte
;
...
@@ -721,7 +727,8 @@ typedef struct _T_PN_ALARM_CR {
...
@@ -721,7 +727,8 @@ typedef struct _T_PN_ALARM_CR {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PN_REFERENCE
{
typedef
struct
_T_PN_REFERENCE
{
PN_U8
ReferenceHighByte
;
PN_U8
ReferenceHighByte
;
PN_U8
ReferenceLowByte
;
PN_U8
ReferenceLowByte
;
...
@@ -731,7 +738,8 @@ typedef struct _T_PN_REFERENCE {
...
@@ -731,7 +738,8 @@ typedef struct _T_PN_REFERENCE {
#define PROFINET_IO_CR_IO_STATUS_LENGTH 0x0001u
#define PROFINET_IO_CR_IO_STATUS_LENGTH 0x0001u
typedef
struct
_T_PN_SUBMODULE
{
typedef
struct
_T_PN_SUBMODULE
{
PN_U8
SubSlotNumberHighByte
;
PN_U8
SubSlotNumberHighByte
;
PN_U8
SubSlotNumberLowByte
;
PN_U8
SubSlotNumberLowByte
;
...
@@ -763,7 +771,8 @@ typedef struct _T_PN_SUBMODULE {
...
@@ -763,7 +771,8 @@ typedef struct _T_PN_SUBMODULE {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PN_MODULE
{
typedef
struct
_T_PN_MODULE
{
PN_U8
VersionHighByte
;
PN_U8
VersionHighByte
;
PN_U8
VersionLowByte
;
PN_U8
VersionLowByte
;
...
@@ -789,7 +798,8 @@ typedef struct _T_PN_MODULE {
...
@@ -789,7 +798,8 @@ typedef struct _T_PN_MODULE {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PN_DATA_RECORD
{
typedef
struct
_T_PN_DATA_RECORD
{
PN_U8
VersionHighByte
;
PN_U8
VersionHighByte
;
PN_U8
VersionLowByte
;
PN_U8
VersionLowByte
;
...
@@ -815,7 +825,8 @@ typedef struct _T_PN_DATA_RECORD {
...
@@ -815,7 +825,8 @@ typedef struct _T_PN_DATA_RECORD {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PN_API
{
typedef
struct
_T_PN_API
{
PN_U8
APIHighWordHighByte
;
PN_U8
APIHighWordHighByte
;
PN_U8
APIHighWordLowByte
;
PN_U8
APIHighWordLowByte
;
PN_U8
APILowWordHighByte
;
PN_U8
APILowWordHighByte
;
...
@@ -832,7 +843,8 @@ typedef struct _T_PN_API {
...
@@ -832,7 +843,8 @@ typedef struct _T_PN_API {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PN_IOCR
{
typedef
struct
_T_PN_IOCR
{
PN_U8
VersionHighByte
;
PN_U8
VersionHighByte
;
PN_U8
VersionLowByte
;
PN_U8
VersionLowByte
;
...
@@ -972,7 +984,8 @@ typedef struct _T_PN_IOCR {
...
@@ -972,7 +984,8 @@ typedef struct _T_PN_IOCR {
#define PN_SERVICE_DOWNLOAD_LITTLE_ENDIAN 0u
#define PN_SERVICE_DOWNLOAD_LITTLE_ENDIAN 0u
#define PN_SERVICE_DOWNLOAD_BIG_ENDIAN 1u
#define PN_SERVICE_DOWNLOAD_BIG_ENDIAN 1u
typedef
struct
_T_PN_SERVICE_DOWNLOAD_REQ
{
typedef
struct
_T_PN_SERVICE_DOWNLOAD_REQ
{
PN_U8
IpAddressHighWordHighByte
;
PN_U8
IpAddressHighWordHighByte
;
PN_U8
IpAddressHighWordLowByte
;
PN_U8
IpAddressHighWordLowByte
;
PN_U8
IpAddressLowWordHighByte
;
PN_U8
IpAddressLowWordHighByte
;
...
@@ -1037,7 +1050,8 @@ typedef struct _T_PN_SERVICE_DOWNLOAD_REQ {
...
@@ -1037,7 +1050,8 @@ typedef struct _T_PN_SERVICE_DOWNLOAD_REQ {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PN_DATA_INFO
{
typedef
struct
_T_PN_DATA_INFO
{
PN_U8
SlotNumberHighByte
;
PN_U8
SlotNumberHighByte
;
PN_U8
SlotNumberLowByte
;
PN_U8
SlotNumberLowByte
;
...
@@ -1051,7 +1065,8 @@ typedef struct _T_PN_DATA_INFO {
...
@@ -1051,7 +1065,8 @@ typedef struct _T_PN_DATA_INFO {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PN_API_INFO
{
typedef
struct
_T_PN_API_INFO
{
PN_U8
APIHighWordHighByte
;
PN_U8
APIHighWordHighByte
;
PN_U8
APIHighWordLowByte
;
PN_U8
APIHighWordLowByte
;
PN_U8
APILowWordHighByte
;
PN_U8
APILowWordHighByte
;
...
@@ -1078,8 +1093,8 @@ typedef struct _T_PN_API_INFO {
...
@@ -1078,8 +1093,8 @@ typedef struct _T_PN_API_INFO {
#define PN_IOCR_CMDEV_AR_MASK 0x00FFu
#define PN_IOCR_CMDEV_AR_MASK 0x00FFu
#define PN_IOCR_NUMBER_MASK 0x7E00u
#define PN_IOCR_NUMBER_MASK 0x7E00u
#define PN_IOCR_IDENTIFIER_MASK \
#define PN_IOCR_IDENTIFIER_MASK \
(PN_IOCR_DEVICE_REF_MASK | PN_IOCR_CMDEV_AR_MASK | PN_IOCR_NUMBER_MASK
\
(PN_IOCR_DEVICE_REF_MASK | PN_IOCR_CMDEV_AR_MASK | PN_IOCR_NUMBER_MASK
|
\
|
PN_IOCR_CMDEV_MASK)
PN_IOCR_CMDEV_MASK)
#define _PN_IOCR_NUMBER_TO_DEVICE_REF(IOCRIdentifier) \
#define _PN_IOCR_NUMBER_TO_DEVICE_REF(IOCRIdentifier) \
(IOCRIdentifier & PN_IOCR_DEVICE_REF_MASK)
(IOCRIdentifier & PN_IOCR_DEVICE_REF_MASK)
...
@@ -1089,7 +1104,8 @@ typedef struct _T_PN_API_INFO {
...
@@ -1089,7 +1104,8 @@ typedef struct _T_PN_API_INFO {
((IOCRIdentifier & PN_IOCR_NUMBER_MASK) >> 9u)
((IOCRIdentifier & PN_IOCR_NUMBER_MASK) >> 9u)
#define _PN_IOCR_CMDEV(IOCRIdentifier) (IOCRIdentifier & PN_IOCR_CMDEV_MASK)
#define _PN_IOCR_CMDEV(IOCRIdentifier) (IOCRIdentifier & PN_IOCR_CMDEV_MASK)
typedef
struct
_T_PN_IOCR_INFO
{
typedef
struct
_T_PN_IOCR_INFO
{
PN_U8
IOCRIdentifierHighByte
;
PN_U8
IOCRIdentifierHighByte
;
PN_U8
IOCRIdentifierLowByte
;
PN_U8
IOCRIdentifierLowByte
;
...
@@ -1110,7 +1126,8 @@ typedef struct _T_PN_IOCR_INFO {
...
@@ -1110,7 +1126,8 @@ typedef struct _T_PN_IOCR_INFO {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PN_SERVICE_DOWNLOAD_CON
{
typedef
struct
_T_PN_SERVICE_DOWNLOAD_CON
{
PN_U8
AlarmRefHighByte
;
PN_U8
AlarmRefHighByte
;
PN_U8
AlarmRefLowByte
;
PN_U8
AlarmRefLowByte
;
...
@@ -1136,7 +1153,8 @@ typedef struct _T_PN_SERVICE_DOWNLOAD_CON {
...
@@ -1136,7 +1153,8 @@ typedef struct _T_PN_SERVICE_DOWNLOAD_CON {
#define PN_IDENT_MAINTENANCE_3_SUPPORTED (PN_U16)0x0008u
#define PN_IDENT_MAINTENANCE_3_SUPPORTED (PN_U16)0x0008u
#define PN_IDENT_MAINTENANCE_4_SUPPORTED (PN_U16)0x0010u
#define PN_IDENT_MAINTENANCE_4_SUPPORTED (PN_U16)0x0010u
typedef
struct
_T_PN_SERVICE_SET_IDENTIFICATION_REQ
{
typedef
struct
_T_PN_SERVICE_SET_IDENTIFICATION_REQ
{
PN_U8
TypeOfStation
[
SERVICE_SET_IDENTIFICATION_TYPE_OF_STATION_LENGTH
];
PN_U8
TypeOfStation
[
SERVICE_SET_IDENTIFICATION_TYPE_OF_STATION_LENGTH
];
PN_U8
OrderId
[
PROFINET_IDENT_MAINTENANCE_ORDER_ID_LENGTH
];
PN_U8
OrderId
[
PROFINET_IDENT_MAINTENANCE_ORDER_ID_LENGTH
];
PN_U8
SerialNumber
[
PROFINET_IDENT_MAINTENANCE_SR_NUMBER_LENGTH
];
PN_U8
SerialNumber
[
PROFINET_IDENT_MAINTENANCE_SR_NUMBER_LENGTH
];
...
@@ -1168,7 +1186,8 @@ typedef struct _T_PN_SERVICE_SET_IDENTIFICATION_REQ {
...
@@ -1168,7 +1186,8 @@ typedef struct _T_PN_SERVICE_SET_IDENTIFICATION_REQ {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PN_SERVICE_SET_IDENTIFICATION_CON
{
typedef
struct
_T_PN_SERVICE_SET_IDENTIFICATION_CON
{
PN_U16
DummyForCompiler
;
PN_U16
DummyForCompiler
;
}
PACK_BYTE_ALIGNMENT
(
T_PN_SERVICE_SET_IDENTIFICATION_CON
);
}
PACK_BYTE_ALIGNMENT
(
T_PN_SERVICE_SET_IDENTIFICATION_CON
);
...
@@ -1185,7 +1204,8 @@ typedef struct _T_PN_SERVICE_SET_IDENTIFICATION_CON {
...
@@ -1185,7 +1204,8 @@ typedef struct _T_PN_SERVICE_SET_IDENTIFICATION_CON {
#define MIN_WATCHDOG_INTERVAL (PN_U32)3uL
#define MIN_WATCHDOG_INTERVAL (PN_U32)3uL
#define MAX_WATCHDOG_INTERVAL (PN_U32)60000uL
#define MAX_WATCHDOG_INTERVAL (PN_U32)60000uL
typedef
struct
_T_PN_SERVICE_CONFIGURE_WATCHDOG_REQ
{
typedef
struct
_T_PN_SERVICE_CONFIGURE_WATCHDOG_REQ
{
PN_U8
WatchdogExpirationAction
;
PN_U8
WatchdogExpirationAction
;
PN_U8
Alignment
;
PN_U8
Alignment
;
...
@@ -1198,7 +1218,8 @@ typedef struct _T_PN_SERVICE_CONFIGURE_WATCHDOG_REQ {
...
@@ -1198,7 +1218,8 @@ typedef struct _T_PN_SERVICE_CONFIGURE_WATCHDOG_REQ {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PN_SERVICE_CONFIGURE_WATCHDOG_CON
{
typedef
struct
_T_PN_SERVICE_CONFIGURE_WATCHDOG_CON
{
PN_U16
DummyForCompiler
;
PN_U16
DummyForCompiler
;
}
PACK_BYTE_ALIGNMENT
(
T_PN_SERVICE_CONFIGURE_WATCHDOG_CON
);
}
PACK_BYTE_ALIGNMENT
(
T_PN_SERVICE_CONFIGURE_WATCHDOG_CON
);
...
@@ -1268,14 +1289,15 @@ typedef struct _T_PN_SERVICE_CONFIGURE_WATCHDOG_CON {
...
@@ -1268,14 +1289,15 @@ typedef struct _T_PN_SERVICE_CONFIGURE_WATCHDOG_CON {
#define PROFINET_SYNC_MODE_CABLE_DELAY_CHECK_ON (PN_U16)0x0001u
#define PROFINET_SYNC_MODE_CABLE_DELAY_CHECK_ON (PN_U16)0x0001u
#define PROFINET_SYNC_MODE_SYNC_MASTER_CHECK_ON (PN_U16)0x0002u
#define PROFINET_SYNC_MODE_SYNC_MASTER_CHECK_ON (PN_U16)0x0002u
#define PROFINET_SYNC_MODE_MASK \
#define PROFINET_SYNC_MODE_MASK \
(PN_U16)(PROFINET_SYNC_MODE_CABLE_DELAY_CHECK_ON
\
(PN_U16)(PROFINET_SYNC_MODE_CABLE_DELAY_CHECK_ON
|
\
|
PROFINET_SYNC_MODE_SYNC_MASTER_CHECK_ON)
PROFINET_SYNC_MODE_SYNC_MASTER_CHECK_ON)
#define PROFINET_MAU_TYPE_MODE_DIFFERENCE_CHECK_ON (PN_U16)0x0001u
#define PROFINET_MAU_TYPE_MODE_DIFFERENCE_CHECK_ON (PN_U16)0x0001u
#define PROFINET_MAU_TYPE_MODE_MASK \
#define PROFINET_MAU_TYPE_MODE_MASK \
(PN_U16)(PROFINET_MAU_TYPE_MODE_DIFFERENCE_CHECK_ON)
(PN_U16)(PROFINET_MAU_TYPE_MODE_DIFFERENCE_CHECK_ON)
typedef
struct
_T_PN_NEIGHBOUR_PORT_DATA
{
typedef
struct
_T_PN_NEIGHBOUR_PORT_DATA
{
PN_U8
Flags
;
PN_U8
Flags
;
PN_U8
Alignment
;
PN_U8
Alignment
;
...
@@ -1312,7 +1334,8 @@ typedef struct _T_PN_NEIGHBOUR_PORT_DATA {
...
@@ -1312,7 +1334,8 @@ typedef struct _T_PN_NEIGHBOUR_PORT_DATA {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PN_SERVICE_DOWNLOAD_NEIGHBOUR_DATA_REQ
{
typedef
struct
_T_PN_SERVICE_DOWNLOAD_NEIGHBOUR_DATA_REQ
{
PN_U8
NumberPorts
;
PN_U8
NumberPorts
;
PN_U8
Alignment
;
PN_U8
Alignment
;
...
@@ -1322,7 +1345,8 @@ typedef struct _T_PN_SERVICE_DOWNLOAD_NEIGHBOUR_DATA_REQ {
...
@@ -1322,7 +1345,8 @@ typedef struct _T_PN_SERVICE_DOWNLOAD_NEIGHBOUR_DATA_REQ {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PN_SERVICE_DOWNLOAD_NEIGHBOUR_DATA_CON
{
typedef
struct
_T_PN_SERVICE_DOWNLOAD_NEIGHBOUR_DATA_CON
{
PN_U16
DummyForCompiler
;
PN_U16
DummyForCompiler
;
}
PACK_BYTE_ALIGNMENT
(
T_PN_SERVICE_DOWNLOAD_NEIGHBOUR_DATA_CON
);
}
PACK_BYTE_ALIGNMENT
(
T_PN_SERVICE_DOWNLOAD_NEIGHBOUR_DATA_CON
);
...
@@ -1334,7 +1358,8 @@ typedef struct _T_PN_SERVICE_DOWNLOAD_NEIGHBOUR_DATA_CON {
...
@@ -1334,7 +1358,8 @@ typedef struct _T_PN_SERVICE_DOWNLOAD_NEIGHBOUR_DATA_CON {
#define MAX_LICENCE_DATA_LENGTH (PN_U16)256u
#define MAX_LICENCE_DATA_LENGTH (PN_U16)256u
typedef
struct
_T_PN_SERVICE_CONFIGURE_LICENCE_REQ
{
typedef
struct
_T_PN_SERVICE_CONFIGURE_LICENCE_REQ
{
PN_U8
DataLengthHighByte
;
PN_U8
DataLengthHighByte
;
PN_U8
DataLengthLowByte
;
PN_U8
DataLengthLowByte
;
...
@@ -1344,7 +1369,8 @@ typedef struct _T_PN_SERVICE_CONFIGURE_LICENCE_REQ {
...
@@ -1344,7 +1369,8 @@ typedef struct _T_PN_SERVICE_CONFIGURE_LICENCE_REQ {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PN_SERVICE_CONFIGURE_LICENCE_CON
{
typedef
struct
_T_PN_SERVICE_CONFIGURE_LICENCE_CON
{
PN_U16
DummyForCompiler
;
PN_U16
DummyForCompiler
;
}
PACK_BYTE_ALIGNMENT
(
T_PN_SERVICE_CONFIGURE_LICENCE_CON
);
}
PACK_BYTE_ALIGNMENT
(
T_PN_SERVICE_CONFIGURE_LICENCE_CON
);
...
@@ -1363,12 +1389,12 @@ typedef struct _T_PN_SERVICE_CONFIGURE_LICENCE_CON {
...
@@ -1363,12 +1389,12 @@ typedef struct _T_PN_SERVICE_CONFIGURE_LICENCE_CON {
#define PN_SYNC_DOMAIN_PRIORITY1_LEVEL7 0x38u
#define PN_SYNC_DOMAIN_PRIORITY1_LEVEL7 0x38u
#define PN_SYNC_DOMAIN_PRIORITY1_MASTER_ACTIVE 0x80u
#define PN_SYNC_DOMAIN_PRIORITY1_MASTER_ACTIVE 0x80u
#define PN_SYNC_DOMAIN_PRIORITY1_MASK \
#define PN_SYNC_DOMAIN_PRIORITY1_MASK \
(PN_SYNC_DOMAIN_PRIORITY1_PRIMARY_MASTER
\
(PN_SYNC_DOMAIN_PRIORITY1_PRIMARY_MASTER
|
\
| PN_SYNC_DOMAIN_PRIORITY1_SECONDARY_MASTER
\
PN_SYNC_DOMAIN_PRIORITY1_SECONDARY_MASTER |
\
| PN_SYNC_DOMAIN_PRIORITY1_LEVEL0 | PN_SYNC_DOMAIN_PRIORITY1_LEVEL1
\
PN_SYNC_DOMAIN_PRIORITY1_LEVEL0 | PN_SYNC_DOMAIN_PRIORITY1_LEVEL1 |
\
| PN_SYNC_DOMAIN_PRIORITY1_LEVEL2 | PN_SYNC_DOMAIN_PRIORITY1_LEVEL3
\
PN_SYNC_DOMAIN_PRIORITY1_LEVEL2 | PN_SYNC_DOMAIN_PRIORITY1_LEVEL3 |
\
| PN_SYNC_DOMAIN_PRIORITY1_LEVEL4 | PN_SYNC_DOMAIN_PRIORITY1_LEVEL5
\
PN_SYNC_DOMAIN_PRIORITY1_LEVEL4 | PN_SYNC_DOMAIN_PRIORITY1_LEVEL5 |
\
|
PN_SYNC_DOMAIN_PRIORITY1_LEVEL6 | PN_SYNC_DOMAIN_PRIORITY1_LEVEL7)
PN_SYNC_DOMAIN_PRIORITY1_LEVEL6 | PN_SYNC_DOMAIN_PRIORITY1_LEVEL7)
#define PN_SYNC_DOMAIN_PRIORITY2_DEFAULT 0xFFu
#define PN_SYNC_DOMAIN_PRIORITY2_DEFAULT 0xFFu
...
@@ -1416,7 +1442,8 @@ typedef struct _T_PN_SERVICE_CONFIGURE_LICENCE_CON {
...
@@ -1416,7 +1442,8 @@ typedef struct _T_PN_SERVICE_CONFIGURE_LICENCE_CON {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PN_DEFAULT_API_DATA_RECORD
{
typedef
struct
_T_PN_DEFAULT_API_DATA_RECORD
{
PN_U8
VersionHighByte
;
PN_U8
VersionHighByte
;
PN_U8
VersionLowByte
;
PN_U8
VersionLowByte
;
...
@@ -1441,7 +1468,8 @@ typedef struct _T_PN_DEFAULT_API_DATA_RECORD {
...
@@ -1441,7 +1468,8 @@ typedef struct _T_PN_DEFAULT_API_DATA_RECORD {
}
PACK_BYTE_ALIGNMENT
(
T_PN_DEFAULT_API_DATA_RECORD
);
}
PACK_BYTE_ALIGNMENT
(
T_PN_DEFAULT_API_DATA_RECORD
);
typedef
struct
_T_PN_SERVICE_DOWNLOAD_IRT_DOMAIN_REQ
{
typedef
struct
_T_PN_SERVICE_DOWNLOAD_IRT_DOMAIN_REQ
{
PN_U8
NumberOfDataRecordsHighByte
;
PN_U8
NumberOfDataRecordsHighByte
;
PN_U8
NumberOfDataRecordsLowByte
;
PN_U8
NumberOfDataRecordsLowByte
;
...
@@ -1453,7 +1481,8 @@ typedef struct _T_PN_SERVICE_DOWNLOAD_IRT_DOMAIN_REQ {
...
@@ -1453,7 +1481,8 @@ typedef struct _T_PN_SERVICE_DOWNLOAD_IRT_DOMAIN_REQ {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PN_SERVICE_DOWNLOAD_IRT_DOMAIN_CON
{
typedef
struct
_T_PN_SERVICE_DOWNLOAD_IRT_DOMAIN_CON
{
PN_U16
DummyForCompiler
;
PN_U16
DummyForCompiler
;
}
PACK_BYTE_ALIGNMENT
(
T_PN_SERVICE_DOWNLOAD_IRT_DOMAIN_CON
);
}
PACK_BYTE_ALIGNMENT
(
T_PN_SERVICE_DOWNLOAD_IRT_DOMAIN_CON
);
...
@@ -1478,7 +1507,8 @@ typedef T_PN_SERVICE_DOWNLOAD_IRT_DOMAIN_CON
...
@@ -1478,7 +1507,8 @@ typedef T_PN_SERVICE_DOWNLOAD_IRT_DOMAIN_CON
/*===========================================================================*/
/*===========================================================================*/
typedef
struct
_T_PROFINET_BLOCK_HEADER
{
typedef
struct
_T_PROFINET_BLOCK_HEADER
{
PN_U8
TypeHighByte
;
PN_U8
TypeHighByte
;
PN_U8
TypeLowByte
;
PN_U8
TypeLowByte
;
...
@@ -1492,7 +1522,8 @@ typedef struct _T_PROFINET_BLOCK_HEADER {
...
@@ -1492,7 +1522,8 @@ typedef struct _T_PROFINET_BLOCK_HEADER {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PN_EXTENDED_BLOCK
{
typedef
struct
_T_PN_EXTENDED_BLOCK
{
T_PROFINET_BLOCK_HEADER
Header
;
T_PROFINET_BLOCK_HEADER
Header
;
/*
/*
...
@@ -1509,11 +1540,12 @@ typedef struct _T_PN_EXTENDED_BLOCK {
...
@@ -1509,11 +1540,12 @@ typedef struct _T_PN_EXTENDED_BLOCK {
#define CONFIG_ID_SELECTOR_AR_SET_4 (PN_U16)0x0004u
#define CONFIG_ID_SELECTOR_AR_SET_4 (PN_U16)0x0004u
#define CONFIG_ID_SELECTOR_NUMBER_AR_PER_SET (PN_U16)0x0010u
#define CONFIG_ID_SELECTOR_NUMBER_AR_PER_SET (PN_U16)0x0010u
#define CONFIG_ID_SELECTOR_MASK \
#define CONFIG_ID_SELECTOR_MASK \
(PN_U16)(CONFIG_ID_SELECTOR_AR_SET_1 | CONFIG_ID_SELECTOR_AR_SET_2
\
(PN_U16)(CONFIG_ID_SELECTOR_AR_SET_1 | CONFIG_ID_SELECTOR_AR_SET_2
|
\
| CONFIG_ID_SELECTOR_AR_SET_3 | CONFIG_ID_SELECTOR_AR_SET_4
\
CONFIG_ID_SELECTOR_AR_SET_3 | CONFIG_ID_SELECTOR_AR_SET_4 |
\
|
CONFIG_ID_SELECTOR_NUMBER_AR_PER_SET)
CONFIG_ID_SELECTOR_NUMBER_AR_PER_SET)
typedef
struct
_T_PN_EXTENDED_BLOCK_CONFIG_ID
{
typedef
struct
_T_PN_EXTENDED_BLOCK_CONFIG_ID
{
T_PROFINET_BLOCK_HEADER
Header
;
T_PROFINET_BLOCK_HEADER
Header
;
PN_U8
Reserved
[
2
];
PN_U8
Reserved
[
2
];
...
@@ -1547,7 +1579,8 @@ typedef struct _T_PN_EXTENDED_BLOCK_CONFIG_ID {
...
@@ -1547,7 +1579,8 @@ typedef struct _T_PN_EXTENDED_BLOCK_CONFIG_ID {
#define PN_SERVICE_ERROR_DOWNLOAD_EXTENDED_INVALID_RESERVED_BYTE 0x08u
#define PN_SERVICE_ERROR_DOWNLOAD_EXTENDED_INVALID_RESERVED_BYTE 0x08u
#define PN_SERVICE_ERROR_DOWNLOAD_EXTENDED_INVALID_SELECTOR 0x09u
#define PN_SERVICE_ERROR_DOWNLOAD_EXTENDED_INVALID_SELECTOR 0x09u
typedef
struct
_T_PN_SERVICE_DOWNLOAD_EXTENDED_REQ
{
typedef
struct
_T_PN_SERVICE_DOWNLOAD_EXTENDED_REQ
{
PN_U8
NumberOfBlocksHighByte
;
PN_U8
NumberOfBlocksHighByte
;
PN_U8
NumberOfBlocksLowByte
;
PN_U8
NumberOfBlocksLowByte
;
...
@@ -1561,7 +1594,8 @@ typedef struct _T_PN_SERVICE_DOWNLOAD_EXTENDED_REQ {
...
@@ -1561,7 +1594,8 @@ typedef struct _T_PN_SERVICE_DOWNLOAD_EXTENDED_REQ {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PN_SERVICE_DOWNLOAD_EXTENDED_CON
{
typedef
struct
_T_PN_SERVICE_DOWNLOAD_EXTENDED_CON
{
PN_U16
DummyForCompiler
;
PN_U16
DummyForCompiler
;
}
PACK_BYTE_ALIGNMENT
(
T_PN_SERVICE_DOWNLOAD_EXTENDED_CON
);
}
PACK_BYTE_ALIGNMENT
(
T_PN_SERVICE_DOWNLOAD_EXTENDED_CON
);
...
@@ -1608,11 +1642,11 @@ typedef struct _T_PN_SERVICE_DOWNLOAD_EXTENDED_CON {
...
@@ -1608,11 +1642,11 @@ typedef struct _T_PN_SERVICE_DOWNLOAD_EXTENDED_CON {
#define PROFINET_ALARM_SPECIFIER_SUBMODULE_DIAGNOSIS_STATE (PN_U16)0x2000u
#define PROFINET_ALARM_SPECIFIER_SUBMODULE_DIAGNOSIS_STATE (PN_U16)0x2000u
#define PROFINET_ALARM_SPECIFIER_AR_DIAGNOSIS_STATE (PN_U16)0x8000u
#define PROFINET_ALARM_SPECIFIER_AR_DIAGNOSIS_STATE (PN_U16)0x8000u
#define PROFINET_ALARM_SPECIFIER_MASK \
#define PROFINET_ALARM_SPECIFIER_MASK \
(PROFINET_ALARM_SPECIFIER_SEQUENCE_MASK
\
(PROFINET_ALARM_SPECIFIER_SEQUENCE_MASK
|
\
| PROFINET_ALARM_SPECIFIER_CHANNEL_DIAGNOSIS
\
PROFINET_ALARM_SPECIFIER_CHANNEL_DIAGNOSIS |
\
| PROFINET_ALARM_SPECIFIER_MANUFACTURER_DIAGNOSIS
\
PROFINET_ALARM_SPECIFIER_MANUFACTURER_DIAGNOSIS |
\
| PROFINET_ALARM_SPECIFIER_SUBMODULE_DIAGNOSIS_STATE
\
PROFINET_ALARM_SPECIFIER_SUBMODULE_DIAGNOSIS_STATE |
\
|
PROFINET_ALARM_SPECIFIER_AR_DIAGNOSIS_STATE)
PROFINET_ALARM_SPECIFIER_AR_DIAGNOSIS_STATE)
#define PROFINET_ALARM_USER_STRUCTURE_IDENT_MANUFACTURER_LOWER_LIMIT \
#define PROFINET_ALARM_USER_STRUCTURE_IDENT_MANUFACTURER_LOWER_LIMIT \
(PN_U16)0x0000u
(PN_U16)0x0000u
...
@@ -1648,8 +1682,8 @@ typedef struct _T_PN_SERVICE_DOWNLOAD_EXTENDED_CON {
...
@@ -1648,8 +1682,8 @@ typedef struct _T_PN_SERVICE_DOWNLOAD_EXTENDED_CON {
#define PROFINET_ALARM_CHANNEL_PROPERTIES_DIRECTION_IN (PN_U16)0x2000u
#define PROFINET_ALARM_CHANNEL_PROPERTIES_DIRECTION_IN (PN_U16)0x2000u
#define PROFINET_ALARM_CHANNEL_PROPERTIES_DIRECTION_OUT (PN_U16)0x4000u
#define PROFINET_ALARM_CHANNEL_PROPERTIES_DIRECTION_OUT (PN_U16)0x4000u
#define PROFINET_ALARM_CHANNEL_PROPERTIES_DIRECTION_IN_OUT \
#define PROFINET_ALARM_CHANNEL_PROPERTIES_DIRECTION_IN_OUT \
(PROFINET_ALARM_CHANNEL_PROPERTIES_DIRECTION_IN
\
(PROFINET_ALARM_CHANNEL_PROPERTIES_DIRECTION_IN
|
\
|
PROFINET_ALARM_CHANNEL_PROPERTIES_DIRECTION_OUT)
PROFINET_ALARM_CHANNEL_PROPERTIES_DIRECTION_OUT)
#define PROFINET_CH_ERR_TYPE_SHORT_CIRCUIT (PN_U16)0x0001u
#define PROFINET_CH_ERR_TYPE_SHORT_CIRCUIT (PN_U16)0x0001u
#define PROFINET_CH_ERR_TYPE_UNDERVOLTAGE (PN_U16)0x0002u
#define PROFINET_CH_ERR_TYPE_UNDERVOLTAGE (PN_U16)0x0002u
...
@@ -1775,7 +1809,8 @@ typedef struct _T_PN_SERVICE_DOWNLOAD_EXTENDED_CON {
...
@@ -1775,7 +1809,8 @@ typedef struct _T_PN_SERVICE_DOWNLOAD_EXTENDED_CON {
/* used with channel error type 0x800E */
/* used with channel error type 0x800E */
#define PROFINET_EXT_CH_ERR_TYPE_SUBORDINATED_ENTITY_INFO (PN_U16)0x8000u
#define PROFINET_EXT_CH_ERR_TYPE_SUBORDINATED_ENTITY_INFO (PN_U16)0x8000u
typedef
struct
_T_PN_SERVICE_GET_ALARM_REQ
{
typedef
struct
_T_PN_SERVICE_GET_ALARM_REQ
{
PN_U8
AlarmRefHighByte
;
PN_U8
AlarmRefHighByte
;
PN_U8
AlarmRefLowByte
;
PN_U8
AlarmRefLowByte
;
...
@@ -1783,7 +1818,8 @@ typedef struct _T_PN_SERVICE_GET_ALARM_REQ {
...
@@ -1783,7 +1818,8 @@ typedef struct _T_PN_SERVICE_GET_ALARM_REQ {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PN_SERVICE_GET_ALARM_CON
{
typedef
struct
_T_PN_SERVICE_GET_ALARM_CON
{
PN_U8
AlarmRefHighByte
;
PN_U8
AlarmRefHighByte
;
PN_U8
AlarmRefLowByte
;
PN_U8
AlarmRefLowByte
;
...
@@ -1828,7 +1864,8 @@ typedef struct _T_PN_SERVICE_GET_ALARM_CON {
...
@@ -1828,7 +1864,8 @@ typedef struct _T_PN_SERVICE_GET_ALARM_CON {
/*===========================================================================*/
/*===========================================================================*/
typedef
struct
_T_PN_SERVICE_ALARM_ACK_REQ
{
typedef
struct
_T_PN_SERVICE_ALARM_ACK_REQ
{
PN_U8
AlarmRefHighByte
;
PN_U8
AlarmRefHighByte
;
PN_U8
AlarmRefLowByte
;
PN_U8
AlarmRefLowByte
;
...
@@ -1839,7 +1876,8 @@ typedef struct _T_PN_SERVICE_ALARM_ACK_REQ {
...
@@ -1839,7 +1876,8 @@ typedef struct _T_PN_SERVICE_ALARM_ACK_REQ {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PN_SERVICE_ALARM_ACK_CON
{
typedef
struct
_T_PN_SERVICE_ALARM_ACK_CON
{
PN_U8
AlarmRefHighByte
;
PN_U8
AlarmRefHighByte
;
PN_U8
AlarmRefLowByte
;
PN_U8
AlarmRefLowByte
;
...
@@ -1847,7 +1885,8 @@ typedef struct _T_PN_SERVICE_ALARM_ACK_CON {
...
@@ -1847,7 +1885,8 @@ typedef struct _T_PN_SERVICE_ALARM_ACK_CON {
/*===========================================================================*/
/*===========================================================================*/
typedef
struct
_T_PROFINET_MAINTENANCE_ITEM
{
typedef
struct
_T_PROFINET_MAINTENANCE_ITEM
{
PN_U8
UserStructureIdentifierHighByte
;
PN_U8
UserStructureIdentifierHighByte
;
PN_U8
UserStructureIdentifierLowByte
;
PN_U8
UserStructureIdentifierLowByte
;
...
@@ -1864,7 +1903,8 @@ typedef struct _T_PROFINET_MAINTENANCE_ITEM {
...
@@ -1864,7 +1903,8 @@ typedef struct _T_PROFINET_MAINTENANCE_ITEM {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PROFINET_UPLOAD_RETRIEVAL_ITEM
{
typedef
struct
_T_PROFINET_UPLOAD_RETRIEVAL_ITEM
{
PN_U8
UserStructureIdentifierHighByte
;
PN_U8
UserStructureIdentifierHighByte
;
PN_U8
UserStructureIdentifierLowByte
;
PN_U8
UserStructureIdentifierLowByte
;
...
@@ -1888,7 +1928,8 @@ typedef struct _T_PROFINET_UPLOAD_RETRIEVAL_ITEM {
...
@@ -1888,7 +1928,8 @@ typedef struct _T_PROFINET_UPLOAD_RETRIEVAL_ITEM {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PROFINET_IPARAMETER_ITEM
{
typedef
struct
_T_PROFINET_IPARAMETER_ITEM
{
PN_U8
UserStructureIdentifierHighByte
;
PN_U8
UserStructureIdentifierHighByte
;
PN_U8
UserStructureIdentifierLowByte
;
PN_U8
UserStructureIdentifierLowByte
;
...
@@ -1920,7 +1961,8 @@ typedef struct _T_PROFINET_IPARAMETER_ITEM {
...
@@ -1920,7 +1961,8 @@ typedef struct _T_PROFINET_IPARAMETER_ITEM {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PROFINET_CHANNEL_DIAG
{
typedef
struct
_T_PROFINET_CHANNEL_DIAG
{
PN_U8
UserStructureIdentifierHighByte
;
PN_U8
UserStructureIdentifierHighByte
;
PN_U8
UserStructureIdentifierLowByte
;
PN_U8
UserStructureIdentifierLowByte
;
...
@@ -1937,7 +1979,8 @@ typedef struct _T_PROFINET_CHANNEL_DIAG {
...
@@ -1937,7 +1979,8 @@ typedef struct _T_PROFINET_CHANNEL_DIAG {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PROFINET_EXT_CHANNEL_DIAG
{
typedef
struct
_T_PROFINET_EXT_CHANNEL_DIAG
{
PN_U8
UserStructureIdentifierHighByte
;
PN_U8
UserStructureIdentifierHighByte
;
PN_U8
UserStructureIdentifierLowByte
;
PN_U8
UserStructureIdentifierLowByte
;
...
@@ -1980,7 +2023,8 @@ typedef struct _T_PROFINET_EXT_CHANNEL_DIAG {
...
@@ -1980,7 +2023,8 @@ typedef struct _T_PROFINET_EXT_CHANNEL_DIAG {
#define PROFINET_QUALIFIED_CHANNEL_DIAG_QUALIFIER_27 \
#define PROFINET_QUALIFIED_CHANNEL_DIAG_QUALIFIER_27 \
(PN_U32)0x08000000u
/* Start of Fault */
(PN_U32)0x08000000u
/* Start of Fault */
typedef
struct
_T_PROFINET_QUALIFIED_CHANNEL_DIAG
{
typedef
struct
_T_PROFINET_QUALIFIED_CHANNEL_DIAG
{
PN_U8
UserStructureIdentifierHighByte
;
PN_U8
UserStructureIdentifierHighByte
;
PN_U8
UserStructureIdentifierLowByte
;
PN_U8
UserStructureIdentifierLowByte
;
...
@@ -2017,7 +2061,8 @@ typedef struct _T_PROFINET_QUALIFIED_CHANNEL_DIAG {
...
@@ -2017,7 +2061,8 @@ typedef struct _T_PROFINET_QUALIFIED_CHANNEL_DIAG {
#define PN_SERVICE_ALARM_INVALID_SPECIFIER 0x05u
#define PN_SERVICE_ALARM_INVALID_SPECIFIER 0x05u
#define PN_SERVICE_ALARM_INVALID_LENGTH 0x06u
#define PN_SERVICE_ALARM_INVALID_LENGTH 0x06u
typedef
struct
_T_PN_SERVICE_ALARM_REQ
{
typedef
struct
_T_PN_SERVICE_ALARM_REQ
{
PN_U8
AlarmRefHighByte
;
PN_U8
AlarmRefHighByte
;
PN_U8
AlarmRefLowByte
;
PN_U8
AlarmRefLowByte
;
...
@@ -2062,7 +2107,8 @@ typedef struct _T_PN_SERVICE_ALARM_REQ {
...
@@ -2062,7 +2107,8 @@ typedef struct _T_PN_SERVICE_ALARM_REQ {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PN_SERVICE_ALARM_CON
{
typedef
struct
_T_PN_SERVICE_ALARM_CON
{
PN_U8
AlarmRefHighByte
;
PN_U8
AlarmRefHighByte
;
PN_U8
AlarmRefLowByte
;
PN_U8
AlarmRefLowByte
;
...
@@ -2070,7 +2116,8 @@ typedef struct _T_PN_SERVICE_ALARM_CON {
...
@@ -2070,7 +2116,8 @@ typedef struct _T_PN_SERVICE_ALARM_CON {
/*===========================================================================*/
/*===========================================================================*/
typedef
struct
_T_PN_SERVICE_GET_ALARM_ACK_REQ
{
typedef
struct
_T_PN_SERVICE_GET_ALARM_ACK_REQ
{
PN_U8
AlarmRefHighByte
;
PN_U8
AlarmRefHighByte
;
PN_U8
AlarmRefLowByte
;
PN_U8
AlarmRefLowByte
;
...
@@ -2078,7 +2125,8 @@ typedef struct _T_PN_SERVICE_GET_ALARM_ACK_REQ {
...
@@ -2078,7 +2125,8 @@ typedef struct _T_PN_SERVICE_GET_ALARM_ACK_REQ {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PN_SERVICE_GET_ALARM_ACK_CON
{
typedef
struct
_T_PN_SERVICE_GET_ALARM_ACK_CON
{
PN_U8
AlarmRefHighByte
;
PN_U8
AlarmRefHighByte
;
PN_U8
AlarmRefLowByte
;
PN_U8
AlarmRefLowByte
;
...
@@ -2112,14 +2160,16 @@ typedef struct _T_PN_SERVICE_GET_ALARM_ACK_CON {
...
@@ -2112,14 +2160,16 @@ typedef struct _T_PN_SERVICE_GET_ALARM_ACK_CON {
/*===========================================================================*/
/*===========================================================================*/
typedef
struct
_T_PN_SERVICE_GET_DEVICE_STATE_REQ
{
typedef
struct
_T_PN_SERVICE_GET_DEVICE_STATE_REQ
{
PN_U16
DummyForCompiler
;
PN_U16
DummyForCompiler
;
}
PACK_BYTE_ALIGNMENT
(
T_PN_SERVICE_GET_DEVICE_STATE_REQ
);
}
PACK_BYTE_ALIGNMENT
(
T_PN_SERVICE_GET_DEVICE_STATE_REQ
);
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PN_ERROR_CODE
{
typedef
struct
_T_PN_ERROR_CODE
{
PN_U8
Reason
;
PN_U8
Reason
;
PN_U8
Decode
;
PN_U8
Decode
;
...
@@ -2134,7 +2184,8 @@ typedef T_PN_ERROR_CODE T_PROFINET_ERROR_CODE;
...
@@ -2134,7 +2184,8 @@ typedef T_PN_ERROR_CODE T_PROFINET_ERROR_CODE;
#define PROFINET_STATUS_OK 0uL
#define PROFINET_STATUS_OK 0uL
typedef
struct
_T_PROFINET_STATUS
{
typedef
struct
_T_PROFINET_STATUS
{
union
{
union
{
PN_U32
Status
;
PN_U32
Status
;
PN_U32
RpcError
;
PN_U32
RpcError
;
...
@@ -2147,7 +2198,8 @@ typedef struct _T_PROFINET_STATUS {
...
@@ -2147,7 +2198,8 @@ typedef struct _T_PROFINET_STATUS {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PN_DIFF_MODULE_API
{
typedef
struct
_T_PN_DIFF_MODULE_API
{
PN_U8
APIHighWordHighByte
;
PN_U8
APIHighWordHighByte
;
PN_U8
APIHighWordLowByte
;
PN_U8
APIHighWordLowByte
;
PN_U8
APILowWordHighByte
;
PN_U8
APILowWordHighByte
;
...
@@ -2169,11 +2221,12 @@ typedef struct _T_PN_DIFF_MODULE_API {
...
@@ -2169,11 +2221,12 @@ typedef struct _T_PN_DIFF_MODULE_API {
#define PROFINET_MODULE_STATE_PROPER_MODULE 0x0002u
#define PROFINET_MODULE_STATE_PROPER_MODULE 0x0002u
#define PROFINET_MODULE_STATE_SUBSTITUTE_MODULE 0x0003u
#define PROFINET_MODULE_STATE_SUBSTITUTE_MODULE 0x0003u
#define PROFINET_MODULE_STATE_MASK \
#define PROFINET_MODULE_STATE_MASK \
(PROFINET_MODULE_STATE_NO_MODULE | PROFINET_MODULE_STATE_WRONG_MODULE
\
(PROFINET_MODULE_STATE_NO_MODULE | PROFINET_MODULE_STATE_WRONG_MODULE
|
\
| PROFINET_MODULE_STATE_PROPER_MODULE
\
PROFINET_MODULE_STATE_PROPER_MODULE |
\
|
PROFINET_MODULE_STATE_SUBSTITUTE_MODULE)
PROFINET_MODULE_STATE_SUBSTITUTE_MODULE)
typedef
struct
_T_PN_DIFF_MODULE_SLOT
{
typedef
struct
_T_PN_DIFF_MODULE_SLOT
{
PN_U8
SlotNumberHighByte
;
PN_U8
SlotNumberHighByte
;
PN_U8
SlotNumberLowByte
;
PN_U8
SlotNumberLowByte
;
...
@@ -2243,7 +2296,8 @@ typedef struct _T_PN_DIFF_MODULE_SLOT {
...
@@ -2243,7 +2296,8 @@ typedef struct _T_PN_DIFF_MODULE_SLOT {
#define PROFINET_SUBMODULE_STATE_IDENT_INFO_RESRERVED \
#define PROFINET_SUBMODULE_STATE_IDENT_INFO_RESRERVED \
(PROFINET_SUBMODULE_STATE_FORMAT_INDICATOR | 0x6000u)
(PROFINET_SUBMODULE_STATE_FORMAT_INDICATOR | 0x6000u)
typedef
struct
_T_PN_DIFF_MODULE_SUBSLOT
{
typedef
struct
_T_PN_DIFF_MODULE_SUBSLOT
{
PN_U8
SubSlotNumberHighByte
;
PN_U8
SubSlotNumberHighByte
;
PN_U8
SubSlotNumberLowByte
;
PN_U8
SubSlotNumberLowByte
;
...
@@ -2259,7 +2313,8 @@ typedef struct _T_PN_DIFF_MODULE_SUBSLOT {
...
@@ -2259,7 +2313,8 @@ typedef struct _T_PN_DIFF_MODULE_SUBSLOT {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PN_DIFF_MODULE
{
typedef
struct
_T_PN_DIFF_MODULE
{
PN_U8
NumberOfAPIsHighByte
;
PN_U8
NumberOfAPIsHighByte
;
PN_U8
NumberOfAPIsLowByte
;
PN_U8
NumberOfAPIsLowByte
;
...
@@ -2271,7 +2326,8 @@ typedef struct _T_PN_DIFF_MODULE {
...
@@ -2271,7 +2326,8 @@ typedef struct _T_PN_DIFF_MODULE {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PN_SERVICE_GET_DEVICE_STATE_CON
{
typedef
struct
_T_PN_SERVICE_GET_DEVICE_STATE_CON
{
PN_U8
StateHighByte
;
PN_U8
StateHighByte
;
PN_U8
StateLowByte
;
PN_U8
StateLowByte
;
...
@@ -2289,14 +2345,16 @@ typedef struct _T_PN_SERVICE_GET_DEVICE_STATE_CON {
...
@@ -2289,14 +2345,16 @@ typedef struct _T_PN_SERVICE_GET_DEVICE_STATE_CON {
/*===========================================================================*/
/*===========================================================================*/
typedef
struct
_T_PN_SERVICE_GET_LIST_OF_STATION_REQ
{
typedef
struct
_T_PN_SERVICE_GET_LIST_OF_STATION_REQ
{
PN_U16
DummyForCompiler
;
PN_U16
DummyForCompiler
;
}
PACK_BYTE_ALIGNMENT
(
T_PN_SERVICE_GET_LIST_OF_STATION_REQ
);
}
PACK_BYTE_ALIGNMENT
(
T_PN_SERVICE_GET_LIST_OF_STATION_REQ
);
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PN_DEVICE_IP_INFO
{
typedef
struct
_T_PN_DEVICE_IP_INFO
{
PN_U8
AddressHighWordHighByte
;
PN_U8
AddressHighWordHighByte
;
PN_U8
AddressHighWordLowByte
;
PN_U8
AddressHighWordLowByte
;
PN_U8
AddressLowWordHighByte
;
PN_U8
AddressLowWordHighByte
;
...
@@ -2321,7 +2379,8 @@ typedef struct _T_PN_DEVICE_IP_INFO {
...
@@ -2321,7 +2379,8 @@ typedef struct _T_PN_DEVICE_IP_INFO {
#define DEVICE_TYPE_IO_MULTI_DEVICE 0x04u
#define DEVICE_TYPE_IO_MULTI_DEVICE 0x04u
#define DEVICE_TYPE_IO_SUPERVISOR 0x08u
#define DEVICE_TYPE_IO_SUPERVISOR 0x08u
typedef
struct
_T_PN_DEVICE_PROPERTY_INFO
{
typedef
struct
_T_PN_DEVICE_PROPERTY_INFO
{
PN_U8
DeviceIdHighByte
;
PN_U8
DeviceIdHighByte
;
PN_U8
DeviceIdLowByte
;
PN_U8
DeviceIdLowByte
;
...
@@ -2335,7 +2394,8 @@ typedef struct _T_PN_DEVICE_PROPERTY_INFO {
...
@@ -2335,7 +2394,8 @@ typedef struct _T_PN_DEVICE_PROPERTY_INFO {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PN_DEVICE_INFO
{
typedef
struct
_T_PN_DEVICE_INFO
{
T_PN_MAC_ADDRESS
MacAddress
;
T_PN_MAC_ADDRESS
MacAddress
;
T_PN_DEVICE_IP_INFO
Ip
;
T_PN_DEVICE_IP_INFO
Ip
;
T_PN_DEVICE_PROPERTY_INFO
Property
;
T_PN_DEVICE_PROPERTY_INFO
Property
;
...
@@ -2351,7 +2411,8 @@ typedef struct _T_PN_DEVICE_INFO {
...
@@ -2351,7 +2411,8 @@ typedef struct _T_PN_DEVICE_INFO {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PN_SERVICE_GET_LIST_OF_STATION_CON
{
typedef
struct
_T_PN_SERVICE_GET_LIST_OF_STATION_CON
{
PN_U8
NumberOfDevicesHighByte
;
PN_U8
NumberOfDevicesHighByte
;
PN_U8
NumberOfDevicesLowByte
;
PN_U8
NumberOfDevicesLowByte
;
...
@@ -2386,7 +2447,8 @@ typedef struct _T_PN_SERVICE_GET_LIST_OF_STATION_CON {
...
@@ -2386,7 +2447,8 @@ typedef struct _T_PN_SERVICE_GET_LIST_OF_STATION_CON {
#define PN_SERVICE_SET_IP_SETTINGS_RESPONSE_TIMEOUT \
#define PN_SERVICE_SET_IP_SETTINGS_RESPONSE_TIMEOUT \
PN_SERVICE_SET_RESPONSE_TIMEOUT
PN_SERVICE_SET_RESPONSE_TIMEOUT
typedef
struct
_T_PN_SERVICE_SET_NAME_REQ
{
typedef
struct
_T_PN_SERVICE_SET_NAME_REQ
{
T_PN_MAC_ADDRESS
DestMacAddress
;
T_PN_MAC_ADDRESS
DestMacAddress
;
PN_U8
NameLengthHighByte
;
PN_U8
NameLengthHighByte
;
...
@@ -2398,14 +2460,16 @@ typedef struct _T_PN_SERVICE_SET_NAME_REQ {
...
@@ -2398,14 +2460,16 @@ typedef struct _T_PN_SERVICE_SET_NAME_REQ {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PN_SERVICE_SET_NAME_CON
{
typedef
struct
_T_PN_SERVICE_SET_NAME_CON
{
PN_U16
DummyForCompiler
;
PN_U16
DummyForCompiler
;
}
PACK_BYTE_ALIGNMENT
(
T_PN_SERVICE_SET_NAME_CON
);
}
PACK_BYTE_ALIGNMENT
(
T_PN_SERVICE_SET_NAME_CON
);
/*===========================================================================*/
/*===========================================================================*/
typedef
struct
_T_PN_SERVICE_SET_IP_SETTINGS_REQ
{
typedef
struct
_T_PN_SERVICE_SET_IP_SETTINGS_REQ
{
T_PN_MAC_ADDRESS
DestMacAddress
;
T_PN_MAC_ADDRESS
DestMacAddress
;
PN_U8
AddressHighWordHighByte
;
PN_U8
AddressHighWordHighByte
;
...
@@ -2427,7 +2491,8 @@ typedef struct _T_PN_SERVICE_SET_IP_SETTINGS_REQ {
...
@@ -2427,7 +2491,8 @@ typedef struct _T_PN_SERVICE_SET_IP_SETTINGS_REQ {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PN_SERVICE_SET_IP_SETTINGS_CON
{
typedef
struct
_T_PN_SERVICE_SET_IP_SETTINGS_CON
{
PN_U16
DummyForCompiler
;
PN_U16
DummyForCompiler
;
}
PACK_BYTE_ALIGNMENT
(
T_PN_SERVICE_SET_IP_SETTINGS_CON
);
}
PACK_BYTE_ALIGNMENT
(
T_PN_SERVICE_SET_IP_SETTINGS_CON
);
...
@@ -2489,7 +2554,8 @@ typedef struct _T_PN_SERVICE_SET_IP_SETTINGS_CON {
...
@@ -2489,7 +2554,8 @@ typedef struct _T_PN_SERVICE_SET_IP_SETTINGS_CON {
#define SOFTING_CONFIGURATION_LAST_FRAGMENT (PN_U32)0x80000000uL
#define SOFTING_CONFIGURATION_LAST_FRAGMENT (PN_U32)0x80000000uL
typedef
struct
_T_PN_STORE_SOFTING_CONFIGURATION
{
typedef
struct
_T_PN_STORE_SOFTING_CONFIGURATION
{
PN_U8
ConfigLengthHighWordHighByte
;
PN_U8
ConfigLengthHighWordHighByte
;
PN_U8
ConfigLengthHighWordLowByte
;
PN_U8
ConfigLengthHighWordLowByte
;
PN_U8
ConfigLengthLowWordHighByte
;
PN_U8
ConfigLengthLowWordHighByte
;
...
@@ -2515,7 +2581,8 @@ typedef struct _T_PN_STORE_SOFTING_CONFIGURATION {
...
@@ -2515,7 +2581,8 @@ typedef struct _T_PN_STORE_SOFTING_CONFIGURATION {
#define PROFILE_INFO_TASK_PROFILING (PN_U8)255u
#define PROFILE_INFO_TASK_PROFILING (PN_U8)255u
typedef
struct
_T_PN_PROFILE_INFO
{
typedef
struct
_T_PN_PROFILE_INFO
{
PN_U8
Action
;
PN_U8
Action
;
PN_U8
ModuleId
;
PN_U8
ModuleId
;
...
@@ -2525,7 +2592,8 @@ typedef struct _T_PN_PROFILE_INFO {
...
@@ -2525,7 +2592,8 @@ typedef struct _T_PN_PROFILE_INFO {
#define PN_SERVICE_DCP_SET_RESPONSE_TIMEOUT PN_SERVICE_SET_RESPONSE_TIMEOUT
#define PN_SERVICE_DCP_SET_RESPONSE_TIMEOUT PN_SERVICE_SET_RESPONSE_TIMEOUT
typedef
struct
_T_PN_SERVICE_DCP_SET_REQ
{
typedef
struct
_T_PN_SERVICE_DCP_SET_REQ
{
T_PN_MAC_ADDRESS
DestMacAddress
;
T_PN_MAC_ADDRESS
DestMacAddress
;
PN_U8
Option
;
PN_U8
Option
;
...
@@ -2548,7 +2616,8 @@ typedef struct _T_PN_SERVICE_DCP_SET_REQ {
...
@@ -2548,7 +2616,8 @@ typedef struct _T_PN_SERVICE_DCP_SET_REQ {
#define DCP_RESULT_RESOURCE_ERROR (PN_U8)4u
#define DCP_RESULT_RESOURCE_ERROR (PN_U8)4u
#define DCP_RESULT_SET_NOT_POSSIBLE (PN_U8)5u
#define DCP_RESULT_SET_NOT_POSSIBLE (PN_U8)5u
typedef
struct
_T_PN_SERVICE_DCP_SET_CON
{
typedef
struct
_T_PN_SERVICE_DCP_SET_CON
{
PN_U16
DummyForCompiler
;
PN_U16
DummyForCompiler
;
}
PACK_BYTE_ALIGNMENT
(
T_PN_SERVICE_DCP_SET_CON
);
}
PACK_BYTE_ALIGNMENT
(
T_PN_SERVICE_DCP_SET_CON
);
...
@@ -2557,7 +2626,8 @@ typedef struct _T_PN_SERVICE_DCP_SET_CON {
...
@@ -2557,7 +2626,8 @@ typedef struct _T_PN_SERVICE_DCP_SET_CON {
#define PN_SERVICE_DCP_GET_RESPONSE_TIMEOUT PN_SERVICE_SET_RESPONSE_TIMEOUT
#define PN_SERVICE_DCP_GET_RESPONSE_TIMEOUT PN_SERVICE_SET_RESPONSE_TIMEOUT
typedef
struct
_T_PN_SERVICE_DCP_GET_REQ
{
typedef
struct
_T_PN_SERVICE_DCP_GET_REQ
{
T_PN_MAC_ADDRESS
DestMacAddress
;
T_PN_MAC_ADDRESS
DestMacAddress
;
PN_U8
Option
;
PN_U8
Option
;
...
@@ -2567,13 +2637,15 @@ typedef struct _T_PN_SERVICE_DCP_GET_REQ {
...
@@ -2567,13 +2637,15 @@ typedef struct _T_PN_SERVICE_DCP_GET_REQ {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PN_SYS_TIME
{
typedef
struct
_T_PN_SYS_TIME
{
PN_U32
HighPart
;
PN_U32
HighPart
;
PN_U32
LowPart
;
PN_U32
LowPart
;
}
PACK_BYTE_ALIGNMENT
(
T_PN_SYS_TIME
);
}
PACK_BYTE_ALIGNMENT
(
T_PN_SYS_TIME
);
typedef
struct
_T_PN_PROFILE_ENTRY
{
typedef
struct
_T_PN_PROFILE_ENTRY
{
PN_U32
Identifier
;
PN_U32
Identifier
;
T_PN_SYS_TIME
Time
;
T_PN_SYS_TIME
Time
;
...
@@ -2584,7 +2656,8 @@ typedef struct _T_PN_PROFILE_ENTRY {
...
@@ -2584,7 +2656,8 @@ typedef struct _T_PN_PROFILE_ENTRY {
#define PROFILE_DATA_ENCODING_BIG_ENDIAN 0x00u
#define PROFILE_DATA_ENCODING_BIG_ENDIAN 0x00u
#define PROFILE_DATA_ENCODING_LITTLE_ENDIAN 0x01u
#define PROFILE_DATA_ENCODING_LITTLE_ENDIAN 0x01u
typedef
struct
_T_PN_PROFILE_INFO_HEADER
{
typedef
struct
_T_PN_PROFILE_INFO_HEADER
{
PN_U32
Version
;
PN_U32
Version
;
PN_U32
CountsPer1ms
;
PN_U32
CountsPer1ms
;
...
@@ -2600,7 +2673,8 @@ typedef struct _T_PN_PROFILE_INFO_HEADER {
...
@@ -2600,7 +2673,8 @@ typedef struct _T_PN_PROFILE_INFO_HEADER {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PROFINET_DCP_BLOCK_INFO
{
typedef
struct
_T_PROFINET_DCP_BLOCK_INFO
{
PN_U8
BlockInfoHighByte
;
PN_U8
BlockInfoHighByte
;
PN_U8
BlockInfoLowByte
;
PN_U8
BlockInfoLowByte
;
...
@@ -2611,7 +2685,8 @@ typedef struct _T_PROFINET_DCP_BLOCK_INFO {
...
@@ -2611,7 +2685,8 @@ typedef struct _T_PROFINET_DCP_BLOCK_INFO {
#define STORE_CONFIGURATION_RESULT_OK 0x00u
#define STORE_CONFIGURATION_RESULT_OK 0x00u
#define STORE_CONFIGURATION_RESULT_BUSY 0xFFu
#define STORE_CONFIGURATION_RESULT_BUSY 0xFFu
typedef
struct
_T_PN_STORE_SOFTING_CONFIGURATION_RESULT
{
typedef
struct
_T_PN_STORE_SOFTING_CONFIGURATION_RESULT
{
PN_U8
Result
;
PN_U8
Result
;
PN_U8
Alignment
;
PN_U8
Alignment
;
...
@@ -2619,7 +2694,8 @@ typedef struct _T_PN_STORE_SOFTING_CONFIGURATION_RESULT {
...
@@ -2619,7 +2694,8 @@ typedef struct _T_PN_STORE_SOFTING_CONFIGURATION_RESULT {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PN_SERVICE_DCP_GET_CON
{
typedef
struct
_T_PN_SERVICE_DCP_GET_CON
{
PN_U8
Option
;
PN_U8
Option
;
PN_U8
Suboption
;
PN_U8
Suboption
;
...
@@ -2658,7 +2734,8 @@ typedef struct _T_PN_SERVICE_DCP_GET_CON {
...
@@ -2658,7 +2734,8 @@ typedef struct _T_PN_SERVICE_DCP_GET_CON {
#define APPLICATION_DATA_OPTION_RESULT_RESOURCE_ERROR (PN_U8)4u
#define APPLICATION_DATA_OPTION_RESULT_RESOURCE_ERROR (PN_U8)4u
#define APPLICATION_DATA_OPTION_RESULT_SET_NOT_POSSIBLE (PN_U8)5u
#define APPLICATION_DATA_OPTION_RESULT_SET_NOT_POSSIBLE (PN_U8)5u
typedef
struct
_T_PN_APPLICATION_OPTION
{
typedef
struct
_T_PN_APPLICATION_OPTION
{
PN_U8
Option
;
PN_U8
Option
;
PN_U8
Suboption
;
PN_U8
Suboption
;
...
@@ -2666,7 +2743,8 @@ typedef struct _T_PN_APPLICATION_OPTION {
...
@@ -2666,7 +2743,8 @@ typedef struct _T_PN_APPLICATION_OPTION {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PN_APPLICATION_OPTION_DATA
{
typedef
struct
_T_PN_APPLICATION_OPTION_DATA
{
PN_U8
Option
;
PN_U8
Option
;
PN_U8
Suboption
;
PN_U8
Suboption
;
...
@@ -2680,7 +2758,8 @@ typedef struct _T_PN_APPLICATION_OPTION_DATA {
...
@@ -2680,7 +2758,8 @@ typedef struct _T_PN_APPLICATION_OPTION_DATA {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PN_APPLICATION_OPTION_RESULT
{
typedef
struct
_T_PN_APPLICATION_OPTION_RESULT
{
PN_U8
Option
;
PN_U8
Option
;
PN_U8
Suboption
;
PN_U8
Suboption
;
...
@@ -2692,7 +2771,8 @@ typedef struct _T_PN_APPLICATION_OPTION_RESULT {
...
@@ -2692,7 +2771,8 @@ typedef struct _T_PN_APPLICATION_OPTION_RESULT {
typedef
T_PN_APPLICATION_OPTION
T_PN_APPLICATION_OPTION_GET
;
typedef
T_PN_APPLICATION_OPTION
T_PN_APPLICATION_OPTION_GET
;
typedef
struct
_T_PN_SERVICE_APPLICATION_DATA_GET_IND
{
typedef
struct
_T_PN_SERVICE_APPLICATION_DATA_GET_IND
{
PN_U8
NumberOptionsHighByte
;
PN_U8
NumberOptionsHighByte
;
PN_U8
NumberOptionsLowByte
;
PN_U8
NumberOptionsLowByte
;
...
@@ -2705,7 +2785,8 @@ typedef struct _T_PN_SERVICE_APPLICATION_DATA_GET_IND {
...
@@ -2705,7 +2785,8 @@ typedef struct _T_PN_SERVICE_APPLICATION_DATA_GET_IND {
typedef
T_PN_APPLICATION_OPTION_DATA
T_PN_APPLICATION_OPTION_DATA_GET
;
typedef
T_PN_APPLICATION_OPTION_DATA
T_PN_APPLICATION_OPTION_DATA_GET
;
typedef
struct
_T_PN_SERVICE_APPLICATION_DATA_GET_RES
{
typedef
struct
_T_PN_SERVICE_APPLICATION_DATA_GET_RES
{
PN_U8
NumberOptionsHighByte
;
PN_U8
NumberOptionsHighByte
;
PN_U8
NumberOptionsLowByte
;
PN_U8
NumberOptionsLowByte
;
...
@@ -2720,7 +2801,8 @@ typedef T_PN_APPLICATION_OPTION_DATA T_PN_APPLICATION_OPTION_DATA_SET;
...
@@ -2720,7 +2801,8 @@ typedef T_PN_APPLICATION_OPTION_DATA T_PN_APPLICATION_OPTION_DATA_SET;
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PN_SERVICE_APPLICATION_DATA_SET_IND
{
typedef
struct
_T_PN_SERVICE_APPLICATION_DATA_SET_IND
{
PN_U8
NumberOptionsHighByte
;
PN_U8
NumberOptionsHighByte
;
PN_U8
NumberOptionsLowByte
;
PN_U8
NumberOptionsLowByte
;
...
@@ -2733,7 +2815,8 @@ typedef struct _T_PN_SERVICE_APPLICATION_DATA_SET_IND {
...
@@ -2733,7 +2815,8 @@ typedef struct _T_PN_SERVICE_APPLICATION_DATA_SET_IND {
typedef
T_PN_APPLICATION_OPTION_RESULT
T_PN_APPLICATION_OPTION_SET
;
typedef
T_PN_APPLICATION_OPTION_RESULT
T_PN_APPLICATION_OPTION_SET
;
typedef
struct
_T_PN_SERVICE_APPLICATION_DATA_SET_RES
{
typedef
struct
_T_PN_SERVICE_APPLICATION_DATA_SET_RES
{
PN_U8
NumberOptionsHighByte
;
PN_U8
NumberOptionsHighByte
;
PN_U8
NumberOptionsLowByte
;
PN_U8
NumberOptionsLowByte
;
...
@@ -2744,7 +2827,8 @@ typedef struct _T_PN_SERVICE_APPLICATION_DATA_SET_RES {
...
@@ -2744,7 +2827,8 @@ typedef struct _T_PN_SERVICE_APPLICATION_DATA_SET_RES {
/*===========================================================================*/
/*===========================================================================*/
typedef
struct
_T_PN_SERVICE_GET_ETHERNET_DATA_REQ
{
typedef
struct
_T_PN_SERVICE_GET_ETHERNET_DATA_REQ
{
PN_U16
DummyForCompiler
;
PN_U16
DummyForCompiler
;
}
PACK_BYTE_ALIGNMENT
(
T_PN_SERVICE_GET_ETHERNET_DATA_REQ
);
}
PACK_BYTE_ALIGNMENT
(
T_PN_SERVICE_GET_ETHERNET_DATA_REQ
);
...
@@ -2777,7 +2861,8 @@ typedef struct _T_PN_SERVICE_GET_ETHERNET_DATA_REQ {
...
@@ -2777,7 +2861,8 @@ typedef struct _T_PN_SERVICE_GET_ETHERNET_DATA_REQ {
#define PN_LINE_LENGTH_UNKNOWN (PN_U16)0xFFFFu
#define PN_LINE_LENGTH_UNKNOWN (PN_U16)0xFFFFu
#define PN_DELAY_UNKNOWN (PN_U32)0uL
#define PN_DELAY_UNKNOWN (PN_U32)0uL
typedef
struct
_T_PN_PORT_DATA
{
typedef
struct
_T_PN_PORT_DATA
{
PN_U8
LinkState
;
PN_U8
LinkState
;
PN_U8
Autonegotiation
;
PN_U8
Autonegotiation
;
...
@@ -2834,7 +2919,8 @@ typedef struct _T_PN_PORT_DATA {
...
@@ -2834,7 +2919,8 @@ typedef struct _T_PN_PORT_DATA {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PN_SERVICE_GET_ETHERNET_DATA_CON
{
typedef
struct
_T_PN_SERVICE_GET_ETHERNET_DATA_CON
{
PN_U8
Flags
;
PN_U8
Flags
;
PN_U8
AdditionalFlags
;
PN_U8
AdditionalFlags
;
...
@@ -2865,7 +2951,8 @@ typedef struct _T_PN_SERVICE_GET_ETHERNET_DATA_CON {
...
@@ -2865,7 +2951,8 @@ typedef struct _T_PN_SERVICE_GET_ETHERNET_DATA_CON {
/*===========================================================================*/
/*===========================================================================*/
typedef
struct
_T_PN_CONNECT_IO_LOCATION
{
typedef
struct
_T_PN_CONNECT_IO_LOCATION
{
PN_U8
SlotNumberHighByte
;
PN_U8
SlotNumberHighByte
;
PN_U8
SlotNumberLowByte
;
PN_U8
SlotNumberLowByte
;
...
@@ -2879,7 +2966,8 @@ typedef struct _T_PN_CONNECT_IO_LOCATION {
...
@@ -2879,7 +2966,8 @@ typedef struct _T_PN_CONNECT_IO_LOCATION {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PN_CONNECT_IOCR_API
{
typedef
struct
_T_PN_CONNECT_IOCR_API
{
PN_U8
APIHighWordHighByte
;
PN_U8
APIHighWordHighByte
;
PN_U8
APIHighWordLowByte
;
PN_U8
APIHighWordLowByte
;
PN_U8
APILowWordHighByte
;
PN_U8
APILowWordHighByte
;
...
@@ -2900,7 +2988,8 @@ typedef struct _T_PN_CONNECT_IOCR_API {
...
@@ -2900,7 +2988,8 @@ typedef struct _T_PN_CONNECT_IOCR_API {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PN_CONNECT_IOCR
{
typedef
struct
_T_PN_CONNECT_IOCR
{
PN_U8
IOCRIdentifierHighByte
;
PN_U8
IOCRIdentifierHighByte
;
PN_U8
IOCRIdentifierLowByte
;
PN_U8
IOCRIdentifierLowByte
;
...
@@ -2927,7 +3016,8 @@ typedef struct _T_PN_CONNECT_IOCR {
...
@@ -2927,7 +3016,8 @@ typedef struct _T_PN_CONNECT_IOCR {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PN_CONNECT_SUBMODULE
{
typedef
struct
_T_PN_CONNECT_SUBMODULE
{
PN_U8
SubSlotNumberHighByte
;
PN_U8
SubSlotNumberHighByte
;
PN_U8
SubSlotNumberLowByte
;
PN_U8
SubSlotNumberLowByte
;
...
@@ -2952,7 +3042,8 @@ typedef struct _T_PN_CONNECT_SUBMODULE {
...
@@ -2952,7 +3042,8 @@ typedef struct _T_PN_CONNECT_SUBMODULE {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PN_CONNECT_MODULE_API
{
typedef
struct
_T_PN_CONNECT_MODULE_API
{
PN_U8
APIHighWordHighByte
;
PN_U8
APIHighWordHighByte
;
PN_U8
APIHighWordLowByte
;
PN_U8
APIHighWordLowByte
;
PN_U8
APILowWordHighByte
;
PN_U8
APILowWordHighByte
;
...
@@ -2976,7 +3067,8 @@ typedef struct _T_PN_CONNECT_MODULE_API {
...
@@ -2976,7 +3067,8 @@ typedef struct _T_PN_CONNECT_MODULE_API {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PN_CONNECT_MODULE
{
typedef
struct
_T_PN_CONNECT_MODULE
{
PN_U8
NumberOfAPIsHighByte
;
PN_U8
NumberOfAPIsHighByte
;
PN_U8
NumberOfAPIsLowByte
;
PN_U8
NumberOfAPIsLowByte
;
...
@@ -2988,7 +3080,8 @@ typedef struct _T_PN_CONNECT_MODULE {
...
@@ -2988,7 +3080,8 @@ typedef struct _T_PN_CONNECT_MODULE {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PN_CONNECT_AR_VENDOR_BLOCK
{
typedef
struct
_T_PN_CONNECT_AR_VENDOR_BLOCK
{
PN_U8
VersionHighByte
;
PN_U8
VersionHighByte
;
PN_U8
VersionLowByte
;
PN_U8
VersionLowByte
;
...
@@ -3011,7 +3104,8 @@ typedef struct _T_PN_CONNECT_AR_VENDOR_BLOCK {
...
@@ -3011,7 +3104,8 @@ typedef struct _T_PN_CONNECT_AR_VENDOR_BLOCK {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PN_CONNECT_REDUNDANCY_BLOCK
{
typedef
struct
_T_PN_CONNECT_REDUNDANCY_BLOCK
{
PN_U8
VersionHighByte
;
PN_U8
VersionHighByte
;
PN_U8
VersionLowByte
;
PN_U8
VersionLowByte
;
...
@@ -3032,7 +3126,8 @@ typedef struct _T_PN_CONNECT_REDUNDANCY_BLOCK {
...
@@ -3032,7 +3126,8 @@ typedef struct _T_PN_CONNECT_REDUNDANCY_BLOCK {
#define PROFINET_AR_TYPE_IOCARSINGLE_RT3 (PN_U16)0x0010u
#define PROFINET_AR_TYPE_IOCARSINGLE_RT3 (PN_U16)0x0010u
#define PROFINET_AR_TYPE_IOCAR_SR (PN_U16)0x0020u
#define PROFINET_AR_TYPE_IOCAR_SR (PN_U16)0x0020u
typedef
struct
_T_PN_SERVICE_CONNECT_IND
{
typedef
struct
_T_PN_SERVICE_CONNECT_IND
{
PN_U8
ARIdentifierHighByte
;
PN_U8
ARIdentifierHighByte
;
PN_U8
ARIdentifierLowByte
;
PN_U8
ARIdentifierLowByte
;
...
@@ -3078,7 +3173,8 @@ typedef struct _T_PN_SERVICE_CONNECT_IND {
...
@@ -3078,7 +3173,8 @@ typedef struct _T_PN_SERVICE_CONNECT_IND {
#define CONNECT_RES_ERROR_CODE1_AR_OUT_OF_RESOURCE 0x40u
#define CONNECT_RES_ERROR_CODE1_AR_OUT_OF_RESOURCE 0x40u
#define CONNECT_RES_ERROR_CODE2_AR_OUT_OF_RESOURCE 0x04u
#define CONNECT_RES_ERROR_CODE2_AR_OUT_OF_RESOURCE 0x04u
typedef
struct
_T_PN_SERVICE_CONNECT_RES
{
typedef
struct
_T_PN_SERVICE_CONNECT_RES
{
PN_U8
ARIdentifierHighByte
;
PN_U8
ARIdentifierHighByte
;
PN_U8
ARIdentifierLowByte
;
PN_U8
ARIdentifierLowByte
;
...
@@ -3100,7 +3196,8 @@ typedef struct _T_PN_SERVICE_CONNECT_RES {
...
@@ -3100,7 +3196,8 @@ typedef struct _T_PN_SERVICE_CONNECT_RES {
/*===========================================================================*/
/*===========================================================================*/
typedef
struct
_T_PN_SERVICE_WRITE_IND
{
typedef
struct
_T_PN_SERVICE_WRITE_IND
{
PN_U8
ARIdentifierHighByte
;
PN_U8
ARIdentifierHighByte
;
PN_U8
ARIdentifierLowByte
;
PN_U8
ARIdentifierLowByte
;
...
@@ -3138,7 +3235,8 @@ typedef struct _T_PN_SERVICE_WRITE_IND {
...
@@ -3138,7 +3235,8 @@ typedef struct _T_PN_SERVICE_WRITE_IND {
#define PN_SERVICE_WRITE_INVALID_SEQUENCE_NUMBER 0x07u
#define PN_SERVICE_WRITE_INVALID_SEQUENCE_NUMBER 0x07u
#define PN_SERVICE_WRITE_INVALID_AR_UUID 0x08u
#define PN_SERVICE_WRITE_INVALID_AR_UUID 0x08u
typedef
struct
_T_PN_SERVICE_WRITE_REQ
{
typedef
struct
_T_PN_SERVICE_WRITE_REQ
{
PN_U8
VersionHighByte
;
PN_U8
VersionHighByte
;
PN_U8
VersionLowByte
;
PN_U8
VersionLowByte
;
...
@@ -3181,7 +3279,8 @@ typedef struct _T_PN_SERVICE_WRITE_REQ {
...
@@ -3181,7 +3279,8 @@ typedef struct _T_PN_SERVICE_WRITE_REQ {
#define WRITE_RES_ERROR_CODE1_INVALID_SLOT_SUBSLOT 0xB2u
#define WRITE_RES_ERROR_CODE1_INVALID_SLOT_SUBSLOT 0xB2u
#define WRITE_RES_ERROR_CODE2_INVALID_SLOT_SUBSLOT 7u
#define WRITE_RES_ERROR_CODE2_INVALID_SLOT_SUBSLOT 7u
typedef
struct
_T_PN_SERVICE_WRITE_RES
{
typedef
struct
_T_PN_SERVICE_WRITE_RES
{
PN_U8
ARIdentifierHighByte
;
PN_U8
ARIdentifierHighByte
;
PN_U8
ARIdentifierLowByte
;
PN_U8
ARIdentifierLowByte
;
...
@@ -3192,7 +3291,8 @@ typedef struct _T_PN_SERVICE_WRITE_RES {
...
@@ -3192,7 +3291,8 @@ typedef struct _T_PN_SERVICE_WRITE_RES {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PN_SERVICE_WRITE_CON
{
typedef
struct
_T_PN_SERVICE_WRITE_CON
{
PN_U16
DummyForCompiler
;
PN_U16
DummyForCompiler
;
}
PACK_BYTE_ALIGNMENT
(
T_PN_SERVICE_WRITE_CON
);
}
PACK_BYTE_ALIGNMENT
(
T_PN_SERVICE_WRITE_CON
);
...
@@ -3353,7 +3453,8 @@ typedef struct _T_PN_SERVICE_WRITE_CON {
...
@@ -3353,7 +3453,8 @@ typedef struct _T_PN_SERVICE_WRITE_CON {
PN_SERVICE_WRITE_INVALID_SEQUENCE_NUMBER
PN_SERVICE_WRITE_INVALID_SEQUENCE_NUMBER
#define PN_SERVICE_READ_INVALID_AR_UUID PN_SERVICE_WRITE_INVALID_AR_UUID
#define PN_SERVICE_READ_INVALID_AR_UUID PN_SERVICE_WRITE_INVALID_AR_UUID
typedef
struct
_T_PN_SERVICE_READ_IND
{
typedef
struct
_T_PN_SERVICE_READ_IND
{
PN_U8
ARIdentifierHighByte
;
PN_U8
ARIdentifierHighByte
;
PN_U8
ARIdentifierLowByte
;
PN_U8
ARIdentifierLowByte
;
...
@@ -3378,7 +3479,8 @@ typedef struct _T_PN_SERVICE_READ_IND {
...
@@ -3378,7 +3479,8 @@ typedef struct _T_PN_SERVICE_READ_IND {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PN_SERVICE_READ_REQ
{
typedef
struct
_T_PN_SERVICE_READ_REQ
{
PN_U8
VersionHighByte
;
PN_U8
VersionHighByte
;
PN_U8
VersionLowByte
;
PN_U8
VersionLowByte
;
...
@@ -3403,7 +3505,8 @@ typedef struct _T_PN_SERVICE_READ_REQ {
...
@@ -3403,7 +3505,8 @@ typedef struct _T_PN_SERVICE_READ_REQ {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PN_SERVICE_READ_CON
{
typedef
struct
_T_PN_SERVICE_READ_CON
{
PN_U8
APIHighWordHighByte
;
PN_U8
APIHighWordHighByte
;
PN_U8
APIHighWordLowByte
;
PN_U8
APIHighWordLowByte
;
PN_U8
APILowWordHighByte
;
PN_U8
APILowWordHighByte
;
...
@@ -3445,7 +3548,8 @@ typedef struct _T_PN_SERVICE_READ_CON {
...
@@ -3445,7 +3548,8 @@ typedef struct _T_PN_SERVICE_READ_CON {
#define READ_RES_ERROR_CODE2_INVALID_SLOT_SUBSLOT \
#define READ_RES_ERROR_CODE2_INVALID_SLOT_SUBSLOT \
WRITE_RES_ERROR_CODE2_INVALID_SLOT_SUBSLOT
WRITE_RES_ERROR_CODE2_INVALID_SLOT_SUBSLOT
typedef
struct
_T_PN_SERVICE_READ_RES
{
typedef
struct
_T_PN_SERVICE_READ_RES
{
PN_U8
ARIdentifierHighByte
;
PN_U8
ARIdentifierHighByte
;
PN_U8
ARIdentifierLowByte
;
PN_U8
ARIdentifierLowByte
;
...
@@ -3595,7 +3699,8 @@ typedef T_PN_SERVICE_READ_IND T_PN_SERVICE_IMPLICIT_READ_IND;
...
@@ -3595,7 +3699,8 @@ typedef T_PN_SERVICE_READ_IND T_PN_SERVICE_IMPLICIT_READ_IND;
#define PN_SERVICE_IMPLICIT_READ_INVALID_TARGET_UUID \
#define PN_SERVICE_IMPLICIT_READ_INVALID_TARGET_UUID \
(PN_SERVICE_IMPLICIT_READ_RESPONSE_TIMEOUT + 0x06u)
(PN_SERVICE_IMPLICIT_READ_RESPONSE_TIMEOUT + 0x06u)
typedef
struct
_T_PN_SERVICE_IMPLICIT_READ_REQ
{
typedef
struct
_T_PN_SERVICE_IMPLICIT_READ_REQ
{
PN_U8
IpAddressHighWordHighByte
;
PN_U8
IpAddressHighWordHighByte
;
PN_U8
IpAddressHighWordLowByte
;
PN_U8
IpAddressHighWordLowByte
;
PN_U8
IpAddressLowWordHighByte
;
PN_U8
IpAddressLowWordHighByte
;
...
@@ -3635,7 +3740,8 @@ typedef struct _T_PN_SERVICE_IMPLICIT_READ_REQ {
...
@@ -3635,7 +3740,8 @@ typedef struct _T_PN_SERVICE_IMPLICIT_READ_REQ {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PN_SERVICE_IMIPLICIT_READ_CON
{
typedef
struct
_T_PN_SERVICE_IMIPLICIT_READ_CON
{
PN_U8
TypeHighByte
;
PN_U8
TypeHighByte
;
PN_U8
TypeLowByte
;
PN_U8
TypeLowByte
;
...
@@ -3674,7 +3780,8 @@ typedef T_PN_SERVICE_READ_RES T_PN_SERVICE_IMPLICIT_READ_RES;
...
@@ -3674,7 +3780,8 @@ typedef T_PN_SERVICE_READ_RES T_PN_SERVICE_IMPLICIT_READ_RES;
#define PN_SERVICE_LOOKUP_INVALID_RESPONSE \
#define PN_SERVICE_LOOKUP_INVALID_RESPONSE \
(PN_SERVICE_LOOKUP_RESPONSE_TIMEOUT + 0x02u)
(PN_SERVICE_LOOKUP_RESPONSE_TIMEOUT + 0x02u)
typedef
struct
_T_PN_SERVICE_LOOKUP_REQ
{
typedef
struct
_T_PN_SERVICE_LOOKUP_REQ
{
PN_U8
IpAddressHighWordHighByte
;
PN_U8
IpAddressHighWordHighByte
;
PN_U8
IpAddressHighWordLowByte
;
PN_U8
IpAddressHighWordLowByte
;
PN_U8
IpAddressLowWordHighByte
;
PN_U8
IpAddressLowWordHighByte
;
...
@@ -3684,7 +3791,8 @@ typedef struct _T_PN_SERVICE_LOOKUP_REQ {
...
@@ -3684,7 +3791,8 @@ typedef struct _T_PN_SERVICE_LOOKUP_REQ {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PN_SERVICE_LOOKUP_CON
{
typedef
struct
_T_PN_SERVICE_LOOKUP_CON
{
PN_U8
InstanceHighByte
;
PN_U8
InstanceHighByte
;
PN_U8
InstanceLowByte
;
PN_U8
InstanceLowByte
;
...
@@ -3708,7 +3816,8 @@ typedef struct _T_PN_SERVICE_LOOKUP_CON {
...
@@ -3708,7 +3816,8 @@ typedef struct _T_PN_SERVICE_LOOKUP_CON {
#define PN_SERVICE_DISCOVER_INVALID_MAC_ADDRESS 0x01u
#define PN_SERVICE_DISCOVER_INVALID_MAC_ADDRESS 0x01u
#define PN_SERVICE_DISCOVER_DCP_TIMEOUT 0x02u
#define PN_SERVICE_DISCOVER_DCP_TIMEOUT 0x02u
typedef
struct
_T_PN_SERVICE_DISCOVER_REQ
{
typedef
struct
_T_PN_SERVICE_DISCOVER_REQ
{
PN_U8
Flags
;
PN_U8
Flags
;
PN_U8
Alignment
;
PN_U8
Alignment
;
...
@@ -3729,7 +3838,8 @@ typedef struct _T_PN_SERVICE_DISCOVER_REQ {
...
@@ -3729,7 +3838,8 @@ typedef struct _T_PN_SERVICE_DISCOVER_REQ {
#define PN_DISCOVER_BLOCK_TYPE_NODE_LOCAL_DATA 0x0001u
#define PN_DISCOVER_BLOCK_TYPE_NODE_LOCAL_DATA 0x0001u
#define PN_DISCOVER_BLOCK_TYPE_NODE_REMOTE_DATA 0x0002u
#define PN_DISCOVER_BLOCK_TYPE_NODE_REMOTE_DATA 0x0002u
typedef
struct
_T_PN_DISCOVER_BLOCK_HEADER
{
typedef
struct
_T_PN_DISCOVER_BLOCK_HEADER
{
PN_U8
TypeHighByte
;
PN_U8
TypeHighByte
;
PN_U8
TypeLowByte
;
PN_U8
TypeLowByte
;
...
@@ -3745,7 +3855,8 @@ typedef struct _T_PN_DISCOVER_BLOCK_HEADER {
...
@@ -3745,7 +3855,8 @@ typedef struct _T_PN_DISCOVER_BLOCK_HEADER {
typedef
T_PROFINET_UUID
T_MRP_UUID
;
typedef
T_PROFINET_UUID
T_MRP_UUID
;
typedef
struct
_T_PN_DISCOVER_NODE_LOCAL_IF_DATA_V10
{
typedef
struct
_T_PN_DISCOVER_NODE_LOCAL_IF_DATA_V10
{
PN_U8
InterfaceNumber
;
PN_U8
InterfaceNumber
;
PN_U8
Alignment
;
PN_U8
Alignment
;
...
@@ -3792,7 +3903,8 @@ typedef struct _T_PN_DISCOVER_NODE_LOCAL_IF_DATA_V10 {
...
@@ -3792,7 +3903,8 @@ typedef struct _T_PN_DISCOVER_NODE_LOCAL_IF_DATA_V10 {
#define PN_FEATURE_FRAGMENTATION_ENABLED 0x00000010uL
#define PN_FEATURE_FRAGMENTATION_ENABLED 0x00000010uL
#define PN_FEATURE_FRAGMENTATION_SUPPORTED 0x00000020uL
#define PN_FEATURE_FRAGMENTATION_SUPPORTED 0x00000020uL
typedef
struct
_T_PN_DISCOVER_NODE_LOCAL_PORT_DATA_V10
{
typedef
struct
_T_PN_DISCOVER_NODE_LOCAL_PORT_DATA_V10
{
PN_U8
InterfaceNumber
;
PN_U8
InterfaceNumber
;
PN_U8
PortNumber
;
PN_U8
PortNumber
;
...
@@ -3840,7 +3952,8 @@ typedef struct _T_PN_DISCOVER_NODE_LOCAL_PORT_DATA_V10 {
...
@@ -3840,7 +3952,8 @@ typedef struct _T_PN_DISCOVER_NODE_LOCAL_PORT_DATA_V10 {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PN_DISCOVER_NODE_LOCAL_DATA_V10
{
typedef
struct
_T_PN_DISCOVER_NODE_LOCAL_DATA_V10
{
T_PN_DISCOVER_BLOCK_HEADER
Header
;
T_PN_DISCOVER_BLOCK_HEADER
Header
;
PN_U8
ChassisIdTypeHighByte
;
PN_U8
ChassisIdTypeHighByte
;
...
@@ -3865,7 +3978,8 @@ typedef struct _T_PN_DISCOVER_NODE_LOCAL_DATA_V10 {
...
@@ -3865,7 +3978,8 @@ typedef struct _T_PN_DISCOVER_NODE_LOCAL_DATA_V10 {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PN_DISCOVER_NODE_REMOTE_PEER_DATA_V10
{
typedef
struct
_T_PN_DISCOVER_NODE_REMOTE_PEER_DATA_V10
{
PN_U8
LocalInterfaceNumber
;
PN_U8
LocalInterfaceNumber
;
PN_U8
LocalPortNumber
;
PN_U8
LocalPortNumber
;
...
@@ -3898,7 +4012,8 @@ typedef struct _T_PN_DISCOVER_NODE_REMOTE_PEER_DATA_V10 {
...
@@ -3898,7 +4012,8 @@ typedef struct _T_PN_DISCOVER_NODE_REMOTE_PEER_DATA_V10 {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PN_DISCOVER_NODE_REMOTE_DATA_V10
{
typedef
struct
_T_PN_DISCOVER_NODE_REMOTE_DATA_V10
{
T_PN_DISCOVER_BLOCK_HEADER
Header
;
T_PN_DISCOVER_BLOCK_HEADER
Header
;
PN_U8
NumberOfPeerHighByte
;
PN_U8
NumberOfPeerHighByte
;
...
@@ -3911,7 +4026,8 @@ typedef struct _T_PN_DISCOVER_NODE_REMOTE_DATA_V10 {
...
@@ -3911,7 +4026,8 @@ typedef struct _T_PN_DISCOVER_NODE_REMOTE_DATA_V10 {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PN_SERVICE_DISCOVER_CON
{
typedef
struct
_T_PN_SERVICE_DISCOVER_CON
{
PN_U8
RemainingLengthHighByte
;
PN_U8
RemainingLengthHighByte
;
PN_U8
RemainingLengthLowByte
;
PN_U8
RemainingLengthLowByte
;
...
@@ -3938,7 +4054,8 @@ typedef T_PN_DIFF_MODULE_SUBSLOT T_PROFINET_MODULE_SUBSLOT_RES;
...
@@ -3938,7 +4054,8 @@ typedef T_PN_DIFF_MODULE_SUBSLOT T_PROFINET_MODULE_SUBSLOT_RES;
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PROFINET_MODULE_RES
{
typedef
struct
_T_PROFINET_MODULE_RES
{
T_PROFINET_BLOCK_HEADER
Header
;
T_PROFINET_BLOCK_HEADER
Header
;
PN_U8
NumberOfAPIsHighByte
;
PN_U8
NumberOfAPIsHighByte
;
...
@@ -3952,7 +4069,8 @@ typedef struct _T_PROFINET_MODULE_RES {
...
@@ -3952,7 +4069,8 @@ typedef struct _T_PROFINET_MODULE_RES {
/*===========================================================================*/
/*===========================================================================*/
typedef
struct
_T_PROFINET_IOCR
{
typedef
struct
_T_PROFINET_IOCR
{
PN_U8
PropertiesHighWordHighByte
;
PN_U8
PropertiesHighWordHighByte
;
PN_U8
PropertiesHighWordLowByte
;
PN_U8
PropertiesHighWordLowByte
;
PN_U8
PropertiesLowWordHighByte
;
PN_U8
PropertiesLowWordHighByte
;
...
@@ -3974,7 +4092,8 @@ typedef struct _T_PROFINET_IOCR {
...
@@ -3974,7 +4092,8 @@ typedef struct _T_PROFINET_IOCR {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PROFINET_API
{
typedef
struct
_T_PROFINET_API
{
PN_U8
APIHighWordHighByte
;
PN_U8
APIHighWordHighByte
;
PN_U8
APIHighWordLowByte
;
PN_U8
APIHighWordLowByte
;
PN_U8
APILowWordHighByte
;
PN_U8
APILowWordHighByte
;
...
@@ -3984,7 +4103,8 @@ typedef struct _T_PROFINET_API {
...
@@ -3984,7 +4103,8 @@ typedef struct _T_PROFINET_API {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PROFINET_AR_VENDOR
{
typedef
struct
_T_PROFINET_AR_VENDOR
{
T_PROFINET_BLOCK_HEADER
Header
;
T_PROFINET_BLOCK_HEADER
Header
;
PN_U8
APStructureIdentifierHighByte
;
PN_U8
APStructureIdentifierHighByte
;
...
@@ -4004,7 +4124,8 @@ typedef struct _T_PROFINET_AR_VENDOR {
...
@@ -4004,7 +4124,8 @@ typedef struct _T_PROFINET_AR_VENDOR {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PROFINET_IOCR_DFP
{
typedef
struct
_T_PROFINET_IOCR_DFP
{
PN_U8
IOCRReferenceHighByte
;
PN_U8
IOCRReferenceHighByte
;
PN_U8
IOCRReferenceLowByte
;
PN_U8
IOCRReferenceLowByte
;
...
@@ -4020,7 +4141,8 @@ typedef struct _T_PROFINET_IOCR_DFP {
...
@@ -4020,7 +4141,8 @@ typedef struct _T_PROFINET_IOCR_DFP {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PROFINET_IR_INFO
{
typedef
struct
_T_PROFINET_IR_INFO
{
T_PROFINET_BLOCK_HEADER
Header
;
T_PROFINET_BLOCK_HEADER
Header
;
PN_U8
Padding1
[
2
];
PN_U8
Padding1
[
2
];
...
@@ -4049,7 +4171,8 @@ typedef struct _T_PROFINET_IR_INFO {
...
@@ -4049,7 +4171,8 @@ typedef struct _T_PROFINET_IR_INFO {
#define PROFINET_SR_PROPERTIES_SET_INVALID_INPUT_INVALID 0x00000004u
#define PROFINET_SR_PROPERTIES_SET_INVALID_INPUT_INVALID 0x00000004u
#define PROFINET_SR_PROPERTIES_RESERVED2 0x0000FFF8u
#define PROFINET_SR_PROPERTIES_RESERVED2 0x0000FFF8u
typedef
struct
_T_PROFINET_SR_INFO
{
typedef
struct
_T_PROFINET_SR_INFO
{
T_PROFINET_BLOCK_HEADER
Header
;
T_PROFINET_BLOCK_HEADER
Header
;
PN_U8
DataHoldFactorHighByte
;
PN_U8
DataHoldFactorHighByte
;
...
@@ -4068,8 +4191,8 @@ typedef struct _T_PROFINET_SR_INFO {
...
@@ -4068,8 +4191,8 @@ typedef struct _T_PROFINET_SR_INFO {
#define PROFINET_FSU_HELLO_ON_LINK_UP 0x00000001uL
#define PROFINET_FSU_HELLO_ON_LINK_UP 0x00000001uL
#define PROFINET_FSU_HELLO_DELAYED_ON_LINK_UP 0x00000002uL
#define PROFINET_FSU_HELLO_DELAYED_ON_LINK_UP 0x00000002uL
#define PROFINET_FSU_HELLO_MODE_MASK \
#define PROFINET_FSU_HELLO_MODE_MASK \
(PROFINET_FSU_HELLO_MODE_OFF | PROFINET_FSU_HELLO_ON_LINK_UP
\
(PROFINET_FSU_HELLO_MODE_OFF | PROFINET_FSU_HELLO_ON_LINK_UP
|
\
|
PROFINET_FSU_HELLO_DELAYED_ON_LINK_UP)
PROFINET_FSU_HELLO_DELAYED_ON_LINK_UP)
#define PROFINET_FSU_HELLO_INTERVAL_30MS 0x0000001EuL
#define PROFINET_FSU_HELLO_INTERVAL_30MS 0x0000001EuL
#define PROFINET_FSU_HELLO_INTERVAL_50MS 0x00000032uL
#define PROFINET_FSU_HELLO_INTERVAL_50MS 0x00000032uL
...
@@ -4084,7 +4207,8 @@ typedef struct _T_PROFINET_SR_INFO {
...
@@ -4084,7 +4207,8 @@ typedef struct _T_PROFINET_SR_INFO {
#define PROFINET_FSU_HELLO_DELAY_500MS 0x000001F4uL
#define PROFINET_FSU_HELLO_DELAY_500MS 0x000001F4uL
#define PROFINET_FSU_HELLO_DELAY_1S 0x000003E8uL
#define PROFINET_FSU_HELLO_DELAY_1S 0x000003E8uL
typedef
struct
_T_PROFINET_FS_HELLO
{
typedef
struct
_T_PROFINET_FS_HELLO
{
T_PROFINET_BLOCK_HEADER
Header
;
T_PROFINET_BLOCK_HEADER
Header
;
PN_U8
Padding
[
2
];
PN_U8
Padding
[
2
];
...
@@ -4116,7 +4240,8 @@ typedef struct _T_PROFINET_FS_HELLO {
...
@@ -4116,7 +4240,8 @@ typedef struct _T_PROFINET_FS_HELLO {
#define PROFINET_FSU_PRM_MODE_OFF 0x00000000uL
#define PROFINET_FSU_PRM_MODE_OFF 0x00000000uL
#define PROFINET_FSU_PRM_MODE_ON 0x00000001uL
#define PROFINET_FSU_PRM_MODE_ON 0x00000001uL
typedef
struct
_T_PROFINET_FS_PRM
{
typedef
struct
_T_PROFINET_FS_PRM
{
T_PROFINET_BLOCK_HEADER
Header
;
T_PROFINET_BLOCK_HEADER
Header
;
PN_U8
Padding1
[
2
];
PN_U8
Padding1
[
2
];
...
@@ -4133,7 +4258,8 @@ typedef struct _T_PROFINET_FS_PRM {
...
@@ -4133,7 +4258,8 @@ typedef struct _T_PROFINET_FS_PRM {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PROFINET_FS
{
typedef
struct
_T_PROFINET_FS
{
T_PROFINET_BLOCK_HEADER
Header
;
T_PROFINET_BLOCK_HEADER
Header
;
PN_U8
Padding
[
2
];
PN_U8
Padding
[
2
];
...
@@ -4147,7 +4273,8 @@ typedef struct _T_PROFINET_FS {
...
@@ -4147,7 +4273,8 @@ typedef struct _T_PROFINET_FS {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PROFINET_AR_FSU_ADJUST
{
typedef
struct
_T_PROFINET_AR_FSU_ADJUST
{
T_PROFINET_BLOCK_HEADER
Header
;
T_PROFINET_BLOCK_HEADER
Header
;
PN_U8
Padding
[
2
];
PN_U8
Padding
[
2
];
...
@@ -4163,7 +4290,8 @@ typedef T_PROFINET_AR_FSU_ADJUST T_PROFINET_AR_FSU;
...
@@ -4163,7 +4290,8 @@ typedef T_PROFINET_AR_FSU_ADJUST T_PROFINET_AR_FSU;
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PROFINET_INTERFACE_FSU_ADJUST
{
typedef
struct
_T_PROFINET_INTERFACE_FSU_ADJUST
{
T_PROFINET_BLOCK_HEADER
Header
;
T_PROFINET_BLOCK_HEADER
Header
;
PN_U8
Padding
[
2
];
PN_U8
Padding
[
2
];
...
@@ -4177,7 +4305,8 @@ typedef struct _T_PROFINET_INTERFACE_FSU_ADJUST {
...
@@ -4177,7 +4305,8 @@ typedef struct _T_PROFINET_INTERFACE_FSU_ADJUST {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PROFINET_SRL_DATA
{
typedef
struct
_T_PROFINET_SRL_DATA
{
T_PROFINET_BLOCK_HEADER
Header
;
T_PROFINET_BLOCK_HEADER
Header
;
PN_U8
RedundancyInfoHighByte
;
PN_U8
RedundancyInfoHighByte
;
...
@@ -4187,7 +4316,8 @@ typedef struct _T_PROFINET_SRL_DATA {
...
@@ -4187,7 +4316,8 @@ typedef struct _T_PROFINET_SRL_DATA {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PROFINET_AR_DATA_INFO
{
typedef
struct
_T_PROFINET_AR_DATA_INFO
{
PN_U8
NumberEntriesHighByte
;
PN_U8
NumberEntriesHighByte
;
PN_U8
NumberEntriesLowByte
;
PN_U8
NumberEntriesLowByte
;
...
@@ -4204,7 +4334,8 @@ typedef struct _T_PROFINET_AR_DATA_INFO {
...
@@ -4204,7 +4334,8 @@ typedef struct _T_PROFINET_AR_DATA_INFO {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PROFINET_AR
{
typedef
struct
_T_PROFINET_AR
{
T_PROFINET_UUID
ARUUID
;
T_PROFINET_UUID
ARUUID
;
T_PROFINET_UUID
InitiatorUUID
;
T_PROFINET_UUID
InitiatorUUID
;
T_PROFINET_UUID
PrmServerUUID
;
T_PROFINET_UUID
PrmServerUUID
;
...
@@ -4263,7 +4394,8 @@ typedef struct _T_PROFINET_AR {
...
@@ -4263,7 +4394,8 @@ typedef struct _T_PROFINET_AR {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PROFINET_AR_DATA
{
typedef
struct
_T_PROFINET_AR_DATA
{
T_PROFINET_BLOCK_HEADER
Header
;
T_PROFINET_BLOCK_HEADER
Header
;
PN_U8
NumberOfARsHighByte
;
PN_U8
NumberOfARsHighByte
;
...
@@ -4277,7 +4409,8 @@ typedef struct _T_PROFINET_AR_DATA {
...
@@ -4277,7 +4409,8 @@ typedef struct _T_PROFINET_AR_DATA {
/*===========================================================================*/
/*===========================================================================*/
typedef
struct
_T_PROFINET_IM0_FILTER_SUBMODULE
{
typedef
struct
_T_PROFINET_IM0_FILTER_SUBMODULE
{
PN_U8
SubSlotNumberHighByte
;
PN_U8
SubSlotNumberHighByte
;
PN_U8
SubSlotNumberLowByte
;
PN_U8
SubSlotNumberLowByte
;
...
@@ -4293,7 +4426,8 @@ typedef T_PROFINET_IM0_FILTER_SUBMODULE T_PROFINET_EXPECTED_IDENT_SUBMODULE;
...
@@ -4293,7 +4426,8 @@ typedef T_PROFINET_IM0_FILTER_SUBMODULE T_PROFINET_EXPECTED_IDENT_SUBMODULE;
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PROFINET_IM0_FILTER_MODULE
{
typedef
struct
_T_PROFINET_IM0_FILTER_MODULE
{
PN_U8
SlotNumberHighByte
;
PN_U8
SlotNumberHighByte
;
PN_U8
SlotNumberLowByte
;
PN_U8
SlotNumberLowByte
;
...
@@ -4316,7 +4450,8 @@ typedef T_PROFINET_IM0_FILTER_MODULE T_PROFINET_EXPECTED_IDENT_MODULE;
...
@@ -4316,7 +4450,8 @@ typedef T_PROFINET_IM0_FILTER_MODULE T_PROFINET_EXPECTED_IDENT_MODULE;
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PROFINET_IM0_FILTER_API
{
typedef
struct
_T_PROFINET_IM0_FILTER_API
{
PN_U8
APIHighWordHighByte
;
PN_U8
APIHighWordHighByte
;
PN_U8
APIHighWordLowByte
;
PN_U8
APIHighWordLowByte
;
PN_U8
APILowWordHighByte
;
PN_U8
APILowWordHighByte
;
...
@@ -4336,7 +4471,8 @@ typedef T_PROFINET_IM0_FILTER_API T_PROFINET_EXPECTED_IDENT_API;
...
@@ -4336,7 +4471,8 @@ typedef T_PROFINET_IM0_FILTER_API T_PROFINET_EXPECTED_IDENT_API;
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PROFINET_IM0_FILTER_DATA
{
typedef
struct
_T_PROFINET_IM0_FILTER_DATA
{
T_PROFINET_BLOCK_HEADER
Header
;
T_PROFINET_BLOCK_HEADER
Header
;
PN_U8
NumberOfAPIsHighByte
;
PN_U8
NumberOfAPIsHighByte
;
...
@@ -4350,7 +4486,8 @@ typedef struct _T_PROFINET_IM0_FILTER_DATA {
...
@@ -4350,7 +4486,8 @@ typedef struct _T_PROFINET_IM0_FILTER_DATA {
/*===========================================================================*/
/*===========================================================================*/
typedef
struct
_T_PROFINET_API_DATA
{
typedef
struct
_T_PROFINET_API_DATA
{
T_PROFINET_BLOCK_HEADER
Header
;
T_PROFINET_BLOCK_HEADER
Header
;
PN_U8
NumberOfAPIsHighByte
;
PN_U8
NumberOfAPIsHighByte
;
...
@@ -4367,7 +4504,8 @@ typedef struct _T_PROFINET_API_DATA {
...
@@ -4367,7 +4504,8 @@ typedef struct _T_PROFINET_API_DATA {
#define PROFINET_SUBMODULE_DATA_DESCRIPTION_INPUT (PN_U16)0x0001u
#define PROFINET_SUBMODULE_DATA_DESCRIPTION_INPUT (PN_U16)0x0001u
#define PROFINET_SUBMODULE_DATA_DESCRIPTION_OUTPUT (PN_U16)0x0002u
#define PROFINET_SUBMODULE_DATA_DESCRIPTION_OUTPUT (PN_U16)0x0002u
typedef
struct
_T_PROFINET_SUBMODULE_DATA
{
typedef
struct
_T_PROFINET_SUBMODULE_DATA
{
PN_U8
SubSlotNumberHighByte
;
PN_U8
SubSlotNumberHighByte
;
PN_U8
SubSlotNumberLowByte
;
PN_U8
SubSlotNumberLowByte
;
...
@@ -4383,7 +4521,8 @@ typedef struct _T_PROFINET_SUBMODULE_DATA {
...
@@ -4383,7 +4521,8 @@ typedef struct _T_PROFINET_SUBMODULE_DATA {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PROFINET_SUBMODULE_IO_DATA
{
typedef
struct
_T_PROFINET_SUBMODULE_IO_DATA
{
PN_U8
DataDescriptionHighByte
;
PN_U8
DataDescriptionHighByte
;
PN_U8
DataDescriptionLowByte
;
PN_U8
DataDescriptionLowByte
;
...
@@ -4397,7 +4536,8 @@ typedef struct _T_PROFINET_SUBMODULE_IO_DATA {
...
@@ -4397,7 +4536,8 @@ typedef struct _T_PROFINET_SUBMODULE_IO_DATA {
/*===========================================================================*/
/*===========================================================================*/
typedef
struct
_T_PROFINET_MODULE_API
{
typedef
struct
_T_PROFINET_MODULE_API
{
PN_U8
APIHighWordHighByte
;
PN_U8
APIHighWordHighByte
;
PN_U8
APIHighWordLowByte
;
PN_U8
APIHighWordLowByte
;
PN_U8
APILowWordHighByte
;
PN_U8
APILowWordHighByte
;
...
@@ -4426,7 +4566,8 @@ typedef struct _T_PROFINET_MODULE_API {
...
@@ -4426,7 +4566,8 @@ typedef struct _T_PROFINET_MODULE_API {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PROFINET_MODULE_REQ
{
typedef
struct
_T_PROFINET_MODULE_REQ
{
T_PROFINET_BLOCK_HEADER
Header
;
T_PROFINET_BLOCK_HEADER
Header
;
PN_U8
NumberOfAPIsHighByte
;
PN_U8
NumberOfAPIsHighByte
;
...
@@ -4444,7 +4585,8 @@ typedef T_PROFINET_MODULE_REQ T_PROFINET_MODULE_DIFF_DATA;
...
@@ -4444,7 +4585,8 @@ typedef T_PROFINET_MODULE_REQ T_PROFINET_MODULE_DIFF_DATA;
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PROFINET_RECORD_INPUT_DATA
{
typedef
struct
_T_PROFINET_RECORD_INPUT_DATA
{
T_PROFINET_BLOCK_HEADER
Header
;
T_PROFINET_BLOCK_HEADER
Header
;
PN_U8
ConsumerStatusLength
;
PN_U8
ConsumerStatusLength
;
...
@@ -4464,7 +4606,8 @@ typedef struct _T_PROFINET_RECORD_INPUT_DATA {
...
@@ -4464,7 +4606,8 @@ typedef struct _T_PROFINET_RECORD_INPUT_DATA {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PROFINET_OUTPUT_DATA_ITEM
{
typedef
struct
_T_PROFINET_OUTPUT_DATA_ITEM
{
PN_U8
ConsumerStatus
;
PN_U8
ConsumerStatus
;
/*
/*
PN_U8 Data [DataLength];
PN_U8 Data [DataLength];
...
@@ -4481,7 +4624,8 @@ typedef struct _T_PROFINET_OUTPUT_DATA_ITEM {
...
@@ -4481,7 +4624,8 @@ typedef struct _T_PROFINET_OUTPUT_DATA_ITEM {
#define PROFINET_FAIL_SAFE_SUBSTITUTION_ACTIVE (PN_U16)0x0001u
#define PROFINET_FAIL_SAFE_SUBSTITUTION_ACTIVE (PN_U16)0x0001u
typedef
struct
_T_PROFINET_SUBSTITUTE_VALUE
{
typedef
struct
_T_PROFINET_SUBSTITUTE_VALUE
{
T_PROFINET_BLOCK_HEADER
Header
;
T_PROFINET_BLOCK_HEADER
Header
;
PN_U8
SubstitutionModeHighByte
;
PN_U8
SubstitutionModeHighByte
;
...
@@ -4495,7 +4639,8 @@ typedef struct _T_PROFINET_SUBSTITUTE_VALUE {
...
@@ -4495,7 +4639,8 @@ typedef struct _T_PROFINET_SUBSTITUTE_VALUE {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PROFINET_RECORD_OUTPUT_DATA
{
typedef
struct
_T_PROFINET_RECORD_OUTPUT_DATA
{
T_PROFINET_BLOCK_HEADER
Header
;
T_PROFINET_BLOCK_HEADER
Header
;
PN_U8
SubstituteActiveHighByte
;
PN_U8
SubstituteActiveHighByte
;
...
@@ -4516,7 +4661,8 @@ typedef struct _T_PROFINET_RECORD_OUTPUT_DATA {
...
@@ -4516,7 +4661,8 @@ typedef struct _T_PROFINET_RECORD_OUTPUT_DATA {
/*===========================================================================*/
/*===========================================================================*/
typedef
struct
_T_PROFINET_TIMESTAMP
{
typedef
struct
_T_PROFINET_TIMESTAMP
{
PN_U8
HighPartHighWordHighByte
;
PN_U8
HighPartHighWordHighByte
;
PN_U8
HighPartHighWordLowByte
;
PN_U8
HighPartHighWordLowByte
;
PN_U8
HighPartLowWordHighByte
;
PN_U8
HighPartLowWordHighByte
;
...
@@ -4531,7 +4677,8 @@ typedef struct _T_PROFINET_TIMESTAMP {
...
@@ -4531,7 +4677,8 @@ typedef struct _T_PROFINET_TIMESTAMP {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PROFINET_LOG_ENTRY
{
typedef
struct
_T_PROFINET_LOG_ENTRY
{
T_PROFINET_TIMESTAMP
TimeStamp
;
T_PROFINET_TIMESTAMP
TimeStamp
;
T_PROFINET_UUID
ARUUID
;
T_PROFINET_UUID
ARUUID
;
...
@@ -4546,7 +4693,8 @@ typedef struct _T_PROFINET_LOG_ENTRY {
...
@@ -4546,7 +4693,8 @@ typedef struct _T_PROFINET_LOG_ENTRY {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PROFINET_LOG_DATA
{
typedef
struct
_T_PROFINET_LOG_DATA
{
T_PROFINET_BLOCK_HEADER
Header
;
T_PROFINET_BLOCK_HEADER
Header
;
T_PROFINET_TIMESTAMP
CurrentTimeStamp
;
T_PROFINET_TIMESTAMP
CurrentTimeStamp
;
...
@@ -4562,7 +4710,8 @@ typedef struct _T_PROFINET_LOG_DATA {
...
@@ -4562,7 +4710,8 @@ typedef struct _T_PROFINET_LOG_DATA {
/*===========================================================================*/
/*===========================================================================*/
typedef
struct
_T_PROFINET_PD_PEER_PORT
{
typedef
struct
_T_PROFINET_PD_PEER_PORT
{
PN_U8
LengthPeerPortId
;
PN_U8
LengthPeerPortId
;
/*
/*
PN_U8 PeerPortId [LengthPeerPortId];
PN_U8 PeerPortId [LengthPeerPortId];
...
@@ -4572,7 +4721,8 @@ typedef struct _T_PROFINET_PD_PEER_PORT {
...
@@ -4572,7 +4721,8 @@ typedef struct _T_PROFINET_PD_PEER_PORT {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PROFINET_PD_PEER_CHASSIS
{
typedef
struct
_T_PROFINET_PD_PEER_CHASSIS
{
PN_U8
LengthPeerChassisId
;
PN_U8
LengthPeerChassisId
;
/*
/*
PN_U8 PeerChassisId [LengthPeerChassisId];
PN_U8 PeerChassisId [LengthPeerChassisId];
...
@@ -4584,7 +4734,8 @@ typedef struct _T_PROFINET_PD_PEER_CHASSIS {
...
@@ -4584,7 +4734,8 @@ typedef struct _T_PROFINET_PD_PEER_CHASSIS {
#define PROFINET_CABLE_DELAY_FORMAT_INDICATOR 0x80000000uL
#define PROFINET_CABLE_DELAY_FORMAT_INDICATOR 0x80000000uL
typedef
struct
_T_PROFINET_PD_LINE_DELAY
{
typedef
struct
_T_PROFINET_PD_LINE_DELAY
{
PN_U8
DelayHighWordHighByte
;
PN_U8
DelayHighWordHighByte
;
PN_U8
DelayHighWordLowByte
;
PN_U8
DelayHighWordLowByte
;
PN_U8
DelayLowWordHighByte
;
PN_U8
DelayLowWordHighByte
;
...
@@ -4594,7 +4745,8 @@ typedef struct _T_PROFINET_PD_LINE_DELAY {
...
@@ -4594,7 +4745,8 @@ typedef struct _T_PROFINET_PD_LINE_DELAY {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PROFINET_PD_PEER_REAL
{
typedef
struct
_T_PROFINET_PD_PEER_REAL
{
T_PROFINET_PD_PEER_PORT
PeerPort
;
T_PROFINET_PD_PEER_PORT
PeerPort
;
/*
/*
T_PROFINET_PD_PEER_CHASSIS PeerChassis;
T_PROFINET_PD_PEER_CHASSIS PeerChassis;
...
@@ -4607,7 +4759,8 @@ typedef struct _T_PROFINET_PD_PEER_REAL {
...
@@ -4607,7 +4759,8 @@ typedef struct _T_PROFINET_PD_PEER_REAL {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PROFINET_PD_PEERS_REAL
{
typedef
struct
_T_PROFINET_PD_PEERS_REAL
{
PN_U8
NumberOfPeers
;
PN_U8
NumberOfPeers
;
/*
/*
PN_U8 Padding []; align to 32-Bit
PN_U8 Padding []; align to 32-Bit
...
@@ -4620,7 +4773,8 @@ typedef struct _T_PROFINET_PD_PEERS_REAL {
...
@@ -4620,7 +4773,8 @@ typedef struct _T_PROFINET_PD_PEERS_REAL {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PROFINET_PD_MAU_TYPE
{
typedef
struct
_T_PROFINET_PD_MAU_TYPE
{
PN_U8
TypeHighByte
;
PN_U8
TypeHighByte
;
PN_U8
TypeLowByte
;
PN_U8
TypeLowByte
;
...
@@ -4628,7 +4782,8 @@ typedef struct _T_PROFINET_PD_MAU_TYPE {
...
@@ -4628,7 +4782,8 @@ typedef struct _T_PROFINET_PD_MAU_TYPE {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PROFINET_PD_LINK_STATE
{
typedef
struct
_T_PROFINET_PD_LINK_STATE
{
PN_U8
StateHighByte
;
PN_U8
StateHighByte
;
PN_U8
StateLowByte
;
PN_U8
StateLowByte
;
...
@@ -4641,7 +4796,8 @@ typedef struct _T_PROFINET_PD_LINK_STATE {
...
@@ -4641,7 +4796,8 @@ typedef struct _T_PROFINET_PD_LINK_STATE {
#define PROFINET_MEDIA_TYPE_FIBER_OPTIC_CABLE (PN_U32)0x00000002uL
#define PROFINET_MEDIA_TYPE_FIBER_OPTIC_CABLE (PN_U32)0x00000002uL
#define PROFINET_MEDIA_TYPE_RADIO (PN_U32)0x00000003uL
#define PROFINET_MEDIA_TYPE_RADIO (PN_U32)0x00000003uL
typedef
struct
_T_PROFINET_PD_MEDIA_TYPE
{
typedef
struct
_T_PROFINET_PD_MEDIA_TYPE
{
PN_U8
TypeHighWordHighByte
;
PN_U8
TypeHighWordHighByte
;
PN_U8
TypeHighWordLowByte
;
PN_U8
TypeHighWordLowByte
;
PN_U8
TypeLowWordHighByte
;
PN_U8
TypeLowWordHighByte
;
...
@@ -4655,14 +4811,15 @@ typedef struct _T_PROFINET_PD_MEDIA_TYPE {
...
@@ -4655,14 +4811,15 @@ typedef struct _T_PROFINET_PD_MEDIA_TYPE {
#define PROFINET_RTC3_STATUS_UP (PN_U16)0x0002uL
#define PROFINET_RTC3_STATUS_UP (PN_U16)0x0002uL
#define PROFINET_RTC3_STATUS_RUN (PN_U16)0x0004uL
#define PROFINET_RTC3_STATUS_RUN (PN_U16)0x0004uL
#define PROFINET_RTC3_STATUS_MASK_STATE \
#define PROFINET_RTC3_STATUS_MASK_STATE \
(PN_U16)(PROFINET_RTC3_STATUS_OFF | PROFINET_RTC3_STATUS_UP
\
(PN_U16)(PROFINET_RTC3_STATUS_OFF | PROFINET_RTC3_STATUS_UP
|
\
|
PROFINET_RTC3_STATUS_RUN)
PROFINET_RTC3_STATUS_RUN)
#define PROFINET_RTC3_STATUS_FRAG_OFF (PN_U16)0x0000uL
#define PROFINET_RTC3_STATUS_FRAG_OFF (PN_U16)0x0000uL
#define PROFINET_RTC3_STATUS_FRAG_ON (PN_U16)0x1000uL
#define PROFINET_RTC3_STATUS_FRAG_ON (PN_U16)0x1000uL
#define PROFINET_RTC3_STATUS_SHORTEN_PREAMBLE (PN_U16)0x2000uL
#define PROFINET_RTC3_STATUS_SHORTEN_PREAMBLE (PN_U16)0x2000uL
#define PROFINET_RTC3_STATUS_OPTIMIZED (PN_U16)0x8000uL
#define PROFINET_RTC3_STATUS_OPTIMIZED (PN_U16)0x8000uL
typedef
struct
_T_PROFINET_PD_PORT_SETTINGS
{
typedef
struct
_T_PROFINET_PD_PORT_SETTINGS
{
T_PROFINET_PD_MAU_TYPE
MAU
;
T_PROFINET_PD_MAU_TYPE
MAU
;
PN_U8
Padding1
[
2
];
/* align to 32-Bit */
PN_U8
Padding1
[
2
];
/* align to 32-Bit */
...
@@ -4685,7 +4842,8 @@ typedef struct _T_PROFINET_PD_PORT_SETTINGS {
...
@@ -4685,7 +4842,8 @@ typedef struct _T_PROFINET_PD_PORT_SETTINGS {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PROFINET_PD_PORT_DATA_REAL
{
typedef
struct
_T_PROFINET_PD_PORT_DATA_REAL
{
T_PROFINET_BLOCK_HEADER
Header
;
T_PROFINET_BLOCK_HEADER
Header
;
PN_U8
Padding
[
2
];
PN_U8
Padding
[
2
];
...
@@ -4711,7 +4869,8 @@ typedef struct _T_PROFINET_PD_PORT_DATA_REAL {
...
@@ -4711,7 +4869,8 @@ typedef struct _T_PROFINET_PD_PORT_DATA_REAL {
typedef
T_PN_DEVICE_IP_INFO
T_PROFINET_IP_PARAMETER
;
typedef
T_PN_DEVICE_IP_INFO
T_PROFINET_IP_PARAMETER
;
typedef
struct
_T_PROFINET_PD_INTERFACE_DATA_REAL
{
typedef
struct
_T_PROFINET_PD_INTERFACE_DATA_REAL
{
T_PROFINET_BLOCK_HEADER
Header
;
T_PROFINET_BLOCK_HEADER
Header
;
PN_U8
LengthChassisId
;
PN_U8
LengthChassisId
;
...
@@ -4730,7 +4889,8 @@ typedef struct _T_PROFINET_PD_INTERFACE_DATA_REAL {
...
@@ -4730,7 +4889,8 @@ typedef struct _T_PROFINET_PD_INTERFACE_DATA_REAL {
/*===========================================================================*/
/*===========================================================================*/
typedef
struct
_T_PROFINET_PD_PEER_CHECK_DATA
{
typedef
struct
_T_PROFINET_PD_PEER_CHECK_DATA
{
T_PROFINET_PD_PEER_PORT
PeerPort
;
T_PROFINET_PD_PEER_PORT
PeerPort
;
/*
/*
T_PROFINET_PD_PEER_CHASSIS PeerChassis;
T_PROFINET_PD_PEER_CHASSIS PeerChassis;
...
@@ -4740,7 +4900,8 @@ typedef struct _T_PROFINET_PD_PEER_CHECK_DATA {
...
@@ -4740,7 +4900,8 @@ typedef struct _T_PROFINET_PD_PEER_CHECK_DATA {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PROFINET_PD_PEER_CHECK
{
typedef
struct
_T_PROFINET_PD_PEER_CHECK
{
T_PROFINET_BLOCK_HEADER
Header
;
T_PROFINET_BLOCK_HEADER
Header
;
PN_U8
NumberOfPeers
;
PN_U8
NumberOfPeers
;
...
@@ -4754,7 +4915,8 @@ typedef struct _T_PROFINET_PD_PEER_CHECK {
...
@@ -4754,7 +4915,8 @@ typedef struct _T_PROFINET_PD_PEER_CHECK {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PROFINET_PD_LINE_DELAY_CHECK
{
typedef
struct
_T_PROFINET_PD_LINE_DELAY_CHECK
{
T_PROFINET_BLOCK_HEADER
Header
;
T_PROFINET_BLOCK_HEADER
Header
;
PN_U8
Padding
[
2
];
PN_U8
Padding
[
2
];
...
@@ -4765,7 +4927,8 @@ typedef struct _T_PROFINET_PD_LINE_DELAY_CHECK {
...
@@ -4765,7 +4927,8 @@ typedef struct _T_PROFINET_PD_LINE_DELAY_CHECK {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PROFINET_PD_MAU_TYPE_CHECK
{
typedef
struct
_T_PROFINET_PD_MAU_TYPE_CHECK
{
T_PROFINET_BLOCK_HEADER
Header
;
T_PROFINET_BLOCK_HEADER
Header
;
T_PROFINET_PD_MAU_TYPE
MAUType
;
T_PROFINET_PD_MAU_TYPE
MAUType
;
...
@@ -4774,7 +4937,8 @@ typedef struct _T_PROFINET_PD_MAU_TYPE_CHECK {
...
@@ -4774,7 +4937,8 @@ typedef struct _T_PROFINET_PD_MAU_TYPE_CHECK {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PROFINET_PD_LINK_STATE_CHECK
{
typedef
struct
_T_PROFINET_PD_LINK_STATE_CHECK
{
T_PROFINET_BLOCK_HEADER
Header
;
T_PROFINET_BLOCK_HEADER
Header
;
T_PROFINET_PD_LINK_STATE
Link
;
T_PROFINET_PD_LINK_STATE
Link
;
...
@@ -4788,7 +4952,8 @@ typedef struct _T_PROFINET_PD_LINK_STATE_CHECK {
...
@@ -4788,7 +4952,8 @@ typedef struct _T_PROFINET_PD_LINK_STATE_CHECK {
#define PROFINET_DISABLE_SYNC_MASTER_CHECK (PN_U16)0x0000u
#define PROFINET_DISABLE_SYNC_MASTER_CHECK (PN_U16)0x0000u
#define PROFINET_ENABLE_SYNC_MASTER_CHECK (PN_U16)0x0002u
#define PROFINET_ENABLE_SYNC_MASTER_CHECK (PN_U16)0x0002u
typedef
struct
_T_PROFINET_PD_SYNC_DIFF_CHECK
{
typedef
struct
_T_PROFINET_PD_SYNC_DIFF_CHECK
{
T_PROFINET_BLOCK_HEADER
Header
;
T_PROFINET_BLOCK_HEADER
Header
;
PN_U8
SyncModeHighByte
;
PN_U8
SyncModeHighByte
;
...
@@ -4801,7 +4966,8 @@ typedef struct _T_PROFINET_PD_SYNC_DIFF_CHECK {
...
@@ -4801,7 +4966,8 @@ typedef struct _T_PROFINET_PD_SYNC_DIFF_CHECK {
#define PROFINET_DISABLE_MAU_TYPE_CHECK (PN_U16)0x0000u
#define PROFINET_DISABLE_MAU_TYPE_CHECK (PN_U16)0x0000u
#define PROFINET_ENABLE_MAU_TYPE_CHECK (PN_U16)0x0001u
#define PROFINET_ENABLE_MAU_TYPE_CHECK (PN_U16)0x0001u
typedef
struct
_T_PROFINET_PD_MAU_TYPE_DIFF_CHECK
{
typedef
struct
_T_PROFINET_PD_MAU_TYPE_DIFF_CHECK
{
T_PROFINET_BLOCK_HEADER
Header
;
T_PROFINET_BLOCK_HEADER
Header
;
PN_U8
MAUTypeModeHighByte
;
PN_U8
MAUTypeModeHighByte
;
...
@@ -4811,7 +4977,8 @@ typedef struct _T_PROFINET_PD_MAU_TYPE_DIFF_CHECK {
...
@@ -4811,7 +4977,8 @@ typedef struct _T_PROFINET_PD_MAU_TYPE_DIFF_CHECK {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PROFINET_PD_PORT_DATA_CHECK
{
typedef
struct
_T_PROFINET_PD_PORT_DATA_CHECK
{
T_PROFINET_BLOCK_HEADER
Header
;
T_PROFINET_BLOCK_HEADER
Header
;
PN_U8
Padding
[
2
];
PN_U8
Padding
[
2
];
...
@@ -4835,7 +5002,8 @@ typedef struct _T_PROFINET_PD_PORT_DATA_CHECK {
...
@@ -4835,7 +5002,8 @@ typedef struct _T_PROFINET_PD_PORT_DATA_CHECK {
/*===========================================================================*/
/*===========================================================================*/
typedef
struct
_T_PROFINET_PD_PORT_STATISTIC
{
typedef
struct
_T_PROFINET_PD_PORT_STATISTIC
{
T_PROFINET_BLOCK_HEADER
Header
;
T_PROFINET_BLOCK_HEADER
Header
;
PN_U8
Padding
[
2
];
PN_U8
Padding
[
2
];
...
@@ -4874,7 +5042,8 @@ typedef struct _T_PROFINET_PD_PORT_STATISTIC {
...
@@ -4874,7 +5042,8 @@ typedef struct _T_PROFINET_PD_PORT_STATISTIC {
/*===========================================================================*/
/*===========================================================================*/
typedef
struct
_T_PROFINET_NC_DATA_CHECK
{
typedef
struct
_T_PROFINET_NC_DATA_CHECK
{
T_PROFINET_BLOCK_HEADER
Header
;
T_PROFINET_BLOCK_HEADER
Header
;
PN_U8
Padding
[
2
];
PN_U8
Padding
[
2
];
...
@@ -4908,7 +5077,8 @@ typedef struct _T_PROFINET_NC_DATA_CHECK {
...
@@ -4908,7 +5077,8 @@ typedef struct _T_PROFINET_NC_DATA_CHECK {
#define DEFAULT_MRP_LINK_CHANGE_COUNT (PN_U16)4u
#define DEFAULT_MRP_LINK_CHANGE_COUNT (PN_U16)4u
#define MAX_MRP_LINK_CHANGE_COUNT (PN_U16)5u
#define MAX_MRP_LINK_CHANGE_COUNT (PN_U16)5u
typedef
struct
_T_PROFINET_MRP_CLIENT_PARAMS
{
typedef
struct
_T_PROFINET_MRP_CLIENT_PARAMS
{
T_PROFINET_BLOCK_HEADER
Header
;
T_PROFINET_BLOCK_HEADER
Header
;
PN_U8
LinkDownTimeHighByte
;
PN_U8
LinkDownTimeHighByte
;
...
@@ -4924,7 +5094,8 @@ typedef struct _T_PROFINET_MRP_CLIENT_PARAMS {
...
@@ -4924,7 +5094,8 @@ typedef struct _T_PROFINET_MRP_CLIENT_PARAMS {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PROFINET_MRP_MANAGER_PARAMS
{
typedef
struct
_T_PROFINET_MRP_MANAGER_PARAMS
{
T_PROFINET_BLOCK_HEADER
Header
;
T_PROFINET_BLOCK_HEADER
Header
;
PN_U8
PriorityHighByte
;
PN_U8
PriorityHighByte
;
...
@@ -4949,7 +5120,8 @@ typedef struct _T_PROFINET_MRP_MANAGER_PARAMS {
...
@@ -4949,7 +5120,8 @@ typedef struct _T_PROFINET_MRP_MANAGER_PARAMS {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PROFINET_MRP_PARAMS
{
typedef
struct
_T_PROFINET_MRP_PARAMS
{
union
{
union
{
T_PROFINET_MRP_CLIENT_PARAMS
Client
;
T_PROFINET_MRP_CLIENT_PARAMS
Client
;
T_PROFINET_MRP_MANAGER_PARAMS
Manager
;
T_PROFINET_MRP_MANAGER_PARAMS
Manager
;
...
@@ -4963,7 +5135,8 @@ typedef struct _T_PROFINET_MRP_PARAMS {
...
@@ -4963,7 +5135,8 @@ typedef struct _T_PROFINET_MRP_PARAMS {
#define MULTIPLE_INTERFACE_MODE_LEGACY 0x00000000uL
#define MULTIPLE_INTERFACE_MODE_LEGACY 0x00000000uL
#define MULTIPLE_INTERFACE_MODE_LOCAL_CHASSIS_ID 0x00000001uL
#define MULTIPLE_INTERFACE_MODE_LOCAL_CHASSIS_ID 0x00000001uL
typedef
struct
_T_PROFINET_PD_INTERFACE_DATA_ADJUST
{
typedef
struct
_T_PROFINET_PD_INTERFACE_DATA_ADJUST
{
T_PROFINET_BLOCK_HEADER
Header
;
T_PROFINET_BLOCK_HEADER
Header
;
PN_U8
Padding
[
2
];
PN_U8
Padding
[
2
];
...
@@ -4977,7 +5150,8 @@ typedef struct _T_PROFINET_PD_INTERFACE_DATA_ADJUST {
...
@@ -4977,7 +5150,8 @@ typedef struct _T_PROFINET_PD_INTERFACE_DATA_ADJUST {
/*===========================================================================*/
/*===========================================================================*/
typedef
struct
_T_PROFINET_PD_PORT_FO_ADJUST
{
typedef
struct
_T_PROFINET_PD_PORT_FO_ADJUST
{
T_PROFINET_BLOCK_HEADER
Header
;
T_PROFINET_BLOCK_HEADER
Header
;
/* TODO: define structure */
/* TODO: define structure */
...
@@ -4986,7 +5160,8 @@ typedef struct _T_PROFINET_PD_PORT_FO_ADJUST {
...
@@ -4986,7 +5160,8 @@ typedef struct _T_PROFINET_PD_PORT_FO_ADJUST {
/*===========================================================================*/
/*===========================================================================*/
typedef
struct
_T_PROFINET_DOMAIN_BOUNDARY_ADJUST
{
typedef
struct
_T_PROFINET_DOMAIN_BOUNDARY_ADJUST
{
T_PROFINET_BLOCK_HEADER
Header
;
T_PROFINET_BLOCK_HEADER
Header
;
PN_U8
Padding1
[
2
];
PN_U8
Padding1
[
2
];
...
@@ -5010,7 +5185,8 @@ typedef struct _T_PROFINET_DOMAIN_BOUNDARY_ADJUST {
...
@@ -5010,7 +5185,8 @@ typedef struct _T_PROFINET_DOMAIN_BOUNDARY_ADJUST {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PROFINET_MULTICAST_BOUNDARY_ADJUST
{
typedef
struct
_T_PROFINET_MULTICAST_BOUNDARY_ADJUST
{
T_PROFINET_BLOCK_HEADER
Header
;
T_PROFINET_BLOCK_HEADER
Header
;
PN_U8
Padding1
[
2
];
PN_U8
Padding1
[
2
];
...
@@ -5033,7 +5209,8 @@ typedef T_PROFINET_MULTICAST_BOUNDARY_ADJUST T_PROFINET_DCP_BOUNDARY_ADJUST;
...
@@ -5033,7 +5209,8 @@ typedef T_PROFINET_MULTICAST_BOUNDARY_ADJUST T_PROFINET_DCP_BOUNDARY_ADJUST;
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PROFINET_MAU_TYPE_ADJUST
{
typedef
struct
_T_PROFINET_MAU_TYPE_ADJUST
{
T_PROFINET_BLOCK_HEADER
Header
;
T_PROFINET_BLOCK_HEADER
Header
;
PN_U8
Padding
[
2
];
PN_U8
Padding
[
2
];
...
@@ -5048,7 +5225,8 @@ typedef struct _T_PROFINET_MAU_TYPE_ADJUST {
...
@@ -5048,7 +5225,8 @@ typedef struct _T_PROFINET_MAU_TYPE_ADJUST {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PROFINET_LINK_STATE_ADJUST
{
typedef
struct
_T_PROFINET_LINK_STATE_ADJUST
{
T_PROFINET_BLOCK_HEADER
Header
;
T_PROFINET_BLOCK_HEADER
Header
;
PN_U8
Padding
[
2
];
PN_U8
Padding
[
2
];
...
@@ -5065,7 +5243,8 @@ typedef struct _T_PROFINET_LINK_STATE_ADJUST {
...
@@ -5065,7 +5243,8 @@ typedef struct _T_PROFINET_LINK_STATE_ADJUST {
#define PROFINET_ADJUST_SHORTEN_PREAMBLE (PN_U16)0x0001uL
#define PROFINET_ADJUST_SHORTEN_PREAMBLE (PN_U16)0x0001uL
typedef
struct
_T_PROFINET_PREAMBLE_LENGTH_ADJUST
{
typedef
struct
_T_PROFINET_PREAMBLE_LENGTH_ADJUST
{
T_PROFINET_BLOCK_HEADER
Header
;
T_PROFINET_BLOCK_HEADER
Header
;
PN_U8
Padding
[
2
];
PN_U8
Padding
[
2
];
...
@@ -5080,7 +5259,8 @@ typedef struct _T_PROFINET_PREAMBLE_LENGTH_ADJUST {
...
@@ -5080,7 +5259,8 @@ typedef struct _T_PROFINET_PREAMBLE_LENGTH_ADJUST {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PROFINET_PD_PORT_DATA_ADJUST
{
typedef
struct
_T_PROFINET_PD_PORT_DATA_ADJUST
{
T_PROFINET_BLOCK_HEADER
Header
;
T_PROFINET_BLOCK_HEADER
Header
;
PN_U8
Padding
[
2
];
PN_U8
Padding
[
2
];
...
@@ -5107,7 +5287,8 @@ typedef struct _T_PROFINET_PD_PORT_DATA_ADJUST {
...
@@ -5107,7 +5287,8 @@ typedef struct _T_PROFINET_PD_PORT_DATA_ADJUST {
#define MAX_MRP_DOMAIN_NAME_LENGTH PN_MAX_DEVICE_NAME_LENGTH
#define MAX_MRP_DOMAIN_NAME_LENGTH PN_MAX_DEVICE_NAME_LENGTH
typedef
struct
_T_PROFINET_PD_INTERFACE_MRP_DATA_ADJUST
{
typedef
struct
_T_PROFINET_PD_INTERFACE_MRP_DATA_ADJUST
{
T_PROFINET_BLOCK_HEADER
Header
;
T_PROFINET_BLOCK_HEADER
Header
;
PN_U8
Padding1
[
2
];
PN_U8
Padding1
[
2
];
...
@@ -5130,7 +5311,8 @@ typedef struct _T_PROFINET_PD_INTERFACE_MRP_DATA_ADJUST {
...
@@ -5130,7 +5311,8 @@ typedef struct _T_PROFINET_PD_INTERFACE_MRP_DATA_ADJUST {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PROFINET_MRP_INSTANCE_DATA_ADJUST
{
typedef
struct
_T_PROFINET_MRP_INSTANCE_DATA_ADJUST
{
T_PROFINET_BLOCK_HEADER
Header
;
T_PROFINET_BLOCK_HEADER
Header
;
PN_U8
Padding1
;
PN_U8
Padding1
;
...
@@ -5154,7 +5336,8 @@ typedef struct _T_PROFINET_MRP_INSTANCE_DATA_ADJUST {
...
@@ -5154,7 +5336,8 @@ typedef struct _T_PROFINET_MRP_INSTANCE_DATA_ADJUST {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PROFINET_PD_INTERFACE_MRP_DATA_ADJUST_V1_1
{
typedef
struct
_T_PROFINET_PD_INTERFACE_MRP_DATA_ADJUST_V1_1
{
T_PROFINET_BLOCK_HEADER
Header
;
T_PROFINET_BLOCK_HEADER
Header
;
PN_U8
Padding
;
PN_U8
Padding
;
...
@@ -5167,7 +5350,8 @@ typedef struct _T_PROFINET_PD_INTERFACE_MRP_DATA_ADJUST_V1_1 {
...
@@ -5167,7 +5350,8 @@ typedef struct _T_PROFINET_PD_INTERFACE_MRP_DATA_ADJUST_V1_1 {
/*===========================================================================*/
/*===========================================================================*/
typedef
struct
_T_PROFINET_MRP_RING_STATE
{
typedef
struct
_T_PROFINET_MRP_RING_STATE
{
T_PROFINET_BLOCK_HEADER
Header
;
T_PROFINET_BLOCK_HEADER
Header
;
PN_U8
StateHighByte
;
PN_U8
StateHighByte
;
...
@@ -5177,7 +5361,8 @@ typedef struct _T_PROFINET_MRP_RING_STATE {
...
@@ -5177,7 +5361,8 @@ typedef struct _T_PROFINET_MRP_RING_STATE {
/*===========================================================================*/
/*===========================================================================*/
typedef
struct
_T_PROFINET_PD_INTERFACE_MRP_DATA_REAL
{
typedef
struct
_T_PROFINET_PD_INTERFACE_MRP_DATA_REAL
{
T_PROFINET_BLOCK_HEADER
Header
;
T_PROFINET_BLOCK_HEADER
Header
;
PN_U8
Padding
[
2
];
PN_U8
Padding
[
2
];
...
@@ -5202,7 +5387,8 @@ typedef struct _T_PROFINET_PD_INTERFACE_MRP_DATA_REAL {
...
@@ -5202,7 +5387,8 @@ typedef struct _T_PROFINET_PD_INTERFACE_MRP_DATA_REAL {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PROFINET_MRP_INSTANCE_DATA_REAL
{
typedef
struct
_T_PROFINET_MRP_INSTANCE_DATA_REAL
{
T_PROFINET_BLOCK_HEADER
Header
;
T_PROFINET_BLOCK_HEADER
Header
;
PN_U8
Padding
;
PN_U8
Padding
;
...
@@ -5228,7 +5414,8 @@ typedef struct _T_PROFINET_MRP_INSTANCE_DATA_REAL {
...
@@ -5228,7 +5414,8 @@ typedef struct _T_PROFINET_MRP_INSTANCE_DATA_REAL {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PROFINET_PD_INTERFACE_MRP_DATA_REAL_V1_1
{
typedef
struct
_T_PROFINET_PD_INTERFACE_MRP_DATA_REAL_V1_1
{
T_PROFINET_BLOCK_HEADER
Header
;
T_PROFINET_BLOCK_HEADER
Header
;
PN_U8
Padding
;
PN_U8
Padding
;
...
@@ -5246,7 +5433,8 @@ typedef struct _T_PROFINET_PD_INTERFACE_MRP_DATA_REAL_V1_1 {
...
@@ -5246,7 +5433,8 @@ typedef struct _T_PROFINET_PD_INTERFACE_MRP_DATA_REAL_V1_1 {
#define MRP_CHECK_DOMAIN_UUID_DISABLE (PN_U32)0x00000000
#define MRP_CHECK_DOMAIN_UUID_DISABLE (PN_U32)0x00000000
#define MRP_CHECK_DOMAIN_UUID_ENABLE (PN_U32)0x00000002
#define MRP_CHECK_DOMAIN_UUID_ENABLE (PN_U32)0x00000002
typedef
struct
_T_PROFINET_PD_INTERFACE_MRP_DATA_CHECK
{
typedef
struct
_T_PROFINET_PD_INTERFACE_MRP_DATA_CHECK
{
T_PROFINET_BLOCK_HEADER
Header
;
T_PROFINET_BLOCK_HEADER
Header
;
PN_U8
Padding
[
2
];
PN_U8
Padding
[
2
];
...
@@ -5262,7 +5450,8 @@ typedef struct _T_PROFINET_PD_INTERFACE_MRP_DATA_CHECK {
...
@@ -5262,7 +5450,8 @@ typedef struct _T_PROFINET_PD_INTERFACE_MRP_DATA_CHECK {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PROFINET_MRP_INSTANCE_DATA_CHECK
{
typedef
struct
_T_PROFINET_MRP_INSTANCE_DATA_CHECK
{
T_PROFINET_BLOCK_HEADER
Header
;
T_PROFINET_BLOCK_HEADER
Header
;
PN_U8
Padding
;
PN_U8
Padding
;
...
@@ -5277,7 +5466,8 @@ typedef struct _T_PROFINET_MRP_INSTANCE_DATA_CHECK {
...
@@ -5277,7 +5466,8 @@ typedef struct _T_PROFINET_MRP_INSTANCE_DATA_CHECK {
}
PACK_BYTE_ALIGNMENT
(
T_PROFINET_MRP_INSTANCE_DATA_CHECK
);
}
PACK_BYTE_ALIGNMENT
(
T_PROFINET_MRP_INSTANCE_DATA_CHECK
);
typedef
struct
_T_PROFINET_PD_INTERFACE_MRP_DATA_CHECK_V1_1
{
typedef
struct
_T_PROFINET_PD_INTERFACE_MRP_DATA_CHECK_V1_1
{
T_PROFINET_BLOCK_HEADER
Header
;
T_PROFINET_BLOCK_HEADER
Header
;
PN_U8
Padding
;
PN_U8
Padding
;
...
@@ -5289,7 +5479,8 @@ typedef struct _T_PROFINET_PD_INTERFACE_MRP_DATA_CHECK_V1_1 {
...
@@ -5289,7 +5479,8 @@ typedef struct _T_PROFINET_PD_INTERFACE_MRP_DATA_CHECK_V1_1 {
/*===========================================================================*/
/*===========================================================================*/
typedef
struct
_T_PROFINET_PD_PORT_MRP_DATA_ADJUST
{
typedef
struct
_T_PROFINET_PD_PORT_MRP_DATA_ADJUST
{
T_PROFINET_BLOCK_HEADER
Header
;
T_PROFINET_BLOCK_HEADER
Header
;
PN_U8
Padding
[
2
];
PN_U8
Padding
[
2
];
...
@@ -5305,7 +5496,8 @@ typedef T_PROFINET_PD_PORT_MRP_DATA_ADJUST T_PROFINET_PD_PORT_MRP_DATA_REAL;
...
@@ -5305,7 +5496,8 @@ typedef T_PROFINET_PD_PORT_MRP_DATA_ADJUST T_PROFINET_PD_PORT_MRP_DATA_REAL;
#define PROFINET_MAX_LINE_RX_DELAY_UNKNOWN 0uL
#define PROFINET_MAX_LINE_RX_DELAY_UNKNOWN 0uL
#define PROFINET_YELLOW_TIME_DISABLE 0uL
#define PROFINET_YELLOW_TIME_DISABLE 0uL
typedef
struct
_T_PROFINET_PORT_GLOBAL_DATA_V1_1
{
typedef
struct
_T_PROFINET_PORT_GLOBAL_DATA_V1_1
{
PN_U8
MaxTxDelayHighWordHighByte
;
PN_U8
MaxTxDelayHighWordHighByte
;
PN_U8
MaxTxDelayHighWordLowByte
;
PN_U8
MaxTxDelayHighWordLowByte
;
PN_U8
MaxTxDelayLowWordHighByte
;
PN_U8
MaxTxDelayLowWordHighByte
;
...
@@ -5322,7 +5514,8 @@ typedef struct _T_PROFINET_PORT_GLOBAL_DATA_V1_1 {
...
@@ -5322,7 +5514,8 @@ typedef struct _T_PROFINET_PORT_GLOBAL_DATA_V1_1 {
#define PROFINET_DEFAULT_YELLOW_TIME 0x0001E848uL
#define PROFINET_DEFAULT_YELLOW_TIME 0x0001E848uL
typedef
struct
_T_PROFINET_PORT_GLOBAL_DATA_V1_2
{
typedef
struct
_T_PROFINET_PORT_GLOBAL_DATA_V1_2
{
PN_U8
MaxTxDelayHighWordHighByte
;
PN_U8
MaxTxDelayHighWordHighByte
;
PN_U8
MaxTxDelayHighWordLowByte
;
PN_U8
MaxTxDelayHighWordLowByte
;
PN_U8
MaxTxDelayLowWordHighByte
;
PN_U8
MaxTxDelayLowWordHighByte
;
...
@@ -5347,7 +5540,8 @@ typedef struct _T_PROFINET_PORT_GLOBAL_DATA_V1_2 {
...
@@ -5347,7 +5540,8 @@ typedef struct _T_PROFINET_PORT_GLOBAL_DATA_V1_2 {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PROFINET_PDIR_GLOBAL_DATA
{
typedef
struct
_T_PROFINET_PDIR_GLOBAL_DATA
{
T_PROFINET_BLOCK_HEADER
Header
;
T_PROFINET_BLOCK_HEADER
Header
;
PN_U8
Padding
[
2
];
PN_U8
Padding
[
2
];
...
@@ -5382,12 +5576,13 @@ typedef struct _T_PROFINET_PDIR_GLOBAL_DATA {
...
@@ -5382,12 +5576,13 @@ typedef struct _T_PROFINET_PDIR_GLOBAL_DATA {
#define PROFINET_TX_PORT_GROUP_6 0x40u
#define PROFINET_TX_PORT_GROUP_6 0x40u
#define PROFINET_TX_PORT_GROUP_7 0x80u
#define PROFINET_TX_PORT_GROUP_7 0x80u
#define PROFINET_TX_PORT_GROUP_ALL \
#define PROFINET_TX_PORT_GROUP_ALL \
(PROFINET_TX_PORT_GROUP_LOCAL | PROFINET_TX_PORT_GROUP_1
\
(PROFINET_TX_PORT_GROUP_LOCAL | PROFINET_TX_PORT_GROUP_1
|
\
| PROFINET_TX_PORT_GROUP_2 | PROFINET_TX_PORT_GROUP_3
\
PROFINET_TX_PORT_GROUP_2 | PROFINET_TX_PORT_GROUP_3 |
\
| PROFINET_TX_PORT_GROUP_4 | PROFINET_TX_PORT_GROUP_5
\
PROFINET_TX_PORT_GROUP_4 | PROFINET_TX_PORT_GROUP_5 |
\
|
PROFINET_TX_PORT_GROUP_6 | PROFINET_TX_PORT_GROUP_7)
PROFINET_TX_PORT_GROUP_6 | PROFINET_TX_PORT_GROUP_7)
typedef
struct
_T_PROFINET_PDIR_FRAME_DATA_DETAIL
{
typedef
struct
_T_PROFINET_PDIR_FRAME_DATA_DETAIL
{
PN_U8
FrameSendOffsetHighWordHighByte
;
PN_U8
FrameSendOffsetHighWordHighByte
;
PN_U8
FrameSendOffsetHighWordLowByte
;
PN_U8
FrameSendOffsetHighWordLowByte
;
PN_U8
FrameSendOffsetLowWordHighByte
;
PN_U8
FrameSendOffsetLowWordHighByte
;
...
@@ -5430,19 +5625,20 @@ typedef struct _T_PROFINET_PDIR_FRAME_DATA_DETAIL {
...
@@ -5430,19 +5625,20 @@ typedef struct _T_PROFINET_PDIR_FRAME_DATA_DETAIL {
#define PROFINET_RTC3_MULTICAST_ADDRESS 0x00000002uL
#define PROFINET_RTC3_MULTICAST_ADDRESS 0x00000002uL
#define PROFINET_FF_MULTICAST_ADDRESS 0x00000004uL
#define PROFINET_FF_MULTICAST_ADDRESS 0x00000004uL
#define PROFINET_MULTICAST_ADDRESS_MASK \
#define PROFINET_MULTICAST_ADDRESS_MASK \
(PROFINET_LEGACY_MULTICAST_ADDRESS | PROFINET_RTC3_MULTICAST_ADDRESS
\
(PROFINET_LEGACY_MULTICAST_ADDRESS | PROFINET_RTC3_MULTICAST_ADDRESS
|
\
|
PROFINET_FF_MULTICAST_ADDRESS)
PROFINET_FF_MULTICAST_ADDRESS)
#define PROFINET_FRAGMENTATION_DISABLED 0x00000000uL
#define PROFINET_FRAGMENTATION_DISABLED 0x00000000uL
#define PROFINET_MAX_128_BYTE_FRAGMENTS 0x00000008uL
#define PROFINET_MAX_128_BYTE_FRAGMENTS 0x00000008uL
#define PROFINET_MAX_256_BYTE_FRAGMENTS 0x00000010uL
#define PROFINET_MAX_256_BYTE_FRAGMENTS 0x00000010uL
#define PROFINET_FRAGMENTATION_MASK \
#define PROFINET_FRAGMENTATION_MASK \
(PROFINET_FRAGMENTATION_DISABLED | PROFINET_MAX_128_BYTE_FRAGMENTS
\
(PROFINET_FRAGMENTATION_DISABLED | PROFINET_MAX_128_BYTE_FRAGMENTS
|
\
|
PROFINET_MAX_256_BYTE_FRAGMENTS)
PROFINET_MAX_256_BYTE_FRAGMENTS)
#define PROFINET_PDIR_FRAME_PROPERTY_MASK 0x0000FFFFuL
#define PROFINET_PDIR_FRAME_PROPERTY_MASK 0x0000FFFFuL
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PROFINET_PDIR_FRAME_DATA_V1_0
{
typedef
struct
_T_PROFINET_PDIR_FRAME_DATA_V1_0
{
T_PROFINET_BLOCK_HEADER
Header
;
T_PROFINET_BLOCK_HEADER
Header
;
PN_U8
Padding
[
2
];
PN_U8
Padding
[
2
];
...
@@ -5455,7 +5651,8 @@ typedef struct _T_PROFINET_PDIR_FRAME_DATA_V1_0 {
...
@@ -5455,7 +5651,8 @@ typedef struct _T_PROFINET_PDIR_FRAME_DATA_V1_0 {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PROFINET_PDIR_FRAME_DATA_V1_1
{
typedef
struct
_T_PROFINET_PDIR_FRAME_DATA_V1_1
{
T_PROFINET_BLOCK_HEADER
Header
;
T_PROFINET_BLOCK_HEADER
Header
;
PN_U8
Padding
[
2
];
PN_U8
Padding
[
2
];
...
@@ -5473,7 +5670,8 @@ typedef struct _T_PROFINET_PDIR_FRAME_DATA_V1_1 {
...
@@ -5473,7 +5670,8 @@ typedef struct _T_PROFINET_PDIR_FRAME_DATA_V1_1 {
/*===========================================================================*/
/*===========================================================================*/
typedef
struct
_T_PROFINET_RED_GUARD
{
typedef
struct
_T_PROFINET_RED_GUARD
{
PN_U8
StartOfRedFrameIdHighByte
;
PN_U8
StartOfRedFrameIdHighByte
;
PN_U8
StartOfRedFrameIdLowByte
;
PN_U8
StartOfRedFrameIdLowByte
;
...
@@ -5484,7 +5682,8 @@ typedef struct _T_PROFINET_RED_GUARD {
...
@@ -5484,7 +5682,8 @@ typedef struct _T_PROFINET_RED_GUARD {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PROFINET_PDIR_PERIOD_ASSIGNMENT
{
typedef
struct
_T_PROFINET_PDIR_PERIOD_ASSIGNMENT
{
PN_U8
RedOrangeHighWordHighByte
;
PN_U8
RedOrangeHighWordHighByte
;
PN_U8
RedOrangeHighWordLowByte
;
PN_U8
RedOrangeHighWordLowByte
;
PN_U8
RedOrangeLowWordHighByte
;
PN_U8
RedOrangeLowWordHighByte
;
...
@@ -5504,7 +5703,8 @@ typedef struct _T_PROFINET_PDIR_PERIOD_ASSIGNMENT {
...
@@ -5504,7 +5703,8 @@ typedef struct _T_PROFINET_PDIR_PERIOD_ASSIGNMENT {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PROFINET_PDIR_PHASE
{
typedef
struct
_T_PROFINET_PDIR_PHASE
{
PN_U8
AssignmentHighByte
;
PN_U8
AssignmentHighByte
;
PN_U8
AssignmentLowByte
;
PN_U8
AssignmentLowByte
;
...
@@ -5512,7 +5712,8 @@ typedef struct _T_PROFINET_PDIR_PHASE {
...
@@ -5512,7 +5712,8 @@ typedef struct _T_PROFINET_PDIR_PHASE {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PROFINET_PDIR_PHASE_ASSIGNMENT
{
typedef
struct
_T_PROFINET_PDIR_PHASE_ASSIGNMENT
{
T_PROFINET_PDIR_PHASE
Tx
;
T_PROFINET_PDIR_PHASE
Tx
;
T_PROFINET_PDIR_PHASE
Rx
;
T_PROFINET_PDIR_PHASE
Rx
;
...
@@ -5520,7 +5721,8 @@ typedef struct _T_PROFINET_PDIR_PHASE_ASSIGNMENT {
...
@@ -5520,7 +5721,8 @@ typedef struct _T_PROFINET_PDIR_PHASE_ASSIGNMENT {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PROFINET_PDIR_PORT_PHASE_DATA
{
typedef
struct
_T_PROFINET_PDIR_PORT_PHASE_DATA
{
PN_U8
NumberOfPhasesHighWordHighByte
;
PN_U8
NumberOfPhasesHighWordHighByte
;
PN_U8
NumberOfPhasesHighWordLowByte
;
PN_U8
NumberOfPhasesHighWordLowByte
;
PN_U8
NumberOfPhasesLowWordHighByte
;
PN_U8
NumberOfPhasesLowWordHighByte
;
...
@@ -5534,7 +5736,8 @@ typedef struct _T_PROFINET_PDIR_PORT_PHASE_DATA {
...
@@ -5534,7 +5736,8 @@ typedef struct _T_PROFINET_PDIR_PORT_PHASE_DATA {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PROFINET_PDIR_BEGIN_END_ASSIGNMENT
{
typedef
struct
_T_PROFINET_PDIR_BEGIN_END_ASSIGNMENT
{
T_PROFINET_PDIR_PERIOD_ASSIGNMENT
Tx
;
T_PROFINET_PDIR_PERIOD_ASSIGNMENT
Tx
;
T_PROFINET_PDIR_PERIOD_ASSIGNMENT
Rx
;
T_PROFINET_PDIR_PERIOD_ASSIGNMENT
Rx
;
...
@@ -5544,7 +5747,8 @@ typedef struct _T_PROFINET_PDIR_BEGIN_END_ASSIGNMENT {
...
@@ -5544,7 +5747,8 @@ typedef struct _T_PROFINET_PDIR_BEGIN_END_ASSIGNMENT {
#define MAX_NUMBER_PDIR_BEGIN_END_ASSIGNMENTS 0x00000010uL
#define MAX_NUMBER_PDIR_BEGIN_END_ASSIGNMENTS 0x00000010uL
typedef
struct
_T_PROFINET_PDIR_PORT_BEGIN_END_DATA
{
typedef
struct
_T_PROFINET_PDIR_PORT_BEGIN_END_DATA
{
PN_U8
NumberOfAssignmentsHighWordHighByte
;
PN_U8
NumberOfAssignmentsHighWordHighByte
;
PN_U8
NumberOfAssignmentsHighWordLowByte
;
PN_U8
NumberOfAssignmentsHighWordLowByte
;
PN_U8
NumberOfAssignmentsLowWordHighByte
;
PN_U8
NumberOfAssignmentsLowWordHighByte
;
...
@@ -5558,7 +5762,8 @@ typedef struct _T_PROFINET_PDIR_PORT_BEGIN_END_DATA {
...
@@ -5558,7 +5762,8 @@ typedef struct _T_PROFINET_PDIR_PORT_BEGIN_END_DATA {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PROFINET_PDIR_BEGIN_END_DATA
{
typedef
struct
_T_PROFINET_PDIR_BEGIN_END_DATA
{
T_PROFINET_BLOCK_HEADER
Header
;
T_PROFINET_BLOCK_HEADER
Header
;
PN_U8
Padding
[
2
];
PN_U8
Padding
[
2
];
...
@@ -5579,7 +5784,8 @@ typedef struct _T_PROFINET_PDIR_BEGIN_END_DATA {
...
@@ -5579,7 +5784,8 @@ typedef struct _T_PROFINET_PDIR_BEGIN_END_DATA {
/*===========================================================================*/
/*===========================================================================*/
typedef
struct
_T_PROFINET_PDIR_DATA
{
typedef
struct
_T_PROFINET_PDIR_DATA
{
T_PROFINET_BLOCK_HEADER
Header
;
T_PROFINET_BLOCK_HEADER
Header
;
PN_U8
Padding
[
2
];
PN_U8
Padding
[
2
];
...
@@ -5622,7 +5828,8 @@ typedef struct _T_PROFINET_PDIR_DATA {
...
@@ -5622,7 +5828,8 @@ typedef struct _T_PROFINET_PDIR_DATA {
#define PROFINET_SYNC_PROPERTY_ROLE_SLAVE 0x0001u
#define PROFINET_SYNC_PROPERTY_ROLE_SLAVE 0x0001u
#define PROFINET_SYNC_PROPERTY_ROLE_MASTER 0x0002u
#define PROFINET_SYNC_PROPERTY_ROLE_MASTER 0x0002u
typedef
struct
_T_PROFINET_PD_SYNC_DATA
{
typedef
struct
_T_PROFINET_PD_SYNC_DATA
{
T_PROFINET_BLOCK_HEADER
Header
;
T_PROFINET_BLOCK_HEADER
Header
;
PN_U8
Padding
[
2
];
PN_U8
Padding
[
2
];
...
@@ -5678,7 +5885,8 @@ typedef struct _T_PROFINET_PD_SYNC_DATA {
...
@@ -5678,7 +5885,8 @@ typedef struct _T_PROFINET_PD_SYNC_DATA {
/*===========================================================================*/
/*===========================================================================*/
typedef
struct
_T_PROFINET_SUBFRAME_BLOCK
{
typedef
struct
_T_PROFINET_SUBFRAME_BLOCK
{
T_PROFINET_BLOCK_HEADER
Header
;
T_PROFINET_BLOCK_HEADER
Header
;
PN_U8
FrameIdHighByte
;
PN_U8
FrameIdHighByte
;
...
@@ -5700,7 +5908,8 @@ typedef struct _T_PROFINET_SUBFRAME_BLOCK {
...
@@ -5700,7 +5908,8 @@ typedef struct _T_PROFINET_SUBFRAME_BLOCK {
#define PROFINET_MAX_NUMBER_SUBFRAME_BLOCKS 255u
#define PROFINET_MAX_NUMBER_SUBFRAME_BLOCKS 255u
typedef
struct
_T_PROFINET_PDIR_SUBFRAME_DATA
{
typedef
struct
_T_PROFINET_PDIR_SUBFRAME_DATA
{
T_PROFINET_BLOCK_HEADER
Header
;
T_PROFINET_BLOCK_HEADER
Header
;
PN_U8
NumberOfBlocksHighByte
;
PN_U8
NumberOfBlocksHighByte
;
...
@@ -5714,7 +5923,8 @@ typedef struct _T_PROFINET_PDIR_SUBFRAME_DATA {
...
@@ -5714,7 +5923,8 @@ typedef struct _T_PROFINET_PDIR_SUBFRAME_DATA {
/*===========================================================================*/
/*===========================================================================*/
typedef
struct
_T_PROFINET_PDEV_DATA
{
typedef
struct
_T_PROFINET_PDEV_DATA
{
T_PROFINET_BLOCK_HEADER
Header
;
T_PROFINET_BLOCK_HEADER
Header
;
PN_U8
Padding
[
2
];
PN_U8
Padding
[
2
];
...
@@ -5729,7 +5939,8 @@ typedef struct _T_PROFINET_PDEV_DATA {
...
@@ -5729,7 +5939,8 @@ typedef struct _T_PROFINET_PDEV_DATA {
/*===========================================================================*/
/*===========================================================================*/
typedef
struct
_T_PROFINET_IDENT_MAINTENANCE
{
typedef
struct
_T_PROFINET_IDENT_MAINTENANCE
{
T_PROFINET_BLOCK_HEADER
Header
;
T_PROFINET_BLOCK_HEADER
Header
;
PN_U8
VendorIdHighByte
;
PN_U8
VendorIdHighByte
;
...
@@ -5765,7 +5976,8 @@ typedef struct _T_PROFINET_IDENT_MAINTENANCE {
...
@@ -5765,7 +5976,8 @@ typedef struct _T_PROFINET_IDENT_MAINTENANCE {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PROFINET_IDENT_MAINTENANCE_1
{
typedef
struct
_T_PROFINET_IDENT_MAINTENANCE_1
{
T_PROFINET_BLOCK_HEADER
Header
;
T_PROFINET_BLOCK_HEADER
Header
;
PN_U8
Function
[
PROFINET_IDENT_MAINTENANCE_FUNCTION_LENGTH
];
PN_U8
Function
[
PROFINET_IDENT_MAINTENANCE_FUNCTION_LENGTH
];
...
@@ -5775,7 +5987,8 @@ typedef struct _T_PROFINET_IDENT_MAINTENANCE_1 {
...
@@ -5775,7 +5987,8 @@ typedef struct _T_PROFINET_IDENT_MAINTENANCE_1 {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PROFINET_IDENT_MAINTENANCE_2
{
typedef
struct
_T_PROFINET_IDENT_MAINTENANCE_2
{
T_PROFINET_BLOCK_HEADER
Header
;
T_PROFINET_BLOCK_HEADER
Header
;
PN_U8
Date
[
PROFINET_IDENT_MAINTENANCE_DATE_LENGTH
];
PN_U8
Date
[
PROFINET_IDENT_MAINTENANCE_DATE_LENGTH
];
...
@@ -5784,7 +5997,8 @@ typedef struct _T_PROFINET_IDENT_MAINTENANCE_2 {
...
@@ -5784,7 +5997,8 @@ typedef struct _T_PROFINET_IDENT_MAINTENANCE_2 {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PROFINET_IDENT_MAINTENANCE_3
{
typedef
struct
_T_PROFINET_IDENT_MAINTENANCE_3
{
T_PROFINET_BLOCK_HEADER
Header
;
T_PROFINET_BLOCK_HEADER
Header
;
PN_U8
Description
[
PROFINET_IDENT_MAINTENANCE_DESCRIPTION_LENGTH
];
PN_U8
Description
[
PROFINET_IDENT_MAINTENANCE_DESCRIPTION_LENGTH
];
...
@@ -5793,7 +6007,8 @@ typedef struct _T_PROFINET_IDENT_MAINTENANCE_3 {
...
@@ -5793,7 +6007,8 @@ typedef struct _T_PROFINET_IDENT_MAINTENANCE_3 {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PROFINET_IDENT_MAINTENANCE_4
{
typedef
struct
_T_PROFINET_IDENT_MAINTENANCE_4
{
T_PROFINET_BLOCK_HEADER
Header
;
T_PROFINET_BLOCK_HEADER
Header
;
PN_U8
Signature
[
PROFINET_IDENT_MAINTENANCE_SIGNATURE_LENGTH
];
PN_U8
Signature
[
PROFINET_IDENT_MAINTENANCE_SIGNATURE_LENGTH
];
...
@@ -5802,7 +6017,8 @@ typedef struct _T_PROFINET_IDENT_MAINTENANCE_4 {
...
@@ -5802,7 +6017,8 @@ typedef struct _T_PROFINET_IDENT_MAINTENANCE_4 {
/*===========================================================================*/
/*===========================================================================*/
typedef
struct
_T_PROFINET_MULTIPLE_HEADER
{
typedef
struct
_T_PROFINET_MULTIPLE_HEADER
{
T_PROFINET_BLOCK_HEADER
Header
;
T_PROFINET_BLOCK_HEADER
Header
;
PN_U8
Padding
[
2
];
PN_U8
Padding
[
2
];
...
@@ -5825,7 +6041,8 @@ typedef T_PROFINET_MULTIPLE_HEADER T_PROFINET_PD_EXPECTED_DATA;
...
@@ -5825,7 +6041,8 @@ typedef T_PROFINET_MULTIPLE_HEADER T_PROFINET_PD_EXPECTED_DATA;
/*===========================================================================*/
/*===========================================================================*/
typedef
struct
_T_PROFINET_RECORD_DIAGNOSIS
{
typedef
struct
_T_PROFINET_RECORD_DIAGNOSIS
{
T_PROFINET_BLOCK_HEADER
Header
;
T_PROFINET_BLOCK_HEADER
Header
;
PN_U8
APIHighWordHighByte
;
PN_U8
APIHighWordHighByte
;
...
@@ -5859,7 +6076,8 @@ typedef struct _T_PROFINET_RECORD_DIAGNOSIS {
...
@@ -5859,7 +6076,8 @@ typedef struct _T_PROFINET_RECORD_DIAGNOSIS {
/*===========================================================================*/
/*===========================================================================*/
typedef
struct
_T_PROFINET_SUBMODULE_LIST_ENTRY
{
typedef
struct
_T_PROFINET_SUBMODULE_LIST_ENTRY
{
PN_U8
APIHighWordHighByte
;
PN_U8
APIHighWordHighByte
;
PN_U8
APIHighWordLowByte
;
PN_U8
APIHighWordLowByte
;
PN_U8
APILowWordHighByte
;
PN_U8
APILowWordHighByte
;
...
@@ -5875,7 +6093,8 @@ typedef struct _T_PROFINET_SUBMODULE_LIST_ENTRY {
...
@@ -5875,7 +6093,8 @@ typedef struct _T_PROFINET_SUBMODULE_LIST_ENTRY {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PROFINET_SUBMODULE_LIST
{
typedef
struct
_T_PROFINET_SUBMODULE_LIST
{
T_PROFINET_BLOCK_HEADER
Header
;
T_PROFINET_BLOCK_HEADER
Header
;
PN_U8
NumberEntriesHighByte
;
PN_U8
NumberEntriesHighByte
;
...
@@ -5896,7 +6115,8 @@ typedef struct _T_PROFINET_SUBMODULE_LIST {
...
@@ -5896,7 +6115,8 @@ typedef struct _T_PROFINET_SUBMODULE_LIST {
#define C_CONTROL_COMMAND_READYFORRTCLASS3 0x0020u
#define C_CONTROL_COMMAND_READYFORRTCLASS3 0x0020u
#define C_CONTROL_COMMAND_PRM_BEGIN 0x0040u
#define C_CONTROL_COMMAND_PRM_BEGIN 0x0040u
typedef
struct
_T_PN_SERVICE_CONTROL_IND
{
typedef
struct
_T_PN_SERVICE_CONTROL_IND
{
PN_U8
ARIdentifierHighByte
;
PN_U8
ARIdentifierHighByte
;
PN_U8
ARIdentifierLowByte
;
PN_U8
ARIdentifierLowByte
;
...
@@ -5917,7 +6137,8 @@ typedef struct _T_PN_SERVICE_CONTROL_IND {
...
@@ -5917,7 +6137,8 @@ typedef struct _T_PN_SERVICE_CONTROL_IND {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PN_CONTROL_RES_ERROR
{
typedef
struct
_T_PN_CONTROL_RES_ERROR
{
PN_U8
ErrorCode1
;
PN_U8
ErrorCode1
;
PN_U8
ErrorCode2
;
PN_U8
ErrorCode2
;
...
@@ -5930,7 +6151,8 @@ typedef struct _T_PN_CONTROL_RES_ERROR {
...
@@ -5930,7 +6151,8 @@ typedef struct _T_PN_CONTROL_RES_ERROR {
#define PROFINET_ERROR_CODE1_SUBMODULE_LIST_BLOCK_FAULTY 25u
#define PROFINET_ERROR_CODE1_SUBMODULE_LIST_BLOCK_FAULTY 25u
typedef
struct
_T_PN_SERVICE_CONTROL_RES
{
typedef
struct
_T_PN_SERVICE_CONTROL_RES
{
PN_U8
ARIdentifierHighByte
;
PN_U8
ARIdentifierHighByte
;
PN_U8
ARIdentifierLowByte
;
PN_U8
ARIdentifierLowByte
;
...
@@ -5956,7 +6178,8 @@ typedef struct _T_PN_SERVICE_CONTROL_RES {
...
@@ -5956,7 +6178,8 @@ typedef struct _T_PN_SERVICE_CONTROL_RES {
/*===========================================================================*/
/*===========================================================================*/
typedef
struct
_T_PN_SERVICE_WRITE_MULTIPLE_IND
{
typedef
struct
_T_PN_SERVICE_WRITE_MULTIPLE_IND
{
PN_U8
ARIdentifierHighByte
;
PN_U8
ARIdentifierHighByte
;
PN_U8
ARIdentifierLowByte
;
PN_U8
ARIdentifierLowByte
;
...
@@ -5971,7 +6194,8 @@ typedef struct _T_PN_SERVICE_WRITE_MULTIPLE_IND {
...
@@ -5971,7 +6194,8 @@ typedef struct _T_PN_SERVICE_WRITE_MULTIPLE_IND {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PN_SERVICE_WRITE_MULTIPLE_REQ
{
typedef
struct
_T_PN_SERVICE_WRITE_MULTIPLE_REQ
{
PN_U8
NumberOfBlocksHighByte
;
PN_U8
NumberOfBlocksHighByte
;
PN_U8
NumberOfBlocksLowByte
;
PN_U8
NumberOfBlocksLowByte
;
...
@@ -5983,7 +6207,8 @@ typedef struct _T_PN_SERVICE_WRITE_MULTIPLE_REQ {
...
@@ -5983,7 +6207,8 @@ typedef struct _T_PN_SERVICE_WRITE_MULTIPLE_REQ {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_WRITE_MULTIPLE_RES
{
typedef
struct
_T_WRITE_MULTIPLE_RES
{
PN_U8
ARIdentifierHighByte
;
PN_U8
ARIdentifierHighByte
;
PN_U8
ARIdentifierLowByte
;
PN_U8
ARIdentifierLowByte
;
...
@@ -6008,7 +6233,8 @@ typedef struct _T_WRITE_MULTIPLE_RES {
...
@@ -6008,7 +6233,8 @@ typedef struct _T_WRITE_MULTIPLE_RES {
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PN_SERVICE_WRITE_MULTIPLE_RES
{
typedef
struct
_T_PN_SERVICE_WRITE_MULTIPLE_RES
{
PN_U8
ARIdentifierHighByte
;
PN_U8
ARIdentifierHighByte
;
PN_U8
ARIdentifierLowByte
;
PN_U8
ARIdentifierLowByte
;
...
@@ -6027,7 +6253,8 @@ typedef T_WRITE_MULTIPLE_RES T_WRITE_MULTIPLE_CON;
...
@@ -6027,7 +6253,8 @@ typedef T_WRITE_MULTIPLE_RES T_WRITE_MULTIPLE_CON;
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
typedef
struct
_T_PN_SERVICE_WRITE_MULTIPLE_CON
{
typedef
struct
_T_PN_SERVICE_WRITE_MULTIPLE_CON
{
PN_U8
NumberOfBlocksHighByte
;
PN_U8
NumberOfBlocksHighByte
;
PN_U8
NumberOfBlocksLowByte
;
PN_U8
NumberOfBlocksLowByte
;
...
@@ -6044,7 +6271,8 @@ typedef struct _T_PN_SERVICE_WRITE_MULTIPLE_CON {
...
@@ -6044,7 +6271,8 @@ typedef struct _T_PN_SERVICE_WRITE_MULTIPLE_CON {
? MAX_NUMBER_LOCAL_MISMATCH_ENTRIES \
? MAX_NUMBER_LOCAL_MISMATCH_ENTRIES \
: MAX_NUMBER_PEER_MISMATCH_ENTRIES)
: MAX_NUMBER_PEER_MISMATCH_ENTRIES)
typedef
struct
_T_PN_SERVICE_LOCAL_AND_PEER_CHECK_IND
{
typedef
struct
_T_PN_SERVICE_LOCAL_AND_PEER_CHECK_IND
{
PN_U8
ARIdentifierHighByte
;
PN_U8
ARIdentifierHighByte
;
PN_U8
ARIdentifierLowByte
;
PN_U8
ARIdentifierLowByte
;
...
...
profibus/lib/rt/src/version.h
View file @
df0831a3
/*
* 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 AG */
...
...
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