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
d879e4d3
Commit
d879e4d3
authored
Dec 21, 2010
by
Claes
Browse files
Options
Browse Files
Download
Plain Diff
Conflicts merged
parents
7eec87e6
6dc0ef8e
Changes
49
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
49 changed files
with
1960 additions
and
73 deletions
+1960
-73
opc/exe/opc_server/src/opc_server.cpp
opc/exe/opc_server/src/opc_server.cpp
+6
-2
otherio/lib/rt/src/os_linux/rt_io_m_usb_agent.c
otherio/lib/rt/src/os_linux/rt_io_m_usb_agent.c
+2
-2
otherio/lib/rt/src/os_linux/rt_io_m_velleman_k8055_board.c
otherio/lib/rt/src/os_linux/rt_io_m_velleman_k8055_board.c
+4
-4
remote/changelog.txt
remote/changelog.txt
+1
-0
remote/exe/rs_remote_mq/src/os_templ/link_rule.mk
remote/exe/rs_remote_mq/src/os_templ/link_rule.mk
+2
-1
remote/exe/rs_remote_wmq/src/os_templ/hw_templ/makefile
remote/exe/rs_remote_wmq/src/os_templ/hw_templ/makefile
+12
-0
remote/exe/rs_remote_wmq/src/os_templ/link_rule.mk
remote/exe/rs_remote_wmq/src/os_templ/link_rule.mk
+12
-0
remote/exe/rs_remote_wmq/src/rs_remote_wmq.c
remote/exe/rs_remote_wmq/src/rs_remote_wmq.c
+437
-0
remote/exe/rs_remotehandler/src/rs_remotehandler.c
remote/exe/rs_remotehandler/src/rs_remotehandler.c
+26
-0
remote/wbl/remote/src/remote_c_remnodewmq.wb_load
remote/wbl/remote/src/remote_c_remnodewmq.wb_load
+199
-0
src/doc/man/en_us/man_dg.dat
src/doc/man/en_us/man_dg.dat
+4
-3
src/doc/man/en_us/man_iog.odt
src/doc/man/en_us/man_iog.odt
+0
-0
src/doc/man/en_us/man_iog.pdf
src/doc/man/en_us/man_iog.pdf
+0
-0
src/doc/man/sv_se/man_dg.dat
src/doc/man/sv_se/man_dg.dat
+4
-3
src/doc/man/sv_se/man_iog.odt
src/doc/man/sv_se/man_iog.odt
+0
-0
src/doc/man/sv_se/man_iog.pdf
src/doc/man/sv_se/man_iog.pdf
+0
-0
src/lib/rt/src/rt_gdh.c
src/lib/rt/src/rt_gdh.c
+3
-0
src/msg/rt/src/rt_io_msg.msg
src/msg/rt/src/rt_io_msg.msg
+2
-0
src/tools/pwre/src/os_linux/pwre_configure.sh
src/tools/pwre/src/os_linux/pwre_configure.sh
+35
-4
wb/exe/wb/gtk/os_templ/link_rule.mk
wb/exe/wb/gtk/os_templ/link_rule.mk
+2
-2
wb/exe/wb/motif/os_templ/link_rule.mk
wb/exe/wb/motif/os_templ/link_rule.mk
+2
-2
wb/exe/wb_adm/src/os_templ/link_rule.mk
wb/exe/wb_adm/src/os_templ/link_rule.mk
+2
-1
wb/exe/wb_cmd/gtk/os_templ/link_rule.mk
wb/exe/wb_cmd/gtk/os_templ/link_rule.mk
+1
-1
wb/exe/wb_cmd/motif/os_templ/link_rule.mk
wb/exe/wb_cmd/motif/os_templ/link_rule.mk
+1
-1
wb/exe/wb_dbcheck/src/os_templ/link_rule.mk
wb/exe/wb_dbcheck/src/os_templ/link_rule.mk
+2
-1
wb/exe/wb_ldlist/src/os_templ/link_rule.mk
wb/exe/wb_ldlist/src/os_templ/link_rule.mk
+2
-1
wb/exe/wb_upgrade/src/os_templ/link_rule.mk
wb/exe/wb_upgrade/src/os_templ/link_rule.mk
+2
-1
wb/exe/wb_wbltest/src/os_templ/link_rule.mk
wb/exe/wb_wbltest/src/os_templ/link_rule.mk
+4
-2
wb/exp/wb/src/pwr_wb_palette.cnf
wb/exp/wb/src/pwr_wb_palette.cnf
+2
-1
wb/lib/wb/gtk/wb_nav_gtk.cpp
wb/lib/wb/gtk/wb_nav_gtk.cpp
+15
-8
wb/lib/wb/gtk/wb_nav_gtk.h
wb/lib/wb/gtk/wb_nav_gtk.h
+1
-1
wb/lib/wb/motif/wb_nav_motif.cpp
wb/lib/wb/motif/wb_nav_motif.cpp
+13
-9
wb/lib/wb/motif/wb_nav_motif.h
wb/lib/wb/motif/wb_nav_motif.h
+1
-1
wb/lib/wb/src/wb_foe_dataarithm.c
wb/lib/wb/src/wb_foe_dataarithm.c
+1
-1
wb/lib/wb/src/wb_nav.cpp
wb/lib/wb/src/wb_nav.cpp
+3
-1
wb/lib/wb/src/wb_nav.h
wb/lib/wb/src/wb_nav.h
+1
-1
wb/lib/wb/src/wb_pkg.cpp
wb/lib/wb/src/wb_pkg.cpp
+37
-15
wb/lib/wb/src/wb_pkg.h
wb/lib/wb/src/wb_pkg.h
+2
-0
xtt/exe/wb_ge/gtk/os_templ/link_rule.mk
xtt/exe/wb_ge/gtk/os_templ/link_rule.mk
+1
-1
xtt/exe/wb_ge/motif/os_templ/link_rule.mk
xtt/exe/wb_ge/motif/os_templ/link_rule.mk
+1
-1
xtt/lib/ge/src/ge_bitmap_limitswitch248.h
xtt/lib/ge/src/ge_bitmap_limitswitch248.h
+6
-0
xtt/lib/ge/src/ge_subpalette.cpp
xtt/lib/ge/src/ge_subpalette.cpp
+2
-0
xtt/lib/ge/src/pwr_ge_setup.dat
xtt/lib/ge/src/pwr_ge_setup.dat
+1
-0
xtt/lib/ge/src/pwr_limitswitch.pwg
xtt/lib/ge/src/pwr_limitswitch.pwg
+319
-0
xtt/lib/ge/src/pwr_limitswitch.pwsg
xtt/lib/ge/src/pwr_limitswitch.pwsg
+233
-0
xtt/lib/ge/src/pwr_limitswitch__p2.pwg
xtt/lib/ge/src/pwr_limitswitch__p2.pwg
+319
-0
xtt/lib/ge/src/pwr_limitswitch__p2.pwsg
xtt/lib/ge/src/pwr_limitswitch__p2.pwsg
+233
-0
xtt/lib/glow/src/glow_ctx.cpp
xtt/lib/glow/src/glow_ctx.cpp
+1
-1
xtt/lib/glow/src/glow_growctx.cpp
xtt/lib/glow/src/glow_growctx.cpp
+1
-1
No files found.
opc/exe/opc_server/src/opc_server.cpp
View file @
d879e4d3
...
...
@@ -64,6 +64,7 @@ class opcsrv_sub {
class
opcsrv_client
{
public:
opcsrv_client
()
:
m_last_time
(
pwr_cNTime
)
{}
int
access
;
pwr_tTime
m_last_time
;
map
<
std
::
string
,
vector
<
opcsrv_sub
>
>
m_sublist
;
...
...
@@ -1623,8 +1624,11 @@ SOAP_FMAC5 int SOAP_FMAC6 __s0__Browse(struct soap *soap, _s0__Browse *s0__Brows
strcpy
(
pname
,
cnv_utf8_to_iso8859
(
pname
,
strlen
(
pname
)
+
1
));
sts
=
gdh_NameToAttrref
(
pwr_cNOid
,
pname
,
&
paref
);
if
(
EVEN
(
sts
))
return
opcsrv
->
fault
(
soap
,
opc_eResultCode_E_UNKNOWNITEMNAME
);
if
(
EVEN
(
sts
))
{
// return opcsrv->fault( soap, opc_eResultCode_E_UNKNOWNITEMNAME);
// Assume that this is an unmounted mount object and return OK
return
SOAP_OK
;
}
sts
=
gdh_GetAttrRefTid
(
&
paref
,
&
cid
);
if
(
EVEN
(
sts
))
...
...
otherio/lib/rt/src/os_linux/rt_io_m_usb_agent.c
View file @
d879e4d3
...
...
@@ -70,8 +70,8 @@ static pwr_tStatus IoAgentClose( io_tCtx ctx,
}
#else
static
pwr_tStatus
IoAgentInit
(
io_tCtx
ctx
,
io_sAgent
*
ap
)
{
return
0
;}
static
pwr_tStatus
IoAgentClose
(
io_tCtx
ctx
,
io_sAgent
*
ap
)
{
return
0
;}
static
pwr_tStatus
IoAgentInit
(
io_tCtx
ctx
,
io_sAgent
*
ap
)
{
return
IO__RELEASEBUILD
;}
static
pwr_tStatus
IoAgentClose
(
io_tCtx
ctx
,
io_sAgent
*
ap
)
{
return
IO__RELEASEBUILD
;}
#endif
/* Every method should be registred here. */
...
...
otherio/lib/rt/src/os_linux/rt_io_m_velleman_k8055_board.c
View file @
d879e4d3
...
...
@@ -298,10 +298,10 @@ static pwr_tStatus IoCardWrite( io_tCtx ctx,
}
#else
static
pwr_tStatus
IoCardInit
(
io_tCtx
ctx
,
io_sAgent
*
ap
,
io_sRack
*
rp
,
io_sCard
*
cp
)
{
return
0
;}
static
pwr_tStatus
IoCardClose
(
io_tCtx
ctx
,
io_sAgent
*
ap
,
io_sRack
*
rp
,
io_sCard
*
cp
)
{
return
0
;}
static
pwr_tStatus
IoCardRead
(
io_tCtx
ctx
,
io_sAgent
*
ap
,
io_sRack
*
rp
,
io_sCard
*
cp
)
{
return
0
;}
static
pwr_tStatus
IoCardWrite
(
io_tCtx
ctx
,
io_sAgent
*
ap
,
io_sRack
*
rp
,
io_sCard
*
cp
)
{
return
0
;}
static
pwr_tStatus
IoCardInit
(
io_tCtx
ctx
,
io_sAgent
*
ap
,
io_sRack
*
rp
,
io_sCard
*
cp
)
{
return
IO__RELEASEBUILD
;}
static
pwr_tStatus
IoCardClose
(
io_tCtx
ctx
,
io_sAgent
*
ap
,
io_sRack
*
rp
,
io_sCard
*
cp
)
{
return
IO__RELEASEBUILD
;}
static
pwr_tStatus
IoCardRead
(
io_tCtx
ctx
,
io_sAgent
*
ap
,
io_sRack
*
rp
,
io_sCard
*
cp
)
{
return
IO__RELEASEBUILD
;}
static
pwr_tStatus
IoCardWrite
(
io_tCtx
ctx
,
io_sAgent
*
ap
,
io_sRack
*
rp
,
io_sCard
*
cp
)
{
return
IO__RELEASEBUILD
;}
#endif
/* Every method should be registred here. */
...
...
remote/changelog.txt
View file @
d879e4d3
#060227 cs - Changelog created.
070528 cs logg Env variable allowed in remotelogg filename.
071115 rk tcpip Fixed several bugs when acting as server.
101216 rk wmq Added functionality for handling Websphere MQ as remote node.
remote/exe/rs_remote_mq/src/os_templ/link_rule.mk
View file @
d879e4d3
...
...
@@ -4,7 +4,8 @@ link_rule_mk := 1
ifeq
($(pwre_conf_mq),1)
link
=
$(ldxx)
$(elinkflags)
$(domap)
-o
$(export_exe)
\
$(export_obj)
$(objects)
$(rt_msg_eobjs)
\
$(pwre_conf_libdir)
$(pwre_conf_libpwrremote)
$(pwre_conf_libpwrrt)
$(pwre_conf_lib)
$(pwre_conf_libdir)
$(pwre_conf_libpwrremote)
$(pwre_conf_libpwrrt)
\
$(pwre_conf_libmq)
$(pwre_conf_lib)
else
link
=
echo
"Mq not installed"
endif
...
...
remote/exe/rs_remote_wmq/src/os_templ/hw_templ/makefile
0 → 100644
View file @
d879e4d3
include
$(pwre_dir_symbols)
-include
$(pwre_kroot)/tools/bld/src/$(os_name)/$(hw_name)/$(type_name)_generic.mk
ifeq
($($(type_name)_generic_mk),)
-include
$(pwre_kroot)/tools/bld/src/$(os_name)/$(type_name)_generic.mk
endif
ifeq
($($(type_name)_generic_mk),)
include
$(pwre_kroot)/tools/bld/src/$(type_name)_generic.mk
endif
remote/exe/rs_remote_wmq/src/os_templ/link_rule.mk
0 → 100644
View file @
d879e4d3
ifndef
link_rule_mk
link_rule_mk
:=
1
ifeq
($(PWRE_CONF_WMQ),1)
link
=
$(ldxx)
$(elinkflags)
$(domap)
-o
$(export_exe)
\
$(export_obj)
$(objects)
$(rt_msg_eobjs)
\
$(pwre_conf_libdir)
$(pwre_conf_libpwrremote)
$(pwre_conf_libpwrrt)
\
$(pwre_conf_libwmq)
$(pwre_conf_lib)
else
link
=
echo
"WMQ not installed"
endif
endif
remote/exe/rs_remote_wmq/src/rs_remote_wmq.c
0 → 100644
View file @
d879e4d3
This diff is collapsed.
Click to expand it.
remote/exe/rs_remotehandler/src/rs_remotehandler.c
View file @
d879e4d3
...
...
@@ -43,6 +43,7 @@
* 040303 J Nylund ndrat till omgivningsvariabel
* i skvgarna till exe-filerna
* 040422 C Jurstrand 4.0.0
* 101209 R Karlsson Adderat std fr Websphere MQ
*
* Description:
* Start and control of transportprocesses for remote communication
...
...
@@ -111,6 +112,7 @@ static void AddTransports()
pwr_tObjid
objid
;
pwr_tAddress
objref
;
pwr_tStatus
sts
;
pwr_tUInt32
id
=
1
;
/* Init transport (process) counter */
tpcount
=
0
;
...
...
@@ -118,6 +120,30 @@ static void AddTransports()
/* Initialize transport vector with 0's */
memset
(
&
tp
,
0
,
sizeof
(
tp
));
/* Get and configure all WMQ remnodes, one process for each remnode */
sts
=
gdh_GetClassList
(
pwr_cClass_RemnodeWMQ
,
&
objid
);
while
(
ODD
(
sts
))
{
sts
=
gdh_ObjidToPointer
(
objid
,
&
objref
);
sprintf
(
tp
[
tpcount
].
path
,
"rs_remote_wmq"
);
tp
[
tpcount
].
id
=
id
++
;
tp
[
tpcount
].
disable
=
&
((
pwr_sClass_RemnodeWMQ
*
)
objref
)
->
Disable
;
tp
[
tpcount
].
restart_limit
=
&
((
pwr_sClass_RemnodeWMQ
*
)
objref
)
->
RestartLimit
;
tp
[
tpcount
].
restarts
=
&
((
pwr_sClass_RemnodeWMQ
*
)
objref
)
->
RestartCount
;
((
pwr_sClass_RemnodeWMQ
*
)
objref
)
->
RestartCount
=
0
;
tp
[
tpcount
].
objid
=
objid
;
tp
[
tpcount
].
objref
=
objref
;
tp
[
tpcount
].
classid
=
pwr_cClass_RemnodeWMQ
;
tp
[
tpcount
].
cpid
=
-
1
;
tp
[
tpcount
].
first
=
true
;
remcfgp
->
RemNodeObjects
[
tpcount
]
=
objid
;
tpcount
++
;
sts
=
gdh_GetNextObject
(
objid
,
&
objid
);
}
/* Get and configure all MQ remnodes, one process for each remnode */
sts
=
gdh_GetClassList
(
pwr_cClass_RemnodeMQ
,
&
objid
);
...
...
remote/wbl/remote/src/remote_c_remnodewmq.wb_load
0 → 100644
View file @
d879e4d3
!
! Proview $Id: remote_c_remnodemq.wb_load,v 1.1 2006-01-12 06:39:33 claes Exp $
! Copyright (C) 2005 SSAB Oxelsund AB.
!
! This program is free software; you can redistribute it and/or
! modify it under the terms of the GNU General Public License as
! published by the Free Software Foundation, either version 2 of
! the License, or (at your option) any later version.
!
! This program is distributed in the hope that it will be useful
! but WITHOUT ANY WARRANTY; without even the implied warranty of
! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
! GNU General Public License for more details.
!
! You should have received a copy of the GNU General Public License
! along with the program, if not, write to the Free Software
! Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
!
! remote_c_remnodewmq.wb_load -- Defines the class RemnodeWMQ.
!
SObject Remote:Class
!/**
! @Version 1.0
! @Group Servers,NodeConfiguration
! @Summary Configures communication through a message queue using Webspere MQ.
! Configures communication through a message queue using Websphere MQ as a client.
! All regarding Server, channel, queue manager and queues to connect to is configured
! in the RemonodeWMQ-object.
! Configurations for the different messages is configured in the RemtTrans-object that define
! each in- and outgoing message. For each RemTrans-message the following can be configured:
!
! TransName - a string that defines the MsgId (message identity of the message).
! Address[0] - defines whether the message should be sent as a persistent message or not.
! 1 means that the message will be sent as a persistent message. 0 not.
!
! @b Object graph
! @image orm_remnodewmq_og.gif
!
! @b See also
! @classlink RemoteConfig pwrp_remoteconfig.html
! @classlink RemTrans ssab_remtrans.html
!*/
Object RemnodeWMQ $ClassDef 33
Body SysBody
Attr Editor = pwr_eEditor_AttrEd
Attr Method = pwr_eMethod_Standard
Attr PopEditor = 2
EndBody
Object RtBody $ObjBodyDef 1
Body SysBody
Attr StructName = "RemnodeWMQ"
EndBody
!/**
! Optional description.
!*/
Object Description $Attribute 1
Body SysBody
Attr TypeRef = "pwrs:Type-$String80"
EndBody
EndObject
!/**
! Process priority for the transport process. For future use.
!*/
Object Prio $Attribute 2
Body SysBody
Attr TypeRef = "pwrs:Type-$Int32"
EndBody
EndObject
!/**
! Name of Queue Manager to connect to.
! Server to connect to is defined by enviroment variable MQSERVER.
! export MQSERVER=<ChannelName>/<TransportType>/<ConnectionName>[(port)]
! For example:
! export MQSERVER=CHANNEL1/TCP/192.168.40.20(2020)
! The port is by default 1414 and will be used if no port is given.
!*/
Object QueueManager $Attribute 3
Body SysBody
Attr TypeRef = "pwrs:Type-$String80"
EndBody
EndObject
!/**
! Name of WMQ queue for all incoming messages.
!*/
Object RcvQueue $Attribute 4
Body SysBody
Attr TypeRef = "pwrs:Type-$String80"
EndBody
EndObject
!/**
! Name of WMQ queue for all outgoing messages.
!*/
Object SndQueue $Attribute 5
Body SysBody
Attr TypeRef = "pwrs:Type-$String80"
EndBody
EndObject
!/**
! Scantime in seconds for outgoing RemTrans messages.
! Dynamic change is possible.
!*/
Object ScanTime $Attribute 6
Body SysBody
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndObject
!/**
! When set, this attribute tells the remote handler not to start
! or restart the process that handles this remote node. If the transport process
! is running while the attribute is set it will terminate. This can be used to force
! a restart of the process.
!*/
Object Disable $Attribute 7
Body SysBody
Attr TypeRef = "pwrs:Type-$Boolean"
EndBody
EndObject
!/**
! This attribute shows how many times the remote handler has restarted the
! transport process that handles this remnode.
! Dynamic change is possible and can be used in order to earn more restarts.
!*/
Object RestartCount $Attribute 8
Body SysBody
Attr TypeRef = "pwrs:Type-$UInt32"
Attr Flags |= PWR_MASK_STATE
Attr Flags |= PWR_MASK_NOEDIT
Attr Flags |= PWR_MASK_INVISIBLE
EndBody
EndObject
!/**
! The restart limit tells the remote handler how many times the transport process
! that handle this remnode can be restarted.
! Dynamic change is possible and can be used in order to earn more restarts.
!*/
Object RestartLimit $Attribute 9
Body SysBody
Attr TypeRef = "pwrs:Type-$UInt32"
EndBody
EndObject
!/**
! The restart time is set by the transport process at startup and therefore
! shows the latest (re)starttime.
!*/
Object RestartTime $Attribute 10
Body SysBody
Attr TypeRef = "pwrs:Type-$Time"
Attr Flags |= PWR_MASK_STATE
Attr Flags |= PWR_MASK_NOEDIT
Attr Flags |= PWR_MASK_INVISIBLE
EndBody
EndObject
!/**
! Error counter.
!*/
Object ErrCount $Attribute 11
Body SysBody
Attr TypeRef = "pwrs:Type-$UInt32"
Attr Flags |= PWR_MASK_STATE
Attr Flags |= PWR_MASK_NOEDIT
Attr Flags |= PWR_MASK_INVISIBLE
EndBody
EndObject
!/**
! Type of remnode. Used in the RemoteConfig classgraph.
!*/
Object Id $Attribute 12
Body SysBody
Attr TypeRef = "pwrs:Type-$String8"
Attr Flags |= PWR_MASK_INVISIBLE
EndBody
EndObject
!/**
! Contains the objid for the RemTrans objects for this remnode.
! The objid's are inserted by the remote process.
!*/
Object RemTransObjects $Attribute 13
Body SysBody
Attr TypeRef = "pwrs:Type-$Objid"
Attr Flags |= PWR_MASK_STATE
Attr Flags |= PWR_MASK_INVISIBLE
Attr Flags |= PWR_MASK_ARRAY
Attr Elements = 25
EndBody
EndObject
EndObject
Object Template RemnodeWMQ
Body RtBody
Attr Prio = 15
Attr Disable = 0
Attr RestartCount = 0
Attr RestartLimit = 100
Attr ScanTime = 0.1
Attr Id = "WMQ"
EndBody
EndObject
EndObject
EndSObject
src/doc/man/en_us/man_dg.dat
View file @
d879e4d3
...
...
@@ -1730,7 +1730,7 @@ This file (if it exists) will be used as the link options when I build the plc-p
Proview by default links against some libraries and object-files. If you have your own
opt-file you need to include these. A default opt-file would look like:
<c>$pwr_obj/rt_io_user.o -lpwr_rt -lpwr_usbio_dummy
<c>$pwr_obj/rt_io_user.o -lpwr_rt -lpwr_usbio_dummy
-lpwr_usb_dummy -lpwr_pnak_dummy
Add your own libraries at will. The syntax to use is the sytax for ld (The GNU linker). Proview
will create a template option file .opt_template that can be renamed to .opt and used as a template.
...
...
@@ -2196,7 +2196,8 @@ plc_'nodename'_'qbus'.opt, for example
The following line is inserted into this file
<c>$pwr_obj/rt_io_user.o $pwrp_obj/ra_myfunction.o -lpwr_rt -lpwr_usbio_dummy
<c>$pwr_obj/rt_io_user.o $pwrp_obj/ra_myfunction.o -lpwr_rt -lpwr_usbio_dummy \
<c>-lpwr_usb_dummy -lpwr_pnak_dummmy
We kan now build the node and startup Proview runtime.
...
...
@@ -6830,7 +6831,7 @@ e.g. plc_mynode_0999.opt. The content of the file is input to the linker, ld, an
add the modules of the plc-code. In the example below these modules are placed in the archive
$pwrp_lib/libpwrp.a
<c>$pwr_obj/rt_io_user.o -lpwrp
<c>$pwr_obj/rt_io_user.o -lpwrp
-lpwr_rt -lpwr_usbio_dummy -lpwr_usb_dummy -lpwr_pnak_dummy
...
...
src/doc/man/en_us/man_iog.odt
View file @
d879e4d3
No preview for this file type
src/doc/man/en_us/man_iog.pdf
View file @
d879e4d3
No preview for this file type
src/doc/man/sv_se/man_dg.dat
View file @
d879e4d3
...
...
@@ -1718,7 +1718,7 @@ Den
länkningen av plc-programmet. Några bibliotek och objektsmoduler måste finnas med, och
en default option-fil ska se ut så här:
<c>$pwr_obj/rt_io_user.o -lpwr_rt -lpwr_usbio_dummy
<c>$pwr_obj/rt_io_user.o -lpwr_rt -lpwr_usbio_dummy
-lpwr_usb_dummy -lpwr_pnak_dummy
Till detta adderas de bibliotek och moduler som behövs. Syntaxen är den som gäller för ld
(The GNU linker). Proview genererar en template option-fil .opt_template som kan användas som
...
...
@@ -2176,7 +2176,8 @@ plc_'nodename'_'qbus'.opt, t ex
I denna läggs följande rad in
<c>$pwr_obj/rt_io_user.o $pwrp_obj/ra_myfunction.o -lpwr_rt -lpwr_usbio_dummy
<c>$pwr_obj/rt_io_user.o $pwrp_obj/ra_myfunction.o -lpwr_rt -lpwr_usbio_dummy -lpwr_usb_dummy \
<c> -lpwr_pnak_dummy
Vi kan nu bygga noden och starta Proview runtime.
...
...
@@ -6744,7 +6745,7 @@ plc_mynode_0999.opt. Inneh
lägger även in modulerna för plc-koden. I exemplet nedan antas att dessa moduler ligger i
arkivet $pwrp_lib/libpwrp.a.
<c>$pwr_obj/rt_io_user.o -lpwrp
<c>$pwr_obj/rt_io_user.o -lpwrp
-lpwr_rt -lpwr_usbio_dummy -lpwr_usb_dummy -lpwr_pnak_dummy
</topic>
...
...
src/doc/man/sv_se/man_iog.odt
View file @
d879e4d3
No preview for this file type
src/doc/man/sv_se/man_iog.pdf
View file @
d879e4d3
No preview for this file type
src/lib/rt/src/rt_gdh.c
View file @
d879e4d3
...
...
@@ -2621,6 +2621,7 @@ gdh_SetObjectInfoAttrref (
}
/* Try remote. */
sts
=
GDH__SUCCESS
;
vp
=
pool_Address
(
NULL
,
gdbroot
->
pool
,
ap
->
op
->
l
.
vr
);
np
=
pool_Address
(
NULL
,
gdbroot
->
pool
,
vp
->
l
.
nr
);
...
...
@@ -2656,6 +2657,8 @@ gdh_SetObjectInfoAttrref (
rarp
=
ndc_NarefToRaref
(
&
sts
,
ap
,
arp
,
ccp
,
&
ridx
,
&
raref
,
&
equal
,
NULL
,
ccpLocked
,
vp
,
np
);
}
else
equal
=
ap
->
op
->
u
.
c
.
flags
.
b
.
classEqual
;
break
;
...
...
src/msg/rt/src/rt_io_msg.msg
View file @
d879e4d3
...
...
@@ -101,6 +101,8 @@ replaced <Symbol is replaced> /info
normal <Normal operating state> /succ
initfail <Initialization failed> /error
nodevice <Device not found> /error
releasebuild <I/O system is not built with this release> /error
dummybuild <Archive for I/O system is not linked with this executable> /error
.end
src/tools/pwre/src/os_linux/pwre_configure.sh
View file @
d879e4d3
...
...
@@ -56,7 +56,20 @@ pwre_config_check_include()
echo
"...Checking No
$1
"
fi
}
#
# Search for archive and insert in list
#
# Arguments
# 1: archive name
# 2: define name (PWRE_CONF_$2 will be defined)
# 3: special archives for gtk and motif (lib, gtk, motif)
# 4: variable to insert archive in (rt, wb, gtk, motif)
# 5: if 1, add -DPWRE_CONF_$2 to cc command.
# 6: search list for archive.
# Examples
# pwre_config_check_lib libm LIBM lib lib 0 /usr/lib/libm.so:/usr/lib/libm.a
# pwre_config_check_lib gtk GTK gtk gtk 0 /usr/lib/libgtk-x11-2.0.so
#
pwre_config_check_lib
()
{
let
i
=
0
...
...
@@ -96,6 +109,12 @@ pwre_config_check_lib()
conf_libgtk
=
$conf_libgtk
" -l
${
lib
%.*
}
"
elif
test
$4
==
"motif"
;
then
conf_libmotif
=
$conf_libmotif
" -l
${
lib
%.*
}
"
elif
test
$4
==
"wb"
;
then
conf_libwb
=
$conf_libwb
" -l
${
lib
%.*
}
"
elif
test
$4
==
"mq"
;
then
conf_libmq
=
$conf_libmq
" -l
${
lib
%.*
}
"
elif
test
$4
==
"wmq"
;
then
conf_libwmq
=
$conf_libwmq
" -l
${
lib
%.*
}
"
else
conf_lib
=
$conf_lib
" -l
${
lib
%.*
}
"
fi
...
...
@@ -184,6 +203,9 @@ dos=`eval echo ${pwre_os} | tr [:lower:] [:upper:]`
dhw
=
`
eval echo
${
pwre_hw
}
|
tr
[
:lower:]
[
:upper:]
`
conf_cc_define
=
"-D
$dos
=1 -D
$dhw
=1 -DOS=
${
pwre_os
:3
}
-DHW=
${
pwre_hw
:3
}
-D_
${
dos
:3
}
"
conf_lib
=
""
conf_libwb
=
""
conf_libmq
=
""
conf_libwmq
=
""
conf_libgtk
=
""
conf_libmotif
=
""
conf_libdir
=
""
...
...
@@ -267,6 +289,9 @@ if test $pwre_hw == "hw_arm"; then
echo
"export pwre_conf_libpwrtlog=
\"
-lpwr_tlog
\"
"
>>
$cfile
echo
"export pwre_conf_libpwrsev=
\"
-lpwr_sev
\"
"
>>
$cfile
echo
"export pwre_conf_lib=
\"
-lpthread -lm -lrt -lcrypt
\"
"
>>
$cfile
echo
"export pwre_conf_libwb=
\"
$conf_libwb
\"
"
>>
$cfile
echo
"export pwre_conf_libmq=
\"
$conf_libmq
\"
"
>>
$cfile
echo
"export pwre_conf_libwmq=
\"
$conf_libwmq
\"
"
>>
$cfile
echo
"export pwre_conf_libgtk=
\"
$conf_libgtk
\"
"
>>
$cfile
echo
"export pwre_conf_libmotif=
\"
$conf_libmotif
\"
"
>>
$cfile
echo
"export pwre_conf_libdir=
\"
$conf_libdir
\"
"
>>
$cfile
...
...
@@ -279,16 +304,18 @@ else
pwre_config_check_lib gtk GTK gtk gtk 0 /usr/lib/libgtk-x11-2.0.so
pwre_config_check_lib motif MRM motif motif 0 /usr/lib/libMrm.so
pwre_config_check_lib libantlr LIBANTLR lib
li
b 0 /usr/local/lib/libantlr.a
pwre_config_check_lib libantlr LIBANTLR lib
w
b 0 /usr/local/lib/libantlr.a
pwre_config_check_lib librpcsvc LIBRPCSVC lib lib 0 /usr/lib/librpcsvc.so:/usr/lib/librpcsvc.a
pwre_config_check_lib libasound LIBASOUND lib lib 0 /usr/lib/libasound.so:/usr/lib/libasound.a
pwre_config_check_lib libpthread LIBPTHREAD lib lib 0 /usr/lib/libpthread.so:/usr/lib/libpthread.a
pwre_config_check_lib libm LIBM lib lib 0 /usr/lib/libm.so:/usr/lib/libm.a
pwre_config_check_lib libdb_cxx LIBDB_CXX lib lib 0 /usr/lib/libdb_cxx.so
pwre_config_check_lib libdb LIBDB lib lib 0 /usr/lib/libdb.so
pwre_config_check_lib libdb_cxx LIBDB_CXX lib wb 0 /usr/lib/libdb_cxx.so
pwre_config_check_lib libz LIBZ lib lib 0 /usr/lib/libz.so:/usr/lib/libz.a
pwre_config_check_lib libcrypt LIBCRYPT lib lib 0 /usr/lib/libcrypt.so:/usr/lib/libcrypt.a
pwre_config_check_lib mysql MYSQL lib lib 1 /usr/lib/libmysqlclient.so:/usr/lib/mysql/libmysqlclient.so
pwre_config_check_lib mq MQ lib lib 1 /usr/lib/libdmq.so
pwre_config_check_lib mq MQ lib mq 1 /usr/lib/libdmq.so
pwre_config_check_lib wmq WMQ lib wmq 1 /usr/lib/libmqic.so
pwre_config_check_lib libpnioif PNAK lib lib 1 /usr/lib/libpnioif.a:/usr/local/lib/libpnioif.a
pwre_config_check_lib libusb LIBUSB lib lib 1 /usr/lib/libusb-1.0.so
pwre_config_check_lib librt LIBRT lib lib 0 /usr/lib/librt.so:/usr/lib/librt.a
...
...
@@ -301,6 +328,7 @@ else
pwre_config_check_include gtk GTK 1 /usr/local/include/gtk-2.0/gtk.h:/usr/local/include/gtk-2.0/gtk/gtk.h:/usr/include/gtk-2.0/gtk/gtk.h
pwre_config_check_include jni JNI 1
$jdk
/include/jni.h
pwre_config_check_include jni JNI 0
$jdk
/include/linux/jni_md.h
pwre_config_check_include wmq WMQ 1 /opt/mqm/inc/cmqc.h
export
pwre_conf_alsa
=
1
...
...
@@ -336,6 +364,9 @@ else
echo
"export pwre_conf_libpwrtlog=
\"
-lpwr_tlog
\"
"
>>
$cfile
echo
"export pwre_conf_libpwrsev=
\"
-lpwr_sev
\"
"
>>
$cfile
echo
"export pwre_conf_lib=
\"
$conf_lib
\"
"
>>
$cfile
echo
"export pwre_conf_libwb=
\"
$conf_libwb
\"
"
>>
$cfile
echo
"export pwre_conf_libmq=
\"
$conf_libmq
\"
"
>>
$cfile
echo
"export pwre_conf_libwmq=
\"
$conf_libwmq
\"
"
>>
$cfile
echo
"export pwre_conf_libgtk=
\"
$conf_libgtk
\"
"
>>
$cfile
echo
"export pwre_conf_libmotif=
\"
$conf_libmotif
\"
"
>>
$cfile
echo
"export pwre_conf_libdir=
\"
$conf_libdir
\"
"
>>
$cfile
...
...
wb/exe/wb/gtk/os_templ/link_rule.mk
View file @
d879e4d3
...
...
@@ -8,7 +8,7 @@ ifeq ($(export_type),exp)
$(pwre_conf_libdir)
$(pwre_conf_libpwrwbgtk)
$(pwre_conf_libpwrxttgtk)
$(pwre_conf_libpwrwb)
\
$(pwre_conf_libpwrxtt)
$(pwre_conf_libpwrwbgtk)
$(pwre_conf_libpwrwb)
\
$(pwre_conf_libpwrxttgtk)
$(pwre_conf_libpwrxtt)
$(pwre_conf_libgtk)
\
$(pwre_conf_libpwrrt)
$(pwre_conf_lib)
$(pwre_conf_libpwrrt)
$(pwre_conf_lib
wb)
$(pwre_conf_lib
)
else
link
=
$(ldxx)
$(elinkflags)
$(domap)
-o
$(pwr_exe)
/wb_gtk
\
...
...
@@ -17,7 +17,7 @@ else
$(pwre_conf_libdir)
$(pwre_conf_libpwrwbgtk)
$(pwre_conf_libpwrxttgtk)
$(pwre_conf_libpwrwb)
\
$(pwre_conf_libpwrxtt)
$(pwre_conf_libpwrwbgtk)
$(pwre_conf_libpwrwb)
\
$(pwre_conf_libgtk)
\
$(pwre_conf_libpwrrt)
$(pwre_conf_lib)
$(pwre_conf_libpwrrt)
$(pwre_conf_lib
wb)
$(pwre_conf_lib
)
endif
endif
wb/exe/wb/motif/os_templ/link_rule.mk
View file @
d879e4d3
...
...
@@ -8,7 +8,7 @@ ifeq ($(export_type),exp)
$(pwre_conf_libdir)
$(pwre_conf_libpwrwbmotif)
$(pwre_conf_libpwrxttmotif)
$(pwre_conf_libpwrwb)
\
$(pwre_conf_libpwrxtt)
$(pwre_conf_libpwrwbmotif)
$(pwre_conf_libpwrwb)
\
$(pwre_conf_libpwrxttmotif)
$(pwre_conf_libpwrxtt)
$(pwre_conf_libmotif)
\
$(pwre_conf_libpwrrt)
$(pwre_conf_lib)
$(pwre_conf_libpwrrt)
$(pwre_conf_lib
wb)
$(pwre_conf_lib
)
else
link
=
$(ldxx)
$(elinkflags)
$(domap)
-o
$(pwr_exe)
/wb_motif
\
...
...
@@ -17,7 +17,7 @@ else
$(pwre_conf_libdir)
$(pwre_conf_libpwrwbmotif)
$(pwre_conf_libpwrxttmotif)
$(pwre_conf_libpwrwb)
\
$(pwre_conf_libpwrxtt)
$(pwre_conf_libpwrwbmotif)
$(pwre_conf_libpwrwb)
\
$(pwre_conf_libmotif)
\
$(pwre_conf_libpwrrt)
$(pwre_conf_lib)
$(pwre_conf_libpwrrt)
$(pwre_conf_lib
wb)
$(pwre_conf_lib
)
endif
endif
wb/exe/wb_adm/src/os_templ/link_rule.mk
View file @
d879e4d3
...
...
@@ -4,6 +4,7 @@ link_rule_mk := 1
link
=
$(ldxx)
$(linkflags)
$(domap)
-o
$(export_exe)
\
$(export_obj)
$(objects)
$(wb_msg_objs)
$(rt_msg_objs)
\
$(pwr_obj)
/rt_io_user.o
\
$(pwre_conf_libpwrwb)
$(pwre_conf_libpwrxtt)
$(pwre_conf_libpwrrt)
$(pwre_conf_lib)
$(pwre_conf_libpwrwb)
$(pwre_conf_libpwrxtt)
$(pwre_conf_libpwrrt)
\
$(pwre_conf_libwb)
$(pwre_conf_lib)
endif
wb/exe/wb_cmd/gtk/os_templ/link_rule.mk
View file @
d879e4d3
...
...
@@ -7,5 +7,5 @@ link_rule_mk := 1
$(pwre_conf_libdir)
$(pwre_conf_libpwrwbgtk)
$(pwre_conf_libpwrxttgtk)
$(pwre_conf_libpwrwb)
\
$(pwre_conf_libpwrxtt)
$(pwre_conf_libpwrwbgtk)
$(pwre_conf_libpwrwb)
\
$(pwre_conf_libgtk)
\
$(pwre_conf_libpwrrt)
$(pwre_conf_lib)
$(pwre_conf_libpwrrt)
$(pwre_conf_lib
wb)
$(pwre_conf_lib
)
endif
wb/exe/wb_cmd/motif/os_templ/link_rule.mk
View file @
d879e4d3
...
...
@@ -7,5 +7,5 @@ link_rule_mk := 1
$(pwre_conf_libdir)
$(pwre_conf_libpwrwbmotif)
$(pwre_conf_libpwrxttmotif)
$(pwre_conf_libpwrwb)
\
$(pwre_conf_libpwrxtt)
$(pwre_conf_libpwrwbmotif)
$(pwre_conf_libpwrwb)
\
$(pwre_conf_libmotif)
\
$(pwre_conf_libpwrrt)
$(pwre_conf_lib)
$(pwre_conf_libpwrrt)
$(pwre_conf_lib
wb)
$(pwre_conf_lib
)
endif
wb/exe/wb_dbcheck/src/os_templ/link_rule.mk
View file @
d879e4d3
...
...
@@ -5,6 +5,7 @@ link_rule_mk := 1
link
=
$(ldxx)
$(linkflags)
$(domap)
-o
$(export_exe)
\
$(export_obj)
$(objects)
$(wb_msg_objs)
$(rt_msg_objs)
\
$(pwr_obj)
/rt_io_user.o
\
$(pwre_conf_libpwrwb)
$(pwre_conf_libpwrxtt)
$(pwre_conf_libpwrrt)
$(pwre_conf_lib)
$(pwre_conf_libpwrwb)
$(pwre_conf_libpwrxtt)
$(pwre_conf_libpwrrt)
\
$(pwre_conf_libwb)
$(pwre_conf_lib)
endif
wb/exe/wb_ldlist/src/os_templ/link_rule.mk
View file @
d879e4d3
...
...
@@ -4,6 +4,7 @@ link_rule_mk := 1
link
=
$(ldxx)
$(elinkflags)
$(domap)
-o
$(export_exe)
\
$(export_obj)
$(objects)
$(wb_msg_eobjs)
$(rt_msg_eobjs)
\
$(pwr_eobj)
/rt_io_user.o
$(pwr_obj)
/wb_provider.o
\
$(pwre_conf_libdir)
$(pwre_conf_libpwrwb)
$(pwre_conf_libpwrxtt)
$(pwre_conf_libpwrrt)
$(pwre_conf_lib)
$(pwre_conf_libdir)
$(pwre_conf_libpwrwb)
$(pwre_conf_libpwrxtt)
$(pwre_conf_libpwrrt)
\
$(pwre_conf_libwb)
$(pwre_conf_lib)
endif
wb/exe/wb_upgrade/src/os_templ/link_rule.mk
View file @
d879e4d3
...
...
@@ -4,6 +4,7 @@ link_rule_mk := 1
link
=
$(ldxx)
$(elinkflags)
$(domap)
-o
$(export_exe)
\
$(export_obj)
$(objects)
$(wb_msg_eobjs)
$(rt_msg_eobjs)
\
$(pwr_eobj)
/rt_io_user.o
$(pwr_obj)
/wb_provider.o
\
$(pwre_conf_libdir)
$(pwre_conf_libpwrwb)
$(pwre_conf_libpwrxtt)
$(pwre_conf_libpwrrt)
$(pwre_conf_lib)
$(pwre_conf_libdir)
$(pwre_conf_libpwrwb)
$(pwre_conf_libpwrxtt)
$(pwre_conf_libpwrrt)
\
$(pwre_conf_libwb)
$(pwre_conf_lib)
endif
wb/exe/wb_wbltest/src/os_templ/link_rule.mk
View file @
d879e4d3
...
...
@@ -5,11 +5,13 @@ ifeq ($(export_type),exp)
link
=
$(ldxx)
$(explinkflags)
$(domap)
-o
$(export_exe)
\
$(export_obj)
$(objects)
$(wb_msg_eobjs)
$(rt_msg_eobjs)
\
$(pwr_eobj)
/rt_io_user.o
$(pwr_obj)
/wb_provider.o
\
$(pwre_conf_libpwrwb)
$(pwre_conf_libpwrxtt)
$(pwre_conf_libpwrrt)
$(pwre_conf_lib)
$(pwre_conf_libpwrwb)
$(pwre_conf_libpwrxtt)
$(pwre_conf_libpwrrt)
\
$(pwre_conf_libwb)
$(pwre_conf_lib)
else
link
=
$(ldxx)
$(elinkflags)
$(domap)
-o
$(export_exe)
\
$(export_obj)
$(objects)
$(wb_msg_eobjs)
$(rt_msg_eobjs)
\
$(pwr_eobj)
/rt_io_user.o
$(pwr_obj)
/wb_provider.o
\
$(pwre_conf_libpwrwb)
$(pwre_conf_libpwrxtt)
$(pwre_conf_libpwrrt)
$(pwre_conf_lib)
$(pwre_conf_libpwrwb)
$(pwre_conf_libpwrxtt)
$(pwre_conf_libpwrrt)
\
$(pwre_conf_libwb)
$(pwre_conf_lib)
endif
endif
wb/exp/wb/src/pwr_wb_palette.cnf
View file @
d879e4d3
...
...
@@ -182,7 +182,7 @@ palette NavigatorPalette
menu Siemens
{
class Siemens_Motor_1LA
class Si
emen
s_G120_Tgm1
class Si
namic
s_G120_Tgm1
}
menu Suco
{
...
...
@@ -338,6 +338,7 @@ palette NavigatorPalette
class RemnodeALCM
class RemnodeModbus
class RemnodeMQ
class RemnodeWMQ
class RemnodeSerial
class RemnodeTCP
class RemnodeUDP
...
...
wb/lib/wb/gtk/wb_nav_gtk.cpp
View file @
d879e4d3
...
...
@@ -118,10 +118,11 @@ static void nav_sel_lose_cb( GtkWidget *w, GdkEventSelection *event,
nav
->
selection_owner
=
0
;
}
void
NavGtk
::
set_selection_owner
()
void
NavGtk
::
set_selection_owner
(
int
set
)
{
gboolean
sts
;
if
(
set
)
{
sts
=
gtk_selection_owner_set
(
selection_widget
,
GDK_SELECTION_PRIMARY
,
gtk_get_current_event_time
());
if
(
!
sts
)
{
...
...
@@ -129,6 +130,12 @@ void NavGtk::set_selection_owner()
return
;
}
selection_owner
=
1
;
}
else
{
sts
=
gtk_selection_owner_set
(
NULL
,
GDK_SELECTION_PRIMARY
,
gtk_get_current_event_time
());
selection_owner
=
0
;
}
}
void
NavGtk
::
set_inputfocus
(
int
focus
)
...
...
wb/lib/wb/gtk/wb_nav_gtk.h
View file @
d879e4d3
...
...
@@ -47,7 +47,7 @@ class NavGtk : public Nav {
gulong
sel_lose_id
;
void
set_inputfocus
(
int
focus
);
void
set_selection_owner
();
void
set_selection_owner
(
int
set
);
};
#endif
...
...
wb/lib/wb/motif/wb_nav_motif.cpp
View file @
d879e4d3
...
...
@@ -147,18 +147,22 @@ static void nav_sel_lose_cb( Widget w, Atom *selection)
brow_SelectClear
(
nav
->
brow_ctx
);
}
void
NavMotif
::
set_selection_owner
()
void
NavMotif
::
set_selection_owner
(
int
set
)
{
int
sts
;
if
(
set
)
{
sts
=
XtOwnSelection
(
brow_widget
,
XA_PRIMARY
,
XtLastTimestampProcessed
(
flow_Display
(
brow_widget
)),
nav_sel_convert_cb
,
nav_sel_lose_cb
,
NULL
);
if
(
!
sts
)
{
if
(
!
sts
)
{
brow_SelectClear
(
brow_ctx
);
return
;
}
}
else
{
// Todo...
}
}
void
NavMotif
::
set_inputfocus
(
int
focus
)
...
...
wb/lib/wb/motif/wb_nav_motif.h
View file @
d879e4d3
...
...
@@ -45,7 +45,7 @@ class NavMotif : public Nav {
Widget
toplevel
;
void
set_inputfocus
(
int
focus
);
void
set_selection_owner
();
void
set_selection_owner
(
int
set
);
};
#endif
...
...
wb/lib/wb/src/wb_foe_dataarithm.c
View file @
d879e4d3
...
...
@@ -1933,7 +1933,7 @@ pwr_tStatus dataarithm_convert (
break
;
}
sprintf
(
newstr
+
strlen
(
newstr
),
"}
\n
"
);
sprintf
(
newstr
+
strlen
(
newstr
),
"
\n
}
\n
"
);
pos
+=
strlen
(
"}
\n
"
);
*
outsize
=
pos
;
dataa_delete_ctx
(
dataactx
);
...
...
wb/lib/wb/src/wb_nav.cpp
View file @
d879e4d3
...
...
@@ -1549,16 +1549,18 @@ int Nav::brow_cb( FlowCtx *ctx, flow_tEvent event)
if
(
brow_FindSelectedObject
(
nav
->
brow_ctx
,
event
->
object
.
object
))
{
brow_SelectClear
(
nav
->
brow_ctx
);
nav
->
set_selection_owner
(
0
);
}
else
{
brow_SelectClear
(
nav
->
brow_ctx
);
brow_SetInverse
(
event
->
object
.
object
,
1
);
brow_SelectInsert
(
nav
->
brow_ctx
,
event
->
object
.
object
);
nav
->
set_selection_owner
(
1
);
}
nav
->
set_selection_owner
();
break
;
default:
brow_SelectClear
(
nav
->
brow_ctx
);
nav
->
set_selection_owner
(
0
);
}
break
;
}
...
...
wb/lib/wb/src/wb_nav.h
View file @
d879e4d3
...
...
@@ -77,7 +77,7 @@ class Nav {
int
show_descrip
;
virtual
void
set_inputfocus
(
int
focus
)
{}
virtual
void
set_selection_owner
()
{}
virtual
void
set_selection_owner
(
int
set
)
{}
void
zoom
(
double
zoom_factor
);
void
unzoom
();
...
...
wb/lib/wb/src/wb_pkg.cpp
View file @
d879e4d3
...
...
@@ -31,6 +31,17 @@
#include "rt_load.h"
#include "wb_log.h"
static
unsigned
int
pkg_random
()
{
pwr_tTime
t
;
time_GetTime
(
&
t
);
int
itime
=
t
.
tv_nsec
+
t
.
tv_sec
%
10000
;
srand
(
itime
);
return
(
unsigned
int
)((
double
)
rand
()
/
((
double
)
RAND_MAX
+
1
)
*
999999
);
}
wb_pkg
::
wb_pkg
(
char
*
nodelist
,
bool
distribute
,
bool
config_only
)
{
if
(
nodelist
)
{
...
...
@@ -372,6 +383,10 @@ void pkg_node::fetchFiles( bool distribute)
char
pack_fname
[
200
];
char
fname
[
200
];
// Get temporary directory
sprintf
(
m_tmpdir
,
"/tmp/pwrpkg%06u"
,
pkg_random
());
sprintf
(
m_blddir
,
"%s/pkg_build"
,
m_tmpdir
);
// Add volumes to pattern
for
(
int
i
=
0
;
i
<
(
int
)
m_volumelist
.
size
();
i
++
)
{
if
(
!
m_volumelist
[
i
].
m_isSystem
)
{
...
...
@@ -447,26 +462,29 @@ void pkg_node::fetchFiles( bool distribute)
char
pkg_name
[
80
];
sprintf
(
pkg_name
,
load_cNamePkg
,
m_name
,
version
);
dcli_translate_filename
(
pack_fname
,
"$pwrp_tmp/pkg_pack.sh"
);
sprintf
(
pack_fname
,
"$pwrp_tmp/pkg_pack_%s.sh"
,
m_name
);
dcli_translate_filename
(
pack_fname
,
pack_fname
);
ofstream
of
(
pack_fname
);
of
<<
"if [
! -e $pwrp_tmp/pkg_build
]; then"
<<
endl
<<
"
mkdir $pwrp_tmp/pkg_build"
<<
endl
<<
"
else
"
<<
endl
<<
"
rm -r $pwrp_tmp/pkg_build/*.flw"
<<
endl
<<
"
rm -r $pwrp_tmp/pkg_build/*"
<<
endl
<<
// " find $pwrp_tmp/pkg_build -name \"*\" | xargs rm -r" << endl <<
"fi"
<<
endl
;
"if [
-e "
<<
m_tmpdir
<<
"
]; then"
<<
endl
<<
"
rm -r "
<<
m_tmpdir
<<
endl
<<
"
fi
"
<<
endl
<<
"
mkdir "
<<
m_tmpdir
<<
endl
<<
"
mkdir "
<<
m_blddir
<<
endl
;
for
(
int
i
=
0
;
i
<
(
int
)
m_filelist
.
size
();
i
++
)
of
<<
"cp "
<<
m_filelist
[
i
].
m_source
<<
"
$pwrp_tmp/pkg_build
/"
<<
m_filelist
[
i
].
m_arname
<<
endl
;
"cp "
<<
m_filelist
[
i
].
m_source
<<
"
"
<<
m_blddir
<<
"
/"
<<
m_filelist
[
i
].
m_arname
<<
endl
;
of
<<
"#mv $pwrp_tmp/pkg_unpack.sh $pwrp_tmp/pkg_build"
<<
endl
<<
"cd $pwrp_tmp"
<<
endl
<<
"tar -czf $pwrp_load/"
<<
pkg_name
<<
" pwr_pkg.dat pkg_unpack.sh pkg_build"
<<
endl
;
"cp $pwrp_tmp/pkg_unpack_"
<<
m_name
<<
".sh "
<<
m_tmpdir
<<
"/pkg_unpack.sh"
<<
endl
<<
"cp $pwrp_tmp/pwr_pkg_"
<<
m_name
<<
".dat "
<<
m_tmpdir
<<
"/pwr_pkg.dat"
<<
endl
<<
"cd "
<<
m_tmpdir
<<
endl
<<
"tar -czf $pwrp_load/"
<<
pkg_name
<<
" pwr_pkg.dat pkg_unpack.sh pkg_build"
<<
endl
<<
"rm -r "
<<
m_tmpdir
<<
endl
;
#if 0
if ( distribute)
...
...
@@ -483,7 +501,8 @@ void pkg_node::fetchFiles( bool distribute)
of
.
close
();
// Create a script that unpackes the archive and moves files to the target directories
dcli_translate_filename
(
fname
,
"$pwrp_tmp/pkg_unpack.sh"
);
sprintf
(
fname
,
"$pwrp_tmp/pkg_unpack_%s.sh"
,
m_name
);
dcli_translate_filename
(
fname
,
fname
);
ofstream
ofu
(
fname
);
if
(
!
ofu
)
throw
wb_error_str
(
"Unable to open file"
);
...
...
@@ -550,7 +569,8 @@ void pkg_node::fetchFiles( bool distribute)
ofu
.
close
();
// Create a data file with description and all installed files
dcli_translate_filename
(
fname
,
"$pwrp_tmp/pwr_pkg.dat"
);
sprintf
(
fname
,
"$pwrp_tmp/pwr_pkg_%s.dat"
,
m_name
);
dcli_translate_filename
(
fname
,
fname
);
ofstream
ofd
(
fname
);
if
(
!
ofd
)
throw
wb_error_str
(
"Unable to open file"
);
...
...
@@ -620,7 +640,9 @@ void pkg_node::copyPackage( char *pkg_name)
}
for
(
int
i
=
0
;
i
<
bootnode_cnt
;
i
++
)
{
dcli_translate_filename
(
pack_fname
,
"$pwrp_tmp/pkg_pack.sh"
);
sprintf
(
pack_fname
,
"$pwrp_tmp/pkg_pack_%s.sh"
,
m_name
);
dcli_translate_filename
(
pack_fname
,
pack_fname
);
ofstream
of
(
pack_fname
);
if
(
m_dstatus
&
lfu_mDistrOpt_RSH
)
{
// Use ftp and rsh
...
...
wb/lib/wb/src/wb_pkg.h
View file @
d879e4d3
...
...
@@ -117,6 +117,8 @@ class pkg_node {
int
m_warnings
;
char
m_user
[
80
];
char
m_custom_platform
[
80
];
char
m_tmpdir
[
80
];
char
m_blddir
[
80
];
public:
pkg_node
(
char
*
name
)
:
m_opsys
(
pwr_mOpSys__
),
m_bus
(
0
),
...
...
xtt/exe/wb_ge/gtk/os_templ/link_rule.mk
View file @
d879e4d3
...
...
@@ -7,6 +7,6 @@ link = $(ldxx) -L$(pwr_elib) $(elinkflags) $(domap) -o $(pwr_exe)/wb_ge_gtk \
$(pwre_conf_libdir)
$(pwre_conf_libpwrwbgtk)
$(pwre_conf_libpwrxttgtk)
$(pwre_conf_libpwrwb)
\
$(pwre_conf_libpwrxtt)
$(pwre_conf_libpwrwbgtk)
$(pwre_conf_libpwrwb)
\
$(pwre_conf_libpwrxttgtk)
$(pwre_conf_libpwrxtt)
$(pwre_conf_libgtk)
\
$(pwre_conf_libpwrrt)
$(pwre_conf_lib)
$(pwre_conf_libpwrrt)
$(pwre_conf_lib
wb)
$(pwre_conf_lib
)
endif
xtt/exe/wb_ge/motif/os_templ/link_rule.mk
View file @
d879e4d3
...
...
@@ -7,6 +7,6 @@ link = $(ldxx) -L$(pwr_elib) $(elinkflags) $(domap) -o $(pwr_exe)/wb_ge_motif \
$(pwre_conf_libdir)
$(pwre_conf_libpwrwbmotif)
$(pwre_conf_libpwrxttmotif)
$(pwre_conf_libpwrwb)
\
$(pwre_conf_libpwrxtt)
$(pwre_conf_libpwrwbmotif)
$(pwre_conf_libpwrwb)
\
$(pwre_conf_libpwrxttmotif)
$(pwre_conf_libpwrxtt)
$(pwre_conf_libmotif)
\
$(pwre_conf_libpwrrt)
$(pwre_conf_lib)
$(pwre_conf_libpwrrt)
$(pwre_conf_lib
wb)
$(pwre_conf_lib
)
endif
xtt/lib/ge/src/ge_bitmap_limitswitch248.h
0 → 100644
View file @
d879e4d3
#define ge_bitmap_limitswitch248_width 16
#define ge_bitmap_limitswitch248_height 13
static
unsigned
char
ge_bitmap_limitswitch248_bits
[]
=
{
0xe0
,
0x03
,
0x20
,
0x02
,
0x20
,
0x02
,
0x20
,
0x02
,
0x20
,
0x02
,
0x20
,
0x02
,
0x20
,
0x02
,
0xe0
,
0x03
,
0x80
,
0x00
,
0x40
,
0x00
,
0x30
,
0x00
,
0x30
,
0x00
,
0x00
,
0x00
};
xtt/lib/ge/src/ge_subpalette.cpp
View file @
d879e4d3
...
...
@@ -287,6 +287,7 @@
#include "ge_bitmap_damper245.h"
#include "ge_bitmap_threewayvalve246.h"
#include "ge_bitmap_elheater247.h"
#include "ge_bitmap_limitswitch248.h"
#define SUBPALETTE__INPUT_SYNTAX 2
#define SUBPALETTE__OBJNOTFOUND 4
...
...
@@ -625,6 +626,7 @@ void SubPaletteBrow::allocate_pixmaps()
ALLOC_PIXMAP
(
ge_bitmap_damper245
,
245
);
ALLOC_PIXMAP
(
ge_bitmap_threewayvalve246
,
246
);
ALLOC_PIXMAP
(
ge_bitmap_elheater247
,
247
);
ALLOC_PIXMAP
(
ge_bitmap_limitswitch248
,
248
);
}
...
...
xtt/lib/ge/src/pwr_ge_setup.dat
View file @
d879e4d3
...
...
@@ -47,6 +47,7 @@ menu Process
subgraph FanAnim2 pwr_exe:pwr_fananim2.pwsg 71
subgraph FanAnim3 pwr_exe:pwr_fananim3.pwsg 71
subgraph HandWheel pwr_exe:pwr_handwheel.pwsg 58
subgraph LimitSwitch pwr_exe:pwr_limitswitch.pwsg 248
subgraph MDamper pwr_exe:pwr_mdamper.pwsg 55
subgraph Motor pwr_exe:pwr_motor.pwsg 23
subgraph Motor2 pwr_exe:pwr_motor2.pwsg 65
...
...
xtt/lib/ge/src/pwr_limitswitch.pwg
0 → 100644
View file @
d879e4d3
0! DefaultWidth 144
0! DefaultHeight 288
1
100 144.012
135 144.012
101 20
102 -232
103 -271
104 28.0481
136 28.0481
105 100
106 -45
107 -52
108 0.9
109 0
110 2
111 0
116 0
117 0
118 131
119 118
120 1
121 Claes context
122 0
126 0.1
127 0.1
128 0
129 0.3
130 1.5
131 0.8
132 3
133 2
137 4510
138 3
139 2
134
22
2200 1
2201 15
2202 pwr_limitswitch
2203 300
2205 0
2204
2206 0
2207
2208
2209 0
2210 0
2211 1
2212 2
2213 4
2214
pwrp_pop:
pwrp_exe:
ssab_exe:
pwr_exe:
2215 32768
2236 0
2216 0
2221 0
2237 0
2238 0
2239 0
2240 0
2241 0
2242 0
2217 0
2218 0
2219 1
2220
2230 0
2231 0
2222 pwr_limitswitch__p2
2223 1
2224 0.5
2232 0.5
2225 0.5
2226 0
2227
2228 0
2229 0
2233 1
2234 1
2235 0
2243 0
2245 0
2244
1
100 1
101 1
102 33619964
103 0
99
99
123
2
99
124
2
99
125
2
26
2604 O6
2600 0.525089
2601 0.191637
2602 1.76237
2603 1.28328
2605
25
2500 0
2501 1
2503 1
2504 0
2502
2
7
700 0.533452
701 1.82091
99
7
700 0.3
701 2.3
99
7
700 0.2
701 2.2
99
7
700 0.333452
701 1.82091
99
7
700 0.533452
701 1.82091
99
99
99
2608 0
2609 36
2610 36
2611 1
2616 1
2614 5
2617 2
2615 0
2618 1
2607 0
2606
2612
28
2800 1
2801 0
2802 -0.00836311
2803 0
2804 1
2805 -0.537634
2806 0
99
2613 0
2619 0
2620 0
2621 1
2622 0
2623 0
2624 4
2625 0
99
19
1904 O11
1900 0.9
1901 0.1
1902 1.3
1903 0
1908 0
1909 38
1910 38
1911 1
1915 0
1913 17
1916 2
1914 0
1918 0
1919 0
1920 0
1917 0
1921 0
1922 4
1923 0
1907 0
1906
1905
5
500 0
501 1
504 1
505 1
502
7
700 0.1
701 0.5
99
503
7
700 0.9
701 1.8
99
99
1912
28
2800 1
2801 0
2802 0
2803 0
2804 1
2805 -0.5
2806 0
99
99
24
2404 O13
2400 0.4
2401 0
2402 2
2403 1.6
2408 0
2409 0
2410 0
2411 1
2415 0
2413 5
2416 2
2414 0
2417 1
2421 1
2418 0
2419 4
2420 1
2422 0
2407 0
2406
2405
8
802 0
803 1
800 0
801 360
806 1
804
7
700 0
701 2.1
99
805
7
700 0.4
701 2.5
99
99
2412
28
2800 1
2801 0
2802 0
2803 0
2804 1
2805 -0.5
2806 0
99
99
21
2104 O14
2100 0.8
2101 0.2
2102 0.3
2103 -0.3
2105
8
802 0
803 2
800 0
801 360
806 0
804
7
700 -0.3
701 -0.3
99
805
7
700 0.3
701 0.3
99
99
2106
12
1200 0
1201 4
1202
7
700 0.5
701 0
99
1203
1204 0
1205
28
2800 1
2801 0
2802 0
2803 0
2804 1
2805 0
2806 0
99
99
99
99
99
xtt/lib/ge/src/pwr_limitswitch.pwsg
0 → 100644
View file @
d879e4d3
123
2
3
300 pwr_limitswitch
301
2
26
2604 O6
2600 0.525089
2601 0.191637
2602 1.76237
2603 1.28328
2605
25
2500 0
2501 1
2503 1
2504 0
2502
2
7
700 0.533452
701 1.82091
99
7
700 0.3
701 2.3
99
7
700 0.2
701 2.2
99
7
700 0.333452
701 1.82091
99
7
700 0.533452
701 1.82091
99
99
99
2608 0
2609 36
2610 36
2611 1
2616 1
2614 5
2617 2
2615 0
2618 1
2607 0
2606
2612
28
2800 1
2801 0
2802 -0.00836311
2803 0
2804 1
2805 -0.537634
2806 0
99
2613 0
2619 0
2620 0
2621 1
2622 0
2623 0
2624 4
2625 0
99
19
1904 O11
1900 0.9
1901 0.1
1902 1.3
1903 0
1908 0
1909 38
1910 38
1911 1
1915 0
1913 17
1916 2
1914 0
1918 0
1919 0
1920 0
1917 0
1921 0
1922 4
1923 0
1907 0
1906
1905
5
500 0
501 1
504 1
505 1
502
7
700 0.1
701 0.5
99
503
7
700 0.9
701 1.8
99
99
1912
28
2800 1
2801 0
2802 0
2803 0
2804 1
2805 -0.5
2806 0
99
99
24
2404 O13
2400 0.4
2401 0
2402 2
2403 1.6
2408 0
2409 0
2410 0
2411 1
2415 0
2413 5
2416 2
2414 0
2417 1
2421 1
2418 0
2419 4
2420 1
2422 0
2407 0
2406
2405
8
802 0
803 1
800 0
801 360
806 1
804
7
700 0
701 2.1
99
805
7
700 0.4
701 2.5
99
99
2412
28
2800 1
2801 0
2802 0
2803 0
2804 1
2805 -0.5
2806 0
99
99
12
1200 0
1201 4
1202
7
700 0.5
701 0
99
1203
1204 0
1205
28
2800 1
2801 0
2802 0
2803 0
2804 1
2805 0
2806 0
99
99
99
302 0
305 0
306
307
304 0
303
308 32768
321 0
309 0
313 0
322 0
323 0
324 0
325 0
326 0
327 0
310 0
311 0
312
314 pwr_limitswitch__p2
315 1
316 1
317 0
318 2
319 0
320 1
328 0
329
1
100 1
101 1
102 33619964
103 0
99
99
99
99
xtt/lib/ge/src/pwr_limitswitch__p2.pwg
0 → 100644
View file @
d879e4d3
0! DefaultWidth 144
0! DefaultHeight 288
1
100 144.012
135 144.012
101 20
102 -232
103 -271
104 28.0481
136 28.0481
105 100
106 -45
107 -52
108 1
109 0.1
110 2
111 -1.66533e-15
116 0
117 0
118 131
119 118
120 1
121 Claes context
122 0
126 0.1
127 0.1
128 0
129 0.3
130 1.5
131 0.8
132 3
133 2
137 4510
138 3
139 2
134
22
2200 0
2201 13
2202 pwr_limitswitch__p2
2203 300
2205 0
2204
2206 0
2207
2208
2209 0
2210 0
2211 1
2212 2
2213 4
2214
pwrp_pop:
pwrp_exe:
ssab_exe:
pwr_exe:
2215 32768
2236 0
2216 0
2221 0
2237 0
2238 0
2239 0
2240 0
2241 0
2242 0
2217 0
2218 0
2219 1
2220
2230 0
2231 0
2222
2223 1
2224 0.5
2232 0.5
2225 0.5
2226 0
2227
2228 0
2229 0
2233 1
2234 1
2235 0
2243 0
2245 0
2244
1
100 1
101 1
102 33619964
103 0
99
99
123
2
99
124
2
99
125
2
26
2604 O6
2600 0.764011
2601 0.430559
2602 1.73747
2603 1.25838
2605
25
2500 0
2501 1
2503 1
2504 0
2502
2
7
700 0.533452
701 1.82091
99
7
700 0.3
701 2.3
99
7
700 0.2
701 2.2
99
7
700 0.333452
701 1.82091
99
7
700 0.533452
701 1.82091
99
99
99
2608 0
2609 36
2610 36
2611 1
2616 1
2614 5
2617 2
2615 0
2618 1
2607 0
2606
2612
28
2800 -1
2801 -0
2802 0.964011
2803 0
2804 1
2805 -0.56253
2806 0
99
2613 0
2619 0
2620 0
2621 1
2622 0
2623 0
2624 4
2625 0
99
19
1904 O10
1900 0.9
1901 0.1
1902 1.3
1903 -1.66533e-15
1908 0
1909 38
1910 38
1911 1
1915 0
1913 17
1916 2
1914 0
1918 0
1919 0
1920 0
1917 0
1921 0
1922 4
1923 0
1907 0
1906
1905
5
500 0
501 1
504 1
505 1
502
7
700 0.1
701 0.5
99
503
7
700 0.9
701 1.8
99
99
1912
28
2800 1
2801 0
2802 -1.49533e-15
2803 0
2804 1
2805 -0.5
2806 0
99
99
24
2404 O11
2400 1
2401 0.6
2402 2
2403 1.6
2408 0
2409 0
2410 0
2411 1
2415 0
2413 5
2416 2
2414 0
2417 1
2421 1
2418 0
2419 4
2420 1
2422 0
2407 0
2406
2405
8
802 0
803 1
800 0
801 360
806 1
804
7
700 0
701 2.1
99
805
7
700 0.4
701 2.5
99
99
2412
28
2800 1
2801 0
2802 0.6
2803 0
2804 1
2805 -0.5
2806 0
99
99
21
2104 O12
2100 0.8
2101 0.2
2102 0.3
2103 -0.3
2105
8
802 0
803 2
800 0
801 360
806 0
804
7
700 -0.3
701 -0.3
99
805
7
700 0.3
701 0.3
99
99
2106
12
1200 0
1201 4
1202
7
700 0.5
701 0
99
1203
1204 0
1205
28
2800 1
2801 0
2802 -3.43215e-15
2803 0
2804 1
2805 1.32533e-15
2806 0
99
99
99
99
99
xtt/lib/ge/src/pwr_limitswitch__p2.pwsg
0 → 100644
View file @
d879e4d3
123
2
3
300 pwr_limitswitch__p2
301
2
26
2604 O6
2600 0.764011
2601 0.430559
2602 1.73747
2603 1.25838
2605
25
2500 0
2501 1
2503 1
2504 0
2502
2
7
700 0.533452
701 1.82091
99
7
700 0.3
701 2.3
99
7
700 0.2
701 2.2
99
7
700 0.333452
701 1.82091
99
7
700 0.533452
701 1.82091
99
99
99
2608 0
2609 36
2610 36
2611 1
2616 1
2614 5
2617 2
2615 0
2618 1
2607 0
2606
2612
28
2800 -1
2801 -0
2802 0.964011
2803 0
2804 1
2805 -0.56253
2806 0
99
2613 0
2619 0
2620 0
2621 1
2622 0
2623 0
2624 4
2625 0
99
19
1904 O10
1900 0.9
1901 0.1
1902 1.3
1903 -1.66533e-15
1908 0
1909 38
1910 38
1911 1
1915 0
1913 17
1916 2
1914 0
1918 0
1919 0
1920 0
1917 0
1921 0
1922 4
1923 0
1907 0
1906
1905
5
500 0
501 1
504 1
505 1
502
7
700 0.1
701 0.5
99
503
7
700 0.9
701 1.8
99
99
1912
28
2800 1
2801 0
2802 -1.49533e-15
2803 0
2804 1
2805 -0.5
2806 0
99
99
24
2404 O11
2400 1
2401 0.6
2402 2
2403 1.6
2408 0
2409 0
2410 0
2411 1
2415 0
2413 5
2416 2
2414 0
2417 1
2421 1
2418 0
2419 4
2420 1
2422 0
2407 0
2406
2405
8
802 0
803 1
800 0
801 360
806 1
804
7
700 0
701 2.1
99
805
7
700 0.4
701 2.5
99
99
2412
28
2800 1
2801 0
2802 0.6
2803 0
2804 1
2805 -0.5
2806 0
99
99
12
1200 0
1201 4
1202
7
700 0.5
701 0
99
1203
1204 0
1205
28
2800 1
2801 0
2802 -3.43215e-15
2803 0
2804 1
2805 1.32533e-15
2806 0
99
99
99
302 0
305 0
306
307
304 0
303
308 32768
321 0
309 0
313 0
322 0
323 0
324 0
325 0
326 0
327 0
310 0
311 0
312
314
315 1
316 1
317 0
318 2
319 0
320 1
328 0
329
1
100 1
101 1
102 33619964
103 0
99
99
99
99
xtt/lib/glow/src/glow_ctx.cpp
View file @
d879e4d3
...
...
@@ -928,7 +928,7 @@ void GlowCtx::find_grid( double x, double y, double *x_grid, double *y_grid)
int
GlowCtx
::
event_handler
(
glow_eEvent
event
,
int
x
,
int
y
,
int
w
,
int
h
)
{
int
sts
;
int
sts
=
0
;
int
i
;
GlowCtx
*
ctx
;
int
node_move_event
=
0
;
...
...
xtt/lib/glow/src/glow_growctx.cpp
View file @
d879e4d3
...
...
@@ -223,7 +223,7 @@ int GrowCtx::subw_event_handler( glow_eEvent event, int x, int y, int w, int h)
int
GrowCtx
::
event_handler
(
glow_eEvent
event
,
int
x
,
int
y
,
int
w
,
int
h
)
{
int
sts
;
int
sts
=
0
;
int
i
;
GlowCtx
*
ctx
;
int
node_move_event
=
0
;
...
...
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