Commit e2664f23 authored by Claes Sjofors's avatar Claes Sjofors

merge

parents ce055179 a7b6f740

Too many changes to show.

To preserve performance only 1000 of 1000+ files are displayed.

include $(pwre_dir_symbols) include $(pwre_dir_symbols)
ifndef variables_mk ifndef variables_mk
-include $(pwre_kroot)/tools/bld/src/$(os_name)/$(hw_name)/variables.mk include $(pwre_kroot)/tools/bld/src/variables.mk
endif
ifndef variables_mk
include $(pwre_kroot)/tools/bld/src/$(os_name)/variables.mk
endif endif
ifndef rules_mk
-include $(pwre_kroot)/tools/bld/src/$(os_name)/$(hw_name)/rules.mk
endif
ifndef rules_mk ifndef rules_mk
include $(pwre_kroot)/tools/bld/src/$(os_name)/rules.mk include $(pwre_kroot)/tools/bld/src/rules.mk
endif endif
vpath %.gif $(co_source)
vpath %.gif $(hw_source):$(os_source):$(co_source) source_dirs := $(co_source)
source_dirs := $(hw_source) $(os_source) $(co_source)
gif_sources := $(sort \ gif_sources := $(sort \
$(foreach file, \ $(foreach file, \
...@@ -50,7 +43,7 @@ $(doc_dir)/en_us/orm/%.gif : %.gif ...@@ -50,7 +43,7 @@ $(doc_dir)/en_us/orm/%.gif : %.gif
@ $(cp) $(cpflags) $(source) $(doc_dir)/sv_se/orm @ $(cp) $(cpflags) $(source) $(doc_dir)/sv_se/orm
@ $(cp) $(cpflags) $(source) $(doc_dir)/help @ $(cp) $(cpflags) $(source) $(doc_dir)/help
$(doc_dir)/en_us/orm/%.html : ../../%.html $(doc_dir)/en_us/orm/%.html : %.html
@ $(log_h_h) @ $(log_h_h)
@ $(cp) $(cpflags) $(source) $(target) @ $(cp) $(cpflags) $(source) $(target)
@ $(cp) $(cpflags) $(source) $(doc_dir)/sv_se/orm @ $(cp) $(cpflags) $(source) $(doc_dir)/sv_se/orm
...@@ -82,7 +75,3 @@ $(clean_gif) : clean_%.gif : %.gif ...@@ -82,7 +75,3 @@ $(clean_gif) : clean_%.gif : %.gif
$(clean_html) : clean_%.html : %.html $(clean_html) : clean_%.html : %.html
@ $(rm) $(rmflags) $(doc_dir)/orm/$*.html @ $(rm) $(rmflags) $(doc_dir)/orm/$*.html
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
-include ../../special.mk
-include ../special.mk
-include special.mk
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
-include ../../special.mk
-include ../special.mk
-include special.mk
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
-include ../../special.mk
-include ../special.mk
-include special.mk
include $(pwre_dir_symbols) include $(pwre_dir_symbols)
ifndef variables_mk ifndef variables_mk
-include $(pwre_kroot)/tools/bld/src/$(os_name)/$(hw_name)/variables.mk include $(pwre_kroot)/tools/bld/src/variables.mk
endif
ifndef variables_mk
include $(pwre_kroot)/tools/bld/src/$(os_name)/variables.mk
endif endif
ifndef rules_mk
-include $(pwre_kroot)/tools/bld/src/$(os_name)/$(hw_name)/rules.mk
endif
ifndef rules_mk ifndef rules_mk
include $(pwre_kroot)/tools/bld/src/$(os_name)/rules.mk include $(pwre_kroot)/tools/bld/src/rules.mk
endif endif
vpath %.gif $(co_source)
vpath %.png $(co_source)
vpath %.gif $(hw_source):$(os_source):$(co_source) source_dirs := $(co_source)
vpath %.png $(hw_source):$(os_source):$(co_source)
source_dirs := $(hw_source) $(os_source) $(co_source)
gif_sources := $(sort \ gif_sources := $(sort \
$(foreach file, \ $(foreach file, \
...@@ -68,7 +61,7 @@ $(doc_dir)/en_us/orm/%.png : %.png ...@@ -68,7 +61,7 @@ $(doc_dir)/en_us/orm/%.png : %.png
@ $(cp) $(cpflags) $(source) $(doc_dir)/sv_se/orm @ $(cp) $(cpflags) $(source) $(doc_dir)/sv_se/orm
@ $(cp) $(cpflags) $(source) $(doc_dir)/help @ $(cp) $(cpflags) $(source) $(doc_dir)/help
$(doc_dir)/en_us/orm/%.html : ../../%.html $(doc_dir)/en_us/orm/%.html : %.html
@ $(log_h_h) @ $(log_h_h)
@ $(cp) $(cpflags) $(source) $(target) @ $(cp) $(cpflags) $(source) $(target)
@ $(cp) $(cpflags) $(source) $(doc_dir)/sv_se/orm @ $(cp) $(cpflags) $(source) $(doc_dir)/sv_se/orm
...@@ -103,7 +96,3 @@ $(clean_png) : clean_%.png : %.png ...@@ -103,7 +96,3 @@ $(clean_png) : clean_%.png : %.png
$(clean_html) : clean_%.html : %.html $(clean_html) : clean_%.html : %.html
@ $(rm) $(rmflags) $(doc_dir)/orm/$*.html @ $(rm) $(rmflags) $(doc_dir)/orm/$*.html
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
-include ../../special.mk
-include ../special.mk
-include special.mk
copy : $(doc_dir)/sv_se/orm/rt_plc_bcomp_c.html \
$(doc_dir)/en_us/orm/rt_plc_bcomp_c.html
$(doc_dir)/sv_se/orm/rt_plc_bcomp_c.html : ../../rt_plc_bcomp.c
@ echo "Generating html files for rt_plc_bcomp sv_se..."
@ $(co_convert) -c -d $(doc_dir)/sv_se/orm "$(source)"
$(doc_dir)/en_us/orm/rt_plc_bcomp_c.html : ../../rt_plc_bcomp.c
@ echo "Generating html files for rt_plc_bcomp en_us..."
@ $(co_convert) -c -d $(doc_dir)/en_us/orm "$(source)"
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
-include ../../special.mk
-include ../special.mk
-include special.mk
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
-include ../../special.mk
-include ../special.mk
-include special.mk
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
-include ../../special.mk
-include ../special.mk
-include special.mk
exe : $(doc_dir)/sv_se/orm/pwr_basecomponentclasses_h.html \
$(doc_dir)/en_us/orm/pwr_basecomponentclasses_h.html \
$(doc_dir)/sv_se/orm/pwr_basecomponentclasses_hpp.html \
$(doc_dir)/en_us/orm/pwr_basecomponentclasses_hpp.html
$(doc_dir)/sv_se/orm/pwr_basecomponentclasses_h.html : $(inc_dir)/pwr_basecomponentclasses.h
@ echo "Generating html files for struct sv_se..."
@ $(co_convert) -c -d $(doc_dir)/sv_se/orm "$(source)"
$(doc_dir)/en_us/orm/pwr_basecomponentclasses_h.html : $(inc_dir)/pwr_basecomponentclasses.h
@ echo "Generating html files for struct en_us..."
@ $(co_convert) -c -d $(doc_dir)/en_us/orm "$(source)"
$(doc_dir)/sv_se/orm/pwr_basecomponentclasses_hpp.html : $(inc_dir)/pwr_basecomponentclasses.hpp
@ echo "Generating html files for struct sv_se..."
@ $(co_convert) -c -d $(doc_dir)/sv_se/orm "$(source)"
$(doc_dir)/en_us/orm/pwr_basecomponentclasses_hpp.html : $(inc_dir)/pwr_basecomponentclasses.hpp
@ echo "Generating html files for struct en_us..."
@ $(co_convert) -c -d $(doc_dir)/en_us/orm "$(source)"
A guide on how to build Proview
--------------------------------
Written by: Robert Karlsson
The following libraries (devel and runtime) are needed to build Proview:
gcc
g++
make
flex
libgtk2.0-dev
libdb5.3-dev (Any Berkeley DB version > 4.3, on Fedora db4-devel)
libdb5.3++-dev
libasound2-dev (on Fedora alsa-lib-devel)
doxygen
jdk
Proview has been built with the follwing compilers:
gcc v4.3.2
javac (jdk6)
1. Preparations
--------------
Install the following packages
Mandatory:
make
flex
gcc
g++
libgtk2.0-dev
cpp
libasound2-dev
libdb5.3-dev
libdb5.3++-dev
doxygen
qt4-dev-tools
libphonon4
libphonon-dev
Optional:
openjdk-6-jdk Web interface and java API
libmysql++-dev History database with mysql
libsqlite3-dev History database with sqlite
libhdf5-openmpi-dev History database with hdf5
libusb-1.0.0-dev USB I/O cards (Velleman)
librsvg2-dev SVG image support in Ge
libgstreamer1.0-dev Network video camera
libgstreamer-plugins-base1.0-dev Network video camera
openPOWERLINK-V1.08.2 Ethernet Powerlink zip-file. Build from sources.
libpcap-dev Ethernet Powerlink
There has to be a valid display when building proview.
If you do not have a display, or want to build Proview on a server, see section "Building without a display" below
2. Easy way
-----------
Unpack the source package
> tar -xzvf pwrsrc_4.8.0.tar.gz
Enter the sourcecode root directory
> cd pwr_4.8.0
Execute the makefile
> make
Follow the instructions to insert three lines in your .bashrc file.
3. Thorough way
---------------
This is a more thorough way to install the development environment, which
is recommended if you will make a lots of changes in the source code and
handle different version of proview.
3.1 Setting up the environment
------------------------------
The first thing to do is to set up your environment properly. Add the
following lines to .bashrc:
# Where /home/robert/x4-8-0 is replaced with wherever you unpacked the sources.
export pwre_bin="/home/robert/x4-8-0/pwr/src/tools/pwre/src/os_linux"
export pwre_dir_symbols="$pwre_bin/dir_symbols.mk"
source $pwre_bin/pwre_function
export pwre_env_db="/home/robert/pwre_new"
3.2 Creating the environment
----------------------------
Creating and handling your environment is done with the pwre-function (added
by sourcing $pwre_bin/pwre_function). See section "Cross-compiling" below
about compiling a 32-bit version of Proview on a 64-bit machine.
> pwre
shows all possibilites with the pwre function.
Add environment named 'x460x86' (choose any name you like).
> pwre add x460x86
Source root [...] ? /home/robert/x4-8-0/pwr/src (where /home/robert/x4-8-0 is
replaced with wherever you unpacked the sources)
Import root [] ?
Build root [...] ? /home/robert/pwr/x4-8-0/rls_dbg (choose typically .../pwr/version/rls_dbg)
Build type [dbg] ?
OS [linux] ? (linux or macos)
Hardware [x86] ? (x86 or x86_64)
Description ? robert's environment (whatever...)
list all existing environments:
> pwre list
-- Defined environments:
x460x86
--
himBh
Initiate your new environment:
> pwre init x460x86
Now, create the build tree
> pwre create_all_modules
Finally the environment is set up and we can start the build procedure.
3.3 Building Proview
--------------------
To build Proview from scratch
> pwre build_all_modules
This will build everything and also produces some documentation.
Otherwise Proview is divided in several modules which can be built
separately. The modules are however not independant of eachother.
The modules currently consists of:
abb, bcomp, inor, java, klocknermoeller, nmps, othermanu, profibus, remote,
siemens, ssabox, telemecanique, tlog, wb and xtt.
On top of this there is also a kernel-module under directory src on the top level.
To "move" between the different modules
> pwre module wb (for example)
To "move" back to kernel module just do:
> pwre module
To build all in current module
> pwre build_all
To build parts of current module (for example lib/rt/src in kernel module)
> pwre build lib rt src (command syntax build 'branch' 'subbranch' ['phase'] ['flavour')
Each of the modules have their own build tree. When finished your work in a
specific module this must be merged to the common build tree. This is done
via:
> pwre merge
Some important environment variables:
$pwre_croot The source root
$pwre_sroot Source root in current module
$pwre_broot The build root
$pwr_eexe The common exe directory in build tree
$pwr_elib The common library directory in build tree
$pwr_eobj The common object directory in build tree
$pwr_exe The exe directory for current module
$pwr_lib The library directory for current module
4. Start using Proview
When finished building it is time to start using Proview. This intention of
this guide is not to show you how. Instead please refer to documentation from
the proview homepage [www.proview.se]. There are though some final things you
must set up to be able to work with Proview.
Create directory :
/usr/pwrp/adm/db
This is the place that will keeps track of your projects and volumes aswell as
the different Proview-versions you have installed. If you already have a
Proview-version installed then this directory probably exists.
Copy some files to this directory (if they do not already exist)
> cp $pwre_croot/src/tools/pkg/deb/adm/pwr_* /usr/pwrp/adm/db/.
Create a file name pwr_projectlist.dat in this directory and add the following
line to this file:
%base X4.8.0 /home/robert/pwr/X4-8-0/rls_dbg
where the path is your build-root ($pwre_broot).
Add the following two lines to your .bashrc-file:
export pwra_db="/usr/pwrp/adm/db"
source $pwra_db/pwr_setup.sh
Voila, finished !
Powerlink (optional)
--------------------
Install
libpcap-dev
cmake
cmake-qt-gui
unpack openPOWERLINK-V1.08.2.zip
create build directories for MN and CN
openPOWERLINK-V1.08.2/build
openPOWERLINK-V1.08.2/buildcn
Configure and generate MN with cmake-gui from openPOWERLINK-V1.08.2/build, and build with make
Configure and generate CN with cmake-gui from openPOWERLINK-V1.08.2/buildcn, and build with make
Building Motif version
----------------------
If someone for some unfathomable reason wants to build the old motif version
the following packages has to be installed
libx11-dev
libxt-dev
libmotif-dev
x11proto-print-dev
libxmu-dev
libxpm-dev
libxp-dev
imlib11-dev
build with
> pwre build_all_modules motif
Start wb and motif with
> wb_motif
> rt_xtt_motif
Build on FreeBSD
----------------
Install gnome2 (pkg_add -r gnome2)
Create a link /bin/bash to /usr/local/bin/bash (ln -s /usr/local/bin/bash /bin/bash)
Set default shell of the build user to bash (/usr/local/bin/bash)
Install BerkeleyDB 4.8 (pkg_add -r db48)
Install jdk (cd /usr/port/java/jdk16; make install clean)
Install doxygen (cd /usr/devel/doxygen; make install clean)
Continue to build Proview following the instructions in section 2 or 3 above.
Increase the default value of kern.ipc.shmmax to 67108864. Add the following row to /etc/sysctl.conf
kern.ipc.shmmax=67108864
Build on Mac OS X 1.6
---------------------
Install xCode from the installation CD or download from ...
Download and install fink from www.finkproject.org.
Install gtk+2 (fink install gtk+2; fink install gtk+2-dev)
Download BerkeleyDB 4.8 from www.oracle.com/technetwork/database/berkeleydb/download
Install doxygen (fink install doxygen)
Download libiconv from http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz
Continue to build Proview following the instructions in section 2 or 3 above.
Add the following rows to /etc/sysctl.conf
kern.sysv.symmax=167772160
kern.sysv.shmseg=16
kern.sysv.shmall=65536
Building without a display
--------------------------
Install the xserver-xorg-video-dummy package:
> apt-get install xserver-xorg-video-dummy
Start the dummy display with:
> Xorg -noreset +extension GLX +extension RANDR +extension RENDER -config src/tools/dummy_display/xorg.conf :99 &
Set the DISPLAY environment variable accordingly:
> export DISPLAY=:99
Build proview as normal, either by executing the makefile:
> make
or by configuring the build yourself, see section "3. Thorough way" above.
Cross-compiling
---------------
To compile a 32-bit version of Proview on a 64-bit system, you need to install
multiarch support and add a 32-bit architecture:
> apt-get install multiarch
> dpkg --add-architecture i386
> apt-get update
Then you need to install the libraries required to build 32-bit executables:
> apt-get install gcc-multilib g++-multilib libc6:i386 libc6-dev:i386 libc6-i386 libc6-dev-i386
You also need 32-bit versions of all the libraries required by Proview. The
easiest way to get these is to copy the /usr/lib/i386-linux-gnu folder and the
/lib/i386-linux-gnu/ folder from a 32-bit machine to your 64-bit machine. If
you try to install all libraries using "apt-get install x:i386" you will most
likely run into problems with some 32-bit packages replacing your 64-bit
packages and vice versa.
After that, you should be able to compile 32-bit versions by specifying "x86"
as hardware during "pwre add", see section "3.2 Creating the environment" above.
> pwre add proview32bit
...
Hardware [x86] ? x86
#How to build ProviewR
Authors: Robert Karlsson & Christoffer Ackelman
## 1. Preparations
Install the following packages
Mandatory:
> apt-get install doxygen flex gcc g++ make libasound2-dev libdb5.3-dev libdb5.3++-dev
Optional:
> apt-get install openjdk-6-jdk libmysql++-dev libsqlite3-dev libhdf5-openmpi-dev libusb-1.0.0-dev
**openjdk-6-jdk** adds support for the java web interface.
**libmysql++-dev**, **libsqlite3-dev** and **libgdf5-openmpi-dev** add support for **mysql**, **sqlite** and **hdf5** history databases respectively.
**libusb-1.0.0-dev** adds support for USB I/O cards (Velleman)
Mandatory if you want to build the QT version of ProviewR:
> apt-get install qt4-dev-tools libphonon-dev
Mandatory if you want to build the GTK version of ProviewR:
> apt-get install libgtk2.0-dev
Optional if you build the GTK version of ProviewR:
> apt-get install librsvg2-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
**librsvg2-dev** adds support for SVG images in Ge in the GTK version of ProviewR.
**libgstreamer1.0-dev** and **libgstreamer-plugins-base1.0-dev** adds support for network video cameras in the GTK version of ProviewR.
**OBS!** If you do not have a valid display when building ProviewR, or build ProviewR on a server, see section "Building without a display" below
## 2. Easy way
Unpack the source package
> tar -xzvf pwrsrc_4.8.0.tar.gz
Enter the sourcecode root directory
> cd pwr_4.8.0
Execute the makefile
> make
When the compilation is finished, follow the instructions to insert the three lines in your .bashrc file.
## 3. Thorough way
This is a more thorough way to install the development environment, which is recommended if you will make a lots of changes in the source code and handle different version of ProviewR.
### 3.1 Setting up the environment
The first thing to do is to set up your environment properly. Add the
following lines to .bashrc:
> export pwre_bin="/home/robert/x5-6-1/src/tools/pwre/src/os_linux"
export pwre_dir_symbols="$pwre_bin/dir_symbols.mk"
source $pwre_bin/pwre_function
export pwre_env_db="/home/robert/pwre_new"
Replace /home/robert/x5-6-1 with the directory where you unpacked the sources.
### 3.2 Creating the environment
Creating and handling your environment is done with the pwre-function (added by sourcing $pwre_bin/pwre_function). See section "Cross-compiling" below about compiling a 32-bit version of ProviewR on a 64-bit machine.
> pwre
shows all possibilites of the pwre build script.
Add an environment named 'x561x86' (choose any name you like).
> pwre add x561x86
> Source root [...] ? /home/robert/x5-6-1/src (where /home/robert/x5-6-1 is replaced with the directory where you unpacked the sources)
Import root [] ?
Build root [...] ? /home/robert/x5-6-1/rls_dbg
Build type [dbg] ?
OS [linux] ? (linux or macos)
Hardware [x86] ? (x86 or x86_64)
Description ? Robert's environment (Optional description)
List all existing environments:
> pwre list
> -- Defined environments:
x460x86
--
Initiate your new environment:
> pwre init x561x86
Now, create the build tree
> pwre create_all_modules
Now the environment is set up and we can start the build procedure.
### 3.3 Building ProviewR
ProviewR is divided into several modules which can be built separately. These modules are:
The ProviewR kernel module **rt**, the ProviewR workbench **wb**, and the ProviewR runtime interface **xtt**.
As well as a number of optional, vendor-specific libraries: **abb**, **bcomp**, **inor**, **java**, **klocknermoeller**, **misc**, **nmps**, **opc**, **otherio**, **othermanu**, **profibus**, **remote**, **sev**, **siemens**, **simul**, **ssabox**, **telemecanique**, **tlog**.
To build all modules from scratch and merge them:
> pwre build_all_modules
Otherwise, you can also build one module at a time. To "move" between the different modules
> pwre module wb (for example)
To build everything in the current module
> pwre build_all
To build parts of current module (for example lib/rt/src in kernel module)
> pwre build lib rt src
Each of the modules have their own build tree. When you are finished with a specific module it must be merged into the common build tree. This is done via:
> pwre merge
## 4. Start using ProviewR
When ProviewR has been built, there are a few final steps you have to do before you start using it.
Create directory that will keep track of your projects and volumes aswell as the different ProviewR-versions you have installed.
> mkdir /usr/pwrp/adm/db
Copy the default configuration files to this directory (if they do not already exist)
> cp $pwre_croot/src/tools/pkg/deb/adm/pwr_* /usr/pwrp/adm/db/.
Create a file name pwr_projectlist.dat in this directory and add the following line to this file:
> %base X5.6.1 /home/robert/X5-6-1/rls_dbg
where /home/robert/X5-6-1/rls_dbg is replaced by your build-root (see section 3.2).
Add the following two lines to your .bashrc-file:
> export pwra_db="/usr/pwrp/adm/db"
> source $pwra_db/pwr_setup.sh
Voila, finished !
## Powerlink (optional)
Install the following packages:
> apt-get install libpcap-dev cmake cmake-qt-gui
unpack openPOWERLINK_V2.7.1.tar.gz
> tar xvzf openPOWERLINK_V2.7.1.tar.gz
Go to the /stack/build/linux folder
> cd openPOWERLINK_V2.7.1.tar.gz/stack/build/linux
Use cmake to generate makefiles
> cmake -DMAKE_BUILD_TYPE=Release ../..
Compile and install
> make
> make install
## Note on building the QT version
If you get the error "No such file "thread/file_qt.h", then the -pthread flag was passed to the moc compiler. Remove the -pthread flag from $cinc in src/tools/bld/src/os_linux/hw_xx/variables.mk."
## Building without a display
Install the xserver-xorg-video-dummy package:
> apt-get install xserver-xorg-video-dummy
Start the dummy display with:
> Xorg -noreset +extension GLX +extension RANDR +extension RENDER -config src/tools/dummy_display/xorg.conf :99 &
Set the DISPLAY environment variable accordingly:
> export DISPLAY=:99
Build ProviewR as normal, either by executing the makefile:
> make
or by configuring the build yourself, see section "3. Thorough way" above.
## Cross-compiling
To compile a 32-bit version of ProviewR on a 64-bit system, you need to install
multiarch support and add a 32-bit architecture:
> apt-get install multiarch
> dpkg --add-architecture i386
> apt-get update
Then you need to install the libraries required to build 32-bit executables:
> apt-get install gcc-multilib g++-multilib libc6:i386 libc6-dev:i386 libc6-i386 libc6-dev-i386
You also need 32-bit versions of all the libraries required by ProviewR. The
easiest way to get these is to copy the /usr/lib/i386-linux-gnu folder and the
/lib/i386-linux-gnu/ folder from a 32-bit machine to your 64-bit machine. If
you try to install all libraries using "apt-get install x:i386" you will most
likely run into problems with some 32-bit packages replacing your 64-bit
packages and vice versa.
After that, you should be able to compile 32-bit versions by specifying "x86"
as hardware during "pwre add", see section "3.2 Creating the environment" above.
> pwre add proview32bit
...
Hardware [x86] ? x86
...@@ -47,7 +47,7 @@ else ...@@ -47,7 +47,7 @@ else
fi fi
# Setup pwre # Setup pwre
export pwre_bin=$root/src/tools/pwre/src/os_linux export pwre_bin=$root/src/tools/pwre/src
export pwre_env_db=$root/pwre_db export pwre_env_db=$root/pwre_db
source $pwre_bin/pwre_function source $pwre_bin/pwre_function
......
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
-include ../../special.mk
-include ../special.mk
-include special.mk
include $(pwre_dir_symbols) include $(pwre_dir_symbols)
-include $(pwre_kroot)/tools/bld/src/$(os_name)/$(hw_name)/$(type_name)_generic.mk -include $(pwre_kroot)/tools/bld/src/$(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
dirs : $(app_package_dir)/$(comp_name)$(dir_ext) dirs : $(app_package_dir)/$(comp_name)$(dir_ext)
...@@ -16,9 +8,5 @@ $(app_package_dir)/$(comp_name)$(dir_ext) : ...@@ -16,9 +8,5 @@ $(app_package_dir)/$(comp_name)$(dir_ext) :
@ echo "Create directory " $(app_package_dir)/$(comp_name)$(dir_ext) @ echo "Create directory " $(app_package_dir)/$(comp_name)$(dir_ext)
@ $(mkdir) -p $(mkdirflags) $(app_package_dir)/$(comp_name)$(dir_ext) @ $(mkdir) -p $(mkdirflags) $(app_package_dir)/$(comp_name)$(dir_ext)
-include ../../special.mk
-include ../special.mk
-include special.mk
-include special.mk
...@@ -2,21 +2,12 @@ include $(pwre_dir_symbols) ...@@ -2,21 +2,12 @@ include $(pwre_dir_symbols)
extern_java_sources := extern_java_sources :=
-include $(pwre_kroot)/tools/bld/src/$(os_name)/$(hw_name)/$(type_name)_generic.mk -include $(pwre_kroot)/tools/bld/src/$(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
# #
# Copy Gdh from rt_client # Copy Gdh from rt_client
# #
assets_dirs_fonts := ../../../fonts assets_dirs_fonts := ../fonts
assets_fonts_sources := $(sort \ assets_fonts_sources := $(sort \
$(foreach file, \ $(foreach file, \
...@@ -44,12 +35,8 @@ $(app_assets_dir)/fonts$(dir_ext) : ...@@ -44,12 +35,8 @@ $(app_assets_dir)/fonts$(dir_ext) :
@ echo "Create directory " $(app_assets_dir)/fonts$(dir_ext) @ echo "Create directory " $(app_assets_dir)/fonts$(dir_ext)
@ $(mkdir) -p $(mkdirflags) $(app_assets_dir)/fonts$(dir_ext) @ $(mkdir) -p $(mkdirflags) $(app_assets_dir)/fonts$(dir_ext)
$(app_assets_dir)/fonts/%.ttf : ../../../../assets/fonts/%.ttf $(app_assets_dir)/fonts/%.ttf : ../../assets/fonts/%.ttf
@ $(log_h_h) @ $(log_h_h)
@ $(cp) $(cpflags) $(source) $(target) @ $(cp) $(cpflags) $(source) $(target)
-include ../../special.mk
-include ../special.mk
-include special.mk -include special.mk
include $(pwre_dir_symbols) include $(pwre_dir_symbols)
-include $(pwre_kroot)/tools/bld/src/$(os_name)/$(hw_name)/$(type_name)_generic.mk -include $(pwre_kroot)/tools/bld/src/$(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
init: pwrxtt_build_init init: pwrxtt_build_init
...@@ -18,19 +10,14 @@ exe: pwrxtt_build_exe ...@@ -18,19 +10,14 @@ exe: pwrxtt_build_exe
pwrxtt_build_init : pwrxtt_build_init :
@ echo "Build PwrXtt init" @ echo "Build PwrXtt init"
@ $(pwre_sroot)/aapp/bld/src/.$(pwre_os)/.$(pwre_hw)/pwrxtt_build.sh init @ $(pwre_sroot)/aapp/bld/src/pwrxtt_build.sh init
pwrxtt_build_copy : pwrxtt_build_copy :
@ echo "Build PwrXtt copy" @ echo "Build PwrXtt copy"
@ $(pwre_sroot)/aapp/bld/src/.$(pwre_os)/.$(pwre_hw)/pwrxtt_build.sh copy @ $(pwre_sroot)/aapp/bld/src/pwrxtt_build.sh copy
pwrxtt_build_exe : pwrxtt_build_exe :
@ echo "Build PwrXtt exe" @ echo "Build PwrXtt exe"
@ $(pwre_sroot)/aapp/bld/src/.$(pwre_os)/.$(pwre_hw)/pwrxtt_build.sh exe @ $(pwre_sroot)/aapp/bld/src/pwrxtt_build.sh exe
-include ../../special.mk
-include ../special.mk
-include special.mk -include special.mk
#!/bin/bash
#
appname=PwrXtt
#
echo "Executing build.sh..." $PWRE_CONF_ANDROID
if [ ! "$PWRE_CONF_ANDROID" = "1" ]; then
echo "Android not installed"
exit
fi
if [ $1 = "copy" ]; then
if [ ! -e $pwre_broot/$pwre_os/$pwre_hw/bld/aapp/$appname ]; then
android create project \
--target 1 \
--name $appname \
--path $pwre_broot/$pwre_os/$pwre_hw/bld/aapp/$appname \
--activity MainActivity \
--package jpwr.pwrxtt
rm $pwre_broot/$pwre_os/$pwre_hw/bld/aapp/$appname/src/jpwr/pwrxtt/MainActivity.java
rm $pwre_broot/$pwre_os/$pwre_hw/bld/aapp/$appname/AndroidManifest.xml
rm -r $pwre_broot/$pwre_os/$pwre_hw/bld/aapp/$appname/res
fi
fi
if [ $1 = "copy" ]; then
source $pwre_bin/pwre_function
pwre build aapp manifest src
pwre build aapp pwrxtt src
pwre build aapp rt src
pwre build aapp jopg src
pwre build aapp app src
pwre build aapp res src
pwre build aapp assets src
fi
if [ $1 = "exe" ]; then
android update project \
--name $appname \
--target 1 \
--path $pwre_broot/$pwre_os/$pwre_hw/bld/aapp/$appname
cp /usr/local/android-sdk-linux/extras/android/support/v4/android-support-v4.jar \
$pwre_broot/$pwre_os/$pwre_hw/bld/aapp/$appname/libs/.
cd $pwre_broot/$pwre_os/$pwre_hw/bld/aapp/$appname
if [ -z "$pwre_keystore" ]; then
echo "pwre_keystore not defined, build debug application"
ant release
else
echo "Keystore used: $pwre_keystore"
ant release -Dkey.store=$pwre_keystore -Dkey.alias=pwrkey
fi
fi
...@@ -97,15 +97,7 @@ extern_java_sources := \ ...@@ -97,15 +97,7 @@ extern_java_sources := \
Graph.java,\ Graph.java,\
GrowFrameApplIfc.java GrowFrameApplIfc.java
-include $(pwre_kroot)/tools/bld/src/$(os_name)/$(hw_name)/$(type_name)_generic.mk -include $(pwre_kroot)/tools/bld/src/$(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
dirs : $(app_package_dir)/$(comp_name)$(dir_ext) dirs : $(app_package_dir)/$(comp_name)$(dir_ext)
...@@ -113,10 +105,4 @@ $(app_package_dir)/$(comp_name)$(dir_ext) : ...@@ -113,10 +105,4 @@ $(app_package_dir)/$(comp_name)$(dir_ext) :
@ echo "Create directory " $(app_package_dir)/$(comp_name)$(dir_ext) @ echo "Create directory " $(app_package_dir)/$(comp_name)$(dir_ext)
@ $(mkdir) -p $(mkdirflags) $(app_package_dir)/$(comp_name)$(dir_ext) @ $(mkdir) -p $(mkdirflags) $(app_package_dir)/$(comp_name)$(dir_ext)
-include ../../special.mk
-include ../special.mk
-include special.mk -include special.mk
include $(pwre_dir_symbols) include $(pwre_dir_symbols)
-include $(pwre_kroot)/tools/bld/src/$(os_name)/$(hw_name)/$(type_name)_generic.mk -include $(pwre_kroot)/tools/bld/src/$(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
local_objects := \ local_objects := \
$(release_root)/bld/$(type_name)/$(appname)/AndroidManifest.xml \ $(release_root)/bld/$(type_name)/$(appname)/AndroidManifest.xml \
...@@ -17,21 +9,16 @@ local_objects := \ ...@@ -17,21 +9,16 @@ local_objects := \
copy: $(local_objects) copy: $(local_objects)
$(release_root)/bld/$(type_name)/$(appname)/AndroidManifest.xml : ../../AndroidManifest.xml $(release_root)/bld/$(type_name)/$(appname)/AndroidManifest.xml : AndroidManifest.xml
@ $(log_h_h) @ $(log_h_h)
@ $(cp) $(cpflags) $(source) $(target) @ $(cp) $(cpflags) $(source) $(target)
$(release_root)/bld/$(type_name)/$(appname)/.project : ../../project $(release_root)/bld/$(type_name)/$(appname)/.project : project
@ $(log_h_h) @ $(log_h_h)
@ $(cp) $(cpflags) $(source) $(target) @ $(cp) $(cpflags) $(source) $(target)
$(release_root)/bld/$(type_name)/$(appname)/.classpath : ../../classpath $(release_root)/bld/$(type_name)/$(appname)/.classpath : classpath
@ $(log_h_h) @ $(log_h_h)
@ $(cp) $(cpflags) $(source) $(target) @ $(cp) $(cpflags) $(source) $(target)
-include ../../special.mk
-include ../special.mk
-include special.mk -include special.mk
include $(pwre_dir_symbols) include $(pwre_dir_symbols)
-include $(pwre_kroot)/tools/bld/src/$(os_name)/$(hw_name)/$(type_name)_generic.mk -include $(pwre_kroot)/tools/bld/src/$(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
dirs : $(app_package_dir)/$(comp_name)$(dir_ext) dirs : $(app_package_dir)/$(comp_name)$(dir_ext)
...@@ -17,8 +8,4 @@ $(app_package_dir)/$(comp_name)$(dir_ext) : ...@@ -17,8 +8,4 @@ $(app_package_dir)/$(comp_name)$(dir_ext) :
@ echo "Create directory " $(app_package_dir)/$(comp_name)$(dir_ext) @ echo "Create directory " $(app_package_dir)/$(comp_name)$(dir_ext)
@ $(mkdir) -p $(mkdirflags) $(app_package_dir)/$(comp_name)$(dir_ext) @ $(mkdir) -p $(mkdirflags) $(app_package_dir)/$(comp_name)$(dir_ext)
-include ../../special.mk
-include ../special.mk
-include special.mk -include special.mk
...@@ -2,30 +2,21 @@ include $(pwre_dir_symbols) ...@@ -2,30 +2,21 @@ include $(pwre_dir_symbols)
extern_java_sources := extern_java_sources :=
-include $(pwre_kroot)/tools/bld/src/$(os_name)/$(hw_name)/$(type_name)_generic.mk -include $(pwre_kroot)/tools/bld/src/$(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
# #
# Copy Gdh from rt_client # Copy Gdh from rt_client
# #
res_dirs_drawable := ../../../drawable res_dirs_drawable := ../drawable
res_dirs_drawable_hdpi := ../../../drawable-hdpi res_dirs_drawable_hdpi := ../drawable-hdpi
res_dirs_drawable_ldpi := ../../../drawable-ldpi res_dirs_drawable_ldpi := ../drawable-ldpi
res_dirs_drawable_mdpi := ../../../drawable-mdpi res_dirs_drawable_mdpi := ../drawable-mdpi
res_dirs_drawable_xhdpi := ../../../drawable-xhdpi res_dirs_drawable_xhdpi := ../drawable-xhdpi
res_dirs_layout := ../../../layout res_dirs_layout := ../layout
res_dirs_menu := ../../../menu res_dirs_menu := ../menu
res_dirs_values := ../../../values res_dirs_values := ../values
res_dirs_values_v11 := ../../../values-v11 res_dirs_values_v11 := ../values-v11
res_dirs_values_v14 := ../../../values-v14 res_dirs_values_v14 := ../values-v14
res_drawable_sources := $(sort \ res_drawable_sources := $(sort \
$(foreach file, \ $(foreach file, \
...@@ -195,48 +186,44 @@ $(app_res_dir)/values-v14$(dir_ext) : ...@@ -195,48 +186,44 @@ $(app_res_dir)/values-v14$(dir_ext) :
@ echo "Create directory " $(app_res_dir)/values-v14$(dir_ext) @ echo "Create directory " $(app_res_dir)/values-v14$(dir_ext)
@ $(mkdir) -p $(mkdirflags) $(app_res_dir)/values-v14$(dir_ext) @ $(mkdir) -p $(mkdirflags) $(app_res_dir)/values-v14$(dir_ext)
$(app_res_dir)/drawable/%.png : ../../../../res/drawable/%.png $(app_res_dir)/drawable/%.png : ../../res/drawable/%.png
@ $(log_h_h) @ $(log_h_h)
@ $(cp) $(cpflags) $(source) $(target) @ $(cp) $(cpflags) $(source) $(target)
$(app_res_dir)/drawable-hdpi/%.png : ../../../../res/drawable-hdpi/%.png $(app_res_dir)/drawable-hdpi/%.png : ../../res/drawable-hdpi/%.png
@ $(log_h_h) @ $(log_h_h)
@ $(cp) $(cpflags) $(source) $(target) @ $(cp) $(cpflags) $(source) $(target)
$(app_res_dir)/drawable-ldpi/%.png : ../../../../res/drawable-ldpi/%.png $(app_res_dir)/drawable-ldpi/%.png : ../../res/drawable-ldpi/%.png
@ $(log_h_h) @ $(log_h_h)
@ $(cp) $(cpflags) $(source) $(target) @ $(cp) $(cpflags) $(source) $(target)
$(app_res_dir)/drawable-mdpi/%.png : ../../../../res/drawable-mdpi/%.png $(app_res_dir)/drawable-mdpi/%.png : ../../res/drawable-mdpi/%.png
@ $(log_h_h) @ $(log_h_h)
@ $(cp) $(cpflags) $(source) $(target) @ $(cp) $(cpflags) $(source) $(target)
$(app_res_dir)/drawable-xhdpi/%.png : ../../../../res/drawable-xhdpi/%.png $(app_res_dir)/drawable-xhdpi/%.png : ../../res/drawable-xhdpi/%.png
@ $(log_h_h) @ $(log_h_h)
@ $(cp) $(cpflags) $(source) $(target) @ $(cp) $(cpflags) $(source) $(target)
$(app_res_dir)/layout/%.xml : ../../../../res/layout/%.xml $(app_res_dir)/layout/%.xml : ../../res/layout/%.xml
@ $(log_h_h) @ $(log_h_h)
@ $(cp) $(cpflags) $(source) $(target) @ $(cp) $(cpflags) $(source) $(target)
$(app_res_dir)/menu/%.xml : ../../../../res/menu/%.xml $(app_res_dir)/menu/%.xml : ../../res/menu/%.xml
@ $(log_h_h) @ $(log_h_h)
@ $(cp) $(cpflags) $(source) $(target) @ $(cp) $(cpflags) $(source) $(target)
$(app_res_dir)/values/%.xml : ../../../../res/values/%.xml $(app_res_dir)/values/%.xml : ../../res/values/%.xml
@ $(log_h_h) @ $(log_h_h)
@ $(cp) $(cpflags) $(source) $(target) @ $(cp) $(cpflags) $(source) $(target)
$(app_res_dir)/values-v11/%.xml : ../../../../res/values-v11/%.xml $(app_res_dir)/values-v11/%.xml : ../../res/values-v11/%.xml
@ $(log_h_h) @ $(log_h_h)
@ $(cp) $(cpflags) $(source) $(target) @ $(cp) $(cpflags) $(source) $(target)
$(app_res_dir)/values-v14/%.xml : ../../../../res/values-v14/%.xml $(app_res_dir)/values-v14/%.xml : ../../res/values-v14/%.xml
@ $(log_h_h) @ $(log_h_h)
@ $(cp) $(cpflags) $(source) $(target) @ $(cp) $(cpflags) $(source) $(target)
-include ../../special.mk
-include ../special.mk
-include special.mk -include special.mk
...@@ -33,17 +33,7 @@ extern_java_sources := \ ...@@ -33,17 +33,7 @@ extern_java_sources := \
PwrtStatus.java,\ PwrtStatus.java,\
Sub.java Sub.java
-include $(pwre_kroot)/tools/bld/src/$(type_name)_generic.mk
-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
# #
# Copy Gdh from rt_client # Copy Gdh from rt_client
...@@ -66,8 +56,4 @@ $(app_package_dir)/$(comp_name)/Gdh.java : $(pwre_sroot)/jpwr/rt_client/src/Gdh. ...@@ -66,8 +56,4 @@ $(app_package_dir)/$(comp_name)/Gdh.java : $(pwre_sroot)/jpwr/rt_client/src/Gdh.
@ $(log_h_h) @ $(log_h_h)
@ $(cp) $(cpflags) $(source) $(target) @ $(cp) $(cpflags) $(source) $(target)
-include ../../special.mk
-include ../special.mk
-include special.mk -include special.mk
all:
gcc -DHW_X86 -DOS_LINUX \
-I/proview/x3-2a/rls_dbg/os_linux/hw_x86/exp/inc -o rt_io_ssab.o \
-c rt_io_ssab.c
gcc -DHW_X86 -DOS_LINUX \
-I/proview/x3-2a/rls_dbg/os_linux/hw_x86/exp/inc -o rt_rtt.o \
-c rt_rtt.c
gcc -DHW_X86 -DOS_LINUX \
-I/usr/local/jdk1.2.2/include \
-I/proview/x3-2a/rls_dbg/os_linux/hw_x86/exp/inc -o Qcom.o \
-I/usr/local/jdk1.2.2/include/linux \
-I/usr/local/src/posix1b \
-c Qcom.c
gcc -DHW_X86 -DOS_LINUX \
-I/usr/local/jdk1.2.2/include \
-I/proview/x3-2a/rls_dbg/os_linux/hw_x86/exp/inc -o Gdh.o \
-I/usr/local/jdk1.2.2/include/linux \
-I/usr/local/src/posix1b \
-c Gdh.c
g++ -shared -DHW_X86 -DOS_LINUX \
-L/proview/x3-2a/rls_dbg/os_linux/hw_x86/exp/lib \
-L/usr/X11R6/lib \
-I/usr/local/jdk1.2.2/include \
-I/proview/x3-2a/rls_dbg/os_linux/hw_x86/exp/inc \
-I/usr/local/jdk1.2.2/include/linux \
/proview/x3-2a/rls_dbg/os_linux/hw_x86/bld/lib/co/*.o \
/proview/x3-2a/rls_dbg/os_linux/hw_x86/bld/lib/msg_dummy/*.o \
/proview/x3-2a/rls_dbg/os_linux/hw_x86/bld/lib/rt/*.o \
/proview/x3-2a/rls_dbg/os_linux/hw_x86/bld/lib/flow/*.o \
/proview/x3-2a/rls_dbg/os_linux/hw_x86/bld/lib/glow/*.o \
/proview/x3-2a/rls_dbg/os_linux/hw_x86/bld/lib/ge/*.o \
/proview/x3-2a/rls_dbg/os_linux/hw_x86/exp/obj/rt_io_user.o \
/proview/x3-2a/rls_dbg/os_linux/hw_x86/exp/obj/dtt_rttsys.o \
rt_io_ssab.o rt_rtt.o Qcom.o\
Gdh.o -o libgdh.so -lm -lpthread -lposix1b -lpwr_dtt \
-lMrm -lXm -lXpm -lXt -lX11 -lXext -lXp\
-lSM -lICE
test:
gcc test.c -o test -ljavagdh
libr:
gcc -shared -DHW_X86 -DOS_LINUX -L/proview/linux_dbg/os_linux/hw_x86/exp/lib -I/usr/local/jdk/include -I/proview/linux_dbg/os_linux/hw_x86/exp/inc -I/usr/local/jdk/include/linux /proview/linux_dbg/os_linux/hw_x86/bld/lib/co/*.o /proview/linux_dbg/os_linux/hw_x86/bld/lib/msg_dummy/*.o /proview/linux_dbg/os_linux/hw_x86/bld/lib/rt/*.o /usr/local/src/proview/bld_dbg/os_linux/hw_x86/exp/obj/rt_io_user.o ssabio.c rtt.c JavaPwrImp.c -o libjavagdh.so -lm -lpthread -lposix1b -lpwr_dtt
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
-include ../../special.mk
-include ../special.mk
-include special.mk
...@@ -95,16 +95,6 @@ local_java_sources := \ ...@@ -95,16 +95,6 @@ local_java_sources := \
# JopSliderbackground1.java \ # JopSliderbackground1.java \
# JopValve.java # JopValve.java
-include $(pwre_kroot)/tools/bld/src/$(os_name)/$(hw_name)/$(type_name)_generic.mk -include $(pwre_kroot)/tools/bld/src/$(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
-include ../../special.mk
-include ../special.mk
-include special.mk -include special.mk
...@@ -160,18 +160,8 @@ local_java_sources := \ ...@@ -160,18 +160,8 @@ local_java_sources := \
JopOp.java \ JopOp.java \
JopSessionRep.java JopSessionRep.java
-include $(pwre_kroot)/tools/bld/src/$(os_name)/$(hw_name)/$(type_name)_generic.mk -include $(pwre_kroot)/tools/bld/src/$(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
-include ../../special.mk
-include ../special.mk
-include special.mk -include special.mk
exe : $(doc_dir)/en_us/jprm/index.html exe : $(doc_dir)/en_us/jprm/index.html
...@@ -180,5 +170,3 @@ $(doc_dir)/en_us/jprm/index.html : ...@@ -180,5 +170,3 @@ $(doc_dir)/en_us/jprm/index.html :
@ echo "Generating javadoc for rt, jop and jopg" @ echo "Generating javadoc for rt, jop and jopg"
@ if [ ! -e $(doc_dir)/en_us/jprm ]; then mkdir $(doc_dir)/en_us/jprm; fi @ if [ ! -e $(doc_dir)/en_us/jprm ]; then mkdir $(doc_dir)/en_us/jprm; fi
@ javadoc -Xdoclint:none -d $(doc_dir)/en_us/jprm $(pwre_sroot)/jpwr/rt/src/*.java $(pwre_sroot)/jpwr/jop/src/*.java $(pwre_sroot)/jpwr/jopg/src/*.java @ javadoc -Xdoclint:none -d $(doc_dir)/en_us/jprm $(pwre_sroot)/jpwr/rt/src/*.java $(pwre_sroot)/jpwr/jop/src/*.java $(pwre_sroot)/jpwr/jopg/src/*.java
# makefile -- <short description>
#
# PROVIEW/R
# Copyright (C) 1996 by Comator Process AB.
#
# <Description>.
#
vpath %.java $(hw_source):$(os_source):$(co_source)
source_dirs = $(hw_source) $(os_source) $(co_source)
jop_classes := \
$(bld_dir)/Ge.class
export_jop := \
$(jop_classes)
clean_jop := $(patsubst %.class,clean_%.class,$(export_jop))
.PHONY : all init copy lib exe clean realclean\
$(clean_jop)
all : init copy
init :
copy :
lib : $(export_jop)
exe :
clean :
realclean : clean $(clean_jop)
...@@ -45,19 +45,6 @@ local_java_sources := \ ...@@ -45,19 +45,6 @@ local_java_sources := \
JopcDisksup.java, \ JopcDisksup.java, \
JopcSsab_safetyswitch.java JopcSsab_safetyswitch.java
-include $(pwre_kroot)/tools/bld/src/$(os_name)/$(hw_name)/$(type_name)_generic.mk -include $(pwre_kroot)/tools/bld/src/$(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
-include ../../special.mk
-include ../special.mk
-include special.mk -include special.mk
...@@ -99,19 +99,6 @@ local_java_sources := \ ...@@ -99,19 +99,6 @@ local_java_sources := \
GrowFrameApplIfc.java,\ GrowFrameApplIfc.java,\
GrowFrame.java GrowFrame.java
-include $(pwre_kroot)/tools/bld/src/$(os_name)/$(hw_name)/$(type_name)_generic.mk -include $(pwre_kroot)/tools/bld/src/$(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
-include ../../special.mk
-include ../special.mk
-include special.mk -include special.mk
...@@ -53,16 +53,6 @@ local_java_sources = \ ...@@ -53,16 +53,6 @@ local_java_sources = \
HistServer.java HistServer.java
-include $(pwre_kroot)/tools/bld/src/$(os_name)/$(hw_name)/$(type_name)_generic.mk -include $(pwre_kroot)/tools/bld/src/$(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
-include ../../special.mk
-include ../special.mk
-include special.mk -include special.mk
include $(pwre_dir_symbols)
local_java_sources = \
Gdh.java
-include $(pwre_kroot)/tools/bld/src/$(type_name)_generic.mk
-include special.mk
include $(pwre_dir_symbols)
local_java_sources = \
Gdh.java
#-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
-include ../../special.mk
-include ../special.mk
-include special.mk
# special.mk -- special makefile for rt_client
#
# To build library pwr_rt_client.
# This is a parsitic library that steals everything from jpwr/rt, except
# the Gdh class.
# When compiling Gdh.java it is placed in jpwr/rt and everything in jpwr/rt
# is then copied into pwr_rt_client.jar. The new Gdh.class is then deleted.
#
ifndef jpwr_generic_mk
jpwr_generic_mk := 1
ifndef variables_mk
-include $(pwre_kroot)/tools/bld/src/$(os_name)/$(hw_name)/variables.mk
endif
ifndef variables_mk
include $(pwre_kroot)/tools/bld/src/$(os_name)/variables.mk
endif
ifndef rules_mk
-include $(pwre_kroot)/tools/bld/src/$(os_name)/$(hw_name)/rules.mk
endif
ifndef rules_mk
include $(pwre_kroot)/tools/bld/src/$(os_name)/rules.mk
endif
vpath %.java $(hw_source):$(os_source):$(co_source)
vpath %.gif $(hw_source):$(os_source):$(co_source)
#VPATH = $(hw_source):$(os_source):$(co_source)
source_dirs = $(hw_source) $(os_source) $(co_source)
java_sources := $(sort \
$(foreach file, \
$(foreach dir, \
$(source_dirs), \
$(wildcard $(dir)/*.java) \
), $(notdir $(file)) \
) \
)
gif_sources := $(sort \
$(foreach file, \
$(foreach dir, \
$(source_dirs), \
$(wildcard $(dir)/*.gif) \
), $(notdir $(file)) \
) \
)
jpwr_name := pwr_$(comp_name)
export_lib := $(lib_dir)/$(jpwr_name).jar
java_classes := $(addsuffix .class, $(basename $(local_java_sources)))
gif_objects := $(addprefix $(bld_dir)/, $(gif_sources))
java_objects := $(addprefix $(bld_dir)/, $(java_classes))
objects := $(gif_objects) $(java_objects)
source_dependencies := $(notdir $(basename $(sources)))
source_dependencies := $(addprefix $(bld_dir)/, $(source_dependencies))
source_dependencies := $(addsuffix $(d_ext), $(source_dependencies))
.PHONY : all init copy lib exe clean realclean \
dirs clean_includes \
clean_bld clean_dirs clean_lib
# dirs $(clean_h_includes) $(clean_hpp_includes)
all : init copy lib exe
init : dirs
copy :
lib : $(export_lib)
exe :
dirs : $(bld_dir)$(dir_ext)
$(bld_dir)$(dir_ext) :
@ $(mkdir) $(mkdirflags) $(basename $@)/
clean : clean_bld clean_lib
realclean : clean clean_includes clean_dirs
clean_bld :
@ echo "Cleaning build directory"
@ $(rm) $(rmflags) $(bld_dir)/*
clean_dirs :
@ echo "Removing build directory"
@ $(rm) -r $(rmflags) $(bld_dir)
clean_lib :
@ echo "Removing archive $(notdir $(export_lib))"
@ $(rm) $(rmflags) $(export_lib)
clean_includes : $(clean_h_includes) $(clean_hpp_includes)
$(clean_h_includes) : clean_%.h : %.h
@ echo "Removing h-includes"
@ $(rm) $(rmflags) $(inc_dir)/$*.h
$(clean_hpp_includes) : clean_%.hpp : %.hpp
@ echo "Removing hpp-includes"
@ $(rm) $(rmflags) $(inc_dir)/$*.hpp
$(export_lib) : $(objects)
@ echo "Building archive $(notdir $(export_lib)) special"
@ if [ -e $(export_lib) ]; then \
$(rm) $(export_lib); \
fi
jar cfm $(export_lib) ../../manifest.stub
@ cd $(pwre_broot)/$(pwre_target)/bld; \
jar uf $(export_lib) jpwr/rt/*.class; \
rm jpwr/rt/Gdh.class;
#-include $(source_dependencies)
endif
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
-include ../../special.mk
-include ../special.mk
-include special.mk
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
-include ../../special.mk
-include ../special.mk
-include special.mk
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
-include ../../special.mk
-include ../special.mk
-include special.mk
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
-include ../../special.mk
-include ../special.mk
-include special.mk
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
-include ../../special.mk
-include ../special.mk
-include special.mk
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
-include ../../special.mk
-include ../special.mk
-include special.mk
...@@ -4,3 +4,6 @@ build_pwr : ...@@ -4,3 +4,6 @@ build_pwr :
@ if ./build.sh; then \ @ if ./build.sh; then \
echo "Proview built"; \ echo "Proview built"; \
fi fi
clean:
@ find rls/ -iname "*.o" -delete
\ No newline at end of file
include $(pwre_dir_symbols)
-include $(pwre_kroot)/tools/bld/src/$(type_name)_generic.mk
copy : $(doc_dir)/sv_se/orm/misc_plc_c.html \ copy : $(doc_dir)/sv_se/orm/misc_plc_c.html \
$(doc_dir)/en_us/orm/misc_plc_c.html $(doc_dir)/en_us/orm/misc_plc_c.html
$(doc_dir)/sv_se/orm/misc_plc_c.html : ../../misc_plc.c $(doc_dir)/sv_se/orm/misc_plc_c.html : misc_plc.c
@ echo "Generating html files for misc_plc sv_se..." @ echo "Generating html files for misc_plc sv_se..."
@ $(co_convert) -c -d $(doc_dir)/sv_se/orm "$(source)" @ $(co_convert) -c -d $(doc_dir)/sv_se/orm "$(source)"
$(doc_dir)/en_us/orm/misc_plc_c.html : ../../misc_plc.c $(doc_dir)/en_us/orm/misc_plc_c.html : misc_plc.c
@ echo "Generating html files for misc_plc en_us..." @ echo "Generating html files for misc_plc en_us..."
@ $(co_convert) -c -d $(doc_dir)/en_us/orm "$(source)" @ $(co_convert) -c -d $(doc_dir)/en_us/orm "$(source)"
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
-include ../../special.mk
-include ../special.mk
-include special.mk
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
-include ../../special.mk
-include ../special.mk
-include special.mk
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
-include ../../special.mk
-include ../special.mk
-include special.mk
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
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
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
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
This diff is collapsed.
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
-include ../../special.mk
-include ../special.mk
-include special.mk
copy : $(doc_dir)/sv_se/orm/nmps_plc_c.html \
$(doc_dir)/en_us/orm/nmps_plc_c.html \
$(doc_dir)/sv_se/orm/nmps_plc_display_c.html \
$(doc_dir)/en_us/orm/nmps_plc_display_c.html \
$(doc_dir)/sv_se/orm/nmps_plc_runtime_c.html \
$(doc_dir)/en_us/orm/nmps_plc_runtime_c.html \
$(doc_dir)/sv_se/orm/nmps_plc_macro_h.html \
$(doc_dir)/en_us/orm/nmps_plc_macro_h.html \
$(doc_dir)/sv_se/orm/nmps_plc_c.html : ../../nmps_plc.c
@ echo "Generating html files for nmps_plc sv_se..."
@ $(co_convert) -c -d $(doc_dir)/sv_se/orm "$(source)"
$(doc_dir)/en_us/orm/nmps_plc_c.html : ../../nmps_plc.c
@ echo "Generating html files for nmps_plc en_us..."
@ $(co_convert) -c -d $(doc_dir)/en_us/orm "$(source)"
$(doc_dir)/sv_se/orm/nmps_plc_display_c.html : ../../nmps_plc_display.c
@ echo "Generating html files for nmps_plc_display sv_se..."
@ $(co_convert) -c -d $(doc_dir)/sv_se/orm "$(source)"
$(doc_dir)/en_us/orm/nmps_plc_display_c.html : ../../nmps_plc_display.c
@ echo "Generating html files for nmps_plc_display en_us..."
@ $(co_convert) -c -d $(doc_dir)/en_us/orm "$(source)"
$(doc_dir)/sv_se/orm/nmps_plc_runtime_c.html : ../../nmps_plc_runtime.c
@ echo "Generating html files for nmps_plc_runtime sv_se..."
@ $(co_convert) -c -d $(doc_dir)/sv_se/orm "$(source)"
$(doc_dir)/en_us/orm/nmps_plc_runtime_c.html : ../../nmps_plc_runtime.c
@ echo "Generating html files for nmps_plc_runtime en_us..."
@ $(co_convert) -c -d $(doc_dir)/en_us/orm "$(source)"
$(doc_dir)/sv_se/orm/nmps_plc_macro_h.html : ../../nmps_plc_macro.h
@ echo "Generating html files for nmps_plc_macro sv_se..."
@ $(co_convert) -c -d $(doc_dir)/sv_se/orm "$(source)"
$(doc_dir)/en_us/orm/nmps_plc_macro_h.html : ../../nmps_plc_macro.h
@ echo "Generating html files for nmps_plc_macro en_us..."
@ $(co_convert) -c -d $(doc_dir)/en_us/orm "$(source)"
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
-include ../../special.mk
-include ../special.mk
-include special.mk
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
-include ../../special.mk
-include ../special.mk
-include special.mk
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
-include ../../special.mk
-include ../special.mk
-include special.mk
...@@ -1684,7 +1684,7 @@ SOAP_FMAC5 int SOAP_FMAC6 __s0__Browse(struct soap* soap, ...@@ -1684,7 +1684,7 @@ SOAP_FMAC5 int SOAP_FMAC6 __s0__Browse(struct soap* soap,
} else { } else {
// Return attributes and children // Return attributes and children
pwr_tOName pname; pwr_tOName pname;
pwr_tOName itemname; char itemname[220];
pwr_tObjName aname; pwr_tObjName aname;
gdh_sAttrDef* bd; gdh_sAttrDef* bd;
int rows; int rows;
......
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
-include ../../special.mk
-include ../special.mk
-include special.mk
include $(pwre_dir_symbols)
-include $(pwre_kroot)/tools/bld/src/$(type_name)_generic.mk
ifndef variables_mk ifndef variables_mk
-include $(pwre_kroot)/tools/bld/src/$(os_name)/$(hw_name)/variables.mk include $(pwre_kroot)/tools/bld/src/variables.mk
endif
ifndef variables_mk
include $(pwre_kroot)/tools/bld/src/$(os_name)/variables.mk
endif endif
export_cpp = $(bld_dir)/stdsoap2.o export_cpp = $(bld_dir)/stdsoap2.o
export_h = $(inc_dir)/stdsoap2.h $(inc_dir)/Service.nsmap export_h = $(inc_dir)/stdsoap2.h $(inc_dir)/Service.nsmap
...@@ -14,11 +14,10 @@ lib : $(export_lib) export_lib_local ...@@ -14,11 +14,10 @@ lib : $(export_lib) export_lib_local
export_lib_local : $(export_cpp) $(export_h) export_lib_local : $(export_cpp) $(export_h)
@ $(ar) -r $(export_lib) $(export_cpp) @ $(ar) -r $(export_lib) $(export_cpp)
$(bld_dir)/stdsoap2.o : stdsoap2.cpp
$(bld_dir)/stdsoap2.o : ../../stdsoap2.cpp $(inc_dir)/stdsoap2.h : stdsoap2.h
$(inc_dir)/stdsoap2.h : ../../stdsoap2.h
$(inc_dir)/Service.nsmap : ../../Service.nsmap $(inc_dir)/Service.nsmap : Service.nsmap
@ echo "Export $(source)" @ echo "Export $(source)"
@ $(cp) $(cpflags) $(source) $(target) @ $(cp) $(cpflags) $(source) $(target)
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
-include ../../special.mk
-include ../special.mk
-include special.mk
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
-include ../../special.mk
-include ../special.mk
-include special.mk
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
-include ../../special.mk
-include ../special.mk
-include special.mk
include $(pwre_dir_symbols) include $(pwre_dir_symbols)
ifndef variables_mk ifndef variables_mk
-include $(pwre_kroot)/tools/bld/src/$(os_name)/$(hw_name)/variables.mk include $(pwre_kroot)/tools/bld/src/variables.mk
endif
ifndef variables_mk
include $(pwre_kroot)/tools/bld/src/$(os_name)/variables.mk
endif endif
ifndef rules_mk
-include $(pwre_kroot)/tools/bld/src/$(os_name)/$(hw_name)/rules.mk
endif
ifndef rules_mk ifndef rules_mk
include $(pwre_kroot)/tools/bld/src/$(os_name)/rules.mk -include $(pwre_kroot)/tools/bld/src/rules.mk
endif endif
vpath %.gif $(co_source)
vpath %.png $(co_source)
vpath %.gif $(hw_source):$(os_source):$(co_source) source_dirs := $(co_source)
vpath %.png $(hw_source):$(os_source):$(co_source)
source_dirs := $(hw_source) $(os_source) $(co_source)
gif_sources := $(sort \ gif_sources := $(sort \
$(foreach file, \ $(foreach file, \
...@@ -68,7 +61,7 @@ $(doc_dir)/en_us/orm/%.png : %.png ...@@ -68,7 +61,7 @@ $(doc_dir)/en_us/orm/%.png : %.png
@ $(cp) $(cpflags) $(source) $(doc_dir)/sv_se/orm @ $(cp) $(cpflags) $(source) $(doc_dir)/sv_se/orm
@ $(cp) $(cpflags) $(source) $(doc_dir)/help @ $(cp) $(cpflags) $(source) $(doc_dir)/help
$(doc_dir)/en_us/orm/%.html : ../../%.html $(doc_dir)/en_us/orm/%.html : %.html
@ $(log_h_h) @ $(log_h_h)
@ $(cp) $(cpflags) $(source) $(target) @ $(cp) $(cpflags) $(source) $(target)
@ $(cp) $(cpflags) $(source) $(doc_dir)/sv_se/orm @ $(cp) $(cpflags) $(source) $(doc_dir)/sv_se/orm
...@@ -103,7 +96,3 @@ $(clean_png) : clean_%.png : %.png ...@@ -103,7 +96,3 @@ $(clean_png) : clean_%.png : %.png
$(clean_html) : clean_%.html : %.html $(clean_html) : clean_%.html : %.html
@ $(rm) $(rmflags) $(doc_dir)/orm/$*.html @ $(rm) $(rmflags) $(doc_dir)/orm/$*.html
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
-include ../../special.mk
-include ../special.mk
-include special.mk
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
-include ../../special.mk
-include ../special.mk
-include special.mk
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
-include ../../special.mk
-include ../special.mk
-include special.mk
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
-include ../../special.mk
-include ../special.mk
-include special.mk
include $(pwre_dir_symbols) include $(pwre_dir_symbols)
ifndef variables_mk ifndef variables_mk
-include $(pwre_kroot)/tools/bld/src/$(os_name)/$(hw_name)/variables.mk include $(pwre_kroot)/tools/bld/src/variables.mk
endif
ifndef variables_mk
include $(pwre_kroot)/tools/bld/src/$(os_name)/variables.mk
endif endif
ifndef rules_mk ifndef rules_mk
-include $(pwre_kroot)/tools/bld/src/$(os_name)/$(hw_name)/rules.mk include $(pwre_kroot)/tools/bld/src/rules.mk
endif
ifndef rules_mk
include $(pwre_kroot)/tools/bld/src/$(os_name)/rules.mk
endif endif
vpath %.sh $(hw_source):$(os_source):$(co_source) vpath %.sh $(co_source)
vpath %.pwr_com $(hw_source):$(os_source):$(co_source) vpath %.pwr_com $(co_source)
source_dirs = $(hw_source) $(os_source) $(co_source) source_dirs := $(co_source)
sh_sources := $(sort \ sh_sources := $(sort \
$(foreach file, \ $(foreach file, \
...@@ -77,5 +71,3 @@ $(clean_sh) : clean_%.sh : %.sh ...@@ -77,5 +71,3 @@ $(clean_sh) : clean_%.sh : %.sh
$(clean_pwr_com) : clean_%.pwr_com : %.pwr_com $(clean_pwr_com) : clean_%.pwr_com : %.pwr_com
@ rm $(exe_dir)/$*.pwr_com @ rm $(exe_dir)/$*.pwr_com
include $(pwre_dir_symbols)
ifndef variables_mk
include $(pwre_croot)/src/tools/bld/src/variables.mk
endif
ifndef rules_mk
include $(pwre_croot)/src/tools/bld/src/rules.mk
endif
.PHONY : all init copy lib exe clean realclean\
$(clean_c)
all : init copy lib | silent
init : silent
copy : $(inc_dir)/objdict.h | silent
lib : silent
exe : silent
clean :
realclean : clean $(clean_obj)
silent :
@ :
.SUFFIXES:
$(inc_dir)/objdict.h : objdict.h
@ echo "Copying objdict.h"
@ $(cp) $(cpflags) $(source) $(target)
include $(pwre_dir_symbols) include $(pwre_dir_symbols)
ifndef variables_mk ifndef variables_mk
-include $(pwre_croot)/src/tools/bld/src/$(os_name)/$(hw_name)/variables.mk include $(pwre_croot)/src/tools/bld/src/variables.mk
endif endif
ifndef variables_mk
include $(pwre_croot)/src/tools/bld/src/$(os_name)/variables.mk
endif
ifndef rules_mk ifndef rules_mk
-include $(pwre_croot)/src/tools/bld/src/$(os_name)/$(hw_name)/rules.mk include $(pwre_croot)/src/tools/bld/src/rules.mk
endif endif
ifndef rules_mk
include $(pwre_croot)/src/tools/bld/src/$(os_name)/rules.mk
endif
.PHONY : all init copy lib exe clean realclean\ .PHONY : all init copy lib exe clean realclean\
$(clean_c) $(clean_c)
...@@ -42,24 +34,18 @@ silent : ...@@ -42,24 +34,18 @@ silent :
# @ echo "Copying libusbio.a" # @ echo "Copying libusbio.a"
# @ $(cp) $(cpflags) $(source) $(target) # @ $(cp) $(cpflags) $(source) $(target)
$(inc_dir)/libusbio.h : ../../libusbio.h $(inc_dir)/libusbio.h : libusbio.h
@ echo "Copying libusbio.h" @ echo "Copying libusbio.h"
@ $(cp) $(cpflags) $(source) $(target) @ $(cp) $(cpflags) $(source) $(target)
$(inc_dir)/openSocket.h : ../../openSocket.h $(inc_dir)/openSocket.h : openSocket.h
@ echo "Copying openSocket.h" @ echo "Copying openSocket.h"
@ $(cp) $(cpflags) $(source) $(target) @ $(cp) $(cpflags) $(source) $(target)
$(inc_dir)/setport.h : ../../setport.h $(inc_dir)/setport.h : setport.h
@ echo "Copying setport.h" @ echo "Copying setport.h"
@ $(cp) $(cpflags) $(source) $(target) @ $(cp) $(cpflags) $(source) $(target)
$(inc_dir)/pwr_arduino_uno.ino : ../../pwr_arduino_uno.ino $(inc_dir)/pwr_arduino_uno.ino : pwr_arduino_uno.ino
@ echo "Copying pwr_arduino_uno.ino" @ echo "Copying pwr_arduino_uno.ino"
@ $(cp) $(cpflags) $(source) $(target) @ $(cp) $(cpflags) $(source) $(target)
include $(pwre_dir_symbols) include $(pwre_dir_symbols)
ifndef variables_mk ifndef variables_mk
-include $(pwre_kroot)/tools/bld/src/$(os_name)/$(hw_name)/variables.mk include $(pwre_kroot)/tools/bld/src/variables.mk
endif
ifndef variables_mk
include $(pwre_kroot)/tools/bld/src/$(os_name)/variables.mk
endif endif
ifndef rules_mk ifndef rules_mk
-include $(pwre_kroot)/tools/bld/src/$(os_name)/$(hw_name)/rules.mk include $(pwre_kroot)/tools/bld/src/rules.mk
endif
ifndef rules_mk
include $(pwre_kroot)/tools/bld/src/$(os_name)/rules.mk
endif endif
vpath %.xdd $(hw_source):$(os_source):$(co_source) vpath %.xdd $(co_source)
source_dirs = $(hw_source) $(os_source) $(co_source) source_dirs := $(co_source)
xdd_sources := $(sort \ xdd_sources := $(sort \
$(foreach file, \ $(foreach file, \
...@@ -57,5 +51,3 @@ $(export_xdd) : $(exe_dir)/%.xdd : %.xdd ...@@ -57,5 +51,3 @@ $(export_xdd) : $(exe_dir)/%.xdd : %.xdd
$(clean_xdd) : clean_%.xdd : %.xdd $(clean_xdd) : clean_%.xdd : %.xdd
@ rm $(exe_dir)/$*.xdd @ rm $(exe_dir)/$*.xdd
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
-include ../../special.mk
-include ../special.mk
-include special.mk
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
-include ../../special.mk
-include ../special.mk
-include special.mk
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
-include ../../special.mk
-include ../special.mk
-include special.mk
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
-include ../../special.mk
-include ../special.mk
-include special.mk
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
-include ../../special.mk
-include ../special.mk
-include special.mk
/*
* 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.
*/
/* rt_io_m_pb_profiboard.c -- io methods for the profibus master object
The PbMaster object serves as agent for one Profibus DP bus
The board we use is Profiboard from Softing
*/
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <sys/file.h>
#include <sys/ioctl.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/socket.h>
#include "co_cdh.h"
#include "pwr_basecomponentclasses.h"
#include "pwr_otherioclasses.h"
#include "rt_io_base.h"
#include "rt_io_bus.h"
#include "rt_io_msg.h"
#include "co_cdh.h"
#include "co_time.h"
#include "rt_mb_msg.h"
#include "rt_io_mb_locals.h"
#include "rt_io_agent_init.h"
static pwr_tStatus IoAgentInit(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 IoAgentClose(io_tCtx ctx, io_sAgent* ap);
/*----------------------------------------------------------------------------*\
Init method for the mb_master agent
\*----------------------------------------------------------------------------*/
static pwr_tStatus IoAgentInit(io_tCtx ctx, io_sAgent* ap)
{
io_sAgentLocal* local;
/* Allocate area for local data structure */
ap->Local = calloc(1, sizeof(io_sAgentLocal));
if (!ap->Local) {
errh_Error("ERROR config Modbus Master %s - %s", ap->Name, "calloc");
return IO__ERRINIDEVICE;
}
local = ap->Local;
local->initialized = TRUE;
return IO__SUCCESS;
}
/*----------------------------------------------------------------------------*\
Read method for the Modbus Master agent
\*----------------------------------------------------------------------------*/
static pwr_tStatus IoAgentRead(io_tCtx ctx, io_sAgent* ap)
{
io_sAgentLocal* local;
io_sRackLocal* local_rack;
pwr_tUInt16 sts;
io_sRack* rp;
pwr_tCid cid;
pwr_sClass_Modbus_TCP_Slave* sp;
local = (io_sAgentLocal*)ap->Local;
/* Do configuration check and initialize modules. */
rp = ap->racklist;
while (rp) {
cid = rp->Class;
while (ODD(gdh_GetSuperClass(cid, &cid, rp->Objid)))
;
switch (cid) {
case pwr_cClass_Modbus_TCP_Slave:
sp = (pwr_sClass_Modbus_TCP_Slave*)rp->op;
local_rack = rp->Local;
/* Start receving old data so the input buffer is flushed */
if (sp->Status == MB__NORMAL) {
sts = mb_recv_data(local_rack, rp, sp);
}
/* Request new data */
if (sp->Status == MB__NORMAL && sp->DisableSlave != 1) {
sts = mb_send_data(local_rack, rp, sp, mb_mSendMask_ReadReq);
}
break;
} /* End - switch ... */
rp = rp->next;
}
return IO__SUCCESS;
}
/*----------------------------------------------------------------------------*\
Write method for the Pb_Profiboard agent
\*----------------------------------------------------------------------------*/
static pwr_tStatus IoAgentWrite(io_tCtx ctx, io_sAgent* ap)
{
return IO__SUCCESS;
}
/*----------------------------------------------------------------------------*\
\*----------------------------------------------------------------------------*/
static pwr_tStatus IoAgentClose(io_tCtx ctx, io_sAgent* ap)
{
return IO__SUCCESS;
}
/*----------------------------------------------------------------------------*\
Every method to be exported to the workbench should be registred here.
\*----------------------------------------------------------------------------*/
pwr_dExport pwr_BindIoMethods(Modbus_Master) = { pwr_BindIoMethod(IoAgentInit),
pwr_BindIoMethod(IoAgentRead), pwr_BindIoMethod(IoAgentWrite),
pwr_BindIoMethod(IoAgentClose), pwr_NullMethod };
/*
* 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.
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <math.h>
#include <sys/file.h>
#include <sys/ioctl.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/socket.h>
#include "pwr_basecomponentclasses.h"
#include "pwr_otherioclasses.h"
#include "rt_io_base.h"
#include "rt_io_msg.h"
#include "rt_io_bus.h"
#include "rt_mb_msg.h"
#include "rt_io_mb_locals.h"
/*----------------------------------------------------------------------------*\
Init method for the Modbus module
\*----------------------------------------------------------------------------*/
static pwr_tStatus IoCardInit(
io_tCtx ctx, io_sAgent* ap, io_sRack* rp, io_sCard* cp)
{
io_sCardLocalMsg* local;
pwr_sClass_Modbus_Module* op;
int i;
op = (pwr_sClass_Modbus_Module*)cp->op;
local = ((io_sCardLocal*)cp->Local)->msg;
for (i = 0; i < IO_MAXCHAN; i++) {
local->scancount[i] = 0;
}
op->Status = pwr_eModbusModule_StatusEnum_StatusUnknown;
return IO__SUCCESS;
}
/*----------------------------------------------------------------------------*\
Read method for the Pb module
\*----------------------------------------------------------------------------*/
static pwr_tStatus IoCardRead(
io_tCtx ctx, io_sAgent* ap, io_sRack* rp, io_sCard* cp)
{
io_sCardLocalMsg* local;
pwr_sClass_Modbus_Module* op;
pwr_sClass_Modbus_TCP_Slave* slave;
op = (pwr_sClass_Modbus_Module*)cp->op;
local = ((io_sCardLocal*)cp->Local)->msg;
slave = (pwr_sClass_Modbus_TCP_Slave*)rp->op;
if (op->ScanInterval > 1) {
local->has_read_method = 1;
if (local->interval_cnt != 0) {
local->interval_cnt++;
if (local->interval_cnt >= op->ScanInterval)
local->interval_cnt = 0;
return IO__SUCCESS;
}
local->interval_cnt++;
}
if (slave->Status == MB__NORMAL) {
io_bus_card_read(ctx, rp, cp, slave->Inputs, NULL,
pwr_eByteOrderingEnum_BigEndian, pwr_eFloatRepEnum_FloatIntel);
}
// printf("Method Modbus_Module-IoCardRead\n");
return IO__SUCCESS;
}
/*----------------------------------------------------------------------------*\
Write method for the Pb module
\*----------------------------------------------------------------------------*/
static pwr_tStatus IoCardWrite(
io_tCtx ctx, io_sAgent* ap, io_sRack* rp, io_sCard* cp)
{
io_sCardLocalMsg* local;
pwr_sClass_Modbus_Module* op;
pwr_sClass_Modbus_TCP_Slave* slave;
op = (pwr_sClass_Modbus_Module*)cp->op;
local = ((io_sCardLocal*)cp->Local)->msg;
slave = (pwr_sClass_Modbus_TCP_Slave*)rp->op;
if (op->ScanInterval > 1) {
if (!local->has_read_method) {
if (local->interval_cnt != 0) {
local->interval_cnt++;
if (local->interval_cnt >= op->ScanInterval)
local->interval_cnt = 0;
return IO__SUCCESS;
}
local->interval_cnt++;
} else if (local->interval_cnt != 1)
return IO__SUCCESS;
}
if (slave->Status == MB__NORMAL) {
io_bus_card_write(ctx, cp, slave->Outputs, pwr_eByteOrderingEnum_BigEndian,
pwr_eFloatRepEnum_FloatIntel);
}
// printf("Method Modbus_Module-IoCardWrite\n");
return IO__SUCCESS;
}
/*----------------------------------------------------------------------------*\
Every method to be exported to the workbench should be registred here.
\*----------------------------------------------------------------------------*/
pwr_dExport pwr_BindIoMethods(Modbus_Module) = { pwr_BindIoMethod(IoCardInit),
pwr_BindIoMethod(IoCardRead), pwr_BindIoMethod(IoCardWrite), pwr_NullMethod };
/*
* 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.
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <math.h>
#include <sys/file.h>
#include <sys/ioctl.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/socket.h>
#include "pwr_basecomponentclasses.h"
#include "pwr_otherioclasses.h"
#include "rt_io_base.h"
#include "rt_io_msg.h"
#include "rt_io_bus.h"
#include "rt_mb_msg.h"
#include "rt_io_mb_locals.h"
/*----------------------------------------------------------------------------*\
Init method for the Modbus module
\*----------------------------------------------------------------------------*/
static pwr_tStatus IoCardInit(
io_tCtx ctx, io_sAgent* ap, io_sRack* rp, io_sCard* cp)
{
io_sCardLocal* local;
pwr_sClass_Modbus_ModuleReadWrite* op;
int i;
op = (pwr_sClass_Modbus_ModuleReadWrite*)cp->op;
local = (io_sCardLocal*)cp->Local;
for (i = 0; i < IO_MAXCHAN; i++) {
local->msg[0].scancount[i] = 0;
local->msg[1].scancount[i] = 0;
}
op->Read.Status = pwr_eModbusModule_StatusEnum_StatusUnknown;
op->Write.Status = pwr_eModbusModule_StatusEnum_StatusUnknown;
return IO__SUCCESS;
}
/*----------------------------------------------------------------------------*\
Read method for the Pb module
\*----------------------------------------------------------------------------*/
static pwr_tStatus IoCardRead(
io_tCtx ctx, io_sAgent* ap, io_sRack* rp, io_sCard* cp)
{
io_sCardLocal* local;
pwr_sClass_Modbus_ModuleReadWrite* op;
pwr_sClass_Modbus_TCP_Slave* slave;
op = (pwr_sClass_Modbus_ModuleReadWrite*)cp->op;
local = (io_sCardLocal*)cp->Local;
slave = (pwr_sClass_Modbus_TCP_Slave*)rp->op;
if (op->Read.ScanInterval > 1) {
local->msg[0].has_read_method = 1;
if (local->msg[0].interval_cnt != 0) {
local->msg[0].interval_cnt++;
if (local->msg[0].interval_cnt >= op->Read.ScanInterval)
local->msg[0].interval_cnt = 0;
return IO__SUCCESS;
}
local->msg[0].interval_cnt++;
}
if (slave->Status == MB__NORMAL) {
io_bus_card_read(ctx, rp, cp, slave->Inputs, NULL,
pwr_eByteOrderingEnum_BigEndian, pwr_eFloatRepEnum_FloatIntel);
}
return IO__SUCCESS;
}
/*----------------------------------------------------------------------------*\
Write method for the Pb module
\*----------------------------------------------------------------------------*/
static pwr_tStatus IoCardWrite(
io_tCtx ctx, io_sAgent* ap, io_sRack* rp, io_sCard* cp)
{
io_sCardLocal* local;
pwr_sClass_Modbus_ModuleReadWrite* op;
pwr_sClass_Modbus_TCP_Slave* slave;
op = (pwr_sClass_Modbus_ModuleReadWrite*)cp->op;
local = (io_sCardLocal*)cp->Local;
slave = (pwr_sClass_Modbus_TCP_Slave*)rp->op;
if (op->Write.ScanInterval > 1) {
if (!local->msg[1].has_read_method) {
if (local->msg[1].interval_cnt != 0) {
local->msg[1].interval_cnt++;
if (local->msg[1].interval_cnt >= op->Write.ScanInterval)
local->msg[1].interval_cnt = 0;
return IO__SUCCESS;
}
local->msg[1].interval_cnt++;
} else if (local->msg[1].interval_cnt != 1)
return IO__SUCCESS;
}
if (slave->Status == MB__NORMAL) {
io_bus_card_write(ctx, cp, slave->Outputs, pwr_eByteOrderingEnum_BigEndian,
pwr_eFloatRepEnum_FloatIntel);
}
// printf("Method Modbus_Module-IoCardWrite\n");
return IO__SUCCESS;
}
/*----------------------------------------------------------------------------*\
Every method to be exported to the workbench should be registred here.
\*----------------------------------------------------------------------------*/
pwr_dExport pwr_BindIoMethods(Modbus_ModuleReadWrite)
= { pwr_BindIoMethod(IoCardInit), pwr_BindIoMethod(IoCardRead),
pwr_BindIoMethod(IoCardWrite), pwr_NullMethod };
This diff is collapsed.
/*
* 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.
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <math.h>
#include <sys/file.h>
#include <sys/ioctl.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/socket.h>
#include "pwr_basecomponentclasses.h"
#include "pwr_otherioclasses.h"
#include "rt_io_base.h"
#include "rt_io_msg.h"
#include "rt_io_bus.h"
#include "rt_mb_msg.h"
#include "rt_io_mb_rtu.h"
/*----------------------------------------------------------------------------*\
Init method for the Modbus module
\*----------------------------------------------------------------------------*/
static pwr_tStatus IoCardInit(
io_tCtx ctx, io_sAgent* ap, io_sRack* rp, io_sCard* cp)
{
io_sCardLocalMsg* local;
pwr_sClass_Modbus_RTU_Module* op;
int i;
op = (pwr_sClass_Modbus_RTU_Module*)cp->op;
local = ((io_sCardLocal*)cp->Local)->msg;
for (i = 0; i < IO_MAXCHAN; i++) {
local->scancount[i] = 0;
}
op->Status = pwr_eModbusModule_StatusEnum_StatusUnknown;
return IO__SUCCESS;
}
/*----------------------------------------------------------------------------*\
Read method for the Modbus RTU module
\*----------------------------------------------------------------------------*/
static pwr_tStatus IoCardRead(
io_tCtx ctx, io_sAgent* ap, io_sRack* rp, io_sCard* cp)
{
io_sCardLocalMsg* local;
io_sRackLocal* local_rack = (io_sRackLocal*)rp->Local;
pwr_sClass_Modbus_RTU_Module* op;
pwr_sClass_Modbus_RTU_Slave* slave;
op = (pwr_sClass_Modbus_RTU_Module*)cp->op;
local = ((io_sCardLocal*)cp->Local)->msg;
slave = (pwr_sClass_Modbus_RTU_Slave*)rp->op;
if (op->ScanInterval > 1) {
local->has_read_method = 1;
if (local->interval_cnt != 0) {
local->interval_cnt++;
if (local->interval_cnt >= op->ScanInterval)
local->interval_cnt = 0;
return IO__SUCCESS;
}
local->interval_cnt++;
}
if (slave->Status == MB__NORMAL || local_rack->reset_inputs) {
io_bus_card_read(ctx, rp, cp, slave->Inputs, NULL,
pwr_eByteOrderingEnum_BigEndian, pwr_eFloatRepEnum_FloatIntel);
}
// printf("Method Modbus_RTU_Module-IoCardRead\n");
return IO__SUCCESS;
}
/*----------------------------------------------------------------------------*\
Write method for the Modbus RTU module
\*----------------------------------------------------------------------------*/
static pwr_tStatus IoCardWrite(
io_tCtx ctx, io_sAgent* ap, io_sRack* rp, io_sCard* cp)
{
io_sCardLocalMsg* local;
pwr_sClass_Modbus_RTU_Module* op;
pwr_sClass_Modbus_RTU_Slave* slave;
op = (pwr_sClass_Modbus_RTU_Module*)cp->op;
local = ((io_sCardLocal*)cp->Local)->msg;
slave = (pwr_sClass_Modbus_RTU_Slave*)rp->op;
if (op->ScanInterval > 1) {
if (!local->has_read_method) {
if (local->interval_cnt != 0) {
local->interval_cnt++;
if (local->interval_cnt >= op->ScanInterval)
local->interval_cnt = 0;
return IO__SUCCESS;
}
local->interval_cnt++;
} else if (local->interval_cnt != 1)
return IO__SUCCESS;
}
if (slave->Status == MB__NORMAL) {
io_bus_card_write(ctx, cp, slave->Outputs, pwr_eByteOrderingEnum_BigEndian,
pwr_eFloatRepEnum_FloatIntel);
}
// printf("Method Modbus_RTU_Module-IoCardWrite\n");
return IO__SUCCESS;
}
/*----------------------------------------------------------------------------*\
Every method to be exported to the workbench should be registred here.
\*----------------------------------------------------------------------------*/
pwr_dExport pwr_BindIoMethods(Modbus_RTU_Module)
= { pwr_BindIoMethod(IoCardInit), pwr_BindIoMethod(IoCardRead),
pwr_BindIoMethod(IoCardWrite), pwr_NullMethod };
This diff is collapsed.
/*
* 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.
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <math.h>
#include <sys/file.h>
#include <sys/ioctl.h>
#include <sys/types.h>
#include <unistd.h>
#include "pwr_basecomponentclasses.h"
#include "pwr_otherioclasses.h"
#include "rt_io_base.h"
#include "rt_io_msg.h"
#include "rt_io_bus.h"
#include "rt_mb_msg.h"
#include "rt_io_mb_rtu.h"
#include "co_time.h"
/*----------------------------------------------------------------------------*\
Init method for the Modbus server module
\*----------------------------------------------------------------------------*/
static pwr_tStatus IoCardInit(
io_tCtx ctx, io_sAgent* ap, io_sRack* rp, io_sCard* cp)
{
io_sServerModuleLocal* local;
pwr_sClass_Modbus_RTU_ServerModule* op;
int i;
op = (pwr_sClass_Modbus_RTU_ServerModule*)cp->op;
local = (io_sServerModuleLocal*)cp->Local;
for (i = 0; i < IO_MAXCHAN; i++) {
local->scancount[i] = 0;
}
op->Status = pwr_eModbusModule_StatusEnum_StatusUnknown;
return IO__SUCCESS;
}
/*----------------------------------------------------------------------------*\
Read method for the Modbus RTU server module
\*----------------------------------------------------------------------------*/
static pwr_tStatus IoCardRead(
io_tCtx ctx, io_sAgent* ap, io_sRack* rp, io_sCard* cp)
{
io_sServerModuleLocal* local;
io_sServerLocal* local_server;
pwr_sClass_Modbus_RTU_ServerModule* op;
pwr_sClass_Modbus_RTU_Server* server;
op = (pwr_sClass_Modbus_RTU_ServerModule*)cp->op;
local = (io_sServerModuleLocal*)cp->Local;
server = (pwr_sClass_Modbus_RTU_Server*)rp->op;
local_server = (io_sServerLocal*)rp->Local;
if (server->DisableServer || !local)
return IO__SUCCESS;
if (server->Status == MB__NORMAL) {
thread_MutexLock(&local_server->mutex);
io_bus_card_read(ctx, rp, cp, local->input_area, NULL,
pwr_eByteOrderingEnum_BigEndian, pwr_eFloatRepEnum_FloatIntel);
thread_MutexUnlock(&local_server->mutex);
}
// printf("Method Modbus_Module-IoCardRead\n");
return IO__SUCCESS;
}
/*----------------------------------------------------------------------------*\
Write method for the Modbus RTU server module
\*----------------------------------------------------------------------------*/
static pwr_tStatus IoCardWrite(
io_tCtx ctx, io_sAgent* ap, io_sRack* rp, io_sCard* cp)
{
io_sServerModuleLocal* local;
io_sServerLocal* local_server;
pwr_sClass_Modbus_RTU_ServerModule* op;
pwr_sClass_Modbus_RTU_Server* server;
op = (pwr_sClass_Modbus_RTU_ServerModule*)cp->op;
local = (io_sServerModuleLocal*)cp->Local;
server = (pwr_sClass_Modbus_RTU_Server*)rp->op;
local_server = (io_sServerLocal*)rp->Local;
if (server->DisableServer || !local)
return IO__SUCCESS;
if (server->Status == MB__NORMAL) {
thread_MutexLock(&local_server->mutex);
io_bus_card_write(ctx, cp, local->output_area,
pwr_eByteOrderingEnum_BigEndian, pwr_eFloatRepEnum_FloatIntel);
thread_MutexUnlock(&local_server->mutex);
}
// printf("Method Modbus_Module-IoCardWrite\n");
return IO__SUCCESS;
}
/*----------------------------------------------------------------------------*\
Every method to be exported to the workbench should be registred here.
\*----------------------------------------------------------------------------*/
pwr_dExport pwr_BindIoMethods(Modbus_RTU_ServerModule)
= { pwr_BindIoMethod(IoCardInit), pwr_BindIoMethod(IoCardRead),
pwr_BindIoMethod(IoCardWrite), pwr_NullMethod };
/*
* 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.
*/
/* rt_io_m_mb_rtu_slave.c -- io methods for a Modbus RTU slave */
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <sys/file.h>
#include <sys/ioctl.h>
#include <unistd.h>
#include "co_cdh.h"
#include "pwr_basecomponentclasses.h"
#include "pwr_otherioclasses.h"
#include "rt_io_base.h"
#include "rt_io_bus.h"
#include "rt_io_msg.h"
#include "co_cdh.h"
#include "co_time.h"
#include "rt_mb_msg.h"
#include "rt_io_mb_rtu.h"
/*----------------------------------------------------------------------------*\
Init method for the Modbus_TCP slave
\*----------------------------------------------------------------------------*/
static pwr_tStatus IoRackInit(io_tCtx ctx, io_sAgent* ap, io_sRack* rp)
{
io_sCardLocal* local_card;
io_sCard* cardp;
io_sRackLocal* local;
int no_di;
int no_do;
pwr_sClass_Modbus_RTU_Slave* op;
char name[196];
pwr_tStatus sts;
pwr_tCid cid;
io_sChannel* chanp;
int i;
sts = gdh_ObjidToName(rp->Objid, (char*)&name, sizeof(name), cdh_mNName);
errh_Info("Init of Modbus TCP Slave and Modules %s", name);
op = (pwr_sClass_Modbus_RTU_Slave*)rp->op;
rp->Local = calloc(1, sizeof(io_sRackLocal));
local = rp->Local;
op->Status = MB__NORMAL;
/* Do configuration check and initialize modules. */
cardp = rp->cardlist;
unsigned int prev_input_area_offset = 0;
unsigned int prev_output_area_offset = 0;
unsigned int input_area_offset = 0;
unsigned int output_area_offset = 0;
unsigned int input_area_chansize = 0;
unsigned int output_area_chansize = 0;
while (cardp) {
local_card = calloc(1, sizeof(*local_card));
cid = cardp->Class;
/* Find the super class */
while (ODD(gdh_GetSuperClass(cid, &cid, cardp->Objid)))
;
switch (cid) {
case pwr_cClass_Modbus_RTU_Module: {
pwr_sClass_Modbus_RTU_Module* modulep;
cardp->Local = local_card;
no_di = 0;
no_do = 0;
local_card->msg[0].input_area
= (void*)&(op->Inputs) + input_area_offset + input_area_chansize;
local_card->msg[0].output_area
= (void*)&(op->Outputs) + output_area_offset + output_area_chansize;
modulep = (pwr_sClass_Modbus_RTU_Module*)cardp->op;
modulep->Status = pwr_eModbusModule_StatusEnum_StatusUnknown;
io_bus_card_init(ctx, cardp, &input_area_offset, &input_area_chansize,
&output_area_offset, &output_area_chansize,
pwr_eByteOrderingEnum_BigEndian);
/* Count number of di and do */
for (i = 0; i < cardp->ChanListSize; i++) {
chanp = &cardp->chanlist[i];
switch (chanp->ChanClass) {
case pwr_cClass_ChanDi:
no_di++;
break;
case pwr_cClass_ChanDo:
no_do++;
break;
}
}
local_card->msg[0].input_size
= input_area_offset + input_area_chansize - prev_input_area_offset;
local_card->msg[0].output_size
= output_area_offset + output_area_chansize - prev_output_area_offset;
local_card->msg[0].no_di = no_di;
local_card->msg[0].no_do = no_do;
break;
}
} /* End - switch ... */
prev_input_area_offset = input_area_offset + input_area_chansize;
prev_output_area_offset = output_area_offset + output_area_chansize;
cardp = cardp->next;
}
local->input_size = input_area_offset + input_area_chansize;
local->output_size = output_area_offset + output_area_chansize;
return IO__SUCCESS;
}
/*----------------------------------------------------------------------------*\
Read method for the Modbus_TCP slave
\*----------------------------------------------------------------------------*/
static pwr_tStatus IoRackRead(io_tCtx ctx, io_sAgent* ap, io_sRack* rp)
{
return IO__SUCCESS;
}
/*----------------------------------------------------------------------------*\
Write method for the Modbus_TCP slave
\*----------------------------------------------------------------------------*/
static pwr_tStatus IoRackWrite(io_tCtx ctx, io_sAgent* ap, io_sRack* rp)
{
return IO__SUCCESS;
}
/*----------------------------------------------------------------------------*\
\*----------------------------------------------------------------------------*/
static pwr_tStatus IoRackClose(io_tCtx ctx, io_sAgent* ap, io_sRack* rp)
{
return IO__SUCCESS;
}
/*----------------------------------------------------------------------------*\
Every method to be exported to the workbench should be registred here.
\*----------------------------------------------------------------------------*/
pwr_dExport pwr_BindIoMethods(Modbus_RTU_Slave)
= { pwr_BindIoMethod(IoRackInit), pwr_BindIoMethod(IoRackRead),
pwr_BindIoMethod(IoRackWrite), pwr_BindIoMethod(IoRackClose),
pwr_NullMethod };
This diff is collapsed.
/*
* 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.
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <math.h>
#include <sys/file.h>
#include <sys/ioctl.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/socket.h>
#include "pwr_basecomponentclasses.h"
#include "pwr_otherioclasses.h"
#include "rt_io_base.h"
#include "rt_io_msg.h"
#include "rt_io_bus.h"
#include "rt_mb_msg.h"
#include "rt_io_mb_locals.h"
#include "co_time.h"
/*----------------------------------------------------------------------------*\
Init method for the Modbus module
\*----------------------------------------------------------------------------*/
static pwr_tStatus IoCardInit(
io_tCtx ctx, io_sAgent* ap, io_sRack* rp, io_sCard* cp)
{
io_sServerModuleLocal* local;
pwr_sClass_Modbus_TCP_ServerModule* op;
int i;
op = (pwr_sClass_Modbus_TCP_ServerModule*)cp->op;
local = (io_sServerModuleLocal*)cp->Local;
for (i = 0; i < IO_MAXCHAN; i++) {
local->scancount[i] = 0;
}
op->Status = pwr_eModbusModule_StatusEnum_StatusUnknown;
return IO__SUCCESS;
}
/*----------------------------------------------------------------------------*\
Read method for the Modbus TCP module
\*----------------------------------------------------------------------------*/
static pwr_tStatus IoCardRead(
io_tCtx ctx, io_sAgent* ap, io_sRack* rp, io_sCard* cp)
{
io_sServerModuleLocal* local;
io_sServerLocal* local_server;
pwr_sClass_Modbus_TCP_ServerModule* op;
pwr_sClass_Modbus_TCP_Server* server;
op = (pwr_sClass_Modbus_TCP_ServerModule*)cp->op;
local = (io_sServerModuleLocal*)cp->Local;
server = (pwr_sClass_Modbus_TCP_Server*)rp->op;
local_server = (io_sServerLocal*)rp->Local;
if (server->DisableServer || !local)
return IO__SUCCESS;
if (server->Status == MB__NORMAL) {
thread_MutexLock(&local_server->mutex);
io_bus_card_read(ctx, rp, cp, local->input_area, NULL,
pwr_eByteOrderingEnum_BigEndian, pwr_eFloatRepEnum_FloatIntel);
thread_MutexUnlock(&local_server->mutex);
}
// printf("Method Modbus_Module-IoCardRead\n");
return IO__SUCCESS;
}
/*----------------------------------------------------------------------------*\
Write method for the Pb module
\*----------------------------------------------------------------------------*/
static pwr_tStatus IoCardWrite(
io_tCtx ctx, io_sAgent* ap, io_sRack* rp, io_sCard* cp)
{
io_sServerModuleLocal* local;
io_sServerLocal* local_server;
pwr_sClass_Modbus_TCP_ServerModule* op;
pwr_sClass_Modbus_TCP_Server* server;
op = (pwr_sClass_Modbus_TCP_ServerModule*)cp->op;
local = (io_sServerModuleLocal*)cp->Local;
server = (pwr_sClass_Modbus_TCP_Server*)rp->op;
local_server = (io_sServerLocal*)rp->Local;
if (server->DisableServer || !local)
return IO__SUCCESS;
if (server->Status == MB__NORMAL) {
thread_MutexLock(&local_server->mutex);
io_bus_card_write(ctx, cp, local->output_area,
pwr_eByteOrderingEnum_BigEndian, pwr_eFloatRepEnum_FloatIntel);
thread_MutexUnlock(&local_server->mutex);
}
// printf("Method Modbus_Module-IoCardWrite\n");
return IO__SUCCESS;
}
/*----------------------------------------------------------------------------*\
Every method to be exported to the workbench should be registred here.
\*----------------------------------------------------------------------------*/
pwr_dExport pwr_BindIoMethods(Modbus_TCP_ServerModule)
= { pwr_BindIoMethod(IoCardInit), pwr_BindIoMethod(IoCardRead),
pwr_BindIoMethod(IoCardWrite), pwr_NullMethod };
This diff is collapsed.
/*
* 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.
*/
/* rt_io_m_motioncontrol_usbio.c -- I/O methods for class MotionControl_USBIO.
*/
#include "pwr_basecomponentclasses.h"
#include "pwr_otherioclasses.h"
#include "rt_io_base.h"
#include "rt_io_rack_init.h"
#include "rt_io_rack_close.h"
#include "rt_io_msg.h"
#include "libusbio.h"
#include "rt_io_m_motioncontrol_usb.h"
static pwr_tStatus IoRackInit(io_tCtx ctx, io_sAgent* ap, io_sRack* rp)
{
io_sLocalUSB* local;
int status;
int i;
unsigned int snum;
int found;
io_sCard* cp;
pwr_sClass_MotionControl_USB* op = (pwr_sClass_MotionControl_USB*)rp->op;
local = (io_sLocalUSB*)calloc(1, sizeof(io_sLocalUSB));
rp->Local = local;
for (i = 0; i < (int)sizeof(local->USB_Handle); i++) {
status = USBIO_Open(&local->USB_Handle[i]);
if (status) {
if (i == 0)
op->Status = status;
break;
}
/* Check is this card is configured */
status = USBIO_GetSerialNr(&local->USB_Handle[i], &snum);
if (!status) {
found = 0;
for (cp = rp->cardlist; cp; cp = cp->next) {
if (((pwr_sClass_MotionControl_USBIO*)cp->op)->Super.Address == snum) {
local->snum[i] = snum;
found = 1;
break;
}
}
if (!found) {
errh_Info("USBIO Serial number %d not configured", snum);
op->Status = USBIO_Close(&local->USB_Handle[i]);
i--;
continue;
}
} else
errh_Error("USBIO Serial number error '%s'", rp->Name);
}
errh_Info("Init of USBIO rack '%s'", rp->Name);
return IO__SUCCESS;
}
static pwr_tStatus IoRackClose(io_tCtx ctx, io_sAgent* ap, io_sRack* rp)
{
io_sLocalUSB* local = rp->Local;
pwr_sClass_MotionControl_USB* op = (pwr_sClass_MotionControl_USB*)rp->op;
int i;
for (i = 0; i < (int)sizeof(local->USB_Handle); i++) {
if (local->USB_Handle[i])
USBIO_Close(&local->USB_Handle[i]);
else
break;
}
op->Status = 0;
return IO__SUCCESS;
}
/* Every method should be registred here. */
pwr_dExport pwr_BindIoMethods(MotionControl_USB)
= { pwr_BindIoMethod(IoRackInit), pwr_BindIoMethod(IoRackClose),
pwr_NullMethod };
/* ra_io_m_motioncontrol_usb.h -- I/O methods for class MotionControl_USBIO. */
#ifndef ra_io_m_motioncontrol_usb_h
#define ra_io_m_motioncontrol_usb_h
#define USB_MAX_CARDS 50
typedef struct {
int USB_Handle[USB_MAX_CARDS];
unsigned int snum[USB_MAX_CARDS];
} io_sLocalUSB;
#endif
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment