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
8a6375ef
Commit
8a6375ef
authored
Jan 14, 2004
by
claes
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
SigChanCon converted to Objid from ObjXRef, and integer IO implemented
parent
aa5ec777
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
374 additions
and
422 deletions
+374
-422
src/lib/rt/src/rt_io_base.c
src/lib/rt/src/rt_io_base.c
+374
-422
No files found.
src/lib/rt/src/rt_io_base.c
View file @
8a6375ef
...
@@ -142,9 +142,9 @@ pwr_tStatus io_init_ai_signals(
...
@@ -142,9 +142,9 @@ pwr_tStatus io_init_ai_signals(
pwr_sClass_Ai
*
sig_op
;
pwr_sClass_Ai
*
sig_op
;
pwr_sClass_ChanAi
*
chan_op
;
pwr_sClass_ChanAi
*
chan_op
;
pwr_tObjid
sig_objid
;
pwr_tObjid
sig_objid
;
pwr_tObjid
chan_objid
;
char
buf
[
140
];
char
buf
[
140
];
pwr_tUInt32
chan_count
;
pwr_tUInt32
sig_count
=
0
;
pwr_tClassId
class
;
/* Get pointer to area-object */
/* Get pointer to area-object */
sts
=
gdh_NameToObjid
(
"pwrNode-active-io-ai"
,
&
area_objid
);
sts
=
gdh_NameToObjid
(
"pwrNode-active-io-ai"
,
&
area_objid
);
...
@@ -153,127 +153,43 @@ pwr_tStatus io_init_ai_signals(
...
@@ -153,127 +153,43 @@ pwr_tStatus io_init_ai_signals(
sts
=
gdh_ObjidToPointer
(
area_objid
,
(
void
*
)
&
area_op
);
sts
=
gdh_ObjidToPointer
(
area_objid
,
(
void
*
)
&
area_op
);
if
(
EVEN
(
sts
))
return
sts
;
if
(
EVEN
(
sts
))
return
sts
;
/* Clear pointers to ValueBase */
// Check SigChanCon and put signal in channels SigChanCon
sts
=
gdh_GetClassList
(
pwr_cClass_Ai
,
&
sig_objid
);
sts
=
gdh_GetClassList
(
pwr_cClass_Ai
,
&
sig_objid
);
while
(
ODD
(
sts
))
{
sts
=
gdh_ObjidToPointer
(
sig_objid
,
(
void
*
)
&
sig_op
);
if
(
EVEN
(
sts
))
return
sts
;
sig_op
->
ActualValue
=
NULL
;
sts
=
gdh_GetNextObject
(
sig_objid
,
&
sig_objid
);
}
/* Loop channel objects */
chan_count
=
0
;
sts
=
gdh_GetClassList
(
pwr_cClass_ChanAi
,
&
chan_objid
);
while
(
ODD
(
sts
))
while
(
ODD
(
sts
))
{
{
sts
=
gdh_ObjidToPointer
(
chan_objid
,
(
void
*
)
&
chan_op
);
sts
=
gdh_ObjidToName
(
sig_objid
,
buf
,
sizeof
(
buf
),
cdh_mNName
);
if
(
EVEN
(
sts
))
return
sts
;
if
(
cdh_ObjidIsNull
(
chan_op
->
SigChanCon
))
{
sts
=
gdh_ObjidToName
(
chan_objid
,
buf
,
sizeof
(
buf
),
cdh_mNName
);
if
(
EVEN
(
sts
))
return
sts
;
/*
errh_Info("IO init: Channel is not connected '%s'", buf);
*/
sts
=
gdh_GetNextObject
(
chan_objid
,
&
chan_objid
);
continue
;
}
sts
=
gdh_ObjidToPointer
(
chan_op
->
SigChanCon
,
(
void
*
)
&
sig_op
);
if
(
EVEN
(
sts
))
{
sts
=
gdh_ObjidToName
(
chan_objid
,
buf
,
sizeof
(
buf
),
cdh_mNName
);
if
(
EVEN
(
sts
))
return
sts
;
errh_Error
(
"IO init: Channel SigChanCon does not exist '%s'"
,
buf
);
sts
=
gdh_GetNextObject
(
chan_objid
,
&
chan_objid
);
continue
;
}
/* Check that connection is mutual */
if
(
cdh_ObjidIsNotEqual
(
chan_objid
,
sig_op
->
SigChanCon
))
{
sts
=
gdh_ObjidToName
(
chan_objid
,
buf
,
sizeof
(
buf
),
cdh_mNName
);
if
(
EVEN
(
sts
))
return
sts
;
if
(
EVEN
(
sts
))
return
sts
;
errh_Error
(
"IO init: Channel connection is not mutual '%s'"
,
buf
);
sts
=
gdh_GetNextObject
(
chan_objid
,
&
chan_objid
);
continue
;
}
gdh_StoreRtdbPointer
(
(
pwr_tUInt32
*
)
&
sig_op
->
ActualValue
,
sts
=
gdh_ObjidToPointer
(
sig_objid
,
(
void
*
)
&
sig_op
);
&
area_op
->
Value
[
chan_count
]);
sig_op
->
ValueIndex
=
chan_count
;
chan_count
++
;
sts
=
gdh_GetNextObject
(
chan_objid
,
&
chan_objid
);
}
sts
=
gdh_GetClassList
(
pwr_cClass_ChanAit
,
&
chan_objid
);
while
(
ODD
(
sts
))
{
sts
=
gdh_ObjidToPointer
(
chan_objid
,
(
void
*
)
&
chan_op
);
if
(
EVEN
(
sts
))
return
sts
;
if
(
EVEN
(
sts
))
return
sts
;
if
(
cdh_ObjidIsNull
(
chan_op
->
SigChanCon
))
if
(
cdh_ObjidIsNull
(
sig_op
->
SigChanCon
))
{
{
errh_Info
(
"IO init: Signal is not connected '%s'"
,
buf
);
sts
=
gdh_ObjidToName
(
chan_objid
,
buf
,
sizeof
(
buf
),
cdh_mNName
);
if
(
EVEN
(
sts
))
return
sts
;
/*
errh_Info("IO init: Channel is not connected '%s'", buf);
*/
sts
=
gdh_GetNextObject
(
chan_objid
,
&
chan_objid
);
continue
;
}
}
sts
=
gdh_ObjidToPointer
(
chan_op
->
SigChanCon
,
(
void
*
)
&
sig_op
);
else
{
if
(
EVEN
(
sts
))
sts
=
gdh_GetObjectClass
(
sig_op
->
SigChanCon
,
&
class
);
{
if
(
EVEN
(
sts
)
||
sts
=
gdh_ObjidToName
(
chan_objid
,
buf
,
sizeof
(
buf
),
cdh_mNName
);
!
(
class
==
pwr_cClass_ChanAi
||
class
==
pwr_cClass_ChanAit
))
{
if
(
EVEN
(
sts
))
return
sts
;
errh_Info
(
"IO init: Signal SigChanCon error '%s'"
,
buf
);
errh_Error
(
"IO init: Channel SigChanCon does not exist '%s'"
,
buf
);
sts
=
gdh_GetNextObject
(
chan_objid
,
&
chan_objid
);
continue
;
}
}
else
{
/* Check that connection is mutual */
sts
=
gdh_ObjidToPointer
(
sig_op
->
SigChanCon
,
(
void
*
)
&
chan_op
);
if
(
cdh_ObjidIsNotEqual
(
chan_objid
,
sig_op
->
SigChanCon
))
if
(
EVEN
(
sts
))
{
{
errh_Info
(
"IO init: Signal SigChanCon error '%s'"
,
buf
);
sts
=
gdh_ObjidToName
(
chan_objid
,
buf
,
sizeof
(
buf
),
cdh_mNName
);
if
(
EVEN
(
sts
))
return
sts
;
errh_Error
(
"IO init: Channel connection is not mutual '%s'"
,
buf
);
sts
=
gdh_GetNextObject
(
chan_objid
,
&
chan_objid
);
continue
;
}
}
else
gdh_StoreRtdbPointer
(
(
pwr_tUInt32
*
)
&
sig_op
->
ActualValue
,
chan_op
->
SigChanCon
=
sig_objid
;
&
area_op
->
Value
[
chan_count
]);
sig_op
->
ValueIndex
=
chan_count
;
chan_count
++
;
sts
=
gdh_GetNextObject
(
chan_objid
,
&
chan_objid
);
}
}
/* Initiate remaining signals */
sts
=
gdh_GetClassList
(
pwr_cClass_Ai
,
&
sig_objid
);
while
(
ODD
(
sts
))
{
sts
=
gdh_ObjidToPointer
(
sig_objid
,
(
void
*
)
&
sig_op
);
if
(
EVEN
(
sts
))
return
sts
;
if
(
sig_op
->
ActualValue
==
NULL
)
{
sts
=
gdh_ObjidToName
(
sig_objid
,
buf
,
sizeof
(
buf
),
cdh_mNName
);
if
(
EVEN
(
sts
))
return
sts
;
errh_Info
(
"IO init: Signal is not connected '%s'"
,
buf
);
gdh_StoreRtdbPointer
(
(
pwr_tUInt32
*
)
&
sig_op
->
ActualValue
,
&
area_op
->
Value
[
chan_count
]);
sig_op
->
ValueIndex
=
chan_count
;
chan_count
++
;
}
}
gdh_StoreRtdbPointer
(
(
pwr_tUInt32
*
)
&
sig_op
->
ActualValue
,
&
area_op
->
Value
[
sig_count
]);
sig_op
->
ValueIndex
=
sig_count
;
sig_count
++
;
sts
=
gdh_GetNextObject
(
sig_objid
,
&
sig_objid
);
sts
=
gdh_GetNextObject
(
sig_objid
,
&
sig_objid
);
}
}
/* Store number of A
I
in node object */
/* Store number of A
i
in node object */
io_op
->
AiCount
=
chan
_count
;
io_op
->
AiCount
=
sig
_count
;
return
IO__SUCCESS
;
return
IO__SUCCESS
;
}
}
...
@@ -292,9 +208,8 @@ pwr_tStatus io_init_ao_signals(
...
@@ -292,9 +208,8 @@ pwr_tStatus io_init_ao_signals(
pwr_sClass_Ao
*
sig_op
;
pwr_sClass_Ao
*
sig_op
;
pwr_sClass_ChanAo
*
chan_op
;
pwr_sClass_ChanAo
*
chan_op
;
pwr_tObjid
sig_objid
;
pwr_tObjid
sig_objid
;
pwr_tObjid
chan_objid
;
char
buf
[
140
];
char
buf
[
140
];
pwr_tUInt32
chan_count
;
pwr_tUInt32
sig_count
=
0
;
pwr_tClassId
class
;
pwr_tClassId
class
;
/* Get pointer to area-object */
/* Get pointer to area-object */
...
@@ -304,87 +219,43 @@ pwr_tStatus io_init_ao_signals(
...
@@ -304,87 +219,43 @@ pwr_tStatus io_init_ao_signals(
sts
=
gdh_ObjidToPointer
(
area_objid
,
(
void
*
)
&
area_op
);
sts
=
gdh_ObjidToPointer
(
area_objid
,
(
void
*
)
&
area_op
);
if
(
EVEN
(
sts
))
return
sts
;
if
(
EVEN
(
sts
))
return
sts
;
/* Clear pointers to ValueBase */
// Check SigChanCon and put signal in channels SigChanCon
sts
=
gdh_GetClassList
(
pwr_cClass_Ao
,
&
sig_objid
);
sts
=
gdh_GetClassList
(
pwr_cClass_Ao
,
&
sig_objid
);
while
(
ODD
(
sts
))
{
sts
=
gdh_ObjidToPointer
(
sig_objid
,
(
void
*
)
&
sig_op
);
if
(
EVEN
(
sts
))
return
sts
;
sig_op
->
ActualValue
=
NULL
;
sts
=
gdh_GetNextObject
(
sig_objid
,
&
sig_objid
);
}
/* Loop channel objects */
chan_count
=
0
;
sts
=
gdh_GetClassList
(
pwr_cClass_ChanAo
,
&
chan_objid
);
while
(
ODD
(
sts
))
while
(
ODD
(
sts
))
{
{
sts
=
gdh_
GetObjectClass
(
chan_objid
,
&
class
);
sts
=
gdh_
ObjidToName
(
sig_objid
,
buf
,
sizeof
(
buf
),
cdh_mNName
);
if
(
EVEN
(
sts
))
return
sts
;
if
(
EVEN
(
sts
))
return
sts
;
sts
=
gdh_ObjidToPointer
(
chan_objid
,
(
void
*
)
&
chan
_op
);
sts
=
gdh_ObjidToPointer
(
sig_objid
,
(
void
*
)
&
sig
_op
);
if
(
EVEN
(
sts
))
return
sts
;
if
(
EVEN
(
sts
))
return
sts
;
if
(
cdh_ObjidIsNull
(
chan_op
->
SigChanCon
))
if
(
cdh_ObjidIsNull
(
sig_op
->
SigChanCon
))
{
{
errh_Info
(
"IO init: Signal is not connected '%s'"
,
buf
);
sts
=
gdh_ObjidToName
(
chan_objid
,
buf
,
sizeof
(
buf
),
cdh_mNName
);
if
(
EVEN
(
sts
))
return
sts
;
/*
errh_Info("IO init: Channel is not connected '%s'", buf);
*/
sts
=
gdh_GetNextObject
(
chan_objid
,
&
chan_objid
);
continue
;
}
}
sts
=
gdh_ObjidToPointer
(
chan_op
->
SigChanCon
,
(
void
*
)
&
sig_op
);
else
{
if
(
EVEN
(
sts
))
sts
=
gdh_GetObjectClass
(
sig_op
->
SigChanCon
,
&
class
);
{
if
(
EVEN
(
sts
)
||
sts
=
gdh_ObjidToName
(
chan_objid
,
buf
,
sizeof
(
buf
),
cdh_mNName
);
(
class
!=
pwr_cClass_ChanAo
))
{
if
(
EVEN
(
sts
))
return
sts
;
errh_Info
(
"IO init: Signal SigChanCon error '%s'"
,
buf
);
errh_Error
(
"IO init: Channel SigChanCon does not exist '%s'"
,
buf
);
sts
=
gdh_GetNextObject
(
chan_objid
,
&
chan_objid
);
continue
;
}
}
else
{
/* Check that connection is mutual */
sts
=
gdh_ObjidToPointer
(
sig_op
->
SigChanCon
,
(
void
*
)
&
chan_op
);
if
(
cdh_ObjidIsNotEqual
(
chan_objid
,
sig_op
->
SigChanCon
))
if
(
EVEN
(
sts
))
{
{
errh_Info
(
"IO init: Signal SigChanCon error '%s'"
,
buf
);
sts
=
gdh_ObjidToName
(
chan_objid
,
buf
,
sizeof
(
buf
),
cdh_mNName
);
if
(
EVEN
(
sts
))
return
sts
;
errh_Error
(
"IO init: Channel connection is not mutual '%s'"
,
buf
);
sts
=
gdh_GetNextObject
(
chan_objid
,
&
chan_objid
);
continue
;
}
}
else
gdh_StoreRtdbPointer
(
(
pwr_tUInt32
*
)
&
sig_op
->
ActualValue
,
chan_op
->
SigChanCon
=
sig_objid
;
&
area_op
->
Value
[
chan_count
]);
sig_op
->
ValueIndex
=
chan_count
;
chan_count
++
;
sts
=
gdh_GetNextObject
(
chan_objid
,
&
chan_objid
);
}
}
/* Initiate remaining signals */
sts
=
gdh_GetClassList
(
pwr_cClass_Ao
,
&
sig_objid
);
while
(
ODD
(
sts
))
{
sts
=
gdh_ObjidToPointer
(
sig_objid
,
(
void
*
)
&
sig_op
);
if
(
EVEN
(
sts
))
return
sts
;
if
(
sig_op
->
ActualValue
==
NULL
)
{
sts
=
gdh_ObjidToName
(
sig_objid
,
buf
,
sizeof
(
buf
),
cdh_mNName
);
if
(
EVEN
(
sts
))
return
sts
;
errh_Info
(
"IO init: Signal is not connected '%s'"
,
buf
);
gdh_StoreRtdbPointer
(
(
pwr_tUInt32
*
)
&
sig_op
->
ActualValue
,
&
area_op
->
Value
[
chan_count
]);
sig_op
->
ValueIndex
=
chan_count
;
chan_count
++
;
}
}
gdh_StoreRtdbPointer
(
(
pwr_tUInt32
*
)
&
sig_op
->
ActualValue
,
&
area_op
->
Value
[
sig_count
]);
sig_op
->
ValueIndex
=
sig_count
;
sig_count
++
;
sts
=
gdh_GetNextObject
(
sig_objid
,
&
sig_objid
);
sts
=
gdh_GetNextObject
(
sig_objid
,
&
sig_objid
);
}
}
/* Store number of A
O
in node object */
/* Store number of A
o
in node object */
io_op
->
AoCount
=
chan
_count
;
io_op
->
AoCount
=
sig
_count
;
return
IO__SUCCESS
;
return
IO__SUCCESS
;
}
}
...
@@ -402,9 +273,8 @@ pwr_tStatus io_init_di_signals(
...
@@ -402,9 +273,8 @@ pwr_tStatus io_init_di_signals(
pwr_sClass_Di
*
sig_op
;
pwr_sClass_Di
*
sig_op
;
pwr_sClass_ChanDi
*
chan_op
;
pwr_sClass_ChanDi
*
chan_op
;
pwr_tObjid
sig_objid
;
pwr_tObjid
sig_objid
;
pwr_tObjid
chan_objid
;
char
buf
[
140
];
char
buf
[
140
];
pwr_tUInt32
chan_count
;
pwr_tUInt32
sig_count
=
0
;
pwr_tClassId
class
;
pwr_tClassId
class
;
/* Get pointer to area-object */
/* Get pointer to area-object */
...
@@ -414,86 +284,43 @@ pwr_tStatus io_init_di_signals(
...
@@ -414,86 +284,43 @@ pwr_tStatus io_init_di_signals(
sts
=
gdh_ObjidToPointer
(
area_objid
,
(
void
*
)
&
area_op
);
sts
=
gdh_ObjidToPointer
(
area_objid
,
(
void
*
)
&
area_op
);
if
(
EVEN
(
sts
))
return
sts
;
if
(
EVEN
(
sts
))
return
sts
;
/* Clear pointers to ValueBase */
// Check SigChanCon and put signal in channels SigChanCon
sts
=
gdh_GetClassList
(
pwr_cClass_Di
,
&
sig_objid
);
sts
=
gdh_GetClassList
(
pwr_cClass_Di
,
&
sig_objid
);
while
(
ODD
(
sts
))
{
sts
=
gdh_ObjidToPointer
(
sig_objid
,
(
void
*
)
&
sig_op
);
if
(
EVEN
(
sts
))
return
sts
;
sig_op
->
ActualValue
=
NULL
;
sts
=
gdh_GetNextObject
(
sig_objid
,
&
sig_objid
);
}
/* Loop channel objects */
chan_count
=
0
;
sts
=
gdh_GetClassList
(
pwr_cClass_ChanDi
,
&
chan_objid
);
while
(
ODD
(
sts
))
while
(
ODD
(
sts
))
{
{
sts
=
gdh_
GetObjectClass
(
chan_objid
,
&
class
);
sts
=
gdh_
ObjidToName
(
sig_objid
,
buf
,
sizeof
(
buf
),
cdh_mNName
);
if
(
EVEN
(
sts
))
return
sts
;
if
(
EVEN
(
sts
))
return
sts
;
sts
=
gdh_ObjidToPointer
(
chan_objid
,
(
void
*
)
&
chan
_op
);
sts
=
gdh_ObjidToPointer
(
sig_objid
,
(
void
*
)
&
sig
_op
);
if
(
EVEN
(
sts
))
return
sts
;
if
(
EVEN
(
sts
))
return
sts
;
if
(
cdh_ObjidIsNull
(
chan_op
->
SigChanCon
))
if
(
cdh_ObjidIsNull
(
sig_op
->
SigChanCon
))
{
{
errh_Info
(
"IO init: Signal is not connected '%s'"
,
buf
);
sts
=
gdh_ObjidToName
(
chan_objid
,
buf
,
sizeof
(
buf
),
cdh_mNName
);
if
(
EVEN
(
sts
))
return
sts
;
/*
errh_Info("IO init: Channel is not connected '%s'", buf);
*/
sts
=
gdh_GetNextObject
(
chan_objid
,
&
chan_objid
);
continue
;
}
}
sts
=
gdh_ObjidToPointer
(
chan_op
->
SigChanCon
,
(
void
*
)
&
sig_op
);
else
{
if
(
EVEN
(
sts
))
sts
=
gdh_GetObjectClass
(
sig_op
->
SigChanCon
,
&
class
);
{
if
(
EVEN
(
sts
)
||
sts
=
gdh_ObjidToName
(
chan_objid
,
buf
,
sizeof
(
buf
),
cdh_mNName
);
(
class
!=
pwr_cClass_ChanDi
))
{
if
(
EVEN
(
sts
))
return
sts
;
errh_Info
(
"IO init: Signal SigChanCon error '%s'"
,
buf
);
errh_Error
(
"IO init: Channel SigChanCon does not exist '%s'"
,
buf
);
sts
=
gdh_GetNextObject
(
chan_objid
,
&
chan_objid
);
continue
;
}
}
else
{
/* Check that connection is mutual */
sts
=
gdh_ObjidToPointer
(
sig_op
->
SigChanCon
,
(
void
*
)
&
chan_op
);
if
(
cdh_ObjidIsNotEqual
(
chan_objid
,
sig_op
->
SigChanCon
))
if
(
EVEN
(
sts
))
{
{
errh_Info
(
"IO init: Signal SigChanCon error '%s'"
,
buf
);
sts
=
gdh_ObjidToName
(
chan_objid
,
buf
,
sizeof
(
buf
),
cdh_mNName
);
if
(
EVEN
(
sts
))
return
sts
;
errh_Error
(
"IO init: Channel connection is not mutual '%s'"
,
buf
);
sts
=
gdh_GetNextObject
(
chan_objid
,
&
chan_objid
);
continue
;
}
}
else
gdh_StoreRtdbPointer
(
(
pwr_tUInt32
*
)
&
sig_op
->
ActualValue
,
chan_op
->
SigChanCon
=
sig_objid
;
&
area_op
->
Value
[
chan_count
]);
sig_op
->
ValueIndex
=
chan_count
;
chan_count
++
;
sts
=
gdh_GetNextObject
(
chan_objid
,
&
chan_objid
);
}
}
/* Initiate remaining signals */
sts
=
gdh_GetClassList
(
pwr_cClass_Di
,
&
sig_objid
);
while
(
ODD
(
sts
))
{
sts
=
gdh_ObjidToPointer
(
sig_objid
,
(
void
*
)
&
sig_op
);
if
(
EVEN
(
sts
))
return
sts
;
if
(
sig_op
->
ActualValue
==
NULL
)
{
sts
=
gdh_ObjidToName
(
sig_objid
,
buf
,
sizeof
(
buf
),
cdh_mNName
);
if
(
EVEN
(
sts
))
return
sts
;
errh_Info
(
"IO init: Signal is not connected '%s'"
,
buf
);
gdh_StoreRtdbPointer
(
(
pwr_tUInt32
*
)
&
sig_op
->
ActualValue
,
&
area_op
->
Value
[
chan_count
]);
sig_op
->
ValueIndex
=
chan_count
;
chan_count
++
;
}
}
gdh_StoreRtdbPointer
(
(
pwr_tUInt32
*
)
&
sig_op
->
ActualValue
,
&
area_op
->
Value
[
sig_count
]);
sig_op
->
ValueIndex
=
sig_count
;
sig_count
++
;
sts
=
gdh_GetNextObject
(
sig_objid
,
&
sig_objid
);
sts
=
gdh_GetNextObject
(
sig_objid
,
&
sig_objid
);
}
}
/* Store number of Di in node object */
/* Store number of Di in node object */
io_op
->
DiCount
=
chan
_count
;
io_op
->
DiCount
=
sig
_count
;
return
IO__SUCCESS
;
return
IO__SUCCESS
;
}
}
...
@@ -512,9 +339,8 @@ pwr_tStatus io_init_do_signals(
...
@@ -512,9 +339,8 @@ pwr_tStatus io_init_do_signals(
pwr_sClass_Do
*
sig_op
;
pwr_sClass_Do
*
sig_op
;
pwr_sClass_ChanDo
*
chan_op
;
pwr_sClass_ChanDo
*
chan_op
;
pwr_tObjid
sig_objid
;
pwr_tObjid
sig_objid
;
pwr_tObjid
chan_objid
;
char
buf
[
140
];
char
buf
[
140
];
pwr_tUInt32
chan_count
;
pwr_tUInt32
sig_count
=
0
;
pwr_tClassId
class
;
pwr_tClassId
class
;
/* Get pointer to area-object */
/* Get pointer to area-object */
...
@@ -524,114 +350,77 @@ pwr_tStatus io_init_do_signals(
...
@@ -524,114 +350,77 @@ pwr_tStatus io_init_do_signals(
sts
=
gdh_ObjidToPointer
(
area_objid
,
(
void
*
)
&
area_op
);
sts
=
gdh_ObjidToPointer
(
area_objid
,
(
void
*
)
&
area_op
);
if
(
EVEN
(
sts
))
return
sts
;
if
(
EVEN
(
sts
))
return
sts
;
/* Clear pointers to ValueBase */
// Check SigChanCon and put signal in channels SigChanCon
sts
=
gdh_GetClassList
(
pwr_cClass_Do
,
&
sig_objid
);
sts
=
gdh_GetClassList
(
pwr_cClass_Do
,
&
sig_objid
);
while
(
ODD
(
sts
))
while
(
ODD
(
sts
))
{
{
sts
=
gdh_ObjidToName
(
sig_objid
,
buf
,
sizeof
(
buf
),
cdh_mNName
);
if
(
EVEN
(
sts
))
return
sts
;
sts
=
gdh_ObjidToPointer
(
sig_objid
,
(
void
*
)
&
sig_op
);
sts
=
gdh_ObjidToPointer
(
sig_objid
,
(
void
*
)
&
sig_op
);
if
(
EVEN
(
sts
))
return
sts
;
if
(
EVEN
(
sts
))
return
sts
;
sig_op
->
ActualValue
=
NULL
;
sts
=
gdh_GetNextObject
(
sig_objid
,
&
sig_objid
);
if
(
cdh_ObjidIsNull
(
sig_op
->
SigChanCon
))
{
errh_Info
(
"IO init: Signal is not connected '%s'"
,
buf
);
}
}
sts
=
gdh_GetClassList
(
pwr_cClass_Po
,
&
sig_objid
);
else
{
while
(
ODD
(
sts
))
sts
=
gdh_GetObjectClass
(
sig_op
->
SigChanCon
,
&
class
);
{
if
(
EVEN
(
sts
)
||
sts
=
gdh_ObjidToPointer
(
sig_objid
,
(
void
*
)
&
sig_op
);
(
class
!=
pwr_cClass_ChanDo
))
{
if
(
EVEN
(
sts
))
return
sts
;
errh_Info
(
"IO init: Signal SigChanCon error '%s'"
,
buf
);
sig_op
->
ActualValue
=
NULL
;
sts
=
gdh_GetNextObject
(
sig_objid
,
&
sig_objid
);
}
}
else
{
sts
=
gdh_ObjidToPointer
(
sig_op
->
SigChanCon
,
(
void
*
)
&
chan_op
);
/* Loop channel objects */
if
(
EVEN
(
sts
))
{
chan_count
=
0
;
errh_Info
(
"IO init: Signal SigChanCon error '%s'"
,
buf
);
sts
=
gdh_GetClassList
(
pwr_cClass_ChanDo
,
&
chan_objid
);
while
(
ODD
(
sts
))
{
sts
=
gdh_GetObjectClass
(
chan_objid
,
&
class
);
if
(
EVEN
(
sts
))
return
sts
;
sts
=
gdh_ObjidToPointer
(
chan_objid
,
(
void
*
)
&
chan_op
);
if
(
EVEN
(
sts
))
return
sts
;
if
(
cdh_ObjidIsNull
(
chan_op
->
SigChanCon
))
{
sts
=
gdh_ObjidToName
(
chan_objid
,
buf
,
sizeof
(
buf
),
cdh_mNName
);
if
(
EVEN
(
sts
))
return
sts
;
/*
errh_Info("IO init: Channel is not connected '%s'", buf);
*/
sts
=
gdh_GetNextObject
(
chan_objid
,
&
chan_objid
);
continue
;
}
}
sts
=
gdh_ObjidToPointer
(
chan_op
->
SigChanCon
,
(
void
*
)
&
sig_op
);
else
if
(
EVEN
(
sts
))
chan_op
->
SigChanCon
=
sig_objid
;
{
sts
=
gdh_ObjidToName
(
chan_objid
,
buf
,
sizeof
(
buf
),
cdh_mNName
);
if
(
EVEN
(
sts
))
return
sts
;
errh_Error
(
"IO init: Channel SigChanCon does not exist '%s'"
,
buf
);
sts
=
gdh_GetNextObject
(
chan_objid
,
&
chan_objid
);
continue
;
}
}
/* Check that connection is mutual */
if
(
cdh_ObjidIsNotEqual
(
chan_objid
,
sig_op
->
SigChanCon
))
{
sts
=
gdh_ObjidToName
(
chan_objid
,
buf
,
sizeof
(
buf
),
cdh_mNName
);
if
(
EVEN
(
sts
))
return
sts
;
errh_Error
(
"IO init: Channel connection is not mutual '%s'"
,
buf
);
sts
=
gdh_GetNextObject
(
chan_objid
,
&
chan_objid
);
continue
;
}
}
gdh_StoreRtdbPointer
(
(
pwr_tUInt32
*
)
&
sig_op
->
ActualValue
,
&
area_op
->
Value
[
sig_count
]);
sig_op
->
ValueIndex
=
sig_count
;
sig_count
++
;
gdh_StoreRtdbPointer
(
(
pwr_tUInt32
*
)
&
sig_op
->
ActualValue
,
sts
=
gdh_GetNextObject
(
sig_objid
,
&
sig_objid
);
&
area_op
->
Value
[
chan_count
]);
sig_op
->
ValueIndex
=
chan_count
;
chan_count
++
;
sts
=
gdh_GetNextObject
(
chan_objid
,
&
chan_objid
);
}
}
/* Initiate remaining signals */
sts
=
gdh_GetClassList
(
pwr_cClass_Po
,
&
sig_objid
);
sts
=
gdh_GetClassList
(
pwr_cClass_Do
,
&
sig_objid
);
while
(
ODD
(
sts
))
while
(
ODD
(
sts
))
{
sts
=
gdh_ObjidToPointer
(
sig_objid
,
(
void
*
)
&
sig_op
);
if
(
EVEN
(
sts
))
return
sts
;
if
(
sig_op
->
ActualValue
==
NULL
)
{
{
sts
=
gdh_ObjidToName
(
sig_objid
,
buf
,
sizeof
(
buf
),
cdh_mNName
);
sts
=
gdh_ObjidToName
(
sig_objid
,
buf
,
sizeof
(
buf
),
cdh_mNName
);
if
(
EVEN
(
sts
))
return
sts
;
if
(
EVEN
(
sts
))
return
sts
;
errh_Info
(
"IO init: Signal is not connected '%s'"
,
buf
);
gdh_StoreRtdbPointer
(
(
pwr_tUInt32
*
)
&
sig_op
->
ActualValue
,
&
area_op
->
Value
[
chan_count
]);
sig_op
->
ValueIndex
=
chan_count
;
chan_count
++
;
}
sts
=
gdh_GetNextObject
(
sig_objid
,
&
sig_objid
);
}
sts
=
gdh_GetClassList
(
pwr_cClass_Po
,
&
sig_objid
);
while
(
ODD
(
sts
))
{
sts
=
gdh_ObjidToPointer
(
sig_objid
,
(
void
*
)
&
sig_op
);
sts
=
gdh_ObjidToPointer
(
sig_objid
,
(
void
*
)
&
sig_op
);
if
(
EVEN
(
sts
))
return
sts
;
if
(
EVEN
(
sts
))
return
sts
;
if
(
sig_op
->
ActualValue
==
NULL
)
if
(
cdh_ObjidIsNull
(
sig_op
->
SigChanCon
))
{
{
sts
=
gdh_ObjidToName
(
sig_objid
,
buf
,
sizeof
(
buf
),
cdh_mNName
);
if
(
EVEN
(
sts
))
return
sts
;
errh_Info
(
"IO init: Signal is not connected '%s'"
,
buf
);
errh_Info
(
"IO init: Signal is not connected '%s'"
,
buf
);
gdh_StoreRtdbPointer
(
(
pwr_tUInt32
*
)
&
sig_op
->
ActualValue
,
&
area_op
->
Value
[
chan_count
]);
sig_op
->
ValueIndex
=
chan_count
;
chan_count
++
;
}
}
else
{
sts
=
gdh_GetObjectClass
(
sig_op
->
SigChanCon
,
&
class
);
if
(
EVEN
(
sts
)
||
(
class
!=
pwr_cClass_ChanDo
))
{
errh_Info
(
"IO init: Signal SigChanCon error '%s'"
,
buf
);
}
else
{
sts
=
gdh_ObjidToPointer
(
sig_op
->
SigChanCon
,
(
void
*
)
&
chan_op
);
if
(
EVEN
(
sts
))
{
errh_Info
(
"IO init: Signal SigChanCon error '%s'"
,
buf
);
}
else
chan_op
->
SigChanCon
=
sig_objid
;
}
}
gdh_StoreRtdbPointer
(
(
pwr_tUInt32
*
)
&
sig_op
->
ActualValue
,
&
area_op
->
Value
[
sig_count
]);
sig_op
->
ValueIndex
=
sig_count
;
sig_count
++
;
sts
=
gdh_GetNextObject
(
sig_objid
,
&
sig_objid
);
sts
=
gdh_GetNextObject
(
sig_objid
,
&
sig_objid
);
}
}
/* Store number of Do in node object */
/* Store number of Do in node object */
io_op
->
DoCount
=
chan
_count
;
io_op
->
DoCount
=
sig
_count
;
return
IO__SUCCESS
;
return
IO__SUCCESS
;
}
}
...
@@ -651,9 +440,9 @@ pwr_tStatus io_init_co_signals(
...
@@ -651,9 +440,9 @@ pwr_tStatus io_init_co_signals(
pwr_sClass_Co
*
sig_op
;
pwr_sClass_Co
*
sig_op
;
pwr_sClass_ChanCo
*
chan_op
;
pwr_sClass_ChanCo
*
chan_op
;
pwr_tObjid
sig_objid
;
pwr_tObjid
sig_objid
;
pwr_tObjid
chan_objid
;
char
buf
[
140
];
char
buf
[
140
];
pwr_tUInt32
chan_count
;
pwr_tUInt32
sig_count
=
0
;
pwr_tClassId
class
;
/* Get pointer to area-object */
/* Get pointer to area-object */
sts
=
gdh_NameToObjid
(
"pwrNode-active-io-co"
,
&
area_objid
);
sts
=
gdh_NameToObjid
(
"pwrNode-active-io-co"
,
&
area_objid
);
...
@@ -668,89 +457,44 @@ pwr_tStatus io_init_co_signals(
...
@@ -668,89 +457,44 @@ pwr_tStatus io_init_co_signals(
sts
=
gdh_ObjidToPointer
(
area_objid
,
(
void
*
)
&
abs_area_op
);
sts
=
gdh_ObjidToPointer
(
area_objid
,
(
void
*
)
&
abs_area_op
);
if
(
EVEN
(
sts
))
return
sts
;
if
(
EVEN
(
sts
))
return
sts
;
/* Clear pointers to ValueBase */
// Check SigChanCon and put signal in channels SigChanCon
sts
=
gdh_GetClassList
(
pwr_cClass_Co
,
&
sig_objid
);
sts
=
gdh_GetClassList
(
pwr_cClass_Co
,
&
sig_objid
);
while
(
ODD
(
sts
))
while
(
ODD
(
sts
))
{
{
sts
=
gdh_ObjidToPointer
(
sig_objid
,
(
void
*
)
&
sig_op
);
sts
=
gdh_ObjidToName
(
sig_objid
,
buf
,
sizeof
(
buf
),
cdh_mNName
);
if
(
EVEN
(
sts
))
return
sts
;
if
(
EVEN
(
sts
))
return
sts
;
sig_op
->
RawValue
=
NULL
;
sig_op
->
AbsValue
=
NULL
;
sts
=
gdh_GetNextObject
(
sig_objid
,
&
sig_objid
);
}
/* Loop channel objects */
sts
=
gdh_ObjidToPointer
(
sig_objid
,
(
void
*
)
&
sig_op
);
chan_count
=
0
;
sts
=
gdh_GetClassList
(
pwr_cClass_ChanCo
,
&
chan_objid
);
while
(
ODD
(
sts
))
{
sts
=
gdh_ObjidToPointer
(
chan_objid
,
(
void
*
)
&
chan_op
);
if
(
EVEN
(
sts
))
return
sts
;
if
(
EVEN
(
sts
))
return
sts
;
if
(
cdh_ObjidIsNull
(
chan_op
->
SigChanCon
))
if
(
cdh_ObjidIsNull
(
sig_op
->
SigChanCon
))
{
{
errh_Info
(
"IO init: Signal is not connected '%s'"
,
buf
);
sts
=
gdh_ObjidToName
(
chan_objid
,
buf
,
sizeof
(
buf
),
cdh_mNName
);
if
(
EVEN
(
sts
))
return
sts
;
/*
errh_Info("IO init: Channel is not connected '%s'", buf);
*/
sts
=
gdh_GetNextObject
(
chan_objid
,
&
chan_objid
);
continue
;
}
}
sts
=
gdh_ObjidToPointer
(
chan_op
->
SigChanCon
,
(
void
*
)
&
sig_op
);
else
{
if
(
EVEN
(
sts
))
sts
=
gdh_GetObjectClass
(
sig_op
->
SigChanCon
,
&
class
);
{
if
(
EVEN
(
sts
)
||
sts
=
gdh_ObjidToName
(
chan_objid
,
buf
,
sizeof
(
buf
),
cdh_mNName
);
(
class
!=
pwr_cClass_ChanCo
))
{
if
(
EVEN
(
sts
))
return
sts
;
errh_Info
(
"IO init: Signal SigChanCon error '%s'"
,
buf
);
errh_Error
(
"IO init: Channel SigChanCon does not exist '%s'"
,
buf
);
sts
=
gdh_GetNextObject
(
chan_objid
,
&
chan_objid
);
continue
;
}
}
else
{
/* Check that connection is mutual */
sts
=
gdh_ObjidToPointer
(
sig_op
->
SigChanCon
,
(
void
*
)
&
chan_op
);
if
(
cdh_ObjidIsNotEqual
(
chan_objid
,
sig_op
->
SigChanCon
))
if
(
EVEN
(
sts
))
{
{
errh_Info
(
"IO init: Signal SigChanCon error '%s'"
,
buf
);
sts
=
gdh_ObjidToName
(
chan_objid
,
buf
,
sizeof
(
buf
),
cdh_mNName
);
if
(
EVEN
(
sts
))
return
sts
;
errh_Error
(
"IO init: Channel connection is not mutual '%s'"
,
buf
);
sts
=
gdh_GetNextObject
(
chan_objid
,
&
chan_objid
);
continue
;
}
}
else
gdh_StoreRtdbPointer
(
(
pwr_tUInt32
*
)
&
sig_op
->
RawValue
,
chan_op
->
SigChanCon
=
sig_objid
;
&
area_op
->
Value
[
chan_count
]);
gdh_StoreRtdbPointer
(
(
pwr_tUInt32
*
)
&
sig_op
->
AbsValue
,
&
abs_area_op
->
Value
[
chan_count
]);
sig_op
->
ValueIndex
=
chan_count
;
chan_count
++
;
sts
=
gdh_GetNextObject
(
chan_objid
,
&
chan_objid
);
}
}
/* Initiate remaining signals */
sts
=
gdh_GetClassList
(
pwr_cClass_Co
,
&
sig_objid
);
while
(
ODD
(
sts
))
{
sts
=
gdh_ObjidToPointer
(
sig_objid
,
(
void
*
)
&
sig_op
);
if
(
EVEN
(
sts
))
return
sts
;
if
(
sig_op
->
RawValue
==
NULL
)
{
sts
=
gdh_ObjidToName
(
sig_objid
,
buf
,
sizeof
(
buf
),
cdh_mNName
);
if
(
EVEN
(
sts
))
return
sts
;
errh_Info
(
"IO init: Signal is not connected '%s'"
,
buf
);
gdh_StoreRtdbPointer
(
(
pwr_tUInt32
*
)
&
sig_op
->
RawValue
,
&
area_op
->
Value
[
chan_count
]);
gdh_StoreRtdbPointer
(
(
pwr_tUInt32
*
)
&
sig_op
->
AbsValue
,
&
abs_area_op
->
Value
[
chan_count
]);
sig_op
->
ValueIndex
=
chan_count
;
chan_count
++
;
}
}
gdh_StoreRtdbPointer
(
(
pwr_tUInt32
*
)
&
sig_op
->
RawValue
,
&
area_op
->
Value
[
sig_count
]);
gdh_StoreRtdbPointer
(
(
pwr_tUInt32
*
)
&
sig_op
->
AbsValue
,
&
abs_area_op
->
Value
[
sig_count
]);
sig_op
->
ValueIndex
=
sig_count
;
sig_count
++
;
sts
=
gdh_GetNextObject
(
sig_objid
,
&
sig_objid
);
sts
=
gdh_GetNextObject
(
sig_objid
,
&
sig_objid
);
}
}
/* Store number of C
O
in node object */
/* Store number of C
o
in node object */
io_op
->
CoCount
=
chan
_count
;
io_op
->
CoCount
=
sig
_count
;
return
IO__SUCCESS
;
return
IO__SUCCESS
;
}
}
...
@@ -891,6 +635,205 @@ io_init_dv_signals (
...
@@ -891,6 +635,205 @@ io_init_dv_signals (
return
sts
;
return
sts
;
}
}
/*----------------------------------------------------------------------------*\
Initialization of Ii signals and channels.
\*----------------------------------------------------------------------------*/
pwr_tStatus
io_init_ii_signals
(
pwr_sClass_IOHandler
*
io_op
)
{
pwr_tStatus
sts
;
pwr_tObjid
area_objid
;
pwr_sClass_IiArea
*
area_op
;
pwr_sClass_Ii
*
sig_op
;
pwr_sClass_ChanIi
*
chan_op
;
pwr_tObjid
sig_objid
;
char
buf
[
140
];
pwr_tUInt32
sig_count
=
0
;
pwr_tClassId
class
;
// Get pointer to area-object
sts
=
gdh_NameToObjid
(
"pwrNode-active-io-ii"
,
&
area_objid
);
if
(
EVEN
(
sts
))
return
sts
;
sts
=
gdh_ObjidToPointer
(
area_objid
,
(
void
*
)
&
area_op
);
if
(
EVEN
(
sts
))
return
sts
;
// Check SigChanCon and put signal in channels SigChanCon
sts
=
gdh_GetClassList
(
pwr_cClass_Ii
,
&
sig_objid
);
while
(
ODD
(
sts
))
{
sts
=
gdh_ObjidToName
(
sig_objid
,
buf
,
sizeof
(
buf
),
cdh_mNName
);
if
(
EVEN
(
sts
))
return
sts
;
sts
=
gdh_ObjidToPointer
(
sig_objid
,
(
void
*
)
&
sig_op
);
if
(
EVEN
(
sts
))
return
sts
;
if
(
cdh_ObjidIsNull
(
sig_op
->
SigChanCon
))
{
errh_Info
(
"IO init: Signal is not connected '%s'"
,
buf
);
}
else
{
sts
=
gdh_GetObjectClass
(
sig_op
->
SigChanCon
,
&
class
);
if
(
EVEN
(
sts
)
||
(
class
!=
pwr_cClass_ChanIi
))
{
errh_Info
(
"IO init: Signal SigChanCon error '%s'"
,
buf
);
}
else
{
sts
=
gdh_ObjidToPointer
(
sig_op
->
SigChanCon
,
(
void
*
)
&
chan_op
);
if
(
EVEN
(
sts
))
{
errh_Info
(
"IO init: Signal SigChanCon error '%s'"
,
buf
);
}
else
chan_op
->
SigChanCon
=
sig_objid
;
}
}
gdh_StoreRtdbPointer
(
(
pwr_tUInt32
*
)
&
sig_op
->
ActualValue
,
&
area_op
->
Value
[
sig_count
]);
sig_op
->
ValueIndex
=
sig_count
;
sig_count
++
;
sts
=
gdh_GetNextObject
(
sig_objid
,
&
sig_objid
);
}
/* Store number of Ii in node object */
io_op
->
IiCount
=
sig_count
;
return
IO__SUCCESS
;
}
/*----------------------------------------------------------------------------*\
Initialization of io signals and channels.
\*----------------------------------------------------------------------------*/
pwr_tStatus
io_init_io_signals
(
pwr_sClass_IOHandler
*
io_op
)
{
pwr_tStatus
sts
;
pwr_tObjid
area_objid
;
pwr_sClass_IoArea
*
area_op
;
pwr_sClass_Io
*
sig_op
;
pwr_sClass_ChanIo
*
chan_op
;
pwr_tObjid
sig_objid
;
char
buf
[
140
];
pwr_tUInt32
sig_count
=
0
;
pwr_tClassId
class
;
// Get pointer to area-object
sts
=
gdh_NameToObjid
(
"pwrNode-active-io-io"
,
&
area_objid
);
if
(
EVEN
(
sts
))
return
sts
;
sts
=
gdh_ObjidToPointer
(
area_objid
,
(
void
*
)
&
area_op
);
if
(
EVEN
(
sts
))
return
sts
;
// Check SigChanCon and put signal in channels SigChanCon
sts
=
gdh_GetClassList
(
pwr_cClass_Io
,
&
sig_objid
);
while
(
ODD
(
sts
))
{
sts
=
gdh_ObjidToName
(
sig_objid
,
buf
,
sizeof
(
buf
),
cdh_mNName
);
if
(
EVEN
(
sts
))
return
sts
;
sts
=
gdh_ObjidToPointer
(
sig_objid
,
(
void
*
)
&
sig_op
);
if
(
EVEN
(
sts
))
return
sts
;
if
(
cdh_ObjidIsNull
(
sig_op
->
SigChanCon
))
{
errh_Info
(
"IO init: Signal is not connected '%s'"
,
buf
);
}
else
{
sts
=
gdh_GetObjectClass
(
sig_op
->
SigChanCon
,
&
class
);
if
(
EVEN
(
sts
)
||
(
class
!=
pwr_cClass_ChanIo
))
{
errh_Info
(
"IO init: Signal SigChanCon error '%s'"
,
buf
);
}
else
{
sts
=
gdh_ObjidToPointer
(
sig_op
->
SigChanCon
,
(
void
*
)
&
chan_op
);
if
(
EVEN
(
sts
))
{
errh_Info
(
"IO init: Signal SigChanCon error '%s'"
,
buf
);
}
else
chan_op
->
SigChanCon
=
sig_objid
;
}
}
gdh_StoreRtdbPointer
(
(
pwr_tUInt32
*
)
&
sig_op
->
ActualValue
,
&
area_op
->
Value
[
sig_count
]);
sig_op
->
ValueIndex
=
sig_count
;
sig_count
++
;
sts
=
gdh_GetNextObject
(
sig_objid
,
&
sig_objid
);
}
/* Store number of Io in node object */
io_op
->
IoCount
=
sig_count
;
return
IO__SUCCESS
;
}
/*----------------------------------------------------------------------------*\
Initialization of iv signals.
\*----------------------------------------------------------------------------*/
static
pwr_tStatus
io_init_iv_signals
(
pwr_sClass_IOHandler
*
io_op
)
{
pwr_tObjid
area_objid
;
pwr_tObjid
oid
;
pwr_sClass_IvArea
*
area_op
;
pwr_sClass_Iv
*
o
;
pwr_tStatus
sts
;
pwr_tBoolean
*
p
;
pwr_tInt32
iv_count
=
0
;
pwr_sClass_IvArea
*
iarea_op
;
/* Get pointer to area-object */
sts
=
gdh_NameToObjid
(
"pwrNode-active-io-iv"
,
&
area_objid
);
if
(
EVEN
(
sts
))
return
sts
;
sts
=
gdh_ObjidToPointer
(
area_objid
,
(
void
*
)
&
area_op
);
if
(
EVEN
(
sts
))
return
sts
;
/* Get pointer to area-object */
sts
=
gdh_NameToObjid
(
"pwrNode-active-io-iv_init"
,
&
area_objid
);
if
(
EVEN
(
sts
))
return
sts
;
sts
=
gdh_ObjidToPointer
(
area_objid
,
(
void
*
)
&
iarea_op
);
if
(
EVEN
(
sts
))
return
sts
;
p
=
area_op
->
Value
;
/* Loop Iv-object */
sts
=
gdh_GetClassList
(
pwr_cClass_Iv
,
&
oid
);
if
(
EVEN
(
sts
)
&&
sts
!=
GDH__NOSUCHOBJ
&&
sts
!=
GDH__BADOBJTYPE
&&
sts
!=
GDH__NO_TYPE
)
{
errh_Error
(
"Get class list of Iv
\n
%m"
,
sts
);
}
while
(
ODD
(
sts
))
{
sts
=
gdh_ObjidToPointer
(
oid
,
(
void
*
)
&
o
);
if
(
EVEN
(
sts
)
&&
sts
!=
GDH__NO_TYPE
)
return
sts
;
if
(
sts
!=
GDH__REMOTE
)
{
gdh_StoreRtdbPointer
(
(
pwr_tUInt32
*
)
&
o
->
ActualValue
,
p
);
o
->
ValueIndex
=
iv_count
;
#if 0
*p = o->InitialValue;
#endif
gdh_StoreRtdbPointer
(
(
pwr_tInt32
*
)
&
iarea_op
->
Value
[
iv_count
],
&
o
->
InitialValue
);
iv_count
++
;
p
++
;
}
sts
=
gdh_GetNextObject
(
oid
,
&
oid
);
if
(
EVEN
(
sts
)
&&
sts
!=
GDH__NO_TYPE
)
return
sts
;
}
if
(
sts
==
GDH__NO_TYPE
||
sts
==
GDH__NOSUCHOBJ
||
sts
==
GDH__BADOBJTYPE
)
sts
=
IO__SUCCESS
;
io_op
->
IvCount
=
iv_count
;
return
sts
;
}
/*----------------------------------------------------------------------------*\
/*----------------------------------------------------------------------------*\
Initialize io handler object.
Initialize io handler object.
...
@@ -1007,6 +950,15 @@ pwr_tStatus io_init_signals( void)
...
@@ -1007,6 +950,15 @@ pwr_tStatus io_init_signals( void)
sts
=
io_init_av_signals
(
io_op
);
sts
=
io_init_av_signals
(
io_op
);
if
(
EVEN
(
sts
))
return
sts
;
if
(
EVEN
(
sts
))
return
sts
;
sts
=
io_init_ii_signals
(
io_op
);
if
(
EVEN
(
sts
))
return
sts
;
sts
=
io_init_io_signals
(
io_op
);
if
(
EVEN
(
sts
))
return
sts
;
sts
=
io_init_iv_signals
(
io_op
);
if
(
EVEN
(
sts
))
return
sts
;
sts
=
io_init_iohandler_object
();
sts
=
io_init_iohandler_object
();
if
(
EVEN
(
sts
))
return
sts
;
if
(
EVEN
(
sts
))
return
sts
;
...
...
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