mirror of
https://gitlab.com/prpl-foundation/intel/dsl_cpe_control.git
synced 2025-12-10 06:44:37 +01:00
Initial commit of DSL CPE Control Application source for prplwrt
This commit is contained in:
commit
f075b24495
69 changed files with 79892 additions and 0 deletions
0
ABOUT-NLS
Normal file
0
ABOUT-NLS
Normal file
0
AUTHORS
Normal file
0
AUTHORS
Normal file
0
COPYING
Normal file
0
COPYING
Normal file
367
LICENSE
Normal file
367
LICENSE
Normal file
|
|
@ -0,0 +1,367 @@
|
||||||
|
This source code is distributed under a dual license of GPL and BSD (2-clause).
|
||||||
|
Please choose the appropriate license for your intended usage.
|
||||||
|
|
||||||
|
1. BSD license (2-clause BSD license)
|
||||||
|
|
||||||
|
Copyright 2017, Intel Corporation
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without modification,
|
||||||
|
are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
|
* Redistributions of source code must retain the above copyright notice,
|
||||||
|
this list of conditions and the following disclaimer.
|
||||||
|
* Redistributions in binary form must reproduce the above copyright notice,
|
||||||
|
this list of conditions and the following disclaimer in the documentation
|
||||||
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||||
|
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
|
||||||
|
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
|
||||||
|
GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||||
|
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
|
||||||
|
OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
|
||||||
|
2. GNU GENERAL PUBLIC LICENSE
|
||||||
|
Version 2, June 1991
|
||||||
|
|
||||||
|
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
|
||||||
|
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
|
of this license document, but changing it is not allowed.
|
||||||
|
|
||||||
|
Preamble
|
||||||
|
|
||||||
|
The licenses for most software are designed to take away your
|
||||||
|
freedom to share and change it. By contrast, the GNU General Public
|
||||||
|
License is intended to guarantee your freedom to share and change free
|
||||||
|
software--to make sure the software is free for all its users. This
|
||||||
|
General Public License applies to most of the Free Software
|
||||||
|
Foundation's software and to any other program whose authors commit to
|
||||||
|
using it. (Some other Free Software Foundation software is covered by
|
||||||
|
the GNU Lesser General Public License instead.) You can apply it to
|
||||||
|
your programs, too.
|
||||||
|
|
||||||
|
When we speak of free software, we are referring to freedom, not
|
||||||
|
price. Our General Public Licenses are designed to make sure that you
|
||||||
|
have the freedom to distribute copies of free software (and charge for
|
||||||
|
this service if you wish), that you receive source code or can get it
|
||||||
|
if you want it, that you can change the software or use pieces of it
|
||||||
|
in new free programs; and that you know you can do these things.
|
||||||
|
|
||||||
|
To protect your rights, we need to make restrictions that forbid
|
||||||
|
anyone to deny you these rights or to ask you to surrender the rights.
|
||||||
|
These restrictions translate to certain responsibilities for you if you
|
||||||
|
distribute copies of the software, or if you modify it.
|
||||||
|
|
||||||
|
For example, if you distribute copies of such a program, whether
|
||||||
|
gratis or for a fee, you must give the recipients all the rights that
|
||||||
|
you have. You must make sure that they, too, receive or can get the
|
||||||
|
source code. And you must show them these terms so they know their
|
||||||
|
rights.
|
||||||
|
|
||||||
|
We protect your rights with two steps: (1) copyright the software, and
|
||||||
|
(2) offer you this license which gives you legal permission to copy,
|
||||||
|
distribute and/or modify the software.
|
||||||
|
|
||||||
|
Also, for each author's protection and ours, we want to make certain
|
||||||
|
that everyone understands that there is no warranty for this free
|
||||||
|
software. If the software is modified by someone else and passed on, we
|
||||||
|
want its recipients to know that what they have is not the original, so
|
||||||
|
that any problems introduced by others will not reflect on the original
|
||||||
|
authors' reputations.
|
||||||
|
|
||||||
|
Finally, any free program is threatened constantly by software
|
||||||
|
patents. We wish to avoid the danger that redistributors of a free
|
||||||
|
program will individually obtain patent licenses, in effect making the
|
||||||
|
program proprietary. To prevent this, we have made it clear that any
|
||||||
|
patent must be licensed for everyone's free use or not licensed at all.
|
||||||
|
|
||||||
|
The precise terms and conditions for copying, distribution and
|
||||||
|
modification follow.
|
||||||
|
|
||||||
|
GNU GENERAL PUBLIC LICENSE
|
||||||
|
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||||
|
|
||||||
|
0. This License applies to any program or other work which contains
|
||||||
|
a notice placed by the copyright holder saying it may be distributed
|
||||||
|
under the terms of this General Public License. The "Program", below,
|
||||||
|
refers to any such program or work, and a "work based on the Program"
|
||||||
|
means either the Program or any derivative work under copyright law:
|
||||||
|
that is to say, a work containing the Program or a portion of it,
|
||||||
|
either verbatim or with modifications and/or translated into another
|
||||||
|
language. (Hereinafter, translation is included without limitation in
|
||||||
|
the term "modification".) Each licensee is addressed as "you".
|
||||||
|
|
||||||
|
Activities other than copying, distribution and modification are not
|
||||||
|
covered by this License; they are outside its scope. The act of
|
||||||
|
running the Program is not restricted, and the output from the Program
|
||||||
|
is covered only if its contents constitute a work based on the
|
||||||
|
Program (independent of having been made by running the Program).
|
||||||
|
Whether that is true depends on what the Program does.
|
||||||
|
|
||||||
|
1. You may copy and distribute verbatim copies of the Program's
|
||||||
|
source code as you receive it, in any medium, provided that you
|
||||||
|
conspicuously and appropriately publish on each copy an appropriate
|
||||||
|
copyright notice and disclaimer of warranty; keep intact all the
|
||||||
|
notices that refer to this License and to the absence of any warranty;
|
||||||
|
and give any other recipients of the Program a copy of this License
|
||||||
|
along with the Program.
|
||||||
|
|
||||||
|
You may charge a fee for the physical act of transferring a copy, and
|
||||||
|
you may at your option offer warranty protection in exchange for a fee.
|
||||||
|
|
||||||
|
2. You may modify your copy or copies of the Program or any portion
|
||||||
|
of it, thus forming a work based on the Program, and copy and
|
||||||
|
distribute such modifications or work under the terms of Section 1
|
||||||
|
above, provided that you also meet all of these conditions:
|
||||||
|
|
||||||
|
a) You must cause the modified files to carry prominent notices
|
||||||
|
stating that you changed the files and the date of any change.
|
||||||
|
|
||||||
|
b) You must cause any work that you distribute or publish, that in
|
||||||
|
whole or in part contains or is derived from the Program or any
|
||||||
|
part thereof, to be licensed as a whole at no charge to all third
|
||||||
|
parties under the terms of this License.
|
||||||
|
|
||||||
|
c) If the modified program normally reads commands interactively
|
||||||
|
when run, you must cause it, when started running for such
|
||||||
|
interactive use in the most ordinary way, to print or display an
|
||||||
|
announcement including an appropriate copyright notice and a
|
||||||
|
notice that there is no warranty (or else, saying that you provide
|
||||||
|
a warranty) and that users may redistribute the program under
|
||||||
|
these conditions, and telling the user how to view a copy of this
|
||||||
|
License. (Exception: if the Program itself is interactive but
|
||||||
|
does not normally print such an announcement, your work based on
|
||||||
|
the Program is not required to print an announcement.)
|
||||||
|
|
||||||
|
These requirements apply to the modified work as a whole. If
|
||||||
|
identifiable sections of that work are not derived from the Program,
|
||||||
|
and can be reasonably considered independent and separate works in
|
||||||
|
themselves, then this License, and its terms, do not apply to those
|
||||||
|
sections when you distribute them as separate works. But when you
|
||||||
|
distribute the same sections as part of a whole which is a work based
|
||||||
|
on the Program, the distribution of the whole must be on the terms of
|
||||||
|
this License, whose permissions for other licensees extend to the
|
||||||
|
entire whole, and thus to each and every part regardless of who wrote it.
|
||||||
|
|
||||||
|
Thus, it is not the intent of this section to claim rights or contest
|
||||||
|
your rights to work written entirely by you; rather, the intent is to
|
||||||
|
exercise the right to control the distribution of derivative or
|
||||||
|
collective works based on the Program.
|
||||||
|
|
||||||
|
In addition, mere aggregation of another work not based on the Program
|
||||||
|
with the Program (or with a work based on the Program) on a volume of
|
||||||
|
a storage or distribution medium does not bring the other work under
|
||||||
|
the scope of this License.
|
||||||
|
|
||||||
|
3. You may copy and distribute the Program (or a work based on it,
|
||||||
|
under Section 2) in object code or executable form under the terms of
|
||||||
|
Sections 1 and 2 above provided that you also do one of the following:
|
||||||
|
|
||||||
|
a) Accompany it with the complete corresponding machine-readable
|
||||||
|
source code, which must be distributed under the terms of Sections
|
||||||
|
1 and 2 above on a medium customarily used for software interchange; or,
|
||||||
|
|
||||||
|
b) Accompany it with a written offer, valid for at least three
|
||||||
|
years, to give any third party, for a charge no more than your
|
||||||
|
cost of physically performing source distribution, a complete
|
||||||
|
machine-readable copy of the corresponding source code, to be
|
||||||
|
distributed under the terms of Sections 1 and 2 above on a medium
|
||||||
|
customarily used for software interchange; or,
|
||||||
|
|
||||||
|
c) Accompany it with the information you received as to the offer
|
||||||
|
to distribute corresponding source code. (This alternative is
|
||||||
|
allowed only for noncommercial distribution and only if you
|
||||||
|
received the program in object code or executable form with such
|
||||||
|
an offer, in accord with Subsection b above.)
|
||||||
|
|
||||||
|
The source code for a work means the preferred form of the work for
|
||||||
|
making modifications to it. For an executable work, complete source
|
||||||
|
code means all the source code for all modules it contains, plus any
|
||||||
|
associated interface definition files, plus the scripts used to
|
||||||
|
control compilation and installation of the executable. However, as a
|
||||||
|
special exception, the source code distributed need not include
|
||||||
|
anything that is normally distributed (in either source or binary
|
||||||
|
form) with the major components (compiler, kernel, and so on) of the
|
||||||
|
operating system on which the executable runs, unless that component
|
||||||
|
itself accompanies the executable.
|
||||||
|
|
||||||
|
If distribution of executable or object code is made by offering
|
||||||
|
access to copy from a designated place, then offering equivalent
|
||||||
|
access to copy the source code from the same place counts as
|
||||||
|
distribution of the source code, even though third parties are not
|
||||||
|
compelled to copy the source along with the object code.
|
||||||
|
|
||||||
|
4. You may not copy, modify, sublicense, or distribute the Program
|
||||||
|
except as expressly provided under this License. Any attempt
|
||||||
|
otherwise to copy, modify, sublicense or distribute the Program is
|
||||||
|
void, and will automatically terminate your rights under this License.
|
||||||
|
However, parties who have received copies, or rights, from you under
|
||||||
|
this License will not have their licenses terminated so long as such
|
||||||
|
parties remain in full compliance.
|
||||||
|
|
||||||
|
5. You are not required to accept this License, since you have not
|
||||||
|
signed it. However, nothing else grants you permission to modify or
|
||||||
|
distribute the Program or its derivative works. These actions are
|
||||||
|
prohibited by law if you do not accept this License. Therefore, by
|
||||||
|
modifying or distributing the Program (or any work based on the
|
||||||
|
Program), you indicate your acceptance of this License to do so, and
|
||||||
|
all its terms and conditions for copying, distributing or modifying
|
||||||
|
the Program or works based on it.
|
||||||
|
|
||||||
|
6. Each time you redistribute the Program (or any work based on the
|
||||||
|
Program), the recipient automatically receives a license from the
|
||||||
|
original licensor to copy, distribute or modify the Program subject to
|
||||||
|
these terms and conditions. You may not impose any further
|
||||||
|
restrictions on the recipients' exercise of the rights granted herein.
|
||||||
|
You are not responsible for enforcing compliance by third parties to
|
||||||
|
this License.
|
||||||
|
|
||||||
|
7. If, as a consequence of a court judgment or allegation of patent
|
||||||
|
infringement or for any other reason (not limited to patent issues),
|
||||||
|
conditions are imposed on you (whether by court order, agreement or
|
||||||
|
otherwise) that contradict the conditions of this License, they do not
|
||||||
|
excuse you from the conditions of this License. If you cannot
|
||||||
|
distribute so as to satisfy simultaneously your obligations under this
|
||||||
|
License and any other pertinent obligations, then as a consequence you
|
||||||
|
may not distribute the Program at all. For example, if a patent
|
||||||
|
license would not permit royalty-free redistribution of the Program by
|
||||||
|
all those who receive copies directly or indirectly through you, then
|
||||||
|
the only way you could satisfy both it and this License would be to
|
||||||
|
refrain entirely from distribution of the Program.
|
||||||
|
|
||||||
|
If any portion of this section is held invalid or unenforceable under
|
||||||
|
any particular circumstance, the balance of the section is intended to
|
||||||
|
apply and the section as a whole is intended to apply in other
|
||||||
|
circumstances.
|
||||||
|
|
||||||
|
It is not the purpose of this section to induce you to infringe any
|
||||||
|
patents or other property right claims or to contest validity of any
|
||||||
|
such claims; this section has the sole purpose of protecting the
|
||||||
|
integrity of the free software distribution system, which is
|
||||||
|
implemented by public license practices. Many people have made
|
||||||
|
generous contributions to the wide range of software distributed
|
||||||
|
through that system in reliance on consistent application of that
|
||||||
|
system; it is up to the author/donor to decide if he or she is willing
|
||||||
|
to distribute software through any other system and a licensee cannot
|
||||||
|
impose that choice.
|
||||||
|
|
||||||
|
This section is intended to make thoroughly clear what is believed to
|
||||||
|
be a consequence of the rest of this License.
|
||||||
|
|
||||||
|
8. If the distribution and/or use of the Program is restricted in
|
||||||
|
certain countries either by patents or by copyrighted interfaces, the
|
||||||
|
original copyright holder who places the Program under this License
|
||||||
|
may add an explicit geographical distribution limitation excluding
|
||||||
|
those countries, so that distribution is permitted only in or among
|
||||||
|
countries not thus excluded. In such case, this License incorporates
|
||||||
|
the limitation as if written in the body of this License.
|
||||||
|
|
||||||
|
9. The Free Software Foundation may publish revised and/or new versions
|
||||||
|
of the General Public License from time to time. Such new versions will
|
||||||
|
be similar in spirit to the present version, but may differ in detail to
|
||||||
|
address new problems or concerns.
|
||||||
|
|
||||||
|
Each version is given a distinguishing version number. If the Program
|
||||||
|
specifies a version number of this License which applies to it and "any
|
||||||
|
later version", you have the option of following the terms and conditions
|
||||||
|
either of that version or of any later version published by the Free
|
||||||
|
Software Foundation. If the Program does not specify a version number of
|
||||||
|
this License, you may choose any version ever published by the Free Software
|
||||||
|
Foundation.
|
||||||
|
|
||||||
|
10. If you wish to incorporate parts of the Program into other free
|
||||||
|
programs whose distribution conditions are different, write to the author
|
||||||
|
to ask for permission. For software which is copyrighted by the Free
|
||||||
|
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||||
|
make exceptions for this. Our decision will be guided by the two goals
|
||||||
|
of preserving the free status of all derivatives of our free software and
|
||||||
|
of promoting the sharing and reuse of software generally.
|
||||||
|
|
||||||
|
NO WARRANTY
|
||||||
|
|
||||||
|
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||||
|
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||||
|
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||||
|
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||||
|
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||||
|
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||||
|
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||||
|
REPAIR OR CORRECTION.
|
||||||
|
|
||||||
|
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||||
|
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||||
|
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||||
|
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||||
|
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||||
|
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||||
|
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||||
|
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||||
|
POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
How to Apply These Terms to Your New Programs
|
||||||
|
|
||||||
|
If you develop a new program, and you want it to be of the greatest
|
||||||
|
possible use to the public, the best way to achieve this is to make it
|
||||||
|
free software which everyone can redistribute and change under these terms.
|
||||||
|
|
||||||
|
To do so, attach the following notices to the program. It is safest
|
||||||
|
to attach them to the start of each source file to most effectively
|
||||||
|
convey the exclusion of warranty; and each file should have at least
|
||||||
|
the "copyright" line and a pointer to where the full notice is found.
|
||||||
|
|
||||||
|
<one line to give the program's name and a brief idea of what it does.>
|
||||||
|
Copyright (C) <year> <name of author>
|
||||||
|
|
||||||
|
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 this program; if not, write to the Free Software Foundation, Inc.,
|
||||||
|
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
|
|
||||||
|
Also add information on how to contact you by electronic and paper mail.
|
||||||
|
|
||||||
|
If the program is interactive, make it output a short notice like this
|
||||||
|
when it starts in an interactive mode:
|
||||||
|
|
||||||
|
Gnomovision version 69, Copyright (C) year name of author
|
||||||
|
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||||
|
This is free software, and you are welcome to redistribute it
|
||||||
|
under certain conditions; type `show c' for details.
|
||||||
|
|
||||||
|
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||||
|
parts of the General Public License. Of course, the commands you use may
|
||||||
|
be called something other than `show w' and `show c'; they could even be
|
||||||
|
mouse-clicks or menu items--whatever suits your program.
|
||||||
|
|
||||||
|
You should also get your employer (if you work as a programmer) or your
|
||||||
|
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||||
|
necessary. Here is a sample; alter the names:
|
||||||
|
|
||||||
|
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||||
|
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||||
|
|
||||||
|
<signature of Ty Coon>, 1 April 1989
|
||||||
|
Ty Coon, President of Vice
|
||||||
|
|
||||||
|
This General Public License does not permit incorporating your program into
|
||||||
|
proprietary programs. If your program is a subroutine library, you may
|
||||||
|
consider it more useful to permit linking proprietary applications with the
|
||||||
|
library. If this is what you want to do, use the GNU Lesser General
|
||||||
|
Public License instead of this License.
|
||||||
52
Makefile.am
Normal file
52
Makefile.am
Normal file
|
|
@ -0,0 +1,52 @@
|
||||||
|
## Process this file with automake to produce Makefile.in
|
||||||
|
|
||||||
|
AUTOMAKE_OPTIONS = foreign 1.9 nostdinc
|
||||||
|
|
||||||
|
SUBDIRS = src tools/pipe
|
||||||
|
|
||||||
|
DISTCHECK_CONFIGURE_FLAGS=@CONFIGURE_OPTIONS@
|
||||||
|
|
||||||
|
dsl_cpe_control_docdir = ${prefix}/doc/dsl_cpe_control
|
||||||
|
|
||||||
|
dsl_cpe_control_doc_DATA = \
|
||||||
|
ChangeLog
|
||||||
|
|
||||||
|
EXTRA_DIST = $(dsl_cpe_control_doc_DATA) \
|
||||||
|
build_vxworks/control_dsl_cpe_api.wpj \
|
||||||
|
build_win32/dsl_cpe_control_version.h \
|
||||||
|
build_win32/vc7/dsl_cpe_control.sln \
|
||||||
|
build_win32/vc7/dsl_cpe_control.vcproj \
|
||||||
|
README\
|
||||||
|
AUTHORS\
|
||||||
|
NEWS\
|
||||||
|
TODO
|
||||||
|
|
||||||
|
# Copy all the spec files. Of cource, only one is actually used.
|
||||||
|
dist-hook:
|
||||||
|
for specfile in *.spec; do \
|
||||||
|
if test -f $$specfile; then \
|
||||||
|
cp -p $$specfile $(distdir); \
|
||||||
|
fi \
|
||||||
|
done
|
||||||
|
|
||||||
|
# Check for correct line ends (reduce scope to 'src' because Win32 files can have CRLF)
|
||||||
|
distcheck-hook:
|
||||||
|
chmod a+w $(distdir)
|
||||||
|
echo "Checking line ends ...!!!"; \
|
||||||
|
find $(distdir)/src -type f -exec file {} \; | grep -e "CRLF" -e "Non-ISO" && exit 1; \
|
||||||
|
echo "Checking line ends ... done."
|
||||||
|
|
||||||
|
lint:
|
||||||
|
@target=lint; \
|
||||||
|
list='$(SUBDIRS)'; \
|
||||||
|
for subdir in $$list; do \
|
||||||
|
echo "Making $$target in $$subdir"; \
|
||||||
|
if test "$$subdir" = "."; then \
|
||||||
|
dot_seen=yes; \
|
||||||
|
local_target="$$target-am"; \
|
||||||
|
else \
|
||||||
|
local_target="$$target"; \
|
||||||
|
fi; \
|
||||||
|
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||||
|
|| eval $$failcom; \
|
||||||
|
done;
|
||||||
925
Makefile.in
Normal file
925
Makefile.in
Normal file
|
|
@ -0,0 +1,925 @@
|
||||||
|
# Makefile.in generated by automake 1.15 from Makefile.am.
|
||||||
|
# @configure_input@
|
||||||
|
|
||||||
|
# Copyright (C) 1994-2014 Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
# This Makefile.in is free software; the Free Software Foundation
|
||||||
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
|
# with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||||
|
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||||
|
# PARTICULAR PURPOSE.
|
||||||
|
|
||||||
|
@SET_MAKE@
|
||||||
|
|
||||||
|
VPATH = @srcdir@
|
||||||
|
am__is_gnu_make = { \
|
||||||
|
if test -z '$(MAKELEVEL)'; then \
|
||||||
|
false; \
|
||||||
|
elif test -n '$(MAKE_HOST)'; then \
|
||||||
|
true; \
|
||||||
|
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
|
||||||
|
true; \
|
||||||
|
else \
|
||||||
|
false; \
|
||||||
|
fi; \
|
||||||
|
}
|
||||||
|
am__make_running_with_option = \
|
||||||
|
case $${target_option-} in \
|
||||||
|
?) ;; \
|
||||||
|
*) echo "am__make_running_with_option: internal error: invalid" \
|
||||||
|
"target option '$${target_option-}' specified" >&2; \
|
||||||
|
exit 1;; \
|
||||||
|
esac; \
|
||||||
|
has_opt=no; \
|
||||||
|
sane_makeflags=$$MAKEFLAGS; \
|
||||||
|
if $(am__is_gnu_make); then \
|
||||||
|
sane_makeflags=$$MFLAGS; \
|
||||||
|
else \
|
||||||
|
case $$MAKEFLAGS in \
|
||||||
|
*\\[\ \ ]*) \
|
||||||
|
bs=\\; \
|
||||||
|
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
|
||||||
|
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
|
||||||
|
esac; \
|
||||||
|
fi; \
|
||||||
|
skip_next=no; \
|
||||||
|
strip_trailopt () \
|
||||||
|
{ \
|
||||||
|
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
|
||||||
|
}; \
|
||||||
|
for flg in $$sane_makeflags; do \
|
||||||
|
test $$skip_next = yes && { skip_next=no; continue; }; \
|
||||||
|
case $$flg in \
|
||||||
|
*=*|--*) continue;; \
|
||||||
|
-*I) strip_trailopt 'I'; skip_next=yes;; \
|
||||||
|
-*I?*) strip_trailopt 'I';; \
|
||||||
|
-*O) strip_trailopt 'O'; skip_next=yes;; \
|
||||||
|
-*O?*) strip_trailopt 'O';; \
|
||||||
|
-*l) strip_trailopt 'l'; skip_next=yes;; \
|
||||||
|
-*l?*) strip_trailopt 'l';; \
|
||||||
|
-[dEDm]) skip_next=yes;; \
|
||||||
|
-[JT]) skip_next=yes;; \
|
||||||
|
esac; \
|
||||||
|
case $$flg in \
|
||||||
|
*$$target_option*) has_opt=yes; break;; \
|
||||||
|
esac; \
|
||||||
|
done; \
|
||||||
|
test $$has_opt = yes
|
||||||
|
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
|
||||||
|
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
|
||||||
|
pkgdatadir = $(datadir)/@PACKAGE@
|
||||||
|
pkgincludedir = $(includedir)/@PACKAGE@
|
||||||
|
pkglibdir = $(libdir)/@PACKAGE@
|
||||||
|
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
||||||
|
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||||
|
install_sh_DATA = $(install_sh) -c -m 644
|
||||||
|
install_sh_PROGRAM = $(install_sh) -c
|
||||||
|
install_sh_SCRIPT = $(install_sh) -c
|
||||||
|
INSTALL_HEADER = $(INSTALL_DATA)
|
||||||
|
transform = $(program_transform_name)
|
||||||
|
NORMAL_INSTALL = :
|
||||||
|
PRE_INSTALL = :
|
||||||
|
POST_INSTALL = :
|
||||||
|
NORMAL_UNINSTALL = :
|
||||||
|
PRE_UNINSTALL = :
|
||||||
|
POST_UNINSTALL = :
|
||||||
|
subdir = .
|
||||||
|
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||||
|
am__aclocal_m4_deps = $(top_srcdir)/configure.in
|
||||||
|
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||||
|
$(ACLOCAL_M4)
|
||||||
|
DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \
|
||||||
|
$(am__configure_deps) $(am__DIST_COMMON)
|
||||||
|
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
|
||||||
|
configure.lineno config.status.lineno
|
||||||
|
mkinstalldirs = $(install_sh) -d
|
||||||
|
CONFIG_HEADER = $(top_builddir)/src/dsl_cpe_config.h
|
||||||
|
CONFIG_CLEAN_FILES =
|
||||||
|
CONFIG_CLEAN_VPATH_FILES =
|
||||||
|
AM_V_P = $(am__v_P_@AM_V@)
|
||||||
|
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
|
||||||
|
am__v_P_0 = false
|
||||||
|
am__v_P_1 = :
|
||||||
|
AM_V_GEN = $(am__v_GEN_@AM_V@)
|
||||||
|
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
|
||||||
|
am__v_GEN_0 = @echo " GEN " $@;
|
||||||
|
am__v_GEN_1 =
|
||||||
|
AM_V_at = $(am__v_at_@AM_V@)
|
||||||
|
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
|
||||||
|
am__v_at_0 = @
|
||||||
|
am__v_at_1 =
|
||||||
|
SOURCES =
|
||||||
|
DIST_SOURCES =
|
||||||
|
RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
|
||||||
|
ctags-recursive dvi-recursive html-recursive info-recursive \
|
||||||
|
install-data-recursive install-dvi-recursive \
|
||||||
|
install-exec-recursive install-html-recursive \
|
||||||
|
install-info-recursive install-pdf-recursive \
|
||||||
|
install-ps-recursive install-recursive installcheck-recursive \
|
||||||
|
installdirs-recursive pdf-recursive ps-recursive \
|
||||||
|
tags-recursive uninstall-recursive
|
||||||
|
am__can_run_installinfo = \
|
||||||
|
case $$AM_UPDATE_INFO_DIR in \
|
||||||
|
n|no|NO) false;; \
|
||||||
|
*) (install-info --version) >/dev/null 2>&1;; \
|
||||||
|
esac
|
||||||
|
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
|
||||||
|
am__vpath_adj = case $$p in \
|
||||||
|
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
|
||||||
|
*) f=$$p;; \
|
||||||
|
esac;
|
||||||
|
am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
|
||||||
|
am__install_max = 40
|
||||||
|
am__nobase_strip_setup = \
|
||||||
|
srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
|
||||||
|
am__nobase_strip = \
|
||||||
|
for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
|
||||||
|
am__nobase_list = $(am__nobase_strip_setup); \
|
||||||
|
for p in $$list; do echo "$$p $$p"; done | \
|
||||||
|
sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
|
||||||
|
$(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
|
||||||
|
if (++n[$$2] == $(am__install_max)) \
|
||||||
|
{ print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
|
||||||
|
END { for (dir in files) print dir, files[dir] }'
|
||||||
|
am__base_list = \
|
||||||
|
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
|
||||||
|
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
|
||||||
|
am__uninstall_files_from_dir = { \
|
||||||
|
test -z "$$files" \
|
||||||
|
|| { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
|
||||||
|
|| { echo " ( cd '$$dir' && rm -f" $$files ")"; \
|
||||||
|
$(am__cd) "$$dir" && rm -f $$files; }; \
|
||||||
|
}
|
||||||
|
am__installdirs = "$(DESTDIR)$(dsl_cpe_control_docdir)"
|
||||||
|
DATA = $(dsl_cpe_control_doc_DATA)
|
||||||
|
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
|
||||||
|
distclean-recursive maintainer-clean-recursive
|
||||||
|
am__recursive_targets = \
|
||||||
|
$(RECURSIVE_TARGETS) \
|
||||||
|
$(RECURSIVE_CLEAN_TARGETS) \
|
||||||
|
$(am__extra_recursive_targets)
|
||||||
|
AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
|
||||||
|
cscope distdir dist dist-all distcheck
|
||||||
|
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
|
||||||
|
# Read a list of newline-separated strings from the standard input,
|
||||||
|
# and print each of them once, without duplicates. Input order is
|
||||||
|
# *not* preserved.
|
||||||
|
am__uniquify_input = $(AWK) '\
|
||||||
|
BEGIN { nonempty = 0; } \
|
||||||
|
{ items[$$0] = 1; nonempty = 1; } \
|
||||||
|
END { if (nonempty) { for (i in items) print i; }; } \
|
||||||
|
'
|
||||||
|
# Make sure the list of sources is unique. This is necessary because,
|
||||||
|
# e.g., the same source file might be shared among _SOURCES variables
|
||||||
|
# for different programs/libraries.
|
||||||
|
am__define_uniq_tagged_files = \
|
||||||
|
list='$(am__tagged_files)'; \
|
||||||
|
unique=`for i in $$list; do \
|
||||||
|
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||||
|
done | $(am__uniquify_input)`
|
||||||
|
ETAGS = etags
|
||||||
|
CTAGS = ctags
|
||||||
|
CSCOPE = cscope
|
||||||
|
DIST_SUBDIRS = $(SUBDIRS)
|
||||||
|
am__DIST_COMMON = $(srcdir)/Makefile.in ABOUT-NLS AUTHORS COPYING \
|
||||||
|
ChangeLog NEWS README TODO compile depcomp install-sh missing
|
||||||
|
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||||
|
distdir = $(PACKAGE)-$(VERSION)
|
||||||
|
top_distdir = $(distdir)
|
||||||
|
am__remove_distdir = \
|
||||||
|
if test -d "$(distdir)"; then \
|
||||||
|
find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
|
||||||
|
&& rm -rf "$(distdir)" \
|
||||||
|
|| { sleep 5 && rm -rf "$(distdir)"; }; \
|
||||||
|
else :; fi
|
||||||
|
am__post_remove_distdir = $(am__remove_distdir)
|
||||||
|
am__relativize = \
|
||||||
|
dir0=`pwd`; \
|
||||||
|
sed_first='s,^\([^/]*\)/.*$$,\1,'; \
|
||||||
|
sed_rest='s,^[^/]*/*,,'; \
|
||||||
|
sed_last='s,^.*/\([^/]*\)$$,\1,'; \
|
||||||
|
sed_butlast='s,/*[^/]*$$,,'; \
|
||||||
|
while test -n "$$dir1"; do \
|
||||||
|
first=`echo "$$dir1" | sed -e "$$sed_first"`; \
|
||||||
|
if test "$$first" != "."; then \
|
||||||
|
if test "$$first" = ".."; then \
|
||||||
|
dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
|
||||||
|
dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
|
||||||
|
else \
|
||||||
|
first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
|
||||||
|
if test "$$first2" = "$$first"; then \
|
||||||
|
dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
|
||||||
|
else \
|
||||||
|
dir2="../$$dir2"; \
|
||||||
|
fi; \
|
||||||
|
dir0="$$dir0"/"$$first"; \
|
||||||
|
fi; \
|
||||||
|
fi; \
|
||||||
|
dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
|
||||||
|
done; \
|
||||||
|
reldir="$$dir2"
|
||||||
|
DIST_ARCHIVES = $(distdir).tar.gz
|
||||||
|
GZIP_ENV = --best
|
||||||
|
DIST_TARGETS = dist-gzip
|
||||||
|
distuninstallcheck_listfiles = find . -type f -print
|
||||||
|
am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
|
||||||
|
| sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
|
||||||
|
distcleancheck_listfiles = find . -type f -print
|
||||||
|
ACLOCAL = @ACLOCAL@
|
||||||
|
ADD_APPL_CFLAGS = @ADD_APPL_CFLAGS@
|
||||||
|
ADD_APPL_LDFLAGS = @ADD_APPL_LDFLAGS@
|
||||||
|
AMTAR = @AMTAR@
|
||||||
|
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
||||||
|
AUTOCONF = @AUTOCONF@
|
||||||
|
AUTOHEADER = @AUTOHEADER@
|
||||||
|
AUTOMAKE = @AUTOMAKE@
|
||||||
|
AWK = @AWK@
|
||||||
|
CC = @CC@
|
||||||
|
CCDEPMODE = @CCDEPMODE@
|
||||||
|
CFLAGS = @CFLAGS@
|
||||||
|
CONFIGURE_OPTIONS = @CONFIGURE_OPTIONS@
|
||||||
|
CPP = @CPP@
|
||||||
|
CPPFLAGS = @CPPFLAGS@
|
||||||
|
CYGPATH_W = @CYGPATH_W@
|
||||||
|
DEFS = @DEFS@
|
||||||
|
DEPDIR = @DEPDIR@
|
||||||
|
DISTCHECK_CONFIGURE_PARAMS = @DISTCHECK_CONFIGURE_PARAMS@
|
||||||
|
DSL_ADD_EXT_APPL_CFLAGS = @DSL_ADD_EXT_APPL_CFLAGS@
|
||||||
|
DSL_CCA_DBG_MAX_LEVEL_PRE = @DSL_CCA_DBG_MAX_LEVEL_PRE@
|
||||||
|
DSL_CCA_DBG_MAX_LEVEL_SET = @DSL_CCA_DBG_MAX_LEVEL_SET@
|
||||||
|
DSL_CONFIG_MODEL_TYPE = @DSL_CONFIG_MODEL_TYPE@
|
||||||
|
DSL_CPE_DEBUG_DISABLE = @DSL_CPE_DEBUG_DISABLE@
|
||||||
|
DSL_DBG_MSG_NETLINK_ID = @DSL_DBG_MSG_NETLINK_ID@
|
||||||
|
DSL_DEBUG_TOOL_INTERFACE = @DSL_DEBUG_TOOL_INTERFACE@
|
||||||
|
DSL_DEVICE_DRIVER_INCL_PATH = @DSL_DEVICE_DRIVER_INCL_PATH@
|
||||||
|
DSL_DEVICE_NAME = @DSL_DEVICE_NAME@
|
||||||
|
DSL_DRIVER_INCL_PATH = @DSL_DRIVER_INCL_PATH@
|
||||||
|
DSL_VRX_DEVICE_NAME = @DSL_VRX_DEVICE_NAME@
|
||||||
|
DTI_INCL_PATH = @DTI_INCL_PATH@
|
||||||
|
DTI_LIBRARY_PATH = @DTI_LIBRARY_PATH@
|
||||||
|
ECHO_C = @ECHO_C@
|
||||||
|
ECHO_N = @ECHO_N@
|
||||||
|
ECHO_T = @ECHO_T@
|
||||||
|
EGREP = @EGREP@
|
||||||
|
EXEEXT = @EXEEXT@
|
||||||
|
EXTRA_APP_CFLAGS = @EXTRA_APP_CFLAGS@
|
||||||
|
GREP = @GREP@
|
||||||
|
IFXOS_INCLUDE_PATH = @IFXOS_INCLUDE_PATH@
|
||||||
|
IFXOS_LIBRARY_PATH = @IFXOS_LIBRARY_PATH@
|
||||||
|
INCLUDE_DEPRECATED = @INCLUDE_DEPRECATED@
|
||||||
|
INCLUDE_DEVICE_EXCEPTION_CODES = @INCLUDE_DEVICE_EXCEPTION_CODES@
|
||||||
|
INCLUDE_DSL_ADSL_MIB = @INCLUDE_DSL_ADSL_MIB@
|
||||||
|
INCLUDE_DSL_CEOC = @INCLUDE_DSL_CEOC@
|
||||||
|
INCLUDE_DSL_CONFIG_GET = @INCLUDE_DSL_CONFIG_GET@
|
||||||
|
INCLUDE_DSL_CPE_CLI_AUTOGEN_SUPPORT = @INCLUDE_DSL_CPE_CLI_AUTOGEN_SUPPORT@
|
||||||
|
INCLUDE_DSL_CPE_CLI_SUPPORT = @INCLUDE_DSL_CPE_CLI_SUPPORT@
|
||||||
|
INCLUDE_DSL_CPE_CMV_SCRIPTS_MATH = @INCLUDE_DSL_CPE_CMV_SCRIPTS_MATH@
|
||||||
|
INCLUDE_DSL_CPE_CMV_SCRIPTS_SUPPORT = @INCLUDE_DSL_CPE_CMV_SCRIPTS_SUPPORT@
|
||||||
|
INCLUDE_DSL_CPE_DEBUG_LOGGER_SUPPORT = @INCLUDE_DSL_CPE_DEBUG_LOGGER_SUPPORT@
|
||||||
|
INCLUDE_DSL_CPE_DTI_SUPPORT = @INCLUDE_DSL_CPE_DTI_SUPPORT@
|
||||||
|
INCLUDE_DSL_CPE_FILESYSTEM_SUPPORT = @INCLUDE_DSL_CPE_FILESYSTEM_SUPPORT@
|
||||||
|
INCLUDE_DSL_CPE_IFXOS_SUPPORT = @INCLUDE_DSL_CPE_IFXOS_SUPPORT@
|
||||||
|
INCLUDE_DSL_CPE_MISC_LINE_STATUS = @INCLUDE_DSL_CPE_MISC_LINE_STATUS@
|
||||||
|
INCLUDE_DSL_CPE_PM_CHANNEL_COUNTERS = @INCLUDE_DSL_CPE_PM_CHANNEL_COUNTERS@
|
||||||
|
INCLUDE_DSL_CPE_PM_CHANNEL_EXT_COUNTERS = @INCLUDE_DSL_CPE_PM_CHANNEL_EXT_COUNTERS@
|
||||||
|
INCLUDE_DSL_CPE_PM_CHANNEL_THRESHOLDS = @INCLUDE_DSL_CPE_PM_CHANNEL_THRESHOLDS@
|
||||||
|
INCLUDE_DSL_CPE_PM_CONFIG = @INCLUDE_DSL_CPE_PM_CONFIG@
|
||||||
|
INCLUDE_DSL_CPE_PM_DATA_PATH_COUNTERS = @INCLUDE_DSL_CPE_PM_DATA_PATH_COUNTERS@
|
||||||
|
INCLUDE_DSL_CPE_PM_DATA_PATH_FAILURE_COUNTERS = @INCLUDE_DSL_CPE_PM_DATA_PATH_FAILURE_COUNTERS@
|
||||||
|
INCLUDE_DSL_CPE_PM_DATA_PATH_THRESHOLDS = @INCLUDE_DSL_CPE_PM_DATA_PATH_THRESHOLDS@
|
||||||
|
INCLUDE_DSL_CPE_PM_HISTORY = @INCLUDE_DSL_CPE_PM_HISTORY@
|
||||||
|
INCLUDE_DSL_CPE_PM_LINE_COUNTERS = @INCLUDE_DSL_CPE_PM_LINE_COUNTERS@
|
||||||
|
INCLUDE_DSL_CPE_PM_LINE_EVENT_SHOWTIME_COUNTERS = @INCLUDE_DSL_CPE_PM_LINE_EVENT_SHOWTIME_COUNTERS@
|
||||||
|
INCLUDE_DSL_CPE_PM_LINE_THRESHOLDS = @INCLUDE_DSL_CPE_PM_LINE_THRESHOLDS@
|
||||||
|
INCLUDE_DSL_CPE_PM_OPTIONAL_PARAMETERS = @INCLUDE_DSL_CPE_PM_OPTIONAL_PARAMETERS@
|
||||||
|
INCLUDE_DSL_CPE_PM_RETX_COUNTERS = @INCLUDE_DSL_CPE_PM_RETX_COUNTERS@
|
||||||
|
INCLUDE_DSL_CPE_PM_RETX_THRESHOLDS = @INCLUDE_DSL_CPE_PM_RETX_THRESHOLDS@
|
||||||
|
INCLUDE_DSL_CPE_PM_SHOWTIME_COUNTERS = @INCLUDE_DSL_CPE_PM_SHOWTIME_COUNTERS@
|
||||||
|
INCLUDE_DSL_CPE_PM_TOTAL_COUNTERS = @INCLUDE_DSL_CPE_PM_TOTAL_COUNTERS@
|
||||||
|
INCLUDE_DSL_CPE_TRACE_BUFFER = @INCLUDE_DSL_CPE_TRACE_BUFFER@
|
||||||
|
INCLUDE_DSL_DELT = @INCLUDE_DSL_DELT@
|
||||||
|
INCLUDE_DSL_EVENT_POLLING = @INCLUDE_DSL_EVENT_POLLING@
|
||||||
|
INCLUDE_DSL_FILTER_DETECTION = @INCLUDE_DSL_FILTER_DETECTION@
|
||||||
|
INCLUDE_DSL_FRAMING_PARAMETERS = @INCLUDE_DSL_FRAMING_PARAMETERS@
|
||||||
|
INCLUDE_DSL_G997_ALARM = @INCLUDE_DSL_G997_ALARM@
|
||||||
|
INCLUDE_DSL_G997_FRAMING_PARAMETERS = @INCLUDE_DSL_G997_FRAMING_PARAMETERS@
|
||||||
|
INCLUDE_DSL_G997_LINE_INVENTORY = @INCLUDE_DSL_G997_LINE_INVENTORY@
|
||||||
|
INCLUDE_DSL_G997_PER_TONE = @INCLUDE_DSL_G997_PER_TONE@
|
||||||
|
INCLUDE_DSL_G997_STATUS = @INCLUDE_DSL_G997_STATUS@
|
||||||
|
INCLUDE_DSL_PM = @INCLUDE_DSL_PM@
|
||||||
|
INCLUDE_DSL_RESOURCE_STATISTICS = @INCLUDE_DSL_RESOURCE_STATISTICS@
|
||||||
|
INCLUDE_DSL_SYSTEM_INTERFACE = @INCLUDE_DSL_SYSTEM_INTERFACE@
|
||||||
|
INCLUDE_DTI_AGENT_STANDALONE_SUPPORT = @INCLUDE_DTI_AGENT_STANDALONE_SUPPORT@
|
||||||
|
INCLUDE_FW_REQUEST_SUPPORT = @INCLUDE_FW_REQUEST_SUPPORT@
|
||||||
|
INCLUDE_PILOT_TONES_STATUS = @INCLUDE_PILOT_TONES_STATUS@
|
||||||
|
INCLUDE_REAL_TIME_TRACE = @INCLUDE_REAL_TIME_TRACE@
|
||||||
|
INCLUDE_SCRIPT_NOTIFICATION = @INCLUDE_SCRIPT_NOTIFICATION@
|
||||||
|
INSTALL = @INSTALL@
|
||||||
|
INSTALL_DATA = @INSTALL_DATA@
|
||||||
|
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||||
|
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||||
|
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||||
|
LDFLAGS = @LDFLAGS@
|
||||||
|
LIBOBJS = @LIBOBJS@
|
||||||
|
LIBS = @LIBS@
|
||||||
|
LTLIBOBJS = @LTLIBOBJS@
|
||||||
|
MAKEINFO = @MAKEINFO@
|
||||||
|
MKDIR_P = @MKDIR_P@
|
||||||
|
OBJEXT = @OBJEXT@
|
||||||
|
PACKAGE = @PACKAGE@
|
||||||
|
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||||
|
PACKAGE_NAME = @PACKAGE_NAME@
|
||||||
|
PACKAGE_STRING = @PACKAGE_STRING@
|
||||||
|
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||||
|
PACKAGE_URL = @PACKAGE_URL@
|
||||||
|
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||||
|
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||||
|
SAFEC_INCL_PATH = @SAFEC_INCL_PATH@
|
||||||
|
SAFEC_LIB_FUNC = @SAFEC_LIB_FUNC@
|
||||||
|
SAFEC_LIB_NAME = @SAFEC_LIB_NAME@
|
||||||
|
SAFEC_LIB_PATH = @SAFEC_LIB_PATH@
|
||||||
|
SAFEC_SUPPORT = @SAFEC_SUPPORT@
|
||||||
|
SET_MAKE = @SET_MAKE@
|
||||||
|
SHELL = @SHELL@
|
||||||
|
STRIP = @STRIP@
|
||||||
|
VERSION = @VERSION@
|
||||||
|
abs_builddir = @abs_builddir@
|
||||||
|
abs_srcdir = @abs_srcdir@
|
||||||
|
abs_top_builddir = @abs_top_builddir@
|
||||||
|
abs_top_srcdir = @abs_top_srcdir@
|
||||||
|
ac_ct_CC = @ac_ct_CC@
|
||||||
|
am__include = @am__include@
|
||||||
|
am__leading_dot = @am__leading_dot@
|
||||||
|
am__quote = @am__quote@
|
||||||
|
am__tar = @am__tar@
|
||||||
|
am__untar = @am__untar@
|
||||||
|
bindir = @bindir@
|
||||||
|
build_alias = @build_alias@
|
||||||
|
builddir = @builddir@
|
||||||
|
datadir = @datadir@
|
||||||
|
datarootdir = @datarootdir@
|
||||||
|
docdir = @docdir@
|
||||||
|
dvidir = @dvidir@
|
||||||
|
exec_prefix = @exec_prefix@
|
||||||
|
host_alias = @host_alias@
|
||||||
|
htmldir = @htmldir@
|
||||||
|
includedir = @includedir@
|
||||||
|
infodir = @infodir@
|
||||||
|
install_sh = @install_sh@
|
||||||
|
libdir = @libdir@
|
||||||
|
libexecdir = @libexecdir@
|
||||||
|
localedir = @localedir@
|
||||||
|
localstatedir = @localstatedir@
|
||||||
|
mandir = @mandir@
|
||||||
|
mkdir_p = @mkdir_p@
|
||||||
|
oldincludedir = @oldincludedir@
|
||||||
|
pdfdir = @pdfdir@
|
||||||
|
prefix = @prefix@
|
||||||
|
program_transform_name = @program_transform_name@
|
||||||
|
psdir = @psdir@
|
||||||
|
sbindir = @sbindir@
|
||||||
|
sharedstatedir = @sharedstatedir@
|
||||||
|
srcdir = @srcdir@
|
||||||
|
sysconfdir = @sysconfdir@
|
||||||
|
target_alias = @target_alias@
|
||||||
|
top_build_prefix = @top_build_prefix@
|
||||||
|
top_builddir = @top_builddir@
|
||||||
|
top_srcdir = @top_srcdir@
|
||||||
|
AUTOMAKE_OPTIONS = foreign 1.9 nostdinc
|
||||||
|
SUBDIRS = src tools/pipe
|
||||||
|
DISTCHECK_CONFIGURE_FLAGS = @CONFIGURE_OPTIONS@
|
||||||
|
dsl_cpe_control_docdir = ${prefix}/doc/dsl_cpe_control
|
||||||
|
dsl_cpe_control_doc_DATA = \
|
||||||
|
ChangeLog
|
||||||
|
|
||||||
|
EXTRA_DIST = $(dsl_cpe_control_doc_DATA) \
|
||||||
|
build_vxworks/control_dsl_cpe_api.wpj \
|
||||||
|
build_win32/dsl_cpe_control_version.h \
|
||||||
|
build_win32/vc7/dsl_cpe_control.sln \
|
||||||
|
build_win32/vc7/dsl_cpe_control.vcproj \
|
||||||
|
README\
|
||||||
|
AUTHORS\
|
||||||
|
NEWS\
|
||||||
|
TODO
|
||||||
|
|
||||||
|
all: all-recursive
|
||||||
|
|
||||||
|
.SUFFIXES:
|
||||||
|
am--refresh: Makefile
|
||||||
|
@:
|
||||||
|
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
||||||
|
@for dep in $?; do \
|
||||||
|
case '$(am__configure_deps)' in \
|
||||||
|
*$$dep*) \
|
||||||
|
echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \
|
||||||
|
$(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \
|
||||||
|
&& exit 0; \
|
||||||
|
exit 1;; \
|
||||||
|
esac; \
|
||||||
|
done; \
|
||||||
|
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
|
||||||
|
$(am__cd) $(top_srcdir) && \
|
||||||
|
$(AUTOMAKE) --foreign Makefile
|
||||||
|
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||||
|
@case '$?' in \
|
||||||
|
*config.status*) \
|
||||||
|
echo ' $(SHELL) ./config.status'; \
|
||||||
|
$(SHELL) ./config.status;; \
|
||||||
|
*) \
|
||||||
|
echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
|
||||||
|
cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
|
||||||
|
esac;
|
||||||
|
|
||||||
|
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||||
|
$(SHELL) ./config.status --recheck
|
||||||
|
|
||||||
|
$(top_srcdir)/configure: $(am__configure_deps)
|
||||||
|
$(am__cd) $(srcdir) && $(AUTOCONF)
|
||||||
|
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
||||||
|
$(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
|
||||||
|
$(am__aclocal_m4_deps):
|
||||||
|
install-dsl_cpe_control_docDATA: $(dsl_cpe_control_doc_DATA)
|
||||||
|
@$(NORMAL_INSTALL)
|
||||||
|
@list='$(dsl_cpe_control_doc_DATA)'; test -n "$(dsl_cpe_control_docdir)" || list=; \
|
||||||
|
if test -n "$$list"; then \
|
||||||
|
echo " $(MKDIR_P) '$(DESTDIR)$(dsl_cpe_control_docdir)'"; \
|
||||||
|
$(MKDIR_P) "$(DESTDIR)$(dsl_cpe_control_docdir)" || exit 1; \
|
||||||
|
fi; \
|
||||||
|
for p in $$list; do \
|
||||||
|
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
||||||
|
echo "$$d$$p"; \
|
||||||
|
done | $(am__base_list) | \
|
||||||
|
while read files; do \
|
||||||
|
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(dsl_cpe_control_docdir)'"; \
|
||||||
|
$(INSTALL_DATA) $$files "$(DESTDIR)$(dsl_cpe_control_docdir)" || exit $$?; \
|
||||||
|
done
|
||||||
|
|
||||||
|
uninstall-dsl_cpe_control_docDATA:
|
||||||
|
@$(NORMAL_UNINSTALL)
|
||||||
|
@list='$(dsl_cpe_control_doc_DATA)'; test -n "$(dsl_cpe_control_docdir)" || list=; \
|
||||||
|
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
|
||||||
|
dir='$(DESTDIR)$(dsl_cpe_control_docdir)'; $(am__uninstall_files_from_dir)
|
||||||
|
|
||||||
|
# This directory's subdirectories are mostly independent; you can cd
|
||||||
|
# into them and run 'make' without going through this Makefile.
|
||||||
|
# To change the values of 'make' variables: instead of editing Makefiles,
|
||||||
|
# (1) if the variable is set in 'config.status', edit 'config.status'
|
||||||
|
# (which will cause the Makefiles to be regenerated when you run 'make');
|
||||||
|
# (2) otherwise, pass the desired values on the 'make' command line.
|
||||||
|
$(am__recursive_targets):
|
||||||
|
@fail=; \
|
||||||
|
if $(am__make_keepgoing); then \
|
||||||
|
failcom='fail=yes'; \
|
||||||
|
else \
|
||||||
|
failcom='exit 1'; \
|
||||||
|
fi; \
|
||||||
|
dot_seen=no; \
|
||||||
|
target=`echo $@ | sed s/-recursive//`; \
|
||||||
|
case "$@" in \
|
||||||
|
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
|
||||||
|
*) list='$(SUBDIRS)' ;; \
|
||||||
|
esac; \
|
||||||
|
for subdir in $$list; do \
|
||||||
|
echo "Making $$target in $$subdir"; \
|
||||||
|
if test "$$subdir" = "."; then \
|
||||||
|
dot_seen=yes; \
|
||||||
|
local_target="$$target-am"; \
|
||||||
|
else \
|
||||||
|
local_target="$$target"; \
|
||||||
|
fi; \
|
||||||
|
($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||||
|
|| eval $$failcom; \
|
||||||
|
done; \
|
||||||
|
if test "$$dot_seen" = "no"; then \
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
|
||||||
|
fi; test -z "$$fail"
|
||||||
|
|
||||||
|
ID: $(am__tagged_files)
|
||||||
|
$(am__define_uniq_tagged_files); mkid -fID $$unique
|
||||||
|
tags: tags-recursive
|
||||||
|
TAGS: tags
|
||||||
|
|
||||||
|
tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
||||||
|
set x; \
|
||||||
|
here=`pwd`; \
|
||||||
|
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
|
||||||
|
include_option=--etags-include; \
|
||||||
|
empty_fix=.; \
|
||||||
|
else \
|
||||||
|
include_option=--include; \
|
||||||
|
empty_fix=; \
|
||||||
|
fi; \
|
||||||
|
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||||
|
if test "$$subdir" = .; then :; else \
|
||||||
|
test ! -f $$subdir/TAGS || \
|
||||||
|
set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
|
||||||
|
fi; \
|
||||||
|
done; \
|
||||||
|
$(am__define_uniq_tagged_files); \
|
||||||
|
shift; \
|
||||||
|
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
|
||||||
|
test -n "$$unique" || unique=$$empty_fix; \
|
||||||
|
if test $$# -gt 0; then \
|
||||||
|
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||||
|
"$$@" $$unique; \
|
||||||
|
else \
|
||||||
|
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||||
|
$$unique; \
|
||||||
|
fi; \
|
||||||
|
fi
|
||||||
|
ctags: ctags-recursive
|
||||||
|
|
||||||
|
CTAGS: ctags
|
||||||
|
ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
||||||
|
$(am__define_uniq_tagged_files); \
|
||||||
|
test -z "$(CTAGS_ARGS)$$unique" \
|
||||||
|
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||||
|
$$unique
|
||||||
|
|
||||||
|
GTAGS:
|
||||||
|
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||||
|
&& $(am__cd) $(top_srcdir) \
|
||||||
|
&& gtags -i $(GTAGS_ARGS) "$$here"
|
||||||
|
cscope: cscope.files
|
||||||
|
test ! -s cscope.files \
|
||||||
|
|| $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
|
||||||
|
clean-cscope:
|
||||||
|
-rm -f cscope.files
|
||||||
|
cscope.files: clean-cscope cscopelist
|
||||||
|
cscopelist: cscopelist-recursive
|
||||||
|
|
||||||
|
cscopelist-am: $(am__tagged_files)
|
||||||
|
list='$(am__tagged_files)'; \
|
||||||
|
case "$(srcdir)" in \
|
||||||
|
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
|
||||||
|
*) sdir=$(subdir)/$(srcdir) ;; \
|
||||||
|
esac; \
|
||||||
|
for i in $$list; do \
|
||||||
|
if test -f "$$i"; then \
|
||||||
|
echo "$(subdir)/$$i"; \
|
||||||
|
else \
|
||||||
|
echo "$$sdir/$$i"; \
|
||||||
|
fi; \
|
||||||
|
done >> $(top_builddir)/cscope.files
|
||||||
|
|
||||||
|
distclean-tags:
|
||||||
|
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||||
|
-rm -f cscope.out cscope.in.out cscope.po.out cscope.files
|
||||||
|
|
||||||
|
distdir: $(DISTFILES)
|
||||||
|
$(am__remove_distdir)
|
||||||
|
test -d "$(distdir)" || mkdir "$(distdir)"
|
||||||
|
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||||
|
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||||
|
list='$(DISTFILES)'; \
|
||||||
|
dist_files=`for file in $$list; do echo $$file; done | \
|
||||||
|
sed -e "s|^$$srcdirstrip/||;t" \
|
||||||
|
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
||||||
|
case $$dist_files in \
|
||||||
|
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
||||||
|
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
||||||
|
sort -u` ;; \
|
||||||
|
esac; \
|
||||||
|
for file in $$dist_files; do \
|
||||||
|
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||||
|
if test -d $$d/$$file; then \
|
||||||
|
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||||
|
if test -d "$(distdir)/$$file"; then \
|
||||||
|
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||||
|
fi; \
|
||||||
|
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||||
|
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
||||||
|
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||||
|
fi; \
|
||||||
|
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
||||||
|
else \
|
||||||
|
test -f "$(distdir)/$$file" \
|
||||||
|
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
||||||
|
|| exit 1; \
|
||||||
|
fi; \
|
||||||
|
done
|
||||||
|
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
|
||||||
|
if test "$$subdir" = .; then :; else \
|
||||||
|
$(am__make_dryrun) \
|
||||||
|
|| test -d "$(distdir)/$$subdir" \
|
||||||
|
|| $(MKDIR_P) "$(distdir)/$$subdir" \
|
||||||
|
|| exit 1; \
|
||||||
|
dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
|
||||||
|
$(am__relativize); \
|
||||||
|
new_distdir=$$reldir; \
|
||||||
|
dir1=$$subdir; dir2="$(top_distdir)"; \
|
||||||
|
$(am__relativize); \
|
||||||
|
new_top_distdir=$$reldir; \
|
||||||
|
echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
|
||||||
|
echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
|
||||||
|
($(am__cd) $$subdir && \
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) \
|
||||||
|
top_distdir="$$new_top_distdir" \
|
||||||
|
distdir="$$new_distdir" \
|
||||||
|
am__remove_distdir=: \
|
||||||
|
am__skip_length_check=: \
|
||||||
|
am__skip_mode_fix=: \
|
||||||
|
distdir) \
|
||||||
|
|| exit 1; \
|
||||||
|
fi; \
|
||||||
|
done
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) \
|
||||||
|
top_distdir="$(top_distdir)" distdir="$(distdir)" \
|
||||||
|
dist-hook
|
||||||
|
-test -n "$(am__skip_mode_fix)" \
|
||||||
|
|| find "$(distdir)" -type d ! -perm -755 \
|
||||||
|
-exec chmod u+rwx,go+rx {} \; -o \
|
||||||
|
! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
|
||||||
|
! -type d ! -perm -400 -exec chmod a+r {} \; -o \
|
||||||
|
! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
|
||||||
|
|| chmod -R a+r "$(distdir)"
|
||||||
|
dist-gzip: distdir
|
||||||
|
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
|
||||||
|
$(am__post_remove_distdir)
|
||||||
|
|
||||||
|
dist-bzip2: distdir
|
||||||
|
tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
|
||||||
|
$(am__post_remove_distdir)
|
||||||
|
|
||||||
|
dist-lzip: distdir
|
||||||
|
tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
|
||||||
|
$(am__post_remove_distdir)
|
||||||
|
|
||||||
|
dist-xz: distdir
|
||||||
|
tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
|
||||||
|
$(am__post_remove_distdir)
|
||||||
|
|
||||||
|
dist-tarZ: distdir
|
||||||
|
@echo WARNING: "Support for distribution archives compressed with" \
|
||||||
|
"legacy program 'compress' is deprecated." >&2
|
||||||
|
@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
|
||||||
|
tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
|
||||||
|
$(am__post_remove_distdir)
|
||||||
|
|
||||||
|
dist-shar: distdir
|
||||||
|
@echo WARNING: "Support for shar distribution archives is" \
|
||||||
|
"deprecated." >&2
|
||||||
|
@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
|
||||||
|
shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
|
||||||
|
$(am__post_remove_distdir)
|
||||||
|
|
||||||
|
dist-zip: distdir
|
||||||
|
-rm -f $(distdir).zip
|
||||||
|
zip -rq $(distdir).zip $(distdir)
|
||||||
|
$(am__post_remove_distdir)
|
||||||
|
|
||||||
|
dist dist-all:
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'
|
||||||
|
$(am__post_remove_distdir)
|
||||||
|
|
||||||
|
# This target untars the dist file and tries a VPATH configuration. Then
|
||||||
|
# it guarantees that the distribution is self-contained by making another
|
||||||
|
# tarfile.
|
||||||
|
distcheck: dist
|
||||||
|
case '$(DIST_ARCHIVES)' in \
|
||||||
|
*.tar.gz*) \
|
||||||
|
GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
|
||||||
|
*.tar.bz2*) \
|
||||||
|
bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
|
||||||
|
*.tar.lz*) \
|
||||||
|
lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
|
||||||
|
*.tar.xz*) \
|
||||||
|
xz -dc $(distdir).tar.xz | $(am__untar) ;;\
|
||||||
|
*.tar.Z*) \
|
||||||
|
uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
|
||||||
|
*.shar.gz*) \
|
||||||
|
GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
|
||||||
|
*.zip*) \
|
||||||
|
unzip $(distdir).zip ;;\
|
||||||
|
esac
|
||||||
|
chmod -R a-w $(distdir)
|
||||||
|
chmod u+w $(distdir)
|
||||||
|
mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst
|
||||||
|
chmod a-w $(distdir)
|
||||||
|
test -d $(distdir)/_build || exit 0; \
|
||||||
|
dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
|
||||||
|
&& dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) distcheck-hook \
|
||||||
|
&& am__cwd=`pwd` \
|
||||||
|
&& $(am__cd) $(distdir)/_build/sub \
|
||||||
|
&& ../../configure \
|
||||||
|
$(AM_DISTCHECK_CONFIGURE_FLAGS) \
|
||||||
|
$(DISTCHECK_CONFIGURE_FLAGS) \
|
||||||
|
--srcdir=../.. --prefix="$$dc_install_base" \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) check \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) install \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) installcheck \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) uninstall \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
|
||||||
|
distuninstallcheck \
|
||||||
|
&& chmod -R a-w "$$dc_install_base" \
|
||||||
|
&& ({ \
|
||||||
|
(cd ../.. && umask 077 && mkdir "$$dc_destdir") \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
|
||||||
|
distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
|
||||||
|
} || { rm -rf "$$dc_destdir"; exit 1; }) \
|
||||||
|
&& rm -rf "$$dc_destdir" \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) dist \
|
||||||
|
&& rm -rf $(DIST_ARCHIVES) \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
|
||||||
|
&& cd "$$am__cwd" \
|
||||||
|
|| exit 1
|
||||||
|
$(am__post_remove_distdir)
|
||||||
|
@(echo "$(distdir) archives ready for distribution: "; \
|
||||||
|
list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
|
||||||
|
sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
|
||||||
|
distuninstallcheck:
|
||||||
|
@test -n '$(distuninstallcheck_dir)' || { \
|
||||||
|
echo 'ERROR: trying to run $@ with an empty' \
|
||||||
|
'$$(distuninstallcheck_dir)' >&2; \
|
||||||
|
exit 1; \
|
||||||
|
}; \
|
||||||
|
$(am__cd) '$(distuninstallcheck_dir)' || { \
|
||||||
|
echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
|
||||||
|
exit 1; \
|
||||||
|
}; \
|
||||||
|
test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
|
||||||
|
|| { echo "ERROR: files left after uninstall:" ; \
|
||||||
|
if test -n "$(DESTDIR)"; then \
|
||||||
|
echo " (check DESTDIR support)"; \
|
||||||
|
fi ; \
|
||||||
|
$(distuninstallcheck_listfiles) ; \
|
||||||
|
exit 1; } >&2
|
||||||
|
distcleancheck: distclean
|
||||||
|
@if test '$(srcdir)' = . ; then \
|
||||||
|
echo "ERROR: distcleancheck can only run from a VPATH build" ; \
|
||||||
|
exit 1 ; \
|
||||||
|
fi
|
||||||
|
@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
|
||||||
|
|| { echo "ERROR: files left in build directory after distclean:" ; \
|
||||||
|
$(distcleancheck_listfiles) ; \
|
||||||
|
exit 1; } >&2
|
||||||
|
check-am: all-am
|
||||||
|
check: check-recursive
|
||||||
|
all-am: Makefile $(DATA)
|
||||||
|
installdirs: installdirs-recursive
|
||||||
|
installdirs-am:
|
||||||
|
for dir in "$(DESTDIR)$(dsl_cpe_control_docdir)"; do \
|
||||||
|
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
|
||||||
|
done
|
||||||
|
install: install-recursive
|
||||||
|
install-exec: install-exec-recursive
|
||||||
|
install-data: install-data-recursive
|
||||||
|
uninstall: uninstall-recursive
|
||||||
|
|
||||||
|
install-am: all-am
|
||||||
|
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||||
|
|
||||||
|
installcheck: installcheck-recursive
|
||||||
|
install-strip:
|
||||||
|
if test -z '$(STRIP)'; then \
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||||
|
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||||
|
install; \
|
||||||
|
else \
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||||
|
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||||
|
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||||
|
fi
|
||||||
|
mostlyclean-generic:
|
||||||
|
|
||||||
|
clean-generic:
|
||||||
|
|
||||||
|
distclean-generic:
|
||||||
|
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||||
|
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
|
||||||
|
|
||||||
|
maintainer-clean-generic:
|
||||||
|
@echo "This command is intended for maintainers to use"
|
||||||
|
@echo "it deletes files that may require special tools to rebuild."
|
||||||
|
clean: clean-recursive
|
||||||
|
|
||||||
|
clean-am: clean-generic mostlyclean-am
|
||||||
|
|
||||||
|
distclean: distclean-recursive
|
||||||
|
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
|
||||||
|
-rm -f Makefile
|
||||||
|
distclean-am: clean-am distclean-generic distclean-tags
|
||||||
|
|
||||||
|
dvi: dvi-recursive
|
||||||
|
|
||||||
|
dvi-am:
|
||||||
|
|
||||||
|
html: html-recursive
|
||||||
|
|
||||||
|
html-am:
|
||||||
|
|
||||||
|
info: info-recursive
|
||||||
|
|
||||||
|
info-am:
|
||||||
|
|
||||||
|
install-data-am: install-dsl_cpe_control_docDATA
|
||||||
|
|
||||||
|
install-dvi: install-dvi-recursive
|
||||||
|
|
||||||
|
install-dvi-am:
|
||||||
|
|
||||||
|
install-exec-am:
|
||||||
|
|
||||||
|
install-html: install-html-recursive
|
||||||
|
|
||||||
|
install-html-am:
|
||||||
|
|
||||||
|
install-info: install-info-recursive
|
||||||
|
|
||||||
|
install-info-am:
|
||||||
|
|
||||||
|
install-man:
|
||||||
|
|
||||||
|
install-pdf: install-pdf-recursive
|
||||||
|
|
||||||
|
install-pdf-am:
|
||||||
|
|
||||||
|
install-ps: install-ps-recursive
|
||||||
|
|
||||||
|
install-ps-am:
|
||||||
|
|
||||||
|
installcheck-am:
|
||||||
|
|
||||||
|
maintainer-clean: maintainer-clean-recursive
|
||||||
|
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
|
||||||
|
-rm -rf $(top_srcdir)/autom4te.cache
|
||||||
|
-rm -f Makefile
|
||||||
|
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||||
|
|
||||||
|
mostlyclean: mostlyclean-recursive
|
||||||
|
|
||||||
|
mostlyclean-am: mostlyclean-generic
|
||||||
|
|
||||||
|
pdf: pdf-recursive
|
||||||
|
|
||||||
|
pdf-am:
|
||||||
|
|
||||||
|
ps: ps-recursive
|
||||||
|
|
||||||
|
ps-am:
|
||||||
|
|
||||||
|
uninstall-am: uninstall-dsl_cpe_control_docDATA
|
||||||
|
|
||||||
|
.MAKE: $(am__recursive_targets) install-am install-strip
|
||||||
|
|
||||||
|
.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
|
||||||
|
am--refresh check check-am clean clean-cscope clean-generic \
|
||||||
|
cscope cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \
|
||||||
|
dist-gzip dist-hook dist-lzip dist-shar dist-tarZ dist-xz \
|
||||||
|
dist-zip distcheck distclean distclean-generic distclean-tags \
|
||||||
|
distcleancheck distdir distuninstallcheck dvi dvi-am html \
|
||||||
|
html-am info info-am install install-am install-data \
|
||||||
|
install-data-am install-dsl_cpe_control_docDATA install-dvi \
|
||||||
|
install-dvi-am install-exec install-exec-am install-html \
|
||||||
|
install-html-am install-info install-info-am install-man \
|
||||||
|
install-pdf install-pdf-am install-ps install-ps-am \
|
||||||
|
install-strip installcheck installcheck-am installdirs \
|
||||||
|
installdirs-am maintainer-clean maintainer-clean-generic \
|
||||||
|
mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \
|
||||||
|
tags-am uninstall uninstall-am \
|
||||||
|
uninstall-dsl_cpe_control_docDATA
|
||||||
|
|
||||||
|
.PRECIOUS: Makefile
|
||||||
|
|
||||||
|
|
||||||
|
# Copy all the spec files. Of cource, only one is actually used.
|
||||||
|
dist-hook:
|
||||||
|
for specfile in *.spec; do \
|
||||||
|
if test -f $$specfile; then \
|
||||||
|
cp -p $$specfile $(distdir); \
|
||||||
|
fi \
|
||||||
|
done
|
||||||
|
|
||||||
|
# Check for correct line ends (reduce scope to 'src' because Win32 files can have CRLF)
|
||||||
|
distcheck-hook:
|
||||||
|
chmod a+w $(distdir)
|
||||||
|
echo "Checking line ends ...!!!"; \
|
||||||
|
find $(distdir)/src -type f -exec file {} \; | grep -e "CRLF" -e "Non-ISO" && exit 1; \
|
||||||
|
echo "Checking line ends ... done."
|
||||||
|
|
||||||
|
lint:
|
||||||
|
@target=lint; \
|
||||||
|
list='$(SUBDIRS)'; \
|
||||||
|
for subdir in $$list; do \
|
||||||
|
echo "Making $$target in $$subdir"; \
|
||||||
|
if test "$$subdir" = "."; then \
|
||||||
|
dot_seen=yes; \
|
||||||
|
local_target="$$target-am"; \
|
||||||
|
else \
|
||||||
|
local_target="$$target"; \
|
||||||
|
fi; \
|
||||||
|
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||||
|
|| eval $$failcom; \
|
||||||
|
done;
|
||||||
|
|
||||||
|
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||||
|
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||||
|
.NOEXPORT:
|
||||||
0
NEWS
Normal file
0
NEWS
Normal file
102
README
Normal file
102
README
Normal file
|
|
@ -0,0 +1,102 @@
|
||||||
|
/******************************************************************************
|
||||||
|
|
||||||
|
Copyright 2017, Intel Corporation
|
||||||
|
|
||||||
|
For licensing information, see the file 'LICENSE' in the root folder of
|
||||||
|
this software module.
|
||||||
|
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
1. CONTENT OF DELIVERY
|
||||||
|
|
||||||
|
1.1 SOURCE CODE CONTENT
|
||||||
|
|
||||||
|
The DSL CPE API is designed to fulfill a wide spectrum of applications.
|
||||||
|
Support for both low footprint as well as premium applications results in a
|
||||||
|
comprehensive source code content/structure. However please note that depending
|
||||||
|
on the used configuration
|
||||||
|
a) there are files available that you might not need at all
|
||||||
|
(for example OS specific files)
|
||||||
|
b) even the needed files includes various configuration specific parts that
|
||||||
|
might be not used for the selected configuration
|
||||||
|
As a result the lines of code (LOC) that are finally compiled/used are usually
|
||||||
|
much smaller than the available LOC.
|
||||||
|
For more details please also refer to chapter "3. Getting Started" within
|
||||||
|
"User's Manual Programmers Reference" (UMPR) of the DSL CPE API
|
||||||
|
|
||||||
|
|
||||||
|
1.2 SOURCE TREE STRUCTURE
|
||||||
|
|
||||||
|
Source tree structure for the DSL CPE Control application.
|
||||||
|
|
||||||
|
Please note that
|
||||||
|
a) the following tree does not include ALL files, it is just to get an easier
|
||||||
|
overview about which parts might be important for the needed configuration
|
||||||
|
b) the usage of "<device>" indicates that a device specific file will be
|
||||||
|
available according to the used source code delivery type.
|
||||||
|
Currently there are deliveries as follows
|
||||||
|
- "danube": Danube Family (includes Danube, Amazon-SE and ARX100)
|
||||||
|
- "vrx": VRX200 Family
|
||||||
|
|
||||||
|
dsl_cpe_control\
|
||||||
|
M:.
|
||||||
|
¦ AUTHORS
|
||||||
|
¦ ChangeLog
|
||||||
|
¦ Makefile.am
|
||||||
|
¦ NEWS
|
||||||
|
¦ TODO
|
||||||
|
¦ configure.in
|
||||||
|
¦ dsl_cpe_control.pjt
|
||||||
|
¦ LICENSE
|
||||||
|
¦ README
|
||||||
|
¦
|
||||||
|
+---src // ALL sources including header files
|
||||||
|
¦ ¦ Makefile.am
|
||||||
|
¦ ¦ dsl_cpe_control.c
|
||||||
|
¦ ¦ dsl_cpe_control.h
|
||||||
|
¦ ¦ dsl_cpe_init_cfg.c
|
||||||
|
¦ ¦ dsl_cpe_init_cfg.h
|
||||||
|
¦ ¦ dsl_cpe_cli_<device>.c
|
||||||
|
¦ ¦ dsl_cpe_os.h \
|
||||||
|
¦ ¦ dsl_cpe_linux.c |
|
||||||
|
¦ ¦ dsl_cpe_linux.h |
|
||||||
|
¦ ¦ dsl_cpe_win32.c | API internal OS abstraction for
|
||||||
|
¦ ¦ dsl_cpe_win32.h + different OS in case of not using
|
||||||
|
¦ ¦ dsl_cpe_rtems.c | ifx_os
|
||||||
|
¦ ¦ dsl_cpe_rtems.h |
|
||||||
|
¦ ¦ dsl_cpe_vxworks.c |
|
||||||
|
¦ ¦ dsl_cpe_vxworks.h /
|
||||||
|
|
||||||
|
¦ ¦ dsl_cpe_simulator.c
|
||||||
|
¦ ¦ dsl_cpe_simulator.h
|
||||||
|
¦ ¦ dsl_cpe_cli.c
|
||||||
|
¦ ¦ dsl_cpe_cli.h
|
||||||
|
¦ ¦ dsl_cpe_cli_access.c
|
||||||
|
¦ ¦ dsl_cpe_cli_console.c
|
||||||
|
¦ ¦ dsl_cpe_cli_console.h
|
||||||
|
¦ ¦ dsl_cpe_debug.c
|
||||||
|
¦ ¦ dsl_cpe_debug.h
|
||||||
|
¦ ¦ dsl_cpe_cli_pipe.c
|
||||||
|
¦ ¦ dsl_cpe_debug_<device>.c
|
||||||
|
¦ ¦ dsl_cpe_debug_<device>.h
|
||||||
|
¦ ¦ dsl_cpe_os_lint_map.h
|
||||||
|
¦ ¦ dsl_cpe_cli_mib.c
|
||||||
|
¦ ¦ LLCfg.txt
|
||||||
|
¦ ¦ Makefile.in
|
||||||
|
¦ ¦
|
||||||
|
+---build_win32
|
||||||
|
¦ ¦ dsl_cpe_control_version.h
|
||||||
|
¦ ¦ drv_danube_api_intern.h
|
||||||
|
¦ ¦ dsl_cpe_simulator_config.h
|
||||||
|
¦ ¦
|
||||||
|
¦ +---vc7
|
||||||
|
¦ ¦
|
||||||
|
¦ +---vc6
|
||||||
|
¦
|
||||||
|
+---scripts
|
||||||
|
¦ dsl_cpe_pipe.sh
|
||||||
|
¦ alias_dsl_cpe.sh
|
||||||
|
¦
|
||||||
|
+---build_vxworks
|
||||||
|
control_dsl_cpe_api.wpj
|
||||||
0
TODO
Normal file
0
TODO
Normal file
1153
aclocal.m4
vendored
Normal file
1153
aclocal.m4
vendored
Normal file
File diff suppressed because it is too large
Load diff
328
build_vxworks/control_dsl_cpe_api.wpj
Normal file
328
build_vxworks/control_dsl_cpe_api.wpj
Normal file
|
|
@ -0,0 +1,328 @@
|
||||||
|
Document file - DO NOT EDIT
|
||||||
|
|
||||||
|
<BEGIN> BUILD_PPC860gnu_BUILDRULE
|
||||||
|
archive
|
||||||
|
<END>
|
||||||
|
|
||||||
|
<BEGIN> BUILD_PPC860gnu_MACRO_AR
|
||||||
|
arppc
|
||||||
|
<END>
|
||||||
|
|
||||||
|
<BEGIN> BUILD_PPC860gnu_MACRO_ARCHIVE
|
||||||
|
$(PRJ_DIR)/PPC860gnu/control_dsl_cpe_api.a
|
||||||
|
<END>
|
||||||
|
|
||||||
|
<BEGIN> BUILD_PPC860gnu_MACRO_AS
|
||||||
|
ccppc
|
||||||
|
<END>
|
||||||
|
|
||||||
|
<BEGIN> BUILD_PPC860gnu_MACRO_CC
|
||||||
|
ccppc
|
||||||
|
<END>
|
||||||
|
|
||||||
|
<BEGIN> BUILD_PPC860gnu_MACRO_CFLAGS
|
||||||
|
-g \
|
||||||
|
-DINCLUDE_DSL_CPE_CLI_SUPPORT \
|
||||||
|
-DINCLUDE_DSL_API_CONSOLE \
|
||||||
|
-DINCLUDE_DSL_API_CONSOLE_EXTRA \
|
||||||
|
-DDSL_CPE_REMOVE_PIPE_SUPPORT \
|
||||||
|
-DINCLUDE_DSL_PM \
|
||||||
|
-DDSL_DEBUG_TOOL_INTERFACE \
|
||||||
|
-DINCLUDE_DSL_CPE_PM_CHANNEL_COUNTERS \
|
||||||
|
-DINCLUDE_DSL_CPE_PM_LINE_COUNTERS \
|
||||||
|
-DINCLUDE_DSL_CPE_PM_DATA_PATH_COUNTERS \
|
||||||
|
-DINCLUDE_DSL_CPE_PM_HISTORY \
|
||||||
|
-DINCLUDE_DSL_CPE_PM_SHOWTIME_COUNTERS \
|
||||||
|
-DDSL_CHANNELS_PER_LINE=1 \
|
||||||
|
-DINCLUDE_DSL_CPE_API_VINAX \
|
||||||
|
-O0 \
|
||||||
|
-mcpu=860 \
|
||||||
|
-ansi \
|
||||||
|
-nostdinc \
|
||||||
|
-DRW_MULTI_THREAD \
|
||||||
|
-D_REENTRANT \
|
||||||
|
-fvolatile \
|
||||||
|
-fno-builtin \
|
||||||
|
-fno-for-scope \
|
||||||
|
-DCPU=PPC860 \
|
||||||
|
-DVXWORKS \
|
||||||
|
-DUSE_LIB_IFXOS=1 \
|
||||||
|
-D__PROTOTYPE_5_0 \
|
||||||
|
-Wall \
|
||||||
|
-I$(WIND_BASE)/target/h \
|
||||||
|
-I$(PRJ_DIR) \
|
||||||
|
-I$(PRJ_DIR)/../src \
|
||||||
|
-I$(PRJ_DIR)/../../../../../comacsd_lib/lib_ifxos/src/include \
|
||||||
|
-I$(PRJ_DIR)/../../../driver/src/include \
|
||||||
|
-I$(PRJ_DIR)/../../../../drv_vdsl2_dfe/src
|
||||||
|
<END>
|
||||||
|
|
||||||
|
<BEGIN> BUILD_PPC860gnu_MACRO_CFLAGS_AS
|
||||||
|
-g \
|
||||||
|
-mcpu=860 \
|
||||||
|
-ansi \
|
||||||
|
-nostdinc \
|
||||||
|
-fvolatile \
|
||||||
|
-fno-builtin \
|
||||||
|
-fno-for-scope \
|
||||||
|
-P \
|
||||||
|
-x \
|
||||||
|
assembler-with-cpp \
|
||||||
|
-I. \
|
||||||
|
-I$(WIND_BASE)/target/h \
|
||||||
|
-DCPU=PPC860
|
||||||
|
<END>
|
||||||
|
|
||||||
|
<BEGIN> BUILD_PPC860gnu_MACRO_CPP
|
||||||
|
ccppc -E -P -xc
|
||||||
|
<END>
|
||||||
|
|
||||||
|
<BEGIN> BUILD_PPC860gnu_MACRO_LD
|
||||||
|
ldppc
|
||||||
|
<END>
|
||||||
|
|
||||||
|
<BEGIN> BUILD_PPC860gnu_MACRO_LDDEPS
|
||||||
|
|
||||||
|
<END>
|
||||||
|
|
||||||
|
<BEGIN> BUILD_PPC860gnu_MACRO_LDFLAGS
|
||||||
|
-X -N
|
||||||
|
<END>
|
||||||
|
|
||||||
|
<BEGIN> BUILD_PPC860gnu_MACRO_LD_PARTIAL_FLAGS
|
||||||
|
-X -r
|
||||||
|
<END>
|
||||||
|
|
||||||
|
<BEGIN> BUILD_PPC860gnu_MACRO_MAKEFLAGS
|
||||||
|
-ws
|
||||||
|
<END>
|
||||||
|
|
||||||
|
<BEGIN> BUILD_PPC860gnu_MACRO_NM
|
||||||
|
nmppc
|
||||||
|
<END>
|
||||||
|
|
||||||
|
<BEGIN> BUILD_PPC860gnu_MACRO_OPTION_DEFINE_MACRO
|
||||||
|
-D
|
||||||
|
<END>
|
||||||
|
|
||||||
|
<BEGIN> BUILD_PPC860gnu_MACRO_OPTION_INCLUDE_DIR
|
||||||
|
-I
|
||||||
|
<END>
|
||||||
|
|
||||||
|
<BEGIN> BUILD_PPC860gnu_MACRO_POST_BUILD_RULE
|
||||||
|
|
||||||
|
<END>
|
||||||
|
|
||||||
|
<BEGIN> BUILD_PPC860gnu_MACRO_PRJ_LIBS
|
||||||
|
|
||||||
|
<END>
|
||||||
|
|
||||||
|
<BEGIN> BUILD_PPC860gnu_MACRO_SIZE
|
||||||
|
sizeppc
|
||||||
|
<END>
|
||||||
|
|
||||||
|
<BEGIN> BUILD_PPC860gnu_RO_DEPEND_PATH
|
||||||
|
{$(WIND_BASE)/target/h/} {$(WIND_BASE)/target/src/}
|
||||||
|
<END>
|
||||||
|
|
||||||
|
<BEGIN> BUILD_PPC860gnu_TC
|
||||||
|
::tc_PPC860gnu
|
||||||
|
<END>
|
||||||
|
|
||||||
|
<BEGIN> BUILD_RULE_archive
|
||||||
|
|
||||||
|
<END>
|
||||||
|
|
||||||
|
<BEGIN> BUILD_RULE_control_dsl_cpe_api.out
|
||||||
|
|
||||||
|
<END>
|
||||||
|
|
||||||
|
<BEGIN> BUILD_RULE_objects
|
||||||
|
|
||||||
|
<END>
|
||||||
|
|
||||||
|
<BEGIN> BUILD__CURRENT
|
||||||
|
PPC860gnu
|
||||||
|
<END>
|
||||||
|
|
||||||
|
<BEGIN> BUILD__LIST
|
||||||
|
PPC860gnu
|
||||||
|
<END>
|
||||||
|
|
||||||
|
<BEGIN> CORE_INFO_TYPE
|
||||||
|
::prj_vxApp
|
||||||
|
<END>
|
||||||
|
|
||||||
|
<BEGIN> CORE_INFO_VERSION
|
||||||
|
2.0
|
||||||
|
<END>
|
||||||
|
|
||||||
|
|
||||||
|
<BEGIN> FILE_$(PRJ_DIR)/../src/dsl_cpe_cli.c_objects
|
||||||
|
dsl_cpe_cli.o
|
||||||
|
<END>
|
||||||
|
|
||||||
|
<BEGIN> FILE_$(PRJ_DIR)/../src/dsl_cpe_cli.c_tool
|
||||||
|
C/C++ compiler
|
||||||
|
<END>
|
||||||
|
|
||||||
|
|
||||||
|
<BEGIN> FILE_$(PRJ_DIR)/../src/dsl_cpe_cli_access.c_objects
|
||||||
|
dsl_cpe_cli_access.o
|
||||||
|
<END>
|
||||||
|
|
||||||
|
<BEGIN> FILE_$(PRJ_DIR)/../src/dsl_cpe_cli_access.c_tool
|
||||||
|
C/C++ compiler
|
||||||
|
<END>
|
||||||
|
|
||||||
|
|
||||||
|
<BEGIN> FILE_$(PRJ_DIR)/../src/dsl_cpe_cli_console.c_objects
|
||||||
|
dsl_cpe_cli_console.o
|
||||||
|
<END>
|
||||||
|
|
||||||
|
<BEGIN> FILE_$(PRJ_DIR)/../src/dsl_cpe_cli_console.c_tool
|
||||||
|
C/C++ compiler
|
||||||
|
<END>
|
||||||
|
|
||||||
|
|
||||||
|
<BEGIN> FILE_$(PRJ_DIR)/../src/dsl_cpe_cli_danube.c_objects
|
||||||
|
dsl_cpe_cli_danube.o
|
||||||
|
<END>
|
||||||
|
|
||||||
|
<BEGIN> FILE_$(PRJ_DIR)/../src/dsl_cpe_cli_danube.c_tool
|
||||||
|
C/C++ compiler
|
||||||
|
<END>
|
||||||
|
|
||||||
|
|
||||||
|
<BEGIN> FILE_$(PRJ_DIR)/../src/dsl_cpe_cli_pipe.c_objects
|
||||||
|
dsl_cpe_cli_pipe.o
|
||||||
|
<END>
|
||||||
|
|
||||||
|
<BEGIN> FILE_$(PRJ_DIR)/../src/dsl_cpe_cli_pipe.c_tool
|
||||||
|
C/C++ compiler
|
||||||
|
<END>
|
||||||
|
|
||||||
|
|
||||||
|
<BEGIN> FILE_$(PRJ_DIR)/../src/dsl_cpe_cli_vinax.c_objects
|
||||||
|
dsl_cpe_cli_vinax.o
|
||||||
|
<END>
|
||||||
|
|
||||||
|
<BEGIN> FILE_$(PRJ_DIR)/../src/dsl_cpe_cli_vinax.c_tool
|
||||||
|
C/C++ compiler
|
||||||
|
<END>
|
||||||
|
|
||||||
|
|
||||||
|
<BEGIN> FILE_$(PRJ_DIR)/../src/dsl_cpe_control.c_objects
|
||||||
|
dsl_cpe_control.o
|
||||||
|
<END>
|
||||||
|
|
||||||
|
<BEGIN> FILE_$(PRJ_DIR)/../src/dsl_cpe_control.c_tool
|
||||||
|
C/C++ compiler
|
||||||
|
<END>
|
||||||
|
|
||||||
|
|
||||||
|
<BEGIN> FILE_$(PRJ_DIR)/../src/dsl_cpe_debug.c_objects
|
||||||
|
dsl_cpe_debug.o
|
||||||
|
<END>
|
||||||
|
|
||||||
|
<BEGIN> FILE_$(PRJ_DIR)/../src/dsl_cpe_debug.c_tool
|
||||||
|
C/C++ compiler
|
||||||
|
<END>
|
||||||
|
|
||||||
|
|
||||||
|
<BEGIN> FILE_$(PRJ_DIR)/../src/dsl_cpe_debug_danube.c_objects
|
||||||
|
dsl_cpe_debug_danube.o
|
||||||
|
<END>
|
||||||
|
|
||||||
|
<BEGIN> FILE_$(PRJ_DIR)/../src/dsl_cpe_debug_danube.c_tool
|
||||||
|
C/C++ compiler
|
||||||
|
<END>
|
||||||
|
|
||||||
|
|
||||||
|
<BEGIN> FILE_$(PRJ_DIR)/../src/dsl_cpe_debug_vinax.c_objects
|
||||||
|
dsl_cpe_debug_vinax.o
|
||||||
|
<END>
|
||||||
|
|
||||||
|
<BEGIN> FILE_$(PRJ_DIR)/../src/dsl_cpe_debug_vinax.c_tool
|
||||||
|
C/C++ compiler
|
||||||
|
<END>
|
||||||
|
|
||||||
|
|
||||||
|
<BEGIN> FILE_$(PRJ_DIR)/../src/dsl_cpe_init_cfg.c_objects
|
||||||
|
dsl_cpe_init_cfg.o
|
||||||
|
<END>
|
||||||
|
|
||||||
|
<BEGIN> FILE_$(PRJ_DIR)/../src/dsl_cpe_init_cfg.c_tool
|
||||||
|
C/C++ compiler
|
||||||
|
<END>
|
||||||
|
|
||||||
|
|
||||||
|
<BEGIN> FILE_$(PRJ_DIR)/../src/dsl_cpe_legacy.c_objects
|
||||||
|
dsl_cpe_legacy.o
|
||||||
|
<END>
|
||||||
|
|
||||||
|
<BEGIN> FILE_$(PRJ_DIR)/../src/dsl_cpe_legacy.c_tool
|
||||||
|
C/C++ compiler
|
||||||
|
<END>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<BEGIN> FILE_$(PRJ_DIR)/../src/dsl_cpe_linux.c_objects
|
||||||
|
dsl_cpe_linux.o
|
||||||
|
<END>
|
||||||
|
|
||||||
|
<BEGIN> FILE_$(PRJ_DIR)/../src/dsl_cpe_linux.c_tool
|
||||||
|
C/C++ compiler
|
||||||
|
<END>
|
||||||
|
|
||||||
|
|
||||||
|
<BEGIN> FILE_$(PRJ_DIR)/../src/dsl_cpe_simulator.c_objects
|
||||||
|
dsl_cpe_simulator.o
|
||||||
|
<END>
|
||||||
|
|
||||||
|
<BEGIN> FILE_$(PRJ_DIR)/../src/dsl_cpe_simulator.c_tool
|
||||||
|
C/C++ compiler
|
||||||
|
<END>
|
||||||
|
|
||||||
|
|
||||||
|
<BEGIN> FILE_$(PRJ_DIR)/../src/dsl_cpe_vxworks.c_objects
|
||||||
|
dsl_cpe_vxworks.o
|
||||||
|
<END>
|
||||||
|
|
||||||
|
<BEGIN> FILE_$(PRJ_DIR)/../src/dsl_cpe_vxworks.c_tool
|
||||||
|
C/C++ compiler
|
||||||
|
<END>
|
||||||
|
|
||||||
|
|
||||||
|
<BEGIN> FILE_$(PRJ_DIR)/../src/dsl_cpe_win32.c_objects
|
||||||
|
dsl_cpe_win32.o
|
||||||
|
<END>
|
||||||
|
|
||||||
|
<BEGIN> FILE_$(PRJ_DIR)/../src/dsl_cpe_win32.c_tool
|
||||||
|
C/C++ compiler
|
||||||
|
<END>
|
||||||
|
|
||||||
|
|
||||||
|
<BEGIN> PROJECT_FILES
|
||||||
|
$(PRJ_DIR)/../src/dsl_cpe_cli.c \
|
||||||
|
$(PRJ_DIR)/../src/dsl_cpe_cli_access.c \
|
||||||
|
$(PRJ_DIR)/../src/dsl_cpe_cli_console.c \
|
||||||
|
$(PRJ_DIR)/../src/dsl_cpe_cli_danube.c \
|
||||||
|
$(PRJ_DIR)/../src/dsl_cpe_cli_pipe.c \
|
||||||
|
$(PRJ_DIR)/../src/dsl_cpe_cli_vinax.c \
|
||||||
|
$(PRJ_DIR)/../src/dsl_cpe_control.c \
|
||||||
|
$(PRJ_DIR)/../src/dsl_cpe_debug.c \
|
||||||
|
$(PRJ_DIR)/../src/dsl_cpe_debug_danube.c \
|
||||||
|
$(PRJ_DIR)/../src/dsl_cpe_debug_vinax.c \
|
||||||
|
$(PRJ_DIR)/../src/dsl_cpe_init_cfg.c \
|
||||||
|
$(PRJ_DIR)/../src/dsl_cpe_legacy.c \
|
||||||
|
$(PRJ_DIR)/../src/dsl_cpe_linux.c \
|
||||||
|
$(PRJ_DIR)/../src/dsl_cpe_simulator.c \
|
||||||
|
$(PRJ_DIR)/../src/dsl_cpe_win32.c \
|
||||||
|
$(PRJ_DIR)/../src/dsl_cpe_vxworks.c
|
||||||
|
<END>
|
||||||
|
|
||||||
|
<BEGIN> userComments
|
||||||
|
DSL CPE API control application
|
||||||
|
<END>
|
||||||
|
|
||||||
25
build_win32/dsl_cpe_control_version.h
Normal file
25
build_win32/dsl_cpe_control_version.h
Normal file
|
|
@ -0,0 +1,25 @@
|
||||||
|
#ifndef LIB_DSL_VERSION_H_
|
||||||
|
#define LIB_DSL_VERSION_H_
|
||||||
|
|
||||||
|
/* Name of package */
|
||||||
|
#define PACKAGE "dsl_cpe_control"
|
||||||
|
|
||||||
|
/* Version number of package */
|
||||||
|
#define VERSION "4.21.1"
|
||||||
|
|
||||||
|
/* Define to the version of this package. */
|
||||||
|
#define PACKAGE_VERSION VERSION
|
||||||
|
|
||||||
|
/* Define to the full name of this package. */
|
||||||
|
#define PACKAGE_NAME "DSL CPE Control"
|
||||||
|
|
||||||
|
/* Define to the full name and version of this package. */
|
||||||
|
#define PACKAGE_STRING PACKAGE_NAME " " VERSION
|
||||||
|
|
||||||
|
/* Define to the address where bug reports for this package should be sent. */
|
||||||
|
#define PACKAGE_BUGREPORT ""
|
||||||
|
|
||||||
|
/* Define to the one symbol short name of this package. */
|
||||||
|
#define PACKAGE_TARNAME "dsl_cpe_control"
|
||||||
|
|
||||||
|
#endif /*LIB_DSL_VERSION_H_*/
|
||||||
62
build_win32/vc7/dsl_cpe_control.sln
Normal file
62
build_win32/vc7/dsl_cpe_control.sln
Normal file
|
|
@ -0,0 +1,62 @@
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 8.00
|
||||||
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dsl_cpe_control", "dsl_cpe_control.vcproj", "{F79EAF4F-E01C-4331-9E2E-BEC06153ACF4}"
|
||||||
|
ProjectSection(ProjectDependencies) = postProject
|
||||||
|
{0BE28B50-BAFF-4849-A060-6BD4A5B2C670} = {0BE28B50-BAFF-4849-A060-6BD4A5B2C670}
|
||||||
|
EndProjectSection
|
||||||
|
EndProject
|
||||||
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lib_ifxos", "..\..\..\..\..\..\comacsd_lib\lib_ifxos\build_win32\vc7\lib_ifxos.vcproj", "{0BE28B50-BAFF-4849-A060-6BD4A5B2C670}"
|
||||||
|
ProjectSection(ProjectDependencies) = postProject
|
||||||
|
EndProjectSection
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfiguration) = preSolution
|
||||||
|
Danube Debug = Danube Debug
|
||||||
|
Danube Release = Danube Release
|
||||||
|
Debug - Nucleus Plus = Debug - Nucleus Plus
|
||||||
|
Debug - SV CPP = Debug - SV CPP
|
||||||
|
Debug - Win32 = Debug - Win32
|
||||||
|
Release - Win32 = Release - Win32
|
||||||
|
VRX Debug = VRX Debug
|
||||||
|
VRX Release = VRX Release
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectDependencies) = postSolution
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfiguration) = postSolution
|
||||||
|
{F79EAF4F-E01C-4331-9E2E-BEC06153ACF4}.Danube Debug.ActiveCfg = Danube Debug|Win32
|
||||||
|
{F79EAF4F-E01C-4331-9E2E-BEC06153ACF4}.Danube Debug.Build.0 = Danube Debug|Win32
|
||||||
|
{F79EAF4F-E01C-4331-9E2E-BEC06153ACF4}.Danube Release.ActiveCfg = Danube Release|Win32
|
||||||
|
{F79EAF4F-E01C-4331-9E2E-BEC06153ACF4}.Danube Release.Build.0 = Danube Release|Win32
|
||||||
|
{F79EAF4F-E01C-4331-9E2E-BEC06153ACF4}.Debug - Nucleus Plus.ActiveCfg = Debug|Win32
|
||||||
|
{F79EAF4F-E01C-4331-9E2E-BEC06153ACF4}.Debug - Nucleus Plus.Build.0 = Debug|Win32
|
||||||
|
{F79EAF4F-E01C-4331-9E2E-BEC06153ACF4}.Debug - SV CPP.ActiveCfg = Debug|Win32
|
||||||
|
{F79EAF4F-E01C-4331-9E2E-BEC06153ACF4}.Debug - SV CPP.Build.0 = Debug|Win32
|
||||||
|
{F79EAF4F-E01C-4331-9E2E-BEC06153ACF4}.Debug - Win32.ActiveCfg = Debug|Win32
|
||||||
|
{F79EAF4F-E01C-4331-9E2E-BEC06153ACF4}.Debug - Win32.Build.0 = Debug|Win32
|
||||||
|
{F79EAF4F-E01C-4331-9E2E-BEC06153ACF4}.Release - Win32.ActiveCfg = Release|Win32
|
||||||
|
{F79EAF4F-E01C-4331-9E2E-BEC06153ACF4}.Release - Win32.Build.0 = Release|Win32
|
||||||
|
{F79EAF4F-E01C-4331-9E2E-BEC06153ACF4}.VRX Debug.ActiveCfg = VRX Debug|Win32
|
||||||
|
{F79EAF4F-E01C-4331-9E2E-BEC06153ACF4}.VRX Debug.Build.0 = VRX Debug|Win32
|
||||||
|
{F79EAF4F-E01C-4331-9E2E-BEC06153ACF4}.VRX Release.ActiveCfg = VRX Release|Win32
|
||||||
|
{F79EAF4F-E01C-4331-9E2E-BEC06153ACF4}.VRX Release.Build.0 = VRX Release|Win32
|
||||||
|
{0BE28B50-BAFF-4849-A060-6BD4A5B2C670}.Danube Debug.ActiveCfg = Debug - Win32|Win32
|
||||||
|
{0BE28B50-BAFF-4849-A060-6BD4A5B2C670}.Danube Debug.Build.0 = Debug - Win32|Win32
|
||||||
|
{0BE28B50-BAFF-4849-A060-6BD4A5B2C670}.Danube Release.ActiveCfg = Debug - Nucleus Plus|Win32
|
||||||
|
{0BE28B50-BAFF-4849-A060-6BD4A5B2C670}.Danube Release.Build.0 = Debug - Nucleus Plus|Win32
|
||||||
|
{0BE28B50-BAFF-4849-A060-6BD4A5B2C670}.Debug - Nucleus Plus.ActiveCfg = Debug - Nucleus Plus|Win32
|
||||||
|
{0BE28B50-BAFF-4849-A060-6BD4A5B2C670}.Debug - Nucleus Plus.Build.0 = Debug - Nucleus Plus|Win32
|
||||||
|
{0BE28B50-BAFF-4849-A060-6BD4A5B2C670}.Debug - SV CPP.ActiveCfg = Debug - Nucleus Plus|Win32
|
||||||
|
{0BE28B50-BAFF-4849-A060-6BD4A5B2C670}.Debug - SV CPP.Build.0 = Debug - Nucleus Plus|Win32
|
||||||
|
{0BE28B50-BAFF-4849-A060-6BD4A5B2C670}.Debug - Win32.ActiveCfg = Debug - Win32|Win32
|
||||||
|
{0BE28B50-BAFF-4849-A060-6BD4A5B2C670}.Debug - Win32.Build.0 = Debug - Win32|Win32
|
||||||
|
{0BE28B50-BAFF-4849-A060-6BD4A5B2C670}.Release - Win32.ActiveCfg = Release - Win32|Win32
|
||||||
|
{0BE28B50-BAFF-4849-A060-6BD4A5B2C670}.Release - Win32.Build.0 = Release - Win32|Win32
|
||||||
|
{0BE28B50-BAFF-4849-A060-6BD4A5B2C670}.VRX Debug.ActiveCfg = Debug - Win32|Win32
|
||||||
|
{0BE28B50-BAFF-4849-A060-6BD4A5B2C670}.VRX Debug.Build.0 = Debug - Win32|Win32
|
||||||
|
{0BE28B50-BAFF-4849-A060-6BD4A5B2C670}.VRX Release.ActiveCfg = Debug - Nucleus Plus|Win32
|
||||||
|
{0BE28B50-BAFF-4849-A060-6BD4A5B2C670}.VRX Release.Build.0 = Debug - Nucleus Plus|Win32
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ExtensibilityAddIns) = postSolution
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
||||||
515
build_win32/vc7/dsl_cpe_control.vcproj
Normal file
515
build_win32/vc7/dsl_cpe_control.vcproj
Normal file
|
|
@ -0,0 +1,515 @@
|
||||||
|
<?xml version="1.0" encoding="Windows-1252"?>
|
||||||
|
<VisualStudioProject
|
||||||
|
ProjectType="Visual C++"
|
||||||
|
Version="7.10"
|
||||||
|
Name="dsl_cpe_control"
|
||||||
|
ProjectGUID="{F79EAF4F-E01C-4331-9E2E-BEC06153ACF4}"
|
||||||
|
RootNamespace="dsl_cpe_control"
|
||||||
|
Keyword="Win32Proj">
|
||||||
|
<Platforms>
|
||||||
|
<Platform
|
||||||
|
Name="Win32"/>
|
||||||
|
</Platforms>
|
||||||
|
<Configurations>
|
||||||
|
<Configuration
|
||||||
|
Name="Debug|Win32"
|
||||||
|
OutputDirectory="Debug"
|
||||||
|
IntermediateDirectory="Debug"
|
||||||
|
ConfigurationType="1"
|
||||||
|
CharacterSet="2">
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
Optimization="0"
|
||||||
|
AdditionalIncludeDirectories="C:\snapshots\hempel_dsl_cpe_api_dev_generic_snapshot\comacsd_driver\drv_dsl_cpe_api\driver\src\include"
|
||||||
|
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
|
||||||
|
MinimalRebuild="TRUE"
|
||||||
|
BasicRuntimeChecks="3"
|
||||||
|
RuntimeLibrary="5"
|
||||||
|
UsePrecompiledHeader="0"
|
||||||
|
WarningLevel="3"
|
||||||
|
Detect64BitPortabilityProblems="FALSE"
|
||||||
|
DebugInformationFormat="4"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCLinkerTool"
|
||||||
|
AdditionalDependencies="wsock32.lib"
|
||||||
|
OutputFile="$(OutDir)/dsl_cpe_control.exe"
|
||||||
|
LinkIncremental="2"
|
||||||
|
GenerateDebugInformation="TRUE"
|
||||||
|
ProgramDatabaseFile="$(OutDir)/dsl_cpe_control.pdb"
|
||||||
|
SubSystem="1"
|
||||||
|
TargetMachine="1"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCMIDLTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPostBuildEventTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreBuildEventTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreLinkEventTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCResourceCompilerTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebServiceProxyGeneratorTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXMLDataGeneratorTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebDeploymentTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManagedWrapperGeneratorTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||||
|
</Configuration>
|
||||||
|
<Configuration
|
||||||
|
Name="Release|Win32"
|
||||||
|
OutputDirectory="Release"
|
||||||
|
IntermediateDirectory="Release"
|
||||||
|
ConfigurationType="1"
|
||||||
|
CharacterSet="2">
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
Optimization="2"
|
||||||
|
InlineFunctionExpansion="1"
|
||||||
|
OmitFramePointers="TRUE"
|
||||||
|
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
|
||||||
|
StringPooling="TRUE"
|
||||||
|
RuntimeLibrary="4"
|
||||||
|
EnableFunctionLevelLinking="TRUE"
|
||||||
|
UsePrecompiledHeader="3"
|
||||||
|
WarningLevel="3"
|
||||||
|
Detect64BitPortabilityProblems="TRUE"
|
||||||
|
DebugInformationFormat="3"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCLinkerTool"
|
||||||
|
OutputFile="$(OutDir)/dsl_cpe_control.exe"
|
||||||
|
LinkIncremental="1"
|
||||||
|
GenerateDebugInformation="TRUE"
|
||||||
|
SubSystem="1"
|
||||||
|
OptimizeReferences="2"
|
||||||
|
EnableCOMDATFolding="2"
|
||||||
|
TargetMachine="1"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCMIDLTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPostBuildEventTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreBuildEventTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreLinkEventTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCResourceCompilerTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebServiceProxyGeneratorTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXMLDataGeneratorTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebDeploymentTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManagedWrapperGeneratorTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||||
|
</Configuration>
|
||||||
|
<Configuration
|
||||||
|
Name="Danube Debug|Win32"
|
||||||
|
OutputDirectory="Danube Debug"
|
||||||
|
IntermediateDirectory="Danube Debug"
|
||||||
|
ConfigurationType="1"
|
||||||
|
CharacterSet="2">
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
Optimization="0"
|
||||||
|
AdditionalIncludeDirectories="..\..\..\..\..\..\comacsd_lib\lib_ifxos\src\include;..\;..\..\..\..\driver\src\include"
|
||||||
|
PreprocessorDefinitions="IFXOS_USE_DEV_IO=1;WIN32;_DEBUG;_CONSOLE;INCLUDE_DSL_CPE_CLI_SUPPORT;INCLUDE_DSL_CPE_API_DANUBE;DSL_CPE_SIMULATOR;DSL_CPE_REMOVE_PIPE_SUPPORT;INCLUDE_DSL_CPE_CMV_SCRIPTS_SUPPORT;DSL_CHANNELS_PER_LINE=1"
|
||||||
|
MinimalRebuild="TRUE"
|
||||||
|
BasicRuntimeChecks="3"
|
||||||
|
RuntimeLibrary="1"
|
||||||
|
StructMemberAlignment="1"
|
||||||
|
BufferSecurityCheck="TRUE"
|
||||||
|
EnableFunctionLevelLinking="TRUE"
|
||||||
|
UsePrecompiledHeader="0"
|
||||||
|
WarningLevel="3"
|
||||||
|
Detect64BitPortabilityProblems="FALSE"
|
||||||
|
DebugInformationFormat="4"
|
||||||
|
CallingConvention="0"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCLinkerTool"
|
||||||
|
AdditionalDependencies="wsock32.lib"
|
||||||
|
OutputFile="$(OutDir)/dsl_cpe_control.exe"
|
||||||
|
LinkIncremental="2"
|
||||||
|
GenerateDebugInformation="TRUE"
|
||||||
|
ProgramDatabaseFile="$(OutDir)/dsl_cpe_control.pdb"
|
||||||
|
SubSystem="1"
|
||||||
|
TargetMachine="1"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCMIDLTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPostBuildEventTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreBuildEventTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreLinkEventTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCResourceCompilerTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebServiceProxyGeneratorTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXMLDataGeneratorTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebDeploymentTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManagedWrapperGeneratorTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||||
|
</Configuration>
|
||||||
|
<Configuration
|
||||||
|
Name="VRX Debug|Win32"
|
||||||
|
OutputDirectory="VRX Debug"
|
||||||
|
IntermediateDirectory="VRX Debug"
|
||||||
|
ConfigurationType="1"
|
||||||
|
CharacterSet="2">
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
Optimization="0"
|
||||||
|
AdditionalIncludeDirectories="..\..\..\..\..\..\comacsd_lib\lib_ifxos\src\include;..\;..\..\..\..\driver\src\include"
|
||||||
|
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;DSL_CPE_REMOVE_PIPE_SUPPORT;INCLUDE_DSL_CPE_CLI_SUPPORT;INCLUDE_DSL_CPE_IFXOS_SUPPORT;IFXOS_USE_DEV_IO=1;INCLUDE_DSL_CPE_API_VRX;DSL_CPE_SIMULATOR;DSL_CHANNELS_PER_LINE=1"
|
||||||
|
MinimalRebuild="TRUE"
|
||||||
|
BasicRuntimeChecks="3"
|
||||||
|
RuntimeLibrary="1"
|
||||||
|
UsePrecompiledHeader="0"
|
||||||
|
WarningLevel="3"
|
||||||
|
Detect64BitPortabilityProblems="FALSE"
|
||||||
|
DebugInformationFormat="4"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCLinkerTool"
|
||||||
|
AdditionalDependencies="wsock32.lib"
|
||||||
|
OutputFile="$(OutDir)/dsl_cpe_control.exe"
|
||||||
|
LinkIncremental="2"
|
||||||
|
GenerateDebugInformation="TRUE"
|
||||||
|
ProgramDatabaseFile="$(OutDir)/dsl_cpe_control.pdb"
|
||||||
|
SubSystem="1"
|
||||||
|
TargetMachine="1"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCMIDLTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPostBuildEventTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreBuildEventTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreLinkEventTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCResourceCompilerTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebServiceProxyGeneratorTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXMLDataGeneratorTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebDeploymentTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManagedWrapperGeneratorTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||||
|
</Configuration>
|
||||||
|
<Configuration
|
||||||
|
Name="Danube Release|Win32"
|
||||||
|
OutputDirectory="Danube Release"
|
||||||
|
IntermediateDirectory="Danube Release"
|
||||||
|
ConfigurationType="1"
|
||||||
|
CharacterSet="2">
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
Optimization="2"
|
||||||
|
InlineFunctionExpansion="1"
|
||||||
|
OmitFramePointers="TRUE"
|
||||||
|
AdditionalIncludeDirectories="..\;..\..\..\..\driver\src\include"
|
||||||
|
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;INCLUDE_DSL_CPE_CLI_SUPPORT;INCLUDE_DSL_CPE_API_DANUBE;DSL_CPE_SIMULATOR"
|
||||||
|
StringPooling="TRUE"
|
||||||
|
RuntimeLibrary="3"
|
||||||
|
StructMemberAlignment="1"
|
||||||
|
EnableFunctionLevelLinking="TRUE"
|
||||||
|
UsePrecompiledHeader="0"
|
||||||
|
WarningLevel="3"
|
||||||
|
Detect64BitPortabilityProblems="TRUE"
|
||||||
|
DebugInformationFormat="3"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCLinkerTool"
|
||||||
|
OutputFile="$(OutDir)/dsl_cpe_control.exe"
|
||||||
|
LinkIncremental="1"
|
||||||
|
GenerateDebugInformation="TRUE"
|
||||||
|
SubSystem="1"
|
||||||
|
OptimizeReferences="2"
|
||||||
|
EnableCOMDATFolding="2"
|
||||||
|
TargetMachine="1"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCMIDLTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPostBuildEventTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreBuildEventTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreLinkEventTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCResourceCompilerTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebServiceProxyGeneratorTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXMLDataGeneratorTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebDeploymentTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManagedWrapperGeneratorTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||||
|
</Configuration>
|
||||||
|
<Configuration
|
||||||
|
Name="VRX Release|Win32"
|
||||||
|
OutputDirectory="VRX Release"
|
||||||
|
IntermediateDirectory="VRX Release"
|
||||||
|
ConfigurationType="1"
|
||||||
|
CharacterSet="2">
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
Optimization="2"
|
||||||
|
InlineFunctionExpansion="1"
|
||||||
|
OmitFramePointers="TRUE"
|
||||||
|
AdditionalIncludeDirectories="..\;..\..\..\..\driver\src\include"
|
||||||
|
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;INCLUDE_DSL_CPE_API_VRX;DSL_CPE_SIMULATOR"
|
||||||
|
StringPooling="TRUE"
|
||||||
|
RuntimeLibrary="4"
|
||||||
|
EnableFunctionLevelLinking="TRUE"
|
||||||
|
UsePrecompiledHeader="0"
|
||||||
|
WarningLevel="3"
|
||||||
|
Detect64BitPortabilityProblems="TRUE"
|
||||||
|
DebugInformationFormat="3"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCLinkerTool"
|
||||||
|
OutputFile="$(OutDir)/dsl_cpe_control.exe"
|
||||||
|
LinkIncremental="1"
|
||||||
|
GenerateDebugInformation="TRUE"
|
||||||
|
SubSystem="1"
|
||||||
|
OptimizeReferences="2"
|
||||||
|
EnableCOMDATFolding="2"
|
||||||
|
TargetMachine="1"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCMIDLTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPostBuildEventTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreBuildEventTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreLinkEventTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCResourceCompilerTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebServiceProxyGeneratorTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXMLDataGeneratorTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebDeploymentTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManagedWrapperGeneratorTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||||
|
</Configuration>
|
||||||
|
</Configurations>
|
||||||
|
<References>
|
||||||
|
</References>
|
||||||
|
<Files>
|
||||||
|
<Filter
|
||||||
|
Name="Source Files"
|
||||||
|
Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm"
|
||||||
|
SourceControlFiles="FALSE">
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\src\dsl_cpe_cli.c">
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\src\dsl_cpe_cli_access.c">
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\src\dsl_cpe_cli_console.c">
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\src\dsl_cpe_cli_danube.c">
|
||||||
|
<FileConfiguration
|
||||||
|
Name="VRX Debug|Win32"
|
||||||
|
ExcludedFromBuild="TRUE">
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"/>
|
||||||
|
</FileConfiguration>
|
||||||
|
<FileConfiguration
|
||||||
|
Name="VRX Release|Win32"
|
||||||
|
ExcludedFromBuild="TRUE">
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"/>
|
||||||
|
</FileConfiguration>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\src\dsl_cpe_cli_pipe.c">
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\src\dsl_cpe_cli_vrx.c">
|
||||||
|
<FileConfiguration
|
||||||
|
Name="Danube Debug|Win32"
|
||||||
|
ExcludedFromBuild="TRUE">
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"/>
|
||||||
|
</FileConfiguration>
|
||||||
|
<FileConfiguration
|
||||||
|
Name="Danube Release|Win32"
|
||||||
|
ExcludedFromBuild="TRUE">
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"/>
|
||||||
|
</FileConfiguration>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\src\dsl_cpe_control.c">
|
||||||
|
<FileConfiguration
|
||||||
|
Name="Debug|Win32">
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
ObjectFile="$(IntDir)/$(InputName)1.obj"/>
|
||||||
|
</FileConfiguration>
|
||||||
|
<FileConfiguration
|
||||||
|
Name="Release|Win32">
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
ObjectFile="$(IntDir)/$(InputName)1.obj"/>
|
||||||
|
</FileConfiguration>
|
||||||
|
<FileConfiguration
|
||||||
|
Name="Danube Debug|Win32">
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
ObjectFile="$(IntDir)/$(InputName)1.obj"/>
|
||||||
|
</FileConfiguration>
|
||||||
|
<FileConfiguration
|
||||||
|
Name="VRX Debug|Win32">
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
ObjectFile="$(IntDir)/$(InputName)1.obj"/>
|
||||||
|
</FileConfiguration>
|
||||||
|
<FileConfiguration
|
||||||
|
Name="Danube Release|Win32">
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
ObjectFile="$(IntDir)/$(InputName)1.obj"/>
|
||||||
|
</FileConfiguration>
|
||||||
|
<FileConfiguration
|
||||||
|
Name="VRX Release|Win32">
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
ObjectFile="$(IntDir)/$(InputName)1.obj"/>
|
||||||
|
</FileConfiguration>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\src\dsl_cpe_debug.c">
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\src\dsl_cpe_debug_danube.c">
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\src\dsl_cpe_debug_vrx.c">
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\src\dsl_cpe_init_cfg.c">
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\src\dsl_cpe_legacy.c">
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\src\dsl_cpe_linux.c">
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\src\dsl_cpe_simulator.c">
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\src\dsl_cpe_vxworks.c">
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\src\dsl_cpe_win32.c">
|
||||||
|
</File>
|
||||||
|
</Filter>
|
||||||
|
<Filter
|
||||||
|
Name="Header Files"
|
||||||
|
Filter="h;hpp;hxx;hm;inl;inc">
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\src\dsl_cpe_cli.h">
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\src\dsl_cpe_cli_console.h">
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\src\dsl_cpe_control.h">
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\dsl_cpe_control_version.h">
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\src\dsl_cpe_debug.h">
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\src\dsl_cpe_debug_danube.h">
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\src\dsl_cpe_debug_vrx.h">
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\src\dsl_cpe_init_cfg.h">
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\src\dsl_cpe_linux.h">
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\src\dsl_cpe_os.h">
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\src\dsl_cpe_simulator.h">
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\src\dsl_cpe_vxworks.h">
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\src\dsl_cpe_win32.h">
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="stdafx.h">
|
||||||
|
</File>
|
||||||
|
<Filter
|
||||||
|
Name="Resource Files"
|
||||||
|
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe">
|
||||||
|
</Filter>
|
||||||
|
</Filter>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\ChangeLog">
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\configure.in">
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\NEWS">
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\README">
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="ReadMe.txt">
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\scripts\swig2cli.xsl">
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\TODO">
|
||||||
|
</File>
|
||||||
|
</Files>
|
||||||
|
<Globals>
|
||||||
|
</Globals>
|
||||||
|
</VisualStudioProject>
|
||||||
347
compile
Executable file
347
compile
Executable file
|
|
@ -0,0 +1,347 @@
|
||||||
|
#! /bin/sh
|
||||||
|
# Wrapper for compilers which do not understand '-c -o'.
|
||||||
|
|
||||||
|
scriptversion=2012-10-14.11; # UTC
|
||||||
|
|
||||||
|
# Copyright (C) 1999-2014 Free Software Foundation, Inc.
|
||||||
|
# Written by Tom Tromey <tromey@cygnus.com>.
|
||||||
|
#
|
||||||
|
# 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, 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 this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
# As a special exception to the GNU General Public License, if you
|
||||||
|
# distribute this file as part of a program that contains a
|
||||||
|
# configuration script generated by Autoconf, you may include it under
|
||||||
|
# the same distribution terms that you use for the rest of that program.
|
||||||
|
|
||||||
|
# This file is maintained in Automake, please report
|
||||||
|
# bugs to <bug-automake@gnu.org> or send patches to
|
||||||
|
# <automake-patches@gnu.org>.
|
||||||
|
|
||||||
|
nl='
|
||||||
|
'
|
||||||
|
|
||||||
|
# We need space, tab and new line, in precisely that order. Quoting is
|
||||||
|
# there to prevent tools from complaining about whitespace usage.
|
||||||
|
IFS=" "" $nl"
|
||||||
|
|
||||||
|
file_conv=
|
||||||
|
|
||||||
|
# func_file_conv build_file lazy
|
||||||
|
# Convert a $build file to $host form and store it in $file
|
||||||
|
# Currently only supports Windows hosts. If the determined conversion
|
||||||
|
# type is listed in (the comma separated) LAZY, no conversion will
|
||||||
|
# take place.
|
||||||
|
func_file_conv ()
|
||||||
|
{
|
||||||
|
file=$1
|
||||||
|
case $file in
|
||||||
|
/ | /[!/]*) # absolute file, and not a UNC file
|
||||||
|
if test -z "$file_conv"; then
|
||||||
|
# lazily determine how to convert abs files
|
||||||
|
case `uname -s` in
|
||||||
|
MINGW*)
|
||||||
|
file_conv=mingw
|
||||||
|
;;
|
||||||
|
CYGWIN*)
|
||||||
|
file_conv=cygwin
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
file_conv=wine
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
case $file_conv/,$2, in
|
||||||
|
*,$file_conv,*)
|
||||||
|
;;
|
||||||
|
mingw/*)
|
||||||
|
file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
|
||||||
|
;;
|
||||||
|
cygwin/*)
|
||||||
|
file=`cygpath -m "$file" || echo "$file"`
|
||||||
|
;;
|
||||||
|
wine/*)
|
||||||
|
file=`winepath -w "$file" || echo "$file"`
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
# func_cl_dashL linkdir
|
||||||
|
# Make cl look for libraries in LINKDIR
|
||||||
|
func_cl_dashL ()
|
||||||
|
{
|
||||||
|
func_file_conv "$1"
|
||||||
|
if test -z "$lib_path"; then
|
||||||
|
lib_path=$file
|
||||||
|
else
|
||||||
|
lib_path="$lib_path;$file"
|
||||||
|
fi
|
||||||
|
linker_opts="$linker_opts -LIBPATH:$file"
|
||||||
|
}
|
||||||
|
|
||||||
|
# func_cl_dashl library
|
||||||
|
# Do a library search-path lookup for cl
|
||||||
|
func_cl_dashl ()
|
||||||
|
{
|
||||||
|
lib=$1
|
||||||
|
found=no
|
||||||
|
save_IFS=$IFS
|
||||||
|
IFS=';'
|
||||||
|
for dir in $lib_path $LIB
|
||||||
|
do
|
||||||
|
IFS=$save_IFS
|
||||||
|
if $shared && test -f "$dir/$lib.dll.lib"; then
|
||||||
|
found=yes
|
||||||
|
lib=$dir/$lib.dll.lib
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
if test -f "$dir/$lib.lib"; then
|
||||||
|
found=yes
|
||||||
|
lib=$dir/$lib.lib
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
if test -f "$dir/lib$lib.a"; then
|
||||||
|
found=yes
|
||||||
|
lib=$dir/lib$lib.a
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
IFS=$save_IFS
|
||||||
|
|
||||||
|
if test "$found" != yes; then
|
||||||
|
lib=$lib.lib
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# func_cl_wrapper cl arg...
|
||||||
|
# Adjust compile command to suit cl
|
||||||
|
func_cl_wrapper ()
|
||||||
|
{
|
||||||
|
# Assume a capable shell
|
||||||
|
lib_path=
|
||||||
|
shared=:
|
||||||
|
linker_opts=
|
||||||
|
for arg
|
||||||
|
do
|
||||||
|
if test -n "$eat"; then
|
||||||
|
eat=
|
||||||
|
else
|
||||||
|
case $1 in
|
||||||
|
-o)
|
||||||
|
# configure might choose to run compile as 'compile cc -o foo foo.c'.
|
||||||
|
eat=1
|
||||||
|
case $2 in
|
||||||
|
*.o | *.[oO][bB][jJ])
|
||||||
|
func_file_conv "$2"
|
||||||
|
set x "$@" -Fo"$file"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
func_file_conv "$2"
|
||||||
|
set x "$@" -Fe"$file"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
-I)
|
||||||
|
eat=1
|
||||||
|
func_file_conv "$2" mingw
|
||||||
|
set x "$@" -I"$file"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-I*)
|
||||||
|
func_file_conv "${1#-I}" mingw
|
||||||
|
set x "$@" -I"$file"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-l)
|
||||||
|
eat=1
|
||||||
|
func_cl_dashl "$2"
|
||||||
|
set x "$@" "$lib"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-l*)
|
||||||
|
func_cl_dashl "${1#-l}"
|
||||||
|
set x "$@" "$lib"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-L)
|
||||||
|
eat=1
|
||||||
|
func_cl_dashL "$2"
|
||||||
|
;;
|
||||||
|
-L*)
|
||||||
|
func_cl_dashL "${1#-L}"
|
||||||
|
;;
|
||||||
|
-static)
|
||||||
|
shared=false
|
||||||
|
;;
|
||||||
|
-Wl,*)
|
||||||
|
arg=${1#-Wl,}
|
||||||
|
save_ifs="$IFS"; IFS=','
|
||||||
|
for flag in $arg; do
|
||||||
|
IFS="$save_ifs"
|
||||||
|
linker_opts="$linker_opts $flag"
|
||||||
|
done
|
||||||
|
IFS="$save_ifs"
|
||||||
|
;;
|
||||||
|
-Xlinker)
|
||||||
|
eat=1
|
||||||
|
linker_opts="$linker_opts $2"
|
||||||
|
;;
|
||||||
|
-*)
|
||||||
|
set x "$@" "$1"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
*.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
|
||||||
|
func_file_conv "$1"
|
||||||
|
set x "$@" -Tp"$file"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
*.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
|
||||||
|
func_file_conv "$1" mingw
|
||||||
|
set x "$@" "$file"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
set x "$@" "$1"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
if test -n "$linker_opts"; then
|
||||||
|
linker_opts="-link$linker_opts"
|
||||||
|
fi
|
||||||
|
exec "$@" $linker_opts
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
eat=
|
||||||
|
|
||||||
|
case $1 in
|
||||||
|
'')
|
||||||
|
echo "$0: No command. Try '$0 --help' for more information." 1>&2
|
||||||
|
exit 1;
|
||||||
|
;;
|
||||||
|
-h | --h*)
|
||||||
|
cat <<\EOF
|
||||||
|
Usage: compile [--help] [--version] PROGRAM [ARGS]
|
||||||
|
|
||||||
|
Wrapper for compilers which do not understand '-c -o'.
|
||||||
|
Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
|
||||||
|
arguments, and rename the output as expected.
|
||||||
|
|
||||||
|
If you are trying to build a whole package this is not the
|
||||||
|
right script to run: please start by reading the file 'INSTALL'.
|
||||||
|
|
||||||
|
Report bugs to <bug-automake@gnu.org>.
|
||||||
|
EOF
|
||||||
|
exit $?
|
||||||
|
;;
|
||||||
|
-v | --v*)
|
||||||
|
echo "compile $scriptversion"
|
||||||
|
exit $?
|
||||||
|
;;
|
||||||
|
cl | *[/\\]cl | cl.exe | *[/\\]cl.exe )
|
||||||
|
func_cl_wrapper "$@" # Doesn't return...
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
ofile=
|
||||||
|
cfile=
|
||||||
|
|
||||||
|
for arg
|
||||||
|
do
|
||||||
|
if test -n "$eat"; then
|
||||||
|
eat=
|
||||||
|
else
|
||||||
|
case $1 in
|
||||||
|
-o)
|
||||||
|
# configure might choose to run compile as 'compile cc -o foo foo.c'.
|
||||||
|
# So we strip '-o arg' only if arg is an object.
|
||||||
|
eat=1
|
||||||
|
case $2 in
|
||||||
|
*.o | *.obj)
|
||||||
|
ofile=$2
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
set x "$@" -o "$2"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
*.c)
|
||||||
|
cfile=$1
|
||||||
|
set x "$@" "$1"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
set x "$@" "$1"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
|
||||||
|
if test -z "$ofile" || test -z "$cfile"; then
|
||||||
|
# If no '-o' option was seen then we might have been invoked from a
|
||||||
|
# pattern rule where we don't need one. That is ok -- this is a
|
||||||
|
# normal compilation that the losing compiler can handle. If no
|
||||||
|
# '.c' file was seen then we are probably linking. That is also
|
||||||
|
# ok.
|
||||||
|
exec "$@"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Name of file we expect compiler to create.
|
||||||
|
cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
|
||||||
|
|
||||||
|
# Create the lock directory.
|
||||||
|
# Note: use '[/\\:.-]' here to ensure that we don't use the same name
|
||||||
|
# that we are using for the .o file. Also, base the name on the expected
|
||||||
|
# object file name, since that is what matters with a parallel build.
|
||||||
|
lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
|
||||||
|
while true; do
|
||||||
|
if mkdir "$lockdir" >/dev/null 2>&1; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
sleep 1
|
||||||
|
done
|
||||||
|
# FIXME: race condition here if user kills between mkdir and trap.
|
||||||
|
trap "rmdir '$lockdir'; exit 1" 1 2 15
|
||||||
|
|
||||||
|
# Run the compile.
|
||||||
|
"$@"
|
||||||
|
ret=$?
|
||||||
|
|
||||||
|
if test -f "$cofile"; then
|
||||||
|
test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
|
||||||
|
elif test -f "${cofile}bj"; then
|
||||||
|
test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
|
||||||
|
fi
|
||||||
|
|
||||||
|
rmdir "$lockdir"
|
||||||
|
exit $ret
|
||||||
|
|
||||||
|
# Local Variables:
|
||||||
|
# mode: shell-script
|
||||||
|
# sh-indentation: 2
|
||||||
|
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||||
|
# time-stamp-start: "scriptversion="
|
||||||
|
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||||
|
# time-stamp-time-zone: "UTC"
|
||||||
|
# time-stamp-end: "; # UTC"
|
||||||
|
# End:
|
||||||
2169
configure.in
Normal file
2169
configure.in
Normal file
File diff suppressed because it is too large
Load diff
791
depcomp
Executable file
791
depcomp
Executable file
|
|
@ -0,0 +1,791 @@
|
||||||
|
#! /bin/sh
|
||||||
|
# depcomp - compile a program generating dependencies as side-effects
|
||||||
|
|
||||||
|
scriptversion=2013-05-30.07; # UTC
|
||||||
|
|
||||||
|
# Copyright (C) 1999-2014 Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
# 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, 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 this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
# As a special exception to the GNU General Public License, if you
|
||||||
|
# distribute this file as part of a program that contains a
|
||||||
|
# configuration script generated by Autoconf, you may include it under
|
||||||
|
# the same distribution terms that you use for the rest of that program.
|
||||||
|
|
||||||
|
# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
|
||||||
|
|
||||||
|
case $1 in
|
||||||
|
'')
|
||||||
|
echo "$0: No command. Try '$0 --help' for more information." 1>&2
|
||||||
|
exit 1;
|
||||||
|
;;
|
||||||
|
-h | --h*)
|
||||||
|
cat <<\EOF
|
||||||
|
Usage: depcomp [--help] [--version] PROGRAM [ARGS]
|
||||||
|
|
||||||
|
Run PROGRAMS ARGS to compile a file, generating dependencies
|
||||||
|
as side-effects.
|
||||||
|
|
||||||
|
Environment variables:
|
||||||
|
depmode Dependency tracking mode.
|
||||||
|
source Source file read by 'PROGRAMS ARGS'.
|
||||||
|
object Object file output by 'PROGRAMS ARGS'.
|
||||||
|
DEPDIR directory where to store dependencies.
|
||||||
|
depfile Dependency file to output.
|
||||||
|
tmpdepfile Temporary file to use when outputting dependencies.
|
||||||
|
libtool Whether libtool is used (yes/no).
|
||||||
|
|
||||||
|
Report bugs to <bug-automake@gnu.org>.
|
||||||
|
EOF
|
||||||
|
exit $?
|
||||||
|
;;
|
||||||
|
-v | --v*)
|
||||||
|
echo "depcomp $scriptversion"
|
||||||
|
exit $?
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# Get the directory component of the given path, and save it in the
|
||||||
|
# global variables '$dir'. Note that this directory component will
|
||||||
|
# be either empty or ending with a '/' character. This is deliberate.
|
||||||
|
set_dir_from ()
|
||||||
|
{
|
||||||
|
case $1 in
|
||||||
|
*/*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;;
|
||||||
|
*) dir=;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
# Get the suffix-stripped basename of the given path, and save it the
|
||||||
|
# global variable '$base'.
|
||||||
|
set_base_from ()
|
||||||
|
{
|
||||||
|
base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'`
|
||||||
|
}
|
||||||
|
|
||||||
|
# If no dependency file was actually created by the compiler invocation,
|
||||||
|
# we still have to create a dummy depfile, to avoid errors with the
|
||||||
|
# Makefile "include basename.Plo" scheme.
|
||||||
|
make_dummy_depfile ()
|
||||||
|
{
|
||||||
|
echo "#dummy" > "$depfile"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Factor out some common post-processing of the generated depfile.
|
||||||
|
# Requires the auxiliary global variable '$tmpdepfile' to be set.
|
||||||
|
aix_post_process_depfile ()
|
||||||
|
{
|
||||||
|
# If the compiler actually managed to produce a dependency file,
|
||||||
|
# post-process it.
|
||||||
|
if test -f "$tmpdepfile"; then
|
||||||
|
# Each line is of the form 'foo.o: dependency.h'.
|
||||||
|
# Do two passes, one to just change these to
|
||||||
|
# $object: dependency.h
|
||||||
|
# and one to simply output
|
||||||
|
# dependency.h:
|
||||||
|
# which is needed to avoid the deleted-header problem.
|
||||||
|
{ sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile"
|
||||||
|
sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile"
|
||||||
|
} > "$depfile"
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
else
|
||||||
|
make_dummy_depfile
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# A tabulation character.
|
||||||
|
tab=' '
|
||||||
|
# A newline character.
|
||||||
|
nl='
|
||||||
|
'
|
||||||
|
# Character ranges might be problematic outside the C locale.
|
||||||
|
# These definitions help.
|
||||||
|
upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ
|
||||||
|
lower=abcdefghijklmnopqrstuvwxyz
|
||||||
|
digits=0123456789
|
||||||
|
alpha=${upper}${lower}
|
||||||
|
|
||||||
|
if test -z "$depmode" || test -z "$source" || test -z "$object"; then
|
||||||
|
echo "depcomp: Variables source, object and depmode must be set" 1>&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
|
||||||
|
depfile=${depfile-`echo "$object" |
|
||||||
|
sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
|
||||||
|
tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
|
||||||
|
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
|
||||||
|
# Avoid interferences from the environment.
|
||||||
|
gccflag= dashmflag=
|
||||||
|
|
||||||
|
# Some modes work just like other modes, but use different flags. We
|
||||||
|
# parameterize here, but still list the modes in the big case below,
|
||||||
|
# to make depend.m4 easier to write. Note that we *cannot* use a case
|
||||||
|
# here, because this file can only contain one case statement.
|
||||||
|
if test "$depmode" = hp; then
|
||||||
|
# HP compiler uses -M and no extra arg.
|
||||||
|
gccflag=-M
|
||||||
|
depmode=gcc
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "$depmode" = dashXmstdout; then
|
||||||
|
# This is just like dashmstdout with a different argument.
|
||||||
|
dashmflag=-xM
|
||||||
|
depmode=dashmstdout
|
||||||
|
fi
|
||||||
|
|
||||||
|
cygpath_u="cygpath -u -f -"
|
||||||
|
if test "$depmode" = msvcmsys; then
|
||||||
|
# This is just like msvisualcpp but w/o cygpath translation.
|
||||||
|
# Just convert the backslash-escaped backslashes to single forward
|
||||||
|
# slashes to satisfy depend.m4
|
||||||
|
cygpath_u='sed s,\\\\,/,g'
|
||||||
|
depmode=msvisualcpp
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "$depmode" = msvc7msys; then
|
||||||
|
# This is just like msvc7 but w/o cygpath translation.
|
||||||
|
# Just convert the backslash-escaped backslashes to single forward
|
||||||
|
# slashes to satisfy depend.m4
|
||||||
|
cygpath_u='sed s,\\\\,/,g'
|
||||||
|
depmode=msvc7
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "$depmode" = xlc; then
|
||||||
|
# IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information.
|
||||||
|
gccflag=-qmakedep=gcc,-MF
|
||||||
|
depmode=gcc
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "$depmode" in
|
||||||
|
gcc3)
|
||||||
|
## gcc 3 implements dependency tracking that does exactly what
|
||||||
|
## we want. Yay! Note: for some reason libtool 1.4 doesn't like
|
||||||
|
## it if -MD -MP comes after the -MF stuff. Hmm.
|
||||||
|
## Unfortunately, FreeBSD c89 acceptance of flags depends upon
|
||||||
|
## the command line argument order; so add the flags where they
|
||||||
|
## appear in depend2.am. Note that the slowdown incurred here
|
||||||
|
## affects only configure: in makefiles, %FASTDEP% shortcuts this.
|
||||||
|
for arg
|
||||||
|
do
|
||||||
|
case $arg in
|
||||||
|
-c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
|
||||||
|
*) set fnord "$@" "$arg" ;;
|
||||||
|
esac
|
||||||
|
shift # fnord
|
||||||
|
shift # $arg
|
||||||
|
done
|
||||||
|
"$@"
|
||||||
|
stat=$?
|
||||||
|
if test $stat -ne 0; then
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
exit $stat
|
||||||
|
fi
|
||||||
|
mv "$tmpdepfile" "$depfile"
|
||||||
|
;;
|
||||||
|
|
||||||
|
gcc)
|
||||||
|
## Note that this doesn't just cater to obsosete pre-3.x GCC compilers.
|
||||||
|
## but also to in-use compilers like IMB xlc/xlC and the HP C compiler.
|
||||||
|
## (see the conditional assignment to $gccflag above).
|
||||||
|
## There are various ways to get dependency output from gcc. Here's
|
||||||
|
## why we pick this rather obscure method:
|
||||||
|
## - Don't want to use -MD because we'd like the dependencies to end
|
||||||
|
## up in a subdir. Having to rename by hand is ugly.
|
||||||
|
## (We might end up doing this anyway to support other compilers.)
|
||||||
|
## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
|
||||||
|
## -MM, not -M (despite what the docs say). Also, it might not be
|
||||||
|
## supported by the other compilers which use the 'gcc' depmode.
|
||||||
|
## - Using -M directly means running the compiler twice (even worse
|
||||||
|
## than renaming).
|
||||||
|
if test -z "$gccflag"; then
|
||||||
|
gccflag=-MD,
|
||||||
|
fi
|
||||||
|
"$@" -Wp,"$gccflag$tmpdepfile"
|
||||||
|
stat=$?
|
||||||
|
if test $stat -ne 0; then
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
exit $stat
|
||||||
|
fi
|
||||||
|
rm -f "$depfile"
|
||||||
|
echo "$object : \\" > "$depfile"
|
||||||
|
# The second -e expression handles DOS-style file names with drive
|
||||||
|
# letters.
|
||||||
|
sed -e 's/^[^:]*: / /' \
|
||||||
|
-e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
|
||||||
|
## This next piece of magic avoids the "deleted header file" problem.
|
||||||
|
## The problem is that when a header file which appears in a .P file
|
||||||
|
## is deleted, the dependency causes make to die (because there is
|
||||||
|
## typically no way to rebuild the header). We avoid this by adding
|
||||||
|
## dummy dependencies for each header file. Too bad gcc doesn't do
|
||||||
|
## this for us directly.
|
||||||
|
## Some versions of gcc put a space before the ':'. On the theory
|
||||||
|
## that the space means something, we add a space to the output as
|
||||||
|
## well. hp depmode also adds that space, but also prefixes the VPATH
|
||||||
|
## to the object. Take care to not repeat it in the output.
|
||||||
|
## Some versions of the HPUX 10.20 sed can't process this invocation
|
||||||
|
## correctly. Breaking it into two sed invocations is a workaround.
|
||||||
|
tr ' ' "$nl" < "$tmpdepfile" \
|
||||||
|
| sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
|
||||||
|
| sed -e 's/$/ :/' >> "$depfile"
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
;;
|
||||||
|
|
||||||
|
hp)
|
||||||
|
# This case exists only to let depend.m4 do its work. It works by
|
||||||
|
# looking at the text of this script. This case will never be run,
|
||||||
|
# since it is checked for above.
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
|
||||||
|
sgi)
|
||||||
|
if test "$libtool" = yes; then
|
||||||
|
"$@" "-Wp,-MDupdate,$tmpdepfile"
|
||||||
|
else
|
||||||
|
"$@" -MDupdate "$tmpdepfile"
|
||||||
|
fi
|
||||||
|
stat=$?
|
||||||
|
if test $stat -ne 0; then
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
exit $stat
|
||||||
|
fi
|
||||||
|
rm -f "$depfile"
|
||||||
|
|
||||||
|
if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
|
||||||
|
echo "$object : \\" > "$depfile"
|
||||||
|
# Clip off the initial element (the dependent). Don't try to be
|
||||||
|
# clever and replace this with sed code, as IRIX sed won't handle
|
||||||
|
# lines with more than a fixed number of characters (4096 in
|
||||||
|
# IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
|
||||||
|
# the IRIX cc adds comments like '#:fec' to the end of the
|
||||||
|
# dependency line.
|
||||||
|
tr ' ' "$nl" < "$tmpdepfile" \
|
||||||
|
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \
|
||||||
|
| tr "$nl" ' ' >> "$depfile"
|
||||||
|
echo >> "$depfile"
|
||||||
|
# The second pass generates a dummy entry for each header file.
|
||||||
|
tr ' ' "$nl" < "$tmpdepfile" \
|
||||||
|
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
|
||||||
|
>> "$depfile"
|
||||||
|
else
|
||||||
|
make_dummy_depfile
|
||||||
|
fi
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
;;
|
||||||
|
|
||||||
|
xlc)
|
||||||
|
# This case exists only to let depend.m4 do its work. It works by
|
||||||
|
# looking at the text of this script. This case will never be run,
|
||||||
|
# since it is checked for above.
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
|
||||||
|
aix)
|
||||||
|
# The C for AIX Compiler uses -M and outputs the dependencies
|
||||||
|
# in a .u file. In older versions, this file always lives in the
|
||||||
|
# current directory. Also, the AIX compiler puts '$object:' at the
|
||||||
|
# start of each line; $object doesn't have directory information.
|
||||||
|
# Version 6 uses the directory in both cases.
|
||||||
|
set_dir_from "$object"
|
||||||
|
set_base_from "$object"
|
||||||
|
if test "$libtool" = yes; then
|
||||||
|
tmpdepfile1=$dir$base.u
|
||||||
|
tmpdepfile2=$base.u
|
||||||
|
tmpdepfile3=$dir.libs/$base.u
|
||||||
|
"$@" -Wc,-M
|
||||||
|
else
|
||||||
|
tmpdepfile1=$dir$base.u
|
||||||
|
tmpdepfile2=$dir$base.u
|
||||||
|
tmpdepfile3=$dir$base.u
|
||||||
|
"$@" -M
|
||||||
|
fi
|
||||||
|
stat=$?
|
||||||
|
if test $stat -ne 0; then
|
||||||
|
rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
|
||||||
|
exit $stat
|
||||||
|
fi
|
||||||
|
|
||||||
|
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
|
||||||
|
do
|
||||||
|
test -f "$tmpdepfile" && break
|
||||||
|
done
|
||||||
|
aix_post_process_depfile
|
||||||
|
;;
|
||||||
|
|
||||||
|
tcc)
|
||||||
|
# tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26
|
||||||
|
# FIXME: That version still under development at the moment of writing.
|
||||||
|
# Make that this statement remains true also for stable, released
|
||||||
|
# versions.
|
||||||
|
# It will wrap lines (doesn't matter whether long or short) with a
|
||||||
|
# trailing '\', as in:
|
||||||
|
#
|
||||||
|
# foo.o : \
|
||||||
|
# foo.c \
|
||||||
|
# foo.h \
|
||||||
|
#
|
||||||
|
# It will put a trailing '\' even on the last line, and will use leading
|
||||||
|
# spaces rather than leading tabs (at least since its commit 0394caf7
|
||||||
|
# "Emit spaces for -MD").
|
||||||
|
"$@" -MD -MF "$tmpdepfile"
|
||||||
|
stat=$?
|
||||||
|
if test $stat -ne 0; then
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
exit $stat
|
||||||
|
fi
|
||||||
|
rm -f "$depfile"
|
||||||
|
# Each non-empty line is of the form 'foo.o : \' or ' dep.h \'.
|
||||||
|
# We have to change lines of the first kind to '$object: \'.
|
||||||
|
sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile"
|
||||||
|
# And for each line of the second kind, we have to emit a 'dep.h:'
|
||||||
|
# dummy dependency, to avoid the deleted-header problem.
|
||||||
|
sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile"
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
;;
|
||||||
|
|
||||||
|
## The order of this option in the case statement is important, since the
|
||||||
|
## shell code in configure will try each of these formats in the order
|
||||||
|
## listed in this file. A plain '-MD' option would be understood by many
|
||||||
|
## compilers, so we must ensure this comes after the gcc and icc options.
|
||||||
|
pgcc)
|
||||||
|
# Portland's C compiler understands '-MD'.
|
||||||
|
# Will always output deps to 'file.d' where file is the root name of the
|
||||||
|
# source file under compilation, even if file resides in a subdirectory.
|
||||||
|
# The object file name does not affect the name of the '.d' file.
|
||||||
|
# pgcc 10.2 will output
|
||||||
|
# foo.o: sub/foo.c sub/foo.h
|
||||||
|
# and will wrap long lines using '\' :
|
||||||
|
# foo.o: sub/foo.c ... \
|
||||||
|
# sub/foo.h ... \
|
||||||
|
# ...
|
||||||
|
set_dir_from "$object"
|
||||||
|
# Use the source, not the object, to determine the base name, since
|
||||||
|
# that's sadly what pgcc will do too.
|
||||||
|
set_base_from "$source"
|
||||||
|
tmpdepfile=$base.d
|
||||||
|
|
||||||
|
# For projects that build the same source file twice into different object
|
||||||
|
# files, the pgcc approach of using the *source* file root name can cause
|
||||||
|
# problems in parallel builds. Use a locking strategy to avoid stomping on
|
||||||
|
# the same $tmpdepfile.
|
||||||
|
lockdir=$base.d-lock
|
||||||
|
trap "
|
||||||
|
echo '$0: caught signal, cleaning up...' >&2
|
||||||
|
rmdir '$lockdir'
|
||||||
|
exit 1
|
||||||
|
" 1 2 13 15
|
||||||
|
numtries=100
|
||||||
|
i=$numtries
|
||||||
|
while test $i -gt 0; do
|
||||||
|
# mkdir is a portable test-and-set.
|
||||||
|
if mkdir "$lockdir" 2>/dev/null; then
|
||||||
|
# This process acquired the lock.
|
||||||
|
"$@" -MD
|
||||||
|
stat=$?
|
||||||
|
# Release the lock.
|
||||||
|
rmdir "$lockdir"
|
||||||
|
break
|
||||||
|
else
|
||||||
|
# If the lock is being held by a different process, wait
|
||||||
|
# until the winning process is done or we timeout.
|
||||||
|
while test -d "$lockdir" && test $i -gt 0; do
|
||||||
|
sleep 1
|
||||||
|
i=`expr $i - 1`
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
i=`expr $i - 1`
|
||||||
|
done
|
||||||
|
trap - 1 2 13 15
|
||||||
|
if test $i -le 0; then
|
||||||
|
echo "$0: failed to acquire lock after $numtries attempts" >&2
|
||||||
|
echo "$0: check lockdir '$lockdir'" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test $stat -ne 0; then
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
exit $stat
|
||||||
|
fi
|
||||||
|
rm -f "$depfile"
|
||||||
|
# Each line is of the form `foo.o: dependent.h',
|
||||||
|
# or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
|
||||||
|
# Do two passes, one to just change these to
|
||||||
|
# `$object: dependent.h' and one to simply `dependent.h:'.
|
||||||
|
sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
|
||||||
|
# Some versions of the HPUX 10.20 sed can't process this invocation
|
||||||
|
# correctly. Breaking it into two sed invocations is a workaround.
|
||||||
|
sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \
|
||||||
|
| sed -e 's/$/ :/' >> "$depfile"
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
;;
|
||||||
|
|
||||||
|
hp2)
|
||||||
|
# The "hp" stanza above does not work with aCC (C++) and HP's ia64
|
||||||
|
# compilers, which have integrated preprocessors. The correct option
|
||||||
|
# to use with these is +Maked; it writes dependencies to a file named
|
||||||
|
# 'foo.d', which lands next to the object file, wherever that
|
||||||
|
# happens to be.
|
||||||
|
# Much of this is similar to the tru64 case; see comments there.
|
||||||
|
set_dir_from "$object"
|
||||||
|
set_base_from "$object"
|
||||||
|
if test "$libtool" = yes; then
|
||||||
|
tmpdepfile1=$dir$base.d
|
||||||
|
tmpdepfile2=$dir.libs/$base.d
|
||||||
|
"$@" -Wc,+Maked
|
||||||
|
else
|
||||||
|
tmpdepfile1=$dir$base.d
|
||||||
|
tmpdepfile2=$dir$base.d
|
||||||
|
"$@" +Maked
|
||||||
|
fi
|
||||||
|
stat=$?
|
||||||
|
if test $stat -ne 0; then
|
||||||
|
rm -f "$tmpdepfile1" "$tmpdepfile2"
|
||||||
|
exit $stat
|
||||||
|
fi
|
||||||
|
|
||||||
|
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
|
||||||
|
do
|
||||||
|
test -f "$tmpdepfile" && break
|
||||||
|
done
|
||||||
|
if test -f "$tmpdepfile"; then
|
||||||
|
sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile"
|
||||||
|
# Add 'dependent.h:' lines.
|
||||||
|
sed -ne '2,${
|
||||||
|
s/^ *//
|
||||||
|
s/ \\*$//
|
||||||
|
s/$/:/
|
||||||
|
p
|
||||||
|
}' "$tmpdepfile" >> "$depfile"
|
||||||
|
else
|
||||||
|
make_dummy_depfile
|
||||||
|
fi
|
||||||
|
rm -f "$tmpdepfile" "$tmpdepfile2"
|
||||||
|
;;
|
||||||
|
|
||||||
|
tru64)
|
||||||
|
# The Tru64 compiler uses -MD to generate dependencies as a side
|
||||||
|
# effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
|
||||||
|
# At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
|
||||||
|
# dependencies in 'foo.d' instead, so we check for that too.
|
||||||
|
# Subdirectories are respected.
|
||||||
|
set_dir_from "$object"
|
||||||
|
set_base_from "$object"
|
||||||
|
|
||||||
|
if test "$libtool" = yes; then
|
||||||
|
# Libtool generates 2 separate objects for the 2 libraries. These
|
||||||
|
# two compilations output dependencies in $dir.libs/$base.o.d and
|
||||||
|
# in $dir$base.o.d. We have to check for both files, because
|
||||||
|
# one of the two compilations can be disabled. We should prefer
|
||||||
|
# $dir$base.o.d over $dir.libs/$base.o.d because the latter is
|
||||||
|
# automatically cleaned when .libs/ is deleted, while ignoring
|
||||||
|
# the former would cause a distcleancheck panic.
|
||||||
|
tmpdepfile1=$dir$base.o.d # libtool 1.5
|
||||||
|
tmpdepfile2=$dir.libs/$base.o.d # Likewise.
|
||||||
|
tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504
|
||||||
|
"$@" -Wc,-MD
|
||||||
|
else
|
||||||
|
tmpdepfile1=$dir$base.d
|
||||||
|
tmpdepfile2=$dir$base.d
|
||||||
|
tmpdepfile3=$dir$base.d
|
||||||
|
"$@" -MD
|
||||||
|
fi
|
||||||
|
|
||||||
|
stat=$?
|
||||||
|
if test $stat -ne 0; then
|
||||||
|
rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
|
||||||
|
exit $stat
|
||||||
|
fi
|
||||||
|
|
||||||
|
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
|
||||||
|
do
|
||||||
|
test -f "$tmpdepfile" && break
|
||||||
|
done
|
||||||
|
# Same post-processing that is required for AIX mode.
|
||||||
|
aix_post_process_depfile
|
||||||
|
;;
|
||||||
|
|
||||||
|
msvc7)
|
||||||
|
if test "$libtool" = yes; then
|
||||||
|
showIncludes=-Wc,-showIncludes
|
||||||
|
else
|
||||||
|
showIncludes=-showIncludes
|
||||||
|
fi
|
||||||
|
"$@" $showIncludes > "$tmpdepfile"
|
||||||
|
stat=$?
|
||||||
|
grep -v '^Note: including file: ' "$tmpdepfile"
|
||||||
|
if test $stat -ne 0; then
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
exit $stat
|
||||||
|
fi
|
||||||
|
rm -f "$depfile"
|
||||||
|
echo "$object : \\" > "$depfile"
|
||||||
|
# The first sed program below extracts the file names and escapes
|
||||||
|
# backslashes for cygpath. The second sed program outputs the file
|
||||||
|
# name when reading, but also accumulates all include files in the
|
||||||
|
# hold buffer in order to output them again at the end. This only
|
||||||
|
# works with sed implementations that can handle large buffers.
|
||||||
|
sed < "$tmpdepfile" -n '
|
||||||
|
/^Note: including file: *\(.*\)/ {
|
||||||
|
s//\1/
|
||||||
|
s/\\/\\\\/g
|
||||||
|
p
|
||||||
|
}' | $cygpath_u | sort -u | sed -n '
|
||||||
|
s/ /\\ /g
|
||||||
|
s/\(.*\)/'"$tab"'\1 \\/p
|
||||||
|
s/.\(.*\) \\/\1:/
|
||||||
|
H
|
||||||
|
$ {
|
||||||
|
s/.*/'"$tab"'/
|
||||||
|
G
|
||||||
|
p
|
||||||
|
}' >> "$depfile"
|
||||||
|
echo >> "$depfile" # make sure the fragment doesn't end with a backslash
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
;;
|
||||||
|
|
||||||
|
msvc7msys)
|
||||||
|
# This case exists only to let depend.m4 do its work. It works by
|
||||||
|
# looking at the text of this script. This case will never be run,
|
||||||
|
# since it is checked for above.
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
|
||||||
|
#nosideeffect)
|
||||||
|
# This comment above is used by automake to tell side-effect
|
||||||
|
# dependency tracking mechanisms from slower ones.
|
||||||
|
|
||||||
|
dashmstdout)
|
||||||
|
# Important note: in order to support this mode, a compiler *must*
|
||||||
|
# always write the preprocessed file to stdout, regardless of -o.
|
||||||
|
"$@" || exit $?
|
||||||
|
|
||||||
|
# Remove the call to Libtool.
|
||||||
|
if test "$libtool" = yes; then
|
||||||
|
while test "X$1" != 'X--mode=compile'; do
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Remove '-o $object'.
|
||||||
|
IFS=" "
|
||||||
|
for arg
|
||||||
|
do
|
||||||
|
case $arg in
|
||||||
|
-o)
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
$object)
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
set fnord "$@" "$arg"
|
||||||
|
shift # fnord
|
||||||
|
shift # $arg
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
test -z "$dashmflag" && dashmflag=-M
|
||||||
|
# Require at least two characters before searching for ':'
|
||||||
|
# in the target name. This is to cope with DOS-style filenames:
|
||||||
|
# a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
|
||||||
|
"$@" $dashmflag |
|
||||||
|
sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile"
|
||||||
|
rm -f "$depfile"
|
||||||
|
cat < "$tmpdepfile" > "$depfile"
|
||||||
|
# Some versions of the HPUX 10.20 sed can't process this sed invocation
|
||||||
|
# correctly. Breaking it into two sed invocations is a workaround.
|
||||||
|
tr ' ' "$nl" < "$tmpdepfile" \
|
||||||
|
| sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
|
||||||
|
| sed -e 's/$/ :/' >> "$depfile"
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
;;
|
||||||
|
|
||||||
|
dashXmstdout)
|
||||||
|
# This case only exists to satisfy depend.m4. It is never actually
|
||||||
|
# run, as this mode is specially recognized in the preamble.
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
|
||||||
|
makedepend)
|
||||||
|
"$@" || exit $?
|
||||||
|
# Remove any Libtool call
|
||||||
|
if test "$libtool" = yes; then
|
||||||
|
while test "X$1" != 'X--mode=compile'; do
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
# X makedepend
|
||||||
|
shift
|
||||||
|
cleared=no eat=no
|
||||||
|
for arg
|
||||||
|
do
|
||||||
|
case $cleared in
|
||||||
|
no)
|
||||||
|
set ""; shift
|
||||||
|
cleared=yes ;;
|
||||||
|
esac
|
||||||
|
if test $eat = yes; then
|
||||||
|
eat=no
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
case "$arg" in
|
||||||
|
-D*|-I*)
|
||||||
|
set fnord "$@" "$arg"; shift ;;
|
||||||
|
# Strip any option that makedepend may not understand. Remove
|
||||||
|
# the object too, otherwise makedepend will parse it as a source file.
|
||||||
|
-arch)
|
||||||
|
eat=yes ;;
|
||||||
|
-*|$object)
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
set fnord "$@" "$arg"; shift ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
obj_suffix=`echo "$object" | sed 's/^.*\././'`
|
||||||
|
touch "$tmpdepfile"
|
||||||
|
${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
|
||||||
|
rm -f "$depfile"
|
||||||
|
# makedepend may prepend the VPATH from the source file name to the object.
|
||||||
|
# No need to regex-escape $object, excess matching of '.' is harmless.
|
||||||
|
sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
|
||||||
|
# Some versions of the HPUX 10.20 sed can't process the last invocation
|
||||||
|
# correctly. Breaking it into two sed invocations is a workaround.
|
||||||
|
sed '1,2d' "$tmpdepfile" \
|
||||||
|
| tr ' ' "$nl" \
|
||||||
|
| sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
|
||||||
|
| sed -e 's/$/ :/' >> "$depfile"
|
||||||
|
rm -f "$tmpdepfile" "$tmpdepfile".bak
|
||||||
|
;;
|
||||||
|
|
||||||
|
cpp)
|
||||||
|
# Important note: in order to support this mode, a compiler *must*
|
||||||
|
# always write the preprocessed file to stdout.
|
||||||
|
"$@" || exit $?
|
||||||
|
|
||||||
|
# Remove the call to Libtool.
|
||||||
|
if test "$libtool" = yes; then
|
||||||
|
while test "X$1" != 'X--mode=compile'; do
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Remove '-o $object'.
|
||||||
|
IFS=" "
|
||||||
|
for arg
|
||||||
|
do
|
||||||
|
case $arg in
|
||||||
|
-o)
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
$object)
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
set fnord "$@" "$arg"
|
||||||
|
shift # fnord
|
||||||
|
shift # $arg
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
"$@" -E \
|
||||||
|
| sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
|
||||||
|
-e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
|
||||||
|
| sed '$ s: \\$::' > "$tmpdepfile"
|
||||||
|
rm -f "$depfile"
|
||||||
|
echo "$object : \\" > "$depfile"
|
||||||
|
cat < "$tmpdepfile" >> "$depfile"
|
||||||
|
sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
;;
|
||||||
|
|
||||||
|
msvisualcpp)
|
||||||
|
# Important note: in order to support this mode, a compiler *must*
|
||||||
|
# always write the preprocessed file to stdout.
|
||||||
|
"$@" || exit $?
|
||||||
|
|
||||||
|
# Remove the call to Libtool.
|
||||||
|
if test "$libtool" = yes; then
|
||||||
|
while test "X$1" != 'X--mode=compile'; do
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
|
||||||
|
IFS=" "
|
||||||
|
for arg
|
||||||
|
do
|
||||||
|
case "$arg" in
|
||||||
|
-o)
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
$object)
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
"-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
|
||||||
|
set fnord "$@"
|
||||||
|
shift
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
set fnord "$@" "$arg"
|
||||||
|
shift
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
"$@" -E 2>/dev/null |
|
||||||
|
sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
|
||||||
|
rm -f "$depfile"
|
||||||
|
echo "$object : \\" > "$depfile"
|
||||||
|
sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile"
|
||||||
|
echo "$tab" >> "$depfile"
|
||||||
|
sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
;;
|
||||||
|
|
||||||
|
msvcmsys)
|
||||||
|
# This case exists only to let depend.m4 do its work. It works by
|
||||||
|
# looking at the text of this script. This case will never be run,
|
||||||
|
# since it is checked for above.
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
|
||||||
|
none)
|
||||||
|
exec "$@"
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
echo "Unknown depmode $depmode" 1>&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
|
||||||
|
# Local Variables:
|
||||||
|
# mode: shell-script
|
||||||
|
# sh-indentation: 2
|
||||||
|
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||||
|
# time-stamp-start: "scriptversion="
|
||||||
|
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||||
|
# time-stamp-time-zone: "UTC"
|
||||||
|
# time-stamp-end: "; # UTC"
|
||||||
|
# End:
|
||||||
501
install-sh
Executable file
501
install-sh
Executable file
|
|
@ -0,0 +1,501 @@
|
||||||
|
#!/bin/sh
|
||||||
|
# install - install a program, script, or datafile
|
||||||
|
|
||||||
|
scriptversion=2013-12-25.23; # UTC
|
||||||
|
|
||||||
|
# This originates from X11R5 (mit/util/scripts/install.sh), which was
|
||||||
|
# later released in X11R6 (xc/config/util/install.sh) with the
|
||||||
|
# following copyright and license.
|
||||||
|
#
|
||||||
|
# Copyright (C) 1994 X Consortium
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
# of this software and associated documentation files (the "Software"), to
|
||||||
|
# deal in the Software without restriction, including without limitation the
|
||||||
|
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||||
|
# sell copies of the Software, and to permit persons to whom the Software is
|
||||||
|
# furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
|
||||||
|
# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
|
||||||
|
# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
#
|
||||||
|
# Except as contained in this notice, the name of the X Consortium shall not
|
||||||
|
# be used in advertising or otherwise to promote the sale, use or other deal-
|
||||||
|
# ings in this Software without prior written authorization from the X Consor-
|
||||||
|
# tium.
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# FSF changes to this file are in the public domain.
|
||||||
|
#
|
||||||
|
# Calling this script install-sh is preferred over install.sh, to prevent
|
||||||
|
# 'make' implicit rules from creating a file called install from it
|
||||||
|
# when there is no Makefile.
|
||||||
|
#
|
||||||
|
# This script is compatible with the BSD install script, but was written
|
||||||
|
# from scratch.
|
||||||
|
|
||||||
|
tab=' '
|
||||||
|
nl='
|
||||||
|
'
|
||||||
|
IFS=" $tab$nl"
|
||||||
|
|
||||||
|
# Set DOITPROG to "echo" to test this script.
|
||||||
|
|
||||||
|
doit=${DOITPROG-}
|
||||||
|
doit_exec=${doit:-exec}
|
||||||
|
|
||||||
|
# Put in absolute file names if you don't have them in your path;
|
||||||
|
# or use environment vars.
|
||||||
|
|
||||||
|
chgrpprog=${CHGRPPROG-chgrp}
|
||||||
|
chmodprog=${CHMODPROG-chmod}
|
||||||
|
chownprog=${CHOWNPROG-chown}
|
||||||
|
cmpprog=${CMPPROG-cmp}
|
||||||
|
cpprog=${CPPROG-cp}
|
||||||
|
mkdirprog=${MKDIRPROG-mkdir}
|
||||||
|
mvprog=${MVPROG-mv}
|
||||||
|
rmprog=${RMPROG-rm}
|
||||||
|
stripprog=${STRIPPROG-strip}
|
||||||
|
|
||||||
|
posix_mkdir=
|
||||||
|
|
||||||
|
# Desired mode of installed file.
|
||||||
|
mode=0755
|
||||||
|
|
||||||
|
chgrpcmd=
|
||||||
|
chmodcmd=$chmodprog
|
||||||
|
chowncmd=
|
||||||
|
mvcmd=$mvprog
|
||||||
|
rmcmd="$rmprog -f"
|
||||||
|
stripcmd=
|
||||||
|
|
||||||
|
src=
|
||||||
|
dst=
|
||||||
|
dir_arg=
|
||||||
|
dst_arg=
|
||||||
|
|
||||||
|
copy_on_change=false
|
||||||
|
is_target_a_directory=possibly
|
||||||
|
|
||||||
|
usage="\
|
||||||
|
Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
|
||||||
|
or: $0 [OPTION]... SRCFILES... DIRECTORY
|
||||||
|
or: $0 [OPTION]... -t DIRECTORY SRCFILES...
|
||||||
|
or: $0 [OPTION]... -d DIRECTORIES...
|
||||||
|
|
||||||
|
In the 1st form, copy SRCFILE to DSTFILE.
|
||||||
|
In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
|
||||||
|
In the 4th, create DIRECTORIES.
|
||||||
|
|
||||||
|
Options:
|
||||||
|
--help display this help and exit.
|
||||||
|
--version display version info and exit.
|
||||||
|
|
||||||
|
-c (ignored)
|
||||||
|
-C install only if different (preserve the last data modification time)
|
||||||
|
-d create directories instead of installing files.
|
||||||
|
-g GROUP $chgrpprog installed files to GROUP.
|
||||||
|
-m MODE $chmodprog installed files to MODE.
|
||||||
|
-o USER $chownprog installed files to USER.
|
||||||
|
-s $stripprog installed files.
|
||||||
|
-t DIRECTORY install into DIRECTORY.
|
||||||
|
-T report an error if DSTFILE is a directory.
|
||||||
|
|
||||||
|
Environment variables override the default commands:
|
||||||
|
CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
|
||||||
|
RMPROG STRIPPROG
|
||||||
|
"
|
||||||
|
|
||||||
|
while test $# -ne 0; do
|
||||||
|
case $1 in
|
||||||
|
-c) ;;
|
||||||
|
|
||||||
|
-C) copy_on_change=true;;
|
||||||
|
|
||||||
|
-d) dir_arg=true;;
|
||||||
|
|
||||||
|
-g) chgrpcmd="$chgrpprog $2"
|
||||||
|
shift;;
|
||||||
|
|
||||||
|
--help) echo "$usage"; exit $?;;
|
||||||
|
|
||||||
|
-m) mode=$2
|
||||||
|
case $mode in
|
||||||
|
*' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*)
|
||||||
|
echo "$0: invalid mode: $mode" >&2
|
||||||
|
exit 1;;
|
||||||
|
esac
|
||||||
|
shift;;
|
||||||
|
|
||||||
|
-o) chowncmd="$chownprog $2"
|
||||||
|
shift;;
|
||||||
|
|
||||||
|
-s) stripcmd=$stripprog;;
|
||||||
|
|
||||||
|
-t)
|
||||||
|
is_target_a_directory=always
|
||||||
|
dst_arg=$2
|
||||||
|
# Protect names problematic for 'test' and other utilities.
|
||||||
|
case $dst_arg in
|
||||||
|
-* | [=\(\)!]) dst_arg=./$dst_arg;;
|
||||||
|
esac
|
||||||
|
shift;;
|
||||||
|
|
||||||
|
-T) is_target_a_directory=never;;
|
||||||
|
|
||||||
|
--version) echo "$0 $scriptversion"; exit $?;;
|
||||||
|
|
||||||
|
--) shift
|
||||||
|
break;;
|
||||||
|
|
||||||
|
-*) echo "$0: invalid option: $1" >&2
|
||||||
|
exit 1;;
|
||||||
|
|
||||||
|
*) break;;
|
||||||
|
esac
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
|
||||||
|
# We allow the use of options -d and -T together, by making -d
|
||||||
|
# take the precedence; this is for compatibility with GNU install.
|
||||||
|
|
||||||
|
if test -n "$dir_arg"; then
|
||||||
|
if test -n "$dst_arg"; then
|
||||||
|
echo "$0: target directory not allowed when installing a directory." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
|
||||||
|
# When -d is used, all remaining arguments are directories to create.
|
||||||
|
# When -t is used, the destination is already specified.
|
||||||
|
# Otherwise, the last argument is the destination. Remove it from $@.
|
||||||
|
for arg
|
||||||
|
do
|
||||||
|
if test -n "$dst_arg"; then
|
||||||
|
# $@ is not empty: it contains at least $arg.
|
||||||
|
set fnord "$@" "$dst_arg"
|
||||||
|
shift # fnord
|
||||||
|
fi
|
||||||
|
shift # arg
|
||||||
|
dst_arg=$arg
|
||||||
|
# Protect names problematic for 'test' and other utilities.
|
||||||
|
case $dst_arg in
|
||||||
|
-* | [=\(\)!]) dst_arg=./$dst_arg;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test $# -eq 0; then
|
||||||
|
if test -z "$dir_arg"; then
|
||||||
|
echo "$0: no input file specified." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
# It's OK to call 'install-sh -d' without argument.
|
||||||
|
# This can happen when creating conditional directories.
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test -z "$dir_arg"; then
|
||||||
|
if test $# -gt 1 || test "$is_target_a_directory" = always; then
|
||||||
|
if test ! -d "$dst_arg"; then
|
||||||
|
echo "$0: $dst_arg: Is not a directory." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test -z "$dir_arg"; then
|
||||||
|
do_exit='(exit $ret); exit $ret'
|
||||||
|
trap "ret=129; $do_exit" 1
|
||||||
|
trap "ret=130; $do_exit" 2
|
||||||
|
trap "ret=141; $do_exit" 13
|
||||||
|
trap "ret=143; $do_exit" 15
|
||||||
|
|
||||||
|
# Set umask so as not to create temps with too-generous modes.
|
||||||
|
# However, 'strip' requires both read and write access to temps.
|
||||||
|
case $mode in
|
||||||
|
# Optimize common cases.
|
||||||
|
*644) cp_umask=133;;
|
||||||
|
*755) cp_umask=22;;
|
||||||
|
|
||||||
|
*[0-7])
|
||||||
|
if test -z "$stripcmd"; then
|
||||||
|
u_plus_rw=
|
||||||
|
else
|
||||||
|
u_plus_rw='% 200'
|
||||||
|
fi
|
||||||
|
cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
|
||||||
|
*)
|
||||||
|
if test -z "$stripcmd"; then
|
||||||
|
u_plus_rw=
|
||||||
|
else
|
||||||
|
u_plus_rw=,u+rw
|
||||||
|
fi
|
||||||
|
cp_umask=$mode$u_plus_rw;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
|
||||||
|
for src
|
||||||
|
do
|
||||||
|
# Protect names problematic for 'test' and other utilities.
|
||||||
|
case $src in
|
||||||
|
-* | [=\(\)!]) src=./$src;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if test -n "$dir_arg"; then
|
||||||
|
dst=$src
|
||||||
|
dstdir=$dst
|
||||||
|
test -d "$dstdir"
|
||||||
|
dstdir_status=$?
|
||||||
|
else
|
||||||
|
|
||||||
|
# Waiting for this to be detected by the "$cpprog $src $dsttmp" command
|
||||||
|
# might cause directories to be created, which would be especially bad
|
||||||
|
# if $src (and thus $dsttmp) contains '*'.
|
||||||
|
if test ! -f "$src" && test ! -d "$src"; then
|
||||||
|
echo "$0: $src does not exist." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test -z "$dst_arg"; then
|
||||||
|
echo "$0: no destination specified." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
dst=$dst_arg
|
||||||
|
|
||||||
|
# If destination is a directory, append the input filename; won't work
|
||||||
|
# if double slashes aren't ignored.
|
||||||
|
if test -d "$dst"; then
|
||||||
|
if test "$is_target_a_directory" = never; then
|
||||||
|
echo "$0: $dst_arg: Is a directory" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
dstdir=$dst
|
||||||
|
dst=$dstdir/`basename "$src"`
|
||||||
|
dstdir_status=0
|
||||||
|
else
|
||||||
|
dstdir=`dirname "$dst"`
|
||||||
|
test -d "$dstdir"
|
||||||
|
dstdir_status=$?
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
obsolete_mkdir_used=false
|
||||||
|
|
||||||
|
if test $dstdir_status != 0; then
|
||||||
|
case $posix_mkdir in
|
||||||
|
'')
|
||||||
|
# Create intermediate dirs using mode 755 as modified by the umask.
|
||||||
|
# This is like FreeBSD 'install' as of 1997-10-28.
|
||||||
|
umask=`umask`
|
||||||
|
case $stripcmd.$umask in
|
||||||
|
# Optimize common cases.
|
||||||
|
*[2367][2367]) mkdir_umask=$umask;;
|
||||||
|
.*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
|
||||||
|
|
||||||
|
*[0-7])
|
||||||
|
mkdir_umask=`expr $umask + 22 \
|
||||||
|
- $umask % 100 % 40 + $umask % 20 \
|
||||||
|
- $umask % 10 % 4 + $umask % 2
|
||||||
|
`;;
|
||||||
|
*) mkdir_umask=$umask,go-w;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# With -d, create the new directory with the user-specified mode.
|
||||||
|
# Otherwise, rely on $mkdir_umask.
|
||||||
|
if test -n "$dir_arg"; then
|
||||||
|
mkdir_mode=-m$mode
|
||||||
|
else
|
||||||
|
mkdir_mode=
|
||||||
|
fi
|
||||||
|
|
||||||
|
posix_mkdir=false
|
||||||
|
case $umask in
|
||||||
|
*[123567][0-7][0-7])
|
||||||
|
# POSIX mkdir -p sets u+wx bits regardless of umask, which
|
||||||
|
# is incompatible with FreeBSD 'install' when (umask & 300) != 0.
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
|
||||||
|
trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
|
||||||
|
|
||||||
|
if (umask $mkdir_umask &&
|
||||||
|
exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
|
||||||
|
then
|
||||||
|
if test -z "$dir_arg" || {
|
||||||
|
# Check for POSIX incompatibilities with -m.
|
||||||
|
# HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
|
||||||
|
# other-writable bit of parent directory when it shouldn't.
|
||||||
|
# FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
|
||||||
|
ls_ld_tmpdir=`ls -ld "$tmpdir"`
|
||||||
|
case $ls_ld_tmpdir in
|
||||||
|
d????-?r-*) different_mode=700;;
|
||||||
|
d????-?--*) different_mode=755;;
|
||||||
|
*) false;;
|
||||||
|
esac &&
|
||||||
|
$mkdirprog -m$different_mode -p -- "$tmpdir" && {
|
||||||
|
ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
|
||||||
|
test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
then posix_mkdir=:
|
||||||
|
fi
|
||||||
|
rmdir "$tmpdir/d" "$tmpdir"
|
||||||
|
else
|
||||||
|
# Remove any dirs left behind by ancient mkdir implementations.
|
||||||
|
rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
|
||||||
|
fi
|
||||||
|
trap '' 0;;
|
||||||
|
esac;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if
|
||||||
|
$posix_mkdir && (
|
||||||
|
umask $mkdir_umask &&
|
||||||
|
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
|
||||||
|
)
|
||||||
|
then :
|
||||||
|
else
|
||||||
|
|
||||||
|
# The umask is ridiculous, or mkdir does not conform to POSIX,
|
||||||
|
# or it failed possibly due to a race condition. Create the
|
||||||
|
# directory the slow way, step by step, checking for races as we go.
|
||||||
|
|
||||||
|
case $dstdir in
|
||||||
|
/*) prefix='/';;
|
||||||
|
[-=\(\)!]*) prefix='./';;
|
||||||
|
*) prefix='';;
|
||||||
|
esac
|
||||||
|
|
||||||
|
oIFS=$IFS
|
||||||
|
IFS=/
|
||||||
|
set -f
|
||||||
|
set fnord $dstdir
|
||||||
|
shift
|
||||||
|
set +f
|
||||||
|
IFS=$oIFS
|
||||||
|
|
||||||
|
prefixes=
|
||||||
|
|
||||||
|
for d
|
||||||
|
do
|
||||||
|
test X"$d" = X && continue
|
||||||
|
|
||||||
|
prefix=$prefix$d
|
||||||
|
if test -d "$prefix"; then
|
||||||
|
prefixes=
|
||||||
|
else
|
||||||
|
if $posix_mkdir; then
|
||||||
|
(umask=$mkdir_umask &&
|
||||||
|
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
|
||||||
|
# Don't fail if two instances are running concurrently.
|
||||||
|
test -d "$prefix" || exit 1
|
||||||
|
else
|
||||||
|
case $prefix in
|
||||||
|
*\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
|
||||||
|
*) qprefix=$prefix;;
|
||||||
|
esac
|
||||||
|
prefixes="$prefixes '$qprefix'"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
prefix=$prefix/
|
||||||
|
done
|
||||||
|
|
||||||
|
if test -n "$prefixes"; then
|
||||||
|
# Don't fail if two instances are running concurrently.
|
||||||
|
(umask $mkdir_umask &&
|
||||||
|
eval "\$doit_exec \$mkdirprog $prefixes") ||
|
||||||
|
test -d "$dstdir" || exit 1
|
||||||
|
obsolete_mkdir_used=true
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test -n "$dir_arg"; then
|
||||||
|
{ test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
|
||||||
|
{ test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
|
||||||
|
{ test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
|
||||||
|
test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
|
||||||
|
else
|
||||||
|
|
||||||
|
# Make a couple of temp file names in the proper directory.
|
||||||
|
dsttmp=$dstdir/_inst.$$_
|
||||||
|
rmtmp=$dstdir/_rm.$$_
|
||||||
|
|
||||||
|
# Trap to clean up those temp files at exit.
|
||||||
|
trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
|
||||||
|
|
||||||
|
# Copy the file name to the temp name.
|
||||||
|
(umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
|
||||||
|
|
||||||
|
# and set any options; do chmod last to preserve setuid bits.
|
||||||
|
#
|
||||||
|
# If any of these fail, we abort the whole thing. If we want to
|
||||||
|
# ignore errors from any of these, just make sure not to ignore
|
||||||
|
# errors from the above "$doit $cpprog $src $dsttmp" command.
|
||||||
|
#
|
||||||
|
{ test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
|
||||||
|
{ test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
|
||||||
|
{ test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
|
||||||
|
{ test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
|
||||||
|
|
||||||
|
# If -C, don't bother to copy if it wouldn't change the file.
|
||||||
|
if $copy_on_change &&
|
||||||
|
old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
|
||||||
|
new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
|
||||||
|
set -f &&
|
||||||
|
set X $old && old=:$2:$4:$5:$6 &&
|
||||||
|
set X $new && new=:$2:$4:$5:$6 &&
|
||||||
|
set +f &&
|
||||||
|
test "$old" = "$new" &&
|
||||||
|
$cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
|
||||||
|
then
|
||||||
|
rm -f "$dsttmp"
|
||||||
|
else
|
||||||
|
# Rename the file to the real destination.
|
||||||
|
$doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
|
||||||
|
|
||||||
|
# The rename failed, perhaps because mv can't rename something else
|
||||||
|
# to itself, or perhaps because mv is so ancient that it does not
|
||||||
|
# support -f.
|
||||||
|
{
|
||||||
|
# Now remove or move aside any old file at destination location.
|
||||||
|
# We try this two ways since rm can't unlink itself on some
|
||||||
|
# systems and the destination file might be busy for other
|
||||||
|
# reasons. In this case, the final cleanup might fail but the new
|
||||||
|
# file should still install successfully.
|
||||||
|
{
|
||||||
|
test ! -f "$dst" ||
|
||||||
|
$doit $rmcmd -f "$dst" 2>/dev/null ||
|
||||||
|
{ $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
|
||||||
|
{ $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
|
||||||
|
} ||
|
||||||
|
{ echo "$0: cannot unlink or rename $dst" >&2
|
||||||
|
(exit 1); exit 1
|
||||||
|
}
|
||||||
|
} &&
|
||||||
|
|
||||||
|
# Now rename the file to the real destination.
|
||||||
|
$doit $mvcmd "$dsttmp" "$dst"
|
||||||
|
}
|
||||||
|
fi || exit 1
|
||||||
|
|
||||||
|
trap '' 0
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Local variables:
|
||||||
|
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||||
|
# time-stamp-start: "scriptversion="
|
||||||
|
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||||
|
# time-stamp-time-zone: "UTC"
|
||||||
|
# time-stamp-end: "; # UTC"
|
||||||
|
# End:
|
||||||
215
missing
Executable file
215
missing
Executable file
|
|
@ -0,0 +1,215 @@
|
||||||
|
#! /bin/sh
|
||||||
|
# Common wrapper for a few potentially missing GNU programs.
|
||||||
|
|
||||||
|
scriptversion=2013-10-28.13; # UTC
|
||||||
|
|
||||||
|
# Copyright (C) 1996-2014 Free Software Foundation, Inc.
|
||||||
|
# Originally written by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
|
||||||
|
|
||||||
|
# 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, 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 this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
# As a special exception to the GNU General Public License, if you
|
||||||
|
# distribute this file as part of a program that contains a
|
||||||
|
# configuration script generated by Autoconf, you may include it under
|
||||||
|
# the same distribution terms that you use for the rest of that program.
|
||||||
|
|
||||||
|
if test $# -eq 0; then
|
||||||
|
echo 1>&2 "Try '$0 --help' for more information"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
case $1 in
|
||||||
|
|
||||||
|
--is-lightweight)
|
||||||
|
# Used by our autoconf macros to check whether the available missing
|
||||||
|
# script is modern enough.
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
|
||||||
|
--run)
|
||||||
|
# Back-compat with the calling convention used by older automake.
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
|
||||||
|
-h|--h|--he|--hel|--help)
|
||||||
|
echo "\
|
||||||
|
$0 [OPTION]... PROGRAM [ARGUMENT]...
|
||||||
|
|
||||||
|
Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due
|
||||||
|
to PROGRAM being missing or too old.
|
||||||
|
|
||||||
|
Options:
|
||||||
|
-h, --help display this help and exit
|
||||||
|
-v, --version output version information and exit
|
||||||
|
|
||||||
|
Supported PROGRAM values:
|
||||||
|
aclocal autoconf autoheader autom4te automake makeinfo
|
||||||
|
bison yacc flex lex help2man
|
||||||
|
|
||||||
|
Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and
|
||||||
|
'g' are ignored when checking the name.
|
||||||
|
|
||||||
|
Send bug reports to <bug-automake@gnu.org>."
|
||||||
|
exit $?
|
||||||
|
;;
|
||||||
|
|
||||||
|
-v|--v|--ve|--ver|--vers|--versi|--versio|--version)
|
||||||
|
echo "missing $scriptversion (GNU Automake)"
|
||||||
|
exit $?
|
||||||
|
;;
|
||||||
|
|
||||||
|
-*)
|
||||||
|
echo 1>&2 "$0: unknown '$1' option"
|
||||||
|
echo 1>&2 "Try '$0 --help' for more information"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
|
||||||
|
# Run the given program, remember its exit status.
|
||||||
|
"$@"; st=$?
|
||||||
|
|
||||||
|
# If it succeeded, we are done.
|
||||||
|
test $st -eq 0 && exit 0
|
||||||
|
|
||||||
|
# Also exit now if we it failed (or wasn't found), and '--version' was
|
||||||
|
# passed; such an option is passed most likely to detect whether the
|
||||||
|
# program is present and works.
|
||||||
|
case $2 in --version|--help) exit $st;; esac
|
||||||
|
|
||||||
|
# Exit code 63 means version mismatch. This often happens when the user
|
||||||
|
# tries to use an ancient version of a tool on a file that requires a
|
||||||
|
# minimum version.
|
||||||
|
if test $st -eq 63; then
|
||||||
|
msg="probably too old"
|
||||||
|
elif test $st -eq 127; then
|
||||||
|
# Program was missing.
|
||||||
|
msg="missing on your system"
|
||||||
|
else
|
||||||
|
# Program was found and executed, but failed. Give up.
|
||||||
|
exit $st
|
||||||
|
fi
|
||||||
|
|
||||||
|
perl_URL=http://www.perl.org/
|
||||||
|
flex_URL=http://flex.sourceforge.net/
|
||||||
|
gnu_software_URL=http://www.gnu.org/software
|
||||||
|
|
||||||
|
program_details ()
|
||||||
|
{
|
||||||
|
case $1 in
|
||||||
|
aclocal|automake)
|
||||||
|
echo "The '$1' program is part of the GNU Automake package:"
|
||||||
|
echo "<$gnu_software_URL/automake>"
|
||||||
|
echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:"
|
||||||
|
echo "<$gnu_software_URL/autoconf>"
|
||||||
|
echo "<$gnu_software_URL/m4/>"
|
||||||
|
echo "<$perl_URL>"
|
||||||
|
;;
|
||||||
|
autoconf|autom4te|autoheader)
|
||||||
|
echo "The '$1' program is part of the GNU Autoconf package:"
|
||||||
|
echo "<$gnu_software_URL/autoconf/>"
|
||||||
|
echo "It also requires GNU m4 and Perl in order to run:"
|
||||||
|
echo "<$gnu_software_URL/m4/>"
|
||||||
|
echo "<$perl_URL>"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
give_advice ()
|
||||||
|
{
|
||||||
|
# Normalize program name to check for.
|
||||||
|
normalized_program=`echo "$1" | sed '
|
||||||
|
s/^gnu-//; t
|
||||||
|
s/^gnu//; t
|
||||||
|
s/^g//; t'`
|
||||||
|
|
||||||
|
printf '%s\n' "'$1' is $msg."
|
||||||
|
|
||||||
|
configure_deps="'configure.ac' or m4 files included by 'configure.ac'"
|
||||||
|
case $normalized_program in
|
||||||
|
autoconf*)
|
||||||
|
echo "You should only need it if you modified 'configure.ac',"
|
||||||
|
echo "or m4 files included by it."
|
||||||
|
program_details 'autoconf'
|
||||||
|
;;
|
||||||
|
autoheader*)
|
||||||
|
echo "You should only need it if you modified 'acconfig.h' or"
|
||||||
|
echo "$configure_deps."
|
||||||
|
program_details 'autoheader'
|
||||||
|
;;
|
||||||
|
automake*)
|
||||||
|
echo "You should only need it if you modified 'Makefile.am' or"
|
||||||
|
echo "$configure_deps."
|
||||||
|
program_details 'automake'
|
||||||
|
;;
|
||||||
|
aclocal*)
|
||||||
|
echo "You should only need it if you modified 'acinclude.m4' or"
|
||||||
|
echo "$configure_deps."
|
||||||
|
program_details 'aclocal'
|
||||||
|
;;
|
||||||
|
autom4te*)
|
||||||
|
echo "You might have modified some maintainer files that require"
|
||||||
|
echo "the 'autom4te' program to be rebuilt."
|
||||||
|
program_details 'autom4te'
|
||||||
|
;;
|
||||||
|
bison*|yacc*)
|
||||||
|
echo "You should only need it if you modified a '.y' file."
|
||||||
|
echo "You may want to install the GNU Bison package:"
|
||||||
|
echo "<$gnu_software_URL/bison/>"
|
||||||
|
;;
|
||||||
|
lex*|flex*)
|
||||||
|
echo "You should only need it if you modified a '.l' file."
|
||||||
|
echo "You may want to install the Fast Lexical Analyzer package:"
|
||||||
|
echo "<$flex_URL>"
|
||||||
|
;;
|
||||||
|
help2man*)
|
||||||
|
echo "You should only need it if you modified a dependency" \
|
||||||
|
"of a man page."
|
||||||
|
echo "You may want to install the GNU Help2man package:"
|
||||||
|
echo "<$gnu_software_URL/help2man/>"
|
||||||
|
;;
|
||||||
|
makeinfo*)
|
||||||
|
echo "You should only need it if you modified a '.texi' file, or"
|
||||||
|
echo "any other file indirectly affecting the aspect of the manual."
|
||||||
|
echo "You might want to install the Texinfo package:"
|
||||||
|
echo "<$gnu_software_URL/texinfo/>"
|
||||||
|
echo "The spurious makeinfo call might also be the consequence of"
|
||||||
|
echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might"
|
||||||
|
echo "want to install GNU make:"
|
||||||
|
echo "<$gnu_software_URL/make/>"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "You might have modified some files without having the proper"
|
||||||
|
echo "tools for further handling them. Check the 'README' file, it"
|
||||||
|
echo "often tells you about the needed prerequisites for installing"
|
||||||
|
echo "this package. You may also peek at any GNU archive site, in"
|
||||||
|
echo "case some other package contains this missing '$1' program."
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
give_advice "$1" | sed -e '1s/^/WARNING: /' \
|
||||||
|
-e '2,$s/^/ /' >&2
|
||||||
|
|
||||||
|
# Propagate the correct exit status (expected to be 127 for a program
|
||||||
|
# not found, 63 for a program that failed due to version mismatch).
|
||||||
|
exit $st
|
||||||
|
|
||||||
|
# Local variables:
|
||||||
|
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||||
|
# time-stamp-start: "scriptversion="
|
||||||
|
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||||
|
# time-stamp-time-zone: "UTC"
|
||||||
|
# time-stamp-end: "; # UTC"
|
||||||
|
# End:
|
||||||
19
scripts/alias_dsl_cpe.sh
Normal file
19
scripts/alias_dsl_cpe.sh
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
#
|
||||||
|
# alias definitions for the "DSL CPE Control Application"
|
||||||
|
# to simplify the usage of the pipe interface
|
||||||
|
#
|
||||||
|
|
||||||
|
echo ... run alias defs for dsl_cpe_control application
|
||||||
|
|
||||||
|
if [ "$DSL_CPE_DIR" = "" ]; then
|
||||||
|
DSL_CPE_DIR="/opt/ifx"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# main alias to send commands
|
||||||
|
alias cpe="$DSL_CPE_DIR/dsl_cpe_pipe.sh"
|
||||||
|
|
||||||
|
# definitions for message-dumps and events
|
||||||
|
alias cpe_log_dump_cout='tail -f /tmp/pipe/dsl_cpe0_dump &'
|
||||||
|
alias cpe_log_dump='tail -f /tmp/pipe/dsl_cpe0_dump > dump.txt &'
|
||||||
|
alias cpe_log_event_cout='tail -f /tmp/pipe/dsl_cpe0_event &'
|
||||||
|
alias cpe_log_event='tail -f /tmp/pipe/dsl_cpe0_event > event.txt &'
|
||||||
18
scripts/dsl_cpe_pipe.sh
Executable file
18
scripts/dsl_cpe_pipe.sh
Executable file
|
|
@ -0,0 +1,18 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
pipe_no=0
|
||||||
|
|
||||||
|
# use specified pipe no
|
||||||
|
case "$1" in
|
||||||
|
0|1|2)
|
||||||
|
pipe_no=$1; shift; ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
|
||||||
|
#echo "Call dsl_pipe with $*"
|
||||||
|
echo $* > /tmp/pipe/dsl_cpe${pipe_no}_cmd
|
||||||
|
result=`cat /tmp/pipe/dsl_cpe${pipe_no}_ack`
|
||||||
|
|
||||||
|
echo "$result"
|
||||||
|
|
||||||
|
|
||||||
207
src/Makefile.am
Normal file
207
src/Makefile.am
Normal file
|
|
@ -0,0 +1,207 @@
|
||||||
|
## Process this file with automake to produce Makefile.in
|
||||||
|
|
||||||
|
bin_PROGRAMS = dsl_cpe_control
|
||||||
|
|
||||||
|
AM_CPPFLAGS = -I@srcdir@ @DSL_DRIVER_INCL_PATH@ @DSL_DEVICE_DRIVER_INCL_PATH@ @IFXOS_INCLUDE_PATH@ @DTI_INCL_PATH@
|
||||||
|
|
||||||
|
|
||||||
|
if DSL_CPE_STATIC_LINKING
|
||||||
|
dsl_cpe_control_common_ldflags = -static
|
||||||
|
else
|
||||||
|
dsl_cpe_control_common_ldflags =
|
||||||
|
endif
|
||||||
|
|
||||||
|
dsl_cpe_control_LDADD = -lpthread -lrt
|
||||||
|
|
||||||
|
if INCLUDE_DSL_CPE_DTI_SUPPORT
|
||||||
|
dsl_cpe_control_LDADD += -ldti_agent
|
||||||
|
dsl_cpe_control_LDADD += -lifxos
|
||||||
|
endif
|
||||||
|
|
||||||
|
if INCLUDE_DSL_CPE_IFXOS_SUPPORT
|
||||||
|
dsl_cpe_control_LDADD += -lifxos
|
||||||
|
endif
|
||||||
|
|
||||||
|
if SAFEC_SUPPORT
|
||||||
|
AM_CPPFLAGS += @SAFEC_INCL_PATH@
|
||||||
|
dsl_cpe_control_LDADD += -l@SAFEC_LIB_NAME@
|
||||||
|
endif
|
||||||
|
|
||||||
|
bin_SCRIPTS = ../scripts/alias_dsl_cpe.sh
|
||||||
|
|
||||||
|
if DEVICE_VRX
|
||||||
|
dsl_cpe_control_bnd_sources = \
|
||||||
|
dsl_cpe_bnd_vrx.c
|
||||||
|
endif
|
||||||
|
|
||||||
|
dsl_cpe_control_cli_sources = \
|
||||||
|
dsl_cpe_cli.c \
|
||||||
|
dsl_cpe_cli_pipe.c \
|
||||||
|
dsl_cpe_cli_access.c \
|
||||||
|
dsl_cpe_cli_console.c
|
||||||
|
|
||||||
|
dsl_cpe_control_cli_autogen_sources = \
|
||||||
|
dsl_cpe_cli_access2.c \
|
||||||
|
dsl_cpe_cli_autogen.c
|
||||||
|
|
||||||
|
dsl_cpe_control_cli_danube_sources = \
|
||||||
|
dsl_cpe_cli_danube.c \
|
||||||
|
dsl_cpe_cli_mib.c
|
||||||
|
|
||||||
|
dsl_cpe_control_cli_vrx_sources = \
|
||||||
|
dsl_cpe_cli_vrx.c
|
||||||
|
|
||||||
|
dsl_cpe_control_debug_danube_sources = \
|
||||||
|
dsl_cpe_debug_danube.c
|
||||||
|
|
||||||
|
dsl_cpe_control_debug_vrx_sources = \
|
||||||
|
dsl_cpe_debug_vrx.c
|
||||||
|
|
||||||
|
if INCLUDE_DSL_CPE_DTI_SUPPORT
|
||||||
|
dsl_cpe_control_dti_sources = \
|
||||||
|
dsl_cpe_dti.c \
|
||||||
|
dsl_cpe_dti_vrx.c
|
||||||
|
else
|
||||||
|
dsl_cpe_control_dti_sources =
|
||||||
|
endif
|
||||||
|
|
||||||
|
dsl_cpe_control_SOURCES = \
|
||||||
|
dsl_cpe_control.c \
|
||||||
|
dsl_cpe_init_cfg.c \
|
||||||
|
dsl_cpe_linux.c \
|
||||||
|
dsl_cpe_debug.c
|
||||||
|
|
||||||
|
dsl_cpe_control_SOURCES += \
|
||||||
|
$(dsl_cpe_control_dti_sources)
|
||||||
|
|
||||||
|
if DEVICE_DANUBE
|
||||||
|
dsl_cpe_control_SOURCES += \
|
||||||
|
$(dsl_cpe_control_debug_danube_sources)
|
||||||
|
endif
|
||||||
|
|
||||||
|
if DEVICE_VRX_LAYER
|
||||||
|
dsl_cpe_control_SOURCES += \
|
||||||
|
$(dsl_cpe_control_debug_vrx_sources)
|
||||||
|
endif
|
||||||
|
|
||||||
|
dsl_cpe_control_SOURCES += \
|
||||||
|
$(dsl_cpe_control_bnd_sources)
|
||||||
|
|
||||||
|
if INCLUDE_DSL_CPE_CLI_SUPPORT
|
||||||
|
dsl_cpe_control_SOURCES += \
|
||||||
|
$(dsl_cpe_control_cli_sources)
|
||||||
|
|
||||||
|
if INCLUDE_DSL_CPE_CLI_AUTOGEN_SUPPORT
|
||||||
|
dsl_cpe_control_SOURCES += \
|
||||||
|
$(dsl_cpe_control_cli_autogen_sources)
|
||||||
|
endif
|
||||||
|
|
||||||
|
if DEVICE_DANUBE
|
||||||
|
dsl_cpe_control_SOURCES += \
|
||||||
|
$(dsl_cpe_control_cli_danube_sources)
|
||||||
|
endif
|
||||||
|
|
||||||
|
if DEVICE_VRX
|
||||||
|
dsl_cpe_control_SOURCES += \
|
||||||
|
$(dsl_cpe_control_cli_vrx_sources)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
|
EXTRA_DIST = \
|
||||||
|
../LICENSE \
|
||||||
|
$(dsl_cpe_control_bnd_sources) \
|
||||||
|
$(dsl_cpe_control_cli_sources) \
|
||||||
|
$(dsl_cpe_control_dti_sources) \
|
||||||
|
$(dsl_cpe_control_cli_danube_sources) \
|
||||||
|
$(dsl_cpe_control_cli_vrx_sources) \
|
||||||
|
$(dsl_cpe_control_debug_danube_sources) \
|
||||||
|
$(dsl_cpe_control_debug_vrx_sources) \
|
||||||
|
dsl_cpe_control.h \
|
||||||
|
dsl_cpe_init_cfg.h \
|
||||||
|
dsl_cpe_cli.h \
|
||||||
|
dsl_cpe_dti.h \
|
||||||
|
dsl_cpe_dti_vrx_ctx.h \
|
||||||
|
dsl_cpe_bnd_vrx.h \
|
||||||
|
dsl_cpe_cli_console.h \
|
||||||
|
dsl_cpe_simulator.c \
|
||||||
|
dsl_cpe_simulator.h \
|
||||||
|
dsl_cpe_win32.c \
|
||||||
|
dsl_cpe_win32.h \
|
||||||
|
dsl_cpe_os.h \
|
||||||
|
dsl_cpe_os_lint_map.h \
|
||||||
|
dsl_cpe_linux.h \
|
||||||
|
dsl_cpe_vxworks.c \
|
||||||
|
dsl_cpe_vxworks.h \
|
||||||
|
dsl_cpe_rtems.c \
|
||||||
|
dsl_cpe_rtems.h \
|
||||||
|
dsl_cpe_debug.h \
|
||||||
|
dsl_cpe_debug_danube.h \
|
||||||
|
dsl_cpe_debug_vrx.h \
|
||||||
|
../scripts/alias_dsl_cpe.sh \
|
||||||
|
../scripts/dsl_cpe_pipe.sh \
|
||||||
|
../tools/pipe/dsl_pipe_client.h \
|
||||||
|
dsl_cpe_safec_wrapper.h
|
||||||
|
|
||||||
|
if ADD_APPL_CFLAGS_SET
|
||||||
|
dsl_cpe_control_cflags = $(ADD_APPL_CFLAGS)
|
||||||
|
else
|
||||||
|
dsl_cpe_control_cflags =
|
||||||
|
endif
|
||||||
|
|
||||||
|
if ADD_APPL_LDFLAGS_SET
|
||||||
|
dsl_cpe_control_ldflags = $(ADD_APPL_LDFLAGS)
|
||||||
|
else
|
||||||
|
dsl_cpe_control_ldflags =
|
||||||
|
endif
|
||||||
|
|
||||||
|
if INCLUDE_DSL_CPE_IFXOS_SUPPORT
|
||||||
|
dsl_cpe_control_ifxos_ldflags = @IFXOS_LIBRARY_PATH@
|
||||||
|
else
|
||||||
|
dsl_cpe_control_ifxos_ldflags =
|
||||||
|
endif
|
||||||
|
|
||||||
|
if INCLUDE_DSL_CPE_DTI_SUPPORT
|
||||||
|
dsl_cpe_control_dti_ldflags = @DTI_LIBRARY_PATH@
|
||||||
|
else
|
||||||
|
dsl_cpe_control_dti_ldflags =
|
||||||
|
endif
|
||||||
|
|
||||||
|
if SAFEC_SUPPORT
|
||||||
|
dsl_cpe_control_safec_ldflags = @SAFEC_LIB_PATH@
|
||||||
|
else
|
||||||
|
dsl_cpe_control_safec_ldflags =
|
||||||
|
endif
|
||||||
|
|
||||||
|
dsl_cpe_control_common_cflags = -Wall -Wimplicit -Wreturn-type -Wunused -Wundef \
|
||||||
|
-Wswitch -Wno-format -Wcomment -Wuninitialized -DLINUX -g3
|
||||||
|
|
||||||
|
# compile cflags
|
||||||
|
dsl_cpe_control_compile_cflags = $(EXTRA_APP_CFLAGS)
|
||||||
|
|
||||||
|
if DSL_CCA_DBG_MAX_LEVEL_SET
|
||||||
|
dsl_cpe_control_common_cflags += -DDSL_CCA_DBG_MAX_LEVEL=$(DSL_CCA_DBG_MAX_LEVEL_PRE)
|
||||||
|
endif
|
||||||
|
|
||||||
|
if CONFIG_USE_DSL_ADD_EXT_APPL_CFLAGS
|
||||||
|
dsl_cpe_control_external_cflags= $(DSL_ADD_EXT_APPL_CFLAGS)
|
||||||
|
endif
|
||||||
|
|
||||||
|
dsl_cpe_control_CFLAGS = $(dsl_cpe_control_common_cflags) \
|
||||||
|
$(dsl_cpe_control_cflags) \
|
||||||
|
$(dsl_cpe_control_compile_cflags) \
|
||||||
|
$(dsl_cpe_control_external_cflags)
|
||||||
|
|
||||||
|
dsl_cpe_control_LDFLAGS = $(dsl_cpe_control_common_ldflags) \
|
||||||
|
$(dsl_cpe_control_ldflags) \
|
||||||
|
$(dsl_cpe_control_compile_cflags) \
|
||||||
|
$(dsl_cpe_control_ifxos_ldflags) \
|
||||||
|
$(dsl_cpe_control_dti_ldflags) \
|
||||||
|
$(dsl_cpe_control_safec_ldflags)
|
||||||
|
|
||||||
|
|
||||||
|
lint:
|
||||||
|
@flint +b -vm \
|
||||||
|
-i$(shell dirname `$(CC) -print-file-name=include`)/include \
|
||||||
|
-i@top_srcdir@ std_lx.lnt env-cw6.lnt -i@srcdir@ \
|
||||||
|
$(DEFS) $(AM_CPPFLAGS) $(CFLAGS) -D__LINUX__ -DLINUX $(dsl_cpe_control_SOURCES)
|
||||||
1163
src/Makefile.in
Normal file
1163
src/Makefile.in
Normal file
File diff suppressed because it is too large
Load diff
868
src/dsl_cpe_bnd_vrx.c
Normal file
868
src/dsl_cpe_bnd_vrx.c
Normal file
|
|
@ -0,0 +1,868 @@
|
||||||
|
/******************************************************************************
|
||||||
|
|
||||||
|
Copyright 2018, Intel Corporation
|
||||||
|
|
||||||
|
Copyright (c) 2007-2015
|
||||||
|
Lantiq Beteiligungs-GmbH & Co. KG
|
||||||
|
|
||||||
|
For licensing information, see the file 'LICENSE' in the root folder of
|
||||||
|
this software module.
|
||||||
|
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
#include "dsl_cpe_control.h"
|
||||||
|
|
||||||
|
#if defined(INCLUDE_DSL_CPE_API_VRX)
|
||||||
|
|
||||||
|
#include "dsl_cpe_bnd_vrx.h"
|
||||||
|
|
||||||
|
#include "drv_dsl_cpe_api_ioctl.h"
|
||||||
|
|
||||||
|
#undef DSL_CCA_DBG_BLOCK
|
||||||
|
#define DSL_CCA_DBG_BLOCK DSL_CCA_DBG_APP
|
||||||
|
|
||||||
|
static DSL_Error_t DSL_CPE_BND_BondingCheck(
|
||||||
|
DSL_CPE_BND_Context_t *pBndCtx,
|
||||||
|
DSL_int_t fd,
|
||||||
|
DSL_uint16_t nPort)
|
||||||
|
{
|
||||||
|
DSL_int_t ret = 0, i, j;
|
||||||
|
DSL_BND_HsStatusGet_t status;
|
||||||
|
DSL_BND_HsContinue_t HsContinue;
|
||||||
|
|
||||||
|
/* read bonding status */
|
||||||
|
memset (&status, 0, sizeof(DSL_BND_HsStatusGet_t));
|
||||||
|
|
||||||
|
ret = DSL_CPE_Ioctl(fd, DSL_FIO_BND_HS_STATUS_GET, (DSL_int_t)&status);
|
||||||
|
|
||||||
|
if ((ret < 0) || (status.accessCtl.nReturn < DSL_SUCCESS))
|
||||||
|
{
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_ERR, (DSL_CPE_PREFIX
|
||||||
|
"BND - DSL_FIO_BND_HS_STATUS_GET ioctl call failed!" DSL_CPE_CRLF));
|
||||||
|
|
||||||
|
return DSL_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Set RemotePafAvailable */
|
||||||
|
pBndCtx->lineMonitorStateMachine[nPort].RemotePafAvailable =
|
||||||
|
(DSL_uint16_t)status.data.nRemotePafSupported;
|
||||||
|
|
||||||
|
/* clear if same */
|
||||||
|
if ((status.data.nActivationMode & DSL_BND_DISCOVERY_CLEAR_IF_SAME))
|
||||||
|
{
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_MSG, (DSL_CPE_PREFIX
|
||||||
|
"BND - Clear If Same Command Received" DSL_CPE_CRLF));
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_MSG, (DSL_CPE_PREFIX
|
||||||
|
"BND - Remote Discovery code: 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x" DSL_CPE_CRLF,
|
||||||
|
pBndCtx->remoteDiscoveryCode[0], pBndCtx->remoteDiscoveryCode[1],
|
||||||
|
pBndCtx->remoteDiscoveryCode[2], pBndCtx->remoteDiscoveryCode[3],
|
||||||
|
pBndCtx->remoteDiscoveryCode[4], pBndCtx->remoteDiscoveryCode[5]));
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_MSG, (DSL_CPE_PREFIX
|
||||||
|
"BND - Discovery code: 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x" DSL_CPE_CRLF,
|
||||||
|
status.data.nDiscoveryCode[0], status.data.nDiscoveryCode[1],
|
||||||
|
status.data.nDiscoveryCode[2], status.data.nDiscoveryCode[3],
|
||||||
|
status.data.nDiscoveryCode[4], status.data.nDiscoveryCode[5]));
|
||||||
|
|
||||||
|
/* if received discovery code = current Remote Discovery Register,
|
||||||
|
then clear the Remote Discovery and Aggregate Register */
|
||||||
|
for (i = 0; i < 6; i++)
|
||||||
|
{
|
||||||
|
if (status.data.nDiscoveryCode[i] != pBndCtx->remoteDiscoveryCode[i])
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (i == 6)
|
||||||
|
{
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_MSG, (DSL_CPE_PREFIX
|
||||||
|
"BND - Update Remote Discovery code" DSL_CPE_CRLF));
|
||||||
|
|
||||||
|
memset(pBndCtx->remoteDiscoveryCode, 0x0, 6);
|
||||||
|
|
||||||
|
pBndCtx->aggregateReg = 0;
|
||||||
|
for (j = 0; j < DSL_CPE_DSL_ENTITIES; j++)
|
||||||
|
{
|
||||||
|
pBndCtx->lineMonitorStateMachine[j].PafAggregate = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_MSG, (DSL_CPE_PREFIX
|
||||||
|
"BND - Remote Discovery code: 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x" DSL_CPE_CRLF,
|
||||||
|
pBndCtx->remoteDiscoveryCode[0], pBndCtx->remoteDiscoveryCode[1],
|
||||||
|
pBndCtx->remoteDiscoveryCode[2], pBndCtx->remoteDiscoveryCode[3],
|
||||||
|
pBndCtx->remoteDiscoveryCode[4], pBndCtx->remoteDiscoveryCode[5]));
|
||||||
|
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_MSG, (DSL_CPE_PREFIX
|
||||||
|
"BND - Aggregation Register: 0x%X" DSL_CPE_CRLF,
|
||||||
|
pBndCtx->aggregateReg));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* set if clear */
|
||||||
|
if ((status.data.nActivationMode & DSL_BND_DISCOVERY_SET_IF_CLEAR))
|
||||||
|
{
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_MSG, (DSL_CPE_PREFIX
|
||||||
|
"BND - Set If Clear Command Received" DSL_CPE_CRLF));
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_MSG, (DSL_CPE_PREFIX
|
||||||
|
"BND - Remote Discovery code: 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x" DSL_CPE_CRLF,
|
||||||
|
pBndCtx->remoteDiscoveryCode[0], pBndCtx->remoteDiscoveryCode[1],
|
||||||
|
pBndCtx->remoteDiscoveryCode[2], pBndCtx->remoteDiscoveryCode[3],
|
||||||
|
pBndCtx->remoteDiscoveryCode[4], pBndCtx->remoteDiscoveryCode[5]));
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_MSG, (DSL_CPE_PREFIX
|
||||||
|
"BND - Discovery code: 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x" DSL_CPE_CRLF,
|
||||||
|
status.data.nDiscoveryCode[0], status.data.nDiscoveryCode[1],
|
||||||
|
status.data.nDiscoveryCode[2], status.data.nDiscoveryCode[3],
|
||||||
|
status.data.nDiscoveryCode[4], status.data.nDiscoveryCode[5]));
|
||||||
|
|
||||||
|
/* if current Remote Discovery Register is 0,
|
||||||
|
then set the Remote Discovery Register to received discovery code */
|
||||||
|
for (i = 0; i < 6; i++)
|
||||||
|
{
|
||||||
|
if (pBndCtx->remoteDiscoveryCode[i] != 0)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (i == 6)
|
||||||
|
{
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_MSG, (DSL_CPE_PREFIX
|
||||||
|
"BND - Update Remote Discovery code" DSL_CPE_CRLF));
|
||||||
|
|
||||||
|
cpe_control_memcpy_s(pBndCtx->remoteDiscoveryCode, sizeof(pBndCtx->remoteDiscoveryCode),
|
||||||
|
status.data.nDiscoveryCode, sizeof(status.data.nDiscoveryCode));
|
||||||
|
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_MSG, (DSL_CPE_PREFIX
|
||||||
|
"BND - Remote Discovery code: 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x" DSL_CPE_CRLF,
|
||||||
|
pBndCtx->remoteDiscoveryCode[0], pBndCtx->remoteDiscoveryCode[1],
|
||||||
|
pBndCtx->remoteDiscoveryCode[2], pBndCtx->remoteDiscoveryCode[3],
|
||||||
|
pBndCtx->remoteDiscoveryCode[4], pBndCtx->remoteDiscoveryCode[5]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* aggregate set */
|
||||||
|
if ((status.data.nActivationMode & DSL_BND_AGGREGATE_SET))
|
||||||
|
{
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_MSG, (DSL_CPE_PREFIX
|
||||||
|
"BND - AggregateSet Command Received" DSL_CPE_CRLF));
|
||||||
|
|
||||||
|
pBndCtx->aggregateReg |= (1 << nPort);
|
||||||
|
pBndCtx->lineMonitorStateMachine[nPort].PafAggregate = 1;
|
||||||
|
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_MSG, (DSL_CPE_PREFIX
|
||||||
|
"BND - Aggregation Register: 0x%X" DSL_CPE_CRLF,
|
||||||
|
pBndCtx->aggregateReg));
|
||||||
|
}
|
||||||
|
|
||||||
|
/* aggregate clear */
|
||||||
|
if ((status.data.nActivationMode & DSL_BND_AGGREGATE_CLR) != 0)
|
||||||
|
{
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_MSG, (DSL_CPE_PREFIX
|
||||||
|
"BND - AggregateClr Command Received" DSL_CPE_CRLF));
|
||||||
|
|
||||||
|
pBndCtx->aggregateReg &= (~(1 << nPort));
|
||||||
|
pBndCtx->lineMonitorStateMachine[nPort].PafAggregate = 0;
|
||||||
|
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_MSG, (DSL_CPE_PREFIX
|
||||||
|
"BND - Aggregation Register: 0x%X" DSL_CPE_CRLF,
|
||||||
|
pBndCtx->aggregateReg));
|
||||||
|
}
|
||||||
|
|
||||||
|
/* set continue flag after bonding registers processed */
|
||||||
|
|
||||||
|
memset (&HsContinue, 0, sizeof(DSL_BND_HsContinue_t));
|
||||||
|
|
||||||
|
cpe_control_memcpy_s(HsContinue.data.nDiscoveryCode, sizeof(HsContinue.data.nDiscoveryCode),
|
||||||
|
pBndCtx->remoteDiscoveryCode, sizeof(pBndCtx->remoteDiscoveryCode));
|
||||||
|
HsContinue.data.nAggregateData = pBndCtx->aggregateReg;
|
||||||
|
|
||||||
|
ret = DSL_CPE_Ioctl(fd, DSL_FIO_BND_HS_CONTINUE, (DSL_int_t)&HsContinue);
|
||||||
|
|
||||||
|
if ((ret < 0) || (HsContinue.accessCtl.nReturn < DSL_SUCCESS))
|
||||||
|
{
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_ERR, (DSL_CPE_PREFIX
|
||||||
|
"BND - DSL_FIO_BND_HS_CONTINUE ioctl call failed!" DSL_CPE_CRLF));
|
||||||
|
|
||||||
|
return DSL_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
return DSL_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
DSL_Error_t DSL_CPE_BND_RemotePafAvailableCheck(
|
||||||
|
DSL_int_t fd,
|
||||||
|
DSL_uint16_t *pRemotePafAvailable)
|
||||||
|
{
|
||||||
|
DSL_int_t ret = 0;
|
||||||
|
DSL_BND_HsStatusGet_t status;
|
||||||
|
|
||||||
|
/* read bonding status */
|
||||||
|
memset (&status, 0, sizeof(DSL_BND_HsStatusGet_t));
|
||||||
|
|
||||||
|
ret = DSL_CPE_Ioctl(fd, DSL_FIO_BND_HS_STATUS_GET, (DSL_int_t)&status);
|
||||||
|
|
||||||
|
if ((ret < 0) || (status.accessCtl.nReturn < DSL_SUCCESS))
|
||||||
|
{
|
||||||
|
if (status.accessCtl.nReturn != DSL_ERR_NOT_SUPPORTED_BY_FIRMWARE)
|
||||||
|
{
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_ERR, (DSL_CPE_PREFIX
|
||||||
|
"BND - DSL_FIO_BND_HS_STATUS_GET ioctl call failed!" DSL_CPE_CRLF));
|
||||||
|
|
||||||
|
return DSL_ERROR;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Set RemotePafAvailable */
|
||||||
|
*pRemotePafAvailable = (DSL_uint16_t)status.data.nRemotePafSupported;
|
||||||
|
|
||||||
|
return DSL_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
static DSL_Error_t DSL_CPE_BND_LocalPafAvailableCheck(
|
||||||
|
DSL_int_t fd,
|
||||||
|
DSL_uint16_t *pLocalPafAvailable)
|
||||||
|
{
|
||||||
|
DSL_int_t ret = 0;
|
||||||
|
DSL_BND_ConfigGet_t bndConfig;
|
||||||
|
|
||||||
|
/* read bonding status */
|
||||||
|
memset (&bndConfig, 0, sizeof(DSL_BND_ConfigGet_t));
|
||||||
|
|
||||||
|
ret = DSL_CPE_Ioctl(fd, DSL_FIO_BND_CONFIG_GET, (DSL_int_t)&bndConfig);
|
||||||
|
|
||||||
|
if ((ret < 0) || (bndConfig.accessCtl.nReturn < DSL_SUCCESS))
|
||||||
|
{
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_ERR, (DSL_CPE_PREFIX
|
||||||
|
"BND - DSL_FIO_BND_CONFIG_GET ioctl call failed!" DSL_CPE_CRLF));
|
||||||
|
|
||||||
|
return DSL_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
*pLocalPafAvailable = (DSL_uint16_t)bndConfig.data.bPafEnable;
|
||||||
|
|
||||||
|
return DSL_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
DSL_Error_t DSL_CPE_BND_AutobootStatusRestartWait(
|
||||||
|
DSL_CPE_BND_Context_t *pBndCtx,
|
||||||
|
DSL_uint_t nDevice)
|
||||||
|
{
|
||||||
|
return DSL_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
DSL_Error_t DSL_CPE_BND_DeviceFirmwareDownload(
|
||||||
|
DSL_CPE_BND_Context_t *pBndCtx,
|
||||||
|
DSL_int_t nDevice,
|
||||||
|
DSL_FirmwareRequestType_t nFwReqType,
|
||||||
|
DSL_PortMode_t nPortMode,
|
||||||
|
DSL_boolean_t bMaster,
|
||||||
|
DSL_boolean_t bSlave)
|
||||||
|
{
|
||||||
|
DSL_Error_t nErrorCode = DSL_SUCCESS;
|
||||||
|
DSL_CPE_Control_Context_t *pContext = pBndCtx->pCtrlCtx;
|
||||||
|
|
||||||
|
if (bMaster)
|
||||||
|
{
|
||||||
|
/* Download MASTER*/
|
||||||
|
nErrorCode = DSL_CPE_DownloadFirmware(pContext->fd[0], nDevice, nFwReqType,
|
||||||
|
nPortMode, DSL_NULL, DSL_NULL);
|
||||||
|
if (nErrorCode != DSL_SUCCESS)
|
||||||
|
{
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_ERR, (DSL_CPE_PREFIX
|
||||||
|
"BND - Master line FW download failed!" DSL_CPE_CRLF));
|
||||||
|
return nErrorCode;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (bSlave)
|
||||||
|
{
|
||||||
|
/* Download MASTER*/
|
||||||
|
nErrorCode = DSL_CPE_DownloadFirmware(pContext->fd[1], nDevice, nFwReqType,
|
||||||
|
nPortMode, DSL_NULL, DSL_NULL);
|
||||||
|
if (nErrorCode != DSL_SUCCESS)
|
||||||
|
{
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_ERR, (DSL_CPE_PREFIX
|
||||||
|
"BND - Slave line FW download failed!" DSL_CPE_CRLF));
|
||||||
|
return nErrorCode;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nErrorCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
#define DSL_CPE_SLAVE_READY_WAIT_CNT_MAX 10
|
||||||
|
DSL_Error_t DSL_CPE_BND_SyncDownloadFirmware(
|
||||||
|
DSL_CPE_BND_Context_t *pBndCtx,
|
||||||
|
DSL_int_t nDevice,
|
||||||
|
DSL_FirmwareRequestType_t nFwReqType,
|
||||||
|
DSL_PortMode_t nPortMode)
|
||||||
|
{
|
||||||
|
DSL_Error_t nErrorCode = DSL_SUCCESS;
|
||||||
|
DSL_CPE_Control_Context_t *pContext = pBndCtx->pCtrlCtx;
|
||||||
|
DSL_AutobootControl_t pAcs;
|
||||||
|
DSL_boolean_t bSlavePort;
|
||||||
|
DSL_uint32_t nMasterDevNum, nSlaveDevNum, wait_cnt;
|
||||||
|
DSL_int_t ret;
|
||||||
|
DSL_AutobootStatus_t nAutobootStatus;
|
||||||
|
DSL_BND_PortModeSync_t PortModeSync;
|
||||||
|
|
||||||
|
bSlavePort = nDevice % DSL_CPE_LINES_PER_DEVICE ? DSL_TRUE : DSL_FALSE;
|
||||||
|
|
||||||
|
nMasterDevNum = bSlavePort ? nDevice - 1 : nDevice;
|
||||||
|
nSlaveDevNum = bSlavePort ? nDevice : nDevice + 1;
|
||||||
|
|
||||||
|
if (nPortMode == DSL_PORT_MODE_DUAL)
|
||||||
|
{
|
||||||
|
if (!pBndCtx->bInitialFwRequestHandled)
|
||||||
|
{
|
||||||
|
pBndCtx->bFwRequested[nDevice] = DSL_TRUE;
|
||||||
|
|
||||||
|
if (pBndCtx->bFwRequested[nMasterDevNum] && pBndCtx->bFwRequested[nSlaveDevNum])
|
||||||
|
{
|
||||||
|
/* Download firmware for MASTER and SLAVE*/
|
||||||
|
nErrorCode = DSL_CPE_BND_DeviceFirmwareDownload(
|
||||||
|
pBndCtx, nDevice, nFwReqType, nPortMode, DSL_TRUE, DSL_TRUE);
|
||||||
|
if (nErrorCode != DSL_SUCCESS)
|
||||||
|
{
|
||||||
|
return nErrorCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
pBndCtx->bInitialFwRequestHandled = DSL_TRUE;
|
||||||
|
return nErrorCode;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return nErrorCode;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (bSlavePort)
|
||||||
|
{
|
||||||
|
/* restart MASTER*/
|
||||||
|
pAcs.data.nCommand = DSL_AUTOBOOT_CTRL_RESTART_FULL;
|
||||||
|
DSL_CPE_Ioctl(pContext->fd[nMasterDevNum],
|
||||||
|
DSL_FIO_AUTOBOOT_CONTROL_SET, (DSL_int_t) &pAcs);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
memset (&nAutobootStatus, 0, sizeof(DSL_AutobootStatus_t));
|
||||||
|
ret = DSL_CPE_Ioctl(pContext->fd[nSlaveDevNum], DSL_FIO_AUTOBOOT_STATUS_GET, (DSL_int_t)&nAutobootStatus);
|
||||||
|
if (ret < 0)
|
||||||
|
{
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_ERR, (DSL_CPE_PREFIX
|
||||||
|
"BND - line %d Autoboot Status get failed!" DSL_CPE_CRLF, nSlaveDevNum));
|
||||||
|
return DSL_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* check SLAVE status*/
|
||||||
|
if (nAutobootStatus.data.nStatus != DSL_AUTOBOOT_STATUS_FW_WAIT)
|
||||||
|
{
|
||||||
|
/* restart SLAVE*/
|
||||||
|
pAcs.data.nCommand = DSL_AUTOBOOT_CTRL_RESTART_FULL;
|
||||||
|
DSL_CPE_Ioctl(pContext->fd[nSlaveDevNum],
|
||||||
|
DSL_FIO_AUTOBOOT_CONTROL_SET, (DSL_int_t) &pAcs);
|
||||||
|
return DSL_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Download firmware for MASTER and SLAVE*/
|
||||||
|
nErrorCode = DSL_CPE_BND_DeviceFirmwareDownload(
|
||||||
|
pBndCtx, nDevice, nFwReqType, nPortMode, DSL_TRUE, DSL_TRUE);
|
||||||
|
if (nErrorCode != DSL_SUCCESS)
|
||||||
|
{
|
||||||
|
return nErrorCode;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
pBndCtx->bFwRequested[nDevice] = DSL_TRUE;
|
||||||
|
|
||||||
|
/* Disable SLAVE*/
|
||||||
|
pAcs.data.nCommand = DSL_AUTOBOOT_CTRL_DISABLE;
|
||||||
|
DSL_CPE_Ioctl(pContext->fd[nSlaveDevNum], DSL_FIO_AUTOBOOT_CONTROL_SET, (DSL_int_t) &pAcs);
|
||||||
|
|
||||||
|
/* wait for the disabled SLAVE*/
|
||||||
|
for (wait_cnt = 0; wait_cnt < DSL_CPE_SLAVE_READY_WAIT_CNT_MAX; wait_cnt++)
|
||||||
|
{
|
||||||
|
memset (&nAutobootStatus, 0, sizeof(DSL_AutobootStatus_t));
|
||||||
|
|
||||||
|
ret = DSL_CPE_Ioctl(pContext->fd[nSlaveDevNum], DSL_FIO_AUTOBOOT_STATUS_GET, (DSL_int_t)&nAutobootStatus);
|
||||||
|
if (ret < 0)
|
||||||
|
{
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_ERR, (DSL_CPE_PREFIX
|
||||||
|
"BND - line %d Autoboot Status get failed!" DSL_CPE_CRLF, nSlaveDevNum));
|
||||||
|
return DSL_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (nAutobootStatus.data.nStatus == DSL_AUTOBOOT_STATUS_STOPPED ||
|
||||||
|
nAutobootStatus.data.nStatus == DSL_AUTOBOOT_STATUS_DISABLED ||
|
||||||
|
nAutobootStatus.data.nStatus == DSL_AUTOBOOT_STATUS_FW_WAIT)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
DSL_CPE_Sleep(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (wait_cnt >= DSL_CPE_SLAVE_READY_WAIT_CNT_MAX)
|
||||||
|
{
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_ERR, (DSL_CPE_PREFIX
|
||||||
|
"BND - line %d disable failed!" DSL_CPE_CRLF, nSlaveDevNum));
|
||||||
|
return DSL_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!bSlavePort)
|
||||||
|
{
|
||||||
|
/* Download firmware for MASTER*/
|
||||||
|
nErrorCode = DSL_CPE_BND_DeviceFirmwareDownload(
|
||||||
|
pBndCtx, nDevice, nFwReqType, nPortMode, DSL_TRUE, DSL_FALSE);
|
||||||
|
if (nErrorCode != DSL_SUCCESS)
|
||||||
|
{
|
||||||
|
return nErrorCode;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* Set MASTER Port Mode sync*/
|
||||||
|
memset(&PortModeSync, 0, sizeof(PortModeSync));
|
||||||
|
PortModeSync.data.nPortMode = DSL_PORT_MODE_SINGLE;
|
||||||
|
ret = DSL_CPE_Ioctl(pContext->fd[nMasterDevNum], DSL_FIO_BND_PORT_MODE_SYNC_SET, (DSL_int_t)&PortModeSync);
|
||||||
|
if (ret < 0)
|
||||||
|
{
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_ERR, (DSL_CPE_PREFIX
|
||||||
|
"BND - line %d Port Mode sync set failed!" DSL_CPE_CRLF, nMasterDevNum));
|
||||||
|
return DSL_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* restart MASTER*/
|
||||||
|
pAcs.data.nCommand = DSL_AUTOBOOT_CTRL_RESTART_FULL;
|
||||||
|
ret = DSL_CPE_Ioctl(pContext->fd[nMasterDevNum],
|
||||||
|
DSL_FIO_AUTOBOOT_CONTROL_SET, (DSL_int_t) &pAcs);
|
||||||
|
if (ret < 0)
|
||||||
|
{
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_ERR, (DSL_CPE_PREFIX
|
||||||
|
"BND - line %d full restart failed failed!" DSL_CPE_CRLF, nMasterDevNum));
|
||||||
|
return DSL_ERROR;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nErrorCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
DSL_Error_t DSL_CPE_BND_SystemInterfaceStatusHandle(
|
||||||
|
DSL_CPE_BND_Context_t *pBndCtx,
|
||||||
|
DSL_int_t fd,
|
||||||
|
DSL_uint_t nDevice)
|
||||||
|
{
|
||||||
|
DSL_Error_t nErrorCode = DSL_SUCCESS;
|
||||||
|
DSL_uint32_t nCurrentLine, nOppositeLine, nLine;
|
||||||
|
DSL_AutobootControl_t nAcs;
|
||||||
|
DSL_boolean_t bDisableLine = DSL_FALSE;
|
||||||
|
|
||||||
|
nCurrentLine = nDevice % DSL_CPE_DSL_ENTITIES;
|
||||||
|
nOppositeLine = (nDevice + 1) % DSL_CPE_DSL_ENTITIES;
|
||||||
|
|
||||||
|
#ifdef INCLUDE_SCRIPT_NOTIFICATION
|
||||||
|
nErrorCode = DSL_CPE_SetEnv("DSL_BONDING_STATUS",
|
||||||
|
pBndCtx->lineBondingConfig[nCurrentLine].nRemotePafAvailable ? "ACTIVE" : "INACTIVE");
|
||||||
|
if (nErrorCode != DSL_SUCCESS)
|
||||||
|
{
|
||||||
|
return nErrorCode;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if(!pBndCtx->lineBondingConfig[nCurrentLine].nPafLineDisabled &&
|
||||||
|
!pBndCtx->lineBondingConfig[nOppositeLine].nPafLineDisabled)
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* One bonding and one non-bonding lines (CO) are connected to a
|
||||||
|
* bonding (CPE) board
|
||||||
|
*/
|
||||||
|
if(pBndCtx->lineBondingConfig[nCurrentLine].nFullInitReached &&
|
||||||
|
pBndCtx->lineBondingConfig[nCurrentLine].nRemotePafAvailable &&
|
||||||
|
pBndCtx->lineBondingConfig[nOppositeLine].nFullInitReached &&
|
||||||
|
!pBndCtx->lineBondingConfig[nOppositeLine].nRemotePafAvailable)
|
||||||
|
{
|
||||||
|
bDisableLine = DSL_TRUE;
|
||||||
|
nLine = nOppositeLine;
|
||||||
|
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_MSG, (DSL_CPE_PREFIX
|
||||||
|
"BND - Device=%d PAF mismatch #2a (disable #%d)"
|
||||||
|
DSL_CPE_CRLF, nCurrentLine, nLine));
|
||||||
|
}
|
||||||
|
else if(pBndCtx->lineBondingConfig[nOppositeLine].nFullInitReached &&
|
||||||
|
pBndCtx->lineBondingConfig[nOppositeLine].nRemotePafAvailable &&
|
||||||
|
pBndCtx->lineBondingConfig[nCurrentLine].nFullInitReached &&
|
||||||
|
!pBndCtx->lineBondingConfig[nCurrentLine].nRemotePafAvailable)
|
||||||
|
{
|
||||||
|
bDisableLine = DSL_TRUE;
|
||||||
|
nLine = nCurrentLine;
|
||||||
|
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_MSG, (DSL_CPE_PREFIX
|
||||||
|
"BND - Device=%d PAF mismatch #2b (disable #%d)"
|
||||||
|
DSL_CPE_CRLF, nCurrentLine, nLine));
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 2 non-bonded CO lines are connected to a bonding (CPE) board
|
||||||
|
*/
|
||||||
|
else if(pBndCtx->lineBondingConfig[nCurrentLine].nFullInitReached &&
|
||||||
|
!pBndCtx->lineBondingConfig[nCurrentLine].nRemotePafAvailable)
|
||||||
|
{
|
||||||
|
bDisableLine = DSL_TRUE;
|
||||||
|
nLine = nOppositeLine;
|
||||||
|
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_MSG, (DSL_CPE_PREFIX
|
||||||
|
"BND - Device=%d PAF mismatch #1a (disable #%d)"
|
||||||
|
DSL_CPE_CRLF, nCurrentLine, nLine));
|
||||||
|
}
|
||||||
|
else if(pBndCtx->lineBondingConfig[nOppositeLine].nFullInitReached &&
|
||||||
|
!pBndCtx->lineBondingConfig[nOppositeLine].nRemotePafAvailable)
|
||||||
|
{
|
||||||
|
bDisableLine = DSL_TRUE;
|
||||||
|
nLine = nCurrentLine;
|
||||||
|
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_MSG, (DSL_CPE_PREFIX
|
||||||
|
"BND - Device=%d PAF mismatch #1b (disable #%d)"
|
||||||
|
DSL_CPE_CRLF, nCurrentLine, nLine));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(bDisableLine)
|
||||||
|
{
|
||||||
|
pBndCtx->lineBondingConfig[nLine].nPafLineDisabled = 1;
|
||||||
|
|
||||||
|
memset(&nAcs, 0x0, sizeof(DSL_AutobootControl_t));
|
||||||
|
nAcs.data.nCommand = DSL_AUTOBOOT_CTRL_DISABLE;
|
||||||
|
|
||||||
|
nErrorCode = DSL_CPE_Ioctl(pBndCtx->pCtrlCtx->fd[nLine],
|
||||||
|
DSL_FIO_AUTOBOOT_CONTROL_SET, (DSL_int_t) &nAcs);
|
||||||
|
if ((nErrorCode < 0) || (nAcs.accessCtl.nReturn < DSL_SUCCESS))
|
||||||
|
{
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_ERR, (DSL_CPE_PREFIX
|
||||||
|
"DSL_FIO_AUTOBOOT_CONTROL_SET ioctl call failed!" DSL_CPE_CRLF));
|
||||||
|
|
||||||
|
return DSL_ERROR;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nErrorCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
DSL_Error_t DSL_CPE_BND_LineStateHandle(
|
||||||
|
DSL_CPE_BND_Context_t *pBndCtx,
|
||||||
|
DSL_int_t fd,
|
||||||
|
DSL_uint_t nDevice,
|
||||||
|
DSL_LineStateValue_t nLineState,
|
||||||
|
DSL_LineStateValue_t nPrevLineState)
|
||||||
|
{
|
||||||
|
DSL_Error_t nErrorCode = DSL_SUCCESS;
|
||||||
|
DSL_uint32_t nCurrentLine, nOppositeLine;
|
||||||
|
DSL_AutobootControl_t nAcs;
|
||||||
|
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_MSG, (DSL_CPE_PREFIX
|
||||||
|
"BND - Device=%d nLineState=0x%x nPrevLineState=0x%x" DSL_CPE_CRLF,
|
||||||
|
nDevice, nLineState,nPrevLineState));
|
||||||
|
|
||||||
|
nCurrentLine = nDevice % DSL_CPE_DSL_ENTITIES;
|
||||||
|
nOppositeLine = (nDevice + 1) % DSL_CPE_DSL_ENTITIES;
|
||||||
|
|
||||||
|
if (nLineState == DSL_LINESTATE_FULL_INIT)
|
||||||
|
{
|
||||||
|
pBndCtx->lineBondingConfig[nCurrentLine].nFullInitReached = 1;
|
||||||
|
|
||||||
|
nErrorCode = DSL_CPE_BND_RemotePafAvailableCheck(fd,
|
||||||
|
(DSL_uint16_t *)&(pBndCtx->lineBondingConfig[nCurrentLine].nRemotePafAvailable));
|
||||||
|
if (nErrorCode != DSL_SUCCESS)
|
||||||
|
{
|
||||||
|
return nErrorCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_ERR, (DSL_CPE_PREFIX
|
||||||
|
"BND - Device=%d remote PAF is %ssupported"
|
||||||
|
DSL_CPE_CRLF, nCurrentLine,
|
||||||
|
pBndCtx->lineBondingConfig[nCurrentLine].nRemotePafAvailable ? "" : "not "));
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Link drop condition */
|
||||||
|
if ((nLineState == DSL_LINESTATE_EXCEPTION) &&
|
||||||
|
(nPrevLineState >= DSL_LINESTATE_IDLE))
|
||||||
|
{
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_MSG, (DSL_CPE_PREFIX
|
||||||
|
"BND - Device=%d link DROP detected"
|
||||||
|
DSL_CPE_CRLF, nCurrentLine));
|
||||||
|
|
||||||
|
pBndCtx->lineBondingConfig[nCurrentLine].nFullInitReached = 0;
|
||||||
|
pBndCtx->lineBondingConfig[nCurrentLine].nRemotePafAvailable = 0;
|
||||||
|
|
||||||
|
if (pBndCtx->lineBondingConfig[nOppositeLine].nPafLineDisabled)
|
||||||
|
{
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_MSG, (DSL_CPE_PREFIX
|
||||||
|
"BND - Device=%d Try to enable opposite line(%d)"
|
||||||
|
DSL_CPE_CRLF, nCurrentLine, nOppositeLine));
|
||||||
|
|
||||||
|
memset(&nAcs, 0x0, sizeof(DSL_AutobootControl_t));
|
||||||
|
nAcs.data.nCommand = DSL_AUTOBOOT_CTRL_ENABLE;
|
||||||
|
|
||||||
|
nErrorCode = DSL_CPE_Ioctl(pBndCtx->pCtrlCtx->fd[nOppositeLine],
|
||||||
|
DSL_FIO_AUTOBOOT_CONTROL_SET, (DSL_int_t) &nAcs);
|
||||||
|
if ((nErrorCode < 0) || (nAcs.accessCtl.nReturn < DSL_SUCCESS))
|
||||||
|
{
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_ERR, (DSL_CPE_PREFIX
|
||||||
|
"DSL_FIO_AUTOBOOT_CONTROL_SET ioctl call failed!" DSL_CPE_CRLF));
|
||||||
|
|
||||||
|
return DSL_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
pBndCtx->lineBondingConfig[nOppositeLine].nPafLineDisabled = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* One bonding line 0 and one non-bonding line 1 connected to the board.
|
||||||
|
* See: DSLCPE_SW-707 Test B Scenario 2
|
||||||
|
*/
|
||||||
|
if (nLineState == DSL_LINESTATE_SILENT)
|
||||||
|
{
|
||||||
|
if (pBndCtx->lineBondingConfig[nOppositeLine].nPafLineDisabled)
|
||||||
|
{
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_MSG, (DSL_CPE_PREFIX
|
||||||
|
"BND - Device=%d Try to enable opposite line(%d)"
|
||||||
|
DSL_CPE_CRLF, nCurrentLine, nOppositeLine));
|
||||||
|
|
||||||
|
memset(&nAcs, 0x0, sizeof(DSL_AutobootControl_t));
|
||||||
|
nAcs.data.nCommand = DSL_AUTOBOOT_CTRL_ENABLE;
|
||||||
|
|
||||||
|
nErrorCode = DSL_CPE_Ioctl(pBndCtx->pCtrlCtx->fd[nOppositeLine],
|
||||||
|
DSL_FIO_AUTOBOOT_CONTROL_SET, (DSL_int_t) &nAcs);
|
||||||
|
if ((nErrorCode < 0) || (nAcs.accessCtl.nReturn < DSL_SUCCESS))
|
||||||
|
{
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_ERR, (DSL_CPE_PREFIX
|
||||||
|
"DSL_FIO_AUTOBOOT_CONTROL_SET ioctl call failed!" DSL_CPE_CRLF));
|
||||||
|
|
||||||
|
return DSL_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
pBndCtx->lineBondingConfig[nOppositeLine].nPafLineDisabled = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* BONDING CLR state*/
|
||||||
|
if (nLineState == DSL_LINESTATE_BONDING_CLR)
|
||||||
|
{
|
||||||
|
nErrorCode = DSL_CPE_BND_BondingCheck(pBndCtx, fd, nDevice);
|
||||||
|
|
||||||
|
if (nErrorCode != DSL_SUCCESS)
|
||||||
|
{
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_ERR, (DSL_CPE_PREFIX
|
||||||
|
"BND - Bonding Check failed, Device=%d" DSL_CPE_CRLF, nDevice));
|
||||||
|
return nErrorCode;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Entry to SHOWTIME */
|
||||||
|
if ( (nLineState == DSL_LINESTATE_SHOWTIME_TC_SYNC) &&
|
||||||
|
(nPrevLineState != DSL_LINESTATE_SHOWTIME_TC_SYNC) )
|
||||||
|
{
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_MSG, (DSL_CPE_PREFIX
|
||||||
|
"BND - Device=%d entering SHOWTIME_TC_SYNC" DSL_CPE_CRLF, nDevice));
|
||||||
|
|
||||||
|
/* Check CL information for RemotePafAvailable */
|
||||||
|
nErrorCode = DSL_CPE_BND_RemotePafAvailableCheck(
|
||||||
|
fd,
|
||||||
|
&(pBndCtx->lineMonitorStateMachine[nDevice].RemotePafAvailable));
|
||||||
|
|
||||||
|
if (nErrorCode != DSL_SUCCESS)
|
||||||
|
{
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_ERR, (DSL_CPE_PREFIX
|
||||||
|
"BND - Remote Paf Check failed, Device=%d" DSL_CPE_CRLF, nDevice));
|
||||||
|
return nErrorCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Check CL information for PafAvailable */
|
||||||
|
nErrorCode = DSL_CPE_BND_LocalPafAvailableCheck(
|
||||||
|
fd,
|
||||||
|
&(pBndCtx->lineMonitorStateMachine[nDevice].PafAvailable));
|
||||||
|
|
||||||
|
if (nErrorCode != DSL_SUCCESS)
|
||||||
|
{
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_ERR, (DSL_CPE_PREFIX
|
||||||
|
"BND - Local Paf Check failed, Device=%d" DSL_CPE_CRLF, nDevice));
|
||||||
|
return nErrorCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* enable/disable bonding */
|
||||||
|
if ((pBndCtx->lineMonitorStateMachine[nDevice].PafAvailable) &&
|
||||||
|
(pBndCtx->lineMonitorStateMachine[nDevice].RemotePafAvailable == 1) &&
|
||||||
|
(pBndCtx->lineMonitorStateMachine[nDevice].PafAggregate == 1) )
|
||||||
|
{
|
||||||
|
pBndCtx->lineMonitorStateMachine[nDevice].PafEnable = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
pBndCtx->lineMonitorStateMachine[nDevice].PafEnable = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Check M/S status*/
|
||||||
|
if (pBndCtx->lineMonitorStateMachine[1-nDevice].MsStatus == DSL_BND_SLAVE)
|
||||||
|
{
|
||||||
|
pBndCtx->lineMonitorStateMachine[nDevice].MsStatus = DSL_BND_MASTER;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (pBndCtx->lineMonitorStateMachine[1-nDevice].PafEnable != 1)
|
||||||
|
{
|
||||||
|
return DSL_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pBndCtx->lineMonitorStateMachine[nDevice].PafEnable != 1)
|
||||||
|
{
|
||||||
|
return DSL_SUCCESS;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if ((nLineState != DSL_LINESTATE_SHOWTIME_TC_SYNC) &&
|
||||||
|
(nPrevLineState == DSL_LINESTATE_SHOWTIME_TC_SYNC) )
|
||||||
|
{
|
||||||
|
/* Exit from SHOWTIME */
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_MSG, (DSL_CPE_PREFIX
|
||||||
|
"BND - Device=%d leaving SHOWTIME_TC_SYNC" DSL_CPE_CRLF, nDevice));
|
||||||
|
|
||||||
|
pBndCtx->lineMonitorStateMachine[nDevice].RemotePafAvailable = 0;
|
||||||
|
|
||||||
|
if (pBndCtx->lineMonitorStateMachine[nDevice].MsStatus == DSL_BND_MASTER)
|
||||||
|
{
|
||||||
|
pBndCtx->lineMonitorStateMachine[nDevice].MsStatus = DSL_BND_SLAVE;
|
||||||
|
|
||||||
|
if ((pBndCtx->lineMonitorStateMachine[nDevice].PafEnable == 1) &&
|
||||||
|
(pBndCtx->lineMonitorStateMachine[1-nDevice].PafEnable == 1) )
|
||||||
|
{
|
||||||
|
/* Exchange line mastership*/
|
||||||
|
pBndCtx->lineMonitorStateMachine[1-nDevice].MsStatus = DSL_BND_MASTER;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (pBndCtx->lineMonitorStateMachine[nDevice].PafEnable != 1)
|
||||||
|
{
|
||||||
|
return DSL_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pBndCtx->lineMonitorStateMachine[1-nDevice].PafEnable != 1)
|
||||||
|
{
|
||||||
|
return DSL_SUCCESS;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return DSL_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
static DSL_Error_t DSL_CPE_BND_HwInit(
|
||||||
|
DSL_CPE_BND_Context_t *pBndCtx,
|
||||||
|
DSL_int_t fd)
|
||||||
|
{
|
||||||
|
DSL_int_t ret = 0;
|
||||||
|
DSL_BND_HwInit_t bndHwInit;
|
||||||
|
|
||||||
|
if (pBndCtx == DSL_NULL)
|
||||||
|
{
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_ERR, (DSL_CPE_PREFIX
|
||||||
|
"BND - HW init: expecting non-zero bonding context pointer!" DSL_CPE_CRLF));
|
||||||
|
return DSL_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_PRN, (DSL_CPE_PREFIX
|
||||||
|
"dsl_cpe_control - VDSL BONDING version!" DSL_CPE_CRLF));
|
||||||
|
|
||||||
|
memset(&bndHwInit, 0x0, sizeof(DSL_BND_HwInit_t));
|
||||||
|
|
||||||
|
ret = DSL_CPE_Ioctl (fd, DSL_FIO_BND_HW_INIT, (int) &bndHwInit);
|
||||||
|
|
||||||
|
if ((ret < 0) || (bndHwInit.accessCtl.nReturn < DSL_SUCCESS))
|
||||||
|
{
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_ERR, (DSL_CPE_PREFIX
|
||||||
|
"BND - DSL_FIO_BND_HW_INIT ioctl call failed!" DSL_CPE_CRLF));
|
||||||
|
|
||||||
|
return DSL_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
return DSL_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
DSL_Error_t DSL_CPE_BND_Start(
|
||||||
|
DSL_CPE_Control_Context_t *pCtrlCtx,
|
||||||
|
DSL_int_t fd)
|
||||||
|
{
|
||||||
|
DSL_Error_t ret = DSL_SUCCESS;
|
||||||
|
DSL_int_t i;
|
||||||
|
DSL_CPE_BND_Context_t *pBndCtx = DSL_NULL;
|
||||||
|
|
||||||
|
if (pCtrlCtx == DSL_NULL)
|
||||||
|
{
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_ERR, (DSL_CPE_PREFIX
|
||||||
|
"BND - missing CPE context pointer pCtrlCtx!" DSL_CPE_CRLF));
|
||||||
|
|
||||||
|
return DSL_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
pBndCtx = DSL_CPE_Malloc(sizeof(DSL_CPE_BND_Context_t));
|
||||||
|
|
||||||
|
if (pBndCtx == DSL_NULL)
|
||||||
|
{
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_ERR, (DSL_CPE_PREFIX
|
||||||
|
"BND - Bonding context memory allocation failed!" DSL_CPE_CRLF));
|
||||||
|
|
||||||
|
return DSL_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
pBndCtx->lineMonitorStateMachine[0].Port = 0;
|
||||||
|
pBndCtx->lineMonitorStateMachine[1].Port = 1;
|
||||||
|
|
||||||
|
for (i = 0; i < DSL_CPE_DSL_ENTITIES; i++)
|
||||||
|
{
|
||||||
|
pBndCtx->lineMonitorStateMachine[i].PafAvailable = -1;
|
||||||
|
pBndCtx->lineMonitorStateMachine[i].RemotePafAvailable = -1;
|
||||||
|
pBndCtx->lineMonitorStateMachine[i].PafAggregate = -1;
|
||||||
|
pBndCtx->lineMonitorStateMachine[i].PafEnable = 0;
|
||||||
|
pBndCtx->lineMonitorStateMachine[i].TxDataRate = 0;
|
||||||
|
|
||||||
|
pBndCtx->lineMonitorStateMachine[i].MsStatus = DSL_BND_SLAVE;
|
||||||
|
|
||||||
|
pBndCtx->lineBondingConfig[i].nFullInitReached = 0;
|
||||||
|
pBndCtx->lineBondingConfig[i].nRemotePafAvailable = 0;
|
||||||
|
pBndCtx->lineBondingConfig[i].nPafLineDisabled = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
memset(&(pBndCtx->remoteDiscoveryCode), 0x0, 6);
|
||||||
|
|
||||||
|
pBndCtx->aggregateReg = 0;
|
||||||
|
pBndCtx->nPafLineHandled = -1;
|
||||||
|
pBndCtx->nPafLineDisabled = -1;
|
||||||
|
pBndCtx->pCtrlCtx = pCtrlCtx;
|
||||||
|
|
||||||
|
/* Initialize Bonding HW*/
|
||||||
|
ret = DSL_CPE_BND_HwInit(pBndCtx, fd);
|
||||||
|
|
||||||
|
if (ret < DSL_SUCCESS)
|
||||||
|
{
|
||||||
|
DSL_CPE_Free(pBndCtx);
|
||||||
|
pCtrlCtx->pBnd = DSL_NULL;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
pCtrlCtx->pBnd = (DSL_void_t*)pBndCtx;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
DSL_void_t DSL_CPE_BND_Stop(
|
||||||
|
DSL_CPE_BND_Context_t *pBndContext)
|
||||||
|
{
|
||||||
|
if (pBndContext != DSL_NULL)
|
||||||
|
{
|
||||||
|
DSL_CPE_Free(pBndContext);
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* INCLUDE_DSL_BONDING*/
|
||||||
172
src/dsl_cpe_bnd_vrx.h
Normal file
172
src/dsl_cpe_bnd_vrx.h
Normal file
|
|
@ -0,0 +1,172 @@
|
||||||
|
/******************************************************************************
|
||||||
|
|
||||||
|
Copyright (c) 2007-2015
|
||||||
|
Lantiq Beteiligungs-GmbH & Co. KG
|
||||||
|
|
||||||
|
For licensing information, see the file 'LICENSE' in the root folder of
|
||||||
|
this software module.
|
||||||
|
|
||||||
|
*******************************************************************************/
|
||||||
|
|
||||||
|
#ifndef _DSL_CPE_BND_VRX_H_
|
||||||
|
#define _DSL_CPE_BND_VRX_H_
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/** \file
|
||||||
|
Bonding implementation/interface for CPE Control Application
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define DSL_CPE_BND_TX_RATE_RATIO_UNITY (0x0100)
|
||||||
|
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
DSL_BND_MASTER = 0,
|
||||||
|
DSL_BND_SLAVE = 1
|
||||||
|
} DSL_CPE_BND_MsStatus_t;
|
||||||
|
|
||||||
|
/*
|
||||||
|
LineMonitorStateMachine
|
||||||
|
*/
|
||||||
|
typedef struct {
|
||||||
|
DSL_uint16_t Port;
|
||||||
|
DSL_uint16_t PafAvailable;
|
||||||
|
DSL_uint16_t RemotePafAvailable;
|
||||||
|
DSL_uint16_t PafAggregate;
|
||||||
|
DSL_uint16_t PafEnable;
|
||||||
|
DSL_uint32_t TxDataRate;
|
||||||
|
DSL_CPE_BND_MsStatus_t MsStatus;
|
||||||
|
} DSL_CPE_BND_LineMonitorStateMachine_t;
|
||||||
|
|
||||||
|
/*
|
||||||
|
LineBondingConfiguration
|
||||||
|
*/
|
||||||
|
typedef struct {
|
||||||
|
/**
|
||||||
|
Indicates that a line has reached FULL_INIT during link activation handling.
|
||||||
|
SET : It will be set (to 1) for the current line in case of current line
|
||||||
|
reaches FULL_INIT line state (0x380).
|
||||||
|
RESET: It will be (unconditionally) reset (to 0) for the current line in
|
||||||
|
case of link drop happens on current line.
|
||||||
|
\note Link drop condition will be detected at its earliest possible
|
||||||
|
link activation handling state. */
|
||||||
|
DSL_boolean_t nFullInitReached;
|
||||||
|
/**
|
||||||
|
Indicates that a line received information from CO side that PAF is supported
|
||||||
|
SET : It will be set (to 1) for the current line if nFullInitReached for
|
||||||
|
the current line equals 1 and RemotePafAvailableCheck indicates that
|
||||||
|
the CO supports PAF (bonding)
|
||||||
|
RESET: It will be (unconditionally) reset (to 0) for the current line in
|
||||||
|
case of link drop happens on current line.
|
||||||
|
\note Link drop condition will be detected at its earliest possible
|
||||||
|
link activation handling state. */
|
||||||
|
DSL_boolean_t nRemotePafAvailable;
|
||||||
|
/**
|
||||||
|
Indicates that a line was disabled due to PAF configuration mismatch between both lines.
|
||||||
|
SET : It will be set (to 1) for a line in case of PAF (bonding) mismatch is
|
||||||
|
detected. Depending on the current line activation process it could
|
||||||
|
be applied to the current or the opposite line. The line for which
|
||||||
|
this flag is set will be also disabled.
|
||||||
|
RESET: It will be (unconditionally) reset (to 0) for the opposite line in
|
||||||
|
case of linkdrop happens on current line. In case of opposite line is
|
||||||
|
currently disabled it will be re-activated again.
|
||||||
|
\note Link drop condition will be detected at its earliest possible
|
||||||
|
link activation handling state. */
|
||||||
|
DSL_boolean_t nPafLineDisabled;
|
||||||
|
} DSL_CPE_BND_LineBondingConfiguration_t;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Bonding Context
|
||||||
|
*/
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
Line Monitor SM data*/
|
||||||
|
DSL_CPE_BND_LineMonitorStateMachine_t
|
||||||
|
lineMonitorStateMachine[DSL_CPE_MAX_DSL_ENTITIES];
|
||||||
|
/**
|
||||||
|
Remote discovery code*/
|
||||||
|
DSL_uint8_t remoteDiscoveryCode[6];
|
||||||
|
/**
|
||||||
|
Aggregate data state*/
|
||||||
|
DSL_uint32_t aggregateReg;
|
||||||
|
/**
|
||||||
|
CPE API Control Context*/
|
||||||
|
DSL_CPE_Control_Context_t *pCtrlCtx;
|
||||||
|
/**
|
||||||
|
TBD*/
|
||||||
|
DSL_PortMode_t nPortMode;
|
||||||
|
/**
|
||||||
|
TBD*/
|
||||||
|
DSL_boolean_t bFwRequested[DSL_CPE_MAX_DSL_ENTITIES];
|
||||||
|
/**
|
||||||
|
TBD*/
|
||||||
|
DSL_boolean_t bInitialFwRequestHandled;
|
||||||
|
/**
|
||||||
|
Paf line num firts reach FULL_INIT*/
|
||||||
|
DSL_int8_t nPafLineHandled;
|
||||||
|
/**
|
||||||
|
Line num was disabled by absent Paf*/
|
||||||
|
DSL_int8_t nPafLineDisabled;
|
||||||
|
DSL_CPE_BND_LineBondingConfiguration_t lineBondingConfig[DSL_CPE_MAX_DSL_ENTITIES];
|
||||||
|
} DSL_CPE_BND_Context_t;
|
||||||
|
|
||||||
|
/*
|
||||||
|
Function to start Bonding handling
|
||||||
|
*/
|
||||||
|
DSL_Error_t DSL_CPE_BND_Start(
|
||||||
|
DSL_CPE_Control_Context_t *pCtrlCtx,
|
||||||
|
DSL_int_t fd);
|
||||||
|
|
||||||
|
/*
|
||||||
|
Function to stop Bonding handling
|
||||||
|
*/
|
||||||
|
DSL_void_t DSL_CPE_BND_Stop(
|
||||||
|
DSL_CPE_BND_Context_t *pBndContext);
|
||||||
|
|
||||||
|
/*
|
||||||
|
Function to check the remote PAF status
|
||||||
|
*/
|
||||||
|
DSL_Error_t DSL_CPE_BND_RemotePafAvailableCheck(
|
||||||
|
DSL_int_t fd,
|
||||||
|
DSL_uint16_t *pRemotePafAvailable);
|
||||||
|
/*
|
||||||
|
Bonding handling for the Autoboot Restart Wait state
|
||||||
|
*/
|
||||||
|
DSL_Error_t DSL_CPE_BND_AutobootStatusRestartWait(
|
||||||
|
DSL_CPE_BND_Context_t *pBndCtx,
|
||||||
|
DSL_uint_t nDevice);
|
||||||
|
|
||||||
|
/*
|
||||||
|
Firmware Download for bonding
|
||||||
|
*/
|
||||||
|
DSL_Error_t DSL_CPE_BND_SyncDownloadFirmware(
|
||||||
|
DSL_CPE_BND_Context_t *pBndCtx,
|
||||||
|
DSL_int_t nDevice,
|
||||||
|
DSL_FirmwareRequestType_t nFwReqType,
|
||||||
|
DSL_PortMode_t nPortMode);
|
||||||
|
|
||||||
|
/*
|
||||||
|
Bonding handling for the Line State change
|
||||||
|
*/
|
||||||
|
DSL_Error_t DSL_CPE_BND_LineStateHandle(
|
||||||
|
DSL_CPE_BND_Context_t *pBndCtx,
|
||||||
|
DSL_int_t fd, DSL_uint_t nDevice,
|
||||||
|
DSL_LineStateValue_t nLineState,
|
||||||
|
DSL_LineStateValue_t nPrevLineState);
|
||||||
|
|
||||||
|
/*
|
||||||
|
Bonding handling for the System Interface status notification
|
||||||
|
*/
|
||||||
|
DSL_Error_t DSL_CPE_BND_SystemInterfaceStatusHandle(
|
||||||
|
DSL_CPE_BND_Context_t *pBndCtx,
|
||||||
|
DSL_int_t fd,
|
||||||
|
DSL_uint_t nDevice);
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* _DSL_CPE_BND_VRX_H_ */
|
||||||
1372
src/dsl_cpe_cli.c
Normal file
1372
src/dsl_cpe_cli.c
Normal file
File diff suppressed because it is too large
Load diff
235
src/dsl_cpe_cli.h
Normal file
235
src/dsl_cpe_cli.h
Normal file
|
|
@ -0,0 +1,235 @@
|
||||||
|
/******************************************************************************
|
||||||
|
|
||||||
|
Copyright 2018, Intel Corporation
|
||||||
|
|
||||||
|
Copyright (c) 2007-2015
|
||||||
|
Lantiq Beteiligungs-GmbH & Co. KG
|
||||||
|
|
||||||
|
For licensing information, see the file 'LICENSE' in the root folder of
|
||||||
|
this software module.
|
||||||
|
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
#ifndef DSL_CPE_CLI_H
|
||||||
|
#define DSL_CPE_CLI_H
|
||||||
|
|
||||||
|
/** \file
|
||||||
|
DSL CPE API command line interface
|
||||||
|
*/
|
||||||
|
#include "drv_dsl_cpe_api_error.h"
|
||||||
|
#include "dsl_cpe_safec_wrapper.h"
|
||||||
|
|
||||||
|
/** maximum arguments, used for spawning a shell with external commands */
|
||||||
|
#define DSL_MAX_ARGS 16
|
||||||
|
|
||||||
|
#ifdef DSL_CPE_DEBUG_DISABLE
|
||||||
|
#define USAGE "" DSL_CPE_CRLF
|
||||||
|
#endif /* DSL_CPE_DEBUG_DISABLE */
|
||||||
|
|
||||||
|
#if defined(INCLUDE_DSL_CPE_CLI_SUPPORT) | 1
|
||||||
|
|
||||||
|
/** device mask */
|
||||||
|
#define DSL_CPE_MASK_DEVICE 0x0001
|
||||||
|
/** g997 mask */
|
||||||
|
#define DSL_CPE_MASK_G997 0x0002
|
||||||
|
/** PM mask */
|
||||||
|
#define DSL_CPE_MASK_PM 0x0004
|
||||||
|
/** BND (bonding) mask */
|
||||||
|
#define DSL_CPE_MASK_BND 0x0080
|
||||||
|
/** DSM (Digital Spectrum Management/vectoring) mask */
|
||||||
|
#define DSL_CPE_MASK_DSM 0x0010
|
||||||
|
|
||||||
|
#define DSL_CPE_MASK_ALL (DSL_CPE_MASK_DEVICE | DSL_CPE_MASK_G997 | \
|
||||||
|
DSL_CPE_MASK_PM | DSL_CPE_MASK_BND | \
|
||||||
|
DSL_CPE_MASK_DSM)
|
||||||
|
|
||||||
|
/** detailed information (-h) */
|
||||||
|
#define DSL_CPE_MASK_DETAILED 0x4000
|
||||||
|
/** long form of the command */
|
||||||
|
#define DSL_CPE_MASK_LONG 0x8000
|
||||||
|
/** Deprecated CLI functions */
|
||||||
|
#define DSL_CPE_MASK_DEPRECATED 0x10000
|
||||||
|
/** Commands available after Power Down mask */
|
||||||
|
#define DSL_CPE_MASK_AFTER_POWER_DOWN 0x20000
|
||||||
|
|
||||||
|
#define DSL_CPE_CLI_CMD_ADD_COMM(short_name, long_name, pFunc, pHelp) \
|
||||||
|
DSL_CPE_CLI_CommandAdd(short_name, long_name, pFunc, pHelp, 0x0, NULL)
|
||||||
|
|
||||||
|
#define DSL_CPE_CLI_CMD_ADD_DEVICE(short_name, long_name, pFunc, pHelp) \
|
||||||
|
DSL_CPE_CLI_CommandAdd(short_name, long_name, pFunc, pHelp, 0x0, DSL_CPE_CLI_PrintHelpDevice)
|
||||||
|
|
||||||
|
#define DSL_CPE_CLI_CMD_ADD_DEVICE_1ARG(short_name, long_name, pFunc, pHelp) \
|
||||||
|
DSL_CPE_CLI_CommandAdd(short_name, long_name, pFunc, pHelp, 0x0, DSL_CPE_CLI_PrintHelpDevice1Arg)
|
||||||
|
|
||||||
|
#define DSL_CPE_CLI_CMD_ADD_DEPR(short_name, long_name, pFunc, pHelp) \
|
||||||
|
DSL_CPE_CLI_CommandAdd(short_name, long_name, pFunc, pHelp, DSL_CPE_MASK_DEPRECATED)
|
||||||
|
|
||||||
|
#define DSL_CPE_RET "nReturn=%d%s "
|
||||||
|
#define DSL_CPE_RET_VAL(ret) ret, DSL_CPE_Fd2DevStr(fd)
|
||||||
|
/** Callback for custom Help display **/
|
||||||
|
typedef DSL_Error_t (* DSL_CPE_CLI_PrintHelpCallback_t)(const DSL_char_t *psHelp,
|
||||||
|
DSL_char_t *psCmdLong,
|
||||||
|
DSL_char_t *psCmdShort,
|
||||||
|
DSL_uint32_t nCmdMask,
|
||||||
|
DSL_CPE_File_t *out);
|
||||||
|
|
||||||
|
/** Context for a registered CLI */
|
||||||
|
typedef struct DSL_CLI_Context DSL_CLI_Context_t;
|
||||||
|
/** buffer for preparing event text decoding */
|
||||||
|
extern DSL_char_t CLI_EventText[16000];
|
||||||
|
|
||||||
|
/** Exit callback with private pointer.
|
||||||
|
(pointer can be defined with \ref DSL_CPE_CLI_Register) */
|
||||||
|
typedef DSL_Error_t (*DSL_CPE_Exit_Callback_t) ( DSL_void_t* );
|
||||||
|
/** Event callback with private pointer (from \ref DSL_CPE_CLI_Register)
|
||||||
|
and text of decoded event */
|
||||||
|
typedef DSL_Error_t (*DSL_CLI_Event_Callback_t) ( DSL_void_t*, DSL_char_t* );
|
||||||
|
|
||||||
|
DSL_Error_t DSL_CPE_CLI_CommandAdd
|
||||||
|
(
|
||||||
|
DSL_char_t *name,
|
||||||
|
DSL_char_t *long_form,
|
||||||
|
DSL_int_t (*func)(DSL_int_t, DSL_char_t*, DSL_CPE_File_t*),
|
||||||
|
const DSL_char_t *psHelp,
|
||||||
|
DSL_uint32_t nCmdSortMask,
|
||||||
|
DSL_CPE_CLI_PrintHelpCallback_t printCallback
|
||||||
|
);
|
||||||
|
|
||||||
|
DSL_Error_t DSL_CPE_CLI_CommandClear(DSL_void_t);
|
||||||
|
|
||||||
|
DSL_void_t DSL_CPE_CLI_AccessCommandsRegister(DSL_void_t);
|
||||||
|
|
||||||
|
DSL_int_t DSL_CPE_CLI_CommandExecute
|
||||||
|
(
|
||||||
|
DSL_int_t fd,
|
||||||
|
DSL_char_t *cmd,
|
||||||
|
DSL_char_t *arg,
|
||||||
|
DSL_CPE_File_t *out
|
||||||
|
);
|
||||||
|
|
||||||
|
char *DSL_CPE_CLI_WhitespaceRemove(char *str);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Checks if the command string includes option to display help text.
|
||||||
|
|
||||||
|
\param pCommands
|
||||||
|
user command line arguments
|
||||||
|
|
||||||
|
\return
|
||||||
|
returns 0 in case of no help request or any other value if help is
|
||||||
|
requested from user.
|
||||||
|
*/
|
||||||
|
DSL_int_t DSL_CPE_CLI_CheckHelp (const DSL_char_t * pCommands);
|
||||||
|
|
||||||
|
DSL_int_t DSL_CPE_CLI_HelpPrint
|
||||||
|
(
|
||||||
|
DSL_int_t fd,
|
||||||
|
DSL_char_t *,
|
||||||
|
DSL_CPE_File_t*
|
||||||
|
);
|
||||||
|
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
DSL_CLI_EQUALS = 0,
|
||||||
|
DSL_CLI_MIN,
|
||||||
|
DSL_CLI_MAX
|
||||||
|
} DSL_CLI_ParamCheckType_t;
|
||||||
|
|
||||||
|
/**
|
||||||
|
This structure is used to get resource usage statistics
|
||||||
|
data
|
||||||
|
*/
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
Total memory allocated statically (bytes) */
|
||||||
|
DSL_uint32_t staticMemUsage;
|
||||||
|
/**
|
||||||
|
Total memory allocated dynamically (bytes) */
|
||||||
|
DSL_uint32_t dynamicMemUsage;
|
||||||
|
} DSL_CLI_ResourceUsageStatisticsData_t;
|
||||||
|
|
||||||
|
|
||||||
|
DSL_boolean_t DSL_CPE_CLI_CheckParamNumber
|
||||||
|
(
|
||||||
|
DSL_char_t *pCommands,
|
||||||
|
DSL_int_t nParams,
|
||||||
|
DSL_CLI_ParamCheckType_t nCheckType
|
||||||
|
);
|
||||||
|
|
||||||
|
DSL_Error_t DSL_CPE_CLI_Init(DSL_void_t);
|
||||||
|
DSL_Error_t DSL_CPE_CLI_Shutdown(DSL_void_t);
|
||||||
|
DSL_Error_t DSL_CPE_CLI_HandleEvent(DSL_char_t *pMsg);
|
||||||
|
#ifdef INCLUDE_DSL_RESOURCE_STATISTICS
|
||||||
|
DSL_Error_t DSL_CPE_CLI_ResourceUsageGet(
|
||||||
|
DSL_CLI_ResourceUsageStatisticsData_t *pData);
|
||||||
|
#endif /* INCLUDE_DSL_RESOURCE_STATISTICS*/
|
||||||
|
|
||||||
|
DSL_Error_t DSL_CPE_CLI_Register
|
||||||
|
(
|
||||||
|
DSL_CLI_Context_t **pNewCLIContext,
|
||||||
|
DSL_void_t *pCBContext,
|
||||||
|
DSL_CPE_Exit_Callback_t pExitCallback,
|
||||||
|
DSL_CLI_Event_Callback_t pEventCallback
|
||||||
|
);
|
||||||
|
|
||||||
|
#if defined(INCLUDE_DSL_API_CONSOLE_EXTRA) || defined(INCLUDE_DSL_CPE_DTI_SUPPORT)
|
||||||
|
DSL_Error_t DSL_CPE_CLI_Unregister(DSL_CLI_Context_t *pCLIContext);
|
||||||
|
#endif /* #if defined(INCLUDE_DSL_API_CONSOLE_EXTRA) || defined(INCLUDE_DSL_CPE_DTI_SUPPORT)*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
Read the firmware binary from file system.
|
||||||
|
|
||||||
|
\param sFirmwareName Firmware binary file name [I]
|
||||||
|
\param pFirmware Firmware binary data [O]
|
||||||
|
\param nFirmwareSize Firmware size [O]
|
||||||
|
|
||||||
|
\remark
|
||||||
|
The data memory will be allocated via DSL_CPE_Malloc() .
|
||||||
|
It should be freed after usage with DSL_CPE_Free() .
|
||||||
|
|
||||||
|
\return
|
||||||
|
- DSL_ERROR On error
|
||||||
|
- DSL_SUCCESS Binary loaded successfully into the memory
|
||||||
|
*/
|
||||||
|
DSL_Error_t DSL_FirmwareLoad
|
||||||
|
(
|
||||||
|
DSL_char_t const *sFirmwareName,
|
||||||
|
DSL_uint8_t **pFirmware,
|
||||||
|
DSL_uint32_t *nFirmwareSize
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Write a binary to the file system.
|
||||||
|
|
||||||
|
\param sFirmwareName Firmware binary file name [I]
|
||||||
|
\param pFirmware Firmware binary data [I]
|
||||||
|
\param nFirmwareSize Firmware size [I]
|
||||||
|
|
||||||
|
\return
|
||||||
|
- DSL_ERROR On error
|
||||||
|
- DSL_SUCCESS Binary loaded successfully into the memory
|
||||||
|
*/
|
||||||
|
DSL_Error_t DSL_FirmwareWrite
|
||||||
|
(
|
||||||
|
DSL_char_t const *sFirmwareName,
|
||||||
|
DSL_uint8_t *pFirmware,
|
||||||
|
DSL_uint32_t nFirmwareSize
|
||||||
|
);
|
||||||
|
|
||||||
|
DSL_Error_t DSL_CPE_CLI_PrintHelpDevice(
|
||||||
|
const DSL_char_t *psHelp,
|
||||||
|
DSL_char_t *psCmdLong,
|
||||||
|
DSL_char_t *psCmdShort,
|
||||||
|
DSL_uint32_t nCmdMask,
|
||||||
|
DSL_CPE_File_t *out);
|
||||||
|
DSL_Error_t DSL_CPE_CLI_PrintHelpDevice1Arg(
|
||||||
|
const DSL_char_t *psHelp,
|
||||||
|
DSL_char_t *psCmdLong,
|
||||||
|
DSL_char_t *psCmdShort,
|
||||||
|
DSL_uint32_t nCmdMask,
|
||||||
|
DSL_CPE_File_t *out);
|
||||||
|
#endif /* INCLUDE_DSL_CPE_CLI_SUPPORT */
|
||||||
|
|
||||||
|
#endif /* DSL_CPE_CLI_H */
|
||||||
|
|
||||||
13186
src/dsl_cpe_cli_access.c
Normal file
13186
src/dsl_cpe_cli_access.c
Normal file
File diff suppressed because it is too large
Load diff
3516
src/dsl_cpe_cli_access2.c
Normal file
3516
src/dsl_cpe_cli_access2.c
Normal file
File diff suppressed because it is too large
Load diff
11451
src/dsl_cpe_cli_autogen.c
Normal file
11451
src/dsl_cpe_cli_autogen.c
Normal file
File diff suppressed because it is too large
Load diff
664
src/dsl_cpe_cli_console.c
Normal file
664
src/dsl_cpe_cli_console.c
Normal file
|
|
@ -0,0 +1,664 @@
|
||||||
|
/******************************************************************************
|
||||||
|
|
||||||
|
Copyright 2018, Intel Corporation
|
||||||
|
|
||||||
|
Copyright (c) 2007-2015
|
||||||
|
Lantiq Beteiligungs-GmbH & Co. KG
|
||||||
|
|
||||||
|
For licensing information, see the file 'LICENSE' in the root folder of
|
||||||
|
this software module.
|
||||||
|
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
/** \file
|
||||||
|
DSL daemon command line interface for console (single key input)
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*#define DEBUG_CONSOLE*/
|
||||||
|
|
||||||
|
/*#define DSL_INTERN*/
|
||||||
|
|
||||||
|
#include "dsl_cpe_control.h"
|
||||||
|
#include "dsl_cpe_os.h"
|
||||||
|
#include "dsl_cpe_cli.h"
|
||||||
|
#include "dsl_cpe_cli_console.h"
|
||||||
|
#include "drv_dsl_cpe_api_error.h"
|
||||||
|
|
||||||
|
#ifdef INCLUDE_DSL_CPE_CLI_SUPPORT
|
||||||
|
|
||||||
|
#undef DSL_CCA_DBG_BLOCK
|
||||||
|
#define DSL_CCA_DBG_BLOCK DSL_CCA_DBG_CONSOLE
|
||||||
|
|
||||||
|
#define KEY_INPUT_NONE 0
|
||||||
|
#define KEY_INPUT_ENTER 1
|
||||||
|
#define KEY_INPUT_BS 2
|
||||||
|
#define KEY_INPUT_UP 3
|
||||||
|
#define KEY_INPUT_DOWN 4
|
||||||
|
#define KEY_INPUT_CHAR 5
|
||||||
|
|
||||||
|
#define DSL_CPE_MAX_CLI_LEN 1024
|
||||||
|
|
||||||
|
#ifndef WIN32
|
||||||
|
#define BOLD "\033[1;30m"
|
||||||
|
#define NORMAL "\033[0m"
|
||||||
|
#define CLREOL "\033[K"
|
||||||
|
#else
|
||||||
|
#define BOLD ""
|
||||||
|
#define NORMAL ""
|
||||||
|
#define CLREOL ""
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static DSL_Error_t DSL_CPE_Console_Exit
|
||||||
|
(
|
||||||
|
DSL_void_t *pContext
|
||||||
|
);
|
||||||
|
|
||||||
|
static DSL_Error_t DSL_CPE_Console_EventCallback
|
||||||
|
(
|
||||||
|
DSL_void_t *pContext,
|
||||||
|
DSL_char_t *pMsg
|
||||||
|
);
|
||||||
|
|
||||||
|
static DSL_int_t DSL_CPE_CommandLineRead
|
||||||
|
(
|
||||||
|
DSL_char_t *str,
|
||||||
|
DSL_uint32_t len,
|
||||||
|
DSL_CPE_File_t *in,
|
||||||
|
DSL_CPE_File_t * out
|
||||||
|
);
|
||||||
|
|
||||||
|
/******************************************************************************/
|
||||||
|
|
||||||
|
#ifdef INCLUDE_DSL_API_CONSOLE_EXTRA
|
||||||
|
DSL_Error_t run_dsl_cpe_console(int fd)
|
||||||
|
{
|
||||||
|
DSL_CPE_Console_Context_t *pConsoleContext = DSL_NULL;
|
||||||
|
DSL_Error_t ret = DSL_SUCCESS;
|
||||||
|
DSL_CPE_Control_Context_t *pContext = DSL_CPE_GetGlobalContext ( );
|
||||||
|
#ifdef VXWORKS
|
||||||
|
DSL_int_t i;
|
||||||
|
DSL_int_t stdfds[3];
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (pContext == DSL_NULL)
|
||||||
|
{
|
||||||
|
DSL_CPE_FPrintf (DSL_CPE_STDOUT, DSL_CPE_PREFIX "'dsl_cpe_control' not running! Exit..." DSL_CPE_CRLF );
|
||||||
|
return DSL_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef VXWORKS
|
||||||
|
/* FIXME: make sure that this console runs on the serial port (fd 3) */
|
||||||
|
for (i = 0; i < 3; ++i)
|
||||||
|
{
|
||||||
|
stdfds[i] = ioTaskStdGet(0,i);
|
||||||
|
if (stdfds[i] != ERROR)
|
||||||
|
ioTaskStdSet(0,i,3);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (DSL_CPE_CLI_Init () == DSL_ERROR)
|
||||||
|
{
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_ERR, (DSL_CPE_PREFIX
|
||||||
|
"'DSL_CPE_CLI_Init' failed" DSL_CPE_CRLF));
|
||||||
|
goto console_exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (DSL_CPE_Console_Init (&pConsoleContext, pContext, DSL_CPE_STDIN, DSL_CPE_STDOUT) ==
|
||||||
|
DSL_ERROR)
|
||||||
|
{
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_ERR, (DSL_CPE_PREFIX
|
||||||
|
"'DSL_CPE_Console_Init' failed! Exit..." DSL_CPE_CRLF));
|
||||||
|
ret = DSL_ERROR;
|
||||||
|
goto console_exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
ret = DSL_CPE_Handle_Console (pConsoleContext);
|
||||||
|
}
|
||||||
|
while (ret != DSL_ERROR);
|
||||||
|
|
||||||
|
if (DSL_CPE_Console_Shutdown (pConsoleContext) == DSL_ERROR)
|
||||||
|
{
|
||||||
|
ret = DSL_ERROR;
|
||||||
|
goto console_exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
console_exit:
|
||||||
|
|
||||||
|
#ifdef VXWORKS
|
||||||
|
/* restore stdio */
|
||||||
|
for (i = 0; i < 3; ++i)
|
||||||
|
{
|
||||||
|
if (stdfds[i] != ERROR)
|
||||||
|
ioTaskStdSet(0,i,stdfds[i]);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
DSL_Error_t DSL_CPE_Console_Init (DSL_CPE_Console_Context_t ** pConsoleRefContext,
|
||||||
|
DSL_CPE_Control_Context_t *pContext, DSL_CPE_File_t * in,
|
||||||
|
DSL_CPE_File_t * out)
|
||||||
|
{
|
||||||
|
DSL_CPE_Console_Context_t *pConsoleContext;
|
||||||
|
|
||||||
|
if (*pConsoleRefContext != DSL_NULL)
|
||||||
|
{
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_ERR, (DSL_CPE_PREFIX
|
||||||
|
"expecting zero context pointer '*pConsoleRefContext'" DSL_CPE_CRLF));
|
||||||
|
return DSL_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
*pConsoleRefContext = malloc (sizeof (DSL_CPE_Console_Context_t));
|
||||||
|
if (*pConsoleRefContext == DSL_NULL)
|
||||||
|
{
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_ERR, (DSL_CPE_PREFIX
|
||||||
|
"no memory for '*pConsoleRefContext'" DSL_CPE_CRLF));
|
||||||
|
return DSL_ERROR;
|
||||||
|
}
|
||||||
|
pConsoleContext = *pConsoleRefContext;
|
||||||
|
|
||||||
|
memset (pConsoleContext, 0x00, sizeof (*pConsoleContext));
|
||||||
|
pConsoleContext->pContext = pContext;
|
||||||
|
pConsoleContext->file_in = in;
|
||||||
|
pConsoleContext->file_out = out;
|
||||||
|
pConsoleContext->bRun = DSL_TRUE;
|
||||||
|
|
||||||
|
if (out == DSL_CPE_STDOUT)
|
||||||
|
DSL_CPE_EchoOff ();
|
||||||
|
if (in == DSL_CPE_STDIN)
|
||||||
|
DSL_CPE_KeypressSet ();
|
||||||
|
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_PRN, (DSL_CPE_PREFIX
|
||||||
|
"Welcome to the CLI interface of DSL CPE API" DSL_CPE_CRLF));
|
||||||
|
#ifdef INCLUDE_DSL_API_CONSOLE_EXTRA
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_PRN, (DSL_CPE_PREFIX
|
||||||
|
"Enter 'bye' to close console only." DSL_CPE_CRLF));
|
||||||
|
#endif
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_PRN, (DSL_CPE_PREFIX
|
||||||
|
"Enter 'help all' for a list of built-in commands." DSL_CPE_CRLF));
|
||||||
|
|
||||||
|
DSL_CPE_CLI_Register(&pConsoleContext->pCLIContext, pConsoleContext,
|
||||||
|
DSL_CPE_Console_Exit, DSL_CPE_Console_EventCallback);
|
||||||
|
|
||||||
|
#ifdef RTEMS
|
||||||
|
gv_pConsoleContext = pConsoleContext;
|
||||||
|
#endif /* RTEMS*/
|
||||||
|
|
||||||
|
return DSL_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
DSL_Error_t DSL_CPE_Console_Shutdown (DSL_CPE_Console_Context_t * pConsoleContext)
|
||||||
|
{
|
||||||
|
#ifdef INCLUDE_DSL_API_CONSOLE_EXTRA
|
||||||
|
if (DSL_CPE_CLI_Unregister(pConsoleContext->pCLIContext) == DSL_SUCCESS)
|
||||||
|
{
|
||||||
|
free(pConsoleContext->pCLIContext);
|
||||||
|
pConsoleContext->pCLIContext = DSL_NULL;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
if (pConsoleContext->file_in == DSL_CPE_STDIN)
|
||||||
|
DSL_CPE_KeypressReset ();
|
||||||
|
if (pConsoleContext->file_out == DSL_CPE_STDOUT)
|
||||||
|
DSL_CPE_EchoOn ();
|
||||||
|
|
||||||
|
free(pConsoleContext);
|
||||||
|
pConsoleContext = DSL_NULL;
|
||||||
|
|
||||||
|
return DSL_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
static DSL_Error_t DSL_CPE_Console_Exit (DSL_void_t * pContext)
|
||||||
|
{
|
||||||
|
DSL_CPE_Console_Context_t *pConsoleContext = pContext;
|
||||||
|
#ifdef DEBUG_CONSOLE
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_MSG, (DSL_CPE_PREFIX
|
||||||
|
"DSL_CPE_Console_Exit() called" DSL_CPE_CRLF));
|
||||||
|
#endif
|
||||||
|
pConsoleContext->pCLIContext = DSL_NULL;
|
||||||
|
pConsoleContext->bRun = DSL_FALSE;
|
||||||
|
return DSL_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
static DSL_Error_t DSL_CPE_Console_EventCallback(
|
||||||
|
DSL_void_t *pContext,
|
||||||
|
DSL_char_t *pMsg)
|
||||||
|
{
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_PRN, ("%s" DSL_CPE_CRLF, pMsg));
|
||||||
|
|
||||||
|
return DSL_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Read command line.
|
||||||
|
|
||||||
|
\param str Destination pointer for command line
|
||||||
|
\param len Maximum length of command line
|
||||||
|
\param in File for key input (e.g. DSL_CPE_STDIN)
|
||||||
|
\param out File for output (e.g. DSL_CPE_STDOUT)
|
||||||
|
|
||||||
|
\return
|
||||||
|
Length of command string
|
||||||
|
*/
|
||||||
|
static DSL_int_t DSL_CPE_CommandLineRead(
|
||||||
|
DSL_char_t *str,
|
||||||
|
DSL_uint32_t len,
|
||||||
|
DSL_CPE_File_t *in,
|
||||||
|
DSL_CPE_File_t *out)
|
||||||
|
{
|
||||||
|
char c, echo;
|
||||||
|
int read_len;
|
||||||
|
int blank_cnt = 0;
|
||||||
|
int first = 1;
|
||||||
|
int ret = KEY_INPUT_CHAR;
|
||||||
|
|
||||||
|
if (strlen (str))
|
||||||
|
first = 0;
|
||||||
|
|
||||||
|
len -= strlen (str);
|
||||||
|
str += strlen (str);
|
||||||
|
|
||||||
|
while (len--)
|
||||||
|
{
|
||||||
|
echo = 0;
|
||||||
|
read_len = DSL_CPE_FRead (&c, 1, 1, in);
|
||||||
|
|
||||||
|
if (read_len == 0)
|
||||||
|
{
|
||||||
|
if (DSL_CPE_Feof (in))
|
||||||
|
ret = KEY_INPUT_NONE;
|
||||||
|
goto KEY_FINISH;
|
||||||
|
}
|
||||||
|
#ifdef DEBUG_CONSOLE
|
||||||
|
else
|
||||||
|
DSL_CPE_FPrintf(DSL_CPE_STDOUT, DSL_CPE_CRLF " no EOF from getc()" DSL_CPE_CRLF );
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (first && (c == ' '))
|
||||||
|
{
|
||||||
|
len++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
first = 0;
|
||||||
|
|
||||||
|
if (c != ' ')
|
||||||
|
{
|
||||||
|
blank_cnt = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (c)
|
||||||
|
{
|
||||||
|
default:
|
||||||
|
echo = c;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ' ':
|
||||||
|
if (blank_cnt)
|
||||||
|
{
|
||||||
|
len++;
|
||||||
|
str--;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
echo = ' ';
|
||||||
|
}
|
||||||
|
blank_cnt++;
|
||||||
|
break;
|
||||||
|
|
||||||
|
/* backspace */
|
||||||
|
case 127: /* BS in Linux Terminal */
|
||||||
|
case 8: /* BS in TTY */
|
||||||
|
#ifdef DEBUG_CONSOLE
|
||||||
|
DSL_CPE_FPrintf(DSL_CPE_STDOUT, DSL_CPE_CRLF" DEL" DSL_CPE_CRLF );
|
||||||
|
#endif
|
||||||
|
len++;
|
||||||
|
str--;
|
||||||
|
ret = KEY_INPUT_BS;
|
||||||
|
goto KEY_FINISH;
|
||||||
|
|
||||||
|
/* tab */
|
||||||
|
case 9:
|
||||||
|
#ifdef DEBUG_CONSOLE
|
||||||
|
DSL_CPE_FPrintf(DSL_CPE_STDOUT, DSL_CPE_CRLF " TAB" DSL_CPE_CRLF );
|
||||||
|
#endif
|
||||||
|
break;
|
||||||
|
|
||||||
|
case '\n':
|
||||||
|
DSL_CPE_PutChar ('\n', out);
|
||||||
|
DSL_CPE_FFlush (out);
|
||||||
|
ret = KEY_INPUT_ENTER;
|
||||||
|
goto KEY_FINISH;
|
||||||
|
|
||||||
|
case 033:
|
||||||
|
read_len = DSL_CPE_FRead (&c, 1, 1, in);
|
||||||
|
if (read_len == 0)
|
||||||
|
break;
|
||||||
|
switch (c)
|
||||||
|
{
|
||||||
|
case 27:
|
||||||
|
#ifdef DEBUG_CONSOLE
|
||||||
|
DSL_CPE_FPrintf(DSL_CPE_STDOUT, DSL_CPE_CRLF " ESC" DSL_CPE_CRLF );
|
||||||
|
#endif
|
||||||
|
/* escape */
|
||||||
|
break;
|
||||||
|
|
||||||
|
case '[':
|
||||||
|
read_len = DSL_CPE_FRead (&c, 1, 1, in);
|
||||||
|
if (read_len == 0)
|
||||||
|
break;
|
||||||
|
switch (c)
|
||||||
|
{
|
||||||
|
case 'D':
|
||||||
|
/* left */
|
||||||
|
break;
|
||||||
|
case 'C':
|
||||||
|
/* right */
|
||||||
|
break;
|
||||||
|
case 'A':
|
||||||
|
/* up */
|
||||||
|
ret = KEY_INPUT_UP;
|
||||||
|
break;
|
||||||
|
case 'B':
|
||||||
|
/* down */
|
||||||
|
ret = KEY_INPUT_DOWN;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
goto KEY_FINISH;
|
||||||
|
}
|
||||||
|
|
||||||
|
*str++ = c;
|
||||||
|
|
||||||
|
if (echo)
|
||||||
|
DSL_CPE_PutChar (echo, out);
|
||||||
|
|
||||||
|
DSL_CPE_FFlush (out);
|
||||||
|
}
|
||||||
|
|
||||||
|
KEY_FINISH:
|
||||||
|
|
||||||
|
*str++ = 0;
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
This function collects single key input and handles execution of commands.
|
||||||
|
|
||||||
|
\param pConsoleContext Pointer to console context structure, [I]
|
||||||
|
|
||||||
|
\return
|
||||||
|
Return values are defined within the DSL_Error_t definition
|
||||||
|
- DSL_SUCCESS if a command was completely entered and sucessful executed
|
||||||
|
- DSL_ERROR if an error occured or the command "quit" was entered
|
||||||
|
*/
|
||||||
|
DSL_Error_t DSL_CPE_Handle_Console (DSL_CPE_Console_Context_t * pConsoleContext)
|
||||||
|
{
|
||||||
|
DSL_int_t result = 0, len = 0, i = 0;
|
||||||
|
DSL_CPE_File_t *in = pConsoleContext->file_in, *out = pConsoleContext->file_out;
|
||||||
|
|
||||||
|
pConsoleContext->cmd[0] = 0;
|
||||||
|
pConsoleContext->arg[0] = 0;
|
||||||
|
memset (pConsoleContext->arg, 0x00, sizeof (pConsoleContext->arg));
|
||||||
|
|
||||||
|
DSL_CPE_FPrintf(out, "" DSL_CPE_CRLF );
|
||||||
|
|
||||||
|
ARROW_KEY:
|
||||||
|
|
||||||
|
DSL_CPE_FPrintf(out, "\r" CLREOL BOLD "DSL_CPE#>" NORMAL "%s", pConsoleContext->arg);
|
||||||
|
DSL_CPE_FFlush (out);
|
||||||
|
|
||||||
|
i = pConsoleContext->old_idx;
|
||||||
|
|
||||||
|
NEW_LOOP:
|
||||||
|
|
||||||
|
#ifndef RTEMS
|
||||||
|
/* read command line */
|
||||||
|
switch (DSL_CPE_CommandLineRead
|
||||||
|
(pConsoleContext->arg, DSL_MAX_COMMAND_LINE_LENGTH, in, out))
|
||||||
|
{
|
||||||
|
case KEY_INPUT_UP:
|
||||||
|
if (pConsoleContext->old_idx)
|
||||||
|
pConsoleContext->old_idx--;
|
||||||
|
else
|
||||||
|
pConsoleContext->old_idx = MAX_OLD_COMMAND - 1;
|
||||||
|
|
||||||
|
if (strlen (pConsoleContext->old_command[pConsoleContext->old_idx]))
|
||||||
|
{
|
||||||
|
cpe_control_strncpy_s(pConsoleContext->arg,
|
||||||
|
DSL_MAX_COMMAND_LINE_LENGTH,
|
||||||
|
pConsoleContext->old_command[pConsoleContext->old_idx],
|
||||||
|
strlen(pConsoleContext->old_command[pConsoleContext->old_idx]));
|
||||||
|
|
||||||
|
goto ARROW_KEY;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
pConsoleContext->old_idx = i;
|
||||||
|
goto NEW_LOOP;
|
||||||
|
}
|
||||||
|
|
||||||
|
case KEY_INPUT_DOWN:
|
||||||
|
|
||||||
|
if (++pConsoleContext->old_idx >= MAX_OLD_COMMAND)
|
||||||
|
pConsoleContext->old_idx = 0;
|
||||||
|
|
||||||
|
if (strlen (pConsoleContext->old_command[pConsoleContext->old_idx]))
|
||||||
|
{
|
||||||
|
|
||||||
|
if (pConsoleContext->old_idx >= MAX_OLD_COMMAND)
|
||||||
|
pConsoleContext->old_idx = 0;
|
||||||
|
|
||||||
|
cpe_control_strncpy_s(pConsoleContext->arg,
|
||||||
|
DSL_MAX_COMMAND_LINE_LENGTH,
|
||||||
|
pConsoleContext->old_command[pConsoleContext->old_idx],
|
||||||
|
strlen(pConsoleContext->old_command[pConsoleContext->old_idx]));
|
||||||
|
|
||||||
|
|
||||||
|
goto ARROW_KEY;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
pConsoleContext->old_idx = i;
|
||||||
|
goto NEW_LOOP;
|
||||||
|
}
|
||||||
|
|
||||||
|
case KEY_INPUT_BS:
|
||||||
|
/* backspace */
|
||||||
|
goto ARROW_KEY;
|
||||||
|
|
||||||
|
case KEY_INPUT_NONE:
|
||||||
|
if (pConsoleContext->bRun == DSL_FALSE)
|
||||||
|
{
|
||||||
|
/* indicate command "quit" */
|
||||||
|
return DSL_ERROR;
|
||||||
|
/* DSL_CPE_FPrintf(DSL_CPE_STDOUT, "KEY_INPUT_NONE" DSL_CPE_CRLF ); */
|
||||||
|
/* DSL_CPE_Sleep(1); */
|
||||||
|
}
|
||||||
|
goto NEW_LOOP;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pConsoleContext->bRun == DSL_FALSE)
|
||||||
|
/* indicate command "quit" */
|
||||||
|
return DSL_ERROR;
|
||||||
|
#else
|
||||||
|
while(gv_dsl_cli_wait==0)
|
||||||
|
{
|
||||||
|
DSL_CPE_Sleep(1);
|
||||||
|
}
|
||||||
|
gv_dsl_cli_wait = 0;
|
||||||
|
#endif /* RTEMS*/
|
||||||
|
|
||||||
|
/* get command name */
|
||||||
|
sscanf (pConsoleContext->arg, "%"_MKSTR(_DSL_MAX_COMMAND_LINE_LENGTH)"s", pConsoleContext->cmd);
|
||||||
|
|
||||||
|
len = (DSL_int_t) strlen (pConsoleContext->cmd);
|
||||||
|
|
||||||
|
if (len)
|
||||||
|
{
|
||||||
|
#ifdef INCLUDE_DSL_API_CONSOLE_EXTRA
|
||||||
|
if (strcmp(pConsoleContext->cmd, "bye") == 0)
|
||||||
|
{
|
||||||
|
/* indicate command "bye" */
|
||||||
|
return DSL_ERROR;
|
||||||
|
}
|
||||||
|
#endif /* INCLUDE_DSL_API_CONSOLE_EXTRA */
|
||||||
|
|
||||||
|
if (strcmp
|
||||||
|
(pConsoleContext->old_command[pConsoleContext->prev_idx],
|
||||||
|
pConsoleContext->arg) != 0)
|
||||||
|
{
|
||||||
|
cpe_control_strncpy_s(pConsoleContext->old_command[pConsoleContext->idx],
|
||||||
|
sizeof(pConsoleContext->old_command[pConsoleContext->idx]),
|
||||||
|
pConsoleContext->arg, sizeof(pConsoleContext->arg));
|
||||||
|
pConsoleContext->prev_idx = pConsoleContext->idx;
|
||||||
|
if (++pConsoleContext->idx >= MAX_OLD_COMMAND)
|
||||||
|
pConsoleContext->idx = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
pConsoleContext->old_idx = pConsoleContext->idx;
|
||||||
|
|
||||||
|
/* find function by name and execute it */
|
||||||
|
|
||||||
|
result =
|
||||||
|
DSL_CPE_CliDeviceCommandExecute (pConsoleContext->pContext, -1,
|
||||||
|
pConsoleContext->cmd, pConsoleContext->arg + len + 1, out);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (result == 1)
|
||||||
|
{
|
||||||
|
/* indicate command "quit" */
|
||||||
|
return DSL_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
return DSL_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
#if defined(RTEMS) && defined(INCLUDE_DSL_CPE_CLI_SUPPORT)
|
||||||
|
DSL_CPE_Console_Context_t *gv_pConsoleContext = DSL_NULL;
|
||||||
|
DSL_uint32_t gv_dsl_cli_wait=0;
|
||||||
|
|
||||||
|
/******************************************************************************/
|
||||||
|
// call from cpe_test.c
|
||||||
|
|
||||||
|
/*
|
||||||
|
KAv: Should be renamed to DSL_CPE_CommandHandle
|
||||||
|
*/
|
||||||
|
DSL_Error_t DSL_CPE_Handle_Command (char *cmd)
|
||||||
|
{
|
||||||
|
DSL_CPE_Console_Context_t * pConsoleContext = gv_pConsoleContext;
|
||||||
|
DSL_int_t result, len;
|
||||||
|
DSL_int32_t fd = DSL_NULL;
|
||||||
|
DSL_CPE_File_t *out = pConsoleContext->file_out;
|
||||||
|
|
||||||
|
if (gv_pConsoleContext == DSL_NULL)
|
||||||
|
{
|
||||||
|
DSL_CPE_FPrintf (DSL_CPE_STDOUT, DSL_CPE_PREFIX "'DSL_CPE_Handle_Command' Console not initilized..." DSL_CPE_CRLF );
|
||||||
|
return DSL_ERROR;
|
||||||
|
}
|
||||||
|
fd = pConsoleContext->fd;
|
||||||
|
|
||||||
|
cpe_control_strncpy_s(gv_pConsoleContext->arg, sizeof(gv_pConsoleContext->arg), cmd, sizeof(gv_pConsoleContext->arg));
|
||||||
|
|
||||||
|
/* get command name */
|
||||||
|
sscanf (pConsoleContext->arg, "%s", pConsoleContext->cmd);
|
||||||
|
|
||||||
|
len = (DSL_int_t) strlen (pConsoleContext->cmd);
|
||||||
|
|
||||||
|
if (len)
|
||||||
|
{
|
||||||
|
cpe_control_strncpy_s(pConsoleContext->arg, sizeof(pConsoleContext->arg), cmd, sizeof(pConsoleContext->arg));
|
||||||
|
}
|
||||||
|
|
||||||
|
/* find function by name and execute it */
|
||||||
|
result = DSL_CPE_CliDeviceCommandExecute(
|
||||||
|
pConsoleContext->pContext, -1,
|
||||||
|
pConsoleContext->cmd,
|
||||||
|
pConsoleContext->arg + len + 1, out);
|
||||||
|
|
||||||
|
if (result == 1)
|
||||||
|
{
|
||||||
|
/* indicate command "quit" */
|
||||||
|
return DSL_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
return DSL_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
// call from adsl_dbg.c: adsl_dbg_cmd()
|
||||||
|
void rtems_DSL_CPE_Handle_Console(char *cmd)
|
||||||
|
{
|
||||||
|
|
||||||
|
while(gv_dsl_cli_wait==1)
|
||||||
|
{
|
||||||
|
DSL_CPE_Sleep (1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (gv_pConsoleContext == DSL_NULL)
|
||||||
|
{
|
||||||
|
DSL_CPE_FPrintf (DSL_CPE_STDOUT, DSL_CPE_PREFIX "'rtems_DSL_CPE_Handle_Console' Console not initilized..." DSL_CPE_CRLF );
|
||||||
|
return DSL_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
cpe_control_strncpy_s(gv_pConsoleContext->arg, sizeof(gv_pConsoleContext->arg), cmd, sizeof(gv_pConsoleContext->arg));
|
||||||
|
// DSL_CPE_Handle_Console (gv_pConsoleContext);
|
||||||
|
gv_dsl_cli_wait=1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Implementation below moved from the adsl_dbg.c module
|
||||||
|
*/
|
||||||
|
|
||||||
|
#undef DBG_TARGET
|
||||||
|
#define DBG_TARGET DIO_NONE
|
||||||
|
|
||||||
|
/* adsl_dbg_help -- ATM debug help module callback. */
|
||||||
|
static void adsl_dbg_help (void)
|
||||||
|
{
|
||||||
|
tty_print ("Following ADSL commands are available:\r\n");
|
||||||
|
tty_print ("dpt : Run DSL production test (with 100 Ohm resistor)\r\n");
|
||||||
|
tty_print ("other commands : Controlled by DSL CPE Control API:\r\n");
|
||||||
|
|
||||||
|
/* call DSL-API CLI handler */
|
||||||
|
rtems_DSL_CPE_Handle_Console("help");
|
||||||
|
}
|
||||||
|
|
||||||
|
/* adsl_dbg_cmd -- ADSL debug command module callback. */
|
||||||
|
unsigned long adsl_dbg_cmd (char *str, int *idx, char *cmd)
|
||||||
|
{
|
||||||
|
#ifdef INCLUDE_DSL_CPE_PRODUCTION_TEST_SUPPORT
|
||||||
|
if (!astrncmp (str, "dpt", 3))
|
||||||
|
{
|
||||||
|
/* DSL Production test */
|
||||||
|
dsl_cpe_test();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
#endif /* INCLUDE_DSL_CPE_PRODUCTION_TEST_SUPPORT*/
|
||||||
|
{
|
||||||
|
/* call DSL-API CLI handler */
|
||||||
|
rtems_DSL_CPE_Handle_Console(str);
|
||||||
|
}
|
||||||
|
return (1); // 0= command not defined
|
||||||
|
}
|
||||||
|
|
||||||
|
void adsl_dbg_init (void)
|
||||||
|
{
|
||||||
|
dbg_link ("ADSL", adsl_dbg_help, adsl_dbg_cmd);
|
||||||
|
}
|
||||||
|
#endif /* defined(RTEMS) && defined(INCLUDE_DSL_CPE_CLI_SUPPORT)*/
|
||||||
|
|
||||||
|
#endif /* INCLUDE_DSL_CPE_CLI_SUPPORT*/
|
||||||
58
src/dsl_cpe_cli_console.h
Normal file
58
src/dsl_cpe_cli_console.h
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
/******************************************************************************
|
||||||
|
|
||||||
|
Copyright (c) 2007-2015
|
||||||
|
Lantiq Beteiligungs-GmbH & Co. KG
|
||||||
|
|
||||||
|
For licensing information, see the file 'LICENSE' in the root folder of
|
||||||
|
this software module.
|
||||||
|
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
#ifndef DSL_CPE_CLI_CONSOLE_H
|
||||||
|
#define DSL_CPE_CLI_CONSOLE_H
|
||||||
|
|
||||||
|
/** \file
|
||||||
|
DSL daemon command line interface for console (single key input)
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** \defgroup LIB_DSL_CLI_CON_CONF Configuration of DSL CPE API console
|
||||||
|
@{ */
|
||||||
|
|
||||||
|
/** maximum length of command line */
|
||||||
|
#define _DSL_MAX_COMMAND_LINE_LENGTH 255
|
||||||
|
|
||||||
|
/** maximum length of command line */
|
||||||
|
#define DSL_MAX_COMMAND_LINE_LENGTH 256
|
||||||
|
/** maximum length of command names */
|
||||||
|
#define DSL_MAX_FUNCTION_NAME_LENGTH 64
|
||||||
|
/** maximum of history elements */
|
||||||
|
#define MAX_OLD_COMMAND 16
|
||||||
|
|
||||||
|
/** @} */
|
||||||
|
|
||||||
|
struct DSL_CPE_Console_Context
|
||||||
|
{
|
||||||
|
DSL_char_t old_command[MAX_OLD_COMMAND][DSL_MAX_COMMAND_LINE_LENGTH];
|
||||||
|
DSL_char_t arg[DSL_MAX_COMMAND_LINE_LENGTH];
|
||||||
|
DSL_char_t cmd[DSL_MAX_FUNCTION_NAME_LENGTH];
|
||||||
|
DSL_CPE_Control_Context_t *pContext;
|
||||||
|
DSL_int_t idx;
|
||||||
|
DSL_int_t old_idx;
|
||||||
|
DSL_int_t prev_idx;
|
||||||
|
DSL_CPE_File_t *file_in;
|
||||||
|
DSL_CPE_File_t *file_out;
|
||||||
|
volatile DSL_boolean_t bRun;
|
||||||
|
DSL_CLI_Context_t *pCLIContext;
|
||||||
|
};
|
||||||
|
|
||||||
|
/** Context for console (including simple "editor") */
|
||||||
|
typedef struct DSL_CPE_Console_Context DSL_CPE_Console_Context_t;
|
||||||
|
|
||||||
|
DSL_Error_t DSL_CPE_Console_Init (DSL_CPE_Console_Context_t ** pConsoleRefContext,
|
||||||
|
DSL_CPE_Control_Context_t *pContext, DSL_CPE_File_t * in,
|
||||||
|
DSL_CPE_File_t * out);
|
||||||
|
DSL_Error_t DSL_CPE_Console_Shutdown(DSL_CPE_Console_Context_t *pConsoleContext);
|
||||||
|
DSL_Error_t DSL_CPE_Handle_Console(DSL_CPE_Console_Context_t *pConsoleContext);
|
||||||
|
|
||||||
|
#endif /* DSL_CPE_CLI_CONSOLE_H */
|
||||||
|
|
||||||
1986
src/dsl_cpe_cli_mib.c
Normal file
1986
src/dsl_cpe_cli_mib.c
Normal file
File diff suppressed because it is too large
Load diff
402
src/dsl_cpe_cli_pipe.c
Normal file
402
src/dsl_cpe_cli_pipe.c
Normal file
|
|
@ -0,0 +1,402 @@
|
||||||
|
/******************************************************************************
|
||||||
|
|
||||||
|
Copyright (c) 2007-2015
|
||||||
|
Lantiq Beteiligungs-GmbH & Co. KG
|
||||||
|
|
||||||
|
For licensing information, see the file 'LICENSE' in the root folder of
|
||||||
|
this software module.
|
||||||
|
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
/** \file
|
||||||
|
DSL CPE Control Application command line interface for pipe
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "dsl_cpe_control.h"
|
||||||
|
|
||||||
|
#ifndef DSL_CPE_REMOVE_PIPE_SUPPORT
|
||||||
|
|
||||||
|
#include "dsl_cpe_cli.h"
|
||||||
|
|
||||||
|
#undef DSL_CCA_DBG_BLOCK
|
||||||
|
#define DSL_CCA_DBG_BLOCK DSL_CCA_DBG_PIPE
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef MAX_CLI_PIPES
|
||||||
|
#define MAX_CLI_PIPES 1
|
||||||
|
#endif
|
||||||
|
#ifndef MAX_CLI_PIPE_CMD_LEN
|
||||||
|
#define MAX_CLI_PIPE_CMD_LEN 1024
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define PIPE_NAME_FORMAT "dsl_cpe%d_%s"
|
||||||
|
#define DTI_PIPE_NAME_FORMAT "dsl_cpe_dti%d_%s"
|
||||||
|
|
||||||
|
#define PIPE_DEBUG 1
|
||||||
|
|
||||||
|
typedef struct Pipe_env_s Pipe_env_t;
|
||||||
|
struct Pipe_env_s
|
||||||
|
{
|
||||||
|
/** reference to registered CLI */
|
||||||
|
DSL_CLI_Context_t *pCLIContext;
|
||||||
|
/** running status of pipe task */
|
||||||
|
volatile DSL_boolean_t bRun;
|
||||||
|
/** thread id of the pipe task */
|
||||||
|
DSL_CPE_ThreadCtrl_t control;
|
||||||
|
/** number of this pipe interface */
|
||||||
|
DSL_int_t number;
|
||||||
|
/** name of event pipe */
|
||||||
|
DSL_char_t namePipeEvent[32];
|
||||||
|
/** command buffer */
|
||||||
|
DSL_char_t cmd_buffer[MAX_CLI_PIPE_CMD_LEN];
|
||||||
|
DSL_CPE_File_t *pipe_in;
|
||||||
|
DSL_CPE_File_t *pipe_out;
|
||||||
|
};
|
||||||
|
|
||||||
|
#ifdef INCLUDE_DTI_AGENT_STANDALONE_SUPPORT
|
||||||
|
static Pipe_env_t PipeEnv[MAX_CLI_PIPES + 1];
|
||||||
|
#else
|
||||||
|
static Pipe_env_t PipeEnv[MAX_CLI_PIPES];
|
||||||
|
#endif /* INCLUDE_DTI_AGENT_STANDALONE_SUPPORT */
|
||||||
|
|
||||||
|
static DSL_Error_t DSL_CPE_Pipe_Exit(DSL_void_t *pContext);
|
||||||
|
static DSL_int_t DSL_CPE_Pipe_Task(DSL_CPE_Thread_Params_t *params);
|
||||||
|
static DSL_Error_t DSL_CPE_Pipe_Event(DSL_void_t *pContext, DSL_char_t *pMessage);
|
||||||
|
static DSL_Error_t DSL_CPE_Pipe_CreateCliEntry(DSL_CPE_Control_Context_t *pContext,
|
||||||
|
Pipe_env_t *pPipeEnv,
|
||||||
|
DSL_char_t *pipeNameFormat,
|
||||||
|
DSL_int_t nPipeNum);
|
||||||
|
|
||||||
|
/******************************************************************************/
|
||||||
|
|
||||||
|
DSL_Error_t DSL_CPE_Pipe_Init(DSL_CPE_Control_Context_t *pContext)
|
||||||
|
{
|
||||||
|
DSL_int_t i = 0;
|
||||||
|
DSL_Error_t ret = DSL_SUCCESS;
|
||||||
|
|
||||||
|
for (i = 0; i < MAX_CLI_PIPES; i++)
|
||||||
|
{
|
||||||
|
ret = DSL_CPE_Pipe_CreateCliEntry(pContext, &PipeEnv[i], PIPE_NAME_FORMAT, i);
|
||||||
|
if (ret < DSL_SUCCESS)
|
||||||
|
{
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_MSG, (DSL_CPE_PREFIX
|
||||||
|
"DSL_CPE_Pipe_Init: could not create "
|
||||||
|
PIPE_NAME_FORMAT DSL_CPE_CRLF, i, " pipe"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef INCLUDE_DTI_AGENT_STANDALONE_SUPPORT
|
||||||
|
ret = DSL_CPE_Pipe_CreateCliEntry(pContext,
|
||||||
|
&PipeEnv[i],
|
||||||
|
DTI_PIPE_NAME_FORMAT,
|
||||||
|
i);
|
||||||
|
if (ret < DSL_SUCCESS)
|
||||||
|
{
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_MSG, (DSL_CPE_PREFIX
|
||||||
|
"DSL_CPE_Pipe_Init: could not create "
|
||||||
|
DTI_PIPE_NAME_FORMAT DSL_CPE_CRLF, MAX_CLI_PIPES, " pipe"));
|
||||||
|
}
|
||||||
|
#endif /* INCLUDE_DTI_AGENT_STANDALONE_SUPPORT */
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
DSL_Error_t DSL_CPE_Pipe_CreateCliEntry(DSL_CPE_Control_Context_t *pContext,
|
||||||
|
Pipe_env_t *pPipeEnv,
|
||||||
|
DSL_char_t *pipeNameFormat,
|
||||||
|
DSL_int_t nPipeNum)
|
||||||
|
{
|
||||||
|
DSL_Error_t ret = DSL_SUCCESS;
|
||||||
|
DSL_char_t Name[32];
|
||||||
|
|
||||||
|
memset(pPipeEnv, 0, sizeof(Pipe_env_t));
|
||||||
|
|
||||||
|
/* remember own number */
|
||||||
|
pPipeEnv->number = nPipeNum;
|
||||||
|
|
||||||
|
DSL_CPE_snprintf(Name, sizeof(Name), pipeNameFormat, nPipeNum, "cmd");
|
||||||
|
ret = DSL_CPE_PipeCreate(Name);
|
||||||
|
|
||||||
|
if (ret < DSL_SUCCESS)
|
||||||
|
{
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_ERR, (DSL_CPE_PREFIX
|
||||||
|
"DSL_CPE_PipeCreate: could not create %s pipe"
|
||||||
|
DSL_CPE_CRLF, Name));
|
||||||
|
}
|
||||||
|
|
||||||
|
DSL_CPE_snprintf(Name, sizeof(Name), pipeNameFormat, nPipeNum, "ack");
|
||||||
|
ret = DSL_CPE_PipeCreate(Name);
|
||||||
|
|
||||||
|
if (ret < DSL_SUCCESS)
|
||||||
|
{
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_ERR, (DSL_CPE_PREFIX
|
||||||
|
"DSL_CPE_PipeCreate: could not create %s pipe"
|
||||||
|
DSL_CPE_CRLF, Name));
|
||||||
|
}
|
||||||
|
|
||||||
|
DSL_CPE_snprintf(pPipeEnv->namePipeEvent, sizeof(pPipeEnv->namePipeEvent),
|
||||||
|
pipeNameFormat, nPipeNum, "event");
|
||||||
|
|
||||||
|
ret = DSL_CPE_PipeCreate(pPipeEnv->namePipeEvent);
|
||||||
|
|
||||||
|
if (ret < DSL_SUCCESS)
|
||||||
|
{
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_ERR, (DSL_CPE_PREFIX
|
||||||
|
"DSL_CPE_PipeCreate: could not create %s pipe"
|
||||||
|
DSL_CPE_CRLF, pPipeEnv->namePipeEvent));
|
||||||
|
}
|
||||||
|
|
||||||
|
DSL_CPE_snprintf(Name, sizeof(Name), "tPipe_%d", nPipeNum);
|
||||||
|
|
||||||
|
pPipeEnv->bRun = DSL_TRUE;
|
||||||
|
|
||||||
|
/* start task to handle pipe */
|
||||||
|
DSL_CPE_ThreadInit(&pPipeEnv->control, Name, DSL_CPE_Pipe_Task,
|
||||||
|
DSL_CPE_PIPE_STACK_SIZE, DSL_CPE_PIPE_PRIORITY, (DSL_uint32_t)pContext,
|
||||||
|
(DSL_uint32_t)pPipeEnv);
|
||||||
|
|
||||||
|
return DSL_CPE_CLI_Register(&pPipeEnv->pCLIContext,
|
||||||
|
pPipeEnv,
|
||||||
|
DSL_CPE_Pipe_Exit,
|
||||||
|
DSL_CPE_Pipe_Event);
|
||||||
|
}
|
||||||
|
|
||||||
|
static DSL_Error_t DSL_CPE_Pipe_Exit(DSL_void_t *pContext)
|
||||||
|
{
|
||||||
|
Pipe_env_t *env = pContext;
|
||||||
|
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_MSG, (DSL_CPE_PREFIX
|
||||||
|
"DSL_CPE_Pipe_Exit(%d)" DSL_CPE_CRLF, env->number));
|
||||||
|
|
||||||
|
/*env->bRun = DSL_FALSE;*/
|
||||||
|
DSL_CPE_ThreadShutdown(&env->control, 1000);
|
||||||
|
if (env->pipe_in != DSL_NULL)
|
||||||
|
{
|
||||||
|
DSL_CPE_PipeClose(env->pipe_in);
|
||||||
|
env->pipe_in = DSL_NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* wait for task to exit */
|
||||||
|
/*DSL_CPE_MSecSleep(200);*/
|
||||||
|
return DSL_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Split the command buffer in single lines and execute them
|
||||||
|
*/
|
||||||
|
static DSL_int_t DSL_CPE_Pipe_Exec(DSL_Context_t * pContext, DSL_char_t *pCommand,
|
||||||
|
DSL_int_t len, DSL_CPE_File_t *out)
|
||||||
|
{
|
||||||
|
DSL_int_t ret=0;
|
||||||
|
DSL_char_t *arg = DSL_NULL;
|
||||||
|
|
||||||
|
DSL_char_t *line, *tokbuf;
|
||||||
|
DSL_char_t *cmd, *cmd_tok;
|
||||||
|
|
||||||
|
line = strtok_r(pCommand, "" DSL_CPE_CRLF , &tokbuf);
|
||||||
|
if (line == DSL_NULL)
|
||||||
|
{
|
||||||
|
DSL_CPE_CLI_CommandExecute (0, DSL_NULL, DSL_NULL, out);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
while (line != DSL_NULL)
|
||||||
|
{
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_MSG, ("line = *%s*" DSL_CPE_CRLF, line));
|
||||||
|
|
||||||
|
if (strlen(line)>0)
|
||||||
|
{
|
||||||
|
/* get command name */
|
||||||
|
cmd = strtok_r(line, " \t" DSL_CPE_CRLF , &cmd_tok);
|
||||||
|
if (cmd == DSL_NULL)
|
||||||
|
{
|
||||||
|
goto skip;
|
||||||
|
}
|
||||||
|
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_MSG, ("cmd = *%s*" DSL_CPE_CRLF, cmd));
|
||||||
|
|
||||||
|
arg = strtok_r(NULL, "" DSL_CPE_CRLF , &cmd_tok);
|
||||||
|
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_MSG, ("arg ="));
|
||||||
|
if (arg != DSL_NULL)
|
||||||
|
{
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_MSG, ("*%s*" DSL_CPE_CRLF , arg));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_MSG, ("*NULL*" DSL_CPE_CRLF));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (DSL_CPE_CliDeviceCommandExecute(DSL_CPE_GetGlobalContext(), -1, cmd, arg, out) == 1)
|
||||||
|
{
|
||||||
|
/* "quit" was found, ignore following commands */
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
skip:
|
||||||
|
line = strtok_r(NULL, "" DSL_CPE_CRLF , &tokbuf);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Task for handling the commands received in the ..._cmd pipe
|
||||||
|
*/
|
||||||
|
static DSL_int_t DSL_CPE_Pipe_Task(DSL_CPE_Thread_Params_t *params)
|
||||||
|
{
|
||||||
|
DSL_Context_t * pContext = (DSL_Context_t *)params->nArg1;
|
||||||
|
Pipe_env_t *pPipeEnv = (Pipe_env_t *)params->nArg2;
|
||||||
|
DSL_char_t pipe_name_cmd[50];
|
||||||
|
DSL_char_t pipe_name_ack[50];
|
||||||
|
DSL_char_t *pPipeFormat = DSL_NULL;
|
||||||
|
DSL_int_t len = 0;
|
||||||
|
DSL_int_t ret = 0;
|
||||||
|
|
||||||
|
if (pPipeEnv == DSL_NULL) {
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_ERR, (
|
||||||
|
"DSL_CPE_Pipe_Task() started failed, pipe env is NULL" DSL_CPE_CRLF));
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_MSG, (
|
||||||
|
" DSL_CPE_Pipe_Task(%d) started" DSL_CPE_CRLF , pPipeEnv->number));
|
||||||
|
|
||||||
|
if (pPipeEnv->number == MAX_CLI_PIPES)
|
||||||
|
{
|
||||||
|
pPipeFormat = DTI_PIPE_NAME_FORMAT;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
pPipeFormat = PIPE_NAME_FORMAT;
|
||||||
|
}
|
||||||
|
|
||||||
|
DSL_CPE_snprintf(pipe_name_ack, sizeof(pipe_name_ack), pPipeFormat,
|
||||||
|
pPipeEnv->number, "ack");
|
||||||
|
DSL_CPE_snprintf(pipe_name_cmd, sizeof(pipe_name_cmd), pPipeFormat,
|
||||||
|
pPipeEnv->number, "cmd");
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
pPipeEnv->pipe_in = DSL_CPE_PipeOpen(pipe_name_cmd, DSL_TRUE, DSL_TRUE);
|
||||||
|
if (pPipeEnv->pipe_in == DSL_NULL)
|
||||||
|
{
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_ERR, (
|
||||||
|
"DSL_CPE_Pipe_Task() cannot open %s, errno=%d" DSL_CPE_CRLF , pipe_name_cmd, errno));
|
||||||
|
ret = -1;
|
||||||
|
goto error;
|
||||||
|
}
|
||||||
|
if (!pPipeEnv->bRun)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
memset(&pPipeEnv->cmd_buffer[0], 0,
|
||||||
|
sizeof(pPipeEnv->cmd_buffer));
|
||||||
|
|
||||||
|
len = sizeof(pPipeEnv->cmd_buffer);
|
||||||
|
#ifndef _lint
|
||||||
|
if (len>0)
|
||||||
|
#endif /* _lint*/
|
||||||
|
{
|
||||||
|
ret = DSL_CPE_FRead(&pPipeEnv->cmd_buffer[0], 1, (DSL_uint32_t)len, pPipeEnv->pipe_in);
|
||||||
|
|
||||||
|
if (!pPipeEnv->bRun)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (ret>0)
|
||||||
|
{
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_MSG, (
|
||||||
|
"Pipe%d: cmd len %d, feof=%d ferror=%d " DSL_CPE_CRLF "%s" DSL_CPE_CRLF,
|
||||||
|
pPipeEnv->number, len,
|
||||||
|
feof(pPipeEnv->pipe_in),
|
||||||
|
ferror(pPipeEnv->pipe_in),
|
||||||
|
pPipeEnv->cmd_buffer));
|
||||||
|
|
||||||
|
DSL_CPE_PipeClose(pPipeEnv->pipe_in);
|
||||||
|
pPipeEnv->pipe_in = DSL_NULL;
|
||||||
|
|
||||||
|
pPipeEnv->pipe_out = DSL_CPE_PipeOpen(pipe_name_ack, DSL_FALSE, DSL_TRUE);
|
||||||
|
if (pPipeEnv->pipe_out == DSL_NULL)
|
||||||
|
{
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_ERR, (
|
||||||
|
"DSL_CPE_Pipe_Task() cannot open %s" DSL_CPE_CRLF, pipe_name_ack));
|
||||||
|
ret = -1;
|
||||||
|
goto error;
|
||||||
|
}
|
||||||
|
|
||||||
|
DSL_CPE_Pipe_Exec(pContext, pPipeEnv->cmd_buffer,
|
||||||
|
len, pPipeEnv->pipe_out);
|
||||||
|
DSL_CPE_FFlush(pPipeEnv->pipe_out);
|
||||||
|
DSL_CPE_PipeClose(pPipeEnv->pipe_out);
|
||||||
|
pPipeEnv->pipe_out = DSL_NULL;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
DSL_CPE_PipeClose(pPipeEnv->pipe_in);
|
||||||
|
pPipeEnv->pipe_in = DSL_NULL;
|
||||||
|
DSL_CPE_MSecSleep(50);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} while (pPipeEnv->bRun);
|
||||||
|
|
||||||
|
error:
|
||||||
|
|
||||||
|
if (pPipeEnv->pipe_out != DSL_NULL)
|
||||||
|
{
|
||||||
|
DSL_CPE_PipeClose(pPipeEnv->pipe_out);
|
||||||
|
pPipeEnv->pipe_out = DSL_NULL;
|
||||||
|
}
|
||||||
|
if (pPipeEnv->pipe_in != DSL_NULL)
|
||||||
|
{
|
||||||
|
DSL_CPE_PipeClose(pPipeEnv->pipe_in);
|
||||||
|
pPipeEnv->pipe_in = DSL_NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_MSG, (
|
||||||
|
" DSL_CPE_Pipe_Task(%d) exit" DSL_CPE_CRLF , pPipeEnv->number));
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static DSL_Error_t DSL_CPE_Pipe_Event(DSL_void_t *pContext, DSL_char_t *pMessage)
|
||||||
|
{
|
||||||
|
DSL_CPE_File_t *file;
|
||||||
|
Pipe_env_t *env = pContext;
|
||||||
|
|
||||||
|
file = DSL_CPE_PipeOpen(env->namePipeEvent, DSL_FALSE, DSL_FALSE);
|
||||||
|
if (file != DSL_NULL)
|
||||||
|
{
|
||||||
|
if (fprintf(file, "%s" DSL_CPE_CRLF, pMessage) <= 0)
|
||||||
|
{
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_ERR, (
|
||||||
|
"Pipe[%d]Event: Error %d during print!" DSL_CPE_CRLF, env->number, errno));
|
||||||
|
}
|
||||||
|
|
||||||
|
DSL_CPE_PipeClose(file);
|
||||||
|
}
|
||||||
|
|
||||||
|
return DSL_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef INCLUDE_DSL_RESOURCE_STATISTICS
|
||||||
|
DSL_Error_t DSL_CPE_Pipe_StaticResourceUsageGet(DSL_uint32_t *pStatResUsage)
|
||||||
|
{
|
||||||
|
if (pStatResUsage == DSL_NULL)
|
||||||
|
{
|
||||||
|
return DSL_ERROR;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
*pStatResUsage = sizeof(PipeEnv);
|
||||||
|
return DSL_SUCCESS;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif /* INCLUDE_DSL_RESOURCE_STATISTICS*/
|
||||||
|
|
||||||
|
#endif /* DSL_CPE_REMOVE_PIPE_SUPPORT */
|
||||||
|
|
||||||
2972
src/dsl_cpe_cli_vrx.c
Normal file
2972
src/dsl_cpe_cli_vrx.c
Normal file
File diff suppressed because it is too large
Load diff
294
src/dsl_cpe_config.h.in
Normal file
294
src/dsl_cpe_config.h.in
Normal file
|
|
@ -0,0 +1,294 @@
|
||||||
|
/* src/dsl_cpe_config.h.in. Generated from configure.in by autoheader. */
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef _DSL_CPE_CONFIG_H
|
||||||
|
#define _DSL_CPE_CONFIG_H
|
||||||
|
|
||||||
|
/* Debug level = local */
|
||||||
|
#undef DSL_CCA_DBG_MAX_LEVEL_PRE
|
||||||
|
|
||||||
|
/* Preselection of max. debug level = no (using default) */
|
||||||
|
#undef DSL_CCA_DBG_MAX_LEVEL_SET
|
||||||
|
|
||||||
|
/* Disabled debug prints */
|
||||||
|
#undef DSL_CPE_DEBUG_DISABLE
|
||||||
|
|
||||||
|
/* Debug netlink ID number. */
|
||||||
|
#undef DSL_DBG_MSG_NETLINK_ID
|
||||||
|
|
||||||
|
/* Include DSL TCP debug support */
|
||||||
|
#undef DSL_DEBUG_TOOL_INTERFACE
|
||||||
|
|
||||||
|
/* Add VR10 support */
|
||||||
|
#undef DSL_VRX_DEVICE_VR10
|
||||||
|
|
||||||
|
/* Add VR10_320 support */
|
||||||
|
#undef DSL_VRX_DEVICE_VR10_320
|
||||||
|
|
||||||
|
/* Add VR11 support */
|
||||||
|
#undef DSL_VRX_DEVICE_VR11
|
||||||
|
|
||||||
|
/* Add VR9 support */
|
||||||
|
#undef DSL_VRX_DEVICE_VR9
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <arpa/inet.h> header file. */
|
||||||
|
#undef HAVE_ARPA_INET_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <fcntl.h> header file. */
|
||||||
|
#undef HAVE_FCNTL_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <float.h> header file. */
|
||||||
|
#undef HAVE_FLOAT_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <inttypes.h> header file. */
|
||||||
|
#undef HAVE_INTTYPES_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <limits.h> header file. */
|
||||||
|
#undef HAVE_LIMITS_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <memory.h> header file. */
|
||||||
|
#undef HAVE_MEMORY_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <netdb.h> header file. */
|
||||||
|
#undef HAVE_NETDB_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <netinet/in.h> header file. */
|
||||||
|
#undef HAVE_NETINET_IN_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <safe_lib.h> header file. */
|
||||||
|
#undef HAVE_SAFE_LIB_H
|
||||||
|
|
||||||
|
/* Define to 1 if stdbool.h conforms to C99. */
|
||||||
|
#undef HAVE_STDBOOL_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <stdint.h> header file. */
|
||||||
|
#undef HAVE_STDINT_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <stdlib.h> header file. */
|
||||||
|
#undef HAVE_STDLIB_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <strings.h> header file. */
|
||||||
|
#undef HAVE_STRINGS_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <string.h> header file. */
|
||||||
|
#undef HAVE_STRING_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/ioctl.h> header file. */
|
||||||
|
#undef HAVE_SYS_IOCTL_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/socket.h> header file. */
|
||||||
|
#undef HAVE_SYS_SOCKET_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/stat.h> header file. */
|
||||||
|
#undef HAVE_SYS_STAT_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/time.h> header file. */
|
||||||
|
#undef HAVE_SYS_TIME_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/types.h> header file. */
|
||||||
|
#undef HAVE_SYS_TYPES_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <unistd.h> header file. */
|
||||||
|
#undef HAVE_UNISTD_H
|
||||||
|
|
||||||
|
/* Define to 1 if the system has the type `_Bool'. */
|
||||||
|
#undef HAVE__BOOL
|
||||||
|
|
||||||
|
/* Include deprecated functions */
|
||||||
|
#undef INCLUDE_DEPRECATED
|
||||||
|
|
||||||
|
/* Include Device Exception Codes */
|
||||||
|
#undef INCLUDE_DEVICE_EXCEPTION_CODES
|
||||||
|
|
||||||
|
/* Include ADSL MIB support */
|
||||||
|
#undef INCLUDE_DSL_ADSL_MIB
|
||||||
|
|
||||||
|
/* Include DSL CEOC support */
|
||||||
|
#undef INCLUDE_DSL_CEOC
|
||||||
|
|
||||||
|
/* Include configuration get support */
|
||||||
|
#undef INCLUDE_DSL_CONFIG_GET
|
||||||
|
|
||||||
|
/* Add DANUBE support */
|
||||||
|
#undef INCLUDE_DSL_CPE_API_DANUBE
|
||||||
|
|
||||||
|
/* Add VRX support */
|
||||||
|
#undef INCLUDE_DSL_CPE_API_VRX
|
||||||
|
|
||||||
|
/* Enable Autogen CLI support */
|
||||||
|
#undef INCLUDE_DSL_CPE_CLI_AUTOGEN_SUPPORT
|
||||||
|
|
||||||
|
/* Enable CLI support */
|
||||||
|
#undef INCLUDE_DSL_CPE_CLI_SUPPORT
|
||||||
|
|
||||||
|
/* Enable CMV scripts math support */
|
||||||
|
#undef INCLUDE_DSL_CPE_CMV_SCRIPTS_MATH
|
||||||
|
|
||||||
|
/* Enable CMV scripts parser support */
|
||||||
|
#undef INCLUDE_DSL_CPE_CMV_SCRIPTS_SUPPORT
|
||||||
|
|
||||||
|
/* Enable debug logger support */
|
||||||
|
#undef INCLUDE_DSL_CPE_DEBUG_LOGGER_SUPPORT
|
||||||
|
|
||||||
|
/* Include DTI support */
|
||||||
|
#undef INCLUDE_DSL_CPE_DTI_SUPPORT
|
||||||
|
|
||||||
|
/* Include filesystem support */
|
||||||
|
#undef INCLUDE_DSL_CPE_FILESYSTEM_SUPPORT
|
||||||
|
|
||||||
|
/* Include IFXOS support */
|
||||||
|
#undef INCLUDE_DSL_CPE_IFXOS_SUPPORT
|
||||||
|
|
||||||
|
/* Include Misc Line Status support */
|
||||||
|
#undef INCLUDE_DSL_CPE_MISC_LINE_STATUS
|
||||||
|
|
||||||
|
/* Include DSL PM channel counters support */
|
||||||
|
#undef INCLUDE_DSL_CPE_PM_CHANNEL_COUNTERS
|
||||||
|
|
||||||
|
/* Include DSL PM channel extended counters support */
|
||||||
|
#undef INCLUDE_DSL_CPE_PM_CHANNEL_EXT_COUNTERS
|
||||||
|
|
||||||
|
/* Include DSL PM channel thresholds support */
|
||||||
|
#undef INCLUDE_DSL_CPE_PM_CHANNEL_THRESHOLDS
|
||||||
|
|
||||||
|
/* Include PM config support */
|
||||||
|
#undef INCLUDE_DSL_CPE_PM_CONFIG
|
||||||
|
|
||||||
|
/* Include DSL PM datapath counters support */
|
||||||
|
#undef INCLUDE_DSL_CPE_PM_DATA_PATH_COUNTERS
|
||||||
|
|
||||||
|
/* Include DSL PM datapath failure counters support */
|
||||||
|
#undef INCLUDE_DSL_CPE_PM_DATA_PATH_FAILURE_COUNTERS
|
||||||
|
|
||||||
|
/* Include DSL PM datapath thresholds support */
|
||||||
|
#undef INCLUDE_DSL_CPE_PM_DATA_PATH_THRESHOLDS
|
||||||
|
|
||||||
|
/* Include DSL PM history support */
|
||||||
|
#undef INCLUDE_DSL_CPE_PM_HISTORY
|
||||||
|
|
||||||
|
/* Include DSL PM line counters support */
|
||||||
|
#undef INCLUDE_DSL_CPE_PM_LINE_COUNTERS
|
||||||
|
|
||||||
|
/* Include DSL PM line event showtime counters support */
|
||||||
|
#undef INCLUDE_DSL_CPE_PM_LINE_EVENT_SHOWTIME_COUNTERS
|
||||||
|
|
||||||
|
/* Include DSL PM line thresholds support */
|
||||||
|
#undef INCLUDE_DSL_CPE_PM_LINE_THRESHOLDS
|
||||||
|
|
||||||
|
/* Include DSL PM optional parameters support */
|
||||||
|
#undef INCLUDE_DSL_CPE_PM_OPTIONAL_PARAMETERS
|
||||||
|
|
||||||
|
/* Include DSL PM retransmission counters support */
|
||||||
|
#undef INCLUDE_DSL_CPE_PM_RETX_COUNTERS
|
||||||
|
|
||||||
|
/* Include DSL PM retransmission thresholds support */
|
||||||
|
#undef INCLUDE_DSL_CPE_PM_RETX_THRESHOLDS
|
||||||
|
|
||||||
|
/* Include DSL PM showtime counters support */
|
||||||
|
#undef INCLUDE_DSL_CPE_PM_SHOWTIME_COUNTERS
|
||||||
|
|
||||||
|
/* Include DSL PM total counters support */
|
||||||
|
#undef INCLUDE_DSL_CPE_PM_TOTAL_COUNTERS
|
||||||
|
|
||||||
|
/* Include ADSL showtime event logging support */
|
||||||
|
#undef INCLUDE_DSL_CPE_TRACE_BUFFER
|
||||||
|
|
||||||
|
/* Include DELT support */
|
||||||
|
#undef INCLUDE_DSL_DELT
|
||||||
|
|
||||||
|
/* Include FW request support */
|
||||||
|
#undef INCLUDE_DSL_EVENT_POLLING
|
||||||
|
|
||||||
|
/* Include Filter Detection support */
|
||||||
|
#undef INCLUDE_DSL_FILTER_DETECTION
|
||||||
|
|
||||||
|
/* Include Framing Parameters support */
|
||||||
|
#undef INCLUDE_DSL_FRAMING_PARAMETERS
|
||||||
|
|
||||||
|
/* Include G997 alarm support */
|
||||||
|
#undef INCLUDE_DSL_G997_ALARM
|
||||||
|
|
||||||
|
/* Include G997 Framing Parameters support */
|
||||||
|
#undef INCLUDE_DSL_G997_FRAMING_PARAMETERS
|
||||||
|
|
||||||
|
/* Include G997 Line Inventory support */
|
||||||
|
#undef INCLUDE_DSL_G997_LINE_INVENTORY
|
||||||
|
|
||||||
|
/* Include G997 per tone values support */
|
||||||
|
#undef INCLUDE_DSL_G997_PER_TONE
|
||||||
|
|
||||||
|
/* Include G997 status support */
|
||||||
|
#undef INCLUDE_DSL_G997_STATUS
|
||||||
|
|
||||||
|
/* Include DSL PM support */
|
||||||
|
#undef INCLUDE_DSL_PM
|
||||||
|
|
||||||
|
/* Include Resource Statistics support */
|
||||||
|
#undef INCLUDE_DSL_RESOURCE_STATISTICS
|
||||||
|
|
||||||
|
/* Include System Interface configuration support */
|
||||||
|
#undef INCLUDE_DSL_SYSTEM_INTERFACE
|
||||||
|
|
||||||
|
/* Enable DTI stand-alone agent support */
|
||||||
|
#undef INCLUDE_DTI_AGENT_STANDALONE_SUPPORT
|
||||||
|
|
||||||
|
/* Include FW request support */
|
||||||
|
#undef INCLUDE_FW_REQUEST_SUPPORT
|
||||||
|
|
||||||
|
/* Pilot Tones Status support */
|
||||||
|
#undef INCLUDE_PILOT_TONES_STATUS
|
||||||
|
|
||||||
|
/* Include DSL RTT support */
|
||||||
|
#undef INCLUDE_REAL_TIME_TRACE
|
||||||
|
|
||||||
|
/* Enable script notification support */
|
||||||
|
#undef INCLUDE_SCRIPT_NOTIFICATION
|
||||||
|
|
||||||
|
/* Name of package */
|
||||||
|
#undef PACKAGE
|
||||||
|
|
||||||
|
/* Define to the address where bug reports for this package should be sent. */
|
||||||
|
#undef PACKAGE_BUGREPORT
|
||||||
|
|
||||||
|
/* Define to the full name of this package. */
|
||||||
|
#undef PACKAGE_NAME
|
||||||
|
|
||||||
|
/* Define to the full name and version of this package. */
|
||||||
|
#undef PACKAGE_STRING
|
||||||
|
|
||||||
|
/* Define to the one symbol short name of this package. */
|
||||||
|
#undef PACKAGE_TARNAME
|
||||||
|
|
||||||
|
/* Define to the home page for this package. */
|
||||||
|
#undef PACKAGE_URL
|
||||||
|
|
||||||
|
/* Define to the version of this package. */
|
||||||
|
#undef PACKAGE_VERSION
|
||||||
|
|
||||||
|
/* Safe-C supported */
|
||||||
|
#undef SAFEC_SUPPORT
|
||||||
|
|
||||||
|
/* Define to 1 if you have the ANSI C header files. */
|
||||||
|
#undef STDC_HEADERS
|
||||||
|
|
||||||
|
/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
|
||||||
|
#undef TIME_WITH_SYS_TIME
|
||||||
|
|
||||||
|
/* Define to 1 if your <sys/time.h> declares `struct tm'. */
|
||||||
|
#undef TM_IN_SYS_TIME
|
||||||
|
|
||||||
|
/* Version number of package */
|
||||||
|
#undef VERSION
|
||||||
|
|
||||||
|
/* Define to empty if `const' does not conform to ANSI C. */
|
||||||
|
#undef const
|
||||||
|
|
||||||
|
/* Define to `unsigned int' if <sys/types.h> does not define. */
|
||||||
|
#undef size_t
|
||||||
|
|
||||||
|
/* Define to empty if the keyword `volatile' does not work. Warning: valid
|
||||||
|
code using `volatile' can become incorrect without. Disable with care. */
|
||||||
|
#undef volatile
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* _DSL_CPE_CONFIG_H */
|
||||||
7553
src/dsl_cpe_control.c
Normal file
7553
src/dsl_cpe_control.c
Normal file
File diff suppressed because it is too large
Load diff
557
src/dsl_cpe_control.h
Normal file
557
src/dsl_cpe_control.h
Normal file
|
|
@ -0,0 +1,557 @@
|
||||||
|
/******************************************************************************
|
||||||
|
|
||||||
|
Copyright 2018, Intel Corporation
|
||||||
|
|
||||||
|
Copyright (c) 2007-2015
|
||||||
|
Lantiq Beteiligungs-GmbH & Co. KG
|
||||||
|
|
||||||
|
For licensing information, see the file 'LICENSE' in the root folder of
|
||||||
|
this software module.
|
||||||
|
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
#ifndef _DSL_CPE_CONTROL_H
|
||||||
|
#define _DSL_CPE_CONTROL_H
|
||||||
|
|
||||||
|
/** \defgroup DSL_CPE_CONTROL Lantiq DSL CPE API Control Application
|
||||||
|
Lists the entire modules to the DSL CPE_API Control Application.
|
||||||
|
@{ */
|
||||||
|
|
||||||
|
/**
|
||||||
|
\defgroup DSL_CPE_CLI Implementation of Command Line Interface access commands
|
||||||
|
This module implements the Command Line Interface.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** @} */
|
||||||
|
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
#include "dsl_cpe_config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* To disable patch version handling set up definition below.*/
|
||||||
|
/* #define DISABLE_DSL_PATCH_VERSION*/
|
||||||
|
|
||||||
|
#ifndef DSL_DOC_GENERATION_EXCLUDE_UNWANTED
|
||||||
|
|
||||||
|
#include "dsl_cpe_os.h"
|
||||||
|
|
||||||
|
#ifdef WIN32
|
||||||
|
#include "dsl_cpe_win32.h"
|
||||||
|
#endif /* WIN32*/
|
||||||
|
|
||||||
|
/* Maximum number of FW reload retries in case of a failed FW download*/
|
||||||
|
#define DSL_CPE_MAX_FW_RELOAD_RETRY_COUNT (5)
|
||||||
|
|
||||||
|
#if defined(INCLUDE_DSL_ADSL_MIB) && defined (INCLUDE_DSL_CPE_API_VRX)
|
||||||
|
#error "MIB not supported for the VRX devices yet!!!"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
extern DSL_char_t *g_sFirmwareName1;
|
||||||
|
extern DSL_FirmwareFeatures_t g_nFwFeatures1;
|
||||||
|
|
||||||
|
extern DSL_char_t *g_sFirmwareName2;
|
||||||
|
extern DSL_FirmwareFeatures_t g_nFwFeatures2;
|
||||||
|
|
||||||
|
extern DSL_uint8_t g_nDevices;
|
||||||
|
extern DSL_uint8_t g_nLines;
|
||||||
|
extern DSL_uint8_t g_nChannels;
|
||||||
|
/* Maximum lines per DSL device to support */
|
||||||
|
|
||||||
|
#define DSL_CPE_LINES_PER_DEVICE ((const DSL_uint8_t) g_nLines)
|
||||||
|
#define DSL_CPE_DEVICE_NUMBER ((const DSL_uint8_t) g_nDevices)
|
||||||
|
#define INCLUDE_DSL_BONDING (g_nLines * g_nDevices > 1)
|
||||||
|
#define DSL_CPE_DSL_ENTITIES (g_nLines * g_nDevices)
|
||||||
|
|
||||||
|
#define DSL_CPE_MAX_DEVICE_NUMBER 2
|
||||||
|
/*
|
||||||
|
#if defined(DSL_DEBUG_TOOL_INTERFACE) && (!defined(INCLUDE_DSL_CPE_FILESYSTEM_SUPPORT))
|
||||||
|
#error "DSL Debug Interface can be used with Linux and file \
|
||||||
|
system support enabled only"
|
||||||
|
#endif
|
||||||
|
*/
|
||||||
|
|
||||||
|
#if defined(DSL_DEBUG_TOOL_INTERFACE) && !defined(INCLUDE_DSL_CPE_CMV_SCRIPTS_SUPPORT)
|
||||||
|
#error "Debug Tool Interface needs --enable-cmv-scripts option enabled!"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* \todo [RTT] Temporary exclude RTT because of important bugfix is needed first! */
|
||||||
|
#if defined(INCLUDE_REAL_TIME_TRACE)
|
||||||
|
#error Real Time Trace functionality is currently not supported.
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(DSL_DEBUG_TOOL_INTERFACE) || defined(INCLUDE_DSL_CPE_DTI_SUPPORT)
|
||||||
|
#ifdef LINUX
|
||||||
|
#define DSL_DEBUG_TOOL_INTERFACE_DEFAULT_IFACE "eth0"
|
||||||
|
#elif defined(VXWORKS)
|
||||||
|
#define DSL_DEBUG_TOOL_INTERFACE_DEFAULT_IFACE "ei0"
|
||||||
|
#else
|
||||||
|
#error "OS type undefined!"
|
||||||
|
#endif
|
||||||
|
#endif /* DSL_DEBUG_TOOL_INTERFACE*/
|
||||||
|
|
||||||
|
#if defined (INCLUDE_DSL_CPE_API_DANUBE)
|
||||||
|
#define DSL_CPE_DSL_LOW_DEV "/dev/ifx_mei"
|
||||||
|
#elif defined (INCLUDE_DSL_CPE_API_VRX)
|
||||||
|
#define DSL_CPE_DSL_LOW_DEV "/dev/mei_cpe"
|
||||||
|
#else
|
||||||
|
#error "Device undefined!"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
This define specifies the maximum number of device instances
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#define DSL_CPE_MAX_DSL_ENTITIES 2
|
||||||
|
|
||||||
|
|
||||||
|
#include "drv_dsl_cpe_api.h"
|
||||||
|
#include "drv_dsl_cpe_api_types.h"
|
||||||
|
#include "drv_dsl_cpe_api_error.h"
|
||||||
|
#include "dsl_cpe_safec_wrapper.h"
|
||||||
|
|
||||||
|
#ifdef INCLUDE_DSL_CPE_CLI_SUPPORT
|
||||||
|
#include "dsl_cpe_cli.h"
|
||||||
|
#endif /* INCLUDE_DSL_CPE_CLI_SUPPORT */
|
||||||
|
|
||||||
|
#define DSL_DEV_TIMEOUT_SELECT 1000
|
||||||
|
|
||||||
|
#define DSL_CPE_FW_CHUNK_SIZE (64 * 1024)
|
||||||
|
|
||||||
|
/*#define INCLUDE_DSL_API_CLI_LEGACY*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
Security checks for configure options
|
||||||
|
*/
|
||||||
|
#if defined(INCLUDE_DSL_CPE_DTI_SUPPORT) && defined(INCLUDE_DSL_CPE_API_DANUBE)
|
||||||
|
#ifndef INCLUDE_DSL_CPE_CLI_SUPPORT
|
||||||
|
#error "DTI support for Danube requires CLI please define 'INCLUDE_DSL_CPE_CLI_SUPPORT'"
|
||||||
|
#endif
|
||||||
|
#endif /* INCLUDE_DSL_CPE_DTI_SUPPORT */
|
||||||
|
|
||||||
|
#if !defined(INCLUDE_DSL_CPE_CLI_SUPPORT)
|
||||||
|
#define DSL_CPE_REMOVE_PIPE_SUPPORT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
extern DSL_boolean_t g_bWaitBeforeLinkActivation[DSL_CPE_MAX_DSL_ENTITIES];
|
||||||
|
extern DSL_boolean_t g_bWaitBeforeConfigWrite[DSL_CPE_MAX_DSL_ENTITIES];
|
||||||
|
extern DSL_boolean_t g_bWaitBeforeRestart[DSL_CPE_MAX_DSL_ENTITIES];
|
||||||
|
|
||||||
|
#ifdef INCLUDE_DSL_CPE_CMV_SCRIPTS_SUPPORT
|
||||||
|
extern DSL_char_t *g_sAdslScript;
|
||||||
|
extern DSL_char_t *g_sVdslScript;
|
||||||
|
extern DSL_boolean_t g_bAutoContinueWaitBeforeLinkActivation[DSL_CPE_MAX_DSL_ENTITIES];
|
||||||
|
extern DSL_boolean_t g_bAutoContinueWaitBeforeConfigWrite[DSL_CPE_MAX_DSL_ENTITIES];
|
||||||
|
extern DSL_boolean_t g_bAutoContinueWaitBeforeRestart[DSL_CPE_MAX_DSL_ENTITIES];
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef INCLUDE_SCRIPT_NOTIFICATION
|
||||||
|
extern DSL_char_t *g_sRcScript;
|
||||||
|
DSL_void_t DSL_CPE_ScriptRun(DSL_void_t);
|
||||||
|
#endif /* INCLUDE_SCRIPT_NOTIFICATION*/
|
||||||
|
|
||||||
|
#define MAX_WHAT_STRING_LEN 64
|
||||||
|
#define WHAT_STRING_CHUNK_LEN (64*1024)
|
||||||
|
|
||||||
|
#define DSL_CPE_DEVICE_NAME "/dev/dsl_cpe_api"
|
||||||
|
#define DSL_CPE_PREFIX "DSL_CPE: "
|
||||||
|
#define DSL_CPE_SCRIPT_PREFIX "DSL_CPE_SCRIPT: "
|
||||||
|
|
||||||
|
#define DSL_SCRIPT_PRINTF (void) DSL_CPE_FPrintf
|
||||||
|
|
||||||
|
#define DSL_SCRIPT_DEBUG(echo, body) \
|
||||||
|
{ \
|
||||||
|
if (echo) \
|
||||||
|
{ \
|
||||||
|
DSL_SCRIPT_PRINTF body; \
|
||||||
|
} \
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef INCLUDE_DSL_CPE_FILESYSTEM_SUPPORT
|
||||||
|
#define DSL_CPE_SHOWTIME_EVENT_LOGGING_FILENAME "/tmp/post_mortem_data.txt"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef _MKSTR_1
|
||||||
|
#define _MKSTR_1(x) #x
|
||||||
|
#define _MKSTR(x) _MKSTR_1(x)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
typedef unsigned int DSL_size_t;
|
||||||
|
|
||||||
|
typedef void (DSL_CliFunction_t) (DSL_int32_t fd,
|
||||||
|
DSL_char_t *pCommands,
|
||||||
|
DSL_CPE_File_t *out);
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
char *sShortCommand;
|
||||||
|
char *sLongCommand;
|
||||||
|
DSL_CliFunction_t *pFunction;
|
||||||
|
} DSL_CliCommand_t;
|
||||||
|
|
||||||
|
|
||||||
|
DSL_int32_t DSL_CPE_sscanf (DSL_char_t * buf, DSL_char_t const *fmt, ...)
|
||||||
|
#if __GNUC__ >= 3
|
||||||
|
__attribute__ ((__format__ (__scanf__, 2, 3)))
|
||||||
|
#endif
|
||||||
|
;
|
||||||
|
|
||||||
|
#ifdef INCLUDE_DSL_API_CLI_LEGACY
|
||||||
|
|
||||||
|
#define GET_ADSL_LINE_STATUS 0
|
||||||
|
#define DANUBE_MEI_CMV_WINHOST 0
|
||||||
|
#define LINE_RATE_DATA_RATEDS_FLAG 1
|
||||||
|
#define LINE_RATE_DATA_RATEUS_FLAG 2
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
DSL_uint32_t dummy;
|
||||||
|
} adslLineStatusInfo;
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
DSL_uint32_t flags;
|
||||||
|
DSL_uint32_t adslDataRateus;
|
||||||
|
DSL_uint32_t adslDataRateds;
|
||||||
|
} adslLineRateInfo;
|
||||||
|
|
||||||
|
#endif /* INCLUDE_DSL_API_CLI_LEGACY */
|
||||||
|
|
||||||
|
#if defined(INCLUDE_DSL_CPE_API_VRX)
|
||||||
|
/* Structure to keep the decoded Firmware Verion information
|
||||||
|
contained in the 32bit Version number */
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
/* Revision 1, 2, ... */
|
||||||
|
DSL_uint8_t nPlatform;
|
||||||
|
/* */
|
||||||
|
DSL_uint8_t nFeatureSet;
|
||||||
|
/* */
|
||||||
|
DSL_uint8_t nMajor;
|
||||||
|
/* */
|
||||||
|
DSL_uint8_t nMinor;
|
||||||
|
/* Pre, Verification, Development */
|
||||||
|
DSL_uint8_t nReleaseStatus;
|
||||||
|
/* VDSL1/2, ADSL, ... */
|
||||||
|
DSL_uint8_t nApplication;
|
||||||
|
} DSL_VRX_FwVersion_t;
|
||||||
|
#endif /* defined(INCLUDE_DSL_CPE_API_VRX)*/
|
||||||
|
|
||||||
|
#ifdef INCLUDE_DSL_CPE_API_DANUBE
|
||||||
|
/* Structure to keep the decoded Firmware Verion information
|
||||||
|
contained in the 32bit Version number */
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
/* Major version*/
|
||||||
|
DSL_uint8_t nMajor;
|
||||||
|
/* Minor version*/
|
||||||
|
DSL_uint8_t nMinor;
|
||||||
|
/* Release State */
|
||||||
|
DSL_uint8_t nRelState;
|
||||||
|
/* Annex A, Annex B*/
|
||||||
|
DSL_uint8_t nApplication;
|
||||||
|
/* External Version*/
|
||||||
|
DSL_uint8_t nExtVersion;
|
||||||
|
/* Internal Version */
|
||||||
|
DSL_uint8_t nIntVersion;
|
||||||
|
} DSL_DANUBE_FwVersion_t;
|
||||||
|
#endif /* INCLUDE_DSL_CPE_API_DANUBE*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
Structure for the SW (driver, application) version*/
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
/* Major version*/
|
||||||
|
DSL_int_t nMajor;
|
||||||
|
/* Minor version*/
|
||||||
|
DSL_int_t nMinor;
|
||||||
|
/* Development version*/
|
||||||
|
DSL_int_t nDevelopment;
|
||||||
|
/* Maintenance version*/
|
||||||
|
DSL_int_t nMaintenance;
|
||||||
|
#ifndef DISABLE_DSL_PATCH_VERSION
|
||||||
|
/* Patch number*/
|
||||||
|
DSL_int_t nPatch;
|
||||||
|
#endif /*#ifndef DISABLE_DSL_PATCH_VERSION*/
|
||||||
|
} DSL_SwVersion_t;
|
||||||
|
|
||||||
|
/*
|
||||||
|
This structure is used to get resource usage statistics
|
||||||
|
data
|
||||||
|
*/
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
Total memory allocated statically (bytes) */
|
||||||
|
DSL_uint32_t staticMemUsage;
|
||||||
|
/*
|
||||||
|
Total memory allocated dynamically (bytes) */
|
||||||
|
DSL_uint32_t dynamicMemUsage;
|
||||||
|
} DSL_CPE_ResourceUsageStatisticsData_t;
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
File name is only used in case of using firmware binary that is located
|
||||||
|
within file system. If firmware that is used which is already stored
|
||||||
|
within context of DSL CPE Control Applicationthis pointer shall be DSL_NULL.*/
|
||||||
|
DSL_char_t *pFileName;
|
||||||
|
/*
|
||||||
|
Pointer to firmware binary in case of using data stored within context of
|
||||||
|
DSL CPE Control Application. In case of using reference to file instead
|
||||||
|
(pFileName does not equal DSL_NULL) this pointer shall be DSL_NULL. */
|
||||||
|
DSL_uint8_t *pData;
|
||||||
|
/*
|
||||||
|
Size of firmware binary in case of using data stored within context of
|
||||||
|
DSL CPE Control Application. In case of using reference to file instead
|
||||||
|
(pFileName does not equal DSL_NULL) this parameter shall be zero. */
|
||||||
|
DSL_uint32_t nSize;
|
||||||
|
/*
|
||||||
|
Includes information about xDSL mode related firmware features */
|
||||||
|
DSL_FirmwareFeatures_t fwFeatures;
|
||||||
|
} DSL_CPE_Firmware_t;
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
DSL_int_t fd[DSL_CPE_MAX_DSL_ENTITIES];
|
||||||
|
DSL_boolean_t bRun;
|
||||||
|
DSL_CPE_ThreadCtrl_t EventControl;
|
||||||
|
DSL_boolean_t bEvtRun;
|
||||||
|
DSL_boolean_t bBackwardCompMode;
|
||||||
|
DSL_int_t nDevNum;
|
||||||
|
#ifdef DSL_DEBUG_TOOL_INTERFACE
|
||||||
|
DSL_CPE_ThreadCtrl_t nTcpMsgHandler;
|
||||||
|
DSL_void_t *pDebugClientInfo;
|
||||||
|
#ifdef INCLUDE_DSL_CPE_CLI_SUPPORT
|
||||||
|
DSL_CPE_ThreadCtrl_t nTcpCliHandler;
|
||||||
|
DSL_void_t *pDebugCliClientInfo;
|
||||||
|
#endif /* INCLUDE_DSL_CPE_CLI_SUPPORT*/
|
||||||
|
#endif /* DSL_DEBUG_TOOL_INTERFACE*/
|
||||||
|
|
||||||
|
#ifdef INCLUDE_DSL_CPE_CLI_SUPPORT
|
||||||
|
DSL_CLI_Context_t *pCLI_List_head;
|
||||||
|
#endif /* INCLUDE_DSL_CPE_CLI_SUPPORT */
|
||||||
|
|
||||||
|
#ifdef INCLUDE_DSL_CPE_CMV_SCRIPTS_SUPPORT
|
||||||
|
DSL_FirmwareStatusType_t nFwModeStatus;
|
||||||
|
#endif /* INCLUDE_DSL_CPE_CMV_SCRIPTS_SUPPORT*/
|
||||||
|
/* DSL CPE API driver version*/
|
||||||
|
DSL_SwVersion_t driverVer;
|
||||||
|
/* DSL CPE API control application version*/
|
||||||
|
DSL_SwVersion_t applicationVer;
|
||||||
|
DSL_void_t *pBnd;
|
||||||
|
DSL_boolean_t bForceFirmwareDownload[DSL_CPE_MAX_DSL_ENTITIES];
|
||||||
|
} DSL_CPE_Control_Context_t;
|
||||||
|
|
||||||
|
#include "dsl_cpe_debug.h"
|
||||||
|
|
||||||
|
#ifdef INCLUDE_DSL_CPE_CMV_SCRIPTS_SUPPORT
|
||||||
|
|
||||||
|
#define DSL_CPE_SCRIPT_WAIT_FOR_CONFIGURATION_TAG "WaitForConfiguration"
|
||||||
|
#define DSL_CPE_SCRIPT_WAIT_FOR_LINK_ACTIVATE_TAG "WaitForLinkActivate"
|
||||||
|
#define DSL_CPE_SCRIPT_WAIT_BEFORE_RESTART_TAG "WaitForRestart"
|
||||||
|
#define DSL_CPE_SCRIPT_COMMON_TAG "Common"
|
||||||
|
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
/* Specifies common section.*/
|
||||||
|
DSL_SCRIPT_SECTION_COMMON = 1,
|
||||||
|
/* Specifies "WaitForConfiguration" section within
|
||||||
|
Autoboot script*/
|
||||||
|
DSL_SCRIPT_SECTION_WAIT_FOR_CONFIFURATION = 2,
|
||||||
|
/* Specifies "WaitForLinkActivate" section within
|
||||||
|
Autoboot script*/
|
||||||
|
DSL_SCRIPT_SECTION_WAIT_FOR_LINK_ACTIVATE = 3,
|
||||||
|
/* Specifies "WaitBeforeRestart" section within
|
||||||
|
Autoboot script*/
|
||||||
|
DSL_SCRIPT_SECTION_WAIT_BEFORE_RESTART = 4
|
||||||
|
} DSL_CPE_ScriptSection_t;
|
||||||
|
#endif /* #ifdef INCLUDE_DSL_CPE_CMV_SCRIPTS_SUPPORT*/
|
||||||
|
|
||||||
|
#define MAX_SCRIPT_CMD_LEN 1023
|
||||||
|
|
||||||
|
/**
|
||||||
|
Structure for dynamic script buffers.
|
||||||
|
*/
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
/** dynamic buffer */
|
||||||
|
DSL_char_t *buffer_cmd;
|
||||||
|
/** dynamic buffer */
|
||||||
|
DSL_char_t *buffer_tmp;
|
||||||
|
/** buffer size */
|
||||||
|
DSL_int_t nSize;
|
||||||
|
} DSL_CPE_ScriptBuffer_t;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Structure for parsing startup arguments.
|
||||||
|
*/
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
/** element value (to be returned) */
|
||||||
|
DSL_int_t nValue;
|
||||||
|
/** element base (for strtoul function,
|
||||||
|
e.g. 10 for decimal or 16 for hex values) */
|
||||||
|
DSL_int_t nBase;
|
||||||
|
} DSL_CPE_ArgElement_t;
|
||||||
|
|
||||||
|
/*
|
||||||
|
A structure for event type<->string conversion tables.
|
||||||
|
*/
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
/** event type */
|
||||||
|
DSL_EventType_t eventType;
|
||||||
|
/** event string */
|
||||||
|
DSL_char_t const *string;
|
||||||
|
} DSL_CPE_EVT_CodeString_t;
|
||||||
|
|
||||||
|
DSL_CPE_Control_Context_t *DSL_CPE_GetGlobalContext(DSL_void_t);
|
||||||
|
|
||||||
|
#if defined(INCLUDE_DSL_CPE_API_VRX)
|
||||||
|
DSL_Error_t DSL_CPE_LowLevelConfigurationCheck(
|
||||||
|
DSL_int_t fd);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
DSL_Error_t DSL_CPE_LoadFirmwareFromFile
|
||||||
|
(
|
||||||
|
DSL_char_t *psFirmwareName,
|
||||||
|
DSL_uint8_t **pFirmware,
|
||||||
|
DSL_uint32_t *pnFirmwareSize
|
||||||
|
);
|
||||||
|
|
||||||
|
DSL_Error_t DSL_CPE_DownloadFirmware
|
||||||
|
(
|
||||||
|
DSL_int_t fd,
|
||||||
|
DSL_int_t nDevice,
|
||||||
|
DSL_FirmwareRequestType_t nFwReqType,
|
||||||
|
DSL_PortMode_t nPortMode,
|
||||||
|
DSL_char_t *pcFw,
|
||||||
|
DSL_char_t *pcFw2
|
||||||
|
);
|
||||||
|
|
||||||
|
DSL_Error_t DSL_CPE_FwFeaturesGet
|
||||||
|
(
|
||||||
|
DSL_char_t *pcFw,
|
||||||
|
DSL_FirmwareFeatures_t *pFwFeatures
|
||||||
|
);
|
||||||
|
|
||||||
|
#ifdef INCLUDE_DSL_CPE_CLI_SUPPORT
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
/* Format as hey values */
|
||||||
|
DSL_ARRAY_FORMAT_HEX,
|
||||||
|
/* Format as string */
|
||||||
|
DSL_ARRAY_FORMAT_STRING,
|
||||||
|
/* Format as string (print dots instead of non print symbols) */
|
||||||
|
DSL_ARRAY_FORMAT_PRINT_STRING
|
||||||
|
} DSL_CPE_ArrayPrintFormat_t;
|
||||||
|
|
||||||
|
DSL_void_t DSL_CPE_ArraySPrintF
|
||||||
|
(
|
||||||
|
DSL_char_t *pDst,
|
||||||
|
DSL_void_t *pSrc,
|
||||||
|
DSL_uint16_t nSrcSize,
|
||||||
|
DSL_uint16_t nSrcElementSize,
|
||||||
|
DSL_CPE_ArrayPrintFormat_t nFormat
|
||||||
|
);
|
||||||
|
|
||||||
|
DSL_Error_t DSL_CPE_MoveCharPtr
|
||||||
|
(
|
||||||
|
DSL_char_t *pCommands,
|
||||||
|
DSL_int_t nParamNr,
|
||||||
|
DSL_char_t *pSeps,
|
||||||
|
DSL_char_t **pCmdOffset
|
||||||
|
);
|
||||||
|
|
||||||
|
#ifdef INCLUDE_DSL_CPE_CLI_SUPPORT
|
||||||
|
DSL_char_t *DSL_CPE_Fd2DevStr(DSL_int_t fd);
|
||||||
|
DSL_Error_t DSL_CPE_Fd2DevNum(DSL_int_t fd, DSL_uint32_t *nDevice);
|
||||||
|
|
||||||
|
DSL_boolean_t DSL_CPE_IsFileExists(DSL_char_t *path);
|
||||||
|
#endif /* INCLUDE_DSL_CPE_CLI_SUPPORT*/
|
||||||
|
|
||||||
|
DSL_int_t DSL_CPE_CliDeviceCommandExecute(
|
||||||
|
DSL_CPE_Control_Context_t *pContext,
|
||||||
|
DSL_int_t nDevice,
|
||||||
|
DSL_char_t *cmd,
|
||||||
|
DSL_char_t *arg,
|
||||||
|
DSL_CPE_File_t *out);
|
||||||
|
|
||||||
|
#if defined(INCLUDE_DSL_CPE_API_VRX)
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
DSL_uint8_t nAdr[DSL_MAC_ADDRESS_OCTETS];
|
||||||
|
} DSL_CPE_MacAddress_t;
|
||||||
|
|
||||||
|
DSL_Error_t DSL_CPE_GetMacAdrFromString
|
||||||
|
(
|
||||||
|
DSL_char_t *pString,
|
||||||
|
DSL_CPE_MacAddress_t *pMacAdr
|
||||||
|
);
|
||||||
|
#endif /* defined(INCLUDE_DSL_CPE_API_VRX) */
|
||||||
|
#endif /* INCLUDE_DSL_CPE_CLI_SUPPORT */
|
||||||
|
|
||||||
|
/*
|
||||||
|
Start Event handler thread
|
||||||
|
*/
|
||||||
|
DSL_Error_t DSL_CPE_EventHandlerStart (
|
||||||
|
DSL_CPE_Control_Context_t * pContext
|
||||||
|
);
|
||||||
|
|
||||||
|
#ifdef INCLUDE_DSL_CPE_CMV_SCRIPTS_SUPPORT
|
||||||
|
DSL_void_t DSL_CPE_Echo
|
||||||
|
(
|
||||||
|
DSL_char_t *buf
|
||||||
|
);
|
||||||
|
|
||||||
|
DSL_Error_t DSL_CPE_ScriptExecute
|
||||||
|
(
|
||||||
|
DSL_CPE_Control_Context_t * pContext,
|
||||||
|
DSL_int_t nDevice,
|
||||||
|
DSL_CPE_File_t *pFile,
|
||||||
|
DSL_CPE_ScriptSection_t searchSection,
|
||||||
|
DSL_CPE_ScriptBuffer_t *script_buf
|
||||||
|
);
|
||||||
|
|
||||||
|
DSL_Error_t DSL_CPE_ScriptFileParse
|
||||||
|
(
|
||||||
|
DSL_CPE_Control_Context_t * pContext,
|
||||||
|
DSL_int_t nDevice,
|
||||||
|
DSL_char_t *sFileName,
|
||||||
|
DSL_CPE_ScriptSection_t searchSection
|
||||||
|
);
|
||||||
|
#endif /* INCLUDE_DSL_CPE_CMV_SCRIPTS_SUPPORT */
|
||||||
|
|
||||||
|
#ifdef INCLUDE_DSL_RESOURCE_STATISTICS
|
||||||
|
DSL_Error_t DSL_CPE_ResourceUsageStatisticsGet
|
||||||
|
(
|
||||||
|
DSL_CPE_Control_Context_t *pContext,
|
||||||
|
DSL_CPE_ResourceUsageStatisticsData_t *pData
|
||||||
|
);
|
||||||
|
#endif /* INCLUDE_DSL_RESOURCE_STATISTICS*/
|
||||||
|
|
||||||
|
#endif /* #ifndef DSL_DOC_GENERATION_EXCLUDE_UNWANTED*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
Returns the smaller of the two parameters.
|
||||||
|
Take care to use compatible types!
|
||||||
|
|
||||||
|
\param a first element to compare, [I]
|
||||||
|
\param b second element to compare, [I]
|
||||||
|
*/
|
||||||
|
#define DSL_MIN(a,b) ((a)<(b)?(a):(b))
|
||||||
|
|
||||||
|
/**
|
||||||
|
Returns the biggest of the two parameters.
|
||||||
|
Take care to use compatible types!
|
||||||
|
|
||||||
|
\param a first element to compare, [I]
|
||||||
|
\param b second element to compare, [I]
|
||||||
|
*/
|
||||||
|
#define DSL_MAX(a,b) ((a)>(b)?(a):(b))
|
||||||
|
|
||||||
|
#endif /* _DSL_CPE_CONTROL_H */
|
||||||
|
|
||||||
1099
src/dsl_cpe_debug.c
Normal file
1099
src/dsl_cpe_debug.c
Normal file
File diff suppressed because it is too large
Load diff
388
src/dsl_cpe_debug.h
Normal file
388
src/dsl_cpe_debug.h
Normal file
|
|
@ -0,0 +1,388 @@
|
||||||
|
/******************************************************************************
|
||||||
|
|
||||||
|
Copyright (c) 2007-2015
|
||||||
|
Lantiq Beteiligungs-GmbH & Co. KG
|
||||||
|
|
||||||
|
For licensing information, see the file 'LICENSE' in the root folder of
|
||||||
|
this software module.
|
||||||
|
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
#ifndef _DSL_CPE_DEBUG_H
|
||||||
|
#define _DSL_CPE_DEBUG_H
|
||||||
|
|
||||||
|
/** Defines the max. string length for group names (including termination '0') */
|
||||||
|
#define DSL_MAX_CMV_NAME_LENGTH 5
|
||||||
|
|
||||||
|
/** Defines the max. string length for group names (excluding termination '0') */
|
||||||
|
#define DSL_MAX_CMV_NAME_LENGTH_NO_TERM 4
|
||||||
|
|
||||||
|
/**
|
||||||
|
Max level of debug printouts. Compiler will automatically omit all debug
|
||||||
|
code during optimizations
|
||||||
|
*/
|
||||||
|
#ifndef DSL_CCA_DBG_MAX_LEVEL
|
||||||
|
#define DSL_CCA_DBG_MAX_LEVEL DSL_CCA_DBG_ERR
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define DSL_CCA_DBG_MAX_ENTRIES 11
|
||||||
|
|
||||||
|
#ifdef DSL_CCA_DBG_BLOCK
|
||||||
|
#undef DSL_CCA_DBG_BLOCK
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define DSL_CCA_DBG_BLOCK DSL_CCA_DBG_NO_BLOCK
|
||||||
|
|
||||||
|
/** Definitions for defining the debug level.
|
||||||
|
The smaller the value the less debug output will be printed
|
||||||
|
*/
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
/** no output */
|
||||||
|
DSL_CCA_DBG_NONE = 0x00,
|
||||||
|
/** */
|
||||||
|
DSL_CCA_DBG_PRN = 0x01,
|
||||||
|
/** errors will be printed */
|
||||||
|
DSL_CCA_DBG_ERR = 0x02,
|
||||||
|
/** warnings and errors are printed */
|
||||||
|
DSL_CCA_DBG_WRN = 0x40,
|
||||||
|
/** verbose output */
|
||||||
|
DSL_CCA_DBG_MSG = 0x80,
|
||||||
|
/** */
|
||||||
|
DSL_CCA_DBG_LOCAL = 0xFF
|
||||||
|
} DSL_CCA_debugLevels_t;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Defines all available debug modules
|
||||||
|
*/
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
/** no block selected */
|
||||||
|
DSL_CCA_DBG_NO_BLOCK = 0,
|
||||||
|
/** Application function block */
|
||||||
|
DSL_CCA_DBG_APP = 1,
|
||||||
|
/** Operating system block */
|
||||||
|
DSL_CCA_DBG_OS = 2,
|
||||||
|
/** CLI specific block */
|
||||||
|
DSL_CCA_DBG_CLI = 3,
|
||||||
|
/** Pipe specific block */
|
||||||
|
DSL_CCA_DBG_PIPE = 4,
|
||||||
|
/** Console specific block */
|
||||||
|
DSL_CCA_DBG_CONSOLE = 6,
|
||||||
|
/** TCP Message specific block */
|
||||||
|
DSL_CCA_DBG_TCPMSG = 7,
|
||||||
|
/** Multimode debug messages */
|
||||||
|
DSL_CCA_DBG_MULTIMODE = 8,
|
||||||
|
/** Debug output for notification related information's.
|
||||||
|
The related output can be used to checked that DSL Subsystem 'deliveres'
|
||||||
|
the required information towards the higher layer. For example the script
|
||||||
|
notification handling that includes important information for TC-Layer
|
||||||
|
configuration requirement. */
|
||||||
|
DSL_CCA_DBG_NOTIFICATIONS = 9,
|
||||||
|
/** Last entry for debug blocks - only used as delimiter! */
|
||||||
|
DSL_CCA_DBG_LAST_BLOCK
|
||||||
|
} DSL_CCA_debugModules_t;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Structure that is used to build up a list of debug modules and its names.
|
||||||
|
Structure that is used for printing out the names of available debug levels only.
|
||||||
|
*/
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
/** Debug level according to debug level definition */
|
||||||
|
DSL_CCA_debugLevels_t nDbgLvl;
|
||||||
|
/** Name of debug level */
|
||||||
|
DSL_char_t *pcName;
|
||||||
|
} DSL_CCA_debugLevelEntry_t;
|
||||||
|
|
||||||
|
#ifdef INCLUDE_DSL_CPE_DEBUG_LOGGER_SUPPORT
|
||||||
|
/**
|
||||||
|
Definitions for defining the debug destination.
|
||||||
|
*/
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
/** output will be passed to the console */
|
||||||
|
DSL_CCA_DBG_DST_CONSOLE = 0x00,
|
||||||
|
/** output will be passed to the logger application */
|
||||||
|
DSL_CCA_DBG_DST_LOGGER = 0x01
|
||||||
|
} DSL_CCA_debugDestinations_t;
|
||||||
|
#endif /* INCLUDE_DSL_CPE_DEBUG_LOGGER_SUPPORT */
|
||||||
|
|
||||||
|
#define DSL_CCA_DBG_MAX_PRINT_CHAR 256
|
||||||
|
|
||||||
|
#undef DSL_CCA_DBG_PRINTF
|
||||||
|
/** debug outputs mapped to standard special DSL printf() function */
|
||||||
|
#define DSL_CCA_DBG_PRINTF (void) DSL_CPE_debug_printf
|
||||||
|
|
||||||
|
|
||||||
|
/* Macro __FUNCTION__ defined in C99, use it if available, define empty macro if not. */
|
||||||
|
|
||||||
|
#if defined( __FUNCTION__)
|
||||||
|
/** debug print function */
|
||||||
|
#define DSL_CCA_DBG_PRINTF_FUNCTION DSL_CCA_DBG_PRINTF(DSL_NULL, __FUNCTION__)
|
||||||
|
#else
|
||||||
|
/** debug print function */
|
||||||
|
#define DSL_CCA_DBG_PRINTF_FUNCTION do {} while(0)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef DSL_CPE_DEBUG_DISABLE
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Kill debug defines for maximum speed and minimum code size.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** Macro to print debug info contained in "body" with a prepended header that
|
||||||
|
contains current file name, current function name (if available) and
|
||||||
|
current source line no. */
|
||||||
|
#define DSL_CCA_DEBUG_HDR(level, body) ((void)0)
|
||||||
|
/** Macro to just print debug body without header. */
|
||||||
|
#define DSL_CCA_DEBUG(level, body) ((void)0)
|
||||||
|
/** Terminate execution if assertion fails */
|
||||||
|
#define DSL_CCA_ASSERT(exp) ((void)0)
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
/**
|
||||||
|
Macro to print debug info contained in "body" with a prepended header that
|
||||||
|
contains current file name, current function name (if available) and
|
||||||
|
current source line no.
|
||||||
|
This macro does not exist for dumping information to a external
|
||||||
|
application using a registered callback. Thus it should be only used for
|
||||||
|
critical errors that will be printed to the standard output (console)
|
||||||
|
in any case. */
|
||||||
|
#define DSL_CCA_DEBUG_HDR(level, body) \
|
||||||
|
{ \
|
||||||
|
/*lint -save -e568 -e685 -e774 -e506 */ \
|
||||||
|
/* Warning 568 non-negative quantity is never less than zero */ \
|
||||||
|
/* Warning 685 Relational operator '<=' always evaluates to 'true' */ \
|
||||||
|
if ( (DSL_CCA_DBG_MAX_LEVEL >= level) && \
|
||||||
|
((((level) <= DSL_CCA_g_dbgLvl[DSL_CCA_DBG_BLOCK].nDbgLvl) && (DSL_CCA_g_globalDbgLvl == DSL_CCA_DBG_LOCAL)) \
|
||||||
|
|| (((level) <= DSL_CCA_g_globalDbgLvl) && (DSL_CCA_g_globalDbgLvl != DSL_CCA_DBG_LOCAL)))) \
|
||||||
|
{ \
|
||||||
|
DSL_CCA_DBG_PRINTF(DSL_NULL, __FILE__":"); \
|
||||||
|
DSL_CCA_DBG_PRINTF_FUNCTION; \
|
||||||
|
DSL_CCA_DBG_PRINTF(DSL_NULL, ":Line %i:" DSL_CPE_CRLF,__LINE__); \
|
||||||
|
DSL_CCA_DBG_PRINTF body; \
|
||||||
|
} \
|
||||||
|
/*lint -restore */ \
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Macro to dump debug body if line is in specified range for debug output
|
||||||
|
and if the debug level is set to an appropriate value.
|
||||||
|
The handling of the debug output is related to the former registration of
|
||||||
|
a callback function as follows:
|
||||||
|
|
||||||
|
Callback function is registered
|
||||||
|
The debug string will be passed to the upper layer software using the
|
||||||
|
callback itself in case of appropriate debug level.
|
||||||
|
|
||||||
|
NO callback function is registered
|
||||||
|
The debug string will be printed to the standard output (console) in
|
||||||
|
case of appropriate debug level.
|
||||||
|
|
||||||
|
\attention The implementation of this macro needs a valid context pointer
|
||||||
|
from the DSL API. Thus you shall use this macro AFTER complete
|
||||||
|
initialization of the DSL API only!
|
||||||
|
*/
|
||||||
|
#define DSL_CCA_DEBUG(level, body) \
|
||||||
|
{ \
|
||||||
|
/*lint -save -e568 -e685 -e774 -e506 */ \
|
||||||
|
/* Warning 568 non-negative quantity is never less than zero */ \
|
||||||
|
/* Warning 685 Relational operator '<=' always evaluates to 'true' */ \
|
||||||
|
if ( (DSL_CCA_DBG_MAX_LEVEL >= level) ) \
|
||||||
|
{ \
|
||||||
|
if ( ((((level) <= DSL_CCA_g_dbgLvl[DSL_CCA_DBG_BLOCK].nDbgLvl) && (DSL_CCA_g_globalDbgLvl == DSL_CCA_DBG_LOCAL))) \
|
||||||
|
|| (((level) <= DSL_CCA_g_globalDbgLvl) && (DSL_CCA_g_globalDbgLvl != DSL_CCA_DBG_LOCAL)) ) \
|
||||||
|
{ \
|
||||||
|
DSL_CCA_DBG_PRINTF body; \
|
||||||
|
} \
|
||||||
|
} \
|
||||||
|
/*lint -restore */ \
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/** Macro to get debug level for actual debug block */
|
||||||
|
#define DSL_CCA_DEBUG_LEVEL_GET (DSL_CCA_g_dbgLvl[DSL_CCA_DBG_BLOCK].nDbgLvl)
|
||||||
|
|
||||||
|
|
||||||
|
/** Terminate execution if assertion fails */
|
||||||
|
#define DSL_CCA_ASSERT(exp) \
|
||||||
|
{ \
|
||||||
|
if (!(exp)) \
|
||||||
|
{ \
|
||||||
|
DSL_CCA_DBG_PRINTF(DSL_NULL, __FILE__":"); \
|
||||||
|
DSL_CCA_DBG_PRINTF_FUNCTION; \
|
||||||
|
DSL_CCA_DBG_PRINTF(DSL_NULL, ":Line %i:" DSL_CPE_CRLF,__LINE__); \
|
||||||
|
DSL_CCA_DBG_PRINTF(DSL_NULL, "Assertion failed." DSL_CPE_CRLF ); \
|
||||||
|
while(1) ; \
|
||||||
|
} \
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Import global variables from lib_dsl_debug.c */
|
||||||
|
|
||||||
|
extern DSL_CCA_debugLevelEntry_t DSL_CCA_g_dbgLvl[DSL_CCA_DBG_MAX_ENTRIES];
|
||||||
|
extern DSL_CCA_debugLevels_t DSL_CCA_g_globalDbgLvl;
|
||||||
|
#ifdef INCLUDE_DSL_CPE_DEBUG_LOGGER_SUPPORT
|
||||||
|
extern DSL_CCA_debugDestinations_t DSL_CCA_g_dbgDestination;
|
||||||
|
#endif /* INCLUDE_DSL_CPE_DEBUG_LOGGER_SUPPORT */
|
||||||
|
#ifndef _lint
|
||||||
|
extern DSL_CCA_debugLevelEntry_t DSL_CCA_g_dbgLvlNames[];
|
||||||
|
extern const DSL_uint8_t DSL_CCA_g_dbgLvlNumber;
|
||||||
|
#endif /* _lint*/
|
||||||
|
#endif /* ifdef DSL_CPE_DEBUG_DISABLE */
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
A structure for event type<->string conversion tables.
|
||||||
|
*/
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
/** group name string */
|
||||||
|
DSL_char_t *psGroupName;
|
||||||
|
/** group ID */
|
||||||
|
DSL_int_t nGroupId;
|
||||||
|
} DSL_CmvGroupEntry_t;
|
||||||
|
|
||||||
|
|
||||||
|
DSL_Error_t DSL_CMV_Read
|
||||||
|
(
|
||||||
|
DSL_CPE_Control_Context_t *pContext,
|
||||||
|
DSL_char_t *str_group,
|
||||||
|
DSL_uint16_t address,
|
||||||
|
DSL_uint16_t index,
|
||||||
|
DSL_int_t size,
|
||||||
|
DSL_uint16_t *pData
|
||||||
|
);
|
||||||
|
|
||||||
|
DSL_Error_t DSL_CMV_Write
|
||||||
|
(
|
||||||
|
DSL_CPE_Control_Context_t *pContext,
|
||||||
|
DSL_char_t *str_group,
|
||||||
|
DSL_uint16_t address,
|
||||||
|
DSL_uint16_t index,
|
||||||
|
DSL_int_t size,
|
||||||
|
DSL_uint16_t *pData
|
||||||
|
);
|
||||||
|
|
||||||
|
#if defined (INCLUDE_DSL_CPE_API_DANUBE)
|
||||||
|
void DSL_CMV_Prepare
|
||||||
|
(
|
||||||
|
DSL_uint8_t opcode,
|
||||||
|
DSL_uint8_t group,
|
||||||
|
DSL_uint16_t address,
|
||||||
|
DSL_uint16_t index,
|
||||||
|
DSL_int_t size,
|
||||||
|
DSL_uint16_t *data,
|
||||||
|
DSL_uint16_t *Message
|
||||||
|
);
|
||||||
|
#endif /* defined (INCLUDE_DSL_CPE_API_DANUBE)*/
|
||||||
|
|
||||||
|
#if defined (INCLUDE_DSL_CPE_API_DANUBE)
|
||||||
|
#include "dsl_cpe_debug_danube.h"
|
||||||
|
#elif defined (INCLUDE_DSL_CPE_API_VRX)
|
||||||
|
#include "dsl_cpe_debug_vrx.h"
|
||||||
|
#else
|
||||||
|
#error "xDSL chip not specified!"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/** TCP messages debug stuff, for Danube for the time present */
|
||||||
|
|
||||||
|
#ifdef DSL_DEBUG_TOOL_INTERFACE
|
||||||
|
|
||||||
|
/* Tcp debug messages stuff */
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
DSL_int_t fd;
|
||||||
|
DSL_sockaddr_in_t client_addr;
|
||||||
|
DSL_void_t *pDevData;
|
||||||
|
} DSL_CPE_TcpDebugClientInfo_t;
|
||||||
|
|
||||||
|
#ifdef INCLUDE_DSL_CPE_CLI_SUPPORT
|
||||||
|
typedef struct {
|
||||||
|
DSL_int_t fd;
|
||||||
|
DSL_sockaddr_in_t client_addr;
|
||||||
|
DSL_char_t *buf;
|
||||||
|
DSL_char_t *pPos;
|
||||||
|
DSL_CPE_File_t *out;
|
||||||
|
} DSL_CPE_TcpDebugCliClientInfo_t;
|
||||||
|
#endif /* INCLUDE_DSL_CPE_CLI_SUPPORT*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
This structure is used to get resource usage statistics
|
||||||
|
data
|
||||||
|
*/
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
Total memory allocated statically (bytes) */
|
||||||
|
DSL_uint32_t staticMemUsage;
|
||||||
|
/**
|
||||||
|
Total memory allocated dynamically (bytes) */
|
||||||
|
DSL_uint32_t dynamicMemUsage;
|
||||||
|
} DSL_CPE_TcpDebugResourceUsageStatisticsData_t;
|
||||||
|
|
||||||
|
DSL_void_t DSL_CPE_DEV_DeviceDataFree(DSL_void_t *pDevData);
|
||||||
|
|
||||||
|
DSL_int_t DSL_CPE_DEV_TcpMessageHandle
|
||||||
|
(
|
||||||
|
DSL_CPE_TcpDebugClientInfo_t *pDevData
|
||||||
|
);
|
||||||
|
|
||||||
|
#ifdef INCLUDE_DSL_RESOURCE_STATISTICS
|
||||||
|
DSL_Error_t DSL_CPE_DEV_TcpDebugMessageResourceUsageGet(
|
||||||
|
DSL_CPE_TcpDebugClientInfo_t *clientInfo,
|
||||||
|
DSL_uint32_t *pStaticMemUsage,
|
||||||
|
DSL_uint32_t *pDynamicMemUsage);
|
||||||
|
#endif /* INCLUDE_DSL_RESOURCE_STATISTICS*/
|
||||||
|
|
||||||
|
#ifdef INCLUDE_DSL_RESOURCE_STATISTICS
|
||||||
|
DSL_Error_t DSL_CPE_TcpDebugMessageResourceUsageGet (
|
||||||
|
DSL_CPE_Control_Context_t * pContext,
|
||||||
|
DSL_CPE_TcpDebugResourceUsageStatisticsData_t *pResUsage);
|
||||||
|
#endif /* INCLUDE_DSL_RESOURCE_STATISTICS*/
|
||||||
|
|
||||||
|
DSL_Error_t DSL_CPE_TcpDebugMessageIntfStart (
|
||||||
|
DSL_CPE_Control_Context_t * pContext,
|
||||||
|
DSL_uint16_t nTcpListenPort, DSL_char_t *sTcpServerIp);
|
||||||
|
|
||||||
|
DSL_Error_t DSL_CPE_TcpDebugMessageIntfStop (
|
||||||
|
DSL_CPE_Control_Context_t * pContext);
|
||||||
|
|
||||||
|
DSL_Error_t DSL_CPE_TcpDebugCliIntfStart (
|
||||||
|
DSL_CPE_Control_Context_t * pContext,
|
||||||
|
DSL_boolean_t bEnableTcpCli);
|
||||||
|
|
||||||
|
DSL_Error_t DSL_CPE_TcpDebugCliIntfStop (
|
||||||
|
DSL_CPE_Control_Context_t * pContext);
|
||||||
|
|
||||||
|
#ifdef DSL_DEBUG_TOOL_INTERFACE
|
||||||
|
/** TCP messages server ip address */
|
||||||
|
extern DSL_char_t *g_sTcpMessagesSocketAddr;
|
||||||
|
/** TCP messages server port */
|
||||||
|
extern DSL_uint16_t g_nTcpMessagesSocketPort;
|
||||||
|
extern DSL_boolean_t g_bEnableTcpCli;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/** TCP messages server port */
|
||||||
|
#define DSL_CPE_TCP_MESSAGES_PORT 2000
|
||||||
|
|
||||||
|
/** default value for enabling TCP CLI */
|
||||||
|
#define DSL_CPE_ENABLE_TCP_CLI_DEFAULT DSL_TRUE
|
||||||
|
|
||||||
|
/** TCP CLI server port */
|
||||||
|
#define DSL_CPE_TCP_CLI_PORT 2001
|
||||||
|
|
||||||
|
/** TCP CLI command maximum length */
|
||||||
|
#define DSL_CPE_TCP_CLI_COMMAND_LENGTH_MAX 2048
|
||||||
|
|
||||||
|
/** TCP messages select timeout */
|
||||||
|
#define DSL_CPE_TCP_LISTEN_SELECT_TIMEOUT 100
|
||||||
|
|
||||||
|
/** TCP messages thread shutdown timeout */
|
||||||
|
#define DSL_CPE_TCP_THREAD_SHUTDOWN_TIMEOUT 1000
|
||||||
|
|
||||||
|
#endif /* #ifdef DSL_DEBUG_TOOL_INTERFACE*/
|
||||||
|
|
||||||
|
#endif /* _DSL_CPE_DEBUG_H */
|
||||||
|
|
||||||
1649
src/dsl_cpe_debug_vrx.c
Normal file
1649
src/dsl_cpe_debug_vrx.c
Normal file
File diff suppressed because it is too large
Load diff
319
src/dsl_cpe_debug_vrx.h
Normal file
319
src/dsl_cpe_debug_vrx.h
Normal file
|
|
@ -0,0 +1,319 @@
|
||||||
|
/******************************************************************************
|
||||||
|
|
||||||
|
Copyright (c) 2007-2015
|
||||||
|
Lantiq Beteiligungs-GmbH & Co. KG
|
||||||
|
|
||||||
|
For licensing information, see the file 'LICENSE' in the root folder of
|
||||||
|
this software module.
|
||||||
|
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
#ifndef _DSL_CPE_DEBUG_VRX_H
|
||||||
|
#define _DSL_CPE_DEBUG_VRX_H
|
||||||
|
|
||||||
|
#ifdef DSL_DEBUG_TOOL_INTERFACE
|
||||||
|
|
||||||
|
|
||||||
|
#include "cmv_message_format.h"
|
||||||
|
|
||||||
|
#if defined(INCLUDE_DSL_CPE_API_VRX)
|
||||||
|
/* MEI CPE driver specific headers*/
|
||||||
|
#include "drv_mei_cpe_interface.h"
|
||||||
|
#else
|
||||||
|
#error "Device undefined!"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(INCLUDE_DSL_CPE_API_VRX)
|
||||||
|
#define DSL_CPE_IFX_LOW_DEV "/dev/mei_cpe"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(INCLUDE_DSL_CPE_API_VRX)
|
||||||
|
/* MEI CPE driver interface IOCTLs wrappers*/
|
||||||
|
#define FIO_VRX_REQ_CONFIG FIO_MEI_REQ_CONFIG
|
||||||
|
#define FIO_VRX_MBOX_MSG_RAW_SEND FIO_MEI_MBOX_MSG_RAW_SEND
|
||||||
|
#define FIO_VRX_REG_GET FIO_MEI_REG_GET
|
||||||
|
#define FIO_VRX_REG_SET FIO_MEI_REG_SET
|
||||||
|
#define FIO_VRX_DBG_LS_WRITE FIO_MEI_DBG_LS_WRITE
|
||||||
|
#define FIO_VRX_DBG_LS_READ FIO_MEI_DBG_LS_READ
|
||||||
|
/* MEI CPE driver interface data types wrappers*/
|
||||||
|
typedef IOCTL_MEI_reqCfg_t IOCTL_VRX_reqCfg_t;
|
||||||
|
typedef IOCTL_MEI_mboxSend_t IOCTL_VRX_mboxSend_t;
|
||||||
|
typedef IOCTL_MEI_regInOut_t IOCTL_VRX_regInOut_t;
|
||||||
|
typedef IOCTL_MEI_dbgAccess_t IOCTL_VRX_dbgAccess_t;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define WINHOST_VDSL2_DFE_CHANNELS_AVAILABLE 2
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
DSL_int_t socket_fd;
|
||||||
|
/* device file descriptor */
|
||||||
|
DSL_int_t arrDeviceFd[WINHOST_VDSL2_DFE_CHANNELS_AVAILABLE];
|
||||||
|
/* response message*/
|
||||||
|
CMV_MESSAGE_ALL_T CmvMsg;
|
||||||
|
/* index of free space in Buffer */
|
||||||
|
DSL_char_t *pEndReceive;
|
||||||
|
/* Buffer for the received data*/
|
||||||
|
DSL_char_t Buffer[3*CMV_MESSAGE_SIZE];
|
||||||
|
} DSL_VRX_TcpDebugInfo_t;
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef __BYTE_ORDER
|
||||||
|
#error __BYTE_ORDER has to be defined through including of drv_dsl_cpe_os.h
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define WINHOST_REMOTE_SW_BYTE_ORDER __BIG_ENDIAN
|
||||||
|
/*#define WINHOST_REMOTE_SW_BYTE_ORDER __LITTLE_ENDIAN*/
|
||||||
|
|
||||||
|
/* ============================================================================
|
||||||
|
Macros & Definitions
|
||||||
|
========================================================================= */
|
||||||
|
|
||||||
|
#if ((__BYTE_ORDER == __BIG_ENDIAN ) && (WINHOST_REMOTE_SW_BYTE_ORDER == __LITTLE_ENDIAN)) || \
|
||||||
|
((__BYTE_ORDER == __LITTLE_ENDIAN ) && (WINHOST_REMOTE_SW_BYTE_ORDER == __BIG_ENDIAN))
|
||||||
|
|
||||||
|
#define N2H_SWAP_CMV_BLOCK_WORD(cmvMsg, startIdx, count_16)\
|
||||||
|
N2H_SwapCmvBlockWord(cmvMsg, startIdx, count_16)
|
||||||
|
|
||||||
|
#define H2N_SWAP_CMV_BLOCK_WORD(cmvMsg, startIdx, count_16)\
|
||||||
|
H2N_SwapCmvBlockWord(cmvMsg, startIdx, count_16)
|
||||||
|
|
||||||
|
#define N2H_SWAP_CMV_PAYL_DWORD(cmvMsg, startIdx, count_32)\
|
||||||
|
N2H_SwapCmvPaylDWord(cmvMsg, startIdx, count_32)
|
||||||
|
|
||||||
|
#define H2N_SWAP_CMV_PAYL_DWORD(cmvMsg, startIdx, count_32)\
|
||||||
|
H2N_SwapCmvPaylDWord(cmvMsg, startIdx, count_32)
|
||||||
|
|
||||||
|
#else
|
||||||
|
#define N2H_SWAP_CMV_BLOCK_WORD(cmvMsg, startIdx, count_16)
|
||||||
|
#define H2N_SWAP_CMV_BLOCK_WORD(cmvMsg, startIdx, count_16)
|
||||||
|
#define N2H_SWAP_CMV_PAYL_DWORD(cmvMsg, startIdx, count_32)
|
||||||
|
#define H2N_SWAP_CMV_PAYL_DWORD(cmvMsg, startIdx, count_32)
|
||||||
|
|
||||||
|
/*#define SWAP_CMV_PAYL_32_VS_16(cmvMsg, startIdx, count_32) */
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define SWAP_CMV_PAYL_32_VS_16(cmvMsg, startIdx, count_32)\
|
||||||
|
SwapCmvPayl_32vs16(cmvMsg, startIdx, count_32)
|
||||||
|
|
||||||
|
#if 1
|
||||||
|
#define TCP_DEBUG_SWAP_HOST32_TARGET8(x) ( (((x)&0xFFFF0000)>>16) \
|
||||||
|
|(((x)&0x0000FFFF)<<16) )
|
||||||
|
#define TCP_DEBUG_SWAP_HOST32_TARGET16(x) ( (((x)&0xFFFF0000)>>16) \
|
||||||
|
|(((x)&0x0000FFFF)<<16) )
|
||||||
|
|
||||||
|
#define TCP_DEBUG_SWAP_HOST32_TARGET32(x) ( (((x)&0xFFFF0000)>>16) \
|
||||||
|
|(((x)&0x0000FFFF)<<16) )
|
||||||
|
|
||||||
|
#define TCP_DEBUG_SWAP_HOST16_TARGET16(x) ( (((x)&0xFF00)>>8) \
|
||||||
|
|(((x)&0x00FF)<<8) )
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
#define TCP_DEBUG_SWAP_HOST32_TARGET8(x) (x)
|
||||||
|
#define TCP_DEBUG_SWAP_HOST32_TARGET16(x) (x)
|
||||||
|
#define TCP_DEBUG_SWAP_HOST32_TARGET32(x) (x)
|
||||||
|
#define TCP_DEBUG_SWAP_HOST16_TARGET16(x) (x)
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#if 1
|
||||||
|
|
||||||
|
#define TCP_DEBUG_SWAP_TARGET8_HOST32(x) ( (((x)&0xFFFF0000)>>16) \
|
||||||
|
|(((x)&0x0000FFFF)<<16) )
|
||||||
|
#define TCP_DEBUG_SWAP_TARGET16_HOST32(x) ( (((x)&0xFFFF0000)>>16) \
|
||||||
|
|(((x)&0x0000FFFF)<<16) )
|
||||||
|
#define TCP_DEBUG_SWAP_TARGET32_HOST32(x) ( (((x)&0xFFFF0000)>>16) \
|
||||||
|
|(((x)&0x0000FFFF)<<16) )
|
||||||
|
#else
|
||||||
|
|
||||||
|
#define TCP_DEBUG_SWAP_TARGET8_HOST32(x) (x)
|
||||||
|
#define TCP_DEBUG_SWAP_TARGET16_HOST32(x) (x)
|
||||||
|
#define TCP_DEBUG_SWAP_TARGET32_HOST32(x) (x)
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/* ============================================================================
|
||||||
|
Debug Read/Write Buffer
|
||||||
|
========================================================================= */
|
||||||
|
/* two 32bit elements margin, if request address is not 32bit aligned */
|
||||||
|
typedef union cmv_debug_access_buffer_s
|
||||||
|
{
|
||||||
|
unsigned char params_8Bit[CMV_USED_PAYLOAD_8BIT_SIZE + 8];
|
||||||
|
unsigned short params_16Bit[CMV_USED_PAYLOAD_16BIT_SIZE + 4];
|
||||||
|
unsigned int params_32Bit[CMV_USED_PAYLOAD_32BIT_SIZE + 2];
|
||||||
|
} CMV_DEBUG_ACCESS_BUFFER_T;
|
||||||
|
|
||||||
|
|
||||||
|
/* ============================================================================
|
||||||
|
CMV Message format: offset code [16 bit]
|
||||||
|
========================================================================= */
|
||||||
|
#define CMV_MSGHDR_CODE_MBOX_CODE_POS (0)
|
||||||
|
#define CMV_MSGHDR_CODE_MBOX_CODE_MASK (0x00FF << CMV_MSGHDR_CODE_MBOX_CODE_POS)
|
||||||
|
|
||||||
|
#define CMV_MSGHDR_CODE_PORT_NUMBER_POS (8)
|
||||||
|
#define CMV_MSGHDR_CODE_PORT_NUMBER_MASK (0x003F << CMV_MSGHDR_CODE_PORT_NUMBER_POS)
|
||||||
|
|
||||||
|
#define CMV_MSGHDR_CODE_RESERVED_POS (14)
|
||||||
|
#define CMV_MSGHDR_CODE_RESERVED_MASK (0x0003 << CMV_MSGHDR_CODE_RESERVED_POS)
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Access Macros Offset code
|
||||||
|
*/
|
||||||
|
#define P_CMV_MSGHDR_CODE_MBOX_CODE_GET(pmsg) \
|
||||||
|
((pmsg->header.mbxCode & CMV_MSGHDR_CODE_MBOX_CODE_MASK) >> CMV_MSGHDR_CODE_MBOX_CODE_POS)
|
||||||
|
|
||||||
|
#define CMV_MSGHDR_CODE_MBOX_CODE_GET(msg) \
|
||||||
|
((msg.header.mbxCode & CMV_MSGHDR_CODE_MBOX_CODE_MASK) >> CMV_MSGHDR_CODE_MBOX_CODE_POS)
|
||||||
|
|
||||||
|
#define P_CMV_MSGHDR_CODE_MBOX_CODE_SET(pmsg, val) ( pmsg->header.mbxCode = \
|
||||||
|
( (pmsg->header.mbxCode & ~(CMV_MSGHDR_CODE_MBOX_CODE_MASK)) | \
|
||||||
|
((val << CMV_MSGHDR_CODE_MBOX_CODE_POS) & (CMV_MSGHDR_CODE_MBOX_CODE_MASK)) ) )
|
||||||
|
|
||||||
|
#define CMV_MSGHDR_CODE_MBOX_CODE_SET(msg, val) ( msg.header.mbxCode = \
|
||||||
|
( (msg.header.mbxCode & ~(CMV_MSGHDR_CODE_MBOX_CODE_MASK)) | \
|
||||||
|
((val << CMV_MSGHDR_CODE_MBOX_CODE_POS) & (CMV_MSGHDR_CODE_MBOX_CODE_MASK)) ) )
|
||||||
|
|
||||||
|
#define P_CMV_MSGHDR_CODE_PORT_NUMBER_GET(pmsg) \
|
||||||
|
((pmsg->header.mbxCode & (CMV_MSGHDR_CODE_PORT_NUMBER_MASK)) >> CMV_MSGHDR_CODE_PORT_NUMBER_POS)
|
||||||
|
|
||||||
|
#define CMV_MSGHDR_CODE_PORT_NUMBER_GET(msg) \
|
||||||
|
((msg.header.mbxCode & (CMV_MSGHDR_CODE_PORT_NUMBER_MASK)) >> CMV_MSGHDR_CODE_PORT_NUMBER_POS)
|
||||||
|
|
||||||
|
#define P_CMV_MSGHDR_CODE_PORT_NUMBER_SET(pmsg, val) ( pmsg->header.mbxCode = \
|
||||||
|
( (pmsg->header.mbxCode & ~(CMV_MSGHDR_CODE_PORT_NUMBER_MASK)) | \
|
||||||
|
((val << CMV_MSGHDR_CODE_PORT_NUMBER_POS) & (CMV_MSGHDR_CODE_PORT_NUMBER_MASK)) ) )
|
||||||
|
|
||||||
|
#define CMV_MSGHDR_CODE_PORT_NUMBER_SET(msg, val) ( msg.header.mbxCode = \
|
||||||
|
( (msg.header.mbxCode & ~(CMV_MSGHDR_CODE_PORT_NUMBER_MASK)) | \
|
||||||
|
((val << CMV_MSGHDR_CODE_PORT_NUMBER_POS) & (CMV_MSGHDR_CODE_PORT_NUMBER_MASK)) ) )
|
||||||
|
|
||||||
|
|
||||||
|
#define P_CMV_MSGHDR_CODE_RESERVED_GET(pmsg) \
|
||||||
|
((pmsg->header.mbxCode & CMV_MSGHDR_CODE_RESERVED_MASK) >> CMV_MSGHDR_CODE_RESERVED_POS)
|
||||||
|
|
||||||
|
#define CMV_MSGHDR_CODE_RESERVED_GET(msg) \
|
||||||
|
((msg.header.mbxCode & CMV_MSGHDR_CODE_RESERVED_MASK) >> CMV_MSGHDR_CODE_RESERVED_POS)
|
||||||
|
|
||||||
|
#define P_CMV_MSGHDR_CODE_RESERVED_SET(pmsg, val) ( pmsg->header.mbxCode = \
|
||||||
|
( (pmsg->header.mbxCode & ~(CMV_MSGHDR_CODE_RESERVED_MASK)) | \
|
||||||
|
((val << CMV_MSGHDR_CODE_RESERVED_POS) & (CMV_MSGHDR_CODE_RESERVED_MASK)) ) )
|
||||||
|
|
||||||
|
#define CMV_MSGHDR_CODE_RESERVED_SET(msg, val) ( msg.header.mbxCode = \
|
||||||
|
( (msg.header.mbxCode & ~(CMV_MSGHDR_CODE_RESERVED_MASK)) | \
|
||||||
|
((val << CMV_MSGHDR_CODE_RESERVED_POS) & (CMV_MSGHDR_CODE_RESERVED_MASK)) ) )
|
||||||
|
|
||||||
|
|
||||||
|
/* ============================================================================
|
||||||
|
CMV Message format: offset 1 [16 bit]
|
||||||
|
========================================================================= */
|
||||||
|
#define CMV_RESPONSE_RESULT_CODE_POS (0)
|
||||||
|
#define CMV_RESPONSE_RESULT_CODE_MASK (0xFFFF << CMV_RESPONSE_RESULT_CODE_POS)
|
||||||
|
|
||||||
|
/*
|
||||||
|
Access Macros Offset 1
|
||||||
|
*/
|
||||||
|
#define P_CMV_MSGHDR_RESULT_CODE_GET(pmsg) \
|
||||||
|
((pmsg->header.MessageID & CMV_RESPONSE_RESULT_CODE_MASK) >> CMV_RESPONSE_RESULT_CODE_POS)
|
||||||
|
#define CMV_MSGHDR_RESULT_CODE_GET(msg) \
|
||||||
|
((msg.header.MessageID & CMV_RESPONSE_RESULT_CODE_MASK) >> CMV_RESPONSE_RESULT_CODE_POS)
|
||||||
|
#define P_CMV_MSGHDR_RESULT_CODE_SET(pmsg, val) ( pmsg->header.MessageID = \
|
||||||
|
(unsigned short)( (pmsg->header.MessageID & ~(CMV_RESPONSE_RESULT_CODE_MASK)) | \
|
||||||
|
((val << CMV_RESPONSE_RESULT_CODE_POS) & ~(CMV_RESPONSE_RESULT_CODE_MASK)) ) )
|
||||||
|
#define CMV_MSGHDR_RESULT_CODE_SET(msg, val) ( msg.header.MessageID = \
|
||||||
|
(unsigned short)( (msg.header.MessageID & ~(CMV_RESPONSE_RESULT_CODE_MASK)) | \
|
||||||
|
(((val) << CMV_RESPONSE_RESULT_CODE_POS) & ~(CMV_RESPONSE_RESULT_CODE_MASK)) ) )
|
||||||
|
|
||||||
|
|
||||||
|
/* ============================================================================
|
||||||
|
CMV Message format: offset 2 [16 bit]
|
||||||
|
========================================================================= */
|
||||||
|
/* CMV header MSW debug address field */
|
||||||
|
#define P_CMV_MSGHDR_ADDR_MSW_GET(pmsg) (pmsg->rawMsg[3])
|
||||||
|
#define CMV_MSGHDR_ADDR_MSW_GET(msg) (msg.rawMsg[3])
|
||||||
|
#define P_CMV_MSGHDR_ADDR_MSW_SET(pmsg, val) (pmsg->rawMsg[3] = val)
|
||||||
|
#define CMV_MSGHDR_ADDR_MSW_SET(msg, val) (msg.rawMsg[3] = val)
|
||||||
|
|
||||||
|
|
||||||
|
/* ============================================================================
|
||||||
|
CMV Message format: offset 3 [16 bit]
|
||||||
|
========================================================================= */
|
||||||
|
/* CMV header LSW debug address field */
|
||||||
|
#define P_CMV_MSGHDR_MEI_ADDR_GET(pmsg) (pmsg->rawMsg[3])
|
||||||
|
#define CMV_MSGHDR_MEI_ADDR_GET(msg) (msg.rawMsg[3])
|
||||||
|
#define P_CMV_MSGHDR_MEI_ADDR_SET(pmsg, val) (pmsg->rawMsg[3] = val)
|
||||||
|
#define CMV_MSGHDR_MEI_ADDR_SET(msg, val) (msg.rawMsg[3] = val)
|
||||||
|
|
||||||
|
|
||||||
|
/* ============================================================================
|
||||||
|
CMV Message format: offset 3 [16 bit]
|
||||||
|
========================================================================= */
|
||||||
|
/* CMV header LSW debug address field */
|
||||||
|
#define P_CMV_MSGHDR_ADDR_LSW_GET(pmsg) (pmsg->rawMsg[4])
|
||||||
|
#define CMV_MSGHDR_ADDR_LSW_GET(msg) (msg.rawMsg[4])
|
||||||
|
#define P_CMV_MSGHDR_ADDR_LSW_SET(pmsg, val) (pmsg->rawMsg[4] = val)
|
||||||
|
#define CMV_MSGHDR_ADDR_LSW_SET(msg, val) (msg.rawMsg[4] = val)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* ========================================================================
|
||||||
|
Definition of the MESSAGE MAILBOX CODES.
|
||||||
|
===================================================================== */
|
||||||
|
/* Must be interpreted by the WinHost task */
|
||||||
|
#define CMV_MBOX_CODE_ME_MSG 0x80
|
||||||
|
|
||||||
|
|
||||||
|
/* ========================================================================
|
||||||
|
Definition of the MESSAGE OPCODES.
|
||||||
|
===================================================================== */
|
||||||
|
/*
|
||||||
|
NOTE:
|
||||||
|
The MESSAGE OPCODE is a combination of thection fields:
|
||||||
|
OPCODE, MSG MODE and DIRECTION
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Message Codes: WinHost-to-MEI */
|
||||||
|
#define H2DCE_DEBUG_REBOOT 0x04
|
||||||
|
#define H2DCE_DEBUG_DOWNLOAD 0x0A
|
||||||
|
#define H2DCE_DEBUG_RUN 0x0C
|
||||||
|
#define H2DCE_DEBUG_HALT 0x0E
|
||||||
|
#define H2DCE_DEBUG_READ_MEI 0x06
|
||||||
|
#define H2DCE_DEBUG_WRITE_MEI 0x08
|
||||||
|
#define H2DCE_DEBUG_READDEBUG 0x14
|
||||||
|
#define H2DCE_DEBUG_WRITEDEBUG 0x12
|
||||||
|
#define H2DCE_MBOX_PAYLOAD_SIZE_QUERY 0x16
|
||||||
|
|
||||||
|
/* Message Codes: MEI-to-Winhost */
|
||||||
|
#if 0
|
||||||
|
#define DCE2H_DEBUG_RESET_ACK 0x03
|
||||||
|
#define DCE2H_DEBUG_REBOOT_ACK 0x05
|
||||||
|
#define DCE2H_ERROR_OPCODE_UNKNOWN 0x0B
|
||||||
|
#define DCE2H_ERROR_ADDR_UNKNOWN 0x0D
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define DCE2H_RESPONSE 0x0F
|
||||||
|
#define DCE2H_DEBUG_READ_MEI_REPLY 0x07
|
||||||
|
#define DCE2H_DEBUG_WRITE_MEI_REPLY 0x09
|
||||||
|
#define DCE2H_DEBUG_WRITEDEBUG_ACK 0x13
|
||||||
|
#define DCE2H_DEBUG_READDEBUG_ACK 0x15
|
||||||
|
#define DCE2H_MBOX_PAYLOAD_SIZE_REPLY 0x17
|
||||||
|
|
||||||
|
/* Message Result Codes: MEI-to-Winhost Response */
|
||||||
|
#define DCE2H_RESPONSE_SUCCESS 0x00
|
||||||
|
#define DCE2H_RESPONSE_TIMEOUT 0x10
|
||||||
|
#define DCE2H_RESPONSE_MEI_REG_RD_ERROR 0x20
|
||||||
|
#define DCE2H_RESPONSE_MEI_REG_WR_ERROR 0x30
|
||||||
|
#define DCE2H_RESPONSE_HOST_DBG_PORT_RD_ERROR 0x40
|
||||||
|
#define DCE2H_RESPONSE_HOST_DBG_PORT_WR_ERROR DCE2H_RESPONSE_TIMEOUT
|
||||||
|
#define DCE2H_RESPONSE_MODEM_READY_TIMEOUT 0x50
|
||||||
|
#define DCE2H_RESPONSE_MODEM_READY_AC_CLK 0x51
|
||||||
|
|
||||||
|
DSL_int_t DSL_CPE_DEV_DeviceOpen(DSL_char_t *pDevName, DSL_uint32_t dev_num);
|
||||||
|
|
||||||
|
#endif /* #ifdef DSL_DEBUG_TOOL_INTERFACE*/
|
||||||
|
|
||||||
|
#endif /* _DSL_CPE_DEBUG_VRX_H */
|
||||||
527
src/dsl_cpe_dti.c
Normal file
527
src/dsl_cpe_dti.c
Normal file
|
|
@ -0,0 +1,527 @@
|
||||||
|
/******************************************************************************
|
||||||
|
|
||||||
|
Copyright 2018, Intel Corporation
|
||||||
|
|
||||||
|
Copyright (c) 2007-2015
|
||||||
|
Lantiq Beteiligungs-GmbH & Co. KG
|
||||||
|
|
||||||
|
For licensing information, see the file 'LICENSE' in the root folder of
|
||||||
|
this software module.
|
||||||
|
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
/** \file
|
||||||
|
DSL daemon command line interface for the Debug & Trace Interface
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*#define DEBUG_CONSOLE*/
|
||||||
|
|
||||||
|
/* ============================================================================
|
||||||
|
inlcudes
|
||||||
|
========================================================================= */
|
||||||
|
#include "dsl_cpe_control.h"
|
||||||
|
|
||||||
|
#if defined(INCLUDE_DSL_CPE_DTI_SUPPORT)
|
||||||
|
|
||||||
|
#include "dsl_cpe_os.h"
|
||||||
|
#include "dsl_cpe_cli.h"
|
||||||
|
#include "dsl_cpe_dti.h"
|
||||||
|
|
||||||
|
/* get the DTI interface defines */
|
||||||
|
#include "dti_agent_interface.h"
|
||||||
|
#include "dti_cli_interface.h"
|
||||||
|
|
||||||
|
#ifdef DTI_STATIC
|
||||||
|
#undef DTI_STATIC
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (defined(DTI_DEBUG) || 1)
|
||||||
|
#define DTI_STATIC
|
||||||
|
#else
|
||||||
|
#define DTI_STATIC static
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (DTI_AGENT_VER_MAJOR >= 1)
|
||||||
|
/*
|
||||||
|
Note: With the DTI Version >= 1.0.0 the following changes have been made:
|
||||||
|
- Build process:
|
||||||
|
use dynamic libraries
|
||||||
|
- Device handling:
|
||||||
|
allow several devices in parallel
|
||||||
|
separate device handling (device part will be in a own library)
|
||||||
|
- Interface:
|
||||||
|
New interface to start and register several devices.
|
||||||
|
*/
|
||||||
|
# define DTI_INTERFACE_VERSION 1
|
||||||
|
#else
|
||||||
|
# define DTI_INTERFACE_VERSION 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(INCLUDE_DSL_CPE_API_VRX) && (DTI_INTERFACE_VERSION > 0)
|
||||||
|
extern DTI_DeviceAccessFct_t DTI_DeviceAccessFct_VRX;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* ============================================================================
|
||||||
|
Local defines
|
||||||
|
========================================================================= */
|
||||||
|
|
||||||
|
struct DSL_CPE_Dti_Context_s
|
||||||
|
{
|
||||||
|
/* points to the DTI Agent context pointer */
|
||||||
|
DTI_AgentCtx_t *pDtiAgent;
|
||||||
|
|
||||||
|
/* enable / disbale DTI interface */
|
||||||
|
volatile DSL_boolean_t bEnabled;
|
||||||
|
/* if number */
|
||||||
|
volatile DSL_int_t ifNum;
|
||||||
|
/** dsl cpe api context pointer */
|
||||||
|
DSL_CPE_Control_Context_t *pDSLContext;
|
||||||
|
/** console pointer (event handling) */
|
||||||
|
DSL_CLI_Context_t *pCLIContext;
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef struct DSL_CPE_Dti_Context_s DSL_CPE_Dti_Context_t;
|
||||||
|
|
||||||
|
|
||||||
|
/* ============================================================================
|
||||||
|
Local Function declarations
|
||||||
|
========================================================================= */
|
||||||
|
DTI_STATIC DSL_int_t DSL_CPE_CLI_Dti_Command_Exec(
|
||||||
|
DSL_CPE_Dti_Context_t *pDtiContext,
|
||||||
|
const DSL_char_t *pCliDtiCommand,
|
||||||
|
DSL_CPE_File_t *pOutStream);
|
||||||
|
|
||||||
|
DTI_STATIC DSL_Error_t DSL_CPE_CLI_Dti_Event(
|
||||||
|
DSL_void_t *pContext,
|
||||||
|
DSL_char_t *pMessage);
|
||||||
|
|
||||||
|
DTI_STATIC DSL_Error_t DSL_CPE_CLI_Dti_Exit(
|
||||||
|
DSL_void_t *pContext);
|
||||||
|
|
||||||
|
DTI_STATIC DSL_int_t DSL_CPE_CLI_Dti_Exec(
|
||||||
|
DSL_void_t *pCliDtiDescriptor,
|
||||||
|
const DSL_char_t *pCmdIn,
|
||||||
|
DSL_char_t *pResultOut,
|
||||||
|
DSL_int_t *pResultBufSize_byte,
|
||||||
|
DSL_int_t *pResultCode);
|
||||||
|
|
||||||
|
/* ============================================================================
|
||||||
|
Local Variables
|
||||||
|
========================================================================= */
|
||||||
|
|
||||||
|
/* DTI interface - context */
|
||||||
|
DTI_STATIC DSL_CPE_Dti_Context_t DSL_CPE_GlobalDtiContext = {DSL_NULL, DSL_FALSE, -1, DSL_NULL, DSL_NULL};
|
||||||
|
|
||||||
|
|
||||||
|
/* ============================================================================
|
||||||
|
Local Function definitons
|
||||||
|
========================================================================= */
|
||||||
|
|
||||||
|
#if defined(INCLUDE_DSL_CPE_CLI_SUPPORT)
|
||||||
|
/**
|
||||||
|
Handle a DTI command form the Debug & Trace interface
|
||||||
|
*/
|
||||||
|
DTI_STATIC DSL_int_t DSL_CPE_CLI_Dti_Command_Exec(
|
||||||
|
DSL_CPE_Dti_Context_t *pDtiContext,
|
||||||
|
const DSL_char_t *pCliDtiCommand,
|
||||||
|
DSL_CPE_File_t *pOutStream)
|
||||||
|
{
|
||||||
|
DSL_int_t retVal = 0;
|
||||||
|
DSL_char_t cmdBuf[256];
|
||||||
|
DSL_char_t *pArgBuf = DSL_NULL;
|
||||||
|
|
||||||
|
/* get command name */
|
||||||
|
sscanf(pCliDtiCommand, "%255s", cmdBuf);
|
||||||
|
cmdBuf[255] = '\0';
|
||||||
|
|
||||||
|
if(strlen(cmdBuf) < strlen(pCliDtiCommand))
|
||||||
|
{
|
||||||
|
pArgBuf = (DSL_char_t *)pCliDtiCommand + strlen(cmdBuf) + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
retVal = DSL_CPE_CliDeviceCommandExecute(pDtiContext->pDSLContext, -1, cmdBuf, pArgBuf, pOutStream);
|
||||||
|
|
||||||
|
return retVal;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Exit the CLI DTI
|
||||||
|
*/
|
||||||
|
DTI_STATIC DSL_Error_t DSL_CPE_CLI_Dti_Exit(
|
||||||
|
DSL_void_t *pContext)
|
||||||
|
{
|
||||||
|
DSL_Error_t ret = DSL_SUCCESS;
|
||||||
|
DSL_CPE_Dti_Context_t *pDtiContext = (DSL_CPE_Dti_Context_t*)pContext;
|
||||||
|
|
||||||
|
if (pDtiContext == DSL_NULL)
|
||||||
|
{
|
||||||
|
return DSL_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* unregister the exec within the DTI module */
|
||||||
|
#ifdef INCLUDE_DSL_API_CONSOLE_EXTRA
|
||||||
|
if (pDtiContext->bEnabled == DSL_TRUE)
|
||||||
|
{
|
||||||
|
#if defined(INCLUDE_DSL_CPE_CLI_SUPPORT)
|
||||||
|
if (DSL_CPE_CLI_Unregister(pDtiContext->pCLIContext) == DSL_SUCCESS)
|
||||||
|
{
|
||||||
|
DSL_CPE_FPrintf(DSL_CPE_STDOUT, DSL_CPE_PREFIX"oops, CLI DTI Exit - unregister failed" DSL_CPECRLF);
|
||||||
|
DSL_CPE_Free(pDtiContext->pCLIContext);
|
||||||
|
pDtiContext->pCLIContext = DSL_NULL;
|
||||||
|
}
|
||||||
|
#endif /* #if defined(INCLUDE_DSL_CPE_CLI_SUPPORT) */
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
CLI DTI Event
|
||||||
|
*/
|
||||||
|
DTI_STATIC DSL_Error_t DSL_CPE_CLI_Dti_Event(
|
||||||
|
DSL_void_t *pContext,
|
||||||
|
DSL_char_t *pMessage)
|
||||||
|
{
|
||||||
|
DSL_uint_t eventOutSize_byte = 0;
|
||||||
|
DSL_CPE_Dti_Context_t *pDtiContext = (DSL_CPE_Dti_Context_t *)pContext;
|
||||||
|
|
||||||
|
eventOutSize_byte = strlen(pMessage) + 1;
|
||||||
|
|
||||||
|
if (DTI_CLI_InterfaceEventSend(
|
||||||
|
pDtiContext->pDtiAgent, pDtiContext->ifNum,
|
||||||
|
pMessage, eventOutSize_byte) != IFX_SUCCESS)
|
||||||
|
{
|
||||||
|
DSL_CPE_FPrintf(DSL_CPE_STDOUT, DSL_CPE_PREFIX"CLI DTI Event - event send failed" DSL_CPE_CRLF
|
||||||
|
"Evt: <%s>" DSL_CPE_CRLF, pMessage);
|
||||||
|
|
||||||
|
return DSL_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
return DSL_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Handle a incoming command form the Debug & Trace interface
|
||||||
|
*/
|
||||||
|
DTI_STATIC DSL_int_t DSL_CPE_CLI_Dti_Exec(
|
||||||
|
DSL_void_t *pCliDtiDescriptor,
|
||||||
|
const DSL_char_t *pCmdIn,
|
||||||
|
DSL_char_t *pResultOut,
|
||||||
|
DSL_int_t *pResultBufSize_byte,
|
||||||
|
DSL_int_t *pResultCode)
|
||||||
|
{
|
||||||
|
DSL_int_t retVal = 0, writtenBytes = 0;
|
||||||
|
DSL_CPE_Dti_Context_t *pCliDtiContext = (DSL_CPE_Dti_Context_t *)pCliDtiDescriptor;
|
||||||
|
DSL_CPE_File_t *pOutStream = DSL_CPE_STDOUT;
|
||||||
|
|
||||||
|
if (pResultOut && pResultBufSize_byte)
|
||||||
|
{
|
||||||
|
memset(pResultOut, 0, *pResultBufSize_byte);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
DSL_CPE_FPrintf(DSL_CPE_STDOUT, DSL_CPE_PREFIX"oops, missing DTI result buffer" DSL_CPE_CRLF);
|
||||||
|
return DSL_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!pCliDtiDescriptor)
|
||||||
|
{
|
||||||
|
DSL_CPE_FPrintf(DSL_CPE_STDOUT, DSL_CPE_PREFIX"oops, missing CLI DTI handle" DSL_CPE_CRLF);
|
||||||
|
writtenBytes = DSL_CPE_snprintf(pResultOut, *pResultBufSize_byte,
|
||||||
|
"nReturn=-1 nError=\"oops, missing CLI DTI handle\n\r\"");
|
||||||
|
|
||||||
|
*pResultBufSize_byte = writtenBytes;
|
||||||
|
return DSL_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!pCmdIn)
|
||||||
|
{
|
||||||
|
DSL_CPE_FPrintf(DSL_CPE_STDOUT, DSL_CPE_PREFIX"oops, missing DTI command" DSL_CPE_CRLF);
|
||||||
|
writtenBytes = DSL_CPE_snprintf(pResultOut, *pResultBufSize_byte,
|
||||||
|
"nReturn=-1 nError=\"oops, missing DTI command\n\r\"");
|
||||||
|
|
||||||
|
*pResultBufSize_byte = writtenBytes;
|
||||||
|
return DSL_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
#if defined(IFXOS_HAVE_MEMORY_FILE) && (IFXOS_HAVE_MEMORY_FILE == 1)
|
||||||
|
pOutStream = DSL_CPE_FMemOpen(pResultOut, *pResultBufSize_byte - 1, "w");
|
||||||
|
if(pOutStream == NULL)
|
||||||
|
{
|
||||||
|
DSL_CPE_FPrintf(DSL_CPE_STDOUT, DSL_CPE_PREFIX"oops, cannot open DTI stream" DSL_CPE_CRLF);
|
||||||
|
writtenBytes = DSL_CPE_snprintf(pResultOut, *pResultBufSize_byte,
|
||||||
|
"nReturn=-1 nError=\"oops, cannot open DTI stream\n\r\"");
|
||||||
|
|
||||||
|
*pResultBufSize_byte = writtenBytes;
|
||||||
|
return DSL_ERROR;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
execute the given DTI command.
|
||||||
|
*/
|
||||||
|
retVal = DSL_CPE_CLI_Dti_Command_Exec(pCliDtiContext, pCmdIn, pOutStream);
|
||||||
|
|
||||||
|
|
||||||
|
if (retVal)
|
||||||
|
{
|
||||||
|
DSL_CPE_FPrintf(DSL_CPE_STDOUT, DSL_CPE_PREFIX"nReturn=%d" DSL_CPE_CRLF, retVal);
|
||||||
|
}
|
||||||
|
|
||||||
|
#if defined(IFXOS_HAVE_MEMORY_FILE) && (IFXOS_HAVE_MEMORY_FILE == 1)
|
||||||
|
DSL_CPE_FClose(pOutStream);
|
||||||
|
|
||||||
|
writtenBytes = strlen(pResultOut);
|
||||||
|
pResultOut[writtenBytes] = '\0';
|
||||||
|
#else
|
||||||
|
writtenBytes = DSL_CPE_snprintf(pResultOut, *pResultBufSize_byte,
|
||||||
|
"nReturn=%d nWarning=\"result written to stdout\n\r\"", retVal);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
*pResultBufSize_byte = writtenBytes;
|
||||||
|
|
||||||
|
return DSL_SUCCESS;
|
||||||
|
}
|
||||||
|
#endif /* #if defined(INCLUDE_DSL_CPE_CLI_SUPPORT)*/
|
||||||
|
|
||||||
|
/* ============================================================================
|
||||||
|
Global Function definitons
|
||||||
|
========================================================================= */
|
||||||
|
/**
|
||||||
|
Initialize the DTI
|
||||||
|
*/
|
||||||
|
DSL_Error_t DSL_CPE_Dti_Start(
|
||||||
|
DSL_CPE_Control_Context_t *pContext,
|
||||||
|
DSL_int_t numOfPhyDevices,
|
||||||
|
DSL_int_t numOfLinesPerPhyDevice,
|
||||||
|
DSL_uint16_t dtiListenPort,
|
||||||
|
DSL_char_t *pDtiServerIp,
|
||||||
|
DSL_boolean_t bEnableCliAutoMsg,
|
||||||
|
DSL_boolean_t bEnableDevAutoMsg,
|
||||||
|
DSL_boolean_t bEnableSingleThreadMode)
|
||||||
|
{
|
||||||
|
DSL_int_t ret = DSL_SUCCESS;
|
||||||
|
DTI_AgentCtx_t *pDtiAgent = DSL_NULL;
|
||||||
|
DTI_AgentStartupSettings_t dtiStartup;
|
||||||
|
|
||||||
|
memset(&dtiStartup, 0x00, sizeof(DTI_AgentStartupSettings_t));
|
||||||
|
|
||||||
|
#if defined(INCLUDE_DSL_CPE_API_VRX) && (DTI_INTERFACE_VERSION > 0)
|
||||||
|
DTI_AgentStartupSettingsXDevs_t AgentStartupSettingsXDevs;
|
||||||
|
DTI_DeviceAccessFct_t *pDeviceAccessFct = IFX_NULL;
|
||||||
|
|
||||||
|
if (DSL_CPE_GlobalDtiContext.bEnabled == DSL_TRUE)
|
||||||
|
{
|
||||||
|
/* already running */
|
||||||
|
return DSL_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* init the DTI control struct */
|
||||||
|
memset(&DSL_CPE_GlobalDtiContext, 0, sizeof(DSL_CPE_Dti_Context_t));
|
||||||
|
DSL_CPE_GlobalDtiContext.ifNum = -1;
|
||||||
|
|
||||||
|
if (DSL_CPE_GlobalDtiContext.pDtiAgent == DSL_NULL)
|
||||||
|
{
|
||||||
|
memset(&AgentStartupSettingsXDevs, 0x00, sizeof(DTI_AgentStartupSettingsXDevs_t));
|
||||||
|
|
||||||
|
/* DTI Agent configuration */
|
||||||
|
AgentStartupSettingsXDevs.debugLevel = 3;
|
||||||
|
AgentStartupSettingsXDevs.bStartupAutoCliMsgSupport = (bEnableCliAutoMsg == DSL_TRUE) ? 1 : 0;
|
||||||
|
|
||||||
|
#if defined(DTI_SUPPORT_SINGLE_THREADED_MODE) && (DTI_SUPPORT_SINGLE_THREADED_MODE == 1)
|
||||||
|
/*
|
||||||
|
Out from the DTI Agent interface:
|
||||||
|
This version ot the DTI Agent supports "single threaded mode"
|
||||||
|
*/
|
||||||
|
if (bEnableSingleThreadMode == DSL_TRUE)
|
||||||
|
{
|
||||||
|
AgentStartupSettingsXDevs.bSingleThreadedMode = 1;
|
||||||
|
AgentStartupSettingsXDevs.numOfUsedWorker = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
AgentStartupSettingsXDevs.bSingleThreadedMode = 0;
|
||||||
|
AgentStartupSettingsXDevs.numOfUsedWorker = 4;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* DTI IP Setup setup */
|
||||||
|
cpe_control_strncpy_s(AgentStartupSettingsXDevs.serverIpAddr, 16, pDtiServerIp, strlen(pDtiServerIp));
|
||||||
|
AgentStartupSettingsXDevs.serverIpAddr[15]='\0';
|
||||||
|
AgentStartupSettingsXDevs.listenPort = (dtiListenPort == 0) ? 9000 : (IFX_uint16_t)dtiListenPort;
|
||||||
|
|
||||||
|
pDeviceAccessFct = &DTI_DeviceAccessFct_VRX;
|
||||||
|
|
||||||
|
if ( (pDeviceAccessFct != IFX_NULL) &&
|
||||||
|
(numOfPhyDevices > 0) && (numOfLinesPerPhyDevice > 0) )
|
||||||
|
{
|
||||||
|
AgentStartupSettingsXDevs.devIfSettings[0].bStartupAutoDevMsgSupport =
|
||||||
|
(bEnableDevAutoMsg == DSL_TRUE) ? 1 : 0;
|
||||||
|
AgentStartupSettingsXDevs.devIfSettings[0].numOfDevices = (IFX_int_t)numOfPhyDevices;
|
||||||
|
AgentStartupSettingsXDevs.devIfSettings[0].linesPerDevice = (IFX_int_t)numOfLinesPerPhyDevice;
|
||||||
|
AgentStartupSettingsXDevs.devIfSettings[0].pDeviceAccessFct = pDeviceAccessFct;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
start the DTI Agent
|
||||||
|
*/
|
||||||
|
if ( DTI_AgentStartXDevs(&pDtiAgent, &AgentStartupSettingsXDevs) != DTI_SUCCESS)
|
||||||
|
{
|
||||||
|
DSL_CPE_FPrintf(DSL_CPE_STDOUT, DSL_CPE_PREFIX "DSL: ERROR - start DTI agent (several devices)" DSL_CPE_CRLF);
|
||||||
|
|
||||||
|
return DSL_ERROR;
|
||||||
|
}
|
||||||
|
DSL_CPE_GlobalDtiContext.pDtiAgent = pDtiAgent;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
DSL_CPE_FPrintf(DSL_CPE_STDOUT, DSL_CPE_PREFIX "DSL: WARNING - DTI agent already running" DSL_CPE_CRLF);
|
||||||
|
}
|
||||||
|
#else /* defined(INCLUDE_DSL_CPE_API_VRX) && (DTI_INTERFACE_VERSION > 0) */
|
||||||
|
if (DSL_CPE_GlobalDtiContext.pDtiAgent == DSL_NULL)
|
||||||
|
{
|
||||||
|
/* init the DTI control struct */
|
||||||
|
memset(&DSL_CPE_GlobalDtiContext, 0, sizeof(DSL_CPE_Dti_Context_t));
|
||||||
|
DSL_CPE_GlobalDtiContext.ifNum = -1;
|
||||||
|
|
||||||
|
/* physical device setup */
|
||||||
|
dtiStartup.numOfDevices = (IFX_int_t)numOfPhyDevices;
|
||||||
|
dtiStartup.linesPerDevice = (IFX_int_t)numOfLinesPerPhyDevice;
|
||||||
|
|
||||||
|
|
||||||
|
/* DTI IP Setup setup */
|
||||||
|
cpe_control_strncpy_s(dtiStartup.serverIpAddr, 16, pDtiServerIp, strlen(pDtiServerIp));
|
||||||
|
dtiStartup.listenPort = (dtiListenPort == 0) ? 9000 : (IFX_uint16_t)dtiListenPort;
|
||||||
|
|
||||||
|
/* DTI Agent configuration */
|
||||||
|
dtiStartup.bStartupAutoCliMsgSupport = (bEnableCliAutoMsg == DSL_TRUE) ? 1 : 0;
|
||||||
|
dtiStartup.bStartupAutoDevMsgSupport = (bEnableDevAutoMsg == DSL_TRUE) ? 1 : 0;
|
||||||
|
|
||||||
|
dtiStartup.debugLevel = 3;
|
||||||
|
|
||||||
|
#if defined(DTI_SUPPORT_SINGLE_THREADED_MODE) && (DTI_SUPPORT_SINGLE_THREADED_MODE == 1)
|
||||||
|
/*
|
||||||
|
Out from the DTI Agent interface:
|
||||||
|
This version ot the DTI Agent supports "single threaded mode"
|
||||||
|
*/
|
||||||
|
if (bEnableSingleThreadMode == DSL_TRUE)
|
||||||
|
{
|
||||||
|
dtiStartup.bSingleThreadedMode = 1;
|
||||||
|
dtiStartup.numOfUsedWorker = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
dtiStartup.bSingleThreadedMode = 0;
|
||||||
|
dtiStartup.numOfUsedWorker = 4;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
start the DTI Agent
|
||||||
|
*/
|
||||||
|
if ( DTI_AgentStart(&pDtiAgent, &dtiStartup) != DTI_SUCCESS)
|
||||||
|
{
|
||||||
|
DSL_CPE_FPrintf(DSL_CPE_STDOUT, DSL_CPE_PREFIX"ERROR - start DTI agent" DSL_CPE_CRLF);
|
||||||
|
|
||||||
|
return DSL_ERROR;
|
||||||
|
}
|
||||||
|
DSL_CPE_GlobalDtiContext.pDtiAgent = pDtiAgent;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
DSL_CPE_FPrintf(DSL_CPE_STDOUT, DSL_CPE_PREFIX"WARNING - DTI agent already running" DSL_CPE_CRLF);
|
||||||
|
}
|
||||||
|
#endif/* defined(INCLUDE_DSL_CPE_API_VRX) && (DTI_INTERFACE_VERSION > 0) */
|
||||||
|
|
||||||
|
#if defined(INCLUDE_DSL_CPE_CLI_SUPPORT)
|
||||||
|
if (DSL_CPE_GlobalDtiContext.bEnabled != DSL_TRUE)
|
||||||
|
{
|
||||||
|
DSL_CPE_GlobalDtiContext.pDSLContext = pContext;
|
||||||
|
|
||||||
|
if (dtiStartup.bStartupAutoCliMsgSupport == 1)
|
||||||
|
{
|
||||||
|
ret = DSL_CPE_CLI_Register(
|
||||||
|
&DSL_CPE_GlobalDtiContext.pCLIContext,
|
||||||
|
&DSL_CPE_GlobalDtiContext,
|
||||||
|
DSL_CPE_CLI_Dti_Exit,
|
||||||
|
DSL_CPE_CLI_Dti_Event);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ret = DSL_CPE_CLI_Register(
|
||||||
|
&DSL_CPE_GlobalDtiContext.pCLIContext,
|
||||||
|
&DSL_CPE_GlobalDtiContext,
|
||||||
|
DSL_CPE_CLI_Dti_Exit,
|
||||||
|
IFX_NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* register the exec within the DTI module */
|
||||||
|
DSL_CPE_GlobalDtiContext.ifNum = DTI_CLI_SendFunctionRegister(
|
||||||
|
(IFX_void_t *)DSL_CPE_GlobalDtiContext.pDtiAgent,
|
||||||
|
(IFX_void_t *)&DSL_CPE_GlobalDtiContext,
|
||||||
|
"DSL_API",
|
||||||
|
DSL_CPE_CLI_Dti_Exec,
|
||||||
|
0x10000 /* size of response buffer */);
|
||||||
|
if (DSL_CPE_GlobalDtiContext.ifNum < 0)
|
||||||
|
{
|
||||||
|
DSL_CPE_FPrintf(DSL_CPE_STDOUT, DSL_CPE_PREFIX"ERROR - start DTI agent, send fct register" DSL_CPE_CRLF);
|
||||||
|
|
||||||
|
if (DSL_CPE_CLI_Unregister(DSL_CPE_GlobalDtiContext.pCLIContext) == DSL_SUCCESS)
|
||||||
|
{
|
||||||
|
DSL_CPE_Free(DSL_CPE_GlobalDtiContext.pCLIContext);
|
||||||
|
DSL_CPE_GlobalDtiContext.pCLIContext = DSL_NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
return DSL_ERROR;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
DSL_CPE_FPrintf(DSL_CPE_STDOUT, DSL_CPE_PREFIX"WARNING - DTI agent already registered" DSL_CPE_CRLF);
|
||||||
|
}
|
||||||
|
#endif /* #if defined(INCLUDE_DSL_CPE_CLI_SUPPORT)*/
|
||||||
|
|
||||||
|
DSL_CPE_GlobalDtiContext.bEnabled = DSL_TRUE;
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Initialise the CLI DTI
|
||||||
|
*/
|
||||||
|
DSL_Error_t DSL_CPE_Dti_Stop(
|
||||||
|
DSL_CPE_Control_Context_t *pContext)
|
||||||
|
{
|
||||||
|
DTI_AgentCtx_t *pDtiAgent = DSL_NULL;
|
||||||
|
|
||||||
|
if (DSL_CPE_GlobalDtiContext.bEnabled == DSL_TRUE)
|
||||||
|
{
|
||||||
|
pDtiAgent = DSL_CPE_GlobalDtiContext.pDtiAgent;
|
||||||
|
DSL_CPE_GlobalDtiContext.pDtiAgent = DSL_NULL;
|
||||||
|
|
||||||
|
if ( DTI_AgentStop(&pDtiAgent) != DTI_SUCCESS)
|
||||||
|
{
|
||||||
|
DSL_CPE_FPrintf(DSL_CPE_STDOUT, DSL_CPE_PREFIX"ERROR - Stop DTI agent" DSL_CPE_CRLF);
|
||||||
|
|
||||||
|
return DSL_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (DSL_CPE_CLI_Unregister(DSL_CPE_GlobalDtiContext.pCLIContext) == DSL_SUCCESS)
|
||||||
|
{
|
||||||
|
DSL_CPE_Free(DSL_CPE_GlobalDtiContext.pCLIContext);
|
||||||
|
DSL_CPE_GlobalDtiContext.pCLIContext = DSL_NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
DSL_CPE_FPrintf(DSL_CPE_STDOUT, DSL_CPE_PREFIX"ERROR - Stop DTI agent, not running" DSL_CPE_CRLF);
|
||||||
|
|
||||||
|
return DSL_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
return DSL_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* #if defined(INCLUDE_DSL_CPE_DTI_SUPPORT) */
|
||||||
67
src/dsl_cpe_dti.h
Normal file
67
src/dsl_cpe_dti.h
Normal file
|
|
@ -0,0 +1,67 @@
|
||||||
|
/******************************************************************************
|
||||||
|
|
||||||
|
Copyright (c) 2007-2015
|
||||||
|
Lantiq Beteiligungs-GmbH & Co. KG
|
||||||
|
|
||||||
|
For licensing information, see the file 'LICENSE' in the root folder of
|
||||||
|
this software module.
|
||||||
|
|
||||||
|
*******************************************************************************/
|
||||||
|
|
||||||
|
#ifndef _DSL_CPE_DTI_H_
|
||||||
|
#define _DSL_CPE_DTI_H_
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "dsl_cpe_control.h"
|
||||||
|
|
||||||
|
#define DSL_CPE_DTI_DEFAULT_TCP_PORT (9000)
|
||||||
|
|
||||||
|
/** \file
|
||||||
|
DSL daemon command line interface for DTI control
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
Start the Debug and Trace Agent
|
||||||
|
|
||||||
|
\param pContext DSL CPE API context pointer (used for callback handling)
|
||||||
|
\param numOfPhyDevices number of used physical devices.
|
||||||
|
\param numOfLinesPerPhyDevice lines per physical device
|
||||||
|
\param dtiListenPort DTI Agent listen port number.
|
||||||
|
\param pDtiServerIp DTI Agent IP address.
|
||||||
|
|
||||||
|
\return
|
||||||
|
- DSL_ERROR On error
|
||||||
|
- DSL_SUCCESS On success
|
||||||
|
*/
|
||||||
|
DSL_Error_t DSL_CPE_Dti_Start(
|
||||||
|
DSL_CPE_Control_Context_t *pContext,
|
||||||
|
DSL_int_t numOfPhyDevices,
|
||||||
|
DSL_int_t numOfLinesPerPhyDevice,
|
||||||
|
DSL_uint16_t dtiListenPort,
|
||||||
|
DSL_char_t *pDtiServerIp,
|
||||||
|
DSL_boolean_t bEnableCliAutoMsg,
|
||||||
|
DSL_boolean_t bEnableDevAutoMsg,
|
||||||
|
DSL_boolean_t bEnableSingleThreadMode);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
Stop the Debug and Trace Agent
|
||||||
|
|
||||||
|
\param pContext DSL CPE API context pointer (used for callback handling)
|
||||||
|
|
||||||
|
\return
|
||||||
|
- DSL_ERROR On error
|
||||||
|
- DSL_SUCCESS On success
|
||||||
|
*/
|
||||||
|
DSL_Error_t DSL_CPE_Dti_Stop(
|
||||||
|
DSL_CPE_Control_Context_t *pContext);
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* _DSL_CPE_DTI_H_ */
|
||||||
|
|
||||||
3154
src/dsl_cpe_dti_vrx.c
Normal file
3154
src/dsl_cpe_dti_vrx.c
Normal file
File diff suppressed because it is too large
Load diff
92
src/dsl_cpe_dti_vrx_ctx.h
Normal file
92
src/dsl_cpe_dti_vrx_ctx.h
Normal file
|
|
@ -0,0 +1,92 @@
|
||||||
|
#ifndef _DTI_VRX_CTX_H
|
||||||
|
#define _DTI_VRX_CTX_H
|
||||||
|
/******************************************************************************
|
||||||
|
|
||||||
|
Copyright (c) 2007-2015
|
||||||
|
Lantiq Beteiligungs-GmbH & Co. KG
|
||||||
|
|
||||||
|
For licensing information, see the file 'LICENSE' in the root folder of
|
||||||
|
this software module.
|
||||||
|
|
||||||
|
******************************************************************************/
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/** \file
|
||||||
|
VRX device context, control struct for xDSL Rev3 access and handling.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* ==========================================================================
|
||||||
|
includes
|
||||||
|
========================================================================== */
|
||||||
|
#include "ifx_types.h"
|
||||||
|
#include "ifxos_debug.h"
|
||||||
|
#include "ifxos_device_access.h"
|
||||||
|
|
||||||
|
/* ==========================================================================
|
||||||
|
defines
|
||||||
|
========================================================================== */
|
||||||
|
#ifndef DTI_DEV_MAX_LINE_NUMBER
|
||||||
|
# define DTI_DEV_MAX_LINE_NUMBER 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* ==========================================================================
|
||||||
|
macro
|
||||||
|
========================================================================== */
|
||||||
|
|
||||||
|
/* ==========================================================================
|
||||||
|
types
|
||||||
|
========================================================================== */
|
||||||
|
|
||||||
|
/**
|
||||||
|
VRX Driver Control Struct
|
||||||
|
*/
|
||||||
|
typedef struct DTI_DEV_VrxDriverCtx_s
|
||||||
|
{
|
||||||
|
/** number of devices */
|
||||||
|
IFX_int_t numOfDevs;
|
||||||
|
/** ports per device */
|
||||||
|
IFX_int_t portsPerDev;
|
||||||
|
/** number of ports */
|
||||||
|
IFX_int_t numOfPorts;
|
||||||
|
/** points to the array of devices fds */
|
||||||
|
IFX_int_t *pDevFds;
|
||||||
|
/*
|
||||||
|
DTI Config
|
||||||
|
*/
|
||||||
|
/** max number of register requests / sets */
|
||||||
|
IFX_int_t numOfRegAccess;
|
||||||
|
/** max number of debug requests / sets */
|
||||||
|
IFX_int_t numOfDebugAccess;
|
||||||
|
|
||||||
|
/** auto msg handling - supported */
|
||||||
|
IFX_boolean_t bAutoDevMsgSupport;
|
||||||
|
/** auto msg handling - max device fd for select */
|
||||||
|
IFX_int_t nfcMaxDevFd;
|
||||||
|
/** auto msg handling - device FDSET */
|
||||||
|
IFXOS_devFd_set_t nfcDevFds;
|
||||||
|
/** auto msg handling - for temporary use, device FDSET */
|
||||||
|
IFXOS_devFd_set_t tmpDevFds;
|
||||||
|
/** auto msg handling - recv buffer for auto msg's */
|
||||||
|
IFX_ulong_t *pAutoMsgBuf;
|
||||||
|
/** auto msg handling - size of the modem message buffer for NFC handling */
|
||||||
|
IFX_int_t autoMsgBuf_byte;
|
||||||
|
/** debug stream local user buffer */
|
||||||
|
IFX_uint8_t *pDbgStreamUserBuf;
|
||||||
|
/** size of the local user buffer for debug stream handling */
|
||||||
|
IFX_int_t dbgStreamUserBuf_byte;
|
||||||
|
} DTI_DEV_VrxDriverCtx_t;
|
||||||
|
|
||||||
|
|
||||||
|
/* ==========================================================================
|
||||||
|
exports
|
||||||
|
========================================================================== */
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* _DTI_VRX_CTX_H */
|
||||||
230
src/dsl_cpe_init_cfg.c
Normal file
230
src/dsl_cpe_init_cfg.c
Normal file
|
|
@ -0,0 +1,230 @@
|
||||||
|
/******************************************************************************
|
||||||
|
|
||||||
|
Copyright (c) 2007-2015
|
||||||
|
Lantiq Beteiligungs-GmbH & Co. KG
|
||||||
|
|
||||||
|
For licensing information, see the file 'LICENSE' in the root folder of
|
||||||
|
this software module.
|
||||||
|
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
/*
|
||||||
|
Includes
|
||||||
|
*/
|
||||||
|
#include "dsl_cpe_control.h"
|
||||||
|
#include "drv_dsl_cpe_api.h"
|
||||||
|
#include "dsl_cpe_init_cfg.h"
|
||||||
|
|
||||||
|
#undef DSL_CCA_DBG_BLOCK
|
||||||
|
#define DSL_CCA_DBG_BLOCK DSL_CCA_DBG_APP
|
||||||
|
|
||||||
|
#ifndef _lint
|
||||||
|
DSL_InitData_t gInitCfgData =
|
||||||
|
{
|
||||||
|
DSL_CPE_FW1_SET(DSL_NULL, 0x0),
|
||||||
|
DSL_CPE_FW_FEATURE_SET(0, DSL_FW_XDSLMODE_CLEANED, DSL_FW_XDSLFEATURE_CLEANED, \
|
||||||
|
DSL_FW_XDSLFEATURE_CLEANED),
|
||||||
|
DSL_CPE_FW2_SET(DSL_NULL, 0x0),
|
||||||
|
DSL_CPE_XTU_SET(0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7),
|
||||||
|
DSL_CPE_LINE_INV_NE_SET(DSL_NULL),
|
||||||
|
DSL_CPE_AUTOBOOT_CTRL_SET(DSL_AUTOBOOT_CTRL_STOP),
|
||||||
|
DSL_CPE_AUTOBOOT_CFG_SET(DSL_FALSE, DSL_FALSE, DSL_FALSE),
|
||||||
|
DSL_CPE_TEST_MODE_CTRL_SET(DSL_TESTMODE_DISABLE),
|
||||||
|
DSL_CPE_LINE_ACTIVATE_CTRL_SET(DSL_G997_INHIBIT_LDSF, DSL_G997_INHIBIT_ACSF, DSL_G997_NORMAL_STARTUP),
|
||||||
|
/** Device specific configuration parameters*/
|
||||||
|
#if defined(INCLUDE_DSL_CPE_API_VRX)
|
||||||
|
{
|
||||||
|
DSL_CPE_LL_CFG_SET(DSL_DEV_FILTER_NA, DSL_DEV_HS_TONE_GROUP_MODE_AUTO, \
|
||||||
|
DSL_DEV_HS_TONE_GROUP_CLEANED, \
|
||||||
|
DSL_DEV_HS_TONE_GROUP_CLEANED, \
|
||||||
|
DSL_DEV_HS_TONE_GROUP_CLEANED, \
|
||||||
|
0x1E116000, 0x37, -1),
|
||||||
|
DSL_CPE_SIC_SET(DSL_TC_ATM, DSL_EMF_TC_CLEANED, DSL_EMF_TC_CLEANED, DSL_SYSTEMIF_MII, \
|
||||||
|
DSL_TC_EFM, DSL_EMF_TC_CLEANED, DSL_EMF_TC_CLEANED, DSL_SYSTEMIF_MII),
|
||||||
|
DSL_CPE_MAC_CFG_SET(DSL_EFM_SPEED_100, DSL_EFM_DUPLEX_FULL, DSL_EFM_FLOWCTRL_ON, DSL_EFM_AUTONEG_OFF, \
|
||||||
|
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 1536, DSL_FALSE)
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#if defined (INCLUDE_DSL_CPE_API_DANUBE)
|
||||||
|
{
|
||||||
|
DSL_CPE_LL_CFG_SET(DSL_DEV_HYBRID_NA),
|
||||||
|
DSL_CPE_SIC_SET(DSL_TC_ATM, DSL_EMF_TC_NORMAL, DSL_EMF_TC_NORMAL, DSL_SYSTEMIF_MII)
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
};
|
||||||
|
#endif /* _lint*/
|
||||||
|
|
||||||
|
#if defined(INCLUDE_DSL_CPE_API_VRX)
|
||||||
|
static DSL_Error_t DSL_VRX_ProcessDevConfigLine(
|
||||||
|
DSL_char_t *pLine,
|
||||||
|
DSL_uint32_t cfgLine,
|
||||||
|
DSL_DeviceLowLevelConfig_t *pRetLLCfg )
|
||||||
|
{
|
||||||
|
DSL_Error_t nRet = DSL_SUCCESS;
|
||||||
|
DSL_int_t nFilter = -1, nHsToneGroupMode = -1,
|
||||||
|
nIrqNum = 0,
|
||||||
|
bNtrEnable = -1;
|
||||||
|
DSL_uint32_t nHsToneGroup_A = -1, nHsToneGroup_V = -1,
|
||||||
|
nHsToneGroup_AV = -1, nBaseAddr = 0;
|
||||||
|
|
||||||
|
switch(cfgLine)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
sscanf(pLine,
|
||||||
|
"%d",
|
||||||
|
&nFilter);
|
||||||
|
|
||||||
|
pRetLLCfg->nFilter = (DSL_uint32_t)nFilter;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
sscanf(pLine,
|
||||||
|
"%d %x %x %x",
|
||||||
|
&nHsToneGroupMode,
|
||||||
|
&nHsToneGroup_A,
|
||||||
|
&nHsToneGroup_V,
|
||||||
|
&nHsToneGroup_AV);
|
||||||
|
|
||||||
|
pRetLLCfg->nHsToneGroupMode = (DSL_uint32_t)nHsToneGroupMode;
|
||||||
|
pRetLLCfg->nHsToneGroup_A = (DSL_uint32_t)nHsToneGroup_A;
|
||||||
|
pRetLLCfg->nHsToneGroup_V = (DSL_uint32_t)nHsToneGroup_V;
|
||||||
|
pRetLLCfg->nHsToneGroup_AV = (DSL_uint32_t)nHsToneGroup_AV;
|
||||||
|
case 2:
|
||||||
|
sscanf(pLine,
|
||||||
|
"%x %d",
|
||||||
|
&nBaseAddr,
|
||||||
|
&nIrqNum);
|
||||||
|
|
||||||
|
pRetLLCfg->nBaseAddr = (DSL_uint32_t)nBaseAddr;
|
||||||
|
pRetLLCfg->nIrqNum = (DSL_int8_t)nIrqNum;
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
sscanf(pLine,
|
||||||
|
"%d",
|
||||||
|
&bNtrEnable);
|
||||||
|
|
||||||
|
pRetLLCfg->bNtrEnable = (DSL_boolean_t)bNtrEnable;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return(nRet);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
This function returns the Initial Low Level Configuration from the give file
|
||||||
|
or the fixed default settings.
|
||||||
|
|
||||||
|
\param pName file name of the given LowLevelConfig
|
||||||
|
\param ppRetLLCfg Pointer to return the settings.
|
||||||
|
|
||||||
|
\return
|
||||||
|
Return values are defined within the DSL_Error_t definition
|
||||||
|
- DSL_SUCCESS in case of success
|
||||||
|
- DSL_ERROR if operation failed
|
||||||
|
- The return pointer is set to the given configuration or ULL
|
||||||
|
|
||||||
|
*/
|
||||||
|
DSL_Error_t DSL_CPE_GetInitialLowLevelConfig( DSL_char_t const *pName,
|
||||||
|
DSL_DeviceLowLevelConfig_t *pRetLLCfg )
|
||||||
|
{
|
||||||
|
DSL_CPE_File_t *fdCfg = DSL_NULL;
|
||||||
|
DSL_Error_t nRet = DSL_SUCCESS;
|
||||||
|
DSL_uint32_t nCfgFileLine;
|
||||||
|
DSL_char_t line[256];
|
||||||
|
|
||||||
|
/*
|
||||||
|
# VRX Low Level Configuration File
|
||||||
|
#
|
||||||
|
# Parameters must be separated by tabs or spaces.
|
||||||
|
# Empty lines and comments will be ignored.
|
||||||
|
#
|
||||||
|
|
||||||
|
# nFilter
|
||||||
|
#
|
||||||
|
# NA = -1
|
||||||
|
# OFF = 0
|
||||||
|
# ISDN = 1
|
||||||
|
# POTS = 2
|
||||||
|
# POTS_2 = 3
|
||||||
|
# POTS_3 = 4
|
||||||
|
#
|
||||||
|
# (dec)
|
||||||
|
-1
|
||||||
|
|
||||||
|
# nHsToneGroupMode nHsToneGroup_A nHsToneGroup_V nHsToneGroup_AV
|
||||||
|
#
|
||||||
|
# NA = -1 NA = -1 see see
|
||||||
|
# AUTO = 0 VDSL2_B43 = 0x0001 nHsToneGroup_A nHsToneGroup_A
|
||||||
|
# MANUAL = 1 VDSL2_A43 = 0x0002
|
||||||
|
# VDSL2_V43 = 0x0004
|
||||||
|
# VDSL1_V43P = 0x0008
|
||||||
|
# VDSL1_V43I = 0x0010
|
||||||
|
# ADSL1_C43 = 0x0020
|
||||||
|
# ADSL2_J43 = 0x0040
|
||||||
|
# ADSL2_B43C = 0x0080
|
||||||
|
# ADSL2_A43C = 0x0100
|
||||||
|
#
|
||||||
|
# (dec) (hex) (hex) (hex)
|
||||||
|
0 0x1 0x1 0x1
|
||||||
|
|
||||||
|
# nBaseAddr nIrqNum
|
||||||
|
#
|
||||||
|
# (hex) (dec)
|
||||||
|
0x1e116000 55
|
||||||
|
|
||||||
|
# nUtopiaPhyAdr nUtopiaBusWidth nPosPhyParity
|
||||||
|
# default(16b) = 0 NA = -1
|
||||||
|
# 8-bit = 1 ODD = 0
|
||||||
|
# 16-bit = 2
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# (hex) (dec) (dec)
|
||||||
|
0xFF 0 0
|
||||||
|
|
||||||
|
# bNtrEnable
|
||||||
|
#
|
||||||
|
# (dec)
|
||||||
|
0
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (pName != DSL_NULL)
|
||||||
|
{
|
||||||
|
fdCfg = DSL_CPE_FOpen(pName, "r");
|
||||||
|
if (fdCfg == DSL_NULL)
|
||||||
|
{
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_ERR, (DSL_CPE_PREFIX
|
||||||
|
"DSL: Error opening low level configuration file %s " DSL_CPE_CRLF , pName));
|
||||||
|
return DSL_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
nCfgFileLine = 0;
|
||||||
|
while( (DSL_CPE_FGets(line, sizeof(line), fdCfg)) != DSL_NULL )
|
||||||
|
{
|
||||||
|
if( (line[0] == '\n') || (line[0] == '#') )
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
nRet = DSL_VRX_ProcessDevConfigLine(line, nCfgFileLine, pRetLLCfg);
|
||||||
|
|
||||||
|
nCfgFileLine++;
|
||||||
|
|
||||||
|
if( nRet != DSL_SUCCESS )
|
||||||
|
{
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_ERR, (DSL_CPE_PREFIX
|
||||||
|
"DSL: Error processing configuration file %s, line %d "DSL_CPE_CRLF, pName, nCfgFileLine));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
DSL_CPE_FClose (fdCfg);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_WRN, (DSL_CPE_PREFIX
|
||||||
|
"DSL: Low Level Configuration file not specified, using default configuration"DSL_CPE_CRLF));
|
||||||
|
}
|
||||||
|
|
||||||
|
return nRet;
|
||||||
|
}
|
||||||
|
#endif /* #if defined(INCLUDE_DSL_CPE_API_VRX)*/
|
||||||
96
src/dsl_cpe_init_cfg.h
Normal file
96
src/dsl_cpe_init_cfg.h
Normal file
|
|
@ -0,0 +1,96 @@
|
||||||
|
/******************************************************************************
|
||||||
|
|
||||||
|
Copyright (c) 2007-2015
|
||||||
|
Lantiq Beteiligungs-GmbH & Co. KG
|
||||||
|
|
||||||
|
For licensing information, see the file 'LICENSE' in the root folder of
|
||||||
|
this software module.
|
||||||
|
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
#ifndef _DSL_CPE_INIT_CFG_H
|
||||||
|
#define _DSL_CPE_INIT_CFG_H
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define DSL_CPE_FW1_SET(pFw1, szFw1) pFirmware: pFw1, nFirmwareSize: szFw1
|
||||||
|
|
||||||
|
#define DSL_CPE_FW_FEATURE_SET(nFwPId, nFwFsMode, nFwFsAdsl, nFwFsVdsl) \
|
||||||
|
{nPlatformId: nFwPId, nFirmwareXdslModes: nFwFsMode, \
|
||||||
|
nFirmwareAdslFeatures: nFwFsAdsl, nFirmwareVdslFeatures: nFwFsVdsl}
|
||||||
|
|
||||||
|
#define DSL_CPE_FW2_SET(pFw2, szFw2) pFirmware2: pFw2, nFirmwareSize2: szFw2
|
||||||
|
|
||||||
|
#define DSL_CPE_XTU_SET(oct0, oct1, oct2, oct3, oct4, oct5, oct6, oct7) \
|
||||||
|
nXtseCfg: {{oct0, oct1, oct2, oct3, oct4, oct5, oct6, oct7}}
|
||||||
|
|
||||||
|
#define DSL_CPE_LINE_INV_NE_SET(pLi) pInventory: pLi
|
||||||
|
|
||||||
|
#define DSL_CPE_AUTOBOOT_CTRL_SET(opt) nAutobootStartupMode: opt
|
||||||
|
|
||||||
|
#define DSL_CPE_AUTOBOOT_CFG_SET(opt1, opt2, opt3) \
|
||||||
|
{{bWaitBeforeConfigWrite: opt1, bWaitBeforeLinkActivation: opt2, bWaitBeforeRestart: opt3}}
|
||||||
|
|
||||||
|
#define DSL_CPE_TEST_MODE_CTRL_SET(opt) nTestModeControl: opt
|
||||||
|
|
||||||
|
#define DSL_CPE_LINE_ACTIVATE_CTRL_SET(LDSF, ACSF, STARTUP_MODE) \
|
||||||
|
{nLDSF: LDSF, nACSF: ACSF, nStartupMode: STARTUP_MODE}
|
||||||
|
|
||||||
|
#if defined(INCLUDE_DSL_CPE_API_DANUBE)
|
||||||
|
#define DSL_CPE_LL_CFG_SET(HYBRID) {nHybrid: HYBRID}
|
||||||
|
|
||||||
|
#define DSL_CPE_SIC_SET(TCLAYER, EFM_TC_CFG_US, EFM_TC_CFG_DS, SICS) \
|
||||||
|
{{nTcLayer: TCLAYER, nEfmTcConfigUs: EFM_TC_CFG_US, \
|
||||||
|
nEfmTcConfigDs: EFM_TC_CFG_DS, nSystemIf: SICS}}
|
||||||
|
#endif /* #if defined(INCLUDE_DSL_CPE_API_DANUBE)*/
|
||||||
|
|
||||||
|
#if defined(INCLUDE_DSL_CPE_API_VRX)
|
||||||
|
#define DSL_CPE_LL_CFG_SET(FILTER, HS_TONE_GROUP_MODE, HS_TONE_GROUP_A, \
|
||||||
|
HS_TONE_GROUP_V, HS_TONE_GROUP_AV, BASEADDR, IRQNUM, NTR_ENABLE) \
|
||||||
|
{nFilter: FILTER, nHsToneGroupMode: HS_TONE_GROUP_MODE, \
|
||||||
|
nHsToneGroup_A: HS_TONE_GROUP_A, nHsToneGroup_V: HS_TONE_GROUP_V, \
|
||||||
|
nHsToneGroup_AV: HS_TONE_GROUP_AV, nBaseAddr: BASEADDR, nIrqNum: IRQNUM, \
|
||||||
|
bNtrEnable: NTR_ENABLE}
|
||||||
|
|
||||||
|
#define DSL_CPE_SIC_SET(TCLAYER_A, EFM_TC_CFG_US_A, EFM_TC_CFG_DS_A, SICS_A, \
|
||||||
|
TCLAYER_V, EFM_TC_CFG_US_V, EFM_TC_CFG_DS_V, SICS_V) \
|
||||||
|
{{nTcLayer: TCLAYER_A, nEfmTcConfigUs: EFM_TC_CFG_US_A, \
|
||||||
|
nEfmTcConfigDs:EFM_TC_CFG_DS_A, nSystemIf: SICS_A}, \
|
||||||
|
{nTcLayer: TCLAYER_V, nEfmTcConfigUs: EFM_TC_CFG_US_V, \
|
||||||
|
nEfmTcConfigDs: EFM_TC_CFG_DS_V, nSystemIf: SICS_V}}
|
||||||
|
#endif /* #ifdef INCLUDE_DSL_CPE_API_VRX*/
|
||||||
|
|
||||||
|
#define DSL_CPE_MAC_CFG_SET(SPEED, DUPLEX, FLOW, ANEGOT, MAC_OCT_0, MAC_OCT_1, MAC_OCT_2, \
|
||||||
|
MAC_OCT_3, MAC_OCT_4, MAC_OCT_5, MAX_FRAME_SIZE, EXT_ETH_OAM) \
|
||||||
|
{SPEED, DUPLEX, FLOW, ANEGOT, {MAC_OCT_0, MAC_OCT_1, MAC_OCT_2, MAC_OCT_3, MAC_OCT_4, MAC_OCT_5}, \
|
||||||
|
MAX_FRAME_SIZE, EXT_ETH_OAM}
|
||||||
|
|
||||||
|
extern DSL_InitData_t gInitCfgData;
|
||||||
|
|
||||||
|
#if defined(INCLUDE_DSL_CPE_API_VRX)
|
||||||
|
/**
|
||||||
|
This function returns the Initial Low Level Configuration from the give file
|
||||||
|
or the fixed default settings.
|
||||||
|
|
||||||
|
\param pName file name of the given LowLevelConfig
|
||||||
|
\param ppRetLLCfg Pointer to return the settings.
|
||||||
|
|
||||||
|
\return
|
||||||
|
Return values are defined within the DSL_Error_t definition
|
||||||
|
- DSL_SUCCESS in case of success
|
||||||
|
- DSL_ERROR if operation failed
|
||||||
|
- The return pointer is set to the given configuration or ULL
|
||||||
|
|
||||||
|
*/
|
||||||
|
DSL_Error_t DSL_CPE_GetInitialLowLevelConfig( DSL_char_t const *pName,
|
||||||
|
DSL_DeviceLowLevelConfig_t *pRetLLCfg );
|
||||||
|
#endif /* #ifdef INCLUDE_DSL_CPE_API_VRX*/
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* _DSL_CPE_INIT_CFG_H */
|
||||||
1639
src/dsl_cpe_linux.c
Normal file
1639
src/dsl_cpe_linux.c
Normal file
File diff suppressed because it is too large
Load diff
572
src/dsl_cpe_linux.h
Normal file
572
src/dsl_cpe_linux.h
Normal file
|
|
@ -0,0 +1,572 @@
|
||||||
|
/******************************************************************************
|
||||||
|
|
||||||
|
Copyright (c) 2007-2015
|
||||||
|
Lantiq Beteiligungs-GmbH & Co. KG
|
||||||
|
|
||||||
|
For licensing information, see the file 'LICENSE' in the root folder of
|
||||||
|
this software module.
|
||||||
|
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
#ifdef LINUX
|
||||||
|
|
||||||
|
#include "drv_dsl_cpe_api_types.h"
|
||||||
|
|
||||||
|
#ifndef INCLUDE_DSL_CPE_IFXOS_SUPPORT
|
||||||
|
|
||||||
|
#define _GNU_SOURCE 1
|
||||||
|
#include <features.h>
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <getopt.h>
|
||||||
|
#include <stdio.h> /* fdopen */
|
||||||
|
#include <sys/fcntl.h> /* open */
|
||||||
|
#include <sys/ioctl.h> /* ioctl */
|
||||||
|
#include <string.h> /* memset, strstr, strlen */
|
||||||
|
#include <stdlib.h> /* strtoul */
|
||||||
|
#include <sys/time.h> /* fd_set */
|
||||||
|
#include <sys/select.h> /* select */
|
||||||
|
#include <sys/ipc.h> /* ftok */
|
||||||
|
#include <ctype.h>
|
||||||
|
#include <unistd.h> /* daemon */
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/wait.h>
|
||||||
|
#include <pthread.h>
|
||||||
|
#include <signal.h>
|
||||||
|
#include <stdarg.h> /* va_start... */
|
||||||
|
#include <errno.h>
|
||||||
|
#include <sys/stat.h> /* stat */
|
||||||
|
#include <math.h> /* log10, fabs, ceil */
|
||||||
|
#include <malloc.h>
|
||||||
|
#include <termios.h> /* tcgetattr, tcsetattr */
|
||||||
|
#include <netinet/in.h>
|
||||||
|
#include <net/if.h>
|
||||||
|
#include <arpa/inet.h>
|
||||||
|
#include <sys/socket.h> /* socket */
|
||||||
|
#include <sys/sem.h> /* semget */
|
||||||
|
#include <semaphore.h> /* sem_t */
|
||||||
|
|
||||||
|
#ifdef DSL_DEBUG_TOOL_INTERFACE
|
||||||
|
#include <sys/socket.h>
|
||||||
|
#include <sys/ioctl.h>
|
||||||
|
#include <netinet/in.h>
|
||||||
|
#include <net/if.h>
|
||||||
|
#endif /* DSL_DEBUG_TOOL_INTERFACE*/
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <getopt.h>
|
||||||
|
#include <stdio.h> /* fdopen */
|
||||||
|
#include <string.h> /* memset, strstr, strlen */
|
||||||
|
#include <stdlib.h> /* strtoul */
|
||||||
|
#include <sys/time.h> /* fd_set */
|
||||||
|
#include <ctype.h>
|
||||||
|
#include <unistd.h> /* daemon */
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/wait.h>
|
||||||
|
#include <stdarg.h> /* va_start... */
|
||||||
|
#include <signal.h>
|
||||||
|
#include <errno.h>
|
||||||
|
#include <termios.h>
|
||||||
|
#include <netinet/in.h>
|
||||||
|
#include <net/if.h>
|
||||||
|
#include <arpa/inet.h>
|
||||||
|
#ifdef DSL_DEBUG_TOOL_INTERFACE
|
||||||
|
#include <sys/socket.h>
|
||||||
|
#include <sys/ioctl.h>
|
||||||
|
#include <netinet/in.h>
|
||||||
|
#include <net/if.h>
|
||||||
|
#endif /* DSL_DEBUG_TOOL_INTERFACE*/
|
||||||
|
|
||||||
|
/** IFXOS includes*/
|
||||||
|
#include "ifxos_common.h"
|
||||||
|
#include "ifxos_print_io.h"
|
||||||
|
#include "ifxos_memory_alloc.h"
|
||||||
|
#include "ifxos_device_access.h"
|
||||||
|
#include "ifxos_file_access.h"
|
||||||
|
#include "ifxos_time.h"
|
||||||
|
#include "ifxos_lock.h"
|
||||||
|
#include "ifxos_thread.h"
|
||||||
|
#include "ifxos_termios.h"
|
||||||
|
#include "ifxos_pipe.h"
|
||||||
|
#include "ifxos_misc.h"
|
||||||
|
#include "ifxos_socket.h"
|
||||||
|
#endif /* INCLUDE_DSL_CPE_IFXOS_SUPPORT*/
|
||||||
|
|
||||||
|
/** \file
|
||||||
|
OS interface, Linux adaptation
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
***************** Common definitions ********************************
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define DSL_CPE_STRNCASECMP strncasecmp
|
||||||
|
|
||||||
|
#ifndef FD_SETSIZE
|
||||||
|
#define DSL_FD_SETSIZE 1024
|
||||||
|
#else
|
||||||
|
#define DSL_FD_SETSIZE FD_SETSIZE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* arpa/inet.h mapping */
|
||||||
|
#define DSL_CPE_StringToAddress(strAddr, iAddr) inet_aton(strAddr, (iAddr))
|
||||||
|
#define DSL_CPE_AddressToString inet_ntoa
|
||||||
|
|
||||||
|
/* sys/socket.h mapping */
|
||||||
|
#define DSL_CPE_SockOptSet setsockopt
|
||||||
|
|
||||||
|
|
||||||
|
/** map FILE to own type */
|
||||||
|
typedef FILE DSL_CPE_File_t;
|
||||||
|
|
||||||
|
/** map timeval structure */
|
||||||
|
typedef struct timeval DSL_TimeVal_t;
|
||||||
|
|
||||||
|
/** map the sockaddr_in to own type */
|
||||||
|
typedef struct linger DSL_SockOptLinger_t;
|
||||||
|
|
||||||
|
#ifdef INCLUDE_SCRIPT_NOTIFICATION
|
||||||
|
typedef struct DSL_CPE_EnvList
|
||||||
|
{
|
||||||
|
struct DSL_CPE_EnvList *pNext;
|
||||||
|
DSL_char_t *pEnvEntry;
|
||||||
|
} DSL_CPE_EnvList_t;
|
||||||
|
|
||||||
|
#define DSL_CPE_MAX_ENV_VAR_LENGTH (40)
|
||||||
|
|
||||||
|
#endif /* #ifdef INCLUDE_SCRIPT_NOTIFICATION*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
Installs system dependant handlers (e.g. signal handler on linux)
|
||||||
|
*/
|
||||||
|
DSL_void_t DSL_CPE_HandlerInstall(DSL_void_t);
|
||||||
|
|
||||||
|
void DSL_CPE_KeypressSet (void);
|
||||||
|
void DSL_CPE_KeypressReset (void);
|
||||||
|
|
||||||
|
#ifdef INCLUDE_SCRIPT_NOTIFICATION
|
||||||
|
/**
|
||||||
|
Set environment variable
|
||||||
|
*/
|
||||||
|
DSL_Error_t DSL_CPE_SetEnv(const DSL_char_t *sName, const DSL_char_t *sValue);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Clear all environment variables
|
||||||
|
*/
|
||||||
|
DSL_void_t DSL_CPE_EnvVarFree(DSL_void_t);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Execute a shell command
|
||||||
|
*/
|
||||||
|
DSL_Error_t DSL_CPE_System(const DSL_char_t *sCommand);
|
||||||
|
#endif /* #ifdef INCLUDE_SCRIPT_NOTIFICATION*/
|
||||||
|
|
||||||
|
DSL_uint16_t DSL_CPE_Htons(DSL_uint16_t hVal);
|
||||||
|
|
||||||
|
DSL_uint32_t DSL_CPE_Htonl(DSL_uint32_t hVal);
|
||||||
|
|
||||||
|
#if defined(DSL_DEBUG_TOOL_INTERFACE) || defined(INCLUDE_DSL_CPE_DTI_SUPPORT)
|
||||||
|
DSL_char_t* DSL_CPE_OwnAddrStringGet(DSL_void_t);
|
||||||
|
#endif /* DSL_DEBUG_TOOL_INTERFACE*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
Print to a file, pipe, stdout, stderr or memory file.
|
||||||
|
*/
|
||||||
|
DSL_int_t DSL_CPE_FPrintf(DSL_CPE_File_t *stream, const DSL_char_t *format, ...)
|
||||||
|
#ifdef __GNUC__
|
||||||
|
__attribute__ ((format (printf, 2, 3)))
|
||||||
|
#endif
|
||||||
|
;
|
||||||
|
|
||||||
|
/*
|
||||||
|
***************** IFXOS dependent definitions **************************
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef INCLUDE_DSL_CPE_IFXOS_SUPPORT
|
||||||
|
|
||||||
|
#ifndef __BIG_ENDIAN
|
||||||
|
#define __BIG_ENDIAN 1
|
||||||
|
#define __LITTLE_ENDIAN 2
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef __BYTE_ORDER
|
||||||
|
#define __BYTE_ORDER __BIG_ENDIAN
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/** LINUX User - LOCK, user space semaphore for synchronisation. */
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
/** lock id */
|
||||||
|
sem_t object;
|
||||||
|
/** valid flag */
|
||||||
|
DSL_boolean_t bValid;
|
||||||
|
} DSL_CPE_Lock_t;
|
||||||
|
|
||||||
|
#define DSL_LOCK_INIT_VALID(P_LOCK_ID)\
|
||||||
|
(((P_LOCK_ID)) ? (((P_LOCK_ID)->bValid == DSL_TRUE) ? DSL_TRUE : DSL_FALSE) : DSL_FALSE)
|
||||||
|
|
||||||
|
|
||||||
|
/** map the fd_set to own type */
|
||||||
|
typedef fd_set DSL_CPE_fd_set_t;
|
||||||
|
|
||||||
|
typedef int DSL_Socket_t;
|
||||||
|
/** map the sockaddr_in to own type */
|
||||||
|
typedef struct sockaddr_in DSL_sockaddr_in_t;
|
||||||
|
|
||||||
|
/** map the sockaddr to own type */
|
||||||
|
typedef struct sockaddr DSL_sockaddr_t;
|
||||||
|
|
||||||
|
/** map the socklen_t to own type */
|
||||||
|
typedef socklen_t DSL_socklen_t;
|
||||||
|
|
||||||
|
/** map stat structure */
|
||||||
|
typedef struct stat DSL_CPE_stat_t;
|
||||||
|
|
||||||
|
/** map to stderr */
|
||||||
|
#define DSL_CPE_STDERR stderr
|
||||||
|
|
||||||
|
/** map to stdout */
|
||||||
|
#define DSL_CPE_STDOUT stdout
|
||||||
|
|
||||||
|
/** map to stdin */
|
||||||
|
#define DSL_CPE_STDIN stdin
|
||||||
|
|
||||||
|
#define DSL_CPE_snprintf snprintf
|
||||||
|
|
||||||
|
/* stdio.h mapping */
|
||||||
|
#define DSL_CPE_FdOpen fdopen
|
||||||
|
|
||||||
|
#define DSL_CPE_INADDR_ANY INADDR_ANY
|
||||||
|
|
||||||
|
#define DSL_CPE_SocketClose close
|
||||||
|
#define DSL_CPE_SocketRecv(s,buf,sz) recv(s,buf,sz,0)
|
||||||
|
#define DSL_CPE_SocketSend(s,buf,sz) send(s,buf,sz,MSG_DONTWAIT)
|
||||||
|
|
||||||
|
/**
|
||||||
|
LINUX User Thread - map the Thread ID.
|
||||||
|
*/
|
||||||
|
typedef int DSL_CPE_Thread_t;
|
||||||
|
|
||||||
|
/**
|
||||||
|
LINUX User Thread - function type LINUX User Thread Start Routine.
|
||||||
|
*/
|
||||||
|
typedef void *(*DSL_USER_THREAD_StartRoutine)(void*);
|
||||||
|
|
||||||
|
#define DSL_CPE_THREAD_NAME_LEN 16
|
||||||
|
#define DSL_THREAD_DOWN_WAIT_POLL_MS 10
|
||||||
|
#define DSL_THREAD_DELETE_WAIT_FOREVER 0xFFFFFFFF
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
/** user argument 1 */
|
||||||
|
DSL_uint32_t nArg1;
|
||||||
|
/** user argument 2 */
|
||||||
|
DSL_uint32_t nArg2;
|
||||||
|
/** name of the thread/task */
|
||||||
|
DSL_char_t pName[DSL_CPE_THREAD_NAME_LEN];
|
||||||
|
|
||||||
|
/** control - signal the run state */
|
||||||
|
volatile DSL_boolean_t bRunning;
|
||||||
|
/** control - set to shutdown the thread */
|
||||||
|
volatile DSL_boolean_t bShutDown;
|
||||||
|
} DSL_CPE_Thread_Params_t;
|
||||||
|
|
||||||
|
typedef DSL_int_t (*DSL_CPE_ThreadFunction_t)(DSL_CPE_Thread_Params_t *);
|
||||||
|
|
||||||
|
/**
|
||||||
|
LINUX User Thread - Control struct for thread handling.
|
||||||
|
*/
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
/* Contains the user and thread control parameters */
|
||||||
|
DSL_CPE_Thread_Params_t thrParams;
|
||||||
|
|
||||||
|
/* Points to the thread start routine */
|
||||||
|
DSL_CPE_ThreadFunction_t pThrFct;
|
||||||
|
|
||||||
|
/** LINUX User specific for internal - keep the task thread ID */
|
||||||
|
DSL_CPE_Thread_t tid;
|
||||||
|
|
||||||
|
/** requested kernel thread priority */
|
||||||
|
DSL_int32_t nPriority;
|
||||||
|
|
||||||
|
/** flag indicates that the structure is initialized */
|
||||||
|
DSL_boolean_t bValid;
|
||||||
|
|
||||||
|
} DSL_CPE_ThreadCtrl_t;
|
||||||
|
|
||||||
|
DSL_int32_t DSL_CPE_ThreadInit( DSL_CPE_ThreadCtrl_t *pThrCntrl,
|
||||||
|
DSL_char_t *pName,
|
||||||
|
DSL_CPE_ThreadFunction_t pThreadFunction,
|
||||||
|
DSL_uint32_t nStackSize,
|
||||||
|
DSL_uint32_t nPriority,
|
||||||
|
DSL_uint32_t nArg1,
|
||||||
|
DSL_uint32_t nArg2);
|
||||||
|
|
||||||
|
DSL_int32_t DSL_CPE_ThreadShutdown( DSL_CPE_ThreadCtrl_t *pThrCntrl,
|
||||||
|
DSL_uint32_t waitTime_ms);
|
||||||
|
|
||||||
|
DSL_CPE_Thread_t DSL_CPE_ThreadIdGet(void);
|
||||||
|
|
||||||
|
#define DSL_THREAD_INIT_VALID(P_THREAD_ID) (((P_THREAD_ID)) ? (((P_THREAD_ID)->bValid == DSL_TRUE) ? DSL_TRUE : DSL_FALSE) : DSL_FALSE)
|
||||||
|
|
||||||
|
/**
|
||||||
|
Open a device
|
||||||
|
*/
|
||||||
|
DSL_int_t DSL_CPE_Open(const DSL_char_t *pName);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Close a device
|
||||||
|
*/
|
||||||
|
DSL_int_t DSL_CPE_Close(const DSL_int_t fd);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Write to a device
|
||||||
|
*/
|
||||||
|
DSL_int_t DSL_CPE_Write(const DSL_int_t fd, const DSL_void_t *pData, const DSL_uint32_t nSize);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Read from a device
|
||||||
|
*/
|
||||||
|
DSL_int_t DSL_CPE_Read(const DSL_int_t fd, DSL_void_t *pData, const DSL_uint32_t nSize);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Control a device
|
||||||
|
*/
|
||||||
|
DSL_int_t DSL_CPE_Ioctl(const DSL_int_t fd, const DSL_uint32_t cmd, DSL_int_t param);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Wait for a device wake up
|
||||||
|
*/
|
||||||
|
DSL_int_t DSL_CPE_Select(const DSL_int_t max_fd,
|
||||||
|
const DSL_CPE_fd_set_t *read_fd_in,
|
||||||
|
DSL_CPE_fd_set_t *read_fd_out,
|
||||||
|
const DSL_uint32_t timeout_msec);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Fill a descriptor set with zeros.
|
||||||
|
*/
|
||||||
|
DSL_void_t DSL_CPE_FD_ZERO(DSL_CPE_fd_set_t *set);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Mark a descriptor in use.
|
||||||
|
*/
|
||||||
|
DSL_void_t DSL_CPE_FD_SET(DSL_int_t fd, DSL_CPE_fd_set_t *set);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Clear a descriptor in use flag.
|
||||||
|
*/
|
||||||
|
DSL_void_t DSL_CPE_FD_CLR(DSL_int_t fd, DSL_CPE_fd_set_t *set);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Check if a descriptor is set.
|
||||||
|
*/
|
||||||
|
DSL_int_t DSL_CPE_FD_ISSET(DSL_int_t fd, const DSL_CPE_fd_set_t *set);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Get a byte from stdin .
|
||||||
|
*/
|
||||||
|
DSL_int_t DSL_CPE_GetChar(DSL_void_t);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Write a byte stdout .
|
||||||
|
*/
|
||||||
|
DSL_int_t DSL_CPE_PutChar(DSL_char_t c, DSL_CPE_File_t *stream);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Create a pipe.
|
||||||
|
|
||||||
|
\param
|
||||||
|
pName - pipe name
|
||||||
|
\return
|
||||||
|
- DSL_SUCCESS on success
|
||||||
|
- DSL_ERROR on failure
|
||||||
|
*/
|
||||||
|
DSL_Error_t DSL_CPE_PipeCreate(DSL_char_t *pName);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Open a pipe.
|
||||||
|
|
||||||
|
\param
|
||||||
|
pName - pipe name
|
||||||
|
\return
|
||||||
|
- pointer to FILE structure
|
||||||
|
- in case of error the return value is NULL
|
||||||
|
*/
|
||||||
|
DSL_CPE_File_t *DSL_CPE_PipeOpen(DSL_char_t *pName, DSL_boolean_t reading, DSL_boolean_t blocking);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Close a pipe.
|
||||||
|
|
||||||
|
\param
|
||||||
|
pipe - pipe stream
|
||||||
|
\return
|
||||||
|
- (0) on success
|
||||||
|
- (-1) on failure
|
||||||
|
*/
|
||||||
|
DSL_Error_t DSL_CPE_PipeClose(DSL_CPE_File_t *file);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Initialize a semaphore.
|
||||||
|
|
||||||
|
\param lock semaphore identifier
|
||||||
|
|
||||||
|
\return
|
||||||
|
0 on success.
|
||||||
|
*/
|
||||||
|
DSL_int32_t DSL_CPE_LockCreate(DSL_CPE_Lock_t *lock);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Delete a semaphore.
|
||||||
|
|
||||||
|
\param lock semaphore identifier
|
||||||
|
|
||||||
|
\return
|
||||||
|
- DSL_SUCCESS on success
|
||||||
|
- DSL_ERROR on failure
|
||||||
|
*/
|
||||||
|
DSL_int32_t DSL_CPE_LockDelete(DSL_CPE_Lock_t *lock);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Gets a semaphore.
|
||||||
|
|
||||||
|
\param lock semaphore identifier
|
||||||
|
|
||||||
|
\return
|
||||||
|
- (0) on success
|
||||||
|
- (-1) on failure
|
||||||
|
*/
|
||||||
|
DSL_int32_t DSL_CPE_LockGet(DSL_CPE_Lock_t *lock);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Get the Lock with timeout.
|
||||||
|
|
||||||
|
\param
|
||||||
|
lockId Provides the pointer to the Lock Object.
|
||||||
|
|
||||||
|
\param
|
||||||
|
timeout_ms Timeout value [ms]
|
||||||
|
- 0: no wait
|
||||||
|
- -1: wait forever
|
||||||
|
- any other value: waiting for specified amount of milliseconds
|
||||||
|
\param
|
||||||
|
pRetCode Points to the return code variable. [O]
|
||||||
|
- If the pointer is NULL the return code will be ignored, else
|
||||||
|
the corresponding return code will be set
|
||||||
|
- For timeout the return code is set to 1.
|
||||||
|
|
||||||
|
\return
|
||||||
|
DSL_SUCCESS on success.
|
||||||
|
DSL_ERROR on error or timeout.
|
||||||
|
|
||||||
|
\note
|
||||||
|
To detect timeouts provide the return code varibale, in case of timeout
|
||||||
|
the return code is set to 1.
|
||||||
|
*/
|
||||||
|
DSL_int32_t DSL_CPE_LockTimedGet(
|
||||||
|
DSL_CPE_Lock_t *lockId,
|
||||||
|
DSL_uint32_t timeout_ms,
|
||||||
|
DSL_int32_t *pRetCode);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
Return the semaphore
|
||||||
|
|
||||||
|
\param lock semaphore identifier
|
||||||
|
|
||||||
|
\return
|
||||||
|
- (0) on success
|
||||||
|
- (-1) on failure
|
||||||
|
*/
|
||||||
|
DSL_int32_t DSL_CPE_LockSet(DSL_CPE_Lock_t *lock);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Sleep specified number of seconds.
|
||||||
|
|
||||||
|
\param nSeconds Number of seconds to sleep
|
||||||
|
*/
|
||||||
|
DSL_void_t DSL_CPE_Sleep(DSL_uint32_t nSeconds);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Sleep specified number of milliseconds.
|
||||||
|
|
||||||
|
\param nMs Number of milliseconds to sleep
|
||||||
|
*/
|
||||||
|
DSL_void_t DSL_CPE_MSecSleep(DSL_uint32_t nMs);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Allocates a memory block
|
||||||
|
|
||||||
|
\param size Bytes to allocate
|
||||||
|
|
||||||
|
\return
|
||||||
|
returns a DSL_void_t pointer to the allocated space, NULL if there's not
|
||||||
|
sufficient memory space available.
|
||||||
|
*/
|
||||||
|
DSL_void_t *DSL_CPE_Malloc(DSL_uint32_t size);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Deallocates a memory block
|
||||||
|
|
||||||
|
\param memblock Previously allocated memory block that should be freed
|
||||||
|
|
||||||
|
*/
|
||||||
|
void DSL_CPE_Free(DSL_void_t *memblock);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
Open a file.
|
||||||
|
*/
|
||||||
|
DSL_CPE_File_t *DSL_CPE_FOpen(const DSL_char_t *name, const DSL_char_t *mode);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Close the file or memory file.
|
||||||
|
*/
|
||||||
|
DSL_int_t DSL_CPE_FClose(DSL_CPE_File_t *fd);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Flush a file or pipe.
|
||||||
|
*/
|
||||||
|
DSL_int_t DSL_CPE_FFlush(DSL_CPE_File_t *fd);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Read from file, stdin .
|
||||||
|
*/
|
||||||
|
DSL_int_t DSL_CPE_FRead(DSL_void_t *buf, DSL_uint32_t size, DSL_uint32_t count, DSL_CPE_File_t *stream);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Write to a file, pipe, stdout.
|
||||||
|
*/
|
||||||
|
DSL_int_t DSL_CPE_FWrite(const DSL_void_t *buf, DSL_uint32_t size, DSL_uint32_t count, DSL_CPE_File_t *stream);
|
||||||
|
|
||||||
|
/**
|
||||||
|
End of file test of a file.
|
||||||
|
*/
|
||||||
|
DSL_int_t DSL_CPE_Feof(DSL_CPE_File_t *stream);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Read a string from the file.
|
||||||
|
*/
|
||||||
|
DSL_char_t *DSL_CPE_FGets(DSL_char_t *str, DSL_int_t n, DSL_CPE_File_t *stream);
|
||||||
|
|
||||||
|
/**
|
||||||
|
get file status
|
||||||
|
*/
|
||||||
|
DSL_int_t DSL_CPE_FStat(DSL_char_t *str, DSL_CPE_stat_t *st);
|
||||||
|
|
||||||
|
DSL_Socket_t DSL_CPE_Accept(DSL_Socket_t socFd, DSL_sockaddr_in_t *pSocAddr);
|
||||||
|
|
||||||
|
DSL_int_t DSL_CPE_Socket(DSL_int_t socType, DSL_Socket_t *pSocketFd);
|
||||||
|
|
||||||
|
DSL_int_t DSL_CPE_SocketBind(
|
||||||
|
DSL_Socket_t socFd,
|
||||||
|
DSL_sockaddr_in_t *pSocAddr);
|
||||||
|
|
||||||
|
void DSL_CPE_EchoOff (void);
|
||||||
|
void DSL_CPE_EchoOn (void);
|
||||||
|
#endif /* #ifndef INCLUDE_DSL_CPE_IFXOS_SUPPORT*/
|
||||||
|
|
||||||
|
#endif /* LINUX */
|
||||||
277
src/dsl_cpe_os.h
Normal file
277
src/dsl_cpe_os.h
Normal file
|
|
@ -0,0 +1,277 @@
|
||||||
|
/******************************************************************************
|
||||||
|
|
||||||
|
Copyright (c) 2007-2015
|
||||||
|
Lantiq Beteiligungs-GmbH & Co. KG
|
||||||
|
|
||||||
|
For licensing information, see the file 'LICENSE' in the root folder of
|
||||||
|
this software module.
|
||||||
|
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
#ifndef DSL_CPE_API_OS_H
|
||||||
|
#define DSL_CPE_API_OS_H
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/** \file
|
||||||
|
Operating System depending files, definitions and functions
|
||||||
|
*/
|
||||||
|
#include "drv_dsl_cpe_api_types.h"
|
||||||
|
#include "drv_dsl_cpe_api.h"
|
||||||
|
|
||||||
|
#if defined(INCLUDE_DSL_CPE_IFXOS_SUPPORT) || defined(VXWORKS)
|
||||||
|
/* support other OS only through lib_ifxos */
|
||||||
|
#ifndef USE_LIB_IFXOS
|
||||||
|
#define USE_LIB_IFXOS 1
|
||||||
|
#endif
|
||||||
|
#endif /** INCLUDE_DSL_CPE_IFXOS_SUPPORT*/
|
||||||
|
|
||||||
|
#ifndef _lint
|
||||||
|
#ifdef LINUX
|
||||||
|
#include "dsl_cpe_linux.h"
|
||||||
|
#elif defined(WIN32)
|
||||||
|
#include "dsl_cpe_win32.h"
|
||||||
|
#elif defined(VXWORKS)
|
||||||
|
#include "dsl_cpe_vxworks.h"
|
||||||
|
#elif defined(ECOS)
|
||||||
|
#include "dsl_cpe_ecos.h"
|
||||||
|
#elif defined(RTEMS)
|
||||||
|
#include "dsl_cpe_rtems.h"
|
||||||
|
#elif defined(GENERIC_OS)
|
||||||
|
#include "dsl_cpe_generic_os.h"
|
||||||
|
#else
|
||||||
|
#error please define your OS for the CPE Control adaptation
|
||||||
|
#endif
|
||||||
|
#else
|
||||||
|
#include "dsl_cpe_os_lint_map.h"
|
||||||
|
#endif /* _lint*/
|
||||||
|
|
||||||
|
#ifndef __BIG_ENDIAN
|
||||||
|
#error please define the __BIG_ENDIAN macro
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef __BYTE_ORDER
|
||||||
|
#error please specify the endianess of your target system
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
System definitions
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef DSL_CPE_PRIORITY
|
||||||
|
#define DSL_CPE_PRIORITY (0)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef DSL_CPE_STACKSIZE
|
||||||
|
#define DSL_CPE_STACKSIZE (2048)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef DSL_CPE_EVENT_STACKSIZE
|
||||||
|
#define DSL_CPE_EVENT_STACKSIZE (8192)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/** Default stack size */
|
||||||
|
#ifndef DSL_CPE_DEFAULT_STACK_SIZE
|
||||||
|
#define DSL_CPE_DEFAULT_STACK_SIZE (4096)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/** Control task stack size */
|
||||||
|
#ifndef DSL_CPE_CONTROL_STACK_SIZE
|
||||||
|
#define DSL_CPE_CONTROL_STACK_SIZE (4096)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/** Pipe task stack size */
|
||||||
|
#ifndef DSL_CPE_PIPE_STACK_SIZE
|
||||||
|
#define DSL_CPE_PIPE_STACK_SIZE (8192)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/** Pipe task priority */
|
||||||
|
#ifndef DSL_CPE_PIPE_PRIORITY
|
||||||
|
#define DSL_CPE_PIPE_PRIORITY (0)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef DSL_CPE_TCP_MSG_STACKSIZE
|
||||||
|
#define DSL_CPE_TCP_MSG_STACKSIZE (8192)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef DSL_CPE_TCP_MSG_PRIORITY
|
||||||
|
#define DSL_CPE_TCP_MSG_PRIORITY (0)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
Carriage Return + Line Feed, maybe overwritten by compile switches
|
||||||
|
or OS-specific adaptation */
|
||||||
|
#ifndef DSL_CPE_CRLF
|
||||||
|
#define DSL_CPE_CRLF "\n\r"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
int DSL_CPE_debug_printf(DSL_char_t *fmt, ...)
|
||||||
|
#if __GNUC__ >= 3
|
||||||
|
__attribute__ ((__format__ (__printf__, 1, 2)))
|
||||||
|
#endif
|
||||||
|
;
|
||||||
|
|
||||||
|
#if defined(USE_LIB_IFXOS) && (USE_LIB_IFXOS == 1)
|
||||||
|
|
||||||
|
/*
|
||||||
|
common defines - ifxos_common.h"
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define DSL_BYTE_ORDER IFXOS_BYTE_ORDER
|
||||||
|
#define DSL_LITTLE_ENDIAN IFXOS_LITTLE_ENDIAN
|
||||||
|
#define DSL_BIG_ENDIAN IFXOS_BIG_ENDIAN
|
||||||
|
|
||||||
|
#ifndef __BIG_ENDIAN
|
||||||
|
#define __BIG_ENDIAN IFXOS_BIG_ENDIAN
|
||||||
|
#define __LITTLE_ENDIAN IFXOS_LITTLE_ENDIAN
|
||||||
|
#define __BYTE_ORDER IFXOS_BYTE_ORDER
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef __BYTE_ORDER
|
||||||
|
#define __BYTE_ORDER __LITTLE_ENDIAN
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
Function map - stdio, string
|
||||||
|
*/
|
||||||
|
#define DSL_CPE_GetChar IFXOS_GetChar
|
||||||
|
#define DSL_CPE_PutChar IFXOS_PutChar
|
||||||
|
|
||||||
|
#define DSL_CPE_FGets IFXOS_FGets
|
||||||
|
/*#define DSL_CPE_FPrintf IFXOS_FPrintf*/
|
||||||
|
#define DSL_CPE_snprintf IFXOS_SNPrintf
|
||||||
|
#define DSL_vsnprintf IFXOS_VSNPrintf
|
||||||
|
|
||||||
|
/*
|
||||||
|
Function map - Memory Functions.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#if ( defined(IFXOS_HAVE_MEM_ALLOC) && (IFXOS_HAVE_MEM_ALLOC == 1) )
|
||||||
|
#define DSL_CPE_Malloc IFXOS_MemAlloc
|
||||||
|
#define DSL_CPE_Free IFXOS_MemFree
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
Function map - Device handling (open, close ...).
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define DSL_CPE_fd_set_t IFXOS_devFd_set_t
|
||||||
|
#define DSL_CPE_FD_SET IFXOS_DevFdSet
|
||||||
|
#define DSL_CPE_FD_ISSET IFXOS_DevFdIsSet
|
||||||
|
#define DSL_CPE_FD_ZERO IFXOS_DevFdZero
|
||||||
|
#define DSL_CPE_FD_CLR FD_CLR /*KAv: no IFX OS support!*/
|
||||||
|
|
||||||
|
|
||||||
|
#if ( defined(IFXOS_HAVE_DEVICE_ACCESS) && (IFXOS_HAVE_DEVICE_ACCESS == 1) )
|
||||||
|
#define DSL_CPE_Open IFXOS_DeviceOpen
|
||||||
|
#define DSL_CPE_Close IFXOS_DeviceClose
|
||||||
|
#define DSL_CPE_Read IFXOS_DeviceRead
|
||||||
|
#define DSL_CPE_Write IFXOS_DeviceWrite
|
||||||
|
#define DSL_CPE_Ioctl IFXOS_DeviceControl
|
||||||
|
#define DSL_CPE_Select IFXOS_DeviceSelect
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
function types - "ifxos_file_access.h"
|
||||||
|
*/
|
||||||
|
|
||||||
|
#if ( defined(IFXOS_HAVE_FILE_ACCESS) && (IFXOS_HAVE_FILE_ACCESS == 1) )
|
||||||
|
#define DSL_CPE_STDERR IFXOS_STDERR
|
||||||
|
#define DSL_CPE_STDOUT IFXOS_STDOUT
|
||||||
|
#define DSL_CPE_STDIN IFXOS_STDIN
|
||||||
|
#define DSL_CPE_stat_t IFXOS_stat_t
|
||||||
|
|
||||||
|
#define DSL_CPE_FdOpen fdopen
|
||||||
|
#define DSL_CPE_FOpen IFXOS_FOpen
|
||||||
|
#define DSL_CPE_FClose IFXOS_FClose
|
||||||
|
#define DSL_CPE_FRead IFXOS_FRead
|
||||||
|
#define DSL_CPE_FWrite IFXOS_FWrite
|
||||||
|
#define DSL_CPE_FFlush IFXOS_FFlush
|
||||||
|
#define DSL_CPE_Feof IFXOS_FEof
|
||||||
|
#define DSL_CPE_FStat IFXOS_Stat
|
||||||
|
#define DSL_CPE_FMemOpen IFXOS_FMemOpen
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
Function map - Time and Wait Functions and Defines.
|
||||||
|
*/
|
||||||
|
#define DSL_CPE_Sleep IFXOS_SecSleep
|
||||||
|
#define DSL_CPE_MSecSleep IFXOS_MSecSleep
|
||||||
|
|
||||||
|
/*
|
||||||
|
Function map - Lock functions and defines.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define DSL_CPE_Lock_t IFXOS_lock_t
|
||||||
|
|
||||||
|
#define DSL_LOCK_INIT_VALID IFXOS_LOCK_INIT_VALID
|
||||||
|
#define DSL_CPE_LockCreate IFXOS_LockInit
|
||||||
|
#define DSL_CPE_LockDelete IFXOS_LockDelete
|
||||||
|
#define DSL_CPE_LockSet IFXOS_LockRelease
|
||||||
|
#define DSL_CPE_LockTimedGet IFXOS_LockTimedGet
|
||||||
|
#define DSL_CPE_LockGet IFXOS_LockGet
|
||||||
|
|
||||||
|
/*
|
||||||
|
Function map - Lock functions and defines.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define DSL_CPE_Thread_t IFXOS_thread_t
|
||||||
|
#define DSL_CPE_ThreadFunction_t IFXOS_ThreadFunction_t
|
||||||
|
#define DSL_CPE_ThreadCtrl_t IFXOS_ThreadCtrl_t
|
||||||
|
#define DSL_CPE_Thread_Params_t IFXOS_ThreadParams_t
|
||||||
|
|
||||||
|
#define DSL_CPE_ThreadInit IFXOS_ThreadInit
|
||||||
|
#define DSL_CPE_ThreadDelete IFXOS_ThreadDelete
|
||||||
|
#define DSL_CPE_ThreadShutdown IFXOS_ThreadShutdown
|
||||||
|
#define DSL_CPE_ThreadIdGet IFXOS_ThreadIdGet
|
||||||
|
|
||||||
|
/*
|
||||||
|
Function map - Pipe functions and defines.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define DSL_CPE_Pipe_t IFXOS_Pipe_t
|
||||||
|
|
||||||
|
#define DSL_CPE_PipeCreate IFXOS_PipeCreate
|
||||||
|
#define DSL_CPE_PipeOpen IFXOS_PipeOpen
|
||||||
|
#define DSL_CPE_PipeClose IFXOS_PipeClose
|
||||||
|
|
||||||
|
/*
|
||||||
|
Function map - Terminal functions and defines.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define DSL_CPE_EchoOff IFXOS_EchoOff
|
||||||
|
#define DSL_CPE_EchoOn IFXOS_EchoOn
|
||||||
|
|
||||||
|
/*
|
||||||
|
function types - "ifxos_socket.h"
|
||||||
|
*/
|
||||||
|
#define DSL_CPE_INADDR_ANY IFXOS_SOC_INADDR_ANY
|
||||||
|
#define DSL_CPE_ADDR_LEN IFXOS_SOC_ADDR_LEN_BYTE
|
||||||
|
|
||||||
|
#define DSL_sockaddr_in_t IFXOS_sockAddr_t
|
||||||
|
#define DSL_sockaddr_t IFXOS_sockAddr_t
|
||||||
|
#define DSL_Socket_t IFXOS_socket_t
|
||||||
|
|
||||||
|
#define DSL_CPE_Socket IFXOS_SocketCreate
|
||||||
|
#define DSL_CPE_Accept IFXOS_SocketAccept
|
||||||
|
#define DSL_CPE_SocketBind IFXOS_SocketBind
|
||||||
|
#define DSL_CPE_SocketClose IFXOS_SocketClose
|
||||||
|
#define DSL_CPE_SocketRecv IFXOS_SocketRecv
|
||||||
|
#define DSL_CPE_SocketSend IFXOS_SocketSend
|
||||||
|
#define DSL_CPE_AddressToString inet_ntoa /*KAv: no IFX OS support!*/
|
||||||
|
|
||||||
|
#else /* (USE_LIB_IFXOS == 1) */
|
||||||
|
|
||||||
|
/* use the built in OS abstraction layer */
|
||||||
|
/* this is obsolete, in mid term it will be removed from source tree */
|
||||||
|
|
||||||
|
#endif /* (USE_LIB_IFXOS == 1) */
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* DSL_CPE_API_OS_H */
|
||||||
628
src/dsl_cpe_os_lint_map.h
Normal file
628
src/dsl_cpe_os_lint_map.h
Normal file
|
|
@ -0,0 +1,628 @@
|
||||||
|
/******************************************************************************
|
||||||
|
|
||||||
|
Copyright (c) 2007-2015
|
||||||
|
Lantiq Beteiligungs-GmbH & Co. KG
|
||||||
|
|
||||||
|
For licensing information, see the file 'LICENSE' in the root folder of
|
||||||
|
this software module.
|
||||||
|
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
#ifndef DSL_CPE_API_OS_LINT_MAP_H
|
||||||
|
#define DSL_CPE_API_OS_LINT_MAP_H
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "drv_dsl_cpe_api_types.h"
|
||||||
|
|
||||||
|
#define DSL_LOCK_INIT_VALID(P_LOCK_ID)\
|
||||||
|
(((P_LOCK_ID)) ? (((P_LOCK_ID)->bValid == DSL_TRUE) ? DSL_TRUE : DSL_FALSE) : DSL_FALSE)
|
||||||
|
|
||||||
|
#define NULL ((void *)0)
|
||||||
|
|
||||||
|
#define ULONG_MAX (0xFFFFFFFF)
|
||||||
|
|
||||||
|
#define _IOW(a,b,c) (b)
|
||||||
|
#define _IOR(a,b,c) (b)
|
||||||
|
#define _IOWR(a, b, c) (b)
|
||||||
|
#define _IO(a,b) (b)
|
||||||
|
#define _IOC_TYPE(x) (((x)>>8) & 0xFF)
|
||||||
|
|
||||||
|
#define SIGINT (0x0)
|
||||||
|
#define SIG_IGN NULL
|
||||||
|
|
||||||
|
#define FD_SETSIZE (1024)
|
||||||
|
#define DSL_FD_SETSIZE FD_SETSIZE
|
||||||
|
#define AF_INET (0)
|
||||||
|
#define DSL_CPE_INADDR_ANY (0)
|
||||||
|
#define SOCK_STREAM (0)
|
||||||
|
#define SOL_SOCKET (0)
|
||||||
|
#define SO_REUSEADDR (0)
|
||||||
|
#define SO_KEEPALIVE (0)
|
||||||
|
#define SO_DEBUG (0)
|
||||||
|
#define SO_LINGER (0)
|
||||||
|
#define SO_SNDTIMEO (0)
|
||||||
|
#define SO_RCVTIMEO (0)
|
||||||
|
#define MSG_DONTWAIT (1)
|
||||||
|
|
||||||
|
#define O_RDONLY (0)
|
||||||
|
#define O_RDWR (1)
|
||||||
|
#define SEEK_SET (0)
|
||||||
|
|
||||||
|
#define ENODATA (1)
|
||||||
|
#define EFAULT (2)
|
||||||
|
#define ETIMEDOUT (3)
|
||||||
|
#define ENOENT (4)
|
||||||
|
|
||||||
|
extern unsigned short errno;
|
||||||
|
|
||||||
|
extern char *optarg;
|
||||||
|
|
||||||
|
typedef int sem_t;
|
||||||
|
typedef int time_t;
|
||||||
|
typedef int off_t;
|
||||||
|
typedef unsigned long size_t;
|
||||||
|
|
||||||
|
/** LINUX User - LOCK, user space semaphore for synchronisation. */
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
/** lock id */
|
||||||
|
sem_t object;
|
||||||
|
/** valid flag */
|
||||||
|
DSL_boolean_t bValid;
|
||||||
|
} DSL_CPE_Lock_t;
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
int l_onoff;
|
||||||
|
int l_linger;
|
||||||
|
} DSL_SockOptLinger_t;
|
||||||
|
|
||||||
|
struct timeval
|
||||||
|
{
|
||||||
|
unsigned int tv_sec; /* seconds */
|
||||||
|
unsigned int tv_usec; /* microseconds */
|
||||||
|
};
|
||||||
|
|
||||||
|
struct in_addr {
|
||||||
|
unsigned long s_addr;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct sockaddr_in{
|
||||||
|
short sin_family;
|
||||||
|
unsigned short sin_port;
|
||||||
|
struct in_addr sin_addr;
|
||||||
|
char sin_zero[8];
|
||||||
|
};
|
||||||
|
|
||||||
|
struct sockaddr {
|
||||||
|
unsigned short sa_family;
|
||||||
|
char sa_data[14];
|
||||||
|
};
|
||||||
|
|
||||||
|
struct stat {
|
||||||
|
unsigned st_dev;
|
||||||
|
long st_pad1[3]; /* Reserved for network id */
|
||||||
|
unsigned st_rdev;
|
||||||
|
unsigned st_size;
|
||||||
|
long st_pad2[2];
|
||||||
|
long st_pad3;
|
||||||
|
/*
|
||||||
|
* Actually this should be timestruc_t st_atime, st_mtime and st_ctime
|
||||||
|
* but we don't have it under Linux.
|
||||||
|
*/
|
||||||
|
time_t st_atime;
|
||||||
|
long st_atime_nsec;
|
||||||
|
time_t st_mtime;
|
||||||
|
long st_mtime_nsec;
|
||||||
|
time_t st_ctime;
|
||||||
|
long st_ctime_nsec;
|
||||||
|
long st_blksize;
|
||||||
|
long st_blocks;
|
||||||
|
long st_pad4[14];
|
||||||
|
};
|
||||||
|
|
||||||
|
#define NCC 8
|
||||||
|
struct termios {
|
||||||
|
unsigned short c_iflag; /* input mode flags */
|
||||||
|
unsigned short c_oflag; /* output mode flags */
|
||||||
|
unsigned short c_cflag; /* control mode flags */
|
||||||
|
unsigned short c_lflag; /* local mode flags */
|
||||||
|
char c_line; /* line discipline */
|
||||||
|
unsigned char c_cc[NCC]; /* control characters */
|
||||||
|
};
|
||||||
|
|
||||||
|
struct option
|
||||||
|
{
|
||||||
|
const char *name;
|
||||||
|
int has_arg;
|
||||||
|
int *flag;
|
||||||
|
int val;
|
||||||
|
};
|
||||||
|
|
||||||
|
/** map the fd_set to own type */
|
||||||
|
typedef int DSL_CPE_fd_set_t;
|
||||||
|
|
||||||
|
typedef int DSL_Socket_t;
|
||||||
|
|
||||||
|
/** map the sockaddr_in to own type */
|
||||||
|
typedef struct sockaddr_in DSL_sockaddr_in_t;
|
||||||
|
|
||||||
|
/** map the sockaddr to own type */
|
||||||
|
typedef struct sockaddr DSL_sockaddr_t;
|
||||||
|
|
||||||
|
/** map the socklen_t to own type */
|
||||||
|
typedef int DSL_socklen_t;
|
||||||
|
|
||||||
|
/** map FILE to own type */
|
||||||
|
typedef int DSL_CPE_File_t;
|
||||||
|
|
||||||
|
/** map stat structure */
|
||||||
|
typedef struct stat DSL_CPE_stat_t;
|
||||||
|
|
||||||
|
typedef struct timeval DSL_TimeVal_t;
|
||||||
|
|
||||||
|
/**
|
||||||
|
LINUX User Thread - map the Thread ID.
|
||||||
|
*/
|
||||||
|
typedef int DSL_CPE_Thread_t;
|
||||||
|
|
||||||
|
/**
|
||||||
|
LINUX User Thread - function type LINUX User Thread Start Routine.
|
||||||
|
*/
|
||||||
|
typedef void *(*DSL_USER_THREAD_StartRoutine)(void*);
|
||||||
|
|
||||||
|
#define DSL_CPE_THREAD_NAME_LEN 16
|
||||||
|
#define DSL_THREAD_DOWN_WAIT_POLL_MS 10
|
||||||
|
#define DSL_THREAD_DELETE_WAIT_FOREVER 0xFFFFFFFF
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
/** user argument 1 */
|
||||||
|
DSL_uint32_t nArg1;
|
||||||
|
/** user argument 2 */
|
||||||
|
DSL_uint32_t nArg2;
|
||||||
|
/** name of the thread/task */
|
||||||
|
DSL_char_t pName[DSL_CPE_THREAD_NAME_LEN];
|
||||||
|
|
||||||
|
/** control - signal the run state */
|
||||||
|
volatile DSL_boolean_t bRunning;
|
||||||
|
/** control - set to shutdown the thread */
|
||||||
|
volatile DSL_boolean_t bShutDown;
|
||||||
|
} DSL_CPE_Thread_Params_t;
|
||||||
|
|
||||||
|
typedef DSL_int_t (*DSL_CPE_ThreadFunction_t)(DSL_CPE_Thread_Params_t *);
|
||||||
|
|
||||||
|
/**
|
||||||
|
LINUX User Thread - Control struct for thread handling.
|
||||||
|
*/
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
/* Contains the user and thread control parameters */
|
||||||
|
DSL_CPE_Thread_Params_t thrParams;
|
||||||
|
|
||||||
|
/* Points to the thread start routine */
|
||||||
|
DSL_CPE_ThreadFunction_t pThrFct;
|
||||||
|
|
||||||
|
/** LINUX User specific for internal - keep the task thread ID */
|
||||||
|
DSL_CPE_Thread_t tid;
|
||||||
|
|
||||||
|
/** requested kernel thread priority */
|
||||||
|
DSL_int32_t nPriority;
|
||||||
|
|
||||||
|
/** flag indicates that the structure is initialized */
|
||||||
|
DSL_boolean_t bValid;
|
||||||
|
|
||||||
|
} DSL_CPE_ThreadCtrl_t;
|
||||||
|
|
||||||
|
|
||||||
|
/** map to stderr */
|
||||||
|
#define DSL_CPE_STDERR ((DSL_CPE_File_t*)0)
|
||||||
|
|
||||||
|
/** map to stdout */
|
||||||
|
#define DSL_CPE_STDOUT ((DSL_CPE_File_t*)1)
|
||||||
|
|
||||||
|
/** map to stdin */
|
||||||
|
#define DSL_CPE_STDIN ((DSL_CPE_File_t*)2)
|
||||||
|
|
||||||
|
DSL_int32_t DSL_CPE_ThreadInit( DSL_CPE_ThreadCtrl_t *pThrCntrl,
|
||||||
|
DSL_char_t *pName,
|
||||||
|
DSL_CPE_ThreadFunction_t pThreadFunction,
|
||||||
|
DSL_uint32_t nStackSize,
|
||||||
|
DSL_uint32_t nPriority,
|
||||||
|
DSL_uint32_t nArg1,
|
||||||
|
DSL_uint32_t nArg2);
|
||||||
|
|
||||||
|
DSL_int32_t DSL_CPE_ThreadShutdown( DSL_CPE_ThreadCtrl_t *pThrCntrl,
|
||||||
|
DSL_uint32_t waitTime_ms);
|
||||||
|
|
||||||
|
DSL_CPE_Thread_t DSL_CPE_ThreadIdGet(void);
|
||||||
|
|
||||||
|
#define DSL_THREAD_INIT_VALID(P_THREAD_ID) (((P_THREAD_ID)) ? (((P_THREAD_ID)->bValid == DSL_TRUE) ? DSL_TRUE : DSL_FALSE) : DSL_FALSE)
|
||||||
|
|
||||||
|
int FD_ISSET(int fd, const int *set);
|
||||||
|
|
||||||
|
int lstat(char*, struct stat* );
|
||||||
|
|
||||||
|
int open(char* , int );
|
||||||
|
|
||||||
|
unsigned short ntohs(unsigned short);
|
||||||
|
|
||||||
|
unsigned short htons(unsigned short);
|
||||||
|
|
||||||
|
int ioctl(const int , const unsigned, int );
|
||||||
|
|
||||||
|
int close(int);
|
||||||
|
|
||||||
|
int recv(int, char*, int, int);
|
||||||
|
|
||||||
|
int send(int , const char *, int , int );
|
||||||
|
|
||||||
|
int listen(int, int);
|
||||||
|
|
||||||
|
int setsockopt(int, int, int, const void*, unsigned int);
|
||||||
|
|
||||||
|
int inet_aton(const char*, struct in_addr *);
|
||||||
|
|
||||||
|
char *inet_ntoa(struct in_addr);
|
||||||
|
|
||||||
|
int getopt_long(int, char* const*, const char*, const struct option*, int*);
|
||||||
|
|
||||||
|
int feof(DSL_CPE_File_t* stream );
|
||||||
|
|
||||||
|
int ferror(DSL_CPE_File_t* stream );
|
||||||
|
|
||||||
|
int fprintf(DSL_CPE_File_t* stream, const char* format, ...);
|
||||||
|
|
||||||
|
char *strpbrk( const char *string, const char *strCharSet );
|
||||||
|
|
||||||
|
void lseek(int , int , int );
|
||||||
|
|
||||||
|
int strtol( const char *nptr, char **endptr, int base );
|
||||||
|
int strtoul( const char *nptr, char **endptr, int base );
|
||||||
|
|
||||||
|
void *malloc(unsigned int size);
|
||||||
|
|
||||||
|
void *memset(void* dest, int c, size_t count);
|
||||||
|
|
||||||
|
void *memcpy(void* dest, const void* src, unsigned int count );
|
||||||
|
|
||||||
|
int isspace(int c);
|
||||||
|
|
||||||
|
int isprint(int c);
|
||||||
|
|
||||||
|
int read(int , void*, unsigned int);
|
||||||
|
int write(int , const void* , unsigned int );
|
||||||
|
|
||||||
|
void FD_ZERO(DSL_CPE_fd_set_t*);
|
||||||
|
|
||||||
|
void free(void* memblock);
|
||||||
|
|
||||||
|
int sscanf( const char *buffer, const char *format , ... );
|
||||||
|
|
||||||
|
int printf(const char* format, ...);
|
||||||
|
|
||||||
|
int signal (int , void*);
|
||||||
|
|
||||||
|
char *strstr( const char *string, const char *strCharSet );
|
||||||
|
|
||||||
|
int sprintf( char *buffer, const char *format ,... );
|
||||||
|
|
||||||
|
char *strncpy( char *strDest, const char *strSource, size_t count );
|
||||||
|
|
||||||
|
char *strtok( char *strToken, const char *strDelimit );
|
||||||
|
|
||||||
|
char *strtok_r(char*, const char*, char**);
|
||||||
|
|
||||||
|
size_t strlen( const char *string );
|
||||||
|
|
||||||
|
int strcmp( const char *string1, const char *string2 );
|
||||||
|
|
||||||
|
char *strcpy( char *strDestination, const char *strSource );
|
||||||
|
|
||||||
|
int DSL_CPE_snprintf(char *buffer, size_t count, const char *format , ... );
|
||||||
|
|
||||||
|
/**
|
||||||
|
Open a device
|
||||||
|
*/
|
||||||
|
DSL_int_t DSL_CPE_Open(const DSL_char_t *pName);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Close a device
|
||||||
|
*/
|
||||||
|
DSL_int_t DSL_CPE_Close(const DSL_int_t fd);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Write to a device
|
||||||
|
*/
|
||||||
|
DSL_int_t DSL_CPE_Write(const DSL_int_t fd, const DSL_void_t *pData, const DSL_uint32_t nSize);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Read from a device
|
||||||
|
*/
|
||||||
|
DSL_int_t DSL_CPE_Read(const DSL_int_t fd, DSL_void_t *pData, const DSL_uint32_t nSize);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Control a device
|
||||||
|
*/
|
||||||
|
DSL_int_t DSL_CPE_Ioctl(const DSL_int_t fd, const DSL_uint32_t cmd, DSL_int_t param);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Wait for a device wake up
|
||||||
|
*/
|
||||||
|
DSL_int_t DSL_CPE_Select(const DSL_int_t max_fd,
|
||||||
|
const DSL_CPE_fd_set_t *read_fd_in,
|
||||||
|
DSL_CPE_fd_set_t *read_fd_out,
|
||||||
|
const DSL_uint32_t timeout_msec);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Fill a descriptor set with zeros.
|
||||||
|
*/
|
||||||
|
DSL_void_t DSL_CPE_FD_ZERO(DSL_CPE_fd_set_t *set);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Mark a descriptor in use.
|
||||||
|
*/
|
||||||
|
DSL_void_t DSL_CPE_FD_SET(DSL_int_t fd, DSL_CPE_fd_set_t *set);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Clear a descriptor in use flag.
|
||||||
|
*/
|
||||||
|
DSL_void_t DSL_CPE_FD_CLR(DSL_int_t fd, DSL_CPE_fd_set_t *set);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Check if a descriptor is set.
|
||||||
|
*/
|
||||||
|
DSL_int_t DSL_CPE_FD_ISSET(DSL_int_t fd, const DSL_CPE_fd_set_t *set);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Get a byte from stdin .
|
||||||
|
*/
|
||||||
|
DSL_int_t DSL_CPE_GetChar(DSL_void_t);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Write a byte stdout .
|
||||||
|
*/
|
||||||
|
DSL_int_t DSL_CPE_PutChar(DSL_char_t c, DSL_CPE_File_t *stream);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Create a pipe.
|
||||||
|
|
||||||
|
\param
|
||||||
|
pName - pipe name
|
||||||
|
\return
|
||||||
|
- DSL_SUCCESS on success
|
||||||
|
- DSL_ERROR on failure
|
||||||
|
*/
|
||||||
|
DSL_Error_t DSL_CPE_PipeCreate(DSL_char_t *pName);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Open a pipe.
|
||||||
|
|
||||||
|
\param
|
||||||
|
pName - pipe name
|
||||||
|
\return
|
||||||
|
- pointer to FILE structure
|
||||||
|
- in case of error the return value is NULL
|
||||||
|
*/
|
||||||
|
DSL_CPE_File_t *DSL_CPE_PipeOpen(DSL_char_t *pName, DSL_boolean_t reading, DSL_boolean_t blocking);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Close a pipe.
|
||||||
|
|
||||||
|
\param
|
||||||
|
pipe - pipe stream
|
||||||
|
\return
|
||||||
|
- (0) on success
|
||||||
|
- (-1) on failure
|
||||||
|
*/
|
||||||
|
DSL_Error_t DSL_CPE_PipeClose(DSL_CPE_File_t *file);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Initialize a semaphore.
|
||||||
|
|
||||||
|
\param lock semaphore identifier
|
||||||
|
|
||||||
|
\return
|
||||||
|
0 on success.
|
||||||
|
*/
|
||||||
|
DSL_int32_t DSL_CPE_LockCreate(DSL_CPE_Lock_t *lock);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Delete a semaphore.
|
||||||
|
|
||||||
|
\param lock semaphore identifier
|
||||||
|
|
||||||
|
\return
|
||||||
|
- DSL_SUCCESS on success
|
||||||
|
- DSL_ERROR on failure
|
||||||
|
*/
|
||||||
|
DSL_int32_t DSL_CPE_LockDelete(DSL_CPE_Lock_t *lock);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Gets a semaphore.
|
||||||
|
|
||||||
|
\param lock semaphore identifier
|
||||||
|
|
||||||
|
\return
|
||||||
|
- (0) on success
|
||||||
|
- (-1) on failure
|
||||||
|
*/
|
||||||
|
DSL_int32_t DSL_CPE_LockGet(DSL_CPE_Lock_t *lock);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Get the Lock with timeout.
|
||||||
|
|
||||||
|
\param
|
||||||
|
lockId Provides the pointer to the Lock Object.
|
||||||
|
|
||||||
|
\param
|
||||||
|
timeout_ms Timeout value [ms]
|
||||||
|
- 0: no wait
|
||||||
|
- -1: wait forever
|
||||||
|
- any other value: waiting for specified amount of milliseconds
|
||||||
|
\param
|
||||||
|
pRetCode Points to the return code variable. [O]
|
||||||
|
- If the pointer is NULL the return code will be ignored, else
|
||||||
|
the corresponding return code will be set
|
||||||
|
- For timeout the return code is set to 1.
|
||||||
|
|
||||||
|
\return
|
||||||
|
DSL_SUCCESS on success.
|
||||||
|
DSL_ERROR on error or timeout.
|
||||||
|
|
||||||
|
\note
|
||||||
|
To detect timeouts provide the return code varibale, in case of timeout
|
||||||
|
the return code is set to 1.
|
||||||
|
*/
|
||||||
|
DSL_int32_t DSL_CPE_LockTimedGet(
|
||||||
|
DSL_CPE_Lock_t *lockId,
|
||||||
|
DSL_uint32_t timeout_ms,
|
||||||
|
DSL_int32_t *pRetCode);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
Return the semaphore
|
||||||
|
|
||||||
|
\param lock semaphore identifier
|
||||||
|
|
||||||
|
\return
|
||||||
|
- (0) on success
|
||||||
|
- (-1) on failure
|
||||||
|
*/
|
||||||
|
DSL_int32_t DSL_CPE_LockSet(DSL_CPE_Lock_t *lock);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Sleep specified number of seconds.
|
||||||
|
|
||||||
|
\param nSeconds Number of seconds to sleep
|
||||||
|
*/
|
||||||
|
DSL_void_t DSL_CPE_Sleep(DSL_uint32_t nSeconds);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Sleep specified number of milliseconds.
|
||||||
|
|
||||||
|
\param nMs Number of milliseconds to sleep
|
||||||
|
*/
|
||||||
|
DSL_void_t DSL_CPE_MSecSleep(DSL_uint32_t nMs);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Allocates a memory block
|
||||||
|
|
||||||
|
\param size Bytes to allocate
|
||||||
|
|
||||||
|
\return
|
||||||
|
returns a DSL_void_t pointer to the allocated space, NULL if there's not
|
||||||
|
sufficient memory space available.
|
||||||
|
*/
|
||||||
|
DSL_void_t *DSL_CPE_Malloc(DSL_uint32_t size);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Deallocates a memory block
|
||||||
|
|
||||||
|
\param memblock Previously allocated memory block that should be freed
|
||||||
|
|
||||||
|
*/
|
||||||
|
void DSL_CPE_Free(DSL_void_t *memblock);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Print to a file, pipe, stdout, stderr or memory file.
|
||||||
|
*/
|
||||||
|
DSL_int_t DSL_CPE_FPrintf(DSL_CPE_File_t *stream, const DSL_char_t *format, ...);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Open a file.
|
||||||
|
*/
|
||||||
|
DSL_CPE_File_t *DSL_CPE_FOpen(const DSL_char_t *name, const DSL_char_t *mode);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Close the file or memory file.
|
||||||
|
*/
|
||||||
|
DSL_int_t DSL_CPE_FClose(DSL_CPE_File_t *fd);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Flush a file or pipe.
|
||||||
|
*/
|
||||||
|
DSL_int_t DSL_CPE_FFlush(DSL_CPE_File_t *fd);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Read from file, stdin .
|
||||||
|
*/
|
||||||
|
DSL_int_t DSL_CPE_FRead(DSL_void_t *buf, DSL_uint32_t size, DSL_uint32_t count, DSL_CPE_File_t *stream);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Write to a file, pipe, stdout.
|
||||||
|
*/
|
||||||
|
DSL_int_t DSL_CPE_FWrite(const DSL_void_t *buf, DSL_uint32_t size, DSL_uint32_t count, DSL_CPE_File_t *stream);
|
||||||
|
|
||||||
|
/**
|
||||||
|
End of file test of a file.
|
||||||
|
*/
|
||||||
|
DSL_int_t DSL_CPE_Feof(DSL_CPE_File_t *stream);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Read a string from the file.
|
||||||
|
*/
|
||||||
|
DSL_char_t *DSL_CPE_FGets(DSL_char_t *str, DSL_int_t n, DSL_CPE_File_t *stream);
|
||||||
|
|
||||||
|
/**
|
||||||
|
get file status
|
||||||
|
*/
|
||||||
|
DSL_int_t DSL_CPE_FStat(DSL_char_t *str, DSL_CPE_stat_t *st);
|
||||||
|
|
||||||
|
DSL_Socket_t DSL_CPE_Accept(DSL_Socket_t socFd, DSL_sockaddr_in_t *pSocAddr);
|
||||||
|
|
||||||
|
DSL_int_t DSL_CPE_Socket(DSL_int_t socType, DSL_Socket_t *pSocketFd);
|
||||||
|
|
||||||
|
DSL_int_t DSL_CPE_SocketBind(
|
||||||
|
DSL_Socket_t socFd,
|
||||||
|
DSL_sockaddr_in_t *pSocAddr);
|
||||||
|
|
||||||
|
void DSL_CPE_EchoOff (void);
|
||||||
|
void DSL_CPE_EchoOn (void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Installs system dependant handlers (e.g. signal handler on linux)
|
||||||
|
*/
|
||||||
|
DSL_void_t DSL_CPE_HandlerInstall(DSL_void_t);
|
||||||
|
|
||||||
|
void DSL_CPE_KeypressSet (void);
|
||||||
|
void DSL_CPE_KeypressReset (void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Set environment variable
|
||||||
|
*/
|
||||||
|
DSL_Error_t DSL_CPE_SetEnv(const DSL_char_t *sName, const DSL_char_t *sValue);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Execute a shell command
|
||||||
|
*/
|
||||||
|
DSL_Error_t DSL_CPE_System(const DSL_char_t *sCommand);
|
||||||
|
|
||||||
|
DSL_uint16_t DSL_CPE_Htons(DSL_uint16_t hVal);
|
||||||
|
|
||||||
|
DSL_uint32_t DSL_CPE_Htonl(DSL_uint32_t hVal);
|
||||||
|
|
||||||
|
#if defined(DSL_DEBUG_TOOL_INTERFACE) || defined(INCLUDE_DSL_CPE_DTI_SUPPORT)
|
||||||
|
DSL_char_t* DSL_CPE_OwnAddrStringGet(DSL_void_t);
|
||||||
|
#endif /* DSL_DEBUG_TOOL_INTERFACE*/
|
||||||
|
|
||||||
|
#define DSL_CPE_StringToAddress(strAddr, iAddr) inet_aton(strAddr, (iAddr))
|
||||||
|
#define DSL_CPE_AddressToString inet_ntoa
|
||||||
|
|
||||||
|
#define DSL_CPE_SocketClose close
|
||||||
|
#define DSL_CPE_SocketRecv(s,buf,sz) recv(s,buf,sz,0)
|
||||||
|
#define DSL_CPE_SocketSend(s,buf,sz) send(s,buf,sz,MSG_DONTWAIT)
|
||||||
|
|
||||||
|
DSL_CPE_File_t *DSL_CPE_FdOpen(int , char*);
|
||||||
|
|
||||||
|
/* sys/socket.h mapping */
|
||||||
|
#define DSL_CPE_SockOptSet setsockopt
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* DSL_CPE_API_OS_LINT_MAP_H */
|
||||||
68
src/dsl_cpe_rtems.c
Normal file
68
src/dsl_cpe_rtems.c
Normal file
|
|
@ -0,0 +1,68 @@
|
||||||
|
/******************************************************************************
|
||||||
|
|
||||||
|
Copyright (c) 2007-2015
|
||||||
|
Lantiq Beteiligungs-GmbH & Co. KG
|
||||||
|
|
||||||
|
For licensing information, see the file 'LICENSE' in the root folder of
|
||||||
|
this software module.
|
||||||
|
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
#ifdef RTEMS
|
||||||
|
|
||||||
|
#include "dsl_cpe_rtems.h"
|
||||||
|
#include "dsl_cpe_control.h"
|
||||||
|
#include "dsl_cpe_os.h"
|
||||||
|
#include "dsl_cpe_simulator.h"
|
||||||
|
|
||||||
|
/** \file
|
||||||
|
Operating System access implementation
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
For a detailed description of the function, its arguments and return value
|
||||||
|
please refer to the description in the header file 'dsl_cpe_os.h'
|
||||||
|
*/
|
||||||
|
int DSL_CPE_debug_printf(DSL_char_t *fmt, ...)
|
||||||
|
{
|
||||||
|
va_list ap; /* points to each unnamed arg in turn */
|
||||||
|
DSL_int_t nLength = 0, nRet = 0;
|
||||||
|
DSL_boolean_t bPrint = DSL_FALSE;
|
||||||
|
DSL_char_t msg[DSL_DBG_MAX_DEBUG_PRINT_CHAR + 1] = "\0";
|
||||||
|
|
||||||
|
va_start(ap, fmt); /* set ap pointer to 1st unnamed arg */
|
||||||
|
|
||||||
|
if (bPrint == DSL_FALSE)
|
||||||
|
{
|
||||||
|
nRet = vsprintf(msg, fmt, ap);
|
||||||
|
|
||||||
|
if (nRet < 0)
|
||||||
|
{
|
||||||
|
nLength = DSL_DBG_MAX_DEBUG_PRINT_CHAR;
|
||||||
|
printf("DSL CPE API: WARNING - printout truncated in 'DSL_CPE_debug_printf'!" DSL_DRV_CRLF );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
nLength = nRet;
|
||||||
|
}
|
||||||
|
|
||||||
|
nRet = printf(msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
va_end(ap);
|
||||||
|
|
||||||
|
return nRet;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
For a detailed description of the function, its arguments and return value
|
||||||
|
please refer to the description in the header file 'dsl_cpe_os.h'
|
||||||
|
*/
|
||||||
|
DSL_int_t DSL_Ioctl(const DSL_int_t fd, const DSL_uint32_t cmd, DSL_int_t param)
|
||||||
|
{
|
||||||
|
return DSL_DRV_Ioctls(0,cmd, param);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* RTEMS */
|
||||||
|
|
||||||
|
|
||||||
66
src/dsl_cpe_rtems.h
Normal file
66
src/dsl_cpe_rtems.h
Normal file
|
|
@ -0,0 +1,66 @@
|
||||||
|
/******************************************************************************
|
||||||
|
|
||||||
|
Copyright (c) 2007-2015
|
||||||
|
Lantiq Beteiligungs-GmbH & Co. KG
|
||||||
|
|
||||||
|
For licensing information, see the file 'LICENSE' in the root folder of
|
||||||
|
this software module.
|
||||||
|
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
#ifdef RTEMS
|
||||||
|
|
||||||
|
/** \file
|
||||||
|
OS interface, RTEMS adaptation
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "drv_dsl_cpe_api_types.h"
|
||||||
|
|
||||||
|
#include <ctype.h>
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stddef.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include "dispatch.h"
|
||||||
|
#include "print.h"
|
||||||
|
#include "dbgio.h"
|
||||||
|
#include "xapi.h"
|
||||||
|
|
||||||
|
#include "ifxos_common.h"
|
||||||
|
#include "ifxos_debug.h"
|
||||||
|
#include "ifxos_thread.h"
|
||||||
|
#include "ifxos_memory_alloc.h"
|
||||||
|
#include "ifxos_lock.h"
|
||||||
|
#include "ifxos_select.h"
|
||||||
|
#include "ifxos_common.h"
|
||||||
|
#include "ifxos_print_io.h"
|
||||||
|
#include "ifxos_device_access.h"
|
||||||
|
#include "ifxos_file_access.h"
|
||||||
|
#include "ifxos_time.h"
|
||||||
|
#include "ifxos_thread.h"
|
||||||
|
#include "ifxos_termios.h"
|
||||||
|
#include "ifxos_pipe.h"
|
||||||
|
#include "ifxos_misc.h"
|
||||||
|
#include "ifxos_socket.h"
|
||||||
|
#include "ifx_getopt.h"
|
||||||
|
|
||||||
|
#define INCLUDE_DSL_DRV_STATIC_LINKED_FIRMWARE
|
||||||
|
|
||||||
|
#define PACKAGE_VERSION ""
|
||||||
|
|
||||||
|
#define DSL_CPE_STACKSIZE 2048
|
||||||
|
|
||||||
|
#define DSL_CPE_PRIORITY 64
|
||||||
|
#define DSL_CPE_PIPE_PRIORITY 64
|
||||||
|
#define DSL_CPE_TCP_MSG_PRIORITY 64
|
||||||
|
|
||||||
|
#define DSL_CPE_STRNCASECMP(a,b,c) stricmp(a,b)
|
||||||
|
|
||||||
|
#define DSL_CPE_FD_ZERO IFXOS_DevFdZero
|
||||||
|
|
||||||
|
/** context from DSL_DRV_Open()*/
|
||||||
|
extern DSL_OpenContext_t *gv_drv_dsl_pOpenCtx;
|
||||||
|
|
||||||
|
#endif /* RTEMS */
|
||||||
|
|
||||||
|
|
||||||
30
src/dsl_cpe_safec_wrapper.h
Normal file
30
src/dsl_cpe_safec_wrapper.h
Normal file
|
|
@ -0,0 +1,30 @@
|
||||||
|
/******************************************************************************
|
||||||
|
|
||||||
|
Copyright 2018, Intel Corporation
|
||||||
|
|
||||||
|
For licensing information, see the file 'LICENSE' in the root folder of
|
||||||
|
this software module.
|
||||||
|
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
#ifndef _SAFEC_WRAPPER_H
|
||||||
|
#define _SAFEC_WRAPPER_H
|
||||||
|
|
||||||
|
#if defined (SAFEC_SUPPORT) && (SAFEC_SUPPORT == 1)
|
||||||
|
#include "safe_lib.h"
|
||||||
|
#define cpe_control_memcpy_s(dest, destsz, src, srcsz) memcpy_s(dest, destsz, src, srcsz)
|
||||||
|
#define cpe_control_strncpy_s(dest, destsz, src, srcsz) strncpy_s(dest, destsz, src, srcsz)
|
||||||
|
#else
|
||||||
|
#warning "Safe C library is not available!"
|
||||||
|
|
||||||
|
#include <stddef.h> /* size_t */
|
||||||
|
static __inline__ size_t safec_wrapper_min(size_t a, size_t b)
|
||||||
|
{
|
||||||
|
return a > b ? b : a;
|
||||||
|
}
|
||||||
|
|
||||||
|
#define cpe_control_memcpy_s(dest, destsz, src, srcsz) memcpy(dest, src, safec_wrapper_min(destsz,srcsz))
|
||||||
|
#define cpe_control_strncpy_s(dest, destsz, src, srcsz) strncpy(dest, src, safec_wrapper_min(destsz,srcsz))
|
||||||
|
#endif /* defined (SAFEC_SUPPORT) && (SAFEC_SUPPORT == 1) */
|
||||||
|
|
||||||
|
#endif /* _SAFEC_WRAPPER_H */
|
||||||
200
src/dsl_cpe_simulator.c
Normal file
200
src/dsl_cpe_simulator.c
Normal file
|
|
@ -0,0 +1,200 @@
|
||||||
|
/******************************************************************************
|
||||||
|
|
||||||
|
Copyright 2018, Intel Corporation
|
||||||
|
|
||||||
|
Copyright (c) 2007-2015
|
||||||
|
Lantiq Beteiligungs-GmbH & Co. KG
|
||||||
|
|
||||||
|
For licensing information, see the file 'LICENSE' in the root folder of
|
||||||
|
this software module.
|
||||||
|
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
/** \file
|
||||||
|
Simulator
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "dsl_cpe_control.h"
|
||||||
|
|
||||||
|
#include "dsl_cpe_os.h"
|
||||||
|
#include "dsl_cpe_simulator.h"
|
||||||
|
#include "drv_dsl_cpe_api.h"
|
||||||
|
#include "drv_dsl_cpe_api_ioctl.h"
|
||||||
|
#include "drv_dsl_cpe_debug.h"
|
||||||
|
|
||||||
|
#undef DSL_CCA_DBG_BLOCK
|
||||||
|
#define DSL_CCA_DBG_BLOCK DSL_CCA_DBG_OS
|
||||||
|
|
||||||
|
#ifdef DSL_CPE_SIMULATOR_CONTROL
|
||||||
|
|
||||||
|
#define DSL_SIM_RX_BUFFER_SIZE 1024
|
||||||
|
|
||||||
|
/*static DSL_uint32_t device_fd=0;*/
|
||||||
|
static DSL_boolean_t g_bFirst = DSL_TRUE;
|
||||||
|
static DSL_boolean_t g_bVerbose = DSL_TRUE;
|
||||||
|
static DSL_CPE_Lock_t semData;
|
||||||
|
static DSL_DBG_ModuleLevelData_t g_nDbgLevelData[DSL_DBG_MAX_ENTRIES];
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
DSL_uint8_t msg_buffer[DSL_SIM_RX_BUFFER_SIZE];
|
||||||
|
DSL_uint8_t msg_count;
|
||||||
|
DSL_uint8_t device_count;
|
||||||
|
} dsl_line_t;
|
||||||
|
|
||||||
|
dsl_line_t dsl_line;
|
||||||
|
|
||||||
|
|
||||||
|
DSL_int_t DSL_CPE_SIM_Open( void *device, const char *appendix )
|
||||||
|
{
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_ERR, (DSL_CPE_PREFIX "open simulated" DSL_CPE_CRLF));
|
||||||
|
|
||||||
|
return (int)device;
|
||||||
|
}
|
||||||
|
|
||||||
|
DSL_int_t DSL_SIM_Close( void *pprivate )
|
||||||
|
{
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_ERR, (DSL_CPE_PREFIX "close simulated" DSL_CPE_CRLF));
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
DSL_int_t DSL_SIM_Write(void *pprivate, const char *buf, const int len )
|
||||||
|
{
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_ERR, (DSL_CPE_PREFIX "write simulated" DSL_CPE_CRLF ));
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
DSL_int_t DSL_SIM_Read( void *pprivate, char *buf, const int len )
|
||||||
|
{
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_ERR, (DSL_CPE_PREFIX "read simulated %d" DSL_CPE_CRLF));
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
DSL_int_t DSL_SIM_Ioctl( void *pprivate, unsigned int cmd, unsigned int arg )
|
||||||
|
{
|
||||||
|
DSL_int_t nRet = 0;
|
||||||
|
|
||||||
|
dsl_line_t *ctx = (dsl_line_t *)pprivate;
|
||||||
|
|
||||||
|
DSL_CPE_LockTimedGet(&semData, 0xFFFF, DSL_NULL);
|
||||||
|
|
||||||
|
switch(cmd)
|
||||||
|
{
|
||||||
|
case DSL_FIO_VERSION_INFORMATION_GET:
|
||||||
|
if(g_bVerbose)
|
||||||
|
{
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_ERR, (DSL_CPE_PREFIX "ioctl simulated - VersionInformationGet (cmd=0x%08X)" DSL_CPE_CRLF, cmd));
|
||||||
|
}
|
||||||
|
{
|
||||||
|
DSL_VersionInformation_t *pData = (DSL_VersionInformation_t *)arg;
|
||||||
|
DSL_char_t verApi[10] = "2.9.9";
|
||||||
|
DSL_char_t ver[10] = "0.0.0";
|
||||||
|
#if defined (INCLUDE_DSL_CPE_API_DANUBE)
|
||||||
|
DSL_char_t chip[15] = "Lantiq-Danube";
|
||||||
|
#else
|
||||||
|
DSL_char_t chip[15] = "Lantiq-Unknown";
|
||||||
|
#endif
|
||||||
|
|
||||||
|
memset(&(pData->data), 0, sizeof(pData->data));
|
||||||
|
memset(&(pData->accessCtl), 0, sizeof(pData->accessCtl));
|
||||||
|
cpe_control_memcpy_s(pData->data.DSL_DriverVersionApi, sizeof(pData->data.DSL_DriverVersionApi),
|
||||||
|
verApi, sizeof(verApi));
|
||||||
|
cpe_control_memcpy_s(pData->data.DSL_ChipSetFWVersion,sizeof(pData->data.DSL_ChipSetFWVersion),
|
||||||
|
ver, sizeof(ver));
|
||||||
|
cpe_control_memcpy_s(pData->data.DSL_ChipSetHWVersion, sizeof(pData->data.DSL_ChipSetHWVersion),
|
||||||
|
ver, sizeof(ver));
|
||||||
|
cpe_control_memcpy_s(pData->data.DSL_ChipSetType, sizeof(pData->data.DSL_ChipSetType),
|
||||||
|
chip, sizeof(chip));
|
||||||
|
cpe_control_memcpy_s(pData->data.DSL_DriverVersionMeiBsp, sizeof(pData->data.DSL_DriverVersionMeiBsp),
|
||||||
|
ver, sizeof(ver));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DSL_FIO_DBG_MODULE_LEVEL_GET:
|
||||||
|
{
|
||||||
|
DSL_DBG_ModuleLevel_t *pData = (DSL_DBG_ModuleLevel_t *)arg;
|
||||||
|
|
||||||
|
memset(&(pData->accessCtl), 0, sizeof(pData->accessCtl));
|
||||||
|
pData->data.nDbgLevel = g_nDbgLevelData[pData->data.nDbgModule].nDbgLevel;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DSL_FIO_DBG_MODULE_LEVEL_SET:
|
||||||
|
{
|
||||||
|
DSL_DBG_ModuleLevel_t *pData = (DSL_DBG_ModuleLevel_t *)arg;
|
||||||
|
|
||||||
|
memset(&(pData->accessCtl), 0, sizeof(pData->accessCtl));
|
||||||
|
g_nDbgLevelData[pData->data.nDbgModule].nDbgLevel = pData->data.nDbgLevel;
|
||||||
|
g_nDbgLevelData[pData->data.nDbgModule].nDbgModule = pData->data.nDbgModule;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DSL_FIO_AUTOBOOT_CONTROL_SET:
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DSL_FIO_AUTOBOOT_LOAD_FIRMWARE:
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DSL_FIO_AUTOBOOT_STATUS_GET:
|
||||||
|
{
|
||||||
|
DSL_AutobootStatus_t *pData = (DSL_AutobootStatus_t *)arg;
|
||||||
|
memset(&(pData->data), 0, sizeof(pData->data));
|
||||||
|
memset(&(pData->accessCtl), 0, sizeof(pData->accessCtl));
|
||||||
|
pData->data.nStatus = DSL_AUTOBOOT_STATUS_STOPPED;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
DSL_CCA_DEBUG(DSL_CCA_DBG_ERR, (DSL_CPE_PREFIX
|
||||||
|
"unhandled simulated ioctl (cmd=0x%08X)" DSL_CPE_CRLF, cmd));
|
||||||
|
nRet = -1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
DSL_CPE_LockSet(&semData);
|
||||||
|
|
||||||
|
return nRet;
|
||||||
|
}
|
||||||
|
|
||||||
|
DSL_int_t DSL_SIM_Poll( void *pprivate )
|
||||||
|
{
|
||||||
|
dsl_line_t *ctx = (dsl_line_t *)pprivate;
|
||||||
|
return ctx->msg_count;
|
||||||
|
}
|
||||||
|
#endif /* DSL_CPE_SIMULATOR_CONTROL */
|
||||||
|
|
||||||
|
#ifdef DSL_CPE_SIMULATOR_CONTROL
|
||||||
|
DSL_Error_t DSL_SimulatorInitialize(DSL_void_t)
|
||||||
|
{
|
||||||
|
#ifndef DSL_CPE_SIMULATOR_DRIVER
|
||||||
|
int drv_num;
|
||||||
|
|
||||||
|
if(g_bFirst)
|
||||||
|
{
|
||||||
|
g_bFirst = DSL_FALSE;
|
||||||
|
|
||||||
|
DSL_CPE_LockCreate(&semData);
|
||||||
|
|
||||||
|
drv_num = (int)DEVIO_driver_install(
|
||||||
|
DSL_CPE_SIM_Open,
|
||||||
|
DSL_SIM_Close,
|
||||||
|
DSL_SIM_Read,
|
||||||
|
DSL_SIM_Write,
|
||||||
|
DSL_SIM_Ioctl,
|
||||||
|
DSL_SIM_Poll );
|
||||||
|
|
||||||
|
DEVIO_device_add(&dsl_line, "/dev/dsl_cpe_api", drv_num);
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
/* Create DSL CPE API driver Simulator device*/
|
||||||
|
if (DSL_DRV_SIM_DeviceCreate() < 0)
|
||||||
|
{
|
||||||
|
return DSL_ERROR;
|
||||||
|
}
|
||||||
|
#endif /* DSL_CPE_SIMULATOR_DRIVER*/
|
||||||
|
return DSL_SUCCESS;
|
||||||
|
}
|
||||||
|
#endif /* DSL_CPE_SIMULATOR_CONTROL*/
|
||||||
33
src/dsl_cpe_simulator.h
Normal file
33
src/dsl_cpe_simulator.h
Normal file
|
|
@ -0,0 +1,33 @@
|
||||||
|
/******************************************************************************
|
||||||
|
|
||||||
|
Copyright (c) 2007-2015
|
||||||
|
Lantiq Beteiligungs-GmbH & Co. KG
|
||||||
|
|
||||||
|
For licensing information, see the file 'LICENSE' in the root folder of
|
||||||
|
this software module.
|
||||||
|
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
/** \file
|
||||||
|
DSL Device Simulator
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "dsl_cpe_control.h"
|
||||||
|
#include "dsl_cpe_os.h"
|
||||||
|
#ifdef DSL_CPE_SIMULATOR_DRIVER
|
||||||
|
#include "drv_dsl_cpe_os_win32.h"
|
||||||
|
#endif /* DSL_CPE_SIMULATOR_DRIVER*/
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(DSL_CPE_SIMULATOR_CONTROL) && !defined(DSL_CPE_SIMULATOR_DRIVER)
|
||||||
|
DSL_int_t DSL_CPE_SIM_Open(void *device, const char *appendix);
|
||||||
|
DSL_int_t DSL_SIM_Close( void *pprivate );
|
||||||
|
DSL_int_t DSL_SIM_Write( void *pprivate, const char *buf, const int len );
|
||||||
|
DSL_int_t DSL_SIM_Read( void *pprivate, char *buf, const int len );
|
||||||
|
DSL_int_t DSL_SIM_Ioctl( void *pprivate, unsigned int cmd, unsigned long arg );
|
||||||
|
DSL_int_t DSL_SIM_Poll( void *pprivate );
|
||||||
|
#endif /* defined(DSL_CPE_SIMULATOR_CONTROL) && !defined(DSL_CPE_SIMULATOR_DRIVER)*/
|
||||||
|
|
||||||
|
#if defined(DSL_CPE_SIMULATOR_CONTROL)
|
||||||
|
DSL_Error_t DSL_SimulatorInitialize(DSL_void_t);
|
||||||
|
#endif /* defined(DSL_CPE_SIMULATOR_CONTROL)*/
|
||||||
116
src/dsl_cpe_vxworks.c
Normal file
116
src/dsl_cpe_vxworks.c
Normal file
|
|
@ -0,0 +1,116 @@
|
||||||
|
/******************************************************************************
|
||||||
|
|
||||||
|
Copyright (c) 2007-2015
|
||||||
|
Lantiq Beteiligungs-GmbH & Co. KG
|
||||||
|
|
||||||
|
For licensing information, see the file 'LICENSE' in the root folder of
|
||||||
|
this software module.
|
||||||
|
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
#ifdef VXWORKS
|
||||||
|
|
||||||
|
#include "dsl_cpe_vxworks.h"
|
||||||
|
#include "dsl_cpe_control.h"
|
||||||
|
/** \file
|
||||||
|
Operating System access implementation
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
For a detailed description of the function, its arguments and return value
|
||||||
|
please refer to the description in the header file 'dsl_cpe_os.h'
|
||||||
|
*/
|
||||||
|
int DSL_CPE_debug_printf(DSL_char_t *fmt, ...)
|
||||||
|
{
|
||||||
|
va_list ap; /* points to each unnamed arg in turn */
|
||||||
|
DSL_int_t nRet = 0;
|
||||||
|
|
||||||
|
va_start(ap, fmt); /* set ap pointer to 1st unnamed arg */
|
||||||
|
|
||||||
|
/* For VxWorks printout will be only done to console only at the moment */
|
||||||
|
nRet = vprintf(fmt, ap);
|
||||||
|
|
||||||
|
va_end(ap);
|
||||||
|
|
||||||
|
return nRet;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Enable the console line mode.
|
||||||
|
In this mode the input from the device is available only after receiving NEWLINE .
|
||||||
|
This allows to modify the command line until the Enter key is pressed.
|
||||||
|
*/
|
||||||
|
void DSL_CPE_KeypressSet (void)
|
||||||
|
{
|
||||||
|
#ifndef _lint
|
||||||
|
int options;
|
||||||
|
int iofd = fileno(stdin);
|
||||||
|
|
||||||
|
options = ioctl(iofd, FIOGETOPTIONS, 0);
|
||||||
|
ioctl(iofd, FIOSETOPTIONS, (int)(options & ~OPT_LINE));
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Disable the console line mode.
|
||||||
|
Plesae refer to \ref IFXOS_KeypressSet .
|
||||||
|
*/
|
||||||
|
void DSL_CPE_KeypressReset (void)
|
||||||
|
{
|
||||||
|
#ifndef _lint
|
||||||
|
int options;
|
||||||
|
int iofd = fileno(stdin);
|
||||||
|
|
||||||
|
options = ioctl(iofd, FIOGETOPTIONS, 0);
|
||||||
|
ioctl(iofd, FIOSETOPTIONS, (int)(options | OPT_LINE));
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
DSL_uint16_t DSL_CPE_Htons(DSL_uint16_t hVal)
|
||||||
|
{
|
||||||
|
#if __BYTE_ORDER == __LITTLE_ENDIAN
|
||||||
|
return (((hVal >> 8) & 0xFF) | (hVal << 8));
|
||||||
|
#else
|
||||||
|
return hVal;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
DSL_uint32_t DSL_CPE_Htonl(DSL_uint32_t hVal)
|
||||||
|
{
|
||||||
|
#if __BYTE_ORDER == __LITTLE_ENDIAN
|
||||||
|
|
||||||
|
return (((hVal >> 24) & 0x000000ff) | ((hVal >> 8) & 0x0000ff00) | ((hVal << 8) & 0x00ff0000) | ((hVal << 24) & 0xff000000));
|
||||||
|
#else
|
||||||
|
return hVal;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
For a detailed description of the function, its arguments and return value
|
||||||
|
please refer to the description in the header file 'dsl_cpe_os.h'
|
||||||
|
*/
|
||||||
|
DSL_int_t DSL_CPE_FPrintf(DSL_CPE_File_t *stream, const DSL_char_t *format, ...)
|
||||||
|
{
|
||||||
|
va_list ap; /* points to each unnamed arg in turn */
|
||||||
|
DSL_int_t nRet = 0;
|
||||||
|
|
||||||
|
va_start(ap, format); /* set ap pointer to 1st unnamed arg */
|
||||||
|
|
||||||
|
nRet = vfprintf(stream, format, ap);
|
||||||
|
fflush(stream);
|
||||||
|
|
||||||
|
va_end(ap);
|
||||||
|
|
||||||
|
return nRet;
|
||||||
|
}
|
||||||
|
|
||||||
|
#if defined(DSL_DEBUG_TOOL_INTERFACE) || defined(INCLUDE_DSL_CPE_DTI_SUPPORT)
|
||||||
|
DSL_char_t * DSL_CPE_OwnAddrStringGet(DSL_void_t)
|
||||||
|
{
|
||||||
|
return DSL_NULL;
|
||||||
|
}
|
||||||
|
#endif /* DSL_DEBUG_TOOL_INTERFACE*/
|
||||||
|
|
||||||
|
#endif /* VXWORKS */
|
||||||
|
|
||||||
90
src/dsl_cpe_vxworks.h
Normal file
90
src/dsl_cpe_vxworks.h
Normal file
|
|
@ -0,0 +1,90 @@
|
||||||
|
/******************************************************************************
|
||||||
|
|
||||||
|
Copyright (c) 2007-2015
|
||||||
|
Lantiq Beteiligungs-GmbH & Co. KG
|
||||||
|
|
||||||
|
For licensing information, see the file 'LICENSE' in the root folder of
|
||||||
|
this software module.
|
||||||
|
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
#ifdef VXWORKS
|
||||||
|
|
||||||
|
/** \file
|
||||||
|
OS interface, WIN32 adaptation
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "drv_dsl_cpe_api_types.h"
|
||||||
|
|
||||||
|
#include <signal.h>
|
||||||
|
|
||||||
|
#include <ctype.h>
|
||||||
|
#ifdef DSL_DEBUG_TOOL_INTERFACE
|
||||||
|
#include <sys/socket.h>
|
||||||
|
#include <sys/ioctl.h>
|
||||||
|
#include <netinet/in.h>
|
||||||
|
#include <net/if.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "ifxos_common.h"
|
||||||
|
#include "ifxos_debug.h"
|
||||||
|
#include "ifxos_thread.h"
|
||||||
|
#include "ifxos_memory_alloc.h"
|
||||||
|
#include "ifxos_lock.h"
|
||||||
|
#include "ifxos_select.h"
|
||||||
|
#include "ifxos_common.h"
|
||||||
|
#include "ifxos_print_io.h"
|
||||||
|
#include "ifxos_device_access.h"
|
||||||
|
#include "ifxos_file_access.h"
|
||||||
|
#include "ifxos_time.h"
|
||||||
|
#include "ifxos_thread.h"
|
||||||
|
#include "ifxos_termios.h"
|
||||||
|
#include "ifxos_pipe.h"
|
||||||
|
#include "ifxos_misc.h"
|
||||||
|
#include "ifxos_socket.h"
|
||||||
|
#include "ifx_getopt.h"
|
||||||
|
|
||||||
|
#define PACKAGE_VERSION ""
|
||||||
|
|
||||||
|
#define DSL_CPE_STACKSIZE 2048
|
||||||
|
|
||||||
|
#define DSL_CPE_PRIORITY 64
|
||||||
|
#define DSL_CPE_PIPE_PRIORITY 64
|
||||||
|
#define DSL_CPE_TCP_MSG_PRIORITY 64
|
||||||
|
|
||||||
|
#define DSL_CPE_STRNCASECMP(a,b,c) stricmp(a,b)
|
||||||
|
|
||||||
|
#define DSL_CPE_StringToAddress(strAddr, iAddr) inet_aton(strAddr, (iAddr))
|
||||||
|
#define DSL_CPE_AddressToString inet_ntoa
|
||||||
|
|
||||||
|
#ifndef FD_SETSIZE
|
||||||
|
#define DSL_FD_SETSIZE 1024
|
||||||
|
#else
|
||||||
|
#define DSL_FD_SETSIZE FD_SETSIZE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define DSL_CPE_File_t IFXOS_File_t
|
||||||
|
|
||||||
|
void DSL_CPE_KeypressSet (void);
|
||||||
|
void DSL_CPE_KeypressReset (void);
|
||||||
|
|
||||||
|
DSL_uint16_t DSL_CPE_Htons(DSL_uint16_t hVal);
|
||||||
|
|
||||||
|
DSL_uint32_t DSL_CPE_Htonl(DSL_uint32_t hVal);
|
||||||
|
|
||||||
|
#if defined(DSL_DEBUG_TOOL_INTERFACE) || defined(INCLUDE_DSL_CPE_DTI_SUPPORT)
|
||||||
|
DSL_char_t* DSL_CPE_OwnAddrStringGet(DSL_void_t);
|
||||||
|
#endif /* DSL_DEBUG_TOOL_INTERFACE*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
Print to a file, pipe, stdout, stderr or memory file.
|
||||||
|
*/
|
||||||
|
DSL_int_t DSL_CPE_FPrintf(DSL_CPE_File_t *stream, const DSL_char_t *format, ...)
|
||||||
|
#ifdef __GNUC__
|
||||||
|
__attribute__ ((format (printf, 2, 3)))
|
||||||
|
#endif
|
||||||
|
;
|
||||||
|
|
||||||
|
#endif /* VXWORKS */
|
||||||
|
|
||||||
|
|
||||||
112
src/dsl_cpe_win32.c
Normal file
112
src/dsl_cpe_win32.c
Normal file
|
|
@ -0,0 +1,112 @@
|
||||||
|
/******************************************************************************
|
||||||
|
|
||||||
|
Copyright (c) 2007-2015
|
||||||
|
Lantiq Beteiligungs-GmbH & Co. KG
|
||||||
|
|
||||||
|
For licensing information, see the file 'LICENSE' in the root folder of
|
||||||
|
this software module.
|
||||||
|
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
/** \file
|
||||||
|
Operating System access implementation
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*#define DSL_INTERN*/
|
||||||
|
|
||||||
|
#include "dsl_cpe_os.h"
|
||||||
|
|
||||||
|
#if defined(WIN32)
|
||||||
|
|
||||||
|
#include <time.h>
|
||||||
|
#include <process.h>
|
||||||
|
|
||||||
|
#undef DSL_CCA_DBG_BLOCK
|
||||||
|
#define DSL_CCA_DBG_BLOCK DSL_CCA_DBG_OS
|
||||||
|
|
||||||
|
/**
|
||||||
|
For a detailed description of the function, its arguments and return value
|
||||||
|
please refer to the description in the header file 'dsl_cpe_os.h'
|
||||||
|
*/
|
||||||
|
DSL_Error_t DSL_SetEnv(const DSL_char_t *sName, const DSL_char_t *sValue)
|
||||||
|
{
|
||||||
|
return ((SetEnvironmentVariable(sName, sValue) == 0) ? DSL_ERROR : DSL_SUCCESS);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Installing of system handler routines.
|
||||||
|
|
||||||
|
\remarks not used
|
||||||
|
*/
|
||||||
|
DSL_void_t DSL_HandlerInstall(DSL_void_t)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
For a detailed description of the function, its arguments and return value
|
||||||
|
please refer to the description in the header file 'dsl_cpe_os.h'
|
||||||
|
*/
|
||||||
|
int DSL_CPE_debug_printf(DSL_char_t *fmt, ...)
|
||||||
|
{
|
||||||
|
va_list ap; /* points to each unnamed arg in turn */
|
||||||
|
DSL_int_t nRet = 0;
|
||||||
|
|
||||||
|
va_start(ap, fmt); /* set ap pointer to 1st unnamed arg */
|
||||||
|
|
||||||
|
/* For VxWorks printout will be only done to console only at the moment */
|
||||||
|
nRet = vprintf(fmt, ap);
|
||||||
|
|
||||||
|
va_end(ap);
|
||||||
|
|
||||||
|
return nRet;
|
||||||
|
}
|
||||||
|
|
||||||
|
DSL_uint16_t DSL_CPE_Htons(DSL_uint16_t hVal)
|
||||||
|
{
|
||||||
|
return htons(hVal);
|
||||||
|
}
|
||||||
|
|
||||||
|
DSL_uint32_t DSL_CPE_Htonl(DSL_uint32_t hVal)
|
||||||
|
{
|
||||||
|
return htonl(hVal);
|
||||||
|
}
|
||||||
|
|
||||||
|
#if defined(DSL_DEBUG_TOOL_INTERFACE) || defined(INCLUDE_DSL_CPE_DTI_SUPPORT)
|
||||||
|
DSL_char_t * DSL_CPE_OwnAddrStringGet(DSL_void_t)
|
||||||
|
{
|
||||||
|
return DSL_NULL;
|
||||||
|
}
|
||||||
|
#endif /* DSL_DEBUG_TOOL_INTERFACE*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
For a detailed description of the function, its arguments and return value
|
||||||
|
please refer to the description in the header file 'dsl_cpe_os.h'
|
||||||
|
*/
|
||||||
|
DSL_int_t DSL_CPE_FPrintf(DSL_CPE_File_t *stream, const DSL_char_t *format, ...)
|
||||||
|
{
|
||||||
|
va_list ap; /* points to each unnamed arg in turn */
|
||||||
|
DSL_int_t nRet = 0;
|
||||||
|
|
||||||
|
va_start(ap, format); /* set ap pointer to 1st unnamed arg */
|
||||||
|
|
||||||
|
nRet = vfprintf(stream, format, ap);
|
||||||
|
fflush(stream);
|
||||||
|
|
||||||
|
va_end(ap);
|
||||||
|
|
||||||
|
return nRet;
|
||||||
|
}
|
||||||
|
DSL_Error_t DSL_CPE_System(const DSL_char_t *sCommand)
|
||||||
|
{
|
||||||
|
return DSL_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
DSL_Error_t DSL_CPE_SetEnv(const DSL_char_t *sName, const DSL_char_t *sValue)
|
||||||
|
{
|
||||||
|
return DSL_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
DSL_void_t DSL_CPE_EnvVarFree(DSL_void_t)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
#endif /* WIN32 */
|
||||||
129
src/dsl_cpe_win32.h
Normal file
129
src/dsl_cpe_win32.h
Normal file
|
|
@ -0,0 +1,129 @@
|
||||||
|
/******************************************************************************
|
||||||
|
|
||||||
|
Copyright (c) 2007-2015
|
||||||
|
Lantiq Beteiligungs-GmbH & Co. KG
|
||||||
|
|
||||||
|
For licensing information, see the file 'LICENSE' in the root folder of
|
||||||
|
this software module.
|
||||||
|
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
#ifdef WIN32
|
||||||
|
|
||||||
|
/** \file
|
||||||
|
OS interface, WIN32 adaptation
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma pack(1)
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <errno.h>
|
||||||
|
|
||||||
|
#include <signal.h>
|
||||||
|
#include <io.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
|
||||||
|
#include "drv_dsl_cpe_api_types.h"
|
||||||
|
|
||||||
|
#include "ifxos_common.h"
|
||||||
|
#include "ifxos_debug.h"
|
||||||
|
#include "ifxos_thread.h"
|
||||||
|
#include "ifxos_memory_alloc.h"
|
||||||
|
#include "ifxos_lock.h"
|
||||||
|
#include "ifxos_select.h"
|
||||||
|
#include "ifxos_common.h"
|
||||||
|
#include "ifxos_print_io.h"
|
||||||
|
#include "ifxos_device_access.h"
|
||||||
|
#include "ifxos_file_access.h"
|
||||||
|
#include "ifxos_time.h"
|
||||||
|
#include "ifxos_thread.h"
|
||||||
|
#include "ifxos_termios.h"
|
||||||
|
#include "ifxos_pipe.h"
|
||||||
|
#include "ifxos_misc.h"
|
||||||
|
#include "ifxos_socket.h"
|
||||||
|
#include "ifx_getopt.h"
|
||||||
|
|
||||||
|
#ifndef snprintf
|
||||||
|
#define snprintf sprintf_s
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef strtok_r
|
||||||
|
#define strtok_r strtok_s
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define ULONG_MAX 0xffffffffUL /* maximum unsigned long value */
|
||||||
|
|
||||||
|
#define __BIG_ENDIAN IFXOS_BIG_ENDIAN
|
||||||
|
#define __BYTE_ORDER IFXOS_BYTE_ORDER
|
||||||
|
|
||||||
|
#define DSL_CPE_PRIORITY (0)
|
||||||
|
#define DSL_CPE_STACKSIZE (2048)
|
||||||
|
|
||||||
|
#define DSL_CPE_STRNCASECMP(a,b,c) stricmp((a),(b))
|
||||||
|
|
||||||
|
/** carriage return for windows */
|
||||||
|
#define DSL_CPE_CRLF "\n"
|
||||||
|
|
||||||
|
#define IOCPARM_MASK 0x7f /* parameters must be < 128 bytes */
|
||||||
|
#define IOC_VOID 0x20000000 /* no parameters */
|
||||||
|
#define IOC_OUT 0x40000000 /* copy out parameters */
|
||||||
|
#define IOC_IN 0x80000000 /* copy in parameters */
|
||||||
|
#define IOC_INOUT (IOC_IN|IOC_OUT)
|
||||||
|
|
||||||
|
#ifndef _IO
|
||||||
|
#define _IO(x,y) (IOC_VOID|((x)<<8)|y)
|
||||||
|
#endif /* _IO*/
|
||||||
|
#ifndef _IOR
|
||||||
|
#define _IOR(x,y,t) (IOC_OUT|((sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|y)
|
||||||
|
#endif /* _IOR*/
|
||||||
|
#ifndef _IOW
|
||||||
|
#define _IOW(x,y,t) (IOC_IN|((sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|y)
|
||||||
|
#endif /* _IOW*/
|
||||||
|
#ifndef _IOWR
|
||||||
|
#define _IOWR(x,y,t) (IOC_INOUT|((sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|y)
|
||||||
|
#endif /* _IOWR*/
|
||||||
|
|
||||||
|
#define _IOC_TYPE(x) (((x)>>8) & 0xFF)
|
||||||
|
|
||||||
|
#define DSL_CPE_StringToAddress(strAddr, iAddr) inet_aton(strAddr, (iAddr))
|
||||||
|
#define DSL_CPE_AddressToString inet_ntoa
|
||||||
|
|
||||||
|
#define DSL_CPE_KeypressSet IFXOS_KeypressSet
|
||||||
|
#define DSL_CPE_KeypressReset IFXOS_KeypressReset
|
||||||
|
|
||||||
|
|
||||||
|
/** map FILE to own type */
|
||||||
|
typedef FILE DSL_CPE_File_t;
|
||||||
|
|
||||||
|
DSL_uint16_t DSL_CPE_Htons(DSL_uint16_t hVal);
|
||||||
|
|
||||||
|
DSL_uint32_t DSL_CPE_Htonl(DSL_uint32_t hVal);
|
||||||
|
|
||||||
|
#if defined(DSL_DEBUG_TOOL_INTERFACE) || defined(INCLUDE_DSL_CPE_DTI_SUPPORT)
|
||||||
|
DSL_char_t* DSL_CPE_OwnAddrStringGet(DSL_void_t);
|
||||||
|
#endif /* DSL_DEBUG_TOOL_INTERFACE*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
Print to a file, pipe, stdout, stderr or memory file.
|
||||||
|
*/
|
||||||
|
DSL_int_t DSL_CPE_FPrintf(DSL_CPE_File_t *stream, const DSL_char_t *format, ...)
|
||||||
|
#ifdef __GNUC__
|
||||||
|
__attribute__ ((format (printf, 2, 3)))
|
||||||
|
#endif
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
#pragma pack()
|
||||||
|
|
||||||
|
extern DSL_Error_t DSL_CPE_PipeCreate(DSL_char_t *pName);
|
||||||
|
extern DSL_Error_t DSL_CPE_PipeClose(DSL_CPE_File_t *file);
|
||||||
|
extern DSL_CPE_File_t *DSL_CPE_PipeOpen(DSL_char_t *pName,
|
||||||
|
DSL_boolean_t reading, DSL_boolean_t blocking);
|
||||||
|
|
||||||
|
DSL_Error_t DSL_CPE_System(const DSL_char_t *sCommand);
|
||||||
|
DSL_Error_t DSL_CPE_SetEnv(const DSL_char_t *sName, const DSL_char_t *sValue);
|
||||||
|
DSL_void_t DSL_CPE_EnvVarFree(DSL_void_t);
|
||||||
|
|
||||||
|
#endif /* WIN32 */
|
||||||
|
|
||||||
|
|
||||||
32
tools/pipe/Makefile.am
Normal file
32
tools/pipe/Makefile.am
Normal file
|
|
@ -0,0 +1,32 @@
|
||||||
|
## Process this file with automake to produce Makefile.in
|
||||||
|
|
||||||
|
bin_PROGRAMS = dsl_cpe_pipe
|
||||||
|
|
||||||
|
if ADD_APPL_CFLAGS_SET
|
||||||
|
dsl_cpe_pipe_cflags = $(ADD_APPL_CFLAGS)
|
||||||
|
else
|
||||||
|
dsl_cpe_pipe_cflags =
|
||||||
|
endif
|
||||||
|
|
||||||
|
dsl_cpe_pipe_compile_cflags = $(DSL_DRIVER_INCL_PATH) $(IFXOS_INCLUDE_PATH)
|
||||||
|
|
||||||
|
if SAFEC_SUPPORT
|
||||||
|
dsl_cpe_pipe_compile_cflags += @SAFEC_INCL_PATH@
|
||||||
|
endif
|
||||||
|
|
||||||
|
dsl_cpe_pipe_common_cflags = -Wall -Wimplicit -Wreturn-type -Wunused -Wundef \
|
||||||
|
-Wswitch -Wcomment -Wuninitialized -DLINUX -g -s
|
||||||
|
|
||||||
|
dsl_cpe_pipe_SOURCES = dsl_pipe_client.c dsl_pipe_lib.c
|
||||||
|
|
||||||
|
dsl_cpe_pipe_CFLAGS = $(dsl_cpe_pipe_common_cflags) \
|
||||||
|
$(dsl_cpe_pipe_cflags) \
|
||||||
|
$(dsl_cpe_pipe_compile_cflags)
|
||||||
|
|
||||||
|
dsl_cpe_pipe_LDADD = -lifxos -lpthread -lm -lrt
|
||||||
|
|
||||||
|
EXTRA_DIST = dsl_cpe_safec_wrapper.h
|
||||||
|
|
||||||
|
if SAFEC_SUPPORT
|
||||||
|
dsl_cpe_pipe_LDADD += -l@SAFEC_LIB_NAME@
|
||||||
|
endif
|
||||||
685
tools/pipe/Makefile.in
Normal file
685
tools/pipe/Makefile.in
Normal file
|
|
@ -0,0 +1,685 @@
|
||||||
|
# Makefile.in generated by automake 1.15 from Makefile.am.
|
||||||
|
# @configure_input@
|
||||||
|
|
||||||
|
# Copyright (C) 1994-2014 Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
# This Makefile.in is free software; the Free Software Foundation
|
||||||
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
|
# with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||||
|
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||||
|
# PARTICULAR PURPOSE.
|
||||||
|
|
||||||
|
@SET_MAKE@
|
||||||
|
|
||||||
|
VPATH = @srcdir@
|
||||||
|
am__is_gnu_make = { \
|
||||||
|
if test -z '$(MAKELEVEL)'; then \
|
||||||
|
false; \
|
||||||
|
elif test -n '$(MAKE_HOST)'; then \
|
||||||
|
true; \
|
||||||
|
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
|
||||||
|
true; \
|
||||||
|
else \
|
||||||
|
false; \
|
||||||
|
fi; \
|
||||||
|
}
|
||||||
|
am__make_running_with_option = \
|
||||||
|
case $${target_option-} in \
|
||||||
|
?) ;; \
|
||||||
|
*) echo "am__make_running_with_option: internal error: invalid" \
|
||||||
|
"target option '$${target_option-}' specified" >&2; \
|
||||||
|
exit 1;; \
|
||||||
|
esac; \
|
||||||
|
has_opt=no; \
|
||||||
|
sane_makeflags=$$MAKEFLAGS; \
|
||||||
|
if $(am__is_gnu_make); then \
|
||||||
|
sane_makeflags=$$MFLAGS; \
|
||||||
|
else \
|
||||||
|
case $$MAKEFLAGS in \
|
||||||
|
*\\[\ \ ]*) \
|
||||||
|
bs=\\; \
|
||||||
|
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
|
||||||
|
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
|
||||||
|
esac; \
|
||||||
|
fi; \
|
||||||
|
skip_next=no; \
|
||||||
|
strip_trailopt () \
|
||||||
|
{ \
|
||||||
|
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
|
||||||
|
}; \
|
||||||
|
for flg in $$sane_makeflags; do \
|
||||||
|
test $$skip_next = yes && { skip_next=no; continue; }; \
|
||||||
|
case $$flg in \
|
||||||
|
*=*|--*) continue;; \
|
||||||
|
-*I) strip_trailopt 'I'; skip_next=yes;; \
|
||||||
|
-*I?*) strip_trailopt 'I';; \
|
||||||
|
-*O) strip_trailopt 'O'; skip_next=yes;; \
|
||||||
|
-*O?*) strip_trailopt 'O';; \
|
||||||
|
-*l) strip_trailopt 'l'; skip_next=yes;; \
|
||||||
|
-*l?*) strip_trailopt 'l';; \
|
||||||
|
-[dEDm]) skip_next=yes;; \
|
||||||
|
-[JT]) skip_next=yes;; \
|
||||||
|
esac; \
|
||||||
|
case $$flg in \
|
||||||
|
*$$target_option*) has_opt=yes; break;; \
|
||||||
|
esac; \
|
||||||
|
done; \
|
||||||
|
test $$has_opt = yes
|
||||||
|
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
|
||||||
|
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
|
||||||
|
pkgdatadir = $(datadir)/@PACKAGE@
|
||||||
|
pkgincludedir = $(includedir)/@PACKAGE@
|
||||||
|
pkglibdir = $(libdir)/@PACKAGE@
|
||||||
|
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
||||||
|
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||||
|
install_sh_DATA = $(install_sh) -c -m 644
|
||||||
|
install_sh_PROGRAM = $(install_sh) -c
|
||||||
|
install_sh_SCRIPT = $(install_sh) -c
|
||||||
|
INSTALL_HEADER = $(INSTALL_DATA)
|
||||||
|
transform = $(program_transform_name)
|
||||||
|
NORMAL_INSTALL = :
|
||||||
|
PRE_INSTALL = :
|
||||||
|
POST_INSTALL = :
|
||||||
|
NORMAL_UNINSTALL = :
|
||||||
|
PRE_UNINSTALL = :
|
||||||
|
POST_UNINSTALL = :
|
||||||
|
bin_PROGRAMS = dsl_cpe_pipe$(EXEEXT)
|
||||||
|
@SAFEC_SUPPORT_TRUE@am__append_1 = @SAFEC_INCL_PATH@
|
||||||
|
@SAFEC_SUPPORT_TRUE@am__append_2 = -l@SAFEC_LIB_NAME@
|
||||||
|
subdir = tools/pipe
|
||||||
|
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||||
|
am__aclocal_m4_deps = $(top_srcdir)/configure.in
|
||||||
|
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||||
|
$(ACLOCAL_M4)
|
||||||
|
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
|
||||||
|
mkinstalldirs = $(install_sh) -d
|
||||||
|
CONFIG_HEADER = $(top_builddir)/src/dsl_cpe_config.h
|
||||||
|
CONFIG_CLEAN_FILES =
|
||||||
|
CONFIG_CLEAN_VPATH_FILES =
|
||||||
|
am__installdirs = "$(DESTDIR)$(bindir)"
|
||||||
|
PROGRAMS = $(bin_PROGRAMS)
|
||||||
|
am_dsl_cpe_pipe_OBJECTS = dsl_cpe_pipe-dsl_pipe_client.$(OBJEXT) \
|
||||||
|
dsl_cpe_pipe-dsl_pipe_lib.$(OBJEXT)
|
||||||
|
dsl_cpe_pipe_OBJECTS = $(am_dsl_cpe_pipe_OBJECTS)
|
||||||
|
am__DEPENDENCIES_1 =
|
||||||
|
dsl_cpe_pipe_DEPENDENCIES = $(am__DEPENDENCIES_1)
|
||||||
|
dsl_cpe_pipe_LINK = $(CCLD) $(dsl_cpe_pipe_CFLAGS) $(CFLAGS) \
|
||||||
|
$(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||||
|
AM_V_P = $(am__v_P_@AM_V@)
|
||||||
|
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
|
||||||
|
am__v_P_0 = false
|
||||||
|
am__v_P_1 = :
|
||||||
|
AM_V_GEN = $(am__v_GEN_@AM_V@)
|
||||||
|
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
|
||||||
|
am__v_GEN_0 = @echo " GEN " $@;
|
||||||
|
am__v_GEN_1 =
|
||||||
|
AM_V_at = $(am__v_at_@AM_V@)
|
||||||
|
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
|
||||||
|
am__v_at_0 = @
|
||||||
|
am__v_at_1 =
|
||||||
|
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/src
|
||||||
|
depcomp = $(SHELL) $(top_srcdir)/depcomp
|
||||||
|
am__depfiles_maybe = depfiles
|
||||||
|
am__mv = mv -f
|
||||||
|
AM_V_lt = $(am__v_lt_@AM_V@)
|
||||||
|
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
|
||||||
|
am__v_lt_0 = --silent
|
||||||
|
am__v_lt_1 =
|
||||||
|
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
||||||
|
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||||
|
AM_V_CC = $(am__v_CC_@AM_V@)
|
||||||
|
am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
|
||||||
|
am__v_CC_0 = @echo " CC " $@;
|
||||||
|
am__v_CC_1 =
|
||||||
|
CCLD = $(CC)
|
||||||
|
LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||||
|
AM_V_CCLD = $(am__v_CCLD_@AM_V@)
|
||||||
|
am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
|
||||||
|
am__v_CCLD_0 = @echo " CCLD " $@;
|
||||||
|
am__v_CCLD_1 =
|
||||||
|
SOURCES = $(dsl_cpe_pipe_SOURCES)
|
||||||
|
DIST_SOURCES = $(dsl_cpe_pipe_SOURCES)
|
||||||
|
am__can_run_installinfo = \
|
||||||
|
case $$AM_UPDATE_INFO_DIR in \
|
||||||
|
n|no|NO) false;; \
|
||||||
|
*) (install-info --version) >/dev/null 2>&1;; \
|
||||||
|
esac
|
||||||
|
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
|
||||||
|
# Read a list of newline-separated strings from the standard input,
|
||||||
|
# and print each of them once, without duplicates. Input order is
|
||||||
|
# *not* preserved.
|
||||||
|
am__uniquify_input = $(AWK) '\
|
||||||
|
BEGIN { nonempty = 0; } \
|
||||||
|
{ items[$$0] = 1; nonempty = 1; } \
|
||||||
|
END { if (nonempty) { for (i in items) print i; }; } \
|
||||||
|
'
|
||||||
|
# Make sure the list of sources is unique. This is necessary because,
|
||||||
|
# e.g., the same source file might be shared among _SOURCES variables
|
||||||
|
# for different programs/libraries.
|
||||||
|
am__define_uniq_tagged_files = \
|
||||||
|
list='$(am__tagged_files)'; \
|
||||||
|
unique=`for i in $$list; do \
|
||||||
|
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||||
|
done | $(am__uniquify_input)`
|
||||||
|
ETAGS = etags
|
||||||
|
CTAGS = ctags
|
||||||
|
am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp
|
||||||
|
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||||
|
ACLOCAL = @ACLOCAL@
|
||||||
|
ADD_APPL_CFLAGS = @ADD_APPL_CFLAGS@
|
||||||
|
ADD_APPL_LDFLAGS = @ADD_APPL_LDFLAGS@
|
||||||
|
AMTAR = @AMTAR@
|
||||||
|
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
||||||
|
AUTOCONF = @AUTOCONF@
|
||||||
|
AUTOHEADER = @AUTOHEADER@
|
||||||
|
AUTOMAKE = @AUTOMAKE@
|
||||||
|
AWK = @AWK@
|
||||||
|
CC = @CC@
|
||||||
|
CCDEPMODE = @CCDEPMODE@
|
||||||
|
CFLAGS = @CFLAGS@
|
||||||
|
CONFIGURE_OPTIONS = @CONFIGURE_OPTIONS@
|
||||||
|
CPP = @CPP@
|
||||||
|
CPPFLAGS = @CPPFLAGS@
|
||||||
|
CYGPATH_W = @CYGPATH_W@
|
||||||
|
DEFS = @DEFS@
|
||||||
|
DEPDIR = @DEPDIR@
|
||||||
|
DISTCHECK_CONFIGURE_PARAMS = @DISTCHECK_CONFIGURE_PARAMS@
|
||||||
|
DSL_ADD_EXT_APPL_CFLAGS = @DSL_ADD_EXT_APPL_CFLAGS@
|
||||||
|
DSL_CCA_DBG_MAX_LEVEL_PRE = @DSL_CCA_DBG_MAX_LEVEL_PRE@
|
||||||
|
DSL_CCA_DBG_MAX_LEVEL_SET = @DSL_CCA_DBG_MAX_LEVEL_SET@
|
||||||
|
DSL_CONFIG_MODEL_TYPE = @DSL_CONFIG_MODEL_TYPE@
|
||||||
|
DSL_CPE_DEBUG_DISABLE = @DSL_CPE_DEBUG_DISABLE@
|
||||||
|
DSL_DBG_MSG_NETLINK_ID = @DSL_DBG_MSG_NETLINK_ID@
|
||||||
|
DSL_DEBUG_TOOL_INTERFACE = @DSL_DEBUG_TOOL_INTERFACE@
|
||||||
|
DSL_DEVICE_DRIVER_INCL_PATH = @DSL_DEVICE_DRIVER_INCL_PATH@
|
||||||
|
DSL_DEVICE_NAME = @DSL_DEVICE_NAME@
|
||||||
|
DSL_DRIVER_INCL_PATH = @DSL_DRIVER_INCL_PATH@
|
||||||
|
DSL_VRX_DEVICE_NAME = @DSL_VRX_DEVICE_NAME@
|
||||||
|
DTI_INCL_PATH = @DTI_INCL_PATH@
|
||||||
|
DTI_LIBRARY_PATH = @DTI_LIBRARY_PATH@
|
||||||
|
ECHO_C = @ECHO_C@
|
||||||
|
ECHO_N = @ECHO_N@
|
||||||
|
ECHO_T = @ECHO_T@
|
||||||
|
EGREP = @EGREP@
|
||||||
|
EXEEXT = @EXEEXT@
|
||||||
|
EXTRA_APP_CFLAGS = @EXTRA_APP_CFLAGS@
|
||||||
|
GREP = @GREP@
|
||||||
|
IFXOS_INCLUDE_PATH = @IFXOS_INCLUDE_PATH@
|
||||||
|
IFXOS_LIBRARY_PATH = @IFXOS_LIBRARY_PATH@
|
||||||
|
INCLUDE_DEPRECATED = @INCLUDE_DEPRECATED@
|
||||||
|
INCLUDE_DEVICE_EXCEPTION_CODES = @INCLUDE_DEVICE_EXCEPTION_CODES@
|
||||||
|
INCLUDE_DSL_ADSL_MIB = @INCLUDE_DSL_ADSL_MIB@
|
||||||
|
INCLUDE_DSL_CEOC = @INCLUDE_DSL_CEOC@
|
||||||
|
INCLUDE_DSL_CONFIG_GET = @INCLUDE_DSL_CONFIG_GET@
|
||||||
|
INCLUDE_DSL_CPE_CLI_AUTOGEN_SUPPORT = @INCLUDE_DSL_CPE_CLI_AUTOGEN_SUPPORT@
|
||||||
|
INCLUDE_DSL_CPE_CLI_SUPPORT = @INCLUDE_DSL_CPE_CLI_SUPPORT@
|
||||||
|
INCLUDE_DSL_CPE_CMV_SCRIPTS_MATH = @INCLUDE_DSL_CPE_CMV_SCRIPTS_MATH@
|
||||||
|
INCLUDE_DSL_CPE_CMV_SCRIPTS_SUPPORT = @INCLUDE_DSL_CPE_CMV_SCRIPTS_SUPPORT@
|
||||||
|
INCLUDE_DSL_CPE_DEBUG_LOGGER_SUPPORT = @INCLUDE_DSL_CPE_DEBUG_LOGGER_SUPPORT@
|
||||||
|
INCLUDE_DSL_CPE_DTI_SUPPORT = @INCLUDE_DSL_CPE_DTI_SUPPORT@
|
||||||
|
INCLUDE_DSL_CPE_FILESYSTEM_SUPPORT = @INCLUDE_DSL_CPE_FILESYSTEM_SUPPORT@
|
||||||
|
INCLUDE_DSL_CPE_IFXOS_SUPPORT = @INCLUDE_DSL_CPE_IFXOS_SUPPORT@
|
||||||
|
INCLUDE_DSL_CPE_MISC_LINE_STATUS = @INCLUDE_DSL_CPE_MISC_LINE_STATUS@
|
||||||
|
INCLUDE_DSL_CPE_PM_CHANNEL_COUNTERS = @INCLUDE_DSL_CPE_PM_CHANNEL_COUNTERS@
|
||||||
|
INCLUDE_DSL_CPE_PM_CHANNEL_EXT_COUNTERS = @INCLUDE_DSL_CPE_PM_CHANNEL_EXT_COUNTERS@
|
||||||
|
INCLUDE_DSL_CPE_PM_CHANNEL_THRESHOLDS = @INCLUDE_DSL_CPE_PM_CHANNEL_THRESHOLDS@
|
||||||
|
INCLUDE_DSL_CPE_PM_CONFIG = @INCLUDE_DSL_CPE_PM_CONFIG@
|
||||||
|
INCLUDE_DSL_CPE_PM_DATA_PATH_COUNTERS = @INCLUDE_DSL_CPE_PM_DATA_PATH_COUNTERS@
|
||||||
|
INCLUDE_DSL_CPE_PM_DATA_PATH_FAILURE_COUNTERS = @INCLUDE_DSL_CPE_PM_DATA_PATH_FAILURE_COUNTERS@
|
||||||
|
INCLUDE_DSL_CPE_PM_DATA_PATH_THRESHOLDS = @INCLUDE_DSL_CPE_PM_DATA_PATH_THRESHOLDS@
|
||||||
|
INCLUDE_DSL_CPE_PM_HISTORY = @INCLUDE_DSL_CPE_PM_HISTORY@
|
||||||
|
INCLUDE_DSL_CPE_PM_LINE_COUNTERS = @INCLUDE_DSL_CPE_PM_LINE_COUNTERS@
|
||||||
|
INCLUDE_DSL_CPE_PM_LINE_EVENT_SHOWTIME_COUNTERS = @INCLUDE_DSL_CPE_PM_LINE_EVENT_SHOWTIME_COUNTERS@
|
||||||
|
INCLUDE_DSL_CPE_PM_LINE_THRESHOLDS = @INCLUDE_DSL_CPE_PM_LINE_THRESHOLDS@
|
||||||
|
INCLUDE_DSL_CPE_PM_OPTIONAL_PARAMETERS = @INCLUDE_DSL_CPE_PM_OPTIONAL_PARAMETERS@
|
||||||
|
INCLUDE_DSL_CPE_PM_RETX_COUNTERS = @INCLUDE_DSL_CPE_PM_RETX_COUNTERS@
|
||||||
|
INCLUDE_DSL_CPE_PM_RETX_THRESHOLDS = @INCLUDE_DSL_CPE_PM_RETX_THRESHOLDS@
|
||||||
|
INCLUDE_DSL_CPE_PM_SHOWTIME_COUNTERS = @INCLUDE_DSL_CPE_PM_SHOWTIME_COUNTERS@
|
||||||
|
INCLUDE_DSL_CPE_PM_TOTAL_COUNTERS = @INCLUDE_DSL_CPE_PM_TOTAL_COUNTERS@
|
||||||
|
INCLUDE_DSL_CPE_TRACE_BUFFER = @INCLUDE_DSL_CPE_TRACE_BUFFER@
|
||||||
|
INCLUDE_DSL_DELT = @INCLUDE_DSL_DELT@
|
||||||
|
INCLUDE_DSL_EVENT_POLLING = @INCLUDE_DSL_EVENT_POLLING@
|
||||||
|
INCLUDE_DSL_FILTER_DETECTION = @INCLUDE_DSL_FILTER_DETECTION@
|
||||||
|
INCLUDE_DSL_FRAMING_PARAMETERS = @INCLUDE_DSL_FRAMING_PARAMETERS@
|
||||||
|
INCLUDE_DSL_G997_ALARM = @INCLUDE_DSL_G997_ALARM@
|
||||||
|
INCLUDE_DSL_G997_FRAMING_PARAMETERS = @INCLUDE_DSL_G997_FRAMING_PARAMETERS@
|
||||||
|
INCLUDE_DSL_G997_LINE_INVENTORY = @INCLUDE_DSL_G997_LINE_INVENTORY@
|
||||||
|
INCLUDE_DSL_G997_PER_TONE = @INCLUDE_DSL_G997_PER_TONE@
|
||||||
|
INCLUDE_DSL_G997_STATUS = @INCLUDE_DSL_G997_STATUS@
|
||||||
|
INCLUDE_DSL_PM = @INCLUDE_DSL_PM@
|
||||||
|
INCLUDE_DSL_RESOURCE_STATISTICS = @INCLUDE_DSL_RESOURCE_STATISTICS@
|
||||||
|
INCLUDE_DSL_SYSTEM_INTERFACE = @INCLUDE_DSL_SYSTEM_INTERFACE@
|
||||||
|
INCLUDE_DTI_AGENT_STANDALONE_SUPPORT = @INCLUDE_DTI_AGENT_STANDALONE_SUPPORT@
|
||||||
|
INCLUDE_FW_REQUEST_SUPPORT = @INCLUDE_FW_REQUEST_SUPPORT@
|
||||||
|
INCLUDE_PILOT_TONES_STATUS = @INCLUDE_PILOT_TONES_STATUS@
|
||||||
|
INCLUDE_REAL_TIME_TRACE = @INCLUDE_REAL_TIME_TRACE@
|
||||||
|
INCLUDE_SCRIPT_NOTIFICATION = @INCLUDE_SCRIPT_NOTIFICATION@
|
||||||
|
INSTALL = @INSTALL@
|
||||||
|
INSTALL_DATA = @INSTALL_DATA@
|
||||||
|
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||||
|
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||||
|
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||||
|
LDFLAGS = @LDFLAGS@
|
||||||
|
LIBOBJS = @LIBOBJS@
|
||||||
|
LIBS = @LIBS@
|
||||||
|
LTLIBOBJS = @LTLIBOBJS@
|
||||||
|
MAKEINFO = @MAKEINFO@
|
||||||
|
MKDIR_P = @MKDIR_P@
|
||||||
|
OBJEXT = @OBJEXT@
|
||||||
|
PACKAGE = @PACKAGE@
|
||||||
|
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||||
|
PACKAGE_NAME = @PACKAGE_NAME@
|
||||||
|
PACKAGE_STRING = @PACKAGE_STRING@
|
||||||
|
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||||
|
PACKAGE_URL = @PACKAGE_URL@
|
||||||
|
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||||
|
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||||
|
SAFEC_INCL_PATH = @SAFEC_INCL_PATH@
|
||||||
|
SAFEC_LIB_FUNC = @SAFEC_LIB_FUNC@
|
||||||
|
SAFEC_LIB_NAME = @SAFEC_LIB_NAME@
|
||||||
|
SAFEC_LIB_PATH = @SAFEC_LIB_PATH@
|
||||||
|
SAFEC_SUPPORT = @SAFEC_SUPPORT@
|
||||||
|
SET_MAKE = @SET_MAKE@
|
||||||
|
SHELL = @SHELL@
|
||||||
|
STRIP = @STRIP@
|
||||||
|
VERSION = @VERSION@
|
||||||
|
abs_builddir = @abs_builddir@
|
||||||
|
abs_srcdir = @abs_srcdir@
|
||||||
|
abs_top_builddir = @abs_top_builddir@
|
||||||
|
abs_top_srcdir = @abs_top_srcdir@
|
||||||
|
ac_ct_CC = @ac_ct_CC@
|
||||||
|
am__include = @am__include@
|
||||||
|
am__leading_dot = @am__leading_dot@
|
||||||
|
am__quote = @am__quote@
|
||||||
|
am__tar = @am__tar@
|
||||||
|
am__untar = @am__untar@
|
||||||
|
bindir = @bindir@
|
||||||
|
build_alias = @build_alias@
|
||||||
|
builddir = @builddir@
|
||||||
|
datadir = @datadir@
|
||||||
|
datarootdir = @datarootdir@
|
||||||
|
docdir = @docdir@
|
||||||
|
dvidir = @dvidir@
|
||||||
|
exec_prefix = @exec_prefix@
|
||||||
|
host_alias = @host_alias@
|
||||||
|
htmldir = @htmldir@
|
||||||
|
includedir = @includedir@
|
||||||
|
infodir = @infodir@
|
||||||
|
install_sh = @install_sh@
|
||||||
|
libdir = @libdir@
|
||||||
|
libexecdir = @libexecdir@
|
||||||
|
localedir = @localedir@
|
||||||
|
localstatedir = @localstatedir@
|
||||||
|
mandir = @mandir@
|
||||||
|
mkdir_p = @mkdir_p@
|
||||||
|
oldincludedir = @oldincludedir@
|
||||||
|
pdfdir = @pdfdir@
|
||||||
|
prefix = @prefix@
|
||||||
|
program_transform_name = @program_transform_name@
|
||||||
|
psdir = @psdir@
|
||||||
|
sbindir = @sbindir@
|
||||||
|
sharedstatedir = @sharedstatedir@
|
||||||
|
srcdir = @srcdir@
|
||||||
|
sysconfdir = @sysconfdir@
|
||||||
|
target_alias = @target_alias@
|
||||||
|
top_build_prefix = @top_build_prefix@
|
||||||
|
top_builddir = @top_builddir@
|
||||||
|
top_srcdir = @top_srcdir@
|
||||||
|
@ADD_APPL_CFLAGS_SET_FALSE@dsl_cpe_pipe_cflags =
|
||||||
|
@ADD_APPL_CFLAGS_SET_TRUE@dsl_cpe_pipe_cflags = $(ADD_APPL_CFLAGS)
|
||||||
|
dsl_cpe_pipe_compile_cflags = $(DSL_DRIVER_INCL_PATH) \
|
||||||
|
$(IFXOS_INCLUDE_PATH) $(am__append_1)
|
||||||
|
dsl_cpe_pipe_common_cflags = -Wall -Wimplicit -Wreturn-type -Wunused -Wundef \
|
||||||
|
-Wswitch -Wcomment -Wuninitialized -DLINUX -g -s
|
||||||
|
|
||||||
|
dsl_cpe_pipe_SOURCES = dsl_pipe_client.c dsl_pipe_lib.c
|
||||||
|
dsl_cpe_pipe_CFLAGS = $(dsl_cpe_pipe_common_cflags) \
|
||||||
|
$(dsl_cpe_pipe_cflags) \
|
||||||
|
$(dsl_cpe_pipe_compile_cflags)
|
||||||
|
|
||||||
|
dsl_cpe_pipe_LDADD = -lifxos -lpthread -lm -lrt $(am__append_2)
|
||||||
|
EXTRA_DIST = dsl_cpe_safec_wrapper.h
|
||||||
|
all: all-am
|
||||||
|
|
||||||
|
.SUFFIXES:
|
||||||
|
.SUFFIXES: .c .o .obj
|
||||||
|
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
||||||
|
@for dep in $?; do \
|
||||||
|
case '$(am__configure_deps)' in \
|
||||||
|
*$$dep*) \
|
||||||
|
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
|
||||||
|
&& { if test -f $@; then exit 0; else break; fi; }; \
|
||||||
|
exit 1;; \
|
||||||
|
esac; \
|
||||||
|
done; \
|
||||||
|
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tools/pipe/Makefile'; \
|
||||||
|
$(am__cd) $(top_srcdir) && \
|
||||||
|
$(AUTOMAKE) --gnu tools/pipe/Makefile
|
||||||
|
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||||
|
@case '$?' in \
|
||||||
|
*config.status*) \
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||||
|
*) \
|
||||||
|
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||||
|
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||||
|
esac;
|
||||||
|
|
||||||
|
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
|
|
||||||
|
$(top_srcdir)/configure: $(am__configure_deps)
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
|
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
|
$(am__aclocal_m4_deps):
|
||||||
|
install-binPROGRAMS: $(bin_PROGRAMS)
|
||||||
|
@$(NORMAL_INSTALL)
|
||||||
|
@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
|
||||||
|
if test -n "$$list"; then \
|
||||||
|
echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
|
||||||
|
$(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
|
||||||
|
fi; \
|
||||||
|
for p in $$list; do echo "$$p $$p"; done | \
|
||||||
|
sed 's/$(EXEEXT)$$//' | \
|
||||||
|
while read p p1; do if test -f $$p \
|
||||||
|
; then echo "$$p"; echo "$$p"; else :; fi; \
|
||||||
|
done | \
|
||||||
|
sed -e 'p;s,.*/,,;n;h' \
|
||||||
|
-e 's|.*|.|' \
|
||||||
|
-e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
|
||||||
|
sed 'N;N;N;s,\n, ,g' | \
|
||||||
|
$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
|
||||||
|
{ d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
|
||||||
|
if ($$2 == $$4) files[d] = files[d] " " $$1; \
|
||||||
|
else { print "f", $$3 "/" $$4, $$1; } } \
|
||||||
|
END { for (d in files) print "f", d, files[d] }' | \
|
||||||
|
while read type dir files; do \
|
||||||
|
if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
|
||||||
|
test -z "$$files" || { \
|
||||||
|
echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
|
||||||
|
$(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
|
||||||
|
} \
|
||||||
|
; done
|
||||||
|
|
||||||
|
uninstall-binPROGRAMS:
|
||||||
|
@$(NORMAL_UNINSTALL)
|
||||||
|
@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
|
||||||
|
files=`for p in $$list; do echo "$$p"; done | \
|
||||||
|
sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
|
||||||
|
-e 's/$$/$(EXEEXT)/' \
|
||||||
|
`; \
|
||||||
|
test -n "$$list" || exit 0; \
|
||||||
|
echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
|
||||||
|
cd "$(DESTDIR)$(bindir)" && rm -f $$files
|
||||||
|
|
||||||
|
clean-binPROGRAMS:
|
||||||
|
-test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
|
||||||
|
|
||||||
|
dsl_cpe_pipe$(EXEEXT): $(dsl_cpe_pipe_OBJECTS) $(dsl_cpe_pipe_DEPENDENCIES) $(EXTRA_dsl_cpe_pipe_DEPENDENCIES)
|
||||||
|
@rm -f dsl_cpe_pipe$(EXEEXT)
|
||||||
|
$(AM_V_CCLD)$(dsl_cpe_pipe_LINK) $(dsl_cpe_pipe_OBJECTS) $(dsl_cpe_pipe_LDADD) $(LIBS)
|
||||||
|
|
||||||
|
mostlyclean-compile:
|
||||||
|
-rm -f *.$(OBJEXT)
|
||||||
|
|
||||||
|
distclean-compile:
|
||||||
|
-rm -f *.tab.c
|
||||||
|
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dsl_cpe_pipe-dsl_pipe_client.Po@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dsl_cpe_pipe-dsl_pipe_lib.Po@am__quote@
|
||||||
|
|
||||||
|
.c.o:
|
||||||
|
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
|
||||||
|
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
|
||||||
|
|
||||||
|
.c.obj:
|
||||||
|
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
|
||||||
|
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
|
||||||
|
|
||||||
|
dsl_cpe_pipe-dsl_pipe_client.o: dsl_pipe_client.c
|
||||||
|
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(dsl_cpe_pipe_CFLAGS) $(CFLAGS) -MT dsl_cpe_pipe-dsl_pipe_client.o -MD -MP -MF $(DEPDIR)/dsl_cpe_pipe-dsl_pipe_client.Tpo -c -o dsl_cpe_pipe-dsl_pipe_client.o `test -f 'dsl_pipe_client.c' || echo '$(srcdir)/'`dsl_pipe_client.c
|
||||||
|
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dsl_cpe_pipe-dsl_pipe_client.Tpo $(DEPDIR)/dsl_cpe_pipe-dsl_pipe_client.Po
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dsl_pipe_client.c' object='dsl_cpe_pipe-dsl_pipe_client.o' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(dsl_cpe_pipe_CFLAGS) $(CFLAGS) -c -o dsl_cpe_pipe-dsl_pipe_client.o `test -f 'dsl_pipe_client.c' || echo '$(srcdir)/'`dsl_pipe_client.c
|
||||||
|
|
||||||
|
dsl_cpe_pipe-dsl_pipe_client.obj: dsl_pipe_client.c
|
||||||
|
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(dsl_cpe_pipe_CFLAGS) $(CFLAGS) -MT dsl_cpe_pipe-dsl_pipe_client.obj -MD -MP -MF $(DEPDIR)/dsl_cpe_pipe-dsl_pipe_client.Tpo -c -o dsl_cpe_pipe-dsl_pipe_client.obj `if test -f 'dsl_pipe_client.c'; then $(CYGPATH_W) 'dsl_pipe_client.c'; else $(CYGPATH_W) '$(srcdir)/dsl_pipe_client.c'; fi`
|
||||||
|
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dsl_cpe_pipe-dsl_pipe_client.Tpo $(DEPDIR)/dsl_cpe_pipe-dsl_pipe_client.Po
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dsl_pipe_client.c' object='dsl_cpe_pipe-dsl_pipe_client.obj' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(dsl_cpe_pipe_CFLAGS) $(CFLAGS) -c -o dsl_cpe_pipe-dsl_pipe_client.obj `if test -f 'dsl_pipe_client.c'; then $(CYGPATH_W) 'dsl_pipe_client.c'; else $(CYGPATH_W) '$(srcdir)/dsl_pipe_client.c'; fi`
|
||||||
|
|
||||||
|
dsl_cpe_pipe-dsl_pipe_lib.o: dsl_pipe_lib.c
|
||||||
|
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(dsl_cpe_pipe_CFLAGS) $(CFLAGS) -MT dsl_cpe_pipe-dsl_pipe_lib.o -MD -MP -MF $(DEPDIR)/dsl_cpe_pipe-dsl_pipe_lib.Tpo -c -o dsl_cpe_pipe-dsl_pipe_lib.o `test -f 'dsl_pipe_lib.c' || echo '$(srcdir)/'`dsl_pipe_lib.c
|
||||||
|
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dsl_cpe_pipe-dsl_pipe_lib.Tpo $(DEPDIR)/dsl_cpe_pipe-dsl_pipe_lib.Po
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dsl_pipe_lib.c' object='dsl_cpe_pipe-dsl_pipe_lib.o' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(dsl_cpe_pipe_CFLAGS) $(CFLAGS) -c -o dsl_cpe_pipe-dsl_pipe_lib.o `test -f 'dsl_pipe_lib.c' || echo '$(srcdir)/'`dsl_pipe_lib.c
|
||||||
|
|
||||||
|
dsl_cpe_pipe-dsl_pipe_lib.obj: dsl_pipe_lib.c
|
||||||
|
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(dsl_cpe_pipe_CFLAGS) $(CFLAGS) -MT dsl_cpe_pipe-dsl_pipe_lib.obj -MD -MP -MF $(DEPDIR)/dsl_cpe_pipe-dsl_pipe_lib.Tpo -c -o dsl_cpe_pipe-dsl_pipe_lib.obj `if test -f 'dsl_pipe_lib.c'; then $(CYGPATH_W) 'dsl_pipe_lib.c'; else $(CYGPATH_W) '$(srcdir)/dsl_pipe_lib.c'; fi`
|
||||||
|
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dsl_cpe_pipe-dsl_pipe_lib.Tpo $(DEPDIR)/dsl_cpe_pipe-dsl_pipe_lib.Po
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dsl_pipe_lib.c' object='dsl_cpe_pipe-dsl_pipe_lib.obj' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(dsl_cpe_pipe_CFLAGS) $(CFLAGS) -c -o dsl_cpe_pipe-dsl_pipe_lib.obj `if test -f 'dsl_pipe_lib.c'; then $(CYGPATH_W) 'dsl_pipe_lib.c'; else $(CYGPATH_W) '$(srcdir)/dsl_pipe_lib.c'; fi`
|
||||||
|
|
||||||
|
ID: $(am__tagged_files)
|
||||||
|
$(am__define_uniq_tagged_files); mkid -fID $$unique
|
||||||
|
tags: tags-am
|
||||||
|
TAGS: tags
|
||||||
|
|
||||||
|
tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
||||||
|
set x; \
|
||||||
|
here=`pwd`; \
|
||||||
|
$(am__define_uniq_tagged_files); \
|
||||||
|
shift; \
|
||||||
|
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
|
||||||
|
test -n "$$unique" || unique=$$empty_fix; \
|
||||||
|
if test $$# -gt 0; then \
|
||||||
|
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||||
|
"$$@" $$unique; \
|
||||||
|
else \
|
||||||
|
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||||
|
$$unique; \
|
||||||
|
fi; \
|
||||||
|
fi
|
||||||
|
ctags: ctags-am
|
||||||
|
|
||||||
|
CTAGS: ctags
|
||||||
|
ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
||||||
|
$(am__define_uniq_tagged_files); \
|
||||||
|
test -z "$(CTAGS_ARGS)$$unique" \
|
||||||
|
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||||
|
$$unique
|
||||||
|
|
||||||
|
GTAGS:
|
||||||
|
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||||
|
&& $(am__cd) $(top_srcdir) \
|
||||||
|
&& gtags -i $(GTAGS_ARGS) "$$here"
|
||||||
|
cscopelist: cscopelist-am
|
||||||
|
|
||||||
|
cscopelist-am: $(am__tagged_files)
|
||||||
|
list='$(am__tagged_files)'; \
|
||||||
|
case "$(srcdir)" in \
|
||||||
|
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
|
||||||
|
*) sdir=$(subdir)/$(srcdir) ;; \
|
||||||
|
esac; \
|
||||||
|
for i in $$list; do \
|
||||||
|
if test -f "$$i"; then \
|
||||||
|
echo "$(subdir)/$$i"; \
|
||||||
|
else \
|
||||||
|
echo "$$sdir/$$i"; \
|
||||||
|
fi; \
|
||||||
|
done >> $(top_builddir)/cscope.files
|
||||||
|
|
||||||
|
distclean-tags:
|
||||||
|
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||||
|
|
||||||
|
distdir: $(DISTFILES)
|
||||||
|
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||||
|
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||||
|
list='$(DISTFILES)'; \
|
||||||
|
dist_files=`for file in $$list; do echo $$file; done | \
|
||||||
|
sed -e "s|^$$srcdirstrip/||;t" \
|
||||||
|
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
||||||
|
case $$dist_files in \
|
||||||
|
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
||||||
|
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
||||||
|
sort -u` ;; \
|
||||||
|
esac; \
|
||||||
|
for file in $$dist_files; do \
|
||||||
|
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||||
|
if test -d $$d/$$file; then \
|
||||||
|
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||||
|
if test -d "$(distdir)/$$file"; then \
|
||||||
|
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||||
|
fi; \
|
||||||
|
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||||
|
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
||||||
|
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||||
|
fi; \
|
||||||
|
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
||||||
|
else \
|
||||||
|
test -f "$(distdir)/$$file" \
|
||||||
|
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
||||||
|
|| exit 1; \
|
||||||
|
fi; \
|
||||||
|
done
|
||||||
|
check-am: all-am
|
||||||
|
check: check-am
|
||||||
|
all-am: Makefile $(PROGRAMS)
|
||||||
|
installdirs:
|
||||||
|
for dir in "$(DESTDIR)$(bindir)"; do \
|
||||||
|
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
|
||||||
|
done
|
||||||
|
install: install-am
|
||||||
|
install-exec: install-exec-am
|
||||||
|
install-data: install-data-am
|
||||||
|
uninstall: uninstall-am
|
||||||
|
|
||||||
|
install-am: all-am
|
||||||
|
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||||
|
|
||||||
|
installcheck: installcheck-am
|
||||||
|
install-strip:
|
||||||
|
if test -z '$(STRIP)'; then \
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||||
|
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||||
|
install; \
|
||||||
|
else \
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||||
|
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||||
|
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||||
|
fi
|
||||||
|
mostlyclean-generic:
|
||||||
|
|
||||||
|
clean-generic:
|
||||||
|
|
||||||
|
distclean-generic:
|
||||||
|
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||||
|
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
|
||||||
|
|
||||||
|
maintainer-clean-generic:
|
||||||
|
@echo "This command is intended for maintainers to use"
|
||||||
|
@echo "it deletes files that may require special tools to rebuild."
|
||||||
|
clean: clean-am
|
||||||
|
|
||||||
|
clean-am: clean-binPROGRAMS clean-generic mostlyclean-am
|
||||||
|
|
||||||
|
distclean: distclean-am
|
||||||
|
-rm -rf ./$(DEPDIR)
|
||||||
|
-rm -f Makefile
|
||||||
|
distclean-am: clean-am distclean-compile distclean-generic \
|
||||||
|
distclean-tags
|
||||||
|
|
||||||
|
dvi: dvi-am
|
||||||
|
|
||||||
|
dvi-am:
|
||||||
|
|
||||||
|
html: html-am
|
||||||
|
|
||||||
|
html-am:
|
||||||
|
|
||||||
|
info: info-am
|
||||||
|
|
||||||
|
info-am:
|
||||||
|
|
||||||
|
install-data-am:
|
||||||
|
|
||||||
|
install-dvi: install-dvi-am
|
||||||
|
|
||||||
|
install-dvi-am:
|
||||||
|
|
||||||
|
install-exec-am: install-binPROGRAMS
|
||||||
|
|
||||||
|
install-html: install-html-am
|
||||||
|
|
||||||
|
install-html-am:
|
||||||
|
|
||||||
|
install-info: install-info-am
|
||||||
|
|
||||||
|
install-info-am:
|
||||||
|
|
||||||
|
install-man:
|
||||||
|
|
||||||
|
install-pdf: install-pdf-am
|
||||||
|
|
||||||
|
install-pdf-am:
|
||||||
|
|
||||||
|
install-ps: install-ps-am
|
||||||
|
|
||||||
|
install-ps-am:
|
||||||
|
|
||||||
|
installcheck-am:
|
||||||
|
|
||||||
|
maintainer-clean: maintainer-clean-am
|
||||||
|
-rm -rf ./$(DEPDIR)
|
||||||
|
-rm -f Makefile
|
||||||
|
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||||
|
|
||||||
|
mostlyclean: mostlyclean-am
|
||||||
|
|
||||||
|
mostlyclean-am: mostlyclean-compile mostlyclean-generic
|
||||||
|
|
||||||
|
pdf: pdf-am
|
||||||
|
|
||||||
|
pdf-am:
|
||||||
|
|
||||||
|
ps: ps-am
|
||||||
|
|
||||||
|
ps-am:
|
||||||
|
|
||||||
|
uninstall-am: uninstall-binPROGRAMS
|
||||||
|
|
||||||
|
.MAKE: install-am install-strip
|
||||||
|
|
||||||
|
.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \
|
||||||
|
clean-binPROGRAMS clean-generic cscopelist-am ctags ctags-am \
|
||||||
|
distclean distclean-compile distclean-generic distclean-tags \
|
||||||
|
distdir dvi dvi-am html html-am info info-am install \
|
||||||
|
install-am install-binPROGRAMS install-data install-data-am \
|
||||||
|
install-dvi install-dvi-am install-exec install-exec-am \
|
||||||
|
install-html install-html-am install-info install-info-am \
|
||||||
|
install-man install-pdf install-pdf-am install-ps \
|
||||||
|
install-ps-am install-strip installcheck installcheck-am \
|
||||||
|
installdirs maintainer-clean maintainer-clean-generic \
|
||||||
|
mostlyclean mostlyclean-compile mostlyclean-generic pdf pdf-am \
|
||||||
|
ps ps-am tags tags-am uninstall uninstall-am \
|
||||||
|
uninstall-binPROGRAMS
|
||||||
|
|
||||||
|
.PRECIOUS: Makefile
|
||||||
|
|
||||||
|
|
||||||
|
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||||
|
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||||
|
.NOEXPORT:
|
||||||
33
tools/pipe/dsl_cpe_safec_wrapper.h
Normal file
33
tools/pipe/dsl_cpe_safec_wrapper.h
Normal file
|
|
@ -0,0 +1,33 @@
|
||||||
|
/******************************************************************************
|
||||||
|
|
||||||
|
Copyright 2018, Intel Corporation
|
||||||
|
|
||||||
|
Copyright (c) 2007-2015
|
||||||
|
Lantiq Beteiligungs-GmbH & Co. KG
|
||||||
|
|
||||||
|
For licensing information, see the file 'LICENSE' in the root folder of
|
||||||
|
this software module.
|
||||||
|
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
#ifndef _SAFEC_WRAPPER_H
|
||||||
|
#define _SAFEC_WRAPPER_H
|
||||||
|
|
||||||
|
#if defined (SAFEC_SUPPORT) && (SAFEC_SUPPORT == 1)
|
||||||
|
#include "safe_lib.h"
|
||||||
|
#define cpe_control_pipe_memcpy_s(dest, destsz, src, srcsz) memcpy_s(dest, destsz, src, srcsz)
|
||||||
|
#define cpe_control_pipe_strncpy_s(dest, destsz, src, srcsz) strncpy_s(dest, destsz, src, srcsz)
|
||||||
|
#else
|
||||||
|
#warning "Safe C library is not available!"
|
||||||
|
|
||||||
|
#include <stddef.h> /* size_t */
|
||||||
|
static __inline__ size_t safec_wrapper_min(size_t a, size_t b)
|
||||||
|
{
|
||||||
|
return a > b ? b : a;
|
||||||
|
}
|
||||||
|
|
||||||
|
#define cpe_control_pipe_memcpy_s(dest, destsz, src, srcsz) memcpy(dest, src, safec_wrapper_min(destsz,srcsz))
|
||||||
|
#define cpe_control_pipe_strncpy_s(dest, destsz, src, srcsz) strncpy(dest, src, safec_wrapper_min(destsz,srcsz))
|
||||||
|
#endif /* defined (SAFEC_SUPPORT) && (SAFEC_SUPPORT == 1) */
|
||||||
|
|
||||||
|
#endif /* _SAFEC_WRAPPER_H */
|
||||||
489
tools/pipe/dsl_pipe_client.c
Normal file
489
tools/pipe/dsl_pipe_client.c
Normal file
|
|
@ -0,0 +1,489 @@
|
||||||
|
/******************************************************************************
|
||||||
|
|
||||||
|
Copyright 2018, Intel Corporation
|
||||||
|
|
||||||
|
Copyright (c) 2007-2015
|
||||||
|
Lantiq Beteiligungs-GmbH & Co. KG
|
||||||
|
|
||||||
|
For licensing information, see the file 'LICENSE' in the root folder of
|
||||||
|
this software module.
|
||||||
|
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
#ifdef LINUX
|
||||||
|
|
||||||
|
#include "dsl_pipe_client.h"
|
||||||
|
|
||||||
|
#define PIPE_PREFIX "/tmp/pipe/dsl_cpe"
|
||||||
|
#define SYS_NAME_PREFIX "/tmp"
|
||||||
|
|
||||||
|
#undef DSL_DBG_BLOCK
|
||||||
|
#define DSL_DBG_BLOCK DSL_DBG_OS
|
||||||
|
|
||||||
|
static char Result[20000];
|
||||||
|
static int sema;
|
||||||
|
|
||||||
|
#if defined(__GNU_LIBRARY__) && !defined(_SEM_SEMUN_UNDEFINED)
|
||||||
|
/* union semun is defined by including <sys/sem.h> */
|
||||||
|
#else
|
||||||
|
/* according to X/OPEN we have to define it ourselves */
|
||||||
|
union semun {
|
||||||
|
int val; /* value for SETVAL */
|
||||||
|
struct semid_ds *buf; /* buffer for IPC_STAT, IPC_SET */
|
||||||
|
unsigned short *array; /* array for GETALL, SETALL */
|
||||||
|
/* Linux specific part: */
|
||||||
|
struct seminfo *__buf; /* buffer for IPC_INFO */
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef DSL_DEBUG_DISABLE
|
||||||
|
static void print_sem_error(int err)
|
||||||
|
{
|
||||||
|
switch(err)
|
||||||
|
{
|
||||||
|
case E2BIG:
|
||||||
|
printf( "DSL[Pipe]: The value of nsops is greater than the system-"
|
||||||
|
"imposed maximum." DSL_PIPE_CRLF);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case EACCES:
|
||||||
|
printf( "DSL[Pipe]: Operation permission is denied to the calling "
|
||||||
|
"process, see IPC." DSL_PIPE_CRLF);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case EAGAIN:
|
||||||
|
printf( "DSL[Pipe]: The operation would result in suspension of the "
|
||||||
|
"calling process but (sem_flg&IPC_NOWAIT) is non-zero." DSL_PIPE_CRLF);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case EFBIG:
|
||||||
|
printf( "DSL[Pipe]: The value of sem_num is less than 0 or greater "
|
||||||
|
"than or equal to the number of semaphores in the set associated "
|
||||||
|
"with semid. " DSL_PIPE_CRLF);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case EIDRM:
|
||||||
|
printf( "DSL[Pipe]: The semaphore identifier semid is removed from "
|
||||||
|
"the system. " DSL_PIPE_CRLF);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case EINTR:
|
||||||
|
printf( "DSL[Pipe]: The semop() function was interrupted by a signal." DSL_PIPE_CRLF);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case EINVAL:
|
||||||
|
printf( "DSL[Pipe]: The value of semid is not a valid semaphore "
|
||||||
|
"identifier, or the number of individual semaphores for which the "
|
||||||
|
"calling process requests a SEM_UNDO would exceed the system-"
|
||||||
|
"imposed limit. " DSL_PIPE_CRLF);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ENOSPC:
|
||||||
|
printf( "DSL[Pipe]: The limit on the number of individual processes "
|
||||||
|
"requesting a SEM_UNDO would be exceeded. " DSL_PIPE_CRLF);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ERANGE:
|
||||||
|
printf( "DSL[Pipe]: An operation would cause a semval to overflow "
|
||||||
|
"the system-imposed limit, or an operation would cause a semadj "
|
||||||
|
"value to overflow the system-imposed limit." DSL_PIPE_CRLF);
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif /* DSL_DEBUG_DISABLE */
|
||||||
|
|
||||||
|
/** signal handler, will abort blocking semop() call */
|
||||||
|
static void DSL_PIPE_SemAlarm(int val)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
static int DSL_PIPE_SemaphoreGlobalCreate(DSL_char_t *pName)
|
||||||
|
{
|
||||||
|
/* Semaphore ID used in further semaphore operations */
|
||||||
|
int semid = -1;
|
||||||
|
int fd;
|
||||||
|
/* Used to generate the semaphore key in case pName is not a number */
|
||||||
|
DSL_char_t *sempath = DSL_NULL;
|
||||||
|
/* the name should be an integer if not the key for semaphore is generated at
|
||||||
|
runtime*/
|
||||||
|
DSL_int_t nsemkey;
|
||||||
|
union semun arg;
|
||||||
|
|
||||||
|
arg.val = 0;
|
||||||
|
|
||||||
|
if (pName == DSL_NULL)
|
||||||
|
pName = "";
|
||||||
|
|
||||||
|
nsemkey = atoi(pName);
|
||||||
|
|
||||||
|
/*incase atoi fails generate a tmp string and try to generate a key
|
||||||
|
at runtime */
|
||||||
|
if (nsemkey == 0)
|
||||||
|
{
|
||||||
|
sempath = DSL_PIPE_Malloc(strlen(SYS_NAME_PREFIX"/") + strlen(pName) + 1);
|
||||||
|
if (sempath == DSL_NULL)
|
||||||
|
{
|
||||||
|
printf( "DSL: No Mem." DSL_PIPE_CRLF);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
mkdir(SYS_NAME_PREFIX, 0777);
|
||||||
|
fd = open(SYS_NAME_PREFIX, O_RDONLY);
|
||||||
|
fchmod(fd, 0777);
|
||||||
|
close(fd);
|
||||||
|
cpe_control_pipe_strncpy_s(sempath, strlen(SYS_NAME_PREFIX"/") + strlen(pName) + 1,
|
||||||
|
SYS_NAME_PREFIX"/\0", strlen(SYS_NAME_PREFIX"/"));
|
||||||
|
strcat(sempath, pName);
|
||||||
|
strcat(sempath, "\0");
|
||||||
|
|
||||||
|
/* creat(sempath, 0666); */
|
||||||
|
creat(sempath, S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH);
|
||||||
|
/* Access to all */
|
||||||
|
/*chmod(sempath, 0777);*/
|
||||||
|
|
||||||
|
/* generate key */
|
||||||
|
if ( (nsemkey = ftok(sempath, 5)) < 0)
|
||||||
|
{
|
||||||
|
switch(errno)
|
||||||
|
{
|
||||||
|
case EBADF:
|
||||||
|
printf( "DSL: filedes is bad." DSL_PIPE_CRLF);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ENOENT:
|
||||||
|
printf( "DSL: A component of the path file_name does not exist, "
|
||||||
|
"or the path is an empty string." DSL_PIPE_CRLF);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ENOTDIR:
|
||||||
|
printf( "DSL: A component of the path is not a directory." DSL_PIPE_CRLF);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ELOOP:
|
||||||
|
printf( "DSL: Too many symbolic links encountered while "
|
||||||
|
"traversing the path." DSL_PIPE_CRLF);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case EFAULT:
|
||||||
|
printf( "DSL: Bad address." DSL_PIPE_CRLF);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case EACCES:
|
||||||
|
printf( "DSL: Permission denied." DSL_PIPE_CRLF);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ENOMEM:
|
||||||
|
printf( "DSL: Out of memory (i.e. kernel memory)." DSL_PIPE_CRLF);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ENAMETOOLONG:
|
||||||
|
printf( "DSL: File name too long." DSL_PIPE_CRLF);
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
DSL_PIPE_Free(sempath);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
DSL_PIPE_Free(sempath);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( ((semid = semget(nsemkey, 1, 0666|IPC_CREAT|IPC_EXCL)) < 0) )
|
||||||
|
{
|
||||||
|
/* ERROR: check errno */
|
||||||
|
if (errno == EEXIST)
|
||||||
|
{
|
||||||
|
/* get without create */
|
||||||
|
if ( ((semid = semget(nsemkey, 1, 0666|IPC_EXCL)) < 0) )
|
||||||
|
{
|
||||||
|
printf( "DSL: create semaphore - semget(0x%X,0), errno=%d\n\r",
|
||||||
|
nsemkey, errno );
|
||||||
|
#ifndef DSL_DEBUG_DISABLE
|
||||||
|
print_sem_error(errno);
|
||||||
|
#endif
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
#ifndef DSL_DEBUG_DISABLE
|
||||||
|
print_sem_error(errno);
|
||||||
|
#endif
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
arg.val = 1;
|
||||||
|
|
||||||
|
if (arg.val == 1)
|
||||||
|
{
|
||||||
|
/* set the value of semaphore to 1 ie released or free to use */
|
||||||
|
if (semctl(semid, 0, SETVAL, arg) < 0 )
|
||||||
|
{
|
||||||
|
printf( "DSL: create semaphore - semctl(0x%X,0), errno=%d\n\r",
|
||||||
|
semid, errno );
|
||||||
|
#ifndef DSL_DEBUG_DISABLE
|
||||||
|
print_sem_error(errno);
|
||||||
|
#endif
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return semid;
|
||||||
|
}
|
||||||
|
|
||||||
|
DSL_Error_t DSL_PIPE_SemaphoreGet(int sem, DSL_uint32_t nTimeout)
|
||||||
|
{
|
||||||
|
struct sigaction sa;
|
||||||
|
struct sembuf sb;
|
||||||
|
struct timespec timeout;
|
||||||
|
|
||||||
|
sb.sem_num = 0;
|
||||||
|
/* specifies the operation ie to get the semaphore */
|
||||||
|
sb.sem_op = -1;
|
||||||
|
sb.sem_flg = SEM_UNDO;
|
||||||
|
|
||||||
|
switch(nTimeout)
|
||||||
|
{
|
||||||
|
case 0xFFFFFFFF:
|
||||||
|
/* Blocking call */
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 0:
|
||||||
|
/* Non Blocking */
|
||||||
|
sb.sem_flg |= IPC_NOWAIT;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
/* Blocking call */
|
||||||
|
/* Initialize timer expiration value */
|
||||||
|
timeout.tv_sec = (nTimeout/1000);
|
||||||
|
timeout.tv_nsec = (nTimeout%1000) * 1000 * 1000;
|
||||||
|
|
||||||
|
sa.sa_flags = 0;
|
||||||
|
sa.sa_handler = DSL_PIPE_SemAlarm;
|
||||||
|
sigaction(SIGALRM, &sa, DSL_NULL);
|
||||||
|
alarm(timeout.tv_sec + 1);
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Acquire semaphore */
|
||||||
|
if (semop(sem, &sb, 1) == 0)
|
||||||
|
{
|
||||||
|
alarm(0);
|
||||||
|
return DSL_SUCCESS;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
alarm(0);
|
||||||
|
if(errno == EINTR)
|
||||||
|
{
|
||||||
|
printf( "DSL: semaphore timeout." DSL_PIPE_CRLF);
|
||||||
|
return DSL_ERR_TIMEOUT;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
#ifndef DSL_DEBUG_DISABLE
|
||||||
|
print_sem_error(errno);
|
||||||
|
#endif
|
||||||
|
printf( "DSL: get semaphore %x failed (errno=%d)" DSL_PIPE_CRLF, sem, errno);
|
||||||
|
return DSL_ERROR;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
DSL_Error_t DSL_PIPE_SemaphoreSet(int sem)
|
||||||
|
{
|
||||||
|
struct sembuf sb;
|
||||||
|
|
||||||
|
sb.sem_num = 0;
|
||||||
|
/* specifies the operation ie to set the semaphore */
|
||||||
|
sb.sem_op = 1;
|
||||||
|
sb.sem_flg = SEM_UNDO;
|
||||||
|
|
||||||
|
if (semop(sem, &sb, 1) == 0)
|
||||||
|
{
|
||||||
|
return DSL_SUCCESS;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
#ifndef DSL_DEBUG_DISABLE
|
||||||
|
print_sem_error(errno);
|
||||||
|
#endif
|
||||||
|
printf( "DSL: set semaphore %x failed (errno=%d)" DSL_PIPE_CRLF, sem, errno);
|
||||||
|
return DSL_ERROR;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 1 colon means there is a required parameter */
|
||||||
|
/* 2 colons means there is an optional parameter */
|
||||||
|
static const char GETOPT_LONG_OPTSTRING[] = "hve:";
|
||||||
|
|
||||||
|
int main(int argc, char **argv)
|
||||||
|
{
|
||||||
|
char *pCommand = DSL_NULL;
|
||||||
|
int i, k=0, len=0, ret;
|
||||||
|
FILE *pipe_cmd, *pipe_ack;
|
||||||
|
DSL_int8_t instance = 0;
|
||||||
|
DSL_char_t nameBuf[64], *pChar;
|
||||||
|
|
||||||
|
i = 1;
|
||||||
|
pChar = argv[1];
|
||||||
|
if (pChar)
|
||||||
|
{
|
||||||
|
if (pChar[0] == '-')
|
||||||
|
{
|
||||||
|
switch(pChar[1])
|
||||||
|
{
|
||||||
|
case 'h':
|
||||||
|
printf(DSL_PIPE_CRLF);
|
||||||
|
printf("Client for the pipe interface of the \"DSL CPE API\"" DSL_PIPE_CRLF);
|
||||||
|
printf("\t%s [-hv] [pipe_no] cmd [params]" DSL_PIPE_CRLF, argv[0]);
|
||||||
|
printf(DSL_PIPE_CRLF);
|
||||||
|
printf("\t-h\tthis help" DSL_PIPE_CRLF);
|
||||||
|
printf("\tpipe_no\tpipe number (default 0)" DSL_PIPE_CRLF);
|
||||||
|
printf("\tcmd\tcommand to execute" DSL_PIPE_CRLF);
|
||||||
|
printf("\tparams\tparameters of the command" DSL_PIPE_CRLF);
|
||||||
|
printf(DSL_PIPE_CRLF);
|
||||||
|
return 0;
|
||||||
|
case 'v':
|
||||||
|
printf("\tdsl_pipe_client v0.0.2" DSL_PIPE_CRLF);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (isdigit(pChar[0]))
|
||||||
|
{
|
||||||
|
if (argc >= 3)
|
||||||
|
{
|
||||||
|
instance = atoi(argv[1]);
|
||||||
|
if ((instance >= MAX_CLI_PIPES) || (instance < 0))
|
||||||
|
{
|
||||||
|
printf("\tpipe_no\toption requires parameter in range [0;%d]"
|
||||||
|
DSL_PIPE_CRLF, (MAX_CLI_PIPES - 1));
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
i = 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
k = i;
|
||||||
|
for(;i<argc;i++)
|
||||||
|
{
|
||||||
|
len += strlen(argv[i]) + 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
len = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if(len == 0)
|
||||||
|
{
|
||||||
|
pCommand = DSL_PIPE_Malloc(16);
|
||||||
|
|
||||||
|
if(pCommand == DSL_NULL)
|
||||||
|
{
|
||||||
|
printf( "Memory allocation failed" DSL_PIPE_CRLF);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
cpe_control_pipe_strncpy_s(pCommand, 16, "help all", sizeof("help all"));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
pCommand = DSL_PIPE_Malloc(len + 1);
|
||||||
|
|
||||||
|
if(pCommand == DSL_NULL)
|
||||||
|
{
|
||||||
|
printf( "Memory allocation failed" DSL_PIPE_CRLF);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
pCommand[0] = 0;
|
||||||
|
for(i=k;i<argc;i++)
|
||||||
|
{
|
||||||
|
strcat(pCommand, argv[i]);
|
||||||
|
strcat(pCommand, " ");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sema = DSL_PIPE_SemaphoreGlobalCreate("dsl_pipe");
|
||||||
|
if (sema == -1)
|
||||||
|
{
|
||||||
|
printf( "dsl_pipe already running!" DSL_PIPE_CRLF);
|
||||||
|
/* semaphore not created */
|
||||||
|
DSL_PIPE_Free(pCommand);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (DSL_PIPE_SemaphoreGet(sema, 100) != DSL_SUCCESS)
|
||||||
|
{
|
||||||
|
printf( "dsl_pipe already running!" DSL_PIPE_CRLF);
|
||||||
|
printf( "Please delete /tmp/dsl_pipe to clean up "
|
||||||
|
"if dsl_pipe is not running anymore!" DSL_PIPE_CRLF);
|
||||||
|
DSL_PIPE_Free(pCommand);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
snprintf(nameBuf, sizeof(nameBuf), "%s%d_cmd", PIPE_PREFIX, instance);
|
||||||
|
|
||||||
|
pipe_cmd = DSL_PIPE_FOpen(nameBuf, "w");
|
||||||
|
if (pipe_cmd == DSL_NULL)
|
||||||
|
{
|
||||||
|
printf( "fopen %s failed (errno=%d)\r\n", nameBuf, errno);
|
||||||
|
goto error;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* execute command */
|
||||||
|
DSL_PIPE_FPrintf(pipe_cmd, "%s\r\n", pCommand);
|
||||||
|
DSL_PIPE_FClose(pipe_cmd);
|
||||||
|
|
||||||
|
snprintf(nameBuf, sizeof(nameBuf), "%s%d_ack", PIPE_PREFIX, instance);
|
||||||
|
pipe_ack = DSL_PIPE_FOpen(nameBuf, "r");
|
||||||
|
|
||||||
|
if (pipe_ack == DSL_NULL)
|
||||||
|
{
|
||||||
|
printf( "fdopen %s failed (errno=%d)" DSL_PIPE_CRLF, nameBuf, errno);
|
||||||
|
goto error;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* read answer */
|
||||||
|
do
|
||||||
|
{
|
||||||
|
ret = DSL_PIPE_FRead(Result,1,sizeof(Result)-1,pipe_ack);
|
||||||
|
if (ret>0)
|
||||||
|
{
|
||||||
|
Result[ret] = '\0';
|
||||||
|
printf( "%s", Result);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
while ((ret > 0));
|
||||||
|
|
||||||
|
DSL_PIPE_FClose(pipe_ack);
|
||||||
|
|
||||||
|
DSL_PIPE_SemaphoreSet(sema);
|
||||||
|
|
||||||
|
printf( DSL_PIPE_CRLF );
|
||||||
|
|
||||||
|
DSL_PIPE_Free(pCommand);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
error:
|
||||||
|
DSL_PIPE_SemaphoreSet(sema);
|
||||||
|
|
||||||
|
printf( "There were errors!" DSL_PIPE_CRLF);
|
||||||
|
|
||||||
|
DSL_PIPE_Free(pCommand);
|
||||||
|
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* LINUX */
|
||||||
|
|
||||||
173
tools/pipe/dsl_pipe_client.h
Normal file
173
tools/pipe/dsl_pipe_client.h
Normal file
|
|
@ -0,0 +1,173 @@
|
||||||
|
/******************************************************************************
|
||||||
|
|
||||||
|
Copyright 2018, Intel Corporation
|
||||||
|
|
||||||
|
Copyright (c) 2007-2015
|
||||||
|
Lantiq Beteiligungs-GmbH & Co. KG
|
||||||
|
|
||||||
|
For licensing information, see the file 'LICENSE' in the root folder of
|
||||||
|
this software module.
|
||||||
|
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
#ifndef DSL_PIPE_CLIENT_H
|
||||||
|
#define DSL_PIPE_CLIENT_H
|
||||||
|
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
#include "dsl_cpe_config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "drv_dsl_cpe_api_types.h"
|
||||||
|
#include "drv_dsl_cpe_api_error.h"
|
||||||
|
#include "dsl_cpe_safec_wrapper.h"
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <getopt.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <errno.h>
|
||||||
|
#include <signal.h>
|
||||||
|
#include <sys/time.h>
|
||||||
|
#include <sys/sem.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <ctype.h>
|
||||||
|
|
||||||
|
#ifndef INCLUDE_DSL_CPE_IFXOS_SUPPORT
|
||||||
|
|
||||||
|
#include <stdarg.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
/** IFXOS includes*/
|
||||||
|
#include "ifxos_common.h"
|
||||||
|
#include "ifxos_print_io.h"
|
||||||
|
#include "ifxos_memory_alloc.h"
|
||||||
|
#include "ifxos_device_access.h"
|
||||||
|
#include "ifxos_file_access.h"
|
||||||
|
#include "ifxos_time.h"
|
||||||
|
#include "ifxos_lock.h"
|
||||||
|
#include "ifxos_thread.h"
|
||||||
|
#include "ifxos_termios.h"
|
||||||
|
#include "ifxos_pipe.h"
|
||||||
|
#include "ifxos_misc.h"
|
||||||
|
#include "ifxos_socket.h"
|
||||||
|
|
||||||
|
#endif /* INCLUDE_DSL_CPE_IFXOS_SUPPORT*/
|
||||||
|
|
||||||
|
#if defined(INCLUDE_DSL_CPE_IFXOS_SUPPORT)
|
||||||
|
/* support other OS only through lib_ifxos */
|
||||||
|
#ifndef USE_LIB_IFXOS
|
||||||
|
#define USE_LIB_IFXOS 1
|
||||||
|
#endif
|
||||||
|
#endif /** INCLUDE_DSL_CPE_IFXOS_SUPPORT*/
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef __BIG_ENDIAN
|
||||||
|
#error please define the __BIG_ENDIAN macro
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef __BYTE_ORDER
|
||||||
|
#error please specify the endianess of your target system
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
Carriage Return + Line Feed, maybe overwritten by compile switches
|
||||||
|
or OS-specific adaptation */
|
||||||
|
#ifndef DSL_PIPE_CRLF
|
||||||
|
#define DSL_PIPE_CRLF "\n\r"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(USE_LIB_IFXOS) && (USE_LIB_IFXOS == 1)
|
||||||
|
|
||||||
|
/*
|
||||||
|
common defines - ifxos_common.h"
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define DSL_BYTE_ORDER IFXOS_BYTE_ORDER
|
||||||
|
#define DSL_LITTLE_ENDIAN IFXOS_LITTLE_ENDIAN
|
||||||
|
#define DSL_BIG_ENDIAN IFXOS_BIG_ENDIAN
|
||||||
|
|
||||||
|
#ifndef __BIG_ENDIAN
|
||||||
|
#define __BIG_ENDIAN IFXOS_BIG_ENDIAN
|
||||||
|
#define __LITTLE_ENDIAN IFXOS_LITTLE_ENDIAN
|
||||||
|
#define __BYTE_ORDER IFXOS_BYTE_ORDER
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef __BYTE_ORDER
|
||||||
|
#define __BYTE_ORDER __LITTLE_ENDIAN
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
Function map - stdio, string
|
||||||
|
*/
|
||||||
|
#define DSL_PIPE_FPrintf IFXOS_FPrintf
|
||||||
|
|
||||||
|
/*
|
||||||
|
Function map - Memory Functions.
|
||||||
|
*/
|
||||||
|
#define DSL_PIPE_Malloc IFXOS_MemAlloc
|
||||||
|
#define DSL_PIPE_Free IFXOS_MemFree
|
||||||
|
|
||||||
|
/*
|
||||||
|
Function map - Device handling (open, close ...).
|
||||||
|
*/
|
||||||
|
#define DSL_PIPE_FOpen IFXOS_FOpen
|
||||||
|
#define DSL_PIPE_FClose IFXOS_FClose
|
||||||
|
#define DSL_PIPE_FRead IFXOS_FRead
|
||||||
|
|
||||||
|
#else /* (USE_LIB_IFXOS == 1) */
|
||||||
|
|
||||||
|
#ifndef __BIG_ENDIAN
|
||||||
|
#define __BIG_ENDIAN 1
|
||||||
|
#define __LITTLE_ENDIAN 2
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef __BYTE_ORDER
|
||||||
|
#define __BYTE_ORDER __BIG_ENDIAN
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
Allocates a memory block
|
||||||
|
|
||||||
|
\param size Bytes to allocate
|
||||||
|
|
||||||
|
\return
|
||||||
|
returns a DSL_void_t pointer to the allocated space, NULL if there's not
|
||||||
|
sufficient memory space available.
|
||||||
|
*/
|
||||||
|
DSL_void_t *DSL_PIPE_Malloc(DSL_uint32_t size);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Deallocates a memory block
|
||||||
|
|
||||||
|
\param memblock Previously allocated memory block that should be freed
|
||||||
|
|
||||||
|
*/
|
||||||
|
void DSL_PIPE_Free(DSL_void_t *memblock);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Open a file.
|
||||||
|
*/
|
||||||
|
FILE *DSL_PIPE_FOpen(const DSL_char_t *name, const DSL_char_t *mode);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Close the file or memory file.
|
||||||
|
*/
|
||||||
|
DSL_int_t DSL_PIPE_FClose(FILE *fd);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Read from file, stdin .
|
||||||
|
*/
|
||||||
|
DSL_int_t DSL_PIPE_FRead(DSL_void_t *buf, DSL_uint32_t size, DSL_uint32_t count, FILE *stream);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Print out .
|
||||||
|
*/
|
||||||
|
DSL_int_t DSL_PIPE_FPrintf(FILE *stream, const DSL_char_t *format, ...);
|
||||||
|
|
||||||
|
#endif /* (USE_LIB_IFXOS == 1) */
|
||||||
|
|
||||||
|
#endif /* DSL_PIPE_CLIENT_H */
|
||||||
88
tools/pipe/dsl_pipe_lib.c
Normal file
88
tools/pipe/dsl_pipe_lib.c
Normal file
|
|
@ -0,0 +1,88 @@
|
||||||
|
/******************************************************************************
|
||||||
|
|
||||||
|
Copyright (c) 2007-2015
|
||||||
|
Lantiq Beteiligungs-GmbH & Co. KG
|
||||||
|
|
||||||
|
For licensing information, see the file 'LICENSE' in the root folder of
|
||||||
|
this software module.
|
||||||
|
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
#ifdef LINUX
|
||||||
|
|
||||||
|
#include "dsl_pipe_client.h"
|
||||||
|
|
||||||
|
#ifndef INCLUDE_DSL_CPE_IFXOS_SUPPORT
|
||||||
|
|
||||||
|
/**
|
||||||
|
For a detailed description of the function, its arguments and return value
|
||||||
|
please refer to the description in the header file 'dsl_cpe_os.h'
|
||||||
|
*/
|
||||||
|
DSL_void_t *DSL_PIPE_Malloc(DSL_uint32_t size)
|
||||||
|
{
|
||||||
|
DSL_void_t *memblock;
|
||||||
|
|
||||||
|
memblock = (DSL_void_t*) malloc((size_t)size);
|
||||||
|
|
||||||
|
return (memblock);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
For a detailed description of the function, its arguments and return value
|
||||||
|
please refer to the description in the header file 'dsl_cpe_os.h'
|
||||||
|
*/
|
||||||
|
void DSL_PIPE_Free(DSL_void_t *memblock)
|
||||||
|
{
|
||||||
|
free(memblock);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Open a file.
|
||||||
|
*/
|
||||||
|
FILE *DSL_PIPE_FOpen(const DSL_char_t *name, const DSL_char_t *mode)
|
||||||
|
{
|
||||||
|
return fopen(name, mode);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
For a detailed description of the function, its arguments and return value
|
||||||
|
please refer to the description in the header file 'dsl_cpe_os.h'
|
||||||
|
*/
|
||||||
|
DSL_int_t DSL_PIPE_FClose(FILE *fd)
|
||||||
|
{
|
||||||
|
if(fd != 0)
|
||||||
|
return fclose(fd);
|
||||||
|
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
For a detailed description of the function, its arguments and return value
|
||||||
|
please refer to the description in the header file 'dsl_cpe_os.h'
|
||||||
|
*/
|
||||||
|
DSL_int_t DSL_PIPE_FRead(DSL_void_t *buf, DSL_uint32_t size, DSL_uint32_t count, FILE *stream)
|
||||||
|
{
|
||||||
|
return fread(buf, size, count, stream);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
For a detailed description of the function, its arguments and return value
|
||||||
|
please refer to the description in the header file 'dsl_cpe_os.h'
|
||||||
|
*/
|
||||||
|
DSL_int_t DSL_PIPE_FPrintf(FILE *stream, const DSL_char_t *format, ...)
|
||||||
|
{
|
||||||
|
va_list ap; /* points to each unnamed arg in turn */
|
||||||
|
DSL_int_t nRet = 0;
|
||||||
|
|
||||||
|
va_start(ap, format); /* set ap pointer to 1st unnamed arg */
|
||||||
|
|
||||||
|
nRet = vfprintf(stream, format, ap);
|
||||||
|
fflush(stream);
|
||||||
|
|
||||||
|
va_end(ap);
|
||||||
|
|
||||||
|
return nRet;
|
||||||
|
}
|
||||||
|
#endif /* #ifndef INCLUDE_DSL_CPE_IFXOS_SUPPORT*/
|
||||||
|
|
||||||
|
#endif /* LINUX */
|
||||||
Loading…
Add table
Reference in a new issue