This commit was manufactured by cvs2svn to create tag mygnokii2002_03_17_19_29nl
authorjankratochvil <>
Sun, 17 Mar 2002 20:37:29 +0000 (20:37 +0000)
committerjankratochvil <>
Sun, 17 Mar 2002 20:37:29 +0000 (20:37 +0000)
'mygnokii2002_03_17_19_29nl'.

Sprout from decode 2002-03-17 20:30:04 UTC jankratochvil 'This commit was manufactured by cvs2svn to create branch 'decode'.'
Cherrypick from decode 2002-02-28 02:40:36 UTC jankratochvil 'This commit was manufactured by cvs2svn to create branch 'decode'.':
    common/devices/unixserial.c
    configure
    include/config.h.in.in
    include/protocol/fbus.h
Cherrypick from mygnokii 2002-03-17 20:36:59 UTC short '\r\n -> \n':
    COPYRIGHT
    Docs/default/6250/picture1.nlm
    Docs/default/6250/picture10.nlm
    Docs/default/6250/picture2.nlm
    Docs/default/6250/picture3.nlm
    Docs/default/6250/picture4.nlm
    Docs/default/6250/picture5.nlm
    Docs/default/6250/picture6.nlm
    Docs/default/6250/picture7.nlm
    Docs/default/6250/picture8.nlm
    Docs/default/6250/picture9.nlm
    Docs/default/sounds/ringtones/12_months
    Docs/default/sounds/ringtones/Alamuhan
    Docs/default/sounds/ringtones/Morning
    Docs/default/sounds/ringtones/Running_horse
    Docs/default/sounds/ringtones/Sare
    Docs/developers/gnokii/gettext-howto
    Docs/developers/gnokii/gnokii.txt
    Docs/developers/gnokii/packaging-howto
    Docs/developers/gnokii/untitled.txt
    Docs/developers/other/RE RE.txt
    Docs/developers/other/dmcp/addsms
    Docs/developers/other/dmcp/readme
    Docs/developers/other/dmcp/removesms
    Docs/developers/other/sniffs/Telefonbucheditor7110.txt
    Docs/developers/other/sniffs/irda/info.txt
    Docs/developers/protocol/n3110.txt
    Docs/developers/protocol/n6110.txt
    Docs/developers/protocol/n7110.txt
    Docs/developers/protocol/nokia.txt
    Docs/en_US/gnokii/config.htm
    Docs/en_US/gnokii/faq.htm
    Docs/en_US/gnokii/gnokii-6210-7110-IrDA
    Docs/en_US/gnokii/gnokii.htm
    Docs/en_US/gnokii/phones.htm
    Docs/en_US/gnokii/todologo
    Docs/en_US/gnokii/xgnokii/calendar/index.htm
    Docs/en_US/gnokii/xgnokii/contacts/index.htm
    Docs/en_US/gnokii/xgnokii/dtmf/index.htm
    Docs/en_US/gnokii/xgnokii/main/index.htm
    Docs/en_US/gnokii/xgnokii/netmon/index.htm
    Docs/en_US/gnokii/xgnokii/sms/index.htm
    Docs/en_US/gnokii/xgnokii/speeddial/index.htm
    Docs/en_US/gnokii/xgnokii/xkeyb/index.htm
    Docs/en_US/gsm/cables/cables.htm
    Docs/en_US/gsm/codes/codes.htm
    Docs/en_US/gsm/compare/1.htm
    Docs/en_US/gsm/compare/compare.htm
    Docs/en_US/gsm/compare/index.htm
    Docs/en_US/gsm/compare/null.htm
    Docs/en_US/gsm/firmware/firm12.htm
    Docs/en_US/gsm/firmware/firm3.htm
    Docs/en_US/gsm/firmware/firm5.htm
    Docs/en_US/gsm/firmware/firm6_1.htm
    Docs/en_US/gsm/firmware/firm6_2.htm
    Docs/en_US/gsm/firmware/firm7.htm
    Docs/en_US/gsm/firmware/firm8.htm
    Docs/en_US/gsm/firmware/firm9.htm
    Docs/en_US/gsm/firmware/firmware.htm
    Docs/en_US/gsm/irda/irda.htm
    Docs/en_US/gsm/logos/logos.htm
    Docs/en_US/gsm/netmon/faq_net0.htm
    Docs/en_US/gsm/netmon/faq_net1.htm
    Docs/en_US/gsm/netmon/faq_net2.htm
    Docs/en_US/gsm/netmon/faq_net3.htm
    Docs/en_US/gsm/netmon/faq_net4.htm
    Docs/en_US/gsm/netmon/faq_net5.htm
    Docs/en_US/gsm/netmon/faq_net6.htm
    Docs/en_US/gsm/netmon/net_spis.htm
    Docs/en_US/gsm/sms/sms.htm
    Docs/en_US/index.htm
    Docs/en_US/styl.css
    Docs/examples/gnokiirc
    Docs/examples/test.vcs
    Docs/pl_PL/mygnokii.htm
    Docs/pl_PL/styl.css
    README
    common/devices/device.c
    common/files/cfgreader.c
    common/files/gsm-filetypes.c
    common/files/midifile.c
    common/gsm-coding.c
    common/gsm-datetime.c
    common/newmodules/n3110.c
    common/newmodules/n6110.c
    common/newmodules/n7110.c
    common/newmodules/newat.c
    common/newmodules/sniff/sniff.c
    common/protocol/fbus.c
    common/protocol/fbus3110.c
    include/devices/device.h
    include/newmodules/n3110.h
    include/newmodules/n6110.h
    include/newmodules/sniff/sniff.h
    include/protocol/fbus3110.h
    win32_makefile/dll_vc6/GnokiiAPI.dsp
    win32_makefile/dll_vc6/clean.bat
    win32_makefile/gnokii_vc6/gnokii.mak
    win32_makefile/gui_delphi/GnokiiAPI.pas
    win32_makefile/gui_delphi/logo.ico
    win32_makefile/gui_delphi/mainunit.dfm
    win32_makefile/gui_delphi/mainunit.pas
Cherrypick from ats 2002-03-17 20:37:27 UTC short '\r\n -> \n':
    COPYING
    Docs/CREDITS
    INSTALL
    VERSION
    common/Makefile
    common/gsm-api.c
    common/gsm-networks.c
    common/gsm-ringtones.c
    common/gsm-sms.c
    common/misc.c
    gnokii/gnokii.c
    include/gsm-api.h
    include/gsm-common.h
    xgnokii/xgnokii_sms.c
Delete:
    decode
    do
    readme

72 files changed:
COPYING
COPYRIGHT [new file with mode: 0644]
Docs/default/6250/picture1.nlm [new file with mode: 0644]
Docs/default/6250/picture10.nlm [new file with mode: 0644]
Docs/default/6250/picture2.nlm [new file with mode: 0644]
Docs/default/6250/picture3.nlm [new file with mode: 0644]
Docs/default/6250/picture4.nlm [new file with mode: 0644]
Docs/default/6250/picture5.nlm [new file with mode: 0644]
Docs/default/6250/picture6.nlm [new file with mode: 0644]
Docs/default/6250/picture7.nlm [new file with mode: 0644]
Docs/default/6250/picture8.nlm [new file with mode: 0644]
Docs/default/6250/picture9.nlm [new file with mode: 0644]
Docs/default/sounds/ringtones/12_months [new file with mode: 0644]
Docs/default/sounds/ringtones/Alamuhan [new file with mode: 0644]
Docs/default/sounds/ringtones/Morning [new file with mode: 0644]
Docs/default/sounds/ringtones/Running_horse [new file with mode: 0644]
Docs/default/sounds/ringtones/Sare [new file with mode: 0644]
Docs/developers/protocol/n3110.txt [new file with mode: 0644]
Docs/en_US/gsm/firmware/firm12.htm
Docs/en_US/gsm/firmware/firm3.htm
Docs/en_US/gsm/firmware/firm5.htm
Docs/en_US/gsm/firmware/firm6_1.htm
Docs/en_US/gsm/firmware/firm6_2.htm
Docs/en_US/gsm/firmware/firm7.htm
Docs/en_US/gsm/firmware/firm8.htm
Docs/en_US/gsm/firmware/firm9.htm
Docs/en_US/gsm/firmware/firmware.htm
Docs/en_US/gsm/netmon/faq_net0.htm
Docs/en_US/gsm/netmon/faq_net1.htm
Docs/en_US/gsm/netmon/faq_net2.htm
Docs/en_US/gsm/netmon/faq_net3.htm
Docs/en_US/gsm/netmon/faq_net4.htm
Docs/en_US/gsm/netmon/faq_net5.htm
Docs/en_US/gsm/netmon/faq_net6.htm
Docs/en_US/gsm/netmon/net_spis.htm
Docs/examples/gnokiirc
INSTALL
README [moved from readme with 78% similarity]
VERSION
common/Makefile
common/devices/device.c
common/devices/unixserial.c
common/files/cfgreader.c
common/files/gsm-filetypes.c
common/gsm-api.c
common/gsm-sms.c
common/misc.c
common/newmodules/n3110.c [new file with mode: 0644]
common/newmodules/n6110.c
common/newmodules/n7110.c
common/newmodules/newat.c
common/newmodules/sniff/sniff.c
common/protocol/fbus.c
common/protocol/fbus3110.c [new file with mode: 0644]
configure [new file with mode: 0755]
decode [deleted file]
do [deleted file]
gnokii/gnokii.c
include/config.h.in.in
include/devices/device.h
include/gsm-api.h
include/gsm-common.h
include/newmodules/n3110.h [new file with mode: 0644]
include/protocol/fbus.h
include/protocol/fbus3110.h [new file with mode: 0644]
win32_makefile/dll_vc6/GnokiiAPI.dsp
win32_makefile/dll_vc6/clean.bat
win32_makefile/gnokii_vc6/gnokii.mak
win32_makefile/gui_delphi/GnokiiAPI.pas
win32_makefile/gui_delphi/logo.ico [new file with mode: 0644]
win32_makefile/gui_delphi/mainunit.dfm
win32_makefile/gui_delphi/mainunit.pas

diff --git a/COPYING b/COPYING
index 049061c..60549be 100644 (file)
--- a/COPYING
+++ b/COPYING
-GNOKII - A Linux/Unix toolset and driver for the Nokia 3x10/8110/51x0/61x0
-         Copyright (C) 1999 Hugh Blemings & Pavel Janík ml.
+                   GNU GENERAL PUBLIC LICENSE
+                      Version 2, June 1991
 
-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.
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+                       59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
 
-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.
+                           Preamble
 
-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., 59 Temple
-Place - Suite 330, Boston, MA 02111-1307, USA.
+  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 Library General Public License instead.)  You can apply it to
+your programs, too.
 
-You can contact authors by mail at
+  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.
 
-hugh@linuxcare.com                    Pavel.Janik@suse.cz
-Hugh Blemings                         Mgr. Pavel Janík, SuSE CR, s.r.o.
-PO Box 234                            Pod Pekárnami 338/12
-Belconnen ACT 2616                    190 00 Praha 9
-Australia                             Czech Republic
+  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.
 
-We would be delighted to receive a postcard from you if you use gnokii but
-this is not a requirement of these licence terms! :)
+  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.
 
-Any trademarks in this or other gnokii documents/files are the property of
-their respective owners.
+  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.
+\f
+                   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.)
+\f
+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.
+\f
+  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.
+\f
+  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
+\f
+           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) 19yy  <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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  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) 19yy 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 Library General
+Public License instead of this License.
diff --git a/COPYRIGHT b/COPYRIGHT
new file mode 100644 (file)
index 0000000..8565fdb
--- /dev/null
+++ b/COPYRIGHT
@@ -0,0 +1,30 @@
+GNOKII - A Linux/Unix toolset and driver for the GSM phones
+         Copyright (C) 1999 Hugh Blemings & Pavel Janík ml.
+
+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., 59 Temple
+Place - Suite 330, Boston, MA 02111-1307, USA.
+
+You can contact authors by mail at
+
+hugh@blemings.org                     Pavel.Janik@suse.cz
+Hugh Blemings                         Mgr. Pavel Janík, SuSE CR, s.r.o.
+PO Box 234                            Pod Pekárnami 338/12
+Belconnen ACT 2616                    190 00 Praha 9
+Australia                             Czech Republic
+
+We would be delighted to receive a postcard from you if you use gnokii but
+this is not a requirement of these licence terms! :)
+
+Any trademarks in this or other gnokii documents/files are the property of
+their respective owners.
diff --git a/Docs/default/6250/picture1.nlm b/Docs/default/6250/picture1.nlm
new file mode 100644 (file)
index 0000000..71095da
Binary files /dev/null and b/Docs/default/6250/picture1.nlm differ
diff --git a/Docs/default/6250/picture10.nlm b/Docs/default/6250/picture10.nlm
new file mode 100644 (file)
index 0000000..b5fbd69
Binary files /dev/null and b/Docs/default/6250/picture10.nlm differ
diff --git a/Docs/default/6250/picture2.nlm b/Docs/default/6250/picture2.nlm
new file mode 100644 (file)
index 0000000..bdc680f
Binary files /dev/null and b/Docs/default/6250/picture2.nlm differ
diff --git a/Docs/default/6250/picture3.nlm b/Docs/default/6250/picture3.nlm
new file mode 100644 (file)
index 0000000..85aee07
Binary files /dev/null and b/Docs/default/6250/picture3.nlm differ
diff --git a/Docs/default/6250/picture4.nlm b/Docs/default/6250/picture4.nlm
new file mode 100644 (file)
index 0000000..4284ac2
Binary files /dev/null and b/Docs/default/6250/picture4.nlm differ
diff --git a/Docs/default/6250/picture5.nlm b/Docs/default/6250/picture5.nlm
new file mode 100644 (file)
index 0000000..4db41a3
Binary files /dev/null and b/Docs/default/6250/picture5.nlm differ
diff --git a/Docs/default/6250/picture6.nlm b/Docs/default/6250/picture6.nlm
new file mode 100644 (file)
index 0000000..2f76e7c
Binary files /dev/null and b/Docs/default/6250/picture6.nlm differ
diff --git a/Docs/default/6250/picture7.nlm b/Docs/default/6250/picture7.nlm
new file mode 100644 (file)
index 0000000..58e1797
Binary files /dev/null and b/Docs/default/6250/picture7.nlm differ
diff --git a/Docs/default/6250/picture8.nlm b/Docs/default/6250/picture8.nlm
new file mode 100644 (file)
index 0000000..2b79a73
Binary files /dev/null and b/Docs/default/6250/picture8.nlm differ
diff --git a/Docs/default/6250/picture9.nlm b/Docs/default/6250/picture9.nlm
new file mode 100644 (file)
index 0000000..6ef7bcf
Binary files /dev/null and b/Docs/default/6250/picture9.nlm differ
diff --git a/Docs/default/sounds/ringtones/12_months b/Docs/default/sounds/ringtones/12_months
new file mode 100644 (file)
index 0000000..32d49b3
Binary files /dev/null and b/Docs/default/sounds/ringtones/12_months differ
diff --git a/Docs/default/sounds/ringtones/Alamuhan b/Docs/default/sounds/ringtones/Alamuhan
new file mode 100644 (file)
index 0000000..ae726d1
Binary files /dev/null and b/Docs/default/sounds/ringtones/Alamuhan differ
diff --git a/Docs/default/sounds/ringtones/Morning b/Docs/default/sounds/ringtones/Morning
new file mode 100644 (file)
index 0000000..c2bc12f
Binary files /dev/null and b/Docs/default/sounds/ringtones/Morning differ
diff --git a/Docs/default/sounds/ringtones/Running_horse b/Docs/default/sounds/ringtones/Running_horse
new file mode 100644 (file)
index 0000000..bc04acf
Binary files /dev/null and b/Docs/default/sounds/ringtones/Running_horse differ
diff --git a/Docs/default/sounds/ringtones/Sare b/Docs/default/sounds/ringtones/Sare
new file mode 100644 (file)
index 0000000..4439a31
Binary files /dev/null and b/Docs/default/sounds/ringtones/Sare differ
diff --git a/Docs/developers/protocol/n3110.txt b/Docs/developers/protocol/n3110.txt
new file mode 100644 (file)
index 0000000..10c3326
--- /dev/null
@@ -0,0 +1,233 @@
+
+Last update 01.03.2001
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Assembled by
+       Marcin Wiacek (Marcin-Wiacek@TOPNET.PL)
+       ... and other members of gnokii mailing list
+            and authors of some WWW pages.
+
+The data provided is for information purposes only. 
+Some of the frames might be hazardous to your phone. Be careful!!! 
+We do not take any responsibility or liability for damages, etc.
+
+NOTE: this information isn't (and can't be) complete.  If you know anything
+about features not listed here or you noticed a bug in this list, please
+notify us via e-mail.  Thank you.
+
+Document describing frames used in
+GSM Nokia 3110 and derivatives (3810,8110,8110i):
+Correct format is FBUS version 1/MBUS version 1 (?)
+(see nokia.txt for protocol details):
+
+ List:
+
+0x02:
+    r RLP ?                 {....}
+0x0a:
+    s Make call             {+type of call, type of number?, numlen, number, uk1, uk2, uk3 }
+                            where type of call: see 0x0b
+                            Note: If destination number is "1" - "9",
+                                  call for number in corresponding memory location is made.
+0x0b:
+    r Incoming call         {+type of call, 0x00, namelen, name }
+                            where type of call:
+                                    0x01 Data 
+                                    0x02 ?? 
+                                    0x03 ?? 
+                                    0x04 ?? 
+                                    0x05 Voice 
+0x0c:
+    s Answer incoming call  {}
+0x0d:
+    r Incoming call answered{}
+      from ME
+0x0e:
+    r Call established      {+type of call, 0x00, 0x00 }
+                            where type of call: see 0x0b
+0x0f:
+    s Call hang up          {}
+0x10:
+    r Call hanged up from ME{}
+      seq1
+0x11:
+   r CallClosed-by other end{+unknown, reason}
+                            where:
+                              unknown reason
+                              0x65    0x10   Hanged up by other end 
+                                      0x1c   virheellinen numero 
+                              0x65    0x1f   Number is not in use 
+                              0x65    0x4f   Check operator services 
+                              0x65    0xa6   No destination number (sms sending) 
+                              0x65    0xe4   --''-- 
+                              0x6f    0x6f  
+                              0x7d    0x7d  
+                              0x7f    0x7f  
+                              0x83    0x83 
+0x12:
+    r Call hanged up from ME{}
+      seq2
+0x13:
+    r Power ON seq          {}
+0x15:
+    s Initialization        {}
+0x16:
+    r Initialization OK     {+simstate }
+                            where simstate:
+                                    0x01 No SIM present, or waiting for PIN 
+                                    0x02 SIM present and ready. 
+0x17:
+    r Initialization err    {+error }
+0x20:
+    s Send DTMF             {+length,string}
+0x21:
+    r Send DTMF OK          {}
+0x22:
+    r Send DTMF err         {+error }
+                            where error:
+                                    0x70: invalid location
+0x23:
+    s Send SMS Header       {+first octet, PID, DCS, validity(7 bytes), UDL, SMSClen, SMSC, receiverlen, receiver}
+0x24:
+    s Save SMS Header       {+memtype,status(2bytes),PID, DCS, validity(7 bytes), UDL, SMSClen, SMSC, receiverlen, receiver, receivertype }
+                            where: memtype:
+                                     2=SIM
+                                     3=ME 
+                                   status: see 0x2c
+0x25:
+    s Get SMS message       {+memtype, location }
+                            where: memtype - see 0x30
+                            Note: In successful request, phone sends one "SMS Header" and one or more "SMS Data" packets.
+                                  In failure, phone sends "Get SMS message err" packet
+0x26:
+    s Delete SMS message    {+memtype, location }
+                            where: memtype - see 0x30
+0x27:
+    r SMS Data              {+seq,block}
+                            where: seq: starts from 0x01 and is increased by 1 after each block transmitted. 
+                                   block: Block of User Data (max 55 chars)
+    s Send/Save SMS Data    {+seq,block}
+0x28:
+    r SMS sent OK           {+reference?}
+0x29:
+    r SMS sent error        {+error1, error2}
+0x2a:
+    r SMS saved OK          {+memtype}
+                            where: memtype - memory, where SMS was saved
+0x2b:
+    r SMS saving err        {+error}
+0x2c:
+    r SMS Header            {+memtype, location, status(2 bytes), PID, DCS, date (7 bytes), UDL, senderlen, sender, SMSClen, SMSC, sendertype}
+                            where:
+                              memtype, PID, DCS, date, UDL, sender, SMSC, sendertype - see 0x30
+                              status: 0701: Saved, not sent
+                                      0501: Sent
+                                      0304: Received, unread
+                                      0204: Unread
+                                      0104: Received, read 
+0x2d:
+    r Get SMS message err   {+error}
+0x2e:
+    r Delere SMS message OK {}
+0x2f:
+    r Delete SMS message err{+error}
+0x30:
+    r SMS message received  {+memtype, location, unknown, PID, DCS, date(7 bytes), UDL, senderlen, sender, SMSClen, SMSC, sendertype}
+                            where: memtype:
+                                     0x01 Phone Selected 
+                                     0x02 SIM 
+                                     0x03 ME 
+                                   location: Memory location (1...) 
+                                   unknown: most of time 0x04 
+                                   PID: Protocol Identifier 
+                                   DCS: Data Coding Scheme 
+                                   date: sending date in BCD
+                                   UDL: User Data Length 
+                                   sender: sender number
+                                   SMSC: SMSC number
+                                   sendertype: type of sender number:
+                                                0x31 International without leading '+' ??? 
+                                                0x91 International 
+0x32:
+    r Delivery report receiv{+unknown,delivery time(7 bytes),report time(7 bytes),0x00,MR,
+                             destinationlen,destination,SMSClen,SMSC,destinationtype}
+0x3c:
+    s Set SMSC              {+bitmask,format,unknown1,validity,reply,reports,unusedlen,unused,SMSClen,SMSC}
+                            where:
+                              bitmask: info, what we change
+                                7 ?? 
+                                6 reports
+                                5 reply
+                                4 SMSC number
+                                3 unused
+                                2 validity
+                                1 unknown
+                                0 format
+                              format:
+                                0x00 Text 
+                                0x22 Fax 
+                                0x24 Voice 
+                                0x25 ERMES 
+                                0x26 Paging 
+                                0x2d E-mail 
+                                0x31 X.400 
+                              validity:
+                                 0 to 143    (validity + 1) * 5 minutes (i.e. 5 minutes intervals up to 12 hours) 
+                                 144 to 167  12 hours + ((validity - 143) * 30 minutes) 
+                                 168 to 196  (validity - 166) * 1 day 
+                                 197 to 255  (validity - 192) * 1 week 
+0x3d:
+    r Set SMSC OK           {}
+0x3e:
+    r Set SMSC err          {}
+0x3f:
+    s Get SMSC              {}
+0x40:
+    r Get SMSC              {+memory,AllSMSphone,unreadSMSphone,AllSMSSIM,unreadSMSSIM,
+                             format,unknown1,validity,reply,reports,unusedlen,unused,SMSClen,SMSC}
+                            where: format,unknown1,validity,reply,reports,unusedlen,unused,SMSClen,SMSC - see 0x3c
+                                   memory: selected memory
+                                   AllSMSphone: number of all SMS in phone
+                                   unreadSMSphone: number of unread SMS in phone
+                                   AllSMSSIM: number of all SMS on SIM
+                                   unreadSMSSIM: number of unread SMS on SIM
+0x42:
+    s Set mem location      {+memtype, location, namelen, name, numlen, number }
+                            where memtype: see 0x43
+0x43:
+    s Get mem location      {+memtype, location }
+                            where: memtype:
+                                     0x01 Phone Selected
+                                     0x02 SIM
+                                     0x03 ME
+                                     0x04 Own numbers (at SIM) 
+0x44:
+    r Set mem location OK   {}
+0x45:
+    r Set mem location err  {+error }
+0x46:
+    r Get mem location OK   {+namelen, name, numlen, number }
+0x47:
+    r Get mem location err  {+error }
+0x48:
+    r PIN entered           {}
+0x49:
+    r Power OFF seq         {}
+0x4a:
+    s Status request        {}
+0x4b:
+    r Status request        {+status, network, battery }
+                            where status:
+                                    0x01 Idle 
+                                    0x02 Network interworking 
+                                    0x03 Call open 
+                                    0x04 No Network Access (Waiting for PIN or
+                                         Unaccessable Operator selected) 
+                                  network and battery - signal level
+0x4c:
+    s Get phone info        {}
+0x4d:
+    r Get phone info        {+IMEI, 0x00, Code, 0x00, HW, 0x00 }
+                            where IMEI: IMEI Code 
+                                  CODE: Same as Code in phones back side 
+                                  HW: hardware version
index 9bc4b0e..cd99f34 100644 (file)
@@ -75,7 +75,7 @@ language in phone ?</a></b></li>
 </tr>
 
 <tr>
-<td><a NAME="#100"></a>100</td>
+<td><a NAME="100"></a>100</td>
 
 <td>THX-9L</td>
 
@@ -99,7 +99,7 @@ language in phone ?</a></b></li>
 </tr>
 
 <tr>
-<td><a NAME="#540"></a>540</td>
+<td><a NAME="540"></a>540</td>
 
 <td>THF-11</td>
 
@@ -113,7 +113,7 @@ language in phone ?</a></b></li>
 </tr>
 
 <tr>
-<td><a NAME="#550"></a>550</td>
+<td><a NAME="550"></a>550</td>
 
 <td>THF-10</td>
 
@@ -127,7 +127,7 @@ language in phone ?</a></b></li>
 </tr>
 
 <tr>
-<td><a NAME="#640"></a>640</td>
+<td><a NAME="640"></a>640</td>
 
 <td>THF-13</td>
 
@@ -137,7 +137,7 @@ language in phone ?</a></b></li>
 </tr>
 
 <tr>
-<td><a NAME="#650"></a>650</td>
+<td><a NAME="650"></a>650</td>
 
 <td>THF-12</td>
 
@@ -151,7 +151,7 @@ language in phone ?</a></b></li>
 </tr>
 
 <tr>
-<td><a NAME="#1011"></a>1011</td>
+<td><a NAME="1011"></a>1011</td>
 
 <td>NHE-2</td>
 
@@ -161,7 +161,7 @@ language in phone ?</a></b></li>
 </tr>
 
 <tr>
-<td><a NAME="#1610"></a>1610</td>
+<td><a NAME="1610"></a>1610</td>
 
 <td>NHE-5</td>
 
@@ -181,7 +181,7 @@ language in phone ?</a></b></li>
 </tr>
 
 <tr>
-<td><a NAME="#1611"></a>1611</td>
+<td><a NAME="1611"></a>1611</td>
 
 <td>NHE-5SX</td>
 
@@ -200,7 +200,7 @@ language in phone ?</a></b></li>
 </tr>
 
 <tr>
-<td><a NAME="#1630"></a>1630</td>
+<td><a NAME="1630"></a>1630</td>
 
 <td>NHE-5NA</td>
 
@@ -214,7 +214,7 @@ language in phone ?</a></b></li>
 </tr>
 
 <tr>
-<td><a NAME="#1631"></a>1631</td>
+<td><a NAME="1631"></a>1631</td>
 
 <td>NHE-5SA</td>
 
@@ -224,7 +224,7 @@ language in phone ?</a></b></li>
 </tr>
 
 <tr>
-<td><a NAME="#NHE-5NX"></a>16??</td>
+<td><a NAME="NHE-5NX"></a>16??</td>
 
 <td>NHE-5NX</td>
 
@@ -238,7 +238,7 @@ language in phone ?</a></b></li>
 </tr>
 
 <tr>
-<td><a NAME="#2010"></a>2010</td>
+<td><a NAME="2010"></a>2010</td>
 
 <td>NHE-3</td>
 
@@ -248,7 +248,7 @@ language in phone ?</a></b></li>
 </tr>
 
 <tr>
-<td><a NAME="#2110"></a>2110</td>
+<td><a NAME="2110"></a>2110</td>
 
 <td>NHE-1XN</td>
 
@@ -263,7 +263,7 @@ language in phone ?</a></b></li>
 </tr>
 
 <tr>
-<td><a NAME="#2110i900"></a>2110i, 2110e for GSM 900</td>
+<td><a NAME="2110i900"></a>2110i, 2110e for GSM 900</td>
 
 <td>NHE-4</td>
 
@@ -278,7 +278,7 @@ language in phone ?</a></b></li>
 </tr>
 
 <tr>
-<td><a NAME="#2110i900_2"></a>2110i, 2110e for GSM 900</td>
+<td><a NAME="2110i900_2"></a>2110i, 2110e for GSM 900</td>
 
 <td>NHE-4NX</td>
 
@@ -295,7 +295,7 @@ language in phone ?</a></b></li>
 </tr>
 
 <tr>
-<td><a NAME="#2110i_1800"></a>2110i, 2110e for GSM 1800</td>
+<td><a NAME="2110i_1800"></a>2110i, 2110e for GSM 1800</td>
 
 <td>NHK-IEA</td>
 
@@ -305,7 +305,7 @@ language in phone ?</a></b></li>
 </tr>
 
 <tr>
-<td><a NAME="#2140"></a>2140</td>
+<td><a NAME="2140"></a>2140</td>
 
 <td>NHK-1XA</td>
 
@@ -319,7 +319,7 @@ language in phone ?</a></b></li>
 </tr>
 
 <tr>
-<td><a NAME="#2148"></a>2148</td>
+<td><a NAME="2148"></a>2148</td>
 
 <td>NHK-1</td>
 
@@ -329,7 +329,7 @@ language in phone ?</a></b></li>
 </tr>
 
 <tr>
-<td><a NAME="#2148i"></a>2148i</td>
+<td><a NAME="2148i"></a>2148i</td>
 
 <td>NHK-4</td>
 
@@ -339,7 +339,7 @@ language in phone ?</a></b></li>
 </tr>
 
 <tr>
-<td><a NAME="#2160"></a>2160</td>
+<td><a NAME="2160"></a>2160</td>
 
 <td>NHC-4NE</td>
 
index d3c56b2..58d6c91 100644 (file)
@@ -75,7 +75,7 @@ language in phone ?</a></b></li>
 </tr>
 
 <tr>
-<td><a NAME="#3110"></a>3110</td>
+<td><a NAME="3110"></a>3110</td>
 
 <td>NHE-8</td>
 
@@ -141,7 +141,7 @@ telefonu i j
 </tr>
 
 <tr>
-<td><a NAME="#3210"></a>3210</td>
+<td><a NAME="3210"></a>3210</td>
 
 <td>NSE-8/9</td>
 
@@ -411,11 +411,14 @@ more expensive phones. There still some help texts inside, texts from some
 functions (does it mean, that phone support them ?) - ("Rename this set"
 - it can be done via cable !), text with name of "full" profiles - the
 same question (Meeting, Outdoor, Pager, General), texts "Save to another
-memory?, Saved to phone memory,Saved to SIM Card", "List of own numbers"...</td>
+memory?, Saved to phone memory,Saved to SIM Card", "List of own numbers"...
+<p>Asian versions have built in vibra in phone. European doesn't have vibra
+motor, but have place for it and disabled option in firmware (so, it's
+possible to easy add it).</td>
 </tr>
 
 <tr>
-<td><a NAME="#3310"></a>3310</td>
+<td><a NAME="3310"></a>3310</td>
 
 <td>NHM-5</td>
 
@@ -1119,7 +1122,7 @@ Possibility for user to delete SIM-created SMS from inbox&nbsp;</li>
 <li>
 Operator Name List updated (#44)&nbsp;</li>
 </ul>
-V5.11
+V5.11 19-12-01
 <ul>
 <li>
 Following T9 languages have been added: Arabic, Hungarian, Slovakian&nbsp;</li>
@@ -1215,7 +1218,8 @@ activated and set the clock&nbsp;</li>
 SIM ATK: Refresh command no longer jams the keypad. Selectable header in
 SIM ATK menu has been removed</li>
 </ul>
-
+V5.13 11-01-02
+<br>
 <hr WIDTH="50%">
 <br><b><font color="#FF6666">WARNING: IF YOU GIVE YOUR PHONE TO SERVICE
 FOR REPLACING FIRMWARE, DELETE ALL VOICE TAGS FROM ITS' MEMORY. IN OTHER
@@ -1226,12 +1230,53 @@ YOU CAN HAVE ONLY 6 PLACES (NOT 8) FOR VOICE TAGS.</font></b>
 SIM cards. I don't know, if problem depends on phone or these SIM cards
 bugs.... If I have correctly info, users of Polish Plus GSM (260-01) network
 with SIM cards with HRL 91 should change them...
-<p>Note: When use shortcut for <b>Menu 8-1, Menu 8-2</b>, <b>Menu 8-3,
-Menu 8-4,</b> <b>Menu 8-6</b>, for a moment displays incorrect data...
-<p>Interesting facts: firmware seems to be cut version of firmware from
-more expensive phones. There still some help texts inside, texts from some
-functions (does it mean, that phone support them ?) - ("Rename this set"-
-it can be done via cable !), texts from "full" calendar ("Meeting", "Birthday",
+<p>BUGS (all versions):
+<ul>
+<li>
+When use shortcut for <b>Menu 8-1, Menu 8-2</b>, <b>Menu 8-3, Menu 8-4,</b>
+<b>Menu 8-6</b>, for a moment displays incorrect data...</li>
+
+<li>
+No <b>Menu 8-5</b></li>
+
+<li>
+You need to enter <b>Menu 1-10-1</b> (after pressing 1 wait about 3 seconds
+until you will see "-" in right side of "1" and menu will go higher level,
+then enter 10 and 1). Now press Up or Down or wait small moment. You will
+see now strange things - screen isn't refreshed, but keys work:</li>
+
+<ul>
+<li>
+When press C once, Navi description is deleted. After it press any key
+and everything is OK.</li>
+
+<li>
+When press Up or Down, you select person from phonebook (but of course
+you won't see it).</li>
+
+<li>
+Navi selects person</li>
+</ul>
+
+<li>
+when select shortcut to game (like <b>Menu 8-1</b>) and image disappear,
+press fast C or Navi many times. Until they will be pressed, menu won't
+change.</li>
+
+<li>
+shortcuts <b>Menu 8-6-1-1, Menu 8-6-1-2, Menu 8-6-2-1, Menu 8-6-2-2,Menu
+8-6-3-1, Menu 8-6-3-2 and Menu 8-6-4</b> don't work too correctly</li>
+
+<li>
+after enabling phone and entering PIN, very fast (before reading phonebook
+from SIM card) enter <b>Menu 1-9</b> (can be entered normally without shortcut).
+Now leave. And enter again... Each time, when you will enter it, you will
+different results. Sometimes phone can reboot...</li>
+</ul>
+Interesting facts: firmware seems to be cut version of firmware from more
+expensive phones. There still some help texts inside, texts from some functions
+(does it mean, that phone support them ?) - ("Rename this set"- it can
+be done via cable !), texts from "full" calendar ("Meeting", "Birthday",
 etc.), texts "Save to another memory?, Saved to phone memory,Saved to SIM
 Card","List of own numbers" (update: own numbers memory is available via
 cable)...</td>
@@ -1557,7 +1602,7 @@ Emergency dialling snooze; softkey text appears changed from 'Clear' to
 <li>
 Operator Name list (#42) and UI Text updated</li>
 </ul>
-V4.50:
+V4.50 12-10-01:
 <ul>
 <li>
 Improvements to WAP</li>
@@ -1670,7 +1715,7 @@ WITH VOICE TAGS AND UPGRADING FIRMWARE LIKE IN NOKIA 3310</font></b></td>
 </tr>
 
 <tr>
-<td COLSPAN="4">V7.03 10-11-00&nbsp;
+<td COLSPAN="4">V7.03 10-11-00
 <br>V7.05 05-01-01
 <br>
 <hr WIDTH="50%">
@@ -1679,7 +1724,7 @@ WITH VOICE TAGS AND UPGRADING FIRMWARE LIKE IN NOKIA 3310</font></b></td>
 </tr>
 
 <tr>
-<td><a NAME="#3810"></a>3810</td>
+<td><a NAME="3810"></a>3810</td>
 
 <td>NHE-9</td>
 
index 8764adb..1ee9159 100644 (file)
@@ -53,7 +53,8 @@ language in phone ?</a></b></li>
 </ol>
 
 <hr size="2" noshade width="60%" align="center" style="color: #004080">
-<center><p>Here is table describing firmware in various Nokia 5xxx phones
+<center>
+<p>Here is table describing firmware in various Nokia 5xxx phones
 <br>You can also see table for
 <br><a href="firm12.htm">Nokia 1xxx/2xxx</a>, <a href="firm3.htm">Nokia
 3xxx</a>, <a href="firm5.htm">Nokia 5xxx</a>, <a href="firm6_1.htm">Nokia
@@ -74,7 +75,7 @@ language in phone ?</a></b></li>
 </tr>
 
 <tr>
-<td><a NAME="#5110"></a>5110</td>
+<td><a NAME="5110"></a>5110</td>
 
 <td>NSE-1</td>
 
@@ -304,7 +305,7 @@ profiles - the same question (Meeting, Outdoor, Pager, General), texts
 </tr>
 
 <tr>
-<td><a NAME="#5130"></a>5130</td>
+<td><a NAME="5130"></a>5130</td>
 
 <td>NSK-1</td>
 
@@ -332,7 +333,7 @@ profiles - the same question (Meeting, Outdoor, Pager, General), texts
 </tr>
 
 <tr>
-<td><a NAME="#5160"></a>5160</td>
+<td><a NAME="5160"></a>5160</td>
 
 <td>NSW-1</td>
 
@@ -346,7 +347,7 @@ profiles - the same question (Meeting, Outdoor, Pager, General), texts
 </tr>
 
 <tr>
-<td><a NAME="#5190"></a>5190</td>
+<td><a NAME="5190"></a>5190</td>
 
 <td>NSB-1</td>
 
@@ -368,7 +369,8 @@ older firmware in <b>Menu 10</b>).
 <br>V5.81 20-09-99
 <p>Downloadable operator logo and ringtone
 <p>V6.11 28-04-00
-<p>V6.71 25-01-01</td>
+<p>V6.71 25-01-01
+<p>Added T9 dictionaries</td>
 </tr>
 
 <tr>
@@ -411,7 +413,11 @@ have stopped after three minutes, but it crashed).&nbsp;</li>
 <li>
 Language package M (Tagalog, Bahasa Indonesian, Bahasa Malaysian) added.&nbsp;</li>
 </ul>
-V3.45 04-12-01
+BUG: If you enter <b>Menu 8</b> (music) and try to enter music-reader (<b>Menu
+8-1</b>), without any music in memory, phone return an error message then
+enter in stand-by, without remaining in <b>Menu 8</b>. The same if you
+enter in menu "radio" without headset connected.
+<p>V3.45 04-12-01
 <p>V3.47
 <ul>
 <li>
@@ -444,6 +450,39 @@ USSD with more than 30 digits is now possible&nbsp;</li>
 <li>
 STK "Refresh" command improved&nbsp;</li>
 </ul>
+V3.50
+<ul>
+<li>
+Chr table improvement in SIM ATK menu application. Now it is possible to
+enter character behind Chr key in SIM ATK menu.&nbsp;</li>
+
+<li>
+Text improvements:&nbsp;</li>
+
+<ul>
+<li>
+If there is no memory left, when saving a downloaded WAP picture to phone's
+memory, an English error note "Memory full. Replace picture?" is split
+into two lines.&nbsp;</li>
+
+<li>
+Russian text improvements&nbsp;</li>
+</ul>
+
+<li>
+WAP and OTA improvement. Received OTA settings which data call with speed
+14.4 kbps for WAP: data speed 14.4 kbps will be replaced with default value
+9.6 kbps, because NPM-5 supports only 9.6 kbps as data call speed&nbsp;</li>
+
+<li>
+Dot/+ improvement in entering IP address and dial-up number (K language
+package). In case English is activated from K language package (K package
+includes Russian, Ukrainian and English), it is now possible to enter a
+dot (.) into IP address and a plus (+) into dial-up number&nbsp;</li>
+
+<li>
+Operator list updated&nbsp;</li>
+</ul>
 </td>
 </tr>
 </table>
index 8065b2a..1680ff4 100644 (file)
@@ -53,7 +53,8 @@ language in phone ?</a></b></li>
 </ol>
 
 <hr size="2" noshade width="60%" align="center" style="color: #004080">
-<center><p>Here is table describing firmware in various Nokia 60xx/61xx phones
+<center>
+<p>Here is table describing firmware in various Nokia 60xx/61xx phones
 <br>You can also see table for
 <br><a href="firm12.htm">Nokia 1xxx/2xxx</a>, <a href="firm3.htm">Nokia
 3xxx</a>, <a href="firm5.htm">Nokia 5xxx</a>, <a href="firm6_1.htm">Nokia
@@ -74,7 +75,7 @@ language in phone ?</a></b></li>
 </tr>
 
 <tr>
-<td><a NAME="#6050"></a>6050</td>
+<td><a NAME="6050"></a>6050</td>
 
 <td>NME-1</td>
 
@@ -84,7 +85,7 @@ language in phone ?</a></b></li>
 </tr>
 
 <tr>
-<td><a NAME="#6080"></a>6080</td>
+<td><a NAME="6080"></a>6080</td>
 
 <td>NME-2</td>
 
@@ -98,7 +99,7 @@ language in phone ?</a></b></li>
 </tr>
 
 <tr>
-<td><a NAME="#6081"></a>6081</td>
+<td><a NAME="6081"></a>6081</td>
 
 <td>NME-2E</td>
 
@@ -112,7 +113,7 @@ language in phone ?</a></b></li>
 </tr>
 
 <tr>
-<td><a NAME="#6090"></a>6090</td>
+<td><a NAME="6090"></a>6090</td>
 
 <td>NME-3</td>
 
@@ -126,7 +127,7 @@ language in phone ?</a></b></li>
 </tr>
 
 <tr>
-<td><a NAME="#6110"></a>6110</td>
+<td><a NAME="6110"></a>6110</td>
 
 <td>NSE-3</td>
 
@@ -305,7 +306,7 @@ wariuje przy przewijaniu odebranego SMSa zawieraj
 </tr>
 
 <tr>
-<td><a NAME="#6120"></a>6120</td>
+<td><a NAME="6120"></a>6120</td>
 
 <td>NSC-3</td>
 
@@ -319,7 +320,7 @@ wariuje przy przewijaniu odebranego SMSa zawieraj
 </tr>
 
 <tr>
-<td><a NAME="#6130"></a>6130</td>
+<td><a NAME="6130"></a>6130</td>
 
 <td>NSK-3</td>
 
@@ -353,7 +354,7 @@ use "Reminder" instead of "Birthday".</td>
 </tr>
 
 <tr>
-<td><a NAME="#6138"></a>6138</td>
+<td><a NAME="6138"></a>6138</td>
 
 <td>NSK-3</td>
 
@@ -363,7 +364,7 @@ use "Reminder" instead of "Birthday".</td>
 </tr>
 
 <tr>
-<td><a NAME="#6150"></a>6150</td>
+<td><a NAME="6150"></a>6150</td>
 
 <td>NSM-1</td>
 
@@ -545,7 +546,8 @@ all profiles displayed (including Car and Headset) in "Profiles" menu</li>
 </ul>
 Info from users: in PL language "Mikrofon wy³±czon" and "Odg³usz"
 <p>VP5.23, 25-09-00
-<br>with animated menus, picture messaging, T9 dictionary.
+<br>with animated menus, picture messaging, T9 dictionary, new ringtones
+and game (see <a href="http://www.nokia.de/mobile_phones/produkte/6150/6150_su.html">http://www.nokia.de/mobile_phones/produkte/6150/6150_su.html)</a>.
 <p>Problems with SIM Application Toolkit &amp; netmonitor (tested with
 Italian SIM cards). With:
 <ol>
@@ -567,7 +569,7 @@ than "All calls"</td>
 </tr>
 
 <tr>
-<td><a NAME="#6160"></a>6160/6162</td>
+<td><a NAME="6160"></a>6160/6162</td>
 
 <td>NSW-3</td>
 
@@ -583,7 +585,7 @@ than "All calls"</td>
 </tr>
 
 <tr>
-<td><a NAME="#6185"></a>6185/6188</td>
+<td><a NAME="6185"></a>6185/6188</td>
 
 <td>NSD-3AX</td>
 
@@ -615,7 +617,7 @@ the maximum volume.</li>
 </tr>
 
 <tr>
-<td><a NAME="#6190"></a>6190</td>
+<td><a NAME="6190"></a>6190</td>
 
 <td>NSB-3</td>
 
@@ -652,9 +654,9 @@ do telefonu przez kabel.
 <br>Dodano obs³ugê loga operatora (mo¿liwo¶æ wgrywania przez kabel albo
 ogóln± obs³ugê)
 <p>V5.93 22-11-99
-<br>V6.13 28-04-00&nbsp;</td>
+<br>V6.13 28-04-00&nbsp;
+<br>V6.73 25-01-01</td>
 </tr>
-
 </table>
 <i><font size=-1><a href="#Top" class="shref">Back to the top/Na pocz±tek</a></font></i>
 <p>
index 11c07dc..ac72c3f 100644 (file)
@@ -75,7 +75,7 @@ language in phone ?</a></b></li>
 </tr>
 
 <tr>
-<td><a NAME="#6210"></a>6210</td>
+<td><a NAME="6210"></a>6210</td>
 
 <td>NPE-3</td>
 
@@ -1029,13 +1029,18 @@ Menu shortcuts problem: <b>Menu 1-8-x</b> (example <b>Menu 1-8-7</b>) directs
 to <b>Menu 1-8-1</b></li>
 
 <li>
-Shotcut <b>Menu 2-5-1-1-1</b> hangs phone !</li>
+Shortcut <b>Menu 2-5-1-1-1</b> hangs phone !</li>
 </ul>
-</td>
+
+<hr WIDTH="40%">
+<br>According to some WWW sites phone seems to work with firmware from
+Nokia 6250. (The only ?) known problem is weak 1800Mhz coverage (probably
+calibration info is saved in different place). I don't have any other info,
+do not ask me.</td>
 </tr>
 
 <tr>
-<td><a NAME="#6250"></a>6250</td>
+<td><a NAME="6250"></a>6250</td>
 
 <td>NHM-3</td>
 
@@ -1058,8 +1063,7 @@ Shotcut <b>Menu 2-5-1-1-1</b> hangs phone !</li>
 <li>
 (V3.00) Service dialing numbers in SIM read correctly</li>
 </ul>
-<b>Menu 14</b> doesn't have picture
-<p>V4.00 06-12-00
+V4.00 06-12-00
 <ul>
 <li>
 Improvements to Task Journal:</li>
@@ -1395,7 +1399,10 @@ O- language package added</li>
 <li>
 Operator list updated (#44)</li>
 </ul>
-</td>
+V5.03 06-12-01
+<br>
+<hr WIDTH="40%">
+<br><b>Menu 14</b> (Netmonitor) doesn't have picture</td>
 </tr>
 
 <tr>
@@ -1412,11 +1419,23 @@ Operator list updated (#44)</li>
 <td COLSPAN="4">V1.23 19-03-01
 <br>V4.10 04-01-02
 <p>BUGS:
-<br>the phone crashed when i recorded a second voice message after an older
+<ul>
+<li>
+the phone crashed when i recorded a second voice message after an older
 one which is 1 minute of length. after i did that, i couldnt delete the
 second recording, and the screen would turn black.. another [ok] and the
-phone would restart.
-<p>V4.15
+phone would restart.</li>
+
+<li>
+It seems incompatible with 32k sim. (Nokia says 32k SIM are incompatible
+with operator TIM and OMNITEL)</li>
+
+<li>
+Some other bugs are related to use of car-kit (CARK-91), as strange "echo",
+when navigating in menus sometimes the phone enable external speaker and
+disable the "radio/stereo .."</li>
+</ul>
+V4.15
 <ul>
 <li>
 RS232 Serial Cable connection improved (connection did not work properly
@@ -1443,9 +1462,9 @@ Support for Language package T (Australia and New Zealand) added&nbsp;</li>
 Support for Arabic UI added&nbsp;</li>
 
 <li>
-Improvements to SMS&nbsp;</li>
+Improvements to SMS</li>
 </ul>
-</td>
+BUGS: When send business card over SMS or infrared, name is changed.</td>
 </tr>
 
 <tr>
@@ -1459,7 +1478,8 @@ Improvements to SMS&nbsp;</li>
 </tr>
 
 <tr>
-<td COLSPAN="4">V3.22 10-01-02</td>
+<td COLSPAN="4">V3.22 10-01-02
+<br>V3.30 30-01-02&nbsp;</td>
 </tr>
 </table>
 <i><font size=-1><a href="#Top" class="shref">Back to the top/Na pocz±tek</a></font></i>
index 688b532..6c00eb3 100644 (file)
@@ -53,7 +53,8 @@ language in phone ?</a></b></li>
 </ol>
 
 <hr size="2" noshade width="60%" align="center" style="color: #004080">
-<center><p>Here is table describing firmware in various Nokia 7xxx phones
+<center>
+<p>Here is table describing firmware in various Nokia 7xxx phones
 <br>You can also see table for
 <br><a href="firm12.htm">Nokia 1xxx/2xxx</a>, <a href="firm3.htm">Nokia
 3xxx</a>, <a href="firm5.htm">Nokia 5xxx</a>, <a href="firm6_1.htm">Nokia
@@ -74,7 +75,7 @@ language in phone ?</a></b></li>
 </tr>
 
 <tr>
-<td><a NAME="#7110"></a>7110</td>
+<td><a NAME="7110"></a>7110</td>
 
 <td>NSE-5</td>
 
@@ -97,7 +98,23 @@ language in phone ?</a></b></li>
 <p>V4.69 05-10-99 (not in German language)
 <p>Improvements in WAP browser (with WML)
 <p>V4.70 28-10-99
-<br>V4.72 10-11-99 (not in German language)
+<ul>
+<li>
+If you setup your phone in mode "silent", and you have an alarm set up,
+the phone ring at preset time.</li>
+
+<li>
+if you receive a call from a CLI ending with '0' (zero),&nbsp; the phone
+doesn't display the name of caller.</li>
+
+<li>
+If you setup the "navy roller" to "last (AS: dialed ?) calls", some times
+the display remain blanks, and you have to close/open the flip.</li>
+
+<li>
+No 'R' (roaming indicator) in NetMonitor</li>
+</ul>
+V4.72 10-11-99 (not in German language)
 <br>V4.73 15-11-99
 <p>(V4.70) BUG REMOVED: Earlier: Max. 12 messages can be stored in self
 created SMS-folders.
@@ -161,9 +178,17 @@ jest przypisana do dw
 a SMS</li>
 
 <li>
-Inserting a phonebook-number into a SMS: Total crash. Sometimes self-reset
-after 1-2 mins. If you're activting IR-receive, yo'll get a error ""remove
-datacable"" even it is not connected."</li>
+when you write a SMS and select "insert number" from menu and select the
+number from addressbook, phone displays</li>
+
+<br>strange characters on soft keys and go locked for some minutes/sometimes
+self-reset after 1-2 mins.To unlock, you should remove battery. To avoid
+this bugs you should select "insert number", then select the name from
+addressbook and then goto "options", "display details", select the "number"
+then "select" it.
+<li>
+If you're activting IR-receive, yo'll get a error ""remove datacable""
+even it is not connected."</li>
 
 <li>
 When deleting an entry from a call register list and closing the slide
@@ -183,11 +208,30 @@ is crashing. Remove battery, afterwards the SMS isn't in the outbox. Maybe
 more often when sending sms to more receivers. At power-up alleged no PIN-request.</li>
 </ul>
 BUG (ONLY THIS VERSION): Crash with deactivated PIN-request
-<p>V4.77 25-01-00
+<p>BUGS:
+<ul>
+<li>
+keyboard is locked, when delete not answered calls or inside WAP services</li>
+
+<li>
+phone is locked after first WAP session</li>
+</ul>
+V4.77 25-01-00
 <p>BUG FIXED: "Clear operator logo" works now (from Operator Logo Uploader).
 <p>BUG REMOVED: Earlier: Cell Broadcasts: Settings are cleared after power
 cycling.
-<p>V4.80 23-02-00
+<p>BUGS:
+<ul>
+<li>
+there is a problem with name of caller groups, i.e. you can change or add
+the group name, but when you select it inside other menus, the phone doesn't
+display the added group.</li>
+
+<li>
+if you select "vibra-call", you cant ear the ring-tones until you select
+a group without vibra-call.</li>
+</ul>
+V4.80 23-02-00
 <p>Improvement of browsing after ending an incoming call.
 <p>Wakeup Graphic is now maintained after 'Restore Factory Settings'&nbsp;
 <p>Changed ringing tones - Grande Valse renamed to Nokia tune&nbsp;
@@ -199,8 +243,11 @@ in the past and other note expires.
 <p>OTA ringing tones is not playing continuously after being saved.&nbsp;
 <p>Tone loop with OTA tones. OTA tones are now being played in full length
 when it is being tested in profiles.&nbsp;
-<p>Indication of incoming FAX call improved. Profile dependant indications
-is now corrected. e.g. Beep in Meeting Profile.&nbsp;
+<p>Indication of incoming FAX call improved.
+<p>Profile dependant indications is now corrected. e.g. Beep in Meeting
+Profile. Earlier: If you setup your phone in mode "meeting" (with "Bip
+x 1") and there is incoming call from a "group different" from the default,
+the phone ring with the melody selected for that group.
 <p>Ringing Tone Check in Profile setting is now also only played twice
 as an example when the phone is 'charging' or another message is displayed.&nbsp;
 <p>BUG REMOVED: Earlier:
@@ -222,6 +269,29 @@ when received more (3) Vcards or calendar-appointments over IR</li>
 (V4.70) After removing the battery, the currency and unit-settings are
 lost often.</li>
 </ul>
+BUGS:
+<ul>
+<li>
+if you reach pos 129 in PHONE MEMORY, the phone doesn't recognize numbers
+and name and groups. if you activate the SIM, all is OK.</li>
+
+<li>
+THIS bug is related to 4.80, not to 4.70:</li>
+
+<ul>
+<li>
+assign name X to a mem pos. Y and a phone number N</li>
+
+<li>
+change the phone number of X to M</li>
+
+<li>
+try to call X with speed dial Y</li>
+
+<li>
+the phone call the number N</li>
+</ul>
+</ul>
 V4.84 07-04-00
 <p>Improvement to Advice of Charge. Charging on prepaid SIM cards is now
 improved
@@ -314,7 +384,23 @@ a failed login attempt ('no response' or 'page cannot be displayed') only
 <br>to
 <br><i>letter bar (longer)</i>
 <br><i>Sending message</i>
-<p>V4.94 02-10-00 or 27-09-00 or 28-09-2000
+<p>BUGS:
+<ul>
+<li>
+it seems the a received call from a CELLULAR number ending with '0' (zero),
+is not recognized from the phone, but if you received a call from a NON
+CELLULAR number all is OK. Appears as if incoming call as CLI of 11 digits,
+they arent't recognized.</li>
+
+<li>
+if you are playing a game, and there is an incoming call, the phone reset
+itself.</li>
+
+<li>
+Rarely, when arrive an incaming call, the phone reject the call and lock
+up the keyboard, if it wasn't already locked.</li>
+</ul>
+V4.94 02-10-00 or 27-09-00 or 28-09-2000
 <p>Carkit Audio optimisation
 <p>Text files in language packages updated (localised group names, ...)
 <p>IRDA data transmission improved
@@ -470,8 +556,9 @@ Alleged only when sending data, receiving works. Alleged ok, when using
 a ir-speed of 9600 baud.</li>
 
 <li>
-When security-level set to "Phone": you can't get the Memory Status. When
-set to "Memory", it is possible. Should be vice versa.</li>
+When security-level set to "Phone": you can't get the Memory Status (phone
+answers with "protected memory"). When set to "Memory", it is possible.
+Should be vice versa.</li>
 
 <li>
 The call divertion icon is cleared after powercycling, or no service condition.
@@ -479,7 +566,8 @@ Appears again after status-check.</li>
 
 <li>
 Autoanswer with the headset does not work if the keyboard is locked (altough
-activated in the profile).</li>
+activated in the profile): in <b>Menu 3-6-1-8</b>, if you select YES, phone
+DISABLE automatic answer, if you select NO, phone ENABLE automatic answer.</li>
 
 <li>
 (was OK in V4.73 and earlier, not OK in 4.88) Closed user group: after
@@ -488,6 +576,15 @@ entering the groupnumber, the left OK-button doesn't work, only the NaviRoller.<
 <li>
 (V4.80) german text wrong: "auf Netzant- wort &lt;new line> warten" (english:
 "Requesting")</li>
+
+<li>
+if you disable the ringer and receive a SMS, the phone doesn't beep.</li>
+
+<li>
+problems related to customs caller gruoup appears solved</li>
+
+<li>
+"warning on incoming" call work ok also with "grouped" names.</li>
 </ul>
 NaviRoller for Redialing (Menu 4-3-5) official not possible anymore since
 FW v4.73 not possible again...
@@ -505,6 +602,10 @@ and the Link to ""/sub.wml"" targets to ""http://www.abc.co/sub.wml"""</li>
 
 <li>
 Snake2: after playing, the cup is shown without the reached points.</li>
+
+<li>
+Sending business cards: Option related to "full details" and "predefined
+number" are inverted. (V04.88 doesn't have this bug)</li>
 </ul>
 BUG (IN THIS AND NEWER VERSIONS):
 <ul>
@@ -731,6 +832,9 @@ to the 7110.</li>
 leap year bug: birthday i.e. on 3.3.2000, remind-date before 28.2. I.e.
 15.2. Store and edit again -> remind-date has changed to 14.2., and with
 every edit one additional day.</li>
+
+<li>
+In Italian T9: "I'm" is always "I-am"</li>
 </ol>
 V5.01 08-12-00
 <br>V5.01 09-01-01 (ROM6?)
@@ -750,7 +854,13 @@ New UI Text release</li>
 <li>
 Operator list updated</li>
 </ul>
-
+BUGS V04.88 - V05.01
+<br>Problems with addressbook,
+<br>After (and only after) using software linke 7110explorer or similar,
+ther are problems with name and numbers. numbers are displayed instead
+of names upon incoming calls. Phone restart to work correctly after a total
+reset from wintesla or o NkProfile
+<br>
 <hr WIDTH="50%">
 <br>BUG: <a href="../netmon/faq_net4.htm#Menu45">Test 45 in NetMonitor</a>
 doesn't work correctly.
@@ -881,14 +991,20 @@ profile. Checked for 4.70, 4.80, 4.84. Solution: enable vibra again, or
 powercycle the phone.</li>
 
 <li>
-No vibrating, although enabled, and even power-cycling doesn't help.</li>
+No vibrating, although enabled, and even power-cycling doesn't help. Solution:
+select an other ringtone in the profiles.</li>
 
-<br>Solution: select an other ringtone in the profiles.</ol>
+<li>
+if you cusomize the "silent mode", when you select it the vibra-call is
+deactivated. if the phone is turned off and then on the vibra-call is activated.
+Checked for 4.84</li>
+</ol>
 <b>Games</b>:
 <ul>
 <li>
 The back light turns off during a games of opposite or racket, even if
-the option is set for the lights to be on.</li>
+the option is set for the lights to be on (solution: open slider, then
+play a game; not play a game, when open the slider)</li>
 
 <li>
 Either the light doesn't turn on at all, or the light switches of in the
@@ -971,7 +1087,6 @@ but returned the SIM ones.</li>
 <tr>
 <td COLSPAN="4">V3.30 06-11-00</td>
 </tr>
-
 </table>
 <i><font size=-1><a href="#Top" class="shref">Back to the top/Na pocz±tek</a></font></i>
 <p>
index 9713ec5..4d53e14 100644 (file)
@@ -53,7 +53,8 @@ language in phone ?</a></b></li>
 </ol>
 
 <hr size="2" noshade width="60%" align="center" style="color: #004080">
-<center><p>Here is table describing firmware in various Nokia 8xxx phones
+<center>
+<p>Here is table describing firmware in various Nokia 8xxx phones
 <br>You can also see table for
 <br><a href="firm12.htm">Nokia 1xxx/2xxx</a>, <a href="firm3.htm">Nokia
 3xxx</a>, <a href="firm5.htm">Nokia 5xxx</a>, <a href="firm6_1.htm">Nokia
@@ -74,7 +75,7 @@ language in phone ?</a></b></li>
 </tr>
 
 <tr>
-<td><a NAME="#8110"></a>8110</td>
+<td><a NAME="8110"></a>8110</td>
 
 <td>NHE-6, NHE-6BX</td>
 
@@ -94,7 +95,7 @@ language in phone ?</a></b></li>
 </tr>
 
 <tr>
-<td><a NAME="#8110i"></a>8110i</td>
+<td><a NAME="8110i"></a>8110i</td>
 
 <td>NHE-6, NHE-6BM</td>
 
@@ -148,7 +149,7 @@ V25.20 16-10-98</td>
 </tr>
 
 <tr>
-<td><a NAME="#8146"></a>8146</td>
+<td><a NAME="8146"></a>8146</td>
 
 <td>NHK-6</td>
 
@@ -163,7 +164,7 @@ V25.20 16-10-98</td>
 </tr>
 
 <tr>
-<td><a NAME="#8148"></a>8148</td>
+<td><a NAME="8148"></a>8148</td>
 
 <td>NHK-6</td>
 
@@ -178,7 +179,7 @@ V25.20 16-10-98</td>
 </tr>
 
 <tr>
-<td><a NAME="#8148i"></a>8148i</td>
+<td><a NAME="8148i"></a>8148i</td>
 
 <td>NHK-6V</td>
 
@@ -192,7 +193,7 @@ V25.20 16-10-98</td>
 </tr>
 
 <tr>
-<td><a NAME="#8210"></a>8210</td>
+<td><a NAME="8210"></a>8210</td>
 
 <td>NSM-3</td>
 
@@ -1044,7 +1045,11 @@ memory, you see "Saved to phone" display. It has icon from older Nokia
 phones (unchanged) - phone with the antenna drawn...
 <p>Bug (all versions ? - tested for 5.25): when send too long ringtone
 for phone, in "preview" menu it's cut and played, after saving to location
-playes only one note...</td>
+playes only one note...
+<br>
+<hr WIDTH="40%">
+<br>According to some WWW sites phone seems to work with firmware from
+Nokia 8850. I don't have any other info, do not ask me.</td>
 </tr>
 
 <tr>
@@ -1099,17 +1104,52 @@ HDC-5...
 <tr>
 <td COLSPAN="4">V2.90 08-09-01
 <br>V3.05 23-09-01
-<br>V3.07
-<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-Improvements in voice recorder stability&nbsp;
-<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-Improvements in SIM card reading stability&nbsp;
-<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-Improvements in SIM Application toolkit dynamic menu&nbsp;
-<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-Improvements in SEND USSD&nbsp;
-<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-Changes to meet some test cases&nbsp;
+<p>BUGS:
+<ul>
+<li>
+If you select "warning of call" = "Bip x 1" and select "caller groups"
+from phonebook menu and try to customize group, the vibra-call activate
+itself. You must turn off the phone to stop it.</li>
+
+<li>
+after renaming caller group "family" as "personal", adding the members
+of group and customizing the ringtone. Now, the first time that select
+"personal", the phone return to initial state, and the second time reset
+itself.</li>
+
+<li>
+low voice recoder quality</li>
+</ul>
+V3.07
+<ul>
+<li>
+Improvements in voice recorder stability (quality ?)</li>
+
+<li>
+Improvements in SIM card reading stability&nbsp;</li>
+
+<li>
+Improvements in SIM Application toolkit dynamic menu&nbsp;</li>
+
+<li>
+Improvements in SEND USSD&nbsp;</li>
+
+<li>
+Changes to meet some test cases&nbsp;</li>
+</ul>
+BUG (also existing in V3.05):
+<ul>
+<li>
+when you are (near) losting signal, the phone reset itself, also, in that
+case, is much difficult re-sync the signal. Partial solution is to select
+"Manual Operator" instead of "Automatic"</li>
+
+<li>
+if you turn on the phone with headset plugged in, the phone reset itself
+continously.</li>
+</ul>
+BUG: After customizing a ringtone (with logomanager) and entering "caller
+groups", the phone reset itself. Possible reason: incorrect ringtone ID.
 <p>V4.04
 <ul>
 <li>
@@ -1170,7 +1210,10 @@ Improvements to caller group logo sending and receiving&nbsp;</li>
 Improvements to Service Dialling Numbers&nbsp;</li>
 
 <li>
-Minor improvements to phone number showing&nbsp;</li>
+Minor improvements to phone number showing (caller identification)</li>
+
+<li>
+&nbsp;correction of displaying icons for numbers "WORK" and "CELLULAR"</li>
 </ul>
 
 <li>
@@ -1192,7 +1235,8 @@ Call Register:</li>
 Lists cleaned if new SIM card used&nbsp;</li>
 
 <li>
-AoC Currency showing and default limits showing improved&nbsp;</li>
+AoC Currency showing and default limits showing improved (displaying "remaining
+credits" with SIM that has "cash display" in their menus)</li>
 </ul>
 
 <li>
@@ -1215,7 +1259,7 @@ Fixed dialling number stability improvements&nbsp;</li>
 Help text for fixed dialling numbers added&nbsp;</li>
 
 <li>
-Hands free indicator didnÃ¥t disappear in some cases&nbsp;</li>
+Hands free indicator didn't disappear in some cases&nbsp;</li>
 
 <li>
 Minor improvements to Automatic language selection&nbsp;</li>
@@ -1312,7 +1356,7 @@ WAP bookmarks and cookies:&nbsp;</li>
 Some denial of service vulnerabilities corrected&nbsp;</li>
 
 <li>
-Problems with maximum length of bookmark URLÃ¥s corrected&nbsp;</li>
+Problems with maximum length of bookmark URL's corrected&nbsp;</li>
 
 <li>
 In certain WAP pages Cookies were causing problems&nbsp;</li>
@@ -1386,6 +1430,37 @@ Several text, font and other minor look&amp;feel improvements</li>
 Several minor stability improvements&nbsp;</li>
 </ul>
 </ul>
+Last (?) version with this bug: when using 32k sim, sometimes the phone
+display "SIM not ready". Problem exist only, when PIN code was disabled.
+Enabling access with PIN code solved this type of problem
+<p>BUGS:&nbsp;
+<ul>
+<li>
+The problem related to losting signal is still present (but in lower way),
+sometimes turning off and on the phone is needed to resync the signal.</li>
+
+<li>
+it's necessary to press key '5' to confirm selection of players in Snowboard,
+then all is OK in this game</li>
+
+<li>
+problems after closing GPRS (you must reset phone):</li>
+
+<ul>
+<li>
+phone displays "SIM rejected"</li>
+
+<li>
+phone can't send SMS</li>
+
+<li>
+phone can't make or receive calls</li>
+</ul>
+
+<li>
+problems when you use both SIM and phone memory. Use only one memory -
+suggested PHONE memory</li>
+</ul>
 V4.53
 <ul>
 <li>
@@ -1399,7 +1474,7 @@ Private in Conference call improvement&nbsp;</li>
 Speed dial number recognition improvement&nbsp;</li>
 
 <li>
-AoC improvements&nbsp;</li>
+AoC (cash display system) improvements</li>
 
 <li>
 Field strength signal bar configuration changed&nbsp;</li>
@@ -1442,7 +1517,7 @@ WAP:&nbsp;</li>
 
 <ul>
 <li>
-Improvement to OTA bookmarks&nbsp;</li>
+Improvement to OTA bookmarks&nbsp; (over SMS?)</li>
 
 <li>
 Bookmark sending fails when SMS center number is not given in advance&nbsp;</li>
@@ -1466,7 +1541,7 @@ Unicode support added to WAP Push Messages&nbsp;</li>
 Push message reception by default ON&nbsp;</li>
 
 <li>
-GPRS related corrections&nbsp;</li>
+GPRS related corrections (example: better ending)</li>
 
 <li>
 Corrections to end-key functionality when having voice call during WAP
@@ -1508,7 +1583,7 @@ Improvements when copying entries&nbsp;</li>
 Improvements in Pop-up search (mainly in APAC languages)&nbsp;</li>
 
 <li>
-Improvements when browsing phonebook memory&nbsp;</li>
+Improvements when browsing phonebook memory</li>
 
 <li>
 Hungarian and Slovak alpha order improvements&nbsp;</li>
@@ -1574,11 +1649,11 @@ Improvements to operator name display&nbsp;</li>
 NITZ improvements&nbsp;</li>
 </ul>
 </ul>
-</td>
+BUGS: It seems solved problem of resync signal, but still present are "resets"</td>
 </tr>
 
 <tr>
-<td><a NAME="#8810"></a>8810</td>
+<td><a NAME="8810"></a>8810</td>
 
 <td>NSE-6</td>
 
@@ -1612,7 +1687,7 @@ use "Reminder" instead of "Birthday".</td>
 </tr>
 
 <tr>
-<td><a NAME="#8850"></a>8850</td>
+<td><a NAME="8850"></a>8850</td>
 
 <td>NSM-2</td>
 
@@ -1622,12 +1697,16 @@ use "Reminder" instead of "Birthday".</td>
 </tr>
 
 <tr>
-<td COLSPAN="4">Look to the info for Nokia 8210 - they have almost identical
-firmware (with some details)</td>
+<td COLSPAN="4">Look to the <a href="#8210">info for Nokia 8210</a> - they
+have almost identical firmware (with some details)
+<p>BUG in V.5.26 (19-10-00): If you activate the IrDA connection (<b>Menu
+9</b>) twice in a row (while the phone queries for an IrDA connection -that
+is) the IrDA icon will go static (blink stops!) until each IrDA activation
+times-out. During the static IrDA icon, the phone will still function properly.</td>
 </tr>
 
 <tr>
-<td><a NAME="#8890"></a>8890</td>
+<td><a NAME="8890"></a>8890</td>
 
 <td>NSB-6</td>
 
@@ -1831,7 +1910,6 @@ Service (TTML browser) main menu removed&nbsp;</li>
 </ul>
 </td>
 </tr>
-
 </table>
 <i><font size=-1><a href="#Top" class="shref">Back to the top/Na pocz±tek</a></font></i>
 <p>
index 6062665..826470c 100644 (file)
@@ -53,7 +53,8 @@ language in phone ?</a></b></li>
 </ol>
 
 <hr size="2" noshade width="60%" align="center" style="color: #004080">
-<center><p>Here is table describing firmware in various Nokia 9xxx phones
+<center>
+<p>Here is table describing firmware in various Nokia 9xxx phones
 <br>You can also see table for
 <br><a href="firm12.htm">Nokia 1xxx/2xxx</a>, <a href="firm3.htm">Nokia
 3xxx</a>, <a href="firm5.htm">Nokia 5xxx</a>, <a href="firm6_1.htm">Nokia
@@ -74,7 +75,7 @@ language in phone ?</a></b></li>
 </tr>
 
 <tr>
-<td><a NAME="#9000"></a>Communicator 9000</td>
+<td><a NAME="9000"></a>Communicator 9000</td>
 
 <td>RAE-1</td>
 
@@ -96,7 +97,7 @@ be set manually then.</td>
 </tr>
 
 <tr>
-<td><a NAME="#9000i"></a>Communicator 9000i</td>
+<td><a NAME="9000i"></a>Communicator 9000i</td>
 
 <td>RAE-4</td>
 
@@ -117,7 +118,7 @@ be set manually then.</td>
 </tr>
 
 <tr>
-<td><a NAME="#9000il"></a>Communicator 9000il</td>
+<td><a NAME="9000il"></a>Communicator 9000il</td>
 
 <td>GE-9</td>
 
@@ -136,7 +137,7 @@ be set manually then.</td>
 </tr>
 
 <tr>
-<td><a NAME="#9110"></a>Communicator 9110</td>
+<td><a NAME="9110"></a>Communicator 9110</td>
 
 <td>RAE-2</td>
 
@@ -482,7 +483,7 @@ is also available from Forum Nokia web page <a href="http://www.forum.nokia.com"
 </tr>
 
 <tr>
-<td><a NAME="#ncp1"></a>Card Phone 1.0</td>
+<td><a NAME="ncp1"></a>Card Phone 1.0</td>
 
 <td>RPE-1</td>
 
@@ -492,7 +493,7 @@ is also available from Forum Nokia web page <a href="http://www.forum.nokia.com"
 </tr>
 
 <tr>
-<td><a NAME="#ncp2"></a>Card Phone 2.0</td>
+<td><a NAME="ncp2"></a>Card Phone 2.0</td>
 
 <td>RPM-1</td>
 
index 8f24796..e65944a 100644 (file)
@@ -214,7 +214,8 @@ And some other tips:
 <ul>
 <li>
 when want to delete SMS Centre Number (you don't want to see it from phone's
-menu), write "*" inside. Tested for N5110, 3310</li>
+menu),
+write "*" inside. Tested for N5110, 3310</li>
 
 <li>
 when you put "#" char as SMS Centre Number, phone will replace it by "3".
@@ -264,7 +265,7 @@ alphabet. When select "Special", "SMS" is played.</li>
 <i><font size=-1><a href="#Top" class="shref">Back to the top/Na pocz±tek</a></font></i>
 <p><a NAME="2"></a><font size=+2><font color="#1F409F">2. </font>Ogólne
 informacje o IMEI/General info about IMEI</font>
-<hr align="LEFT" size="3" width="300" color="#60c0a0" noshade><a NAME="#IMEI"></a>
+<hr align="LEFT" size="3" width="300" color="#60c0a0" noshade><a NAME="IMEI"></a>
 <p>IMEI is written as:
 <p>XXXXXX/XX/XXXXXX/X
 <br>TAC/FAC/SNR/SP
@@ -400,10 +401,9 @@ In EEPROM you have configuration for phone (in almost all phones) - downloadable
 logos, ringtones, etc. and generally it's very small - 8, 16, 32 kB. Flash
 memory is rather big (for example, 8 MB). You have full firmware there
 and (in some models) part of configuration.
-<p>From long time there is available on the <a href="http://www.net.yu/~dejan">Dejan's
+<p>From long time there is available on the <a href="http://users.net.yu/~dejan/">Dejan's
 page</a> flasher (soft + schematics for interface) and it allows to change
-flash, but not at all. Because not everything is decoded (all checksums,
-etc.), this flasher will allow to:
+flash memory. This flasher will allow to:
 <ol>
 <li>
 change part of flash (for example, used for such modyifing firmware, that
@@ -411,11 +411,13 @@ phone doesn't read status of simlock and can work with each SIM card)</li>
 
 <li>
 repairing some CONTACT SERVICES</li>
+
+<li>
+uploading new flash (firmware version) to phone</li>
 </ol>
-You can't (?) change firmware version to newer (phone doesn't log in to
-network) and for it you must go to the next point to see, where to change
-it ;-). Additionaly, using this flasher can be illegal (especially with
-simlocks).
+After uploading new flash phone will not log into network. You have to
+find and use loggers...I don't know more and don't ask me about it.
+<p>Remember, that using this software can be illegal...
 <p><i><font size=-1><a href="#Top" class="shref">Back to the top/Na pocz±tek</a></font></i>
 <p><a NAME="4"></a><font color="#1F409F"><font size=+2>4. Czy to kosztuje
 ?/Does it cost ?</font></font>
@@ -499,18 +501,17 @@ different models are not the same.
 <a href="firm12.htm#2010">2010 (NHE-3)</a>,
 <a href="firm12.htm#2110">2110
 (NHE-1XN)</a>,
-<a href="firm12.htm#2110i900">2110i, 2110e for GSM 900
-(NHE-4)</a>,
-<a href="firm12.htm#2110I900_2">2110i, 2110e for GSM 900
-(NHE-4NX)</a>,
-<a href="firm12.htm#2110i_1800">2110i, 2110e for GSM 1800
-(NHK-IEA)</a>,
+<a href="firm12.htm#2110i900">2110i, 2110e for GSM 900 (NHE-4)</a>,
+<a href="firm12.htm#2110I900_2">2110i,
+2110e for GSM 900 (NHE-4NX)</a>,
+<a href="firm12.htm#2110i_1800">2110i,
+2110e for GSM 1800 (NHK-IEA)</a>,
 <a href="firm12.htm#2140">2140 (NHK-1XA)</a>,
 <a href="firm12.htm#2148">2148
 (NHK-1)</a>,
-<a href="firm12.htm#2148i">2148i (NHK-4)</a>,
-<a href="firm12.htm#2160">2160
-(NHC-4NE)</a></li>
+<a href="firm12.htm#2148i">2148i
+(NHK-4)</a>,
+<a href="firm12.htm#2160">2160 (NHC-4NE)</a></li>
 
 <li>
 <a href="firm3.htm#3110">3110 (NHE-8)</a>,
@@ -605,7 +606,7 @@ change language in phone ?</font>
 <br>
 <hr align="LEFT" size="3" width="300" color="#60c0a0" noshade>
 <p>You have to change in phone part of firmware... From some time it's
-possible to do it with <a href="http://www.net.yu/~dejan">Dejan flasher</a>.
+possible to do it with <a href="http://users.net.yu/~dejan/">Dejan flasher</a>.
 <p><i><font size=-1><a href="#Top" class="shref">Back to the top/Na pocz±tek</a></font></i>
 <p><a NAME="8"></a><font color="#1F409F"><font size=+2>8. U¿yte materia³y/Information
 sources</font></font>
@@ -683,11 +684,12 @@ sources</font></font>
 <a href="http://www.indocell.net/id37.htm">http://www.indocell.net/id37.htm</a></li>
 
 <li>
-<a href="http://www.ponticellinks.com/bug3330.html">http://www.ponticellinks.com/bug3330.html</a></li>
+<a href="http://www.ponticellinks.com/bug_sw.html">http://www.ponticellinks.com/bug_sw.html</a>
+(02-02)</li>
 
 <li>
 <a href="http://www.flash.net.ph/cgi-bin/ikonboard/forums.cgi?forum=4&show=30">http://www.flash.net.ph/cgi-bin/ikonboard/forums.cgi?forum=4&amp;show=30</a>
-(21-02-02)</li>
+(03-02)</li>
 
 <li>
 <a href="http://www.xinfo.net">http://www.xinfo.net</a></li>
@@ -697,8 +699,8 @@ sources</font></font>
 <hr size="2" noshade width="60%" align="center" style="color: #004080">
 <div align=right><font size=-2><a href="mailto:Marcin Wi±cek<Marcin-Wiacek@topnet.pl>" class="autoremail">Marcin
 Wi±cek</a> (<a href="http://marcin-wiacek.topnet.pl" class="autoremail">WWW</a>)</font>
-<br><font size=-2>Ostatnia aktualizacja: 24 luty 2002/ Last modification:
-24 February 2002</font></div>
+<br><font size=-2>Ostatnia aktualizacja: 10 marca 2002/ Last modification:
+10 March 2002</font></div>
 
 </body>
 </html>
index c8663ad..6cc7368 100644 (file)
@@ -40,8 +40,8 @@ excellent page Nokia 9110 World: <a href="http://n9k.ats.pl">http://n9k.ats.pl</
 I\92ll be very thankful for any help in creating and maintaining this guide - please
 <a href="mailto:Marcin Wiacek<Marcin-Wiacek@TopNet.PL>"><b>send</b></a>
 me any information (or URLs where I can find it), suggestions and remarks. My FAQ currently concerns
-Nokia 2110i, 2120, 2140, 2160, 3110, 3210, 3310, 5110, 5130, 5160, 5190, 6110, 6130, 6150, 6160, 6185/6188, 6210, 6250, 7110, 8210, 8810 and 9110
-series of phones. If you have NetMonitor enabled in any other model
+Nokia 2110i, 2120, 2140, 2160, 3110, 3210, 3310, 5110, 5130, 5160, 5190, 6110, 6130, 6150, 6160, 6185/6188, 6210, 6250, 7110, 8210, 8810,
+9110 and 9210 series of phones. If you have NetMonitor enabled in any other model
 (for example in 2110i, 6090, 8xxx, 9000), please <a href="mailto:Marcin Wiacek<Marcin-Wiacek@TopNet.PL>"><b>contact me</b></a>
 (to let me know about the differences and possible new tests).
 </font></b>
@@ -97,6 +97,7 @@ information (you use it on your own responsibility) !
 <li><a href="faq_net6.htm#39"><b>Can I activate netmonitor in 3310 using soft working with 3210 ?</b></a></li>
 <li><a href="faq_net6.htm#40"><b>After activating netmonitor/BTS TEST my phone can't find network...</b></a></li>
 <li><a href="faq_net6.htm#41"><b>Netmonitor shows different battery capacity than info on it...</b></a></li>
+<li><a href="faq_net6.htm#42"><b>NetMonitor in Nokia 6310, 8310,...</b></a></li>
 </ol>
 <hr size="2" noshade width="60%" align="center" style="color: #004080">
 </font>
@@ -690,7 +691,7 @@ should be set to their default values...
 </font>
 
 <br><p align="RIGHT"><font class='autor' size='1'><a class="autoremail" href="mailto:Marcin Wiacek<Marcin-Wiacek@topnet.pl>">Marcin Wiacek</a> (<a class="autoremail" href="http://marcin-wiacek.topnet.pl">WWW</a>)
-<br>Last modification: 5 January 2002</font>
+<br>Last modification: 10 March 2002</font>
 
 </body>
 </html>
index 0a11599..4995103 100644 (file)
@@ -67,6 +67,7 @@
 <li><a href="faq_net6.htm#39"><b>Can I activate netmonitor in 3310 using soft working with 3210 ?</b></a></li>
 <li><a href="faq_net6.htm#40"><b>After activating netmonitor/BTS TEST my phone can't find network...</b></a></li>
 <li><a href="faq_net6.htm#41"><b>Netmonitor shows different battery capacity than info on it...</b></a></li>
+<li><a href="faq_net6.htm#42"><b>NetMonitor in Nokia 6310, 8310,...</b></a></li>
 </ol>
 <hr size="2" noshade width="60%" align="center" style="color: #004080">
 </font>
@@ -497,7 +498,7 @@ use also <a href=faq_net3.htm#Menu8>test 8</a> for it...
 </font>
 
 <br><p align="RIGHT"><font class='autor' size='1'><a class="autoremail" href="mailto:Marcin Wiacek<Marcin-Wiacek@topnet.pl>">Marcin Wiacek</a> (<a class="autoremail" href="http://marcin-wiacek.topnet.pl">WWW</a>)
-<br>Last modification: 5 January 2002</font>
+<br>Last modification: 10 March 2002</font>
 
 </body>
 </html>
index 3ec22cd..4977a97 100644 (file)
@@ -67,6 +67,7 @@
 <li><a href="faq_net6.htm#39"><b>Can I activate netmonitor in 3310 using soft working with 3210 ?</b></a></li>
 <li><a href="faq_net6.htm#40"><b>After activating netmonitor/BTS TEST my phone can't find network...</b></a></li>
 <li><a href="faq_net6.htm#41"><b>Netmonitor shows different battery capacity than info on it...</b></a></li>
+<li><a href="faq_net6.htm#42"><b>NetMonitor in Nokia 6310, 8310,...</b></a></li>
 </ol>
 <hr size="2" noshade width="60%" align="center" style="color: #004080">
 </font>
@@ -987,6 +988,7 @@ Y
 <ul>
 <li>CSST - Cellular State: IDLE, CONVE, PLIOS, TIME, SYNC, RELE, PAGE, TRFIN, W_OR</li>
 <li>Chan - Channel</li>
+<li>NP, NC, SC, SP - xC for 800 MHz CDMA, xP for 1900 MHz CDMA. </li>
 <li>PPN - PseudoNoise offset</li>
 <li>EC/SO - Energy per chip per noise</li>
 <li>B - Current network/frequency. a,b are A and B 800 MHz <a href="faq_net1.htm#AMPS">AMPS</a> (analog). A-F indicate the digital block in use</li>
@@ -1683,6 +1685,7 @@ SL P MD PC
 <ul>
 <li>OWNNUMBER - phone number</li>
 <li>ESN - <b>E</b>lectronic <b>S</b>erial <b>N</b>umber</li>
+<li>ESN-HEX - hexadecimal ESN</li>
 <li>MD - [AD] changes to [DI] at 800 <a href="faq_net1.htm#CDMA">CDMA</a></li>
 </ul>
 
@@ -2399,7 +2402,7 @@ NORMALRXFE25</i>
 </font>
 
 <br><p align="RIGHT"><font class='autor' size='1'><a class="autoremail" href="mailto:Marcin Wiacek<Marcin-Wiacek@topnet.pl>">Marcin Wiacek</a> (<a class="autoremail" href="http://marcin-wiacek.topnet.pl">WWW</a>)
-<br>Last modification: 5 January 2002</font>
+<br>Last modification: 10 March 2002</font>
 
 </body>
 </html>
index 6807781..44c407a 100644 (file)
@@ -62,6 +62,7 @@
 <li><a href="faq_net6.htm#39"><b>Can I activate netmonitor in 3310 using soft working with 3210 ?</b></a></li>
 <li><a href="faq_net6.htm#40"><b>After activating netmonitor/BTS TEST my phone can't find network...</b></a></li>
 <li><a href="faq_net6.htm#41"><b>Netmonitor shows different battery capacity than info on it...</b></a></li>
+<li><a href="faq_net6.htm#42"><b>NetMonitor in Nokia 6310, 8310,...</b></a></li>
 </ol>
 
 <hr size="2" noshade width="60%" align="center" style="color: #004080">
@@ -102,7 +103,8 @@ X_N_RX_F0020</i>
 <li>TCOMP - an other threshold to add an active PN when a candidate PN becomes stronger than an active PN</li>
 <li>TTROP - timer to drop a PN when power of this PN goes below TDROP</li>
 <li>WW1 - value of the seach window for the active PN</li>
-<li>WW2 - value of the seach window for the neighbour PN,[WW3]: value of the seach window for the remaining PN.</li>
+<li>WW2 - value of the seach window for the neighbour PN</li>
+<li>WW3 - value of the seach window for the remaining PN.</li>
 </ul>
 </td></tr></table>
 
@@ -170,6 +172,41 @@ The power levels for all 8 individual slots can be found in
 <p>First line shows channel displayed in <a href=faq_net2.htm#Menu1>test 1</a> too.
 It's available in new firmware only (5.02).
 
+<p>In Nokia 9210:
+
+<p>
+<table CELLSPACING=0 CELLPADDING=0 WIDTH="100%" >
+<tr>
+
+<td>
+<table BORDER CELLSPACING=0 CELLPADDING=0 >
+<tr>
+<td><tt><i>
+Ts&nbsp; 01234567<br>
+Rx&nbsp; xxxxxxxx<br>
+Tx&nbsp; xxxxxxxx<br>
+mCh x mPw xx
+</i></tt></td>
+</tr>
+</table>
+</td>
+
+<td>
+<table BORDER CELLSPACING=0 CELLPADDING=0 >
+<tr>
+<td><tt><b>
+HSCSD call<br>
+Rx timeslots<br>
+Tx timeslots<br>
+MainCh TS Pw
+</b></tt></td>
+</tr>
+</table>
+</td>
+
+</tr>
+</table>
+
 <p><a NAME="Menu9"></a><b>Test 9</b>
 
 <p>In Nokia 6185/6188 it looks like follows:
@@ -249,6 +286,20 @@ used in data transmission
 in <a href=faq_net2.htm#Menu1>test 1</a> (power level used for "main"
 time slot in transmission is displayed also there).
 
+<p>In Nokia 9210 test looks like in 6210, help is different:
+
+<p>
+<table BORDER CELLSPACING=0 CELLPADDING=0 >
+<tr>
+<td><tt><b>
+MainCh Tw Pw<br>
+TS1 &nbsp;2 &nbsp;3 &nbsp;4<br>
+&nbsp; 5 &nbsp;6 &nbsp;7 &nbsp;8<br>
+HSCSD PW Lev
+</b></tt></td>
+</tr>
+</table>
+
 <p><a NAME="Menu10"></a><b>Test 10</b>
 <br>Network information (concern current or recently monitored network)
 
@@ -1515,6 +1566,18 @@ Problems with finding
 network were visible during about next 2 weeks.</li>
 </ul>
 
+<p>In Nokia 9210 help looks like follows:
+
+<p>
+<table BORDER CELLSPACING=0 CELLPADDING=0 >
+<tr>
+<td><tt><b>
+&nbsp; BTS TEST<br>
+&nbsp; &nbsp; mode<p>&nbsp;
+<tt><b>carrier no.</b></tt></td>
+</tr>
+</table>
+
 <p><a NAME="Menu18"></a><b>Test 18</b>
 
 <p>
@@ -2064,6 +2127,21 @@ on the right side of the display stops.
 </li>
 </ul>
 
+<p>In Nokia 9210 help looks like follows:
+
+<p>
+<table BORDER CELLSPACING=0 CELLPADDING=0 >
+<tr>
+<td><tt><b>MTDif MPDif<br>
+BUpV&nbsp; BDownV<br>
+AverV SumMF<br>
+Charger type</b></tt></td>
+</tr>
+</table>
+
+<p>Last line has such values like "NoChrgr" (no connected charger),
+"ACP-9" (ACP-9E charger)
+
 <p><a NAME="Menu22"></a><b>Test 22</b>
 <br>Charging parameters and indicators
 
@@ -2128,6 +2206,39 @@ version of firmware ?):
 </tr>
 </table>
 
+<p>In Nokia 9210:
+
+<p>
+<table CELLSPACING=0 CELLPADDING=0 WIDTH="100%" >
+<tr>
+<td>
+<table BORDER CELLSPACING=0 CELLPADDING=0 >
+<tr>
+<td><tt><i>
+&nbsp; &nbsp;15 &nbsp; 00 &nbsp;<br>
+&nbsp; &nbsp; 0 &nbsp; 0<br>
+&nbsp; &nbsp; 0 &nbsp; 0<br>
+&nbsp; &nbsp; &nbsp; &nbsp; 0<br>
+</i></tt></td>
+</tr>
+</table>
+</td>
+
+<td>
+<table BORDER CELLSPACING=0 CELLPADDING=0 >
+<tr>
+<td><tt><b>
+SlPer &nbsp;SysSt<br>
+&nbsp;N/A &nbsp;N/A<br>
+&nbsp;N/A &nbsp;N/A<br>
+RtcError
+</b></tt></td>
+</tr>
+</table>
+</td>
+</tr>
+</table>
+
 <p><a NAME="Menu23"></a><b>Test 23</b>
 <br>Information about the battery
 
@@ -2325,6 +2436,50 @@ the phone initially uses full power and the gradually reduces it.
 </tr>
 </table>
 
+<p>Power consumption in Nokia 6185/6188:
+
+<p>
+digital, idle, backlight off = 0011;<br>
+digital, idle, backlight = 0093;<br>
+analog, idle, backlight off = 0103;<br>
+analog, idle, backlight on = 0187;<br>
+searching, backlight off = 0160-0200;<br>
+analog (fringe), talk = 0933;<br>
+digital, talk, backlight on = 0275
+
+<p>In Nokia 9210:
+
+<p>
+<table CELLSPACING=0 CELLPADDING=0 WIDTH="100%" >
+<tr>
+<td>
+<table BORDER CELLSPACING=0 CELLPADDING=0 >
+<tr>
+<td><tt><i>
+&nbsp;640 &nbsp;3775&nbsp;&nbsp;<br>
+&nbsp; &nbsp;0 &nbsp;3775<br>
+&nbsp;8 &nbsp;49 &nbsp;&nbsp;0<br>
+46 &nbsp; 0 &nbsp;&nbsp;0
+</i></tt></td>
+</tr>
+</table>
+</td>
+
+<td>
+<table BORDER CELLSPACING=0 CELLPADDING=0 >
+<tr>
+<td><tt><b>
+CmAh &nbsp; Vbatt<br>
+ChCur &nbsp;Stdby<br>
+Tle CAP Warn<br>
+CMT PDA Tot
+</b></tt></td>
+</tr>
+</table>
+</td>
+</tr>
+</table>
+
 <p><a NAME="Menu24"></a><b>Test 24</b>
 
 <p>
@@ -2412,7 +2567,7 @@ noblw&nbsp; nobcr
 <hr size="2" noshade width="60%" align="center" style="color: #004080">
 
 <br><p align="RIGHT"><font class='autor' size='1'><a class="autoremail" href="mailto:Marcin Wiacek<Marcin-Wiacek@topnet.pl>">Marcin Wiacek</a> (<a class="autoremail" href="http://marcin-wiacek.topnet.pl">WWW</a>)
-<br>Last modification: 5 January 2002</font>
+<br>Last modification: 10 March 2002</font>
 
 </body>
 </html>
index ebda570..4651d04 100644 (file)
@@ -67,6 +67,7 @@
 <li><a href="faq_net6.htm#39"><b>Can I activate netmonitor in 3310 using soft working with 3210 ?</b></a></li>
 <li><a href="faq_net6.htm#40"><b>After activating netmonitor/BTS TEST my phone can't find network...</b></a></li>
 <li><a href="faq_net6.htm#41"><b>Netmonitor shows different battery capacity than info on it...</b></a></li>
+<li><a href="faq_net6.htm#42"><b>NetMonitor in Nokia 6310, 8310,...</b></a></li>
 </ol>
 <hr size="2" noshade width="60%" align="center" style="color: #004080">
 </font>
@@ -165,6 +166,48 @@ modern phones during calling number. Adequate values are in table (decimal)
 <tr ALIGN=CENTER><td>941 Hz</td><td>#</td><td>0</td><td>*</td></tr>
 </table>
 
+<p><a NAME="Menu31"></a><b>Test 31</b>
+
+<p>
+<table CELLSPACING=0 CELLPADDING=0 WIDTH="100%" >
+<tr>
+<td>
+<table BORDER CELLSPACING=0 CELLPADDING=0 >
+<tr>
+<td><tt><i>
+&nbsp;<br>Serial port&nbsp;
+<br>&nbsp; &nbsp;mode<br>&nbsp;</i>
+</tt></td>
+</tr>
+</table>
+</td>
+
+<td>
+<table BORDER CELLSPACING=0 CELLPADDING=0 >
+<tr>
+<td><tt><i>
+&nbsp;<br>&nbsp; &nbsp;FBUS&nbsp; &nbsp; &nbsp;
+<br>&nbsp; &nbsp;mode<br>&nbsp;</i>
+</tt></td>
+</tr>
+</table>
+</td>
+
+<td>
+<table BORDER CELLSPACING=0 CELLPADDING=0 >
+<tr>
+<td><tt><b>
+Use menu to<br>
+&nbsp;activate<br>
+&nbsp;FBUS mode<br>
+for tracking
+</b></tt></td>
+</tr>
+</table>
+</td>
+</tr>
+</table>
+
 <p><a NAME="Menu32"></a><b>Test 32</b>
 
 <p>Test from Nokia 6250 (no help):
@@ -324,6 +367,37 @@ it was connected to computer and datas were transmitted with
 </tr>
 </table>
 
+<p>In Nokia 9210:
+
+<p>
+<table CELLSPACING=0 CELLPADDING=0 WIDTH="100%" >
+<tr>
+<td>
+<table BORDER CELLSPACING=0 CELLPADDING=0 >
+<tr>
+<td><tt><i>
+00 00 00<br>
+000 000 000&nbsp;<br>
+- - 00<br>
+H - -
+</i></tt></td>
+</tr>
+</table>
+</td>
+
+<td>
+<table BORDER CELLSPACING=0 CELLPADDING=0 >
+<tr>
+<td><tt><b>CM LD LM &nbsp; &nbsp;<br>
+PEC FEC OEC<br>
+RS TS RESND<br>
+Mode TXB RXB</b></tt></td>
+</tr>
+</table>
+</td>
+</tr>
+</table>
+
 <p><a NAME="Menu35"></a><b>Test 35</b>
 <br>Reason of last reboting internal firmware of phone.
 
@@ -407,7 +481,8 @@ bbbbbbbb - name of running task before reset (for example,
 <nobr>"PMM WRBA"</nobr> (for example Nokia 6210),
 <nobr>"ND TASK"</nobr> (for example Nokia 6210),
 <nobr>"PPC TASK"</nobr> (for example Nokia 6210),
-<nobr>"No task!"</nobr> (for example Nokia 6210)
+<nobr>"No task!"</nobr> (for example Nokia 6210),
+<nobr>"START UP"</nobr> (for example Nokia 9210)
 or "UNKNOWN" (confirmed - after normal phone enabling)). We can notice, that tasks names are similiar to
 names in help to <a href="faq_net5.htm#Menu84_86">tests 84-86</a>.</li>
 </ul>
@@ -485,6 +560,55 @@ Unfortunatelly :(, "real" counters connected with mastercode entering attempts
 </tr>
 </table>
 
+<p>In Nokia 9210 help is different:
+
+<p>
+<table BORDER CELLSPACING=0 CELLPADDING=0 >
+<tr>
+<td><tt><b>
+&nbsp;UN &nbsp;WD DSP&nbsp;<br>
+SIM IDL STK<br>
+&nbsp; &nbsp;Reset<br>
+&nbsp; counters
+</b></tt></td>
+</tr>
+</table>
+
+<p><a NAME="Menu37"></a><b>Test 37</b>
+<br>Reset (Nokia 9210)
+
+<p>
+<table CELLSPACING=0 CELLPADDING=0 WIDTH="100%" >
+<tr>
+<td>
+<table BORDER CELLSPACING=0 CELLPADDING=0 >
+<tr>
+<td><tt>
+&nbsp; &nbsp;Causes a &nbsp;<br>
+&nbsp; divide by<br>
+&nbsp; &nbsp; zero<br>
+&nbsp; &nbsp; reset
+</tt></td>
+</tr>
+</table>
+</td>
+
+<td>
+<table BORDER CELLSPACING=0 CELLPADDING=0 >
+<tr>
+<td><tt><b>
+&nbsp; Use menu &nbsp;<br>
+&nbsp; to cause<br>
+&nbsp; div by 0<br>&nbsp;
+</b></tt></td>
+</tr>
+</table>
+</td>
+</tr>
+</table>
+
+<p>You can restart your system by direct enter
+
 <p><a NAME="Menu38"></a><b>Test 38</b>
 <br>Memory dump
 
@@ -528,6 +652,40 @@ Dump address is changed only when you directly enter to this menu.
 <p>This display rather is not included in offcial firmware (I found only one
 phone with it). It can be switched on by defining flag DEV_FT_MEMORY_DUMP_IN_USE in ftd_conf.h.
 
+<p>In Nokia 9210:
+
+<p>
+<table CELLSPACING=0 CELLPADDING=0 WIDTH="100%" >
+<tr>
+<td>
+<table BORDER CELLSPACING=0 CELLPADDING=0 >
+<tr>
+<td><tt>
+&nbsp; Causes a &nbsp;<br>
+&nbsp;data abort<br>
+&nbsp; &nbsp;reset<br>&nbsp;
+</tt></td>
+</tr>
+</table>
+</td>
+
+<td>
+<table BORDER CELLSPACING=0 CELLPADDING=0 >
+<tr>
+<td><tt><b>
+&nbsp; Use menu &nbsp;<br>
+&nbsp; to cause<br>
+&nbsp; data abort<br>
+&nbsp; reset
+</b></tt></td>
+</tr>
+</table>
+</td>
+</tr>
+</table>
+
+<p>You can restart system by direct enter
+
 <p><a NAME="Menu39"></a><b>Test 39</b>
 <br>Reason of last connection end (asterisk means, that the diagnosis won't be sent to the
 network - it'll be only shown in phone) and making 
@@ -1115,9 +1273,13 @@ BATT 2 CHG 0</i>
 </table>
 
 <p><ul>
-<li>VBAT - battery voltage (/100V)</li>
+<li>BSI - Battery capacity. Example:
+'1600' for 1500 mAh; '984' for 900 mAh, and '1000' for 880 mAh</li>
+<li>VBAT - battery voltage (/100V).</li>
 <li>BTEMP - battery temperature in C</li>
-<li>CHG - battery charge status: 1 - charging, 0 - not charging</li>
+<li>BATT - type of battery: 1500 mAh=2; 900 mAh=1; 880 mAh=5 </li>
+<li>CHG - battery charge status: 2 - charging with desktop charger,
+1 - charging with fast charger, 0 - not charging</li>
 </ul>
 
 <p><a NAME="Menu42"></a><b>Test 42</b>
@@ -1431,6 +1593,13 @@ TX POWER DB</b>
 </tr>
 </table>
 
+<ul>
+<li>BAND - used cellular system: C= 800MHz CDMA, P=1.9GHz CDMA, A=800MHz AMPS</li>
+<li>CS SUBSTATE - cellular state: IDLE, CONVE, PAGE, PILOS, TIME_, SYNC_, RELE, etc</li>
+<li>EM STATE - emiter state: SLOT 1, SCANNING, RATE 1 (8k codec), RATE 2 (13k codec) or EVRC.</li>
+<li>TX POWER DB - TX power: usually between -75dB and +4dB</li>
+</ul>
+
 <p><a NAME="Menu48"></a><b>Test 48</b>
 <br>In Nokia 3110 this test looks like <b><a href="faq_net2.htm#Menu7">test 7</a></b>.
 
@@ -1654,6 +1823,18 @@ about problems with communication with SIM card (you will see "ERROR1" here)...
 </tr>
 </table>
 
+<p>In Nokia 9210 help looks like follows:
+
+<p>
+<table BORDER CELLSPACING=0 CELLPADDING=0 >
+<tr>
+<td><tt><b>VSel Bau SAl<br>
+SCond(CStop)<br>
+PIN12&nbsp; PUK12<br>
+&nbsp;ATR&nbsp; FE/PE</b></tt></td>
+</tr>
+</table>
+
 <p>In Nokia 6185/6188 this test looks like follows:
 
 <p>
@@ -2138,7 +2319,7 @@ and see this test in "action"...
 </font>
 
 <br><p align="RIGHT"><font class='autor' size='1'><a class="autoremail" href="mailto:Marcin Wiacek<Marcin-Wiacek@topnet.pl>">Marcin Wiacek</a> (<a class="autoremail" href="http://marcin-wiacek.topnet.pl">WWW</a>)
-<br>Last modifcation: 5 January 2002</font>
+<br>Last modifcation: 10 March 2002</font>
 
 </body>
 </html>
index 3c34bf1..cd28c8d 100644 (file)
@@ -1,23 +1,23 @@
 <html>
 <head>
-   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
-   <meta name="Author" content="Marcin Wi±cek">
-   <meta name="Description" content="FAQ dotycz±cy monitora sieci w Nokiach (NOKIA NetMonitor description)">
-   <meta name="language" content="pl">
+   <meta name="Author" content="Marcin Wiacek">
+   <meta name="Description" content="NOKIA NetMonitor description (English version)">
+   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+   <meta name="language" content="us">
    <meta name="revisit-after" content="15 days">
    <meta name="Robots" content="all">
-   <meta name="KeyWords" content="3110, 9110, GSM, DCS, Nokia, 3210, 5110, 5130, 6110, 6130, 6150, 8810, FAQ, NetMonitor, monitor sieci, Marcin, Wi±cek, Wiacek, Marcin Wi±cek, Marcin Wiacek">
-   <title>FAQ - monitor sieci w Nokiach (czê¶æ 6/7)</title>
+   <meta name="KeyWords" content="3110, 9110, GSM, DCS, Nokia, 3210, 5110, 5130, 6110, 6130, 6150, 8810, FAQ, NetMonitor, Marcin, Wiacek, Marcin Wiacek">
+   <title>NetMonitor in Nokia phones (6/7)</title>
    <link rel="stylesheet" href="../../styl.css" type="text/css">
 </head>
 <body bgcolor="#FFFFFF" text="#2B2B69" link="#525FF5" vlink="#525FF5" alink="#2FA030">
 
 <font class="drukuj">
-<p align="RIGHT"><a class="autoremail" href="../../index.htm">Strona g³ówna</a></p>
+<p align="RIGHT"><a class="autoremail" href="../../index.htm">Main page</a></p>
 </font>
-<center><font color="#1F409F" size=+2 class="tytul">Monitor sieci w telefonach Nokia (6/7)</font>
+<center><font color="#1F409F" size=+2 class="tytul">NetMonitor in Nokia phones (6/7)</font>
 <font class="drukuj">
-<p><a href="faq_net0.htm">[Czê¶æ 1]</a><a href="faq_net1.htm">[Czê¶æ 2]</a><a href="faq_net2.htm">[Czê¶æ 3]</a><a href="faq_net3.htm">[Czê¶æ 4]</a><a href="faq_net4.htm">[Czê¶æ 5]</a><b>[Czê¶æ 6]</b><a href="faq_net6.htm">[Czê¶æ 7]</a>
+<p><a href="faq_net0.htm">[Part 1]</a><a href="faq_net1.htm">[Part 2]</a><a href="faq_net2.htm">[Part 3]</a><a href="faq_net3.htm">[Part 4]</a><a href="faq_net4.htm">[Part 5]</a><b>[Part 6]</b><a href="faq_net6.htm">[Part 7]</a>
 </font>
 </center>
 
 
 <font class="drukuj">
 <ol>
-<li><a href="faq_net0.htm#1"><b>Co to jest ?</b></a></li>
-<li><a href="faq_net0.htm#2"><b>Czy jest mi potrzebny ?</b></a></li>
-<li><a href="faq_net0.htm#3"><b>Czy po w³±czeniu monitora telefon pobiera wiêcej energii ?</b></a></li>
-<li><a href="faq_net0.htm#4"><b>Jak go w³±czyæ ?</b></a></li>
-<li><a href="faq_net0.htm#5"><b>Jak± wersjê monitora mogê w³±czyæ w telefonie ?</b></a></li>
-<li><a href="faq_net0.htm#6"><b>Czy w³±czenie monitora powoduje utratê gwarancji ?</b></a></li>
-<li><a href="faq_net0.htm#7"><b>W moim telefonie menu monitora ma numer inny ni¿ 10. Czy to normalne ?</b></a></li>
-<li><a href="faq_net0.htm#8"><b>W moim telefonie menu monitora ma numer 11, natomiast poprzednia pozycja numer 9. Czy to normalne ?</b></a></li>
-<li><a href="faq_net0.htm#9"><b>Jak siê nim pos³ugiwaæ ?</b></a></li>
-<li><a href="faq_net0.htm#10"><b>Czy mogê zepsuæ sobie telefon ?</b></a></li>
-<li><a href="faq_net1.htm#11"><b>S³owniczek</b></a></li>
-<li><a href="faq_net2.htm#12"><b>Znaczenie poszczególnych testów</b></a></li>
-<li><a href="faq_net6.htm#13"><b>Mo¿na te¿ u¿yæ programu...</b></a></li>
-<li><a href="faq_net6.htm#14"><b>Czy mo¿na korzystaæ z monitora sieci, gdy nie ma w telefonie karty SIM, nie zosta³ podany jej PIN lub jest nieaktywna ?</b></a></li>
-<li><a href="faq_net6.htm#15"><b>W jaki sposób mogê wy³±czyæ monitor sieci ?</b></a></li>
-<li><a href="faq_net6.htm#16"><b>Czy powinienem wy³±czyæ monitor sieci przed oddaniem telefonu do serwisu ?</b></a></li>
-<li><a href="faq_net6.htm#17"><b>Czy po wy³±czeniu monitora sieci bêdê go móg³ w³±czyæ ponownie ?</b></a></li>
-<li><a href="faq_net6.htm#18"><b>Czy monitor sieci jest dostêpny tak¿e w analogowych Nokiach ?</b></a></li>
-<li><a href="faq_net6.htm#19"><b>Czy monitor sieci pozwoli na u¿ywanie telefonu podobnie jak radiostacji ?</b></a></li>
-<li><a href="faq_net6.htm#20"><b>Dlaczego w moim telefonie jest znacznie mniej testów ni¿ zosta³o tutaj opisane ? Czy mogê zwiêkszyæ ich ilo¶æ ?</b></a></li>
-<li><a href="faq_net6.htm#21"><b>Czy mogê stwierdziæ z pomoc± monitora sieci, gdzie znajduje siê mój rozmówca ?</b></a></li>
-<li><a href="faq_net6.htm#22"><b>Czy mogê stwierdziæ z pomoc± monitora sieci, gdzie siê znajdujê ?</b></a></li>
-<li><a href="faq_net6.htm#23"><b>Co to s± kody monitora sieci ?</b></a></li>
-<li><a href="faq_net6.htm#24"><b>Czy jest prawd±, Â¿e monitor sieci w telefonie z dodatkowym urz±dzeniem zmieniaj±cym jego pasmo dzia³a niepoprawnie ?</b></a></li>
-<li><a href="faq_net6.htm#25"><b>Gdzie znajdê opis protoko³u MBUS/FBUS i komendy zwi±zane z monitorem sieci ?</b></a></li>
-<li><a href="faq_net6.htm#26"><b>Na li¶cie sieci zabronionych mam nieistniej±ce sieci...</b></a></li>
-<li><a href="faq_net6.htm#27"><b>Jak sprawdziæ, w jakim pasmie czêstotliwo¶ci (900 czy 1800 Mhz) dzia³a telefon ?</b></a></li>
-<li><a href="faq_net6.htm#28"><b>Czy mogê u¿yæ kabla DLR-2/DLR-3 do aktywacji monitora ?</b></a></li>
-<li><a href="faq_net6.htm#29"><b>Czy mogê u¿yæ aktywowaæ monitor sieci korzystaj±c z Init File Editor (Nokia 9110) ?</b></a></li>
-<li><a href="faq_net6.htm#30"><b>Czy mogê zmusiæ telefon do u¿ywania konkretnego pasma czêstotliwo¶ci (900 lub 1800 Mhz) ?</b></a></li>
-<li><a href="faq_net6.htm#31"><b>Jak zmieniaæ ustawienia w testach ?</b></a></li>
-<li><a href="faq_net6.htm#32"><b>Mój telefon ma bardzo krótki czas czuwania - czy mo¿na sprawdziæ, co jest tego przyczyn± ?</b></a></li>
-<li><a href="faq_net6.htm#33"><b>Czy monitor sieci dostêpny jest tylko po angielsku ?</b></a></li>
-<li><a href="faq_net6.htm#Literatura"><b>U¿yte materia³y</b></a></li>
-<li><a href="faq_net6.htm#35"><b>Dodatkowe informacje</b></a></li>
-<li><a href="faq_net6.htm#36"><b>Czy u¿ywanie/aktywacja monitora co¶ kosztuje ?</b></a></li>
-<li><a href="faq_net6.htm#37"><b>Czy u¿ywanie monitora jest legalne ?</b></a></li>
-<li><a href="faq_net6.htm#38"><b>Które komórki na karcie SIM s± u¿ywane w testach monitora ?</b></a></li>
-<li><a href="faq_net6.htm#39"><b>Czy mogê netmonitora w 3310 uaktywniæ programem do 3210?</b></a></li>
-<li><a href="faq_net6.htm#40"><b>Po uaktywnieniu netmonitora/BTS TEST telefon "gubi" sieæ komórkow±...</b></a></li>
-<li><a href="faq_net6.htm#41"><b>Netmonitor pokazuje inn± pojemno¶æ baterii ni¿ informacja na niej...</b></a></li>
+<li><a href="faq_net0.htm#1"><b>What is it ?</b></a></li>
+<li><a href="faq_net0.htm#2"><b>Do I need it ?</b></a></li>
+<li><a href="faq_net0.htm#3"><b>Does my phone use more power with NetMonitor enabled ?</b></a></li>
+<li><a href="faq_net0.htm#4"><b>How to activate it ?</b></a></li>
+<li><a href="faq_net0.htm#5"><b>Which NetMonitor version can be activated in my phone ?</b></a></li>
+<li><a href="faq_net0.htm#6"><b>Does NetMonitor activation void warranty ?</b></a></li>
+<li><a href="faq_net0.htm#7"><b>NetMonitor menu in my phone has different number than 10. Is it normal ?</b></a></li>
+<li><a href="faq_net0.htm#8"><b>NetMonitor menu in my phone has 11 number, hovewer previous position has 9 number. Is it normal ?</b></a></li>
+<li><a href="faq_net0.htm#9"><b>How to use it ?</b></a></li>
+<li><a href="faq_net0.htm#10"><b>Can I damage my phone ?</b></a></li>
+<li><a href="faq_net1.htm#11"><b>Glossary</b></a></li>
+<li><a href="faq_net2.htm#12"><b>Description of the individual tests</b></a></li>
+<li><a href="faq_net6.htm#13"><b>You can also use a program...</b></a></li>
+<li><a href="faq_net6.htm#14"><b>Can I use NetMonitor without SIM card inserted, without PIN number entered or when SIM card is not active ?</b></a></li>
+<li><a href="faq_net6.htm#15"><b>How can I disable NetMonitor ?</b></a></li>
+<li><a href="faq_net6.htm#16"><b>Do I need to disable NetMonitor before sending my phone to the service ?</b></a></li>
+<li><a href="faq_net6.htm#17"><b>Is it possible to re-activate NetMonitor after disabling it ?</b></a></li>
+<li><a href="faq_net6.htm#18"><b>Is NetMonitor available in analog Nokia phones ?</b></a></li>
+<li><a href="faq_net6.htm#19"><b>Does NetMonitor allow to use phone like broadcast station ?</b></a></li>
+<li><a href="faq_net6.htm#20"><b>I don't have all described tests in my phone. Why ? Can I increase their number ?</b></a></li>
+<li><a href="faq_net6.htm#21"><b>Does NetMonitor allow to identify place, where is my interlocutor ?</b></a></li>
+<li><a href="faq_net6.htm#22"><b>Does NetMonitor allow to identify place, where am I ?</b></a></li>
+<li><a href="faq_net6.htm#23"><b>What are NetMonitor codes ?</b></a></li>
+<li><a href="faq_net6.htm#24"><b>Is it the truth, that in phones with additional hardware changing frequency band NetMonitor doesn't work correct ?</b></a></li>
+<li><a href="faq_net6.htm#25"><b>Where can I find description of FBUS/MBUS protocol and commands connected with NetMonitor ?</b></a></li>
+<li><a href="faq_net6.htm#26"><b>I have non existing networks on the list of forbidden networks...</b></a></li>
+<li><a href="faq_net6.htm#27"><b>How to check frequency band (900 or 1800 Mhz), where phone work in this moment ?</b></a></li>
+<li><a href="faq_net6.htm#28"><b>Can I use DLR-2/DLR-3 cables for activating netmonitor ?</b></a></li>
+<li><a href="faq_net6.htm#29"><b>Can I activate netmonitor using Init File Editor (Nokia 9110) ?</b></a></li>
+<li><a href="faq_net6.htm#30"><b>Can I force phone to use one frequency band (900 or 1800 Mhz) only ?</b></a></li>
+<li><a href="faq_net6.htm#31"><b>How to change settings in tests ?</b></a></li>
+<li><a href="faq_net6.htm#32"><b>My phone has very short snandby time - it is possible to see the reason of it ?</b></a></li>
+<li><a href="faq_net6.htm#33"><b>Is netmonitor available in English version only ?</b></a></li>
+<li><a href="faq_net6.htm#Literatura"><b>Information sources</b></a></li>
+<li><a href="faq_net6.htm#35"><b>Additional information</b></a></li>
+<li><a href="faq_net6.htm#36"><b>Does using/activating netmonitor cost anything ?</b></a></li>
+<li><a href="faq_net6.htm#37"><b>Does using netmonitor is legall ?</b></a></li>
+<li><a href="faq_net6.htm#38"><b>Which entries on SIM card are used in netmonitor tests ?</b></a></li>
+<li><a href="faq_net6.htm#39"><b>Can I activate netmonitor in 3310 using soft working with 3210 ?</b></a></li>
+<li><a href="faq_net6.htm#40"><b>After activating netmonitor/BTS TEST my phone can't find network...</b></a></li>
+<li><a href="faq_net6.htm#41"><b>Netmonitor shows different battery capacity than info on it...</b></a></li>
+<li><a href="faq_net6.htm#42"><b>NetMonitor in Nokia 6310, 8310,...</b></a></li>
 </ol>
 <hr size="2" noshade width="60%" align="center" style="color: #004080">
 </font>
 
 <p><a NAME="Menu58"></a><b>Test 58</b>
 
+<p>
 <table BORDER CELLSPACING=0 CELLPADDING=0 >
 <tr>
 <td><tt>
@@ -85,6 +87,7 @@
 
 <p><a NAME="Menu59"></a><b>Test 59</b>
 
+<p>
 <table BORDER CELLSPACING=0 CELLPADDING=0 >
 <tr>
 <td><tt>
@@ -125,23 +128,22 @@ counters</b></tt></td>
 </tr>
 </table>
 
-<p>Przez bezpo¶rednie wej¶cie do tego menu mo¿esz wyzerowaæ liczniki od
-<b><a href="#Menu41">testu 41</a></b> do <b><a href="#Menu43">testu 43</a></b>
-i od <b><a href="#Menu61">testu 61</a></b> do <b><a href="#Menu66">testu 66</a></b>.
+<p>By direct enter to this test you can reset counters from 
+<b><a href="#Menu41">test 41</a></b> to <b><a href="#Menu43">test 43</a></b> and from
+<b><a href="#Menu61">test 61</a></b> to <b><a href="#Menu66">test 66</a></b>.
 
 <p>
 <table CELLSPACING=0 CELLPADDING=0 WIDTH="100%" >
 <tr>
 <td><img SRC="../tip.gif" height=36 width=27></td>
 
-<td>Je¿eli wyzerujesz te liczniki na pocz±tku ka¿dego miesi±ca, to bêdziesz
-móg³(mog³a) porównaæ ilo¶æ wys³anych <a href="http://www.fkn.pl/faqs/smsfaq.html">SMSów</a>
-(<b><a href="#Menu65">test 65</a></b>) i rozmów (<b><a href="#Menu63">test 63</a></b>)
-z Twoim rachunkiem telefonicznym.
-Dodatkowo (w niektórych kartach prepaid - np. Tak-Tak) pobierana jest z góry
-op³ata za wys³anie pewnej ilo¶ci <a href="http://www.fkn.pl/faqs/smsfaq.html">SMSów</a>
-- je¿eli wyzerujesz te liczniki na pocz±tku "cyklu", bêdzie wiedzieæ, kiedy
-z Twojego konta zostan± odjête kolejne pieni±dze...
+<td>If you reset these counters at the beginning of each month, you can compare
+the number of sent SMSes (<b><a href="#Menu65">test 65</a></b>)
+and made calls (<b><a href="#Menu63">test 63</a></b>) with your billing.
+Additionaly (in some prepaid cards - for example, in Polish Tak-Tak)
+you pay to your operator for few SMS messages (in this example 10), when you
+send first of them. When you will clear these counters in start of this period
+(before first SMS), you will know, when another money will be taken from your account...
 </td>
 </tr>
 </table>
@@ -178,22 +180,23 @@ CellReselCtr<br>
 <p>
 <ul>
 <li>
-aaaa - licznik (szesnastkowy) zliczaj±cy komunikaty MDI_NO_PSW_FOUND
-<a href="faq_net1.htm#DSP">DSP</a></li>
+aaaa - hexadecimal counter of MDI_NO_PSW_FOUND messages from
+<a href="faq_net1.htm#DSP">DSP</a></li>
 
 <li>
-bbbb - licznik (dziesiêtny) prób zmierzenia synchronizacji. Je¿eli przekroczy
-9999, pokazywane s± cztery x.</li>
+bbbb - decimal counter for synchronization measurement attempts.
+If value is over 9999 then four x are shown
+</li>
 
 <li>
-cccc - licznik (szesnastkowy) powtórnych wyborów komórki</li>
+cccc - hexadecimal counter for cell reselections</li>
 </ul>
 
-<p>Warto¶ci liczników s± zapamiêtywane przy wy³±czaniu telefonu. Mo¿esz je
-wyzerowaæ u¿ywaj±c <b><a href="#Menu60">testu 60</a></b>. S± one zerowane,
-gdy osi±gn± warto¶ci maksymalne.
+<p>Counters values are saved in EEPROM memory, when phone is disabled.
+You can reset them using <b><a href="#Menu60">test 60</a></b>. They're reset too, when
+they exceed their maximal values.
 
-<p>W telefonach dualnych pojawi siê takie <b>test 61</b>:
+<p>In dual phones you will have such <b>test 61</b>:
 
 <p>
 <table CELLSPACING=0 CELLPADDING=0 WIDTH="100%" >
@@ -225,43 +228,42 @@ reselG>D D>G</b></tt></td>
 <p>
 <ul>
 <li>
-aaaaa - dla GSM 900: licznik (dziesiêtny) zliczaj±cy komunikaty MDI_NO_PSW_FOUND
-z <a href="faq_net1.htm#DSP">DSP</a></li>
+aaaaa - for GSM 900: counter (decimal) for MDI_NO_PSW_FOUND messages
+from <a href="faq_net1.htm#DSP">DSP</a></li>
 
 <li>
-bbbb - dla GSM 1800: licznik (dziesiêtny) zliczaj±cy komunikaty MDI_NO_PSW_FOUND
-z <a href="faq_net1.htm#DSP">DSP</a></li>
+bbbb - for GSM 1800: counter (decimal) for MDI_NO_PSW_FOUND
+from <a href="faq_net1.htm#DSP">DSP</a></li>
 
 <li>
-ccccc - dla GSM 900: licznik (dziesiêtny) prób zmierzenia synchronizacji.
-Je¿eli przekroczy 99999, pokazywane jest piêæ x.</li>
+ccccc - for GSM 900: counter (decimal) for
+synchronization measurement attempts.
+If this value is over 99999, then five x are shown.</li>
 
 <li>
-ddddd - dla GSM 1800: licznik (dziesiêtny) prób zmierzenia synchronizacji.
-Je¿eli przekroczy 99999, pokazywane jest piêæ x.</li>
+ddddd - for GSM 1800: counter (decimal) for
+synchronization measurement attempts.
+If this value is over 99999, then five x are shown.
+</li>
 
 <li>
-eeeee - licznik (dziesi±tkowy) powtórnych wyborów komórki GSM 900 - GSM
-900</li>
+eeeee - counter (decimal) for cell reselections GSM 900 - GSM 900</li>
 
 <li>
-fffff - licznik (dziesi±tkowy) powtórnych wyborów komórki GSM 1800 - GSM
-1800</li>
+fffff - counter (decimal) for cell reselections GSM 1800 - GSM 1800</li>
 
 <li>
-ggggg - licznik (dziesi±tkowy) powtórnych wyborów komórki GSM 900 - GSM
-1800</li>
+ggggg - counter (decimal) for cell reselections GSM 900 - GSM 1800</li>
 
 <li>
-hhhhh - licznik (dziesi±tkowy) powtórnych wyborów komórki GSM 1800 - GSM
-900</li>
+hhhhh - counter (decimal) for cell reselections GSM 1800 - GSM 900</li>
 </ul>
 
-<p>Warto¶ci liczników s± zapamiêtywane przy wy³±czaniu telefonu. Mo¿esz je
-wyzerowaæ u¿ywaj±c <b><a href="#Menu60">testu 60</a></b>. S± one zerowane,
-gdy osi±gn± warto¶ci maksymalne.
+<p>Counters values are saved in EEPROM memory, when phone is disabled.
+You can reset them using <b><a href="#Menu60">test 60</a></b>.
+They're reset too, when they exceed their maximal values. 
 
-<p>W Nokii 6210/8210:
+<p>In Nokia 6210/8210:
 
 <p>
 <table CELLSPACING=0 CELLPADDING=0 WIDTH="100%" >
@@ -294,8 +296,7 @@ RM Mon TOuts
 </tr>
 </table>
 
-<p>Natomiast w Nokii 3310 pomoc wygl±da jak pomoc w modelu 6210/8210, natomiast warto¶ci
-mniej wiêcej tak:
+<p>In Nokia 3310 help is like in models 6210/8210, but displayed values are different:
 
 <p>
 <table BORDER CELLSPACING=0 CELLPADDING=0 >
@@ -309,7 +310,7 @@ mniej wi
 </tr>
 </table>
 
-<p>W Nokii 6185/6188 jest on jeszcze inny:
+<p>In Nokia 6185/6188 it's different:
 
 <p>
 <table BORDER CELLSPACING=0 CELLPADDING=0 >
@@ -324,9 +325,9 @@ ccccccc
 </table>
 
 <ul>
-<li>aaaaaaaaaaaa - wersja oprogramowania telefonu</li>
-<li>bbbbbbbbbb - data oprogramowania telefonu</li>
-<li>ccccccc - oznaczenie kodowe telefonu (NSD-3AX)</li>
+<li>aaaaaaaaaaaa - version of phone's firmware</li>
+<li>bbbbbbbbbb - date of phone firmware</li>
+<li>ccccccc - phone's codename (NSD-3AX)</li>
 </ul>
 
 <p>
@@ -334,9 +335,8 @@ ccccccc
 <tr>
 <td><img SRC="../tip.gif" height=36 width=27></td>
 
-<td>Ten telefon pokazuje te informacje równie¿ po u¿yciu kodu <b>*#837#</b>.
-Je¿eli chcesz siê wiêcej dowiedzieæ o wewnêtrznym oprogramowaniu telefonów Nokia
-(ró¿nice, wersje, itd.), kliknij <a href="../firmware/firmware.htm">tutaj</a>.</td>
+<td>This phone displays this info too, when you enter <b>*#837#</b> code. For more
+information about firmware in Nokia phones (including 6185/6188 models) click <a href="../firmware/firmware.htm">here</a>.</td>
 </tr>
 </table>
 
@@ -372,28 +372,29 @@ BCCHExtMeAtm</b></tt></td>
 <p>
 <ul>
 <li>
-aaaa - ilo¶æ prób pomiarów PSW w s±siednich komórkach</li>
+aaaa - counter for neighbour PSW measurement attempts</li>
 
 <li>
-bbbb - ilo¶æ prób zmierzenia synchronizacji w s±siednich komórkach</li>
+bbbb - counter for neighbour synchronization measurement attempts</li>
 
 <li>
-cccc - ilo¶æ prób pomiarów kana³ów
-<a href="faq_net2.htm#BCCH">BCCH</a>
-(tzn. jako¶ci transmisji z nimi) w s±siednich komórkach (patrz opis <a href="faq_net1.htm#C1">C1</a>)</li>
+cccc - counter for neighbour cells <a href="faq_net2.htm#BCCH">BCCH</a>
+(quality of trasmission with them) measurement attempts
+(see description <a href="faq_net1.htm#C1">C1</a>)</li>
 
 <li>
-dddd - ilo¶æ prób rozszerzonych pomiarów kana³ów <a href="faq_net2.htm#BCCH">BCCH</a>
-(tzn. jako¶ci transmisji z nimi) w s±siednich komórkach (patrz opis <a href="faq_net1.htm#C1">C1</a>)</li>
+dddd - counter for extended neighbour cells <a href="faq_net2.htm#BCCH">BCCH</a>
+(quality of trasmission with them) measurement attempts
+(see description <a href="faq_net1.htm#C1">C1</a>)</li>
 </ul>
 
-<p>Warto¶ci liczników s± zapamiêtywane przy wy³±czaniu telefonu. Mo¿esz je
-wyzerowaæ u¿ywaj±c <b><a href="#Menu60">testu 60</a></b>. S± one zerowane,
-gdy osi±gn± warto¶ci maksymalne.
+<p>Counters values are saved in EEPROM memory, when phone is disabled.
+You can reset them using <b><a href="#Menu60">test 60</a></b>.
+They're reset too, when they exceed their maximal values. 
 
-<p>W Nokii 3310 warto¶ci liczników s± piêciocyfrowe i wyrównane do prawej strony ekranu...
+<p>In Nokia 3310 each counter is 5-digit number. Values are also aligned to right.
 
-<p>W Nokii 6185/6188 ten test wygl±da inaczej:
+<p>In Nokia 6185/6188 this test looks different:
 
 <p>
 <table BORDER CELLSPACING=0 CELLPADDING=0 >
@@ -438,57 +439,59 @@ AllMT&nbsp;&nbsp; MTOK<br>
 <p>
 <ul>
 <li>
-aa - tutaj znajdziesz przyczynê zakoñczenia ostatniego po³±czenia (parametr
-ten jest równie¿ podawany w <b><a href="faq_net2.htm#Menu2">te¶cie 2</a></b>
-i <b><a href="faq_net4.htm#Menu39">te¶cie 39</a></b> (w tym ostatnim menu
-znajdziesz wyja¶nienia - patrz opis pierwszego parametru))</li>
+aa - you will find reason of last call release here (it's displayed in
+<b><a href="faq_net2.htm#Menu2">test 2</a></b>
+and <b><a href="faq_net4.htm#Menu39">test 39</a></b> too (in this
+last test you will find more explanations - see description of first
+parameter))
+</li>
 
 <li>
-bb - kolejna informacja o zakoñczeniu ostatniego po³±czenia:
+bb - another information about end of last call:
 
 <p>
 <ul>
 <li>
-UN: nieznana (przyk³adowo: od w³±czenia Twojego telefonu nie by³y wykonywane
-¿adne po³±czenia)</li>
+UN: unknown (for example: you didn't make any calls after enabling phone)
+</li>
 
 <li>
-IN: przyczyna wewnêtrzna (przyk³adowo: w³±czy³e¶(a¶) w <b><a href="faq_net3.htm#Menu17">te¶cie 17</a></b>
-test <a href="faq_net1.htm#BTS">BTSa</a>, telefon nie odnalaz³
-sieci na podanym kanale, a Ty próbowa³e¶(a¶) wykonaæ po³±czenie)</li>
+IN: internal reason (for example: you enabled in
+<b><a href="faq_net3.htm#Menu17">test 17</a></b> <a href="faq_net1.htm#BTS">BTS</a> test,
+phone didn't find network on given channel and you tried to make call)
+</li>
 
 <li>
-MT: przerwanie przez sieæ</li>
+MT: broken by network</li>
 
 <li>
-MO: nast±pi³o roz³±czenie (od³o¿enie s³uchawki) z którego¶ telefonu</li>
+MO: disconnection (ending call) from one of the phones</li>
 </ul>
 <p>
 </li>
 
 <li>
-ccc - ilo¶æ wybieranych po³±czeñ z Twojego telefonu</li>
+ccc - how many times you tried to make outgoing call from your phone
+</li>
 
 <li>
-ddd - ilo¶æ poprawnie zrealizowanych po³±czeñ wychodz±cych z Twojego telefonu
-(tzn. ile razy dodzwoni³e¶(a¶) siê do Twojego rozmówcy). W Nokii 3310 równie¿
-w <a href=faq_net6.htm#Menu132>te¶cie 132</a>.</li>
+ddd - number of succesfull outgoing calls (how many times calls were really
+realised)</li>
 
 <li>
-eee - ilo¶æ wszystkich rozmów przychodz±cych</li>
+eee - number of all incoming calls (missed too)</li>
 
 <li>
-fff - ilo¶æ odebranych rozmów przychodz±cych. W Nokii 3310 równie¿
-w <a href=faq_net6.htm#Menu132>te¶cie 132</a>.</li>
+fff - number of received incoming calls</li>
 </ul>
 
-<p>Po osi±gniêciu warto¶ci maksymalnej liczniki s± zerowane (mo¿esz to te¿
-zrobiæ w <b><a href="#Menu60">te¶cie 60</a></b>). Ich warto¶ci (od licznika
-ccc w³±cznie) s± zapamiêtywane przy wy³±czaniu telefonu.
+<p>When counters exceed their maximal values, they're reset (you can make it
+using <b><a href="#Menu60">test 60</a></b> too). Their values (it's
+about ccc and next counters only) are written to EEPRM, when phone is disabled.
 
-<p>W Nokii 3310 parametry s± nieco poprzesuwane w stosunku do rysunku powy¿ej.
+<p>In Nokia 3310 parameters are a little different located on the screen (when compare to info above).
 
-<p>W Nokii 6185/6188 ten test wygl±da inaczej:
+<p>In Nokia 6185/6188 this test looks different:
 
 <p>
 <table BORDER CELLSPACING=0 CELLPADDING=0 >
@@ -505,8 +508,9 @@ C2L 03
 </table>
 
 <p><a NAME="Menu64"></a><b>Test 64</b>
-<br>Zawiera m.in. informacje, ile razy Twój telefon informowa³ sieæ o swoim
-po³o¿eniu (patrz równie¿ opis <b><a href="faq_net3.htm#Menu10">test 10</a></b>)
+<br>It contains, for example, information, how many times you phone
+informed network about position (see description of
+<b><a href="faq_net3.htm#Menu10">test 10</a></b> too)
 
 <p>
 <table CELLSPACING=0 CELLPADDING=0 WIDTH="100%" >
@@ -537,57 +541,61 @@ PFai PL PLOK<br>
 <p>
 <ul>
 <li>
-aaa - kod b³êdu (zerowany po w³±czeniu telefonu) przy ostatnim b³êdnym
-<a href="faq_net1.htm#LocationUpdate">Location
-Update</a> (tzn. zmienia siê tylko wtedy, gdy gdy wyst±pi³ b³±d przy jego
-wykonywaniu). Znajdziesz go równie¿ w <b><a href="faq_net4.htm#Menu39">te¶cie 39</a></b>
-- jest to warto¶æ parametru MM (tam podane s± równie¿ warto¶ci
-kodów z wyja¶nieniami).</li>
+aaa - error code (reset after enabling phone) of last incorrect
+<a href="faq_net1.htm#LocationUpdate">Location Update</a>
+(it changes only then, when some error happened during it).
+It can be found in <b><a href="faq_net4.htm#Menu39">test 39</a></b> too
+- it's value of MM parameter (there are code values with their description too)
+</li>
 
 <li>
-bbb - ile razy próbowano wykonaæ <a href="faq_net1.htm#LocationUpdate">Location
-Update</a></li>
+bbb - how many times phone tried to make
+<a href="faq_net1.htm#LocationUpdate">Location Update</a></li>
 
 <li>
-ccc - ilo¶æ prób wykonania <a href="faq_net1.htm#LocationUpdate">Location
-Update</a> zakoñczonych sukcesem</li>
+ccc - how many times attempts of making
+<a href="faq_net1.htm#LocationUpdate">Location Update</a>
+were successfull</li>
 
 <li>
-ddd - b³±d przy ostatnim <a href="faq_net1.htm#PLU">PLU</a> lub <a href="faq_net1.htm#IMSIattach">IMSI
-Attach</a> (17 oznacza prawdopodobnie zajêto¶æ sieci)</li>
+ddd - error during last <a href="faq_net1.htm#PLU">PLU</a> or <a href="faq_net1.htm#IMSIattach">IMSI Attach</a>
+(17 means probably network busy) 
+</li>
 
 <li>
-eee - ile razy telefon próbowa³ wykonaæ <a href="faq_net1.htm#PLU">PLU</a> lub
-<a href="faq_net1.htm#IMSIattach">IMSI Attach</a></li>
+eee - how many times phone tried to make <a href="faq_net1.htm#PLU">PLU</a>
+or <a href="faq_net1.htm#IMSIattach">IMSI Attach</a></li>
 
 <li>
-fff - ilo¶æ udanych prób wykonania <a href="faq_net1.htm#PLU">PLU</a> lub
-<a href="faq_net1.htm#IMSIattach">IMSI Attach</a></li>
+fff - how many times attemps of making <a href="faq_net1.htm#PLU">PLU</a>
+or <a href="faq_net1.htm#IMSIattach">IMSI Attach</a> were successfull</li>
 </ul>
 
-<p>Warto¶ci tych liczników (z wyj±tkiem kodów b³êdów) s± zapamiêtywane przy
-wy³±czaniu telefonu. Mo¿esz je wyzerowaæ w <b><a href="#Menu60">te¶cie 60</a></b>
-(jest robione równie¿, gdy osi±gn± warto¶ci maksymalne).
+<p>Values of these counters (excluding error codes) are stored in EEPROM,
+when phone is disabled. You can reset them using
+<b><a href="#Menu60">test 60</a></b> (it's made too,
+when they exceed their maximal values).
 
-<p>W Nokii 3310 parametry s± nieco poprzesuwane w stosunku do rysunku powy¿ej.
+<p>In Nokia 3310 parameters are a little different located on the screen (when compare to info above).
 
 <p>
 <table CELLSPACING=0 CELLPADDING=0 >
 <tr>
 <td><img SRC="../tip.gif" height=36 width=27 align=LEFT></td>
 
-<td>Je¿eli nie wy³±czasz telefonu i jeste¶ ca³y czas w zasiêgu swojej sieci,
-to z tego menu mo¿esz siê dowiedzieæ (w przybli¿eniu), jak d³ugo jest w³±czony
-(musisz w
-<b><a href="faq_net3.htm#Menu10">te¶cie 10</a></b> sprawdziæ,
-co ile jest zerowany licznik T3212 (parametr ccc) i pomno¿yæ tamten czas
-przez parametr eee z tego menu). Mo¿esz u¿yæ do tego celu równie¿ licznika
-z <b><a href="#Menu82">testu 82</a></b> (jest dok³adniejszy, ale wymaga
-w³±czenia którego¶ testu) albo menu serwisowego (Nokia 6130 lub 3210).</td>
+<td>If you don't disable your phone and all time you are in
+your network time range, in this menu you will find information (in
+approximation), how long it's enabled (check in
+<b><a href="faq_net3.htm#Menu10">test 10</a></b>, how often
+is reset T3212 counter (ccc parameter) and multiply that time by
+eee parameter from this menu). You can use to make it counter from
+<b><a href="#Menu82">test 82</a></b> too (it's more precise, but require
+enabling some test) or service menu (in phones like Nokia 6130 or 3210).
+</td>
 </tr>
 </table>
 
-<p>W Nokii 6185/6188 ten test wygl±da inaczej:
+<p>In Nokia 6185/6188 this test looks different:
 
 <p>
 <table BORDER CELLSPACING=0 CELLPADDING=0 >
@@ -604,8 +612,7 @@ C4L 03
 </table>
 
 <p><a NAME="Menu65"></a><b>Test 65</b>
-<br>Menu zwi±zane z wiadomo¶ciami <a href="http://www.fkn.pl/faqs/smsfaq.html">SMS</a>
-(raporty nie s± uwzglêdniane)
+<br>Test connected with SMS messages (without reports)
 
 <p>
 <table CELLSPACING=0 CELLPADDING=0 WIDTH="100%" >
@@ -637,177 +644,173 @@ SMS counters</b></tt></td>
 <p>
 <ul>
 <li>
-aaa - numer b³êdu przy wysy³aniu ostatniego <a href="http://www.fkn.pl/faqs/smsfaq.html">SMSa</a>
-(zerowany po w³±czeniu telefonu):
+aaa - error code during sending last SMS message (reset after enabling phone):
 
 <p>
 <ul>
 <li>
-<tt>&nbsp;&nbsp;1</tt>: 'Nie ma takiego numeru' ('Number not in use')</li>
+<tt>&nbsp;&nbsp;1</tt>: 'Number not in use'</li>
 
 <li>
-<tt>&nbsp;21</tt>: 'Wys³anie nieudane tym razem' ('Message not sent this
-time'). B³±d pojawiaj±cy siê przy próbie wys³ania wiadomo¶ci z Tak-Taka
-(gdy nie mo¿na jeszcze by³o ich by³o z niego wysy³aæ - przed 28.04.2000),
-wysy³aniu pod b³êdny numer (dobre SMSC), przez SMSC zablokowane na
-Twoj± sieæ albo przy próbie wys³ania SMS z numerem alfanumerycznym
-przez SMSC nieobs³uguj±ce tego formatu</li>
+<tt>&nbsp;21</tt>: 'Message not sent this time'. This error happens, when
+you try to send messages from prepaid card without this possibility,
+when you send message for incorrect number (SMSC is correct), SMSC is blocked
+on your network or when you send SMS with alphanumeric number over SMSC, which
+doesn't support it.
+</li>
 
 <li>
-<tt>&nbsp;28</tt>: 'Nie ma takiego numeru' ('Number not in use')</li>
+<tt>&nbsp;28</tt>: 'Number not in use'</li>
 
 <li>
-<tt>&nbsp;38</tt>: 'Wys³anie nieudane tym razem' ('Message not sent this
-time'). B³±d przy wysy³aniu wiadomo¶ci przez SMSC zablokowane na Twoj±
-sieæ.</li>
+<tt>&nbsp;38</tt>: 'Message not sent this time'. Error with sending message during SMSC blocked on your network.
+</li>
 
 <li>
-<tt>&nbsp;42</tt>: prawdopodobnie b³±d ten pojawia siê, gdy u¿yte SMSC
-jest przeci±¿one (za du¿o wys³anych na raz wiadomo¶ci przez u¿ytkowników)
-i nie mo¿e wys³aæ Twojej wiadomo¶ci</li>
+<tt>&nbsp;42</tt>: probably phone shows this error, when used SMSC
+is overworked (too many sent messages in the same time) and can't send
+your message in this moment
+</li>
 
 <li>
-<tt>&nbsp;50</tt>: "Sprawd¼ us³ugi operatora" ("Check operator services").
-B³±d pojawiaj±cy siê przy próbie wys³ania wiadomo¶ci z Tak-Taka
-(gdy nie mo¿na jeszcze by³o ich by³o z niego wysy³aæ - przed 28.04.2000).
-</li>
+<tt>&nbsp;50</tt>: 'Check operator services'. Error displayed after sending
+SMS from some prepaid cards without this possibility.</li>
 
 <li>
 <tt>&nbsp;96</tt>: 'Nieudane wys³anie wiadomo¶ci' ('Message sending failed').
-Przyczyn± jest niew³a¶ciwy numer SMSC (+1)</li>
+The reason is wrong number of SMSC (+1).
+</li>
 
 <li>
-<tt>111</tt>: 'Nieudane wys³anie wiadomo¶ci' ('Message sending failed').
-Przyczyn± jest niew³a¶ciwy numer, pod który wysy³a³e¶ wiadomo¶æ (albo numer
-SMSC)</li>
+<tt>111</tt>: 'Message sending failed'.
+The reason is wrong target number or wrong number of SMSC
+</li>
 
 <li>
-<tt>166</tt>: 'Nieudane wys³anie wiadomo¶ci' ('Message sending failed').
-Pokazuje siê przy b³êdnym numerze SMSC albo SMSC zablokowanym na Twoj±
-sieæ.</li>
+<tt>166</tt>: 'Message sending failed'.
+Displayed when SMSC number was wrong or SMSC is blocked for your network.
+</li>
 
 <li>
-<tt>169</tt>: 'Nieudane wys³anie wiadomo¶ci' ('Message sending failed').
-Brak pieniêdzy przy karcie prepaid.</li>
+<tt>169</tt>: 'Message sending failed'.
+No money on prepaid account.</li>
 
 <li>
-<tt>178</tt>: 'Nieudane wys³anie wiadomo¶ci' ('Message sending failed').
-B³±d pojawiaj±cy siê przy próbie wys³ania wiadomo¶ci z Tak-Taka
-(gdy nie mo¿na tego jeszcze by³o z niego robiæ - przed 28.04.2000).</li>
+<tt>178</tt>: 'Message sending failed'. Error displayed after sending
+SMS from some prepaid cards without this possibility.</li>
 
 <li>
-<tt>252</tt>: 'Nieudane wys³anie wiadomo¶ci' ('Message sending failed').
-Pojawia siê, gdy zosta³ wy³±czony nadajnik telefonu w <b><a href="faq_net4.htm#Menu45">te¶cie 45</a></b>
-albo telefon nie móg³ znale¼æ sieci (w te¶cie <a href="faq_net1.htm#BTS">BTSa</a>
-z <b><a href="faq_net3.htm#Menu17">testu 17</a></b> zosta³ ustawiony
-taki kana³).</li>
+<tt>252</tt>: 'Message sending failed'. Displayed, when phone's transmitter
+was disabled in <b><a href="faq_net4.htm#Menu45">test 45</a></b> or
+phone can't find network (when <a href="faq_net1.htm#BTS">BTS test</a>
+in <b><a href="faq_net3.htm#Menu17">test 17</a></b> was enabled on channel
+without network)</li>
 
 <li>
-<tt>253</tt>: 'Nieudane wys³anie wiadomo¶ci' ('Message sending failed'). Pokazuje
-siê przy b³êdnym numerze SMSC.</li>
+<tt>253</tt>: 'Message sending failed'. Displayed, when SMSC number was wrong.</li>
 </ul>
 <p>
 </li>
 
 <li>
-bbb - ilo¶æ prób wys³ania <a href="http://www.fkn.pl/faqs/smsfaq.html">SMSów</a>.
-Nale¿y pamiêtaæ, Â¿e raport o oczekiwaniu SMSa na dostarczenie
-(pending albo oczekuje) nie jest nigdzie
-wysy³any z telefonu i uwzglêdniany w tym parametrze
-(natomiast informacja o jego (nie)dostarczeniu
-przes³ana z SMSC ju¿ tak - patrz opis parametru eee i fff). Przyk³adowo:
-w opcjach telefonu zaznaczy³e¶, Â¿e chcesz otrzymywaæ raporty. Wysy³asz SMSa
-- telefon zwiêksza warto¶æ tego parametru. Je¿eli pokaza³, Â¿e wys³anie jest udane,
-zwiêksza równie¿ warto¶æ parametru ccc o 1 i zapisuje raport dotycz±cy oczekiwania
-na dostarczenie wys³anego SMSa. Je¿eli SMSC go dostarczy³o (lub nie) i wysy³a
-o tym raport (Nieudane/Failed lub Delivered/Dostarczono), zwiêksza siê warto¶æ parametru eee.
-Je¿eli odebranie tego raportu
-powiedzie siê, zwiêksza siê o 1 równie¿ warto¶æ parametru fff (telefon sprawdza
-teraz wszystkie zapisane raporty. W wiêkszo¶ci Nokii: je¿eli w którym¶ z
-raportów dotycz±cym oczekiwania na dostarczenie zgadza siê numer SMSC i
-numer, pod który wysy³ano wiadomo¶æ, telefon kasuje tamten i zapisuje na jego miejsce
-otrzymany).
+bbb - number of SMS sending attempts.
+You should remember, that report about waiting for delivering SMS (pending)
+isn't sent from your phone and is not taken into consederation in this parameter
+(but information about success/defeat in its' delivering is taken - see description
+for eee and fff parameters). For example: you enabled in phone's menu function
+connected with SMS raports. You send SMS message now - phone increases this parameter.
+If it showed, that sending of message was successfull, increases value of ccc
+parameter too and phone saves report waiting for delivering sent SMS.
+If SMSC delivered it (or not) and sents about it report (Failed or Delivered),
+value of eee parameter increases too. If receiving or report was successfull,
+increases value of fff parameter too (phone checks all saved reports now.
+In majority of Nokia phones: if in some report with "pending" text SMSC and number,
+where SMS was sent, is the same to SMSC and number from received report,
+phone deletes "pending" report and saves received report into this place).
 </li>
 
 <li>
-ccc - ilo¶æ poprawnie wys³anych <a href="http://www.fkn.pl/faqs/smsfaq.html">SMSów</a>
-(tzn. takich, które zosta³y zaakceptowane przez u¿yte centrum SMS - tylko
-za nie zap³aci³e¶(a¶)). Uwagi dotycz±ce tego parametru s± podane przy opisie
-poprzedniego.</li>
+ccc - number of succesfull sent SMS messages (which were accepted by used
+SMSC and you will pay for them). For more info see description of previous
+parameter.
+</li>
 
 <li>
-ddd - numer b³êdu przy otrzymywaniu ostatniego <a href="http://www.fkn.pl/faqs/smsfaq.html">SMSa</a>
-(zerowany po w³±czeniu telefonu):
+ddd - code of error during receiving last SMS message (reset, when phone is
+enabled):
 
 <p>
 <ul>
 <li>
-<tt>22</tt>: pe³na pamiêæ przeznaczona na wiadomo¶ci (telefon próbowa³
-przyj±æ <a href="http://www.fkn.pl/faqs/smsfaq.html">SMSa</a> - zwiêkszy³a
-siê warto¶æ licznika eee, nie zmieni³a siê warto¶æ fff). Informuje o tym
-równie¿ mrugaj±ca koperta na samym górze wy¶wietlacza, a telefon pokaza³
-równie¿ oddzielny komunikat 'Brak miejsca na wiêcej wiadomo¶ci' ('No space
-for new messages'). Je¿eli zapisujesz wiadomo¶ci na karcie SIM, ich Â³Â±czna
-ilo¶æ w 'Skrzynce nadawczej' ('Outbox') i 'Skrzynce odbiorczej' ('Inbox')
-zale¿y w³a¶nie od niej (w ró¿nych sieciach komórkowych oferowane s± karty
-SIM z ró¿n± ilo¶ci± mo¿liwych do zapisania wiadomo¶ci <a href="http://www.fkn.pl/faqs/smsfaq.html">SMS</a>
-- dla kart <a href="http://www.plusgsm.pl/">Plusa</a> wynosi ona 10 lub 25, <a href="http://www.eragsm.pl/">Ery</a>
-15, a <a href="http://www.idea.centertel.pl/">Idei</a> 30). Nie mo¿esz
-wiêc dopisywaæ nowych wiadomo¶ci (komunikat 'Pe³na pamiêæ wiadomo¶ci' ('Message
-memory full')). Je¿eli nie wykasujesz której¶ z ju¿ zapisanych wiadomo¶ci,
-mo¿esz utraciæ te przychodz±ce (je¿eli sieæ nie dostarczy ich przez czas
-okre¶lony przez ich nadawcê, zostan± bezpowrotnie wykasowane).</li>
+<tt>22</tt>: full memory for SMS messages (phone tried to receive message
+- increased value of eee counter, fff value didn't change). Information about
+it is on the top of phone's screen too (blinking envelope) and phone showed
+'No space for new messages' message. When you save messages on SIM card,
+their sum in 'Outbox' and 'Inbox' depends on it (card). The most often, different
+networks gives SIM card with different space for SMS messages (for example,
+for Polish <a href="http://www.plusgsm.pl/">Plus GSM</a> it's 10, for
+<a href="http://www.eragsm.pl/">Era GSM</a>
+15 and for <a href="http://www.idea.centertel.pl/">Idea</a> 30). When you don't have
+space for messages, you can't add new (message 'Message memory full').
+You have to delete one of saved messages there - when you won't make it,
+you can loose some incoming (remember, that sender of SMS message can set time,
+when network will try to delivery it; after it it will be deleted and you won't
+be able to receive it !).
+</li>
 </ul>
 <p>
 </li>
 
 <li>
-eee - ilo¶æ prób odebrania <a href="http://www.fkn.pl/faqs/smsfaq.html">SMSów</a>.
-Uwaga podana przy opisie nastêpnego parameteru dotyczy równie¿ tego.</li>
+eee - number of SMS messages receiving attempts. For more info see description of next
+parameter.</li>
 
 <li>
-fff - ilo¶æ poprawnie odebranych <a href="http://www.fkn.pl/faqs/smsfaq.html">SMSów</a>.
-Nale¿y pamiêtaæ, Â¿e raporty o (nie)dostarczeniu <a href="http://www.fkn.pl/faqs/smsfaq.html">SMSa</a>,
-loga, dzwonki, wizytówki i wiadomo¶ci graficzne s± równie¿ dostarczane w tej formie
-(jako odpowiedni <a href="http://www.fkn.pl/faqs/smsfaq.html">SMS</a>)
-i uwzglêdnianie w tym parametrze
-(przy czym ka¿da wiadomo¶æ graficzna wys³ana np. z Nokii 3210 zajmuje
-a¿ 3 <a href="http://www.fkn.pl/faqs/smsfaq.html">SMSy</a>)</li>
+fff - number of correctly received SMS messages. Of course, all raports
+about success/defeat in SMS delivering, logos, ringtones, business cards and
+picture messages are sent in this form too (like adequate coded SMS) and are
+taken into consideration in this parameter (but each picture message sent, for example,
+from Nokia 3210 is written in 3 SMS messages !)
+</li>
 
 <li>
-gggg - ilo¶æ odebranych komunikatów nadawania komórkowego (czy obs³uguje je aktualnie u¿ywany
-<a href="faq_net1.htm#BTS">BTS</a>, sprawdzisz w <a href="faq_net2.htm#Menu7">te¶cie 7</a>):
-ile razy Twój telefon odebra³ komunikaty tzw. cell-info (w³±czasz jego odbiór w <b>Menu 4-2-2</b> w Nokii 5110)
-oraz cell-broadcast (<b>Menu 2-5</b> w Nokii 5110).</li>
+gggg - number of received cell broadcast messages (if they're supported by actual
+used <a href="faq_net1.htm#BTS">BTS</a>, you can check in <a href="faq_net2.htm#Menu7">test 7</a>):
+how many times your phone received cell-info (in Nokia 5110 it can be enabled in <b>Menu 4-2-2</b>)
+and cell-broadcast (<b>Menu 2-5</b> in Nokia 5110) messages</li>
 </ul>
 
-<p>Warto¶ci tych liczników (z wyj±tkiem kodów b³êdów) s± zapamiêtywane przy
-wy³±czaniu telefonu. Mo¿esz je wyzerowaæ w <b><a href="#Menu60">te¶cie 60</a></b>
-(jest to robione równie¿, gdy osi±gn± maksymalne warto¶ci).
+<p>Values of these counters (excluding error codes) are written to EEPROM,
+when phone is disabled. You can reset them using <b><a href="#Menu60">test 60</a></b>
+(it's made too, when they exceed their maximal values).
+
+<p>I received info, that in some (all ?) Nokia 6150 phones
+with 4.13 firmware  doesn't change value of gggg counter instead that they receive
+cellinfo messages (is it bug in this firmware version ?)
 
-<p>Otrzyma³em równie¿ informacje, Â¿e w niektórych (?) Nokiach 6150 z oprogramowaniem 4.13
-nie zmienia siê warto¶æ licznika gggg pomimo otrzymywania komunikatów
-(czy jest to b³±d w tej wersji oprogramowania ?)
+<p>In Nokia 3310 parameters are a little different located on the screen (when compare to info above).
 
-<p>W Nokii 3310 parametry s± nieco poprzesuwane w stosunku do rysunku powy¿ej.
+<p>In Nokia 9210 parameters are 4 digits long...
 
-<p>Je¿eli chcesz siê dowiedzieæ troszkê wiêcej o wysy³aniu <a href="http://www.fkn.pl/faqs/smsfaq.html">SMSów</a>
-(albo poznaæ numery SMSC operatorów), zajrzyj pod adres <a href="http://www.vdheyden.demon.nl/sms/index1.htm">www.vdheyden.demon.nl/sms/index1.htm</a>.
+<p>If you want to know a little more about sending SMS messages
+(or find SMSC of different operators), visit
+<a href="http://www.vdheyden.demon.nl/sms/index1.htm">www.vdheyden.demon.nl/sms/index1.htm</a>
+site.
 
 <p>
 <table CELLSPACING=0 CELLPADDING=0 WIDTH="100%" >
 <tr>
 <td><img SRC="../tip.gif" height=36 width=27></td>
 
-<td>Spora czê¶æ programów komputerowych nie sygnalizuje u¿ytkownikowi, czy
-wiadomo¶æ zosta³a poprawnie wys³ana - Ty bêdziesz móg³ to natomiast sprawdziæ
-dziêki temu testowi.</td>
+<td>Majority of computer programs don't write to their users, if SMS message
+sending was successfull - this test will be only way to check it.
+</td>
 </tr>
 </table>
 
-<p>W Nokii 3110 test ten wygl±da jak <b><a href="#Menu64">test 64</a></b>.
+<p>In Nokia 3110 this test looks like <b><a href="#Menu64">test 64</a></b>.
 
-<p>W Nokii 6185/6188 ten test wygl±da inaczej:
+<p>In Nokia 6185/6188 this test looks different:
 
 <p>
 <table BORDER CELLSPACING=0 CELLPADDING=0 >
@@ -824,10 +827,9 @@ C6L 03
 </table>
 
 <p><a NAME="Menu66"></a><b>Test 66</b>
-<br>Liczniki przekroczenia czasu zwi±zane z <a href="http://www.fkn.pl/faqs/smsfaq.html">SMSami</a>
-(jak wiadomo, przy wysy³aniu takiej wiadomo¶ci mo¿na ustaliæ czas, przez
-jaki czas sieæ bêdzie próbowa³a j± dostarczyæ do telefonu odbiorcy - przypuszczam,
-¿e te liczniki s± w jaki¶ sposób z tym zwi±zane).
+<br>Timeout counters connected with SMS messages (as you know, when you send them,
+you can set, how long network will try to delivery them - I suppose, that these
+counters are connected with it).
 
 <p>
 <table CELLSPACING=0 CELLPADDING=0 WIDTH="100%" >
@@ -857,19 +859,19 @@ SMS timeout<br>
 
 <p>
 <ul>
-<li>aaa - licznik przekroczenia czasu dla TR1M</li>
-<li>bbb - licznik przekroczenia czasu dla TR2M</li>
-<li>cc - licznik przekroczenia czasu dla TRAM</li>
-<li>ddd - licznik przekroczenia czasu dla TC1M</li>
-<li>eee - licznik przekroczenia czasu dla TC2M</li>
-<li>ff - licznik przekroczenia czasu dla nadawania komórkowego</li>
+<li>aaa - timeout counter for TR1M</li>
+<li>bbb - timeout counter for TR2M</li>
+<li>cc - timeout counter for TRAM</li>
+<li>ddd - timeout counter for TC1M</li>
+<li>eee - timeout counter for TC2M</li>
+<li>ff - timeout counter for cell broadcast</li>
 </ul>
 
-<p>Warto¶ci liczników za zapamiêtywane przy wy³±czaniu telefonu. Je¿eli osi±gn±
-warto¶ci maksymalne, s± zerowane. Mo¿esz je równie¿ wyzerowaæ w
-<b><a href="#Menu60">te¶cie 60</a></b>.
+<p>Values of these counters are written to EEPROM, when phone is disabled.
+You can reset them using <b><a href="#Menu60">test 60</a></b>
+(it's made too, when they exceed their maximal values). 
 
-<p>W Nokii 6185/6188 ten test wygl±da inaczej:
+<p>In Nokia 6185/6188 this test looks different:
 
 <p>
 <table BORDER CELLSPACING=0 CELLPADDING=0 >
@@ -917,9 +919,8 @@ M1M B3
 </table>
 
 <p><a NAME="Menu70"></a><b>Test 70</b>
-<br>Zawarto¶æ tymczasowych liczników <a href="faq_net1.htm#DSP">DSP</a> (szesnastkowe
-warto¶ci komórek pamiêci oznaczanych w opisach jako r_dsp2ftd+0, r_dsp2ftd+1,
-r_dsp2ftd+2, itd.)
+<br>Temporary counters of <a href="faq_net1.htm#DSP">DSP</a> (contents of API memory locations
+r_dsp2ftd+0, r_dsp2ftd+1, r_dsp2ftd+2, etc. in hex format)
 
 <p>
 <table CELLSPACING=0 CELLPADDING=0 WIDTH="100%" >
@@ -948,29 +949,27 @@ DSP counters<br>
 </tr>
 </table>
 
-<p>Ten test jest u¿ywany przez debuggery
-oprogramowania <a href="faq_net1.htm#DSP">DSP</a>. Mog± one wstawiaæ pewne
-u¿yteczne informacje do okre¶lonych komórek pamiêci. Kiedy ten test jest wybrany,
-<a href="faq_net1.htm#MCU">MCU</a> pokazuje zawarto¶æ tych komórek pamiêci
-na wy¶wietlaczu w podanym wy¿ej formacie.
+<p>The display is to be used by special debugging <a href="faq_net1.htm#DSP">DSP</a>
+software which can put some useful information to the memory locations on
+API RAM. When this display is selected then <a href="faq_net1.htm#MCU">MCU</a>
+copies the contents of those memory locations into display with format specified above.
 
-<p>W Nokii 3110 test ten wygl±da jak <b><a href="#Menu80">test 80</a></b>.
+<p>In Nokia 3110 this test looks like <b><a href="#Menu80">test 80</a></b>.
 
 <p><a NAME="Menu71_72"></a><b>Test 71, 72</b>
-<br>Oba menu pozwalaj± kontrolowaæ ustawienia <a href="faq_net1.htm#DSP">DSP</a>
-
-<p>Je¿eli wejdziesz bezpo¶rednio do którego z nich, w obu zmieniaj± siê
-cyferki pod AUDIO ENHANCEMENT - ich warto¶ci zale¿± od w³o¿onej karty SIM.
-W zale¿no¶ci od tego, które z nich teraz ogl±da³e¶(a¶) (u¿ywaj±c strza³ek),
-zmieni siê d¼wiêk (mog± siê np. pojawiæ okropne szumy i trzaski). Mo¿esz
-mieæ wp³yw na te warto¶ci (mog± mieæ maksymaln± warto¶æ 65536) - wystarczy
-je zapisaæ odpowiednio w 31 i 32 pozycji ksi±¿ki telefonicznej na karcie
-SIM (jak to zrobiæ ? opis znajdziesz przy <b><a href="faq_net3.htm#Menu17">te¶cie 17</a></b>).
-Parametr Conf z <b><a href="faq_net4.htm#Menu30">testu 30</a></b>
-pokazuje natomiast wybran± tutaj warto¶æ. Â¯eby wróciæ do stanu wyj¶ciowego,
-musisz wy³±czyæ i w³±czyæ telefon. Na jako¶æ d¼wiêku (tzn. czy przy pewnych
-ustawieniach pojawiaj± siê zak³ócenia) nie wp³ywa pod³±czenie zestawu s³uchawkowego
-i samochodowego.
+<br>Both tests allow to set <a href="faq_net1.htm#DSP">DSP</a> settings.
+
+<p>When you will directly enter to one of them, in both of them number below AUDIO
+ENHANCEMENT change - values depends on SIM card. You can now enter to one of them
+using arrows - sound emited by phone will change then (you can hear
+horrible noises and cracks). You can set values below AUDIO ENHANCEMENT too
+- save them (in decimal - maximal value is 65536) in 31 or 32 position
+in phonebook on SIM card (how to do it ? see description in
+<b><a href="faq_net3.htm#Menu17">test 17</a></b>).
+Conf parameter from <b><a href="faq_net4.htm#Menu30">test 30</a></b>
+shows, what value was choosen here. You can back to normal sound, when
+you will disable and enable phone. Connecting headset or cat kit don't change
+sound effects with concrete values set here.
 
 <p>
 <table CELLSPACING=0 CELLPADDING=0 WIDTH="100%" >
@@ -999,10 +998,38 @@ enhancements</b></tt></td>
 </tr>
 </table>
 
-<p>W Nokii 3110 test 71 wygl±da jak <b><a href="#Menu81">test 81</a></b>.
+<p>In Nokia 9210 these tests look like follows:
+
+<p>
+<table CELLSPACING=0 CELLPADDING=0 WIDTH="100%" >
+<tr>
+<td>
+<table BORDER CELLSPACING=0 CELLPADDING=0 >
+<tr>
+<td><tt>AUDIO<br>
+ENHANCEMENT&nbsp;<br>
+DISPLAY 1<br>
+&nbsp; &nbsp; aaaaa</tt></td>
+</tr>
+</table>
+</td>
+
+<td>
+<table BORDER CELLSPACING=0 CELLPADDING=0 >
+<tr>
+<td><tt><b>Display 1<br>
+DSP audio<br>
+enhancements<br>&nbsp;</b></tt></td>
+</tr>
+</table>
+</td>
+</tr>
+</table>
+
+<p>In Nokia 3110 test 71 looks like <b><a href="#Menu81">test 81</a></b>.
 
 <p><a NAME="Menu73"></a><b>Test 73</b>
-<br>Ogólne informacje o ustawieniach <a href="faq_net1.htm#DSP">DSP</a>
+<br>Generic display for <a href="faq_net1.htm#DSP">DSP</a> Audio Enhancements
 
 <p>
 <table CELLSPACING=0 CELLPADDING=0 WIDTH="100%" >
@@ -1034,30 +1061,24 @@ HEX3 B3 HEX4<br>
 <p>
 <ul>
 <li>
-aaa - g³ówna g³o¶no¶æ (poziom sygna³u) w dB. Znak czê¶ci u³amkowej i znak
-nie jest pokazywany (np. zamiast -10.5 zobaczysz 105)</li>
+aaa - general dB value, e.g. signal level in dB. decimal point and sign is not shown, ie. -10.5 is show 105.</li>
 
-<li>
-bb - g³ówna warto¶æ (podana szesnastkowo) bajtu (u¿ywana dla mieszanych
-znaczników).</li>
+<li>bb - general byte value, used for combined flags. Value is in hex format.</li>
 
-<li>
-cccc - g³ówna warto¶æ szesnastkowa</li>
+<li>cccc - general hex value.</li>
 </ul>
 
-<p>Angielskie opisy pisz± o tym te¶cie:
-<br>"Warto¶ci liczników s± pokazywane tylko w czasie rozmowy
-(gdy w³±czone s± testy monitora). Je¿eli po³±czenie
-jest przerwane, zatrzymuj± siê one na ostatnich warto¶ciach. Ich warto¶ci
-nie s± zapamiêtywane przy wy³±czaniu telefonu."
+<p>Some English sources write about this test:
+<br>"The display is reset and restarted when call is taken (if NetMonitor display
+counters are enabled). When call is terminated the display is frozen to
+show last values. Display values will not be saved to the EEPROM."
 
-<p>...ale ja tego nie zauwa¿y³em i u mnie zawsze by³y równe 0
-(czy trzeba jako¶ dodatkowo w³±czyæ ten test ?)
+<p>...but I haven't seen it my phone and they were equal 0 all the time (is something additionaly required to enable this test ?)
 
-<p>W Nokii 3110 test ten wygl±da jak <b><a href="#Menu82">test 82</a></b>.
+<p>In Nokia 3110 this test looks like <b><a href="#Menu82">test 82</a></b>.
 
 <p><a NAME="Menu74"></a><b>Test 74</b>
-<br>Informacje o g³o¶no¶ci podczas rozmowy
+<br><a href="faq_net1.htm#DSP">DSP</a> audio enhancements 1 (DRC)
 
 <p>
 <table CELLSPACING=0 CELLPADDING=0 WIDTH="100%" >
@@ -1088,40 +1109,28 @@ nie s
 
 <p>
 <ul>
-<li>
-aaa - g³o¶no¶æ sygna³u z telefonu naszego rozmówcy.</li>
-
-<li>
-bbb - g³o¶no¶æ sygna³u z Twojego telefonu.</li>
-
-<li>
-ccc - g³o¶no¶æ tzw. "komfortowego szumu" (patrz opis <a href="faq_net1.htm#DTX">DTX</a>).</li>
-
-<li>
-dd - warto¶æ DRC dla sygna³u z telefonu naszego rozmówcy (dwucyfrowa liczba
-ca³kowita)</li>
-
-<li>
-ee - warto¶æ DRC dla sygna³u z Twojego telefonu (dwucyfrowa liczba ca³kowita)</li>
+<li>aaa - downlink (received by your phone) signal level.</li>
+<li>bbb - uplink (sent by your phone) signal level</li>
+<li>ccc - background noise (see description of <a href="faq_net1.htm#DTX">DTX</a>) signal level.</li>
+<li>dd - downlink (received by your phone) DRC table value, shown in decimal integer, two digits.</li>
+<li>ee - uplink (sent by your phone) DRC table value, decimal integer, two digits.</li>
 </ul>
 
-<p>Pierwsze trzy parametry s± podawane w dB i obliczane na podstawie DRC.
-Znak czê¶ci u³amkowej i znak liczby nie s± pokazywane (np. zamiast
--10.5 zobaczysz 105).
+<p>Three first parameters are in dB calculated using DRC level
+measuring block. Decimal point and sign is not shown,
+ie. -10.5 is show 105.
 
-<p>Angielskie opisy pisz± o tym te¶cie:
-<br>"Warto¶ci liczników s± pokazywane tylko w czasie rozmowy
-(gdy w³±czone s± testy monitora). Je¿eli po³±czenie
-jest przerwane, zatrzymuj± siê one na ostatnich warto¶ciach. Ich warto¶ci
-nie s± zapamiêtywane przy wy³±czaniu telefonu."
+<p>Some English sources write about this test:
+<br>"The display is reset and restarted when call is taken (if NetMonitor display
+counters are enabled). When call is terminated the display is frozen to
+show last values. Display values will not be saved to the EEPROM."
 
-<p>...ale ja tego nie zauwa¿y³em i u mnie zawsze by³y równe 0
-(czy trzeba jako¶ dodatkowo w³±czyæ ten test ?)
+<p>...but I haven't seen it my phone and they were equal 0 all the time (is something additionaly required to enable this test ?)
 
-<p>W Nokii 3110 test ten wygl±da jak <b><a href="#Menu71_72">test 72</a></b>.
+<p>In Nokia 3110 this test looks like <b><a href="#Menu71_72">test 72</a></b>.
 
 <p><a NAME="Menu75"></a><b>Test 75</b>
-<br>Informacje o trybie pracy pod³±czonych akcesoriów d¼wiêkowych
+<br>Audio path status
 
 <p>
 <table CELLSPACING=0 CELLPADDING=0 WIDTH="100%" >
@@ -1153,42 +1162,40 @@ AccAudMode<br>
 <p>
 <ul>
 <li>
-aaaaa - rodzaj pod³±czonych do telefonu akcesoriów d¼wiêkowych
-(dla niektórych telefonów mo¿liwe warto¶ci to:
-HP, HF, HEADSET, EXT albo HP_OFFHO). W Nokii 7110 podawany w <a href="faq_net6.htm#Menu99">test 99</a>.
+aaaaa - external audio status (for some phones possible values are: HP, HF, HEADSET, EXT and HP_OFFHO)
 
-<p>Je¶li chodzi o Nokiê 5110, przyjmowane by³y nastêpuj±ce
-warto¶ci:
+<p>With Nokia 5110 these values vere observed:
 
 <p>
 <table BORDER CELLSPACING=0 CELLPADDING=0 >
-<tr ALIGN=CENTER><td></td><td>warto¶æ</td></tr>
-<tr ALIGN=CENTER><td>stan normalny (nie pod³±czono nic, jest kabel FBUS/M2BUS albo Â³adowarka)</td><td>HP</td></tr>
+<tr ALIGN=CENTER><td></td><td>value</td></tr>
+<tr ALIGN=CENTER><td>normal state (nothing connected, cable MBUS/FBUS or changer connected)</td><td>HP</td></tr>
 
-<tr ALIGN=CENTER><td>zestaw s³uchawkowy (telefon wy¶wietla Mikrozestaw (Headset))
-<br>Mo¿esz go zasymulowaæ
-<br>³±cz±c piny 1-2 z³±cza na dole telefonu
-<br>(patrz±c od lewej strony, gdy telefon le¿y wy¶wietlaczem do góry).
-<br>W Nokii 9110 mo¿esz do tego u¿yæ równie¿ <b><a href="faq_net6.htm#Menu92">testu 92</a></b>.</td>
-<td>HD (skrót od <b>H</b>ea<b>D</b>set)</td>
+<tr ALIGN=CENTER><td>headset (phone displays Headset)
+<br>You can simulate it
+<br>connecting pins 1-2 on the connector on the bottom of the phone
+<br>(when you see from the left side, when phone's screen is on the top)
+<br>In Nokia 9110 you can use to make it
+<b><a href="faq_net6.htm#Menu92">test 92</a></b> too.</td>
+<td>HD (shortcut from <b>H</b>ea<b>D</b>set)</td>
 </tr>
 
 <tr ALIGN=CENTER>
-<td>zestaw samochodowy (telefon wy¶wietla Samochód (Car))
-<br>Mo¿esz go zasymulowaæ
-<br>³±cz±c piny 2-3 z³±cza na dole telefonu
-<br>(patrz±c od lewej strony, gdy telefon le¿y wy¶wietlaczem do góry)</td>
-<td>HFU 1 (skrót od <b>H</b>ands <b>F</b>ree <b>U</b>nit 1)</td>
+<td>car kit (phone displays Car)
+<br>You can simulate it
+<br>connecting pins 2-3 on the connector on the bottom of the phone
+<br>(when you see from the left side, when phone's screen is on the top)
+<td>HFU 1 (shortcut from <b>H</b>ands <b>F</b>ree <b>U</b>nit 1)</td>
 </tr>
 </table>
 
-<p>Powy¿sze metody symulacji zestawów s± poprawne dla Nokii 5xxx, 6xxx
-i zapewne 9110 (u¿ywasz ich na W£ASN¡ odpowiedzialno¶æ).
+<p>Described above methods of simulating presence sound accesories are correct
+for Nokia 5xxx, 6xxx and probably 9110 (but REMEMBER: you use them on YOUR OWN risk)
 
-<p>Po pod³±czeniu (symulacji) obu zestawów w telefonie uaktywnia³a siê funkcja
-"Odbiór samoczynny" ("Automatic answer") - <b>Menu 4-1-6</b> w Nokii 5110 - dziêki
-której telefon mo¿e automatycznie odbieraæ przychodz±ce po³±czenie. W Nokii 9110
-mo¿esz j± uaktywniæ równie¿ m.in. u¿ywaj±c <a href="faq_net6.htm#Menu92"><b>testu 92</b></a>.
+<p>When you connect (simulate) both accesories you have in phone function
+"Automatic answer" (<b>Menu 4-1-6</b> in Nokia 5110) - it allows phone
+to answer automatically (without pressing key) incoming calls. In Nokia 9110
+you can activate it using <a href="faq_net6.htm#Menu92"><b>test 92</b></a> too.
 <p>
 </li>
 
@@ -1196,16 +1203,28 @@ mo
 bbbb - audio_request bitmap in hex</li>
 
 <li>
-cccc - tryb pracy akcesoriów d¼wiêkowych</li>
+cccc - accessory audio mode</li>
 
 <li>
-dd - Â¶cie¿ka dla HFU-2 (<b>H</b>ands <b>F</b>ree <b>U</b>nit-2)</li>
+dd - path for HFU-2 (<b>H</b>ands <b>F</b>ree <b>U</b>nit-2)</li>
 </ul>
 
-<p>W Nokii 3110 test ten wygl±da jak <b><a href="#Menu73">test 73</a></b>.
+<p>In Nokia 9210 help looks like follows:
+
+<p>
+<table BORDER CELLSPACING=0 CELLPADDING=0 >
+<tr>
+<td><tt><b>ExtAudStatus<br>
+AudioRequest<br>
+AccAudMode<br>
+HFU2Path</b></tt></td>
+</tr>
+</table>
+
+<p>In Nokia 3110 this test looks like <b><a href="#Menu73">test 73</a></b>.
 
 <p><a NAME="Menu76"></a><b>Test 76</b>
-<br>Informacje o d¼wiêku, który Ty s³yszysz w swoim telefonie
+<br>Ear (= downlink) audio display
 
 <p>
 <table CELLSPACING=0 CELLPADDING=0 WIDTH="100%" >
@@ -1237,77 +1256,74 @@ PkAver<br>
 <p>
 <ul>
 <li>
-ab - g³o¶no¶æ (poni¿sze informacje s± na pewno poprawne dla Nokii 5110):
+ab - volume level (below information are correct for Nokia 5110):
 
 <table BORDER CELLSPACING=0 CELLPADDING=0 >
 <tr><td></td><td><b>a</b></td><td><b>b</b></td></tr>
-<tr ALIGN=CENTER><td>g³o¶nik wy³±czony</td><td>0</td><td>F</td></tr>
+<tr ALIGN=CENTER><td>speaker disabled</td><td>0</td><td>F</td></tr>
 
 <tr ALIGN=CENTER>
-<td>wydawany jest d¼wiêk po naci¶niêciu klawisza (poziom g³o¶no¶ci 1)</td>
+<td>sound like after pressing key (volume level 1)</td>
 <td>0</td><td>8</td>
 </tr>
 
 <tr ALIGN=CENTER>
-<td>wydawany jest d¼wiêk po naci¶niêciu klawisza (poziom g³o¶no¶ci 2)</td>
+<td>sound like after pressing key (volume level 2)</td>
 <td>0</td><td>4</td>
 </tr>
 
 <tr ALIGN=CENTER>
-<td>wydawany jest d¼wiêk po naci¶niêciu klawisza (poziom g³o¶no¶ci 3 albo
-w³±czone g³o¶ne d¼wiêki)</td>
+<td>sound like after pressing key (volume level 3 or enable loud sounds)
+</td>
 <td>0</td><td>0</td>
 </tr>
 
 </table>
 
-<p>W czasie po³±czenia parametr a przyjmuje warto¶æ "A", natomiast parametr
-b pozwala obliczyæ ustawion± g³o¶no¶æ d¼wiêku (musisz przeliczyæ go na
-warto¶æ dziesiêtn± i odj±æ od niego 11) - tê ostatni± mo¿esz równie¿ sprawdziæ
-w <b><a href="faq_net4.htm#Menu30">te¶cie 30</a></b>. Przy pod³±czonym
-zestawie s³uchawkowym parametr a przyjmuje natomiast warto¶æ "C" (wzór do obliczenia
-g³o¶no¶ci rozmowy przyjmuje wtedy warto¶æ 10 - b). Je¿eli do telefonu pod³±czony
-jest zestaw samochodowy, parametr a jest równy "2", a wzór na g³o¶no¶æ podczas rozmowy
-przyjmuje warto¶æ 10 - b.
+<p>During connection a parameter has "A" value, parameter b allows to
+calculate set volume level (count it to the decimal value and substract 11 from it)
+- this last parameter can be checked in 
+<b><a href="faq_net4.htm#Menu30">test 30</a></b> too. When you connect headset,
+parameter a has "C" value (formula for counting volume level during call is
+"10 - b" then). With car kit, a parameter is equal "2" and formula is "10 - b" too.
 
-<p>Je¿eli kto¶ do Ciebie dzwoni (nie odebra³e¶(a¶) jeszcze po³±czenia),
-telefon nie zawsze pokazuje g³o¶no¶æ emitowanego d¼wiêku (zachowuje siê
-tak jak przy wy³±czonym g³o¶niku) - nie wiem, czy jest to b³±d w oprogramowaniu
-testuj±cym (wersja 5.07), czy co¶ innego. Tylko bowiem przy pewnych kombinacjach
-ustawieñ rodzaju dzwonka (ci±g³y, wzrastaj±cy, itp.) i jego g³o¶no¶ci jest
-ona pokazywana (podajê od razu warto¶ci obu parametrów): poziom 1 - A7,
-poziom 2 - A6, poziom 4 - A4, poziom 5 - A0.
+<p>When somebody calls to you (you didn't receive it yet), phone doesn't
+show volume of sound always (displayed valued are for disabled speaker) -
+I don't know, if it's firmware bug (5.07) or something different.
+Phone shows it (volume) only with some combinations of types of rings (Ringing, Asceding)
+and volume ring (I write values for both of these parameters: level 1 - A7,
+level 2 - A6, level 4 - A4, level 5 - A0).
 </li>
 
 <li>
-<p>ccc - maksymalna g³o¶no¶æ sygna³u z telefonu Twojego rozmówcy w czasie
-ostatniej ramki (podawana w dB). Znak i znak czê¶ci dziesiêtnej nie s±
-pokazywane (np. zamiast -10.5 zobaczysz 105).</li>
+<p>ccc - peak value of downlink audio signal during last frame in dB,
+decimal point and sign is not shown, ie. -10.5 is show 105.
+</li>
 
 <li>
-<p>ddd - licznik pokazuj±cy ilo¶æ próbek sygna³u akustycznego, w których nast±pi³o
-przepe³nienie (tak jak przesterowanie), w czasie ostatniej ramki.</li>
+<p>ddd - cut off counter value of last frame. This counter counts
+how many samples are saturated during last frame.
+</li>
 
 <li>
-<p>eee - Â¶rednia licznika podawanego jako poprzedni parametr. Znak i znak
-czê¶ci dziesiêtnej nie s± pokazywane (np. zamiast -10.5 zobaczysz 105).</li>
+<p>eee - moving average of cut off counter, decimal point and sign is
+not shown, ie. -10.5 is show 105.
+</li>
 
 <li>
-<p>fff - Â¶rednia g³o¶no¶æ s³yszanego przez Ciebie d¼wiêku</li>
+<p>fff - moving average of peak levels</li>
 </ul>
 
-<p>Angielskie opisy pisz± o tym te¶cie:
-<br>"Warto¶ci liczników s± pokazywane tylko w czasie rozmowy
-(gdy w³±czone s± testy monitora). Je¿eli po³±czenie
-jest przerwane, zatrzymuj± siê one na ostatnich warto¶ciach. Ich warto¶ci
-nie s± zapamiêtywane przy wy³±czaniu telefonu."
+<p>Some English sources write about this test:
+<br>"The display is reset and restarted when call is taken (if NetMonitor display
+counters are enabled). When call is terminated the display is frozen to
+show last values. Display values will not be saved to the EEPROM."
 
-<p>...ale ja tego nie zauwa¿y³em i u mnie zawsze (bez pierwszego) by³y równe 0
-(czy trzeba jako¶ dodatkowo w³±czyæ ten test ?)
+<p>...but I haven't seen it my phone and they were equal 0 (without first) all the time
+(is something additionaly required to enable this test ?)
 
 <p><a NAME="Menu77"></a><b>Test 77</b>
-<br>Informacje o d¼wiêku, który s³yszy Twój rozmówca (tzn. parametry d¼wiêku
-wysy³anego przez Twój telefon)
+<br>Microphone (= uplink) audio display
 
 <p>
 <table CELLSPACING=0 CELLPADDING=0 WIDTH="100%" >
@@ -1337,35 +1353,35 @@ CutOff COAve<p>
 <p>
 <ul>
 <li>
-aaa - maksymalna g³o¶no¶æ wysy³anego d¼wiêku w czasie ostatniej ramki w
-dB. Znak czê¶ci u³amkowej i znak liczby nie s± pokazywane (np. zamiast
--10.5 zobaczysz 105).</li>
+aaa - peak value of uplink audio signal during last frame in dB,
+decimal point and sign is not shown, ie. -10.5 is show 105.
+</li>
 
 <li>
-bbb - przeciêtna g³o¶no¶æ wysy³anego d¼wiêku w dB. Znak czê¶ci u³amkowej
-i znak liczby nie s± pokazywane (np. zamiast -10.5 zobaczysz 105).</li>
+bbb - moving average of peak levels, decimal point and sign is not
+shown, ie. -10.5 is show 105..</li>
 
 <li>
-ccc - licznik pokazuj±cy ilo¶æ próbek sygna³u akustycznego, w których nast±pi³o
-przepe³nienie (tak jak przesterowanie), w czasie ostatniej ramki.</li>
+ccc - cut off counter value of last frame. This counter counts
+how many samples are saturated during last frame.
+</li>
 
 <li>
-ddd - Â¶rednia licznika podawanego jako poprzedni parametr.</li>
+ddd - moving average of cut off counter</li>
 </ul>
 
-<p>Angielskie opisy pisz± o tym te¶cie:
-<br>"Warto¶ci liczników s± pokazywane tylko w czasie rozmowy
-(gdy w³±czone s± testy monitora). Je¿eli po³±czenie
-jest przerwane, zatrzymuj± siê one na ostatnich warto¶ciach. Ich warto¶ci
-nie s± zapamiêtywane przy wy³±czaniu telefonu."
+<p>Some English sources write about this test:
+<br>"The display is reset and restarted when call is taken (if NetMonitor display
+counters are enabled). When call is terminated the display is frozen to
+show last values. Display values will not be saved to the EEPROM."
 
-<p>...ale ja tego nie zauwa¿y³em i u mnie zawsze by³y równe 0
-(czy trzeba jako¶ dodatkowo w³±czyæ ten test ?)
+<p>...but I haven't seen it my phone and they were equal 0 all the time
+(is something additionaly required to enable this test ?)
 
-<p>W Nokii 3110 test ten wygl±da jak <b><a href="#Menu75">test 75</a></b>.
+<p>In Nokia 3110 this test looks like <b><a href="#Menu75">test 75</a></b>.
 
 <p><a NAME="Menu78"></a><b>Test 78</b>
-<br>Kolejne parametry <a href="faq_net1.htm#DSP">DSP</a>
+<br><a href="faq_net1.htm#DSP">DSP</a> audio enhancements (AEC)
 
 <p>
 <table CELLSPACING=0 CELLPADDING=0 WIDTH="100%" >
@@ -1397,64 +1413,64 @@ TxN Sta Mod<br>
 <p>
 <ul>
 <li>
-aaa - poziom cyfrowego t³umienia echa z punktu widzenia <a href="faq_net1.htm#DSP">DSP</a>
-:-) w dB. Znak liczby i czê¶ci u³amkowej nie s± pokazywane (np. -10.5 dB
-bêdzie wy¶wietlane jako "105", -0.5 dB za¶ jako "&nbsp; 5"). 20*log10(
-Q15 )</li>
+aaa - electro-acoustic attenuation of echo from <a href="faq_net1.htm#DSP">DSP</a> point of view
+in dB. Decimal point and sign is not shown. E.g. -10.5dB
+would be displayed as "105", -0.5 dB would be displayed
+as "  5". 20*log10( Q15 )</li>
 
 <li>
-bbb - poziom adaptacyjnego t³umienia echa (znak czê¶ci u³amkowej nie jest
-pokazywany). 20*log10( Q15 )</li>
+bbb - adaptive attenuation of echo. Decimal point is not shown. 20*log10( Q15 )
+</li>
 
 <li>
-ccc - poziom st³umienia sygnalu, który wraca po odbiciu (znak czê¶ci u³amkowej
-nie jest pokazywany). 20*log10( Q15 )</li>
+ccc - total echo return loss. Decimal point is not shown. 20*log10( Q15 )
+</li>
 
 <li>
-ddd - t³umienie t³umika sygna³u odbieranego (akustyczne) w dB. Znak liczby
-i czê¶ci u³amkowej nie s± pokazywane. 20*log10( Q15 aec_rx_gain )</li>
+ddd - RX (received) attenuator gain in dB. Decimal point and sign is not shown. 20*log10( Q15 aec_rx_gain )
+</li>
 
 <li>
-eee - t³umienie t³umika sygna³u nadawanego (akustyczne) w dB. Znak liczby
-i czê¶ci u³amkowej nie s± pokazywane. 20*log10( Q15 aec_tx_gain )</li>
+eee - TX (sent) attenuator gain in dB. Decimal point and sign is not shown. 20*log10( Q15 aec_tx_gain )
+</li>
 
 <li>
-fff - ograniczenie dla dwóch powy¿szych parametrów (ddd i eee) - znak liczby
-i czê¶ci u³amkowej nie s± pokazywane. 20*log10( Q15 aec_gain_limit )</li>
+fff - gain limit for RX and TX. Decimal point and sign is not shown. 20*log10( Q15 aec_gain_limit )
+</li>
 
 <li>
-ggg - g³o¶no¶æ nadawanego "komfortowego szumu" (patrz opis <a href="faq_net1.htm#DTX">DTX</a>)
-w dB. Znak czê¶ci u³amkowej i znak liczny nie s± pokazywane. 20*log10(
-Q15 aec_tx_noise)</li>
+ggg - TX (sent) noise level (see <a href="faq_net1.htm#DTX">DTX</a> description for more info)
+in dB. Decimal point and sign is not shown. 20*log10( Q15 aec_tx_noise)
+</li>
 
 <li>
-h - stan filtru adaptacyjnego. (Q0 aec_nlms_state) (bit UPDATE &lt;&lt;
-2) | (bit NLMS2 &lt;&lt; 1) | (bit NLMS1)</li>
+h - adaptive filter status. (Q0 aec_nlms_state) (bit UPDATE << 2) | (bit NLMS2 << 1) | (bit NLMS1)
+</li>
 
 <li>
-i - informacja, o tym czy jest generowany tzw. "komfortowy szum" - patrz
-opis <a href="faq_net1.htm#DTX">DTX</a> (warto¶ci 0 lub 1) (Q0 AEC_TX_COMF_GEN)</li>
+i - comfort noise (see <a href="faq_net1.htm#DTX">DTX</a> description for details)
+generation (0 or 1) (Q0 AEC_TX_COMF_GEN)
+</li>
 
 <li>
-jjj - tryb pracy uk³adu t³umików i filtru adaptacyjnego (AEC) (byte Q0
-s_AEC_mode)</li>
+jjj - AEC mode. (byte Q0 s_AEC_mode)</li>
 
 <li>
-kkkk - ostatnich 16 decyzji uk³adu wykrywania g³osu dla sygna³u odbieranego
-(RX VAD) w formacie szesnastkowym. Hex( Q0 aec_rx_vadreg )</li>
+kkkk - shows 16 last RX VAD decisions in HEX format. Hex( Q0 aec_rx_vadreg )
+</li>
 
 <li>
-llll - ostatnich 16 decyzji uk³adu wykrywania g³osu dla sygna³u nadawanego
-(TX VAD) w formacie szesnastkowym. Hex( Q0 aec_tx_vadreg )</li>
+llll - shows 16 last TX VAD decisions in HEX format. Hex( Q0 aec_tx_vadreg )
+</li>
 </ul>
 
-<p>U mnie warto¶ci tych liczników zawsze by³y równe 0
-(czy trzeba jako¶ dodatkowo w³±czyæ ten test ?)
+<p>In my phone all these counters were equal 0 all the time
+(is something additionaly required to enable this test ?)
 
-<p>W Nokii 3110 test ten wygl±da jak <b><a href="#Menu76">test 76</a></b>.
+<p>In Nokia 3110 this test looks like <b><a href="#Menu76">test 76</a></b>.
 
 <p><a NAME="Menu79"></a><b>Test 79</b>
-<br>Wy¶wietlacz equalizera audio
+<br>Audio equalizer display
 
 <p>
 <table CELLSPACING=0 CELLPADDING=0 WIDTH="100%" >
@@ -1485,53 +1501,33 @@ MiCLev EarLv<br>
 
 <p>
 <ul>
-<li>
-aaaaa - próbki sygna³u akustycznego, w których nast±pi³o przepe³nienie
-(tak jak przesterowanie), przed przej¶ciem przez equalizer mikrofonowy
-w postaci 16-bitowej ca³kowitej (dziesiêtnej) liczby.</li>
-
-<li>
-bbbbb - próbki sygna³u akustycznego, w których nast±pi³o przepe³nienie
-(tak jak przesterowanie), po przej¶ciu przez equalizer mikrofonowy w postaci
-16-bitowej ca³kowitej (dziesiêtnej) liczby.</li>
-
-<li>
-ccccc - próbki sygna³u akustycznego, w których nast±pi³o przepe³nienie
-(tak jak przesterowanie), przed przej¶ciem przez equalizer g³o¶nikowy w
-postaci 16-bitowej ca³kowitej (dziesiêtnej) liczby.</li>
+<li>aaaaa - saturated samples before microphone equalizer in decimal 16 bit</li>
+<li>bbbbb - saturated samples after microphone equalizer in decimal 16 bit unsigned integer format.</li>
+<li>ccccc - saturated samples before earpiece equalizer in decimal 16 bit unsigned integer format.</li>
+<li>ddddd - saturated samples after earpiece equalizer in decimal 16 bit unsigned integer format.</li>
 
-<li>
-ddddd - próbki sygna³u akustycznego, w których nast±pi³o przepe³nienie
-(tak jak przesterowanie), po przej¶ciu przez equalizer g³o¶nikowy w postaci
-16-bitowej ca³kowitej (dziesiêtnej) liczby.</li>
-
-<li>
--ee.e - g³o¶no¶æ d¼wiêku wychwytywanego przez mikrofon w formacie dB. Wymaga
-funkcji matematycznej log10 w <a href="faq_net1.htm#MCU">MCU</a>.
-16 bitowa warto¶æ w <a href="faq_net1.htm#DSP">DSP</a>,
-0 dB = 32768.</li>
+<li>-ee.e - level of the microphone signal level detector in dB format. Requires log10 function in <a href=faq_net1.htm#MCU">MCU</a>.
+16 bit signed value in <a href="faq_net1.htm#DSP">DSP</a>, 0 dB = 32768.
+</li>
 
 <li>
--ff.f - g³o¶no¶æ sygna³u po przej¶ciu przez equalizer g³o¶nikowy w formacie
-dB. Wymaga funkcji matematycznej log10 w <a href="faq_net1.htm#MCU">MCU</a>.
-16 bitowa warto¶æ w <a href="faq_net1.htm#DSP">DSP</a>,
-0 dB = 32768.</li>
+-ff.f - Level of the signal after earpiece equalizer in dB format. Requires log10 function in <a href=faq_net1.htm#MCU">MCU</a>.
+16 bit signed value in <a href="faq_net1.htm#DSP">DSP</a>, 0 dB = 32768.
+</li>
 </ul>
 
-<p>Angielskie opisy pisz± o tym te¶cie:
-<br>"Warto¶ci liczników s± pokazywane tylko w czasie rozmowy. Je¿eli po³±czenie
-jest przerwane, zatrzymuj± siê one na ostatnich warto¶ciach.
-Ich warto¶ci nie s± zapamiêtywane przy wy³±czaniu telefonu. Warto¶ci liczników
-aaaaa-ddddd s± obliczane w <a href="faq_net1.htm#DSP">DSP</a> (i tylko
-nowe s± wysy³ane do <a href="faq_net1.htm#MCU">MCU</a>. Poziomy sygna³u
-mikrofonowego i g³o¶nikowego s± obliczane w <a href="faq_net1.htm#DSP">DSP</a>,
-który wysy³a liniowe warto¶ci do <a href="faq_net1.htm#MCU">MCU</a>, który z kolei
-dokonuje liniowej transformacji dB (20*log10(x)) do warto¶ci g³o¶no¶ci".
+<p>Some English sources write about this test:
+<br>"The display is reset and restarted when call is taken. When call is 
+terminated the display is frozen to show last values. Display will not be 
+saved to EEPROM. Saturated sample counters aaaaa - ddddd are counted in <a href="faq_net1.htm#DSP">DSP</a>
+and only the new counter value is sent to <a href="faq_net1.htm#MCU">MCU</a>. The microphone and earpiece
+signal levels are calculated in <a href="faq_net1.htm#DSP">DSP</a> and it sends the linear values to
+<a href="faq_net1.htm#MCU">MCU</a> which makes the linear to dB transformation (20*log10(x)) for the level 
+values."
 
-<p>...ale ja tego nie zauwa¿y³em i u mnie zawsze by³y równe 0
-(czy trzeba jako¶ dodatkowo w³±czyæ ten test ?)
+<p>...but I haven't seen it my phone and they were equal 0 all the time (is something additionaly required to enable this test ?)
 
-<p>W Nokii 3110 test ten wygl±da jak <b><a href="#Menu77">test 77</a></b>.
+<p>In Nokia 3110 this test looks like <b><a href="#Menu77">test 77</a></b>.
 
 <p><a NAME="Menu80"></a><b>Test 80</b>
 
@@ -1562,18 +1558,32 @@ dokonuje liniowej transformacji dB (20*log10(x)) do warto
 </tr>
 </table>
 
-<p>Przez bezpo¶rednie wej¶cie do tego menu mo¿esz wyzerowaæ liczniki z <b><a href="#Menu82">testu 82</a></b>.
-Telefon robi to automatycznie, gdy od³±czasz od niego Â³adowarkê.
-Wed³ug opisów angielskich, dzieje siê tak równie¿, gdy akumulator jest
-na³adowany (ja tego nie zaobserwowa³em).
+<p>By direct enter to this test you can reset counters from
+<b><a href="#Menu82">test 82</a></b>. Phone makes it too, when you connect
+charger. Some English descriptions write, that it's made too, when battery is full
+(I didn't notice it).
 
-<p>W niektórych nowych telefonach (np. Nokii 3310 z oprogramowaniem 4.45)
-po u¿yciu tego testu zeruj± siê
-ORAZ w³±czaj± (test ten dzia³a wiêc równie¿ jak
-<a href=#Menu81>test 81</a>)
-liczniki <b><a href="#Menu82">testu 82</a></b>.
+<p>In some new phones (like Nokia 3310 4.45) after using this test counters
+from <b><a href="#Menu82">test 82</a></b>
+are reset AND enabled (so, this test works as
+<b><a href="#Menu81">test 81</a></b> too).
 
-<p>W Nokii 3110 test ten wygl±da jak <b><a href="#Menu83">test 83</a></b>.
+<p>In Nokia 3110 this test looks like <b><a href="#Menu83">test 83</a></b>.
+
+<p>In Nokia 6185:
+
+<p>
+<table BORDER CELLSPACING=0 CELLPADDING=0 >
+<tr>
+<td>
+<tt>
+<i>RLP RESET 00<br>
+RX 00 00 00<br>
+TX 00 00 00<br>
+FER &nbsp;000
+</tt></td>
+</tr>
+</table>
 
 <p><a NAME="Menu81"></a><b>Test 81</b>
 
@@ -1604,10 +1614,26 @@ control test<br>
 </tr>
 </table></center>
 
-<p>Przez bezpo¶rednie wej¶cie do tego menu mo¿esz w³±czyæ (aaaaaaaa=ENABLED) lub
-wy³±czyæ (aaaaaaaa=DISABLED) licznik z <b><a href="#Menu82">testu 82</a></b>.
+<p>By direct enter to this test you enable (aaaaaaaa=ENABLED) or
+disables (aaaaaaaa=DISABLED) counters from <b><a href="#Menu82">test 82</a></b>.
+
+<p>In Nokia 3110 this test looks like <b><a href="#Menu84_86">test 84</a></b>.
+
+<p>In Nokia 6185:
 
-<p>W Nokii 3110 test ten wygl±da jak <b><a href="#Menu84_86">test 84</a></b>.
+<table BORDER CELLSPACING=0 CELLPADDING=0 >
+<tr>
+<td>
+<tt>
+<i>
+NXT 0 &nbsp; &nbsp; &nbsp;&nbsp;<br>
+NEW 0<br>
+UNA 0<br>
+TMR 0
+</i>
+</tt></td>
+</tr>
+</table>
 
 <p><a NAME="Menu82"></a><b>Test 82</b>
 
@@ -1641,61 +1667,78 @@ NSPS&nbsp; TxON<br>
 <p>
 <ul>
 <li>
-aaaaa - informacja, ile d³ugo telefon by³ w³±czony</li>
+aaaaa - how long phone was enabled
+</li>
 
 <li>
-bbbbb - informacja, jak d³ugo telefon by³ zalogowany do sieci</li>
+bbbbb - how long phone was logged into network
+</li>
 
 <li>
-ccccc - informacja, jak d³ugo
-telefon by³ w stanie <a href="faq_net2.htm#NSPS">NSPS</a></li>
+ccccc - how long phone was in
+<a href="faq_net2.htm#NSPS">NSPS</a> state</li>
 
 <li>
-ddddd - informacja, jak d³ugo by³ w³±czony nadajnik telefonu</li>
+ddddd - how long phone's transmitter was enabled
+</li>
 
 <li>
-eee - informacja, czy liczniki s± w³±czone (ON) czy wy³±czone (OFF) (zmieniæ
-to mo¿na w <b><a href="#Menu81">te¶cie 81</a></b>)</li>
+eee - information, whether counters are enabled (ON) or not (OFF) (you can set
+it using <b><a href="#Menu81">test 81</a></b>)</li>
 </ul>
 
-<p>Ka¿dy z tych liczników ma formê aaabb - liczba bb zmienia siê w zakresie
-od 0 do 60 jednostek; po osi±gniêciu warto¶ci 60
-jest zerowana - równocze¶nie zwiêksza siê o 1 liczba aaa.
-W wiêkszo¶ci modeli jednostk± jest minuta (tzn. ka¿dy z liczników pokazuje czas
-jako minuty i godziny), wyj±tkiem jest Nokia 7110, gdzie jednostk± jest 30 sekund
-i niektóre Nokie 3310 (jednostka=1 minuta 7 sekund)...
+<p>Each of these counters display time in aaabb format - bb changes in
+range 0-60 units; when reaches 60 units, it's reset to 0 and
+aaa increases by 1. In majority of models unit is 1 minute (each of counters
+display time as minutes and hours). In Nokia 7110 unit is half of minute, 
+in some Nokia 3310 one minute and 7 seconds...
 
-<p>Wed³ug angielskich opisów maksymalna warto¶æ wynosi 99 h i 59 minut. Je¿eli
-pierwszy (aaaaa) licznik osi±gnie tê warto¶æ, wszystkie liczniki stan±.
+<p> Some English descriptions write, that maximal value for counters is 99 h and 59 minutes.
+When first of them (aaaaa) will have this value, all of them will stop.
 
-<p>Niestety liczniki dzia³aj± tylko wtedy, gdy w³±czysz jaki¶ test w monitorze
-sieci (tzn. gdy wy³±czysz testy, nie bêd± odmierzaæ czasu pomimo wy¶wietlonej
-informacji, Â¿e s± w³±czone). Oznacza to, Â¿e faktycznie mo¿esz tutaj
-znale¼æ informacjê o tym, ile korzystasz z monitora sieci (pierwszy parametr),
-ile czasu telefon by³ w tym czasie zalogowany do sieci (nastêpny), itd.
+<p>Unfortunatelly, these counters work only, when you have some test in netmonitor
+enabled (it means: when you will disable tests, values won't change even, when
+counters are enabled). It means, that you can have information here,
+how long you use netmonitor (first parameter), how long phone logged into network
+during this time (next)...
 
 <p>
 <table CELLSPACING=0 CELLPADDING=0 WIDTH="100%" >
 <tr>
 <td><img SRC="../tip.gif" height=36 width=27></td>
 
-<td>Je¿eli nie mo¿esz zrezygnowaæ z odmierzania czasu, proponujê w
-<b><a href="#Menu83">te¶cie 83</a></b> wybraæ SHOW TASK MSG BUFS i w³±czyæ
-<b><a href="#Menu87">test 87</a></b> (wy¶wietlacz bêdzie pusty).
-Jedyn± niedogodno¶ci± tego rozwi±zania
-bêdzie to, Â¿e nie bêdziesz mia³(a) identyfikacji osób dzwoni±cych do Ciebie.
+<td>You you still want to measure time using this test, in
+<b><a href="#Menu83">test 83</a></b> select SHOW TASK MSG BUFS and enable
+<b><a href="#Menu87">test 87</a></b> (display will be empty then).
+Of course, there disadvantiges of it: you won't have identification incoming calls.
 
-<p>W menu serwisowym Nokii 6130 (kod <b>*#WARRANTY#</b>) i 3210 (kod <b>*#WAR0ANTY#</b>) pod 
-pozycj± "Life Timer" znajdziesz informacjê ile czasu rozmawia³e¶(a¶) - cyfry przed 
-dwukropkiem oznaczaj± godziny, cyfry po nim minuty. Przyk³adowo, 0011:34 to 11 h 34 
-minuty czasu rozmowy. W Nokii 3310 (równie¿ kod <b>*#WAR0ANTY#</b>)
-na samym pocz±tku pokazywana jest tam liczba 65536, a licznik zaczyna
-dzia³aæ, gdy przez telefon rozmawiano d³u¿ej ni¿ 1 h.
+<p>In service menu in Nokia 6130 (<b>*#WARRANTY#</b> code) and 3210
+(<b>*#WAR0ANTY#</b> code) in "Life Timer" position you will find information,
+how long you make calls - digits before ":" mean hours, digits after it minutes).
+For example, 0001:35 means 1 h 35 minutes of calls.
+In Nokia 3310 (<b>*#WAR0ANTY#</b> code too) on start there is shown value 65536 there,
+and counter starts working, when calls were longer than 1 h.
 </td>
 </tr>
 </table>
 
-<p>W Nokii 3110 test ten wygl±da jak <b><a href="#Menu84_86">test 85</a></b>.
+<p>In Nokia 3110 this test looks like <b><a href="#Menu84_86">test 85</a></b>.
+
+<p>In Nokia 6185:
+
+<table BORDER CELLSPACING=0 CELLPADDING=0 >
+<tr>
+<td>
+<tt>
+<i>
+QU 00 &nbsp;DL000<br>
+NACK 00000<br>
+RC00 BR00000<br>
+W0000 C0000
+</i>
+</tt></td>
+</tr>
+</table>
 
 <p><a NAME="Menu83"></a><b>Test 83</b>
 
@@ -1748,27 +1791,42 @@ select shown<br>
 </tr>
 </table></center>
 
-<p>Przez bezpo¶rednie wej¶cie do tego menu mo¿na spowodowaæ, Â¿e w <b>Menu
-10-84</b>, <b>test 85</b>, <b>test 86</b>, <b>test 87</b> s± pokazywane
-warto¶ci innych liczników:
+<p>By direct enter to this test you can make, that in
+<b>test 84</b>, <b>test 85</b>, <b>test 86</b> and <b>test 87</b>
+are displayed values of different counters:
 
 <p>
 <ul>
 <li>
-"STACKS" - pokazuje wolne miejsce w bloku pamiêci w najgorszym razie</li>
+"STACKS" - shows free stack space in worst case</li>
 
 <li>
-"MSG BUFS" - pokazuje najwy¿sz± ilo¶æ bêd±cych w takcie realizacji wiadomo¶ci.</li>
+"MSG BUFS" - shows the peak number of pending messages</li>
 
 <li>
-"FAST BUFS" - pokazuje najwy¿sz± ilo¶æ bed±cych w trakcie realizacji szybkich
-wiadomo¶ci.</li>
+"FAST BUFS" - shows the peak number of pending fast messages</li>
 </ul>
 
-<p>W Nokii 3110 test ten wygl±da jak <b><a href="#Menu84_86">test 86</a></b>.
+<p>In Nokia 3110 this test looks like <b><a href="#Menu84_86">test 86</a></b>.
+
+<p>In Nokia 6185:
+
+<table BORDER CELLSPACING=0 CELLPADDING=0 >
+<tr>
+<td>
+<tt>
+<i>
+S00000 DL000<br>
+N00000 00000<br>
+R00000 D0000<br>
+00000
+</i>
+</tt></td>
+</tr>
+</table>
 
 <p><a NAME="Menu84_86"></a><b>Test 84, 85, 86</b>
-<br>Tak ogólnie wygl±daj± te menu:
+<br>Here is generally view of these tests:
 
 <p>
 <table BORDER CELLSPACING=0 CELLPADDING=0 >
@@ -1780,7 +1838,7 @@ wiadomo
 </tr>
 </table>
 
-<p>A tak wygl±da ich pomoc:
+<p>and here is their help:
 
 <p>
 <table CELLSPACING=0 CELLPADDING=0 WIDTH="100%" >
@@ -1795,7 +1853,7 @@ MDIRCV&nbsp; UI<br>
 </tr>
 </table>
 
-<p>albo (w Nokii 6210/8210):
+<p>or (Nokia 6210/8210):
 <p>
 <table BORDER CELLSPACING=0 CELLPADDING=0 >
 <tr>
@@ -1806,7 +1864,7 @@ MDIRCV&nbsp; UI<br>
 </tr>
 </table>
 
-<p>albo (w Nokii 6250):
+<p>or (Nokia 6250):
 <p>
 <table BORDER CELLSPACING=0 CELLPADDING=0 >
 <tr>
@@ -1817,6 +1875,17 @@ MDIRCV&nbsp; UI<br>
 </tr>
 </table>
 
+<p>or (Nokia 9210):
+<p>
+<table BORDER CELLSPACING=0 CELLPADDING=0 >
+<tr>
+<td><tt><b>IDLE&nbsp; STRTUP<br>
+DEV_IO LOCAL<br>
+MDISND &nbsp;-RCV<br>
+UI &nbsp; &nbsp; &nbsp;TONE</b></tt></td>
+</tr>
+</table>
+
 </td>
 
 <td>
@@ -1829,7 +1898,7 @@ L1SYSP&nbsp; L2<br>
 </tr>
 </table>
 
-<p>albo (w Nokii 3210):
+<p>or (Nokia 3210):
 <p>
 <table BORDER CELLSPACING=0 CELLPADDING=0 >
 <tr>
@@ -1840,7 +1909,7 @@ L2&nbsp;&nbsp;&nbsp; CC</b></tt></td>
 </tr>
 </table>
 
-<p>albo (w Nokii 6210/6250):
+<p>or (Nokia 6210/6250):
 <p>
 <table BORDER CELLSPACING=0 CELLPADDING=0 >
 <tr>
@@ -1853,7 +1922,7 @@ PHCTRL &nbsp;L2
 </tr>
 </table>
 
-<p>albo (w Nokii 8210):
+<p>or (Nokia 8210):
 <p>
 <table BORDER CELLSPACING=0 CELLPADDING=0 >
 <tr>
@@ -1866,7 +1935,7 @@ CC &nbsp; &nbsp; &nbsp; &nbsp;MM<br>
 </tr>
 </table>
 
-<p>albo (w Nokii 8810):
+<p>or (Nokia 8810):
 <p>
 <table BORDER CELLSPACING=0 CELLPADDING=0 >
 <tr>
@@ -1877,6 +1946,19 @@ L1SYSP&nbsp; L2</b></tt></td>
 </tr>
 </table>
 
+<p>or (Nokia 9210):
+<p>
+<table BORDER CELLSPACING=0 CELLPADDING=0 >
+<tr>
+<td><tt><b>
+PN &nbsp; &nbsp; MBUS<br>
+FBUS &nbsp; &nbsp;AUD<br>
+AUDCOMM &nbsp;PH<br>
+L2 &nbsp; &nbsp; &nbsp; CC
+</b></tt></td>
+</tr>
+</table>
+
 </td>
 
 <td>
@@ -1889,7 +1971,7 @@ SIMUPL SIML2<br>
 </tr>
 </table>
 
-<p>albo (w Nokii 3210):
+<p>or (Nokia 3210):
 <p>
 <table BORDER CELLSPACING=0 CELLPADDING=0 >
 <tr>
@@ -1900,7 +1982,7 @@ SIML2 DDI</b></tt></td>
 </tr>
 </table>
 
-<p>albo (w Nokii 6210/6250):
+<p>or (Nokia 6210/6250):
 <p>
 <table BORDER CELLSPACING=0 CELLPADDING=0 >
 <tr>
@@ -1913,7 +1995,7 @@ DGC &nbsp;NTB FAX
 </tr>
 </table>
 
-<p>albo (w Nokii 8210):
+<p>or (Nokia 8210):
 <p>
 <table BORDER CELLSPACING=0 CELLPADDING=0 >
 <tr>
@@ -1926,7 +2008,7 @@ DDI &nbsp; &nbsp; &nbsp;DGC<br>
 </tr>
 </table>
 
-<p>albo (w Nokii 8810):
+<p>or (Nokia 8810):
 <p>
 <table BORDER CELLSPACING=0 CELLPADDING=0 >
 <tr>
@@ -1937,7 +2019,7 @@ SIMUPL SIML2</b></tt></td>
 </tr>
 </table>
 
-<p>albo (w Nokii 9110):
+<p>or (Nokia 9110):
 <p>
 <table BORDER CELLSPACING=0 CELLPADDING=0 >
 <tr>
@@ -1948,6 +2030,19 @@ SIMUPL SIML2<br>
 </tr>
 </table>
 
+<p>or (Nokia 9210):
+<p>
+<table BORDER CELLSPACING=0 CELLPADDING=0 >
+<tr>
+<td><tt><b>
+MM &nbsp; &nbsp; &nbsp; &nbsp;RR<br>
+RM &nbsp; &nbsp; &nbsp; SMS<br>
+EM &nbsp; &nbsp;SIMUPL<br>
+SIML2 &nbsp; &nbsp;DGC
+</b></tt></td>
+</tr>
+</table>
+
 </td>
 </tr>
 </table>
@@ -1955,14 +2050,14 @@ SIMUPL SIML2<br>
 <p>
 <ul>
 <li>
-aaaa, bbbb,... - zadanie 0, 1, itd.</li>
+aaaa, bbbb,... - task 0, 1, ...</li>
 </ul>
 
-<p>Liczby okre¶laj±ce, jak bardzo komórki pamiêci zwi±zane ze stosami s± puste
-w najgorszym wypadku (je¿eli pokazuje siê 0, stos jest pe³ny). Warto¶ci
-nie s± zapisywane w pamiêci przy wy³±czaniu telefonu.
+<p>Numbers tell how many stack memory locations have been empty in the worst
+case. So, if number is zero, stack has been full. Values are not written into
+EEPROM, when phone is disabled.
 
-<p>W Nokii 3110 test 86 wygl±da nastêpuj±co:
+<p>In Nokia 3110 test 86 looks like follow:
 
 <p>
 <table CELLSPACING=0 CELLPADDING=0 WIDTH="100%" >
@@ -1991,7 +2086,8 @@ DSPSWVersion</b></tt></td>
 </tr>
 </table>
 
-<p>Znaczenie parametrów aaaaa,cccccc, dddd i eee znajdziesz w <b><a href="#Menu88">te¶cie 88</a></b>.
+<p>Meaning of parameters aaaaa,cccccc, dddd and eee you will find in <b><a href="#Menu88">test
+88</a></b>.
 
 <p><a NAME="Menu87"></a><b>Test 87</b>
 
@@ -2026,7 +2122,7 @@ DSPSWVersion</b></tt></td>
 aaaa - OS_SYSTEM_STACK</li>
 </ul>
 
-<p>W Nokii 8810 menu to wygl±da tak:
+<p>In Nokia 8810 it looks different:
 
 <p>
 <table CELLSPACING=0 CELLPADDING=0 WIDTH="100%" >
@@ -2057,7 +2153,7 @@ aaaa - OS_SYSTEM_STACK</li>
 </tr>
 </table>
 
-<p>W Nokii 9110 menu to wygl±da natomiast tak:
+<p>In Nokia 9110 this test is different:
 
 <p>
 <table CELLSPACING=0 CELLPADDING=0 WIDTH="100%" >
@@ -2084,7 +2180,21 @@ aaaa - OS_SYSTEM_STACK</li>
 </tr>
 </table>
 
-<p>W Nokii 7110 jest jeszcze trochê inne:
+<p>In Nokia 9210:
+
+<p>
+<table BORDER CELLSPACING=0 CELLPADDING=0 >
+<tr>
+<td><tt><b>
+DGNTB &nbsp;DGFAX<br>
+DCS &nbsp; PMMCLE<br>
+PMMWR HELPER<br>
+&nbsp;
+</b></tt></td>
+</tr>
+</table>
+
+<p>In Nokia 7110 looks like follows:
 
 <p>
 <table CELLSPACING=0 CELLPADDING=0 WIDTH="100%" >
@@ -2117,7 +2227,7 @@ FIQ &nbsp; &nbsp;IRQ
 </tr>
 </table>
 
-<p>i w Nokii 6210/6250:
+<p>and in Nokia 6210/6250:
 
 <p>
 <table CELLSPACING=0 CELLPADDING=0 WIDTH="100%" >
@@ -2137,7 +2247,7 @@ FIQ &nbsp; &nbsp;IRQ
 </tr>
 </table>
 
-<p>i w Nokii 8210:
+<p>and in Nokia 8210:
 
 <p>
 <table CELLSPACING=0 CELLPADDING=0 WIDTH="100%" >
@@ -2156,7 +2266,7 @@ FIQ&nbsp; &nbsp; &nbsp; IRQ<br>&nbsp;
 </tr>
 </table>
 
-<p>Stan licznika nie jest zapisywany przy wy³±czaniu telefonu.
+<p>Values of counters are not saved to EEPROM, when phone is disabled.
 
 <p><a NAME="Menu88"></a><b>Test 88</b>
 
@@ -2190,43 +2300,93 @@ DSP_Version</b></tt></td>
 <p>
 <ul>
 <li>
-aaaaa i cccccc - wersja i data oprogramowania <a href="faq_net1.htm#MCU">MCU</a>
-(kody do ich sprawdzenia i ró¿nice miêdzy ró¿nymi ich wersjami
-s± szczegó³owo opisane na <a href="../firmware/firmware.htm">tej stronie</a>)</li>
-
-<li>
-bbbbbb - wersja wgranego do telefonu pakietu PPM (<b>P</b>ost-<b>p</b>rogramming <b>M</b>emory):
-firma <a href="http://www.nokia.com">Nokia</a> przygotowywuje ró¿ne wersje jêzykowe
-oprogramowania do swoich telefonów. S± one zapisywane w "paczkach" - ka¿da z nich
-zawiera komunikaty i obs³ugê kilku jêzyków.
-Powód takiego postêpowania jest prosty: komunikaty we wszystkich jêzykach Â¶wiata
-nie zmie¶ci³yby siê w pamiêci telefonów.
-Tutaj zobaczysz w³a¶nie wersjê wgranego pakietu <b>PPM</b>: jest to liczba
-zgodna z wersj± oprogramowania <a href="faq_net1.htm#MCU">MCU</a>, po której
-pojawia siê litera (mo¿e to byæ "A", "B", itd. - jêzyk polski jest dostêpny w pakiecie "B").
-I st±d zapewne jasne jest, Â¿e je¿eli Twój telefon zosta³ przywieziony z zagranicy
-i nie ma obs³ugi jakiego¶ jêzyka (polskiego ?), trzeba wgraæ do niego inny pakiet <b>PPM</b>.
-
-<p>Dla ciekawych: je¿eli chodzi o starsze modele (np. Nokiê 2110i) - tam nie by³o pakietów
-<b>PPM</b>, a zmiana wersji jêzykowej wi±za³a siê z wymian± CA£EGO oprogramowania s³uchawki.
-Czyta³em równie¿, i¿ sprzedawane telefony z "ogólnym" oprogramowaniem mia³y fabrycznie
-deaktywowan± obs³ugê niektórych jêzyków (np. greckiego) - mo¿na by³o j± w³±czyæ przy u¿yciu
-niektórych programów serwisowych (np. PC-Locals 0.6).
+aaaaa i cccccc - version and release date of <a href="faq_net1.htm#MCU">MCU</a> software
+(codes for their checking and changes among their different versions are <a href="../firmware/firmware.htm">here</a>)</li>
+
+<li>
+bbbbbb - version of downloaded PPM (<b>P</b>ost-<b>p</b>rogramming <b>M</b>emory) packet:
+<a href="http://www.nokia.com">Nokia Mobile Phones</a> prepares different language versions
+of firmware for phones. They're saved in "packets" - each of them contains messages and support
+for few languages. Why is it done ? It's simple: internal memory in our phones is still
+too small for all languages support. You will see version of <b>PPM</b> packet:
+it's the same number as version of <a href="faq_net1.htm#MCU">MCU</a> firmware. After it
+you have char (it can be "A", "B", etc. - for example, Polish language is in "B" packet).
+
+<p>For curious: in older models (like Nokia 2110i) nobody prepared <b>PPM</b> packets and
+preparing another language version was connected with modyfing ALL firmware. I readed too,
+that phones with "generic" firmware had normally disabled services for some languages
+(for example, Greek) - it could be enabled with some Nokia service programs (like Pc-Locals 0.6).
 <p>
 </li>
 
 <li>
-dddd - suma kontrolna pamiêci <a href="faq_net1.htm#MCU">MCU</a>
-(gdy jest b³êdna, telefon wy¶wietla CONTACT SERVICE)</li>
+dddd - <a href="faq_net1.htm#MCU">MCU</a> memory checksum
+(when it's wrong, phone display CONTACT SERVICE)</li>
 
 <li>
-eeeeeeeeeeee - wersja oprogramowania <a href="faq_net1.htm#DSP">DSP</a></li>
+eeeeeeeeeeee - <a href="faq_net1.htm#DSP">DSP</a> software version</li>
 </ul>
 
-<p>Informacje z tego menu s± równie¿ podawane w ró¿nych programach serwisowych (np.
-PC-Locals 1.3 albo WinTesli).
+<p>Information from this test are displayed in some Nokia service programs
+(like PC-Locals 1.3 or WinTesla) too.
+
+<p>In Nokia 6210 there are displayed "?" chars instead of "_" in help for this test...
+
+<p>In Nokia 9210:
+
+<p>
+<table CELLSPACING=0 CELLPADDING=0 WIDTH="100%" >
+<tr>
+
+<td>
+<table BORDER CELLSPACING=0 CELLPADDING=0 >
+<tr>
+<td><tt>
+Linda SW<br>
+aaaaa bbbbbb<br>
+ChkSum: cccc<br>
+HW: dddd
+</tt></td>
+</tr>
+</table>
+</td>
+
+<td>
+<table BORDER CELLSPACING=0 CELLPADDING=0 >
+<tr>
+
+<td><tt><i>
+Linda SW<br>
+03.62 011009<br>
+ChkSum: 5324<br>
+HW: 4000
+</i></tt></td>
+</tr>
+</table>
+</td>
 
-<p>W Nokii 6210 zamiast znaków "_" w pomocy pokazywane s± "?"
+<td>
+<table BORDER CELLSPACING=0 CELLPADDING=0 >
+<tr>
+<td><tt><b>
+Linda SW<br>
+Version Date<br>
+Checksum<br>
+HW Version
+</b></tt></td>
+</tr>
+</table>
+</td>
+</tr>
+</table>
+
+<p>
+<ul>
+<li>aaaaa - firmware in PDA</li>
+<li>bbbbbb - date of PDA firmware</li>
+<li>cccc - checksum</li>
+<li>dddd - hardware version</li>
+</ul>
 
 <p><a NAME="Menu89"></a><b>Test 89</b>
 
@@ -2258,24 +2418,82 @@ Text version<p>
 <p>
 <ul>
 <li>
-aaaa - wersja sprzêtowa telefonu (np. najnowsze mi znane Nokie 5110 pokazuj±
-tutaj 4220)</li>
+aaaa - phone hardware version (for example, the nevest Nokia 5110 I saw, display
+here 4220)</li>
 
 <li>
-bbbbbb - informacja, kiedy zosta³y opracowane teksty (prawdopodobnie nazwy operatorów)
-wy¶wietlane przez telefon</li>
+bbbbbb - information, when were prepared texts (probably operator names)
+displayed by phone
+</li>
+</ul>
+
+<p>In Nokia 9210:
+
+<p>
+<table CELLSPACING=0 CELLPADDING=0 WIDTH="100%" >
+<tr>
+
+<td>
+<table BORDER CELLSPACING=0 CELLPADDING=0 >
+<tr>
+<td><tt>
+CMT SW<br>
+aaaaa bbbbbb<br>
+PPM: &nbsp;cccccc<br>
+&nbsp;dddddddd
+</tt></td>
+</tr>
+</table>
+</td>
+
+<td>
+<table BORDER CELLSPACING=0 CELLPADDING=0 >
+<tr>
+
+<td><tt><i>
+CMT SW<br>
+03.21 011009<br>
+PPM: &nbsp;03.62A<br>
+&nbsp;40.1.501
+</i></tt></td>
+</tr>
+</table>
+</td>
+
+<td>
+<table BORDER CELLSPACING=0 CELLPADDING=0 >
+<tr>
+<td><tt><b>
+CMT SW<br>
+Version Date<br>
+PPM Version<br>
+DSP Version
+</b></tt></td>
+</tr>
+</table>
+</td>
+</tr>
+</table>
+
+<p>
+<ul>
+<li>aaaaa - version of firmware in phone module</li>
+<li>bbbbbb - date of firmware in phone module</li>
+<li>cccccc - PPM with firmware in phone module</li>
+<li>dddddddd - DSP firmware version</li>
 </ul>
 
 <font class="drukuj">
-<p><a class="shref" href="#Top"><small><em>Na pocz±tek</em></small></a><br>
+<p><a class="shref" href="#Top"><small><em>Back to the top</em></small></a><br>
 
 <center>
-<p><a href="faq_net0.htm">[Czê¶æ 1]</a><a href="faq_net1.htm">[Czê¶æ 2]</a><a href="faq_net2.htm">[Czê¶æ 3]</a><a href="faq_net3.htm">[Czê¶æ 4]</a><a href="faq_net4.htm">[Czê¶æ 5]</a><b>[Czê¶æ 6]</b><a href="faq_net6.htm">[Czê¶æ 7]</a>
+<p><a href="faq_net0.htm">[Part 1]</a><a href="faq_net1.htm">[Part 2]</a><a href="faq_net2.htm">[Part 3]</a><a href="faq_net3.htm">[Part 4]</a><a href="faq_net4.htm">[Part 5]</a><b>[Part 6]</b><a href="faq_net6.htm">[Part 7]</a>
 </center>
 <hr size="2" noshade width="60%" align="center" style="color: #004080">
 </font>
 
-<br><p align="RIGHT"><font class='autor' size='1'><a class="autoremail" href="mailto:Marcin Wi±cek<Marcin-Wiacek@topnet.pl>">Marcin Wi±cek</a> (<a class="autoremail" href="http://marcin-wiacek.topnet.pl">WWW</a>)
-<br>Ostatnia aktualizacja: 5 stycznia 2002</font>
+<br><p align="RIGHT"><font class='autor' size='1'><a class="autoremail" href="mailto:Marcin Wiacek<Marcin-Wiacek@topnet.pl>">Marcin Wiacek</a> (<a class="autoremail" href="http://marcin-wiacek.topnet.pl">WWW</a>)
+<br>Last modification: 10 March 2002</font>
+
 </body>
 </html>
index a405444..e4717f2 100644 (file)
@@ -67,6 +67,7 @@
 <li><a href="#39"><b>Can I activate netmonitor in 3310 using soft working with 3210 ?</b></a></li>
 <li><a href="#40"><b>After activating netmonitor/BTS TEST my phone can't find network...</b></a></li>
 <li><a href="#41"><b>Netmonitor shows different battery capacity than info on it...</b></a></li>
+<li><a href="#42"><b>NetMonitor in Nokia 6310, 8310,...</b></a></li>
 </ol>
 <hr size="2" noshade width="60%" align="center" style="color: #004080">
 </font>
@@ -119,6 +120,42 @@ page <a href="http://my-communicator.com/">http://my-communicator.com/</a>,
 where you will find more informations about it (for example, another ways
 to simulate them)...
 
+<p>In Nokia 9210:
+
+<p>
+<table CELLSPACING=0 CELLPADDING=0 WIDTH="100%" >
+<tr>
+<td>
+<table BORDER CELLSPACING=0 CELLPADDING=0 >
+<tr>
+<td><tt>&nbsp;Cover&nbsp; aaaa<br>
+&nbsp;CarKit bbbb<br>
+&nbsp;Heads&nbsp; cccc<br>
+&nbsp;Desks&nbsp; dddd</tt></td>
+</tr>
+</table>
+</td>
+
+<td>
+<table BORDER CELLSPACING=0 CELLPADDING=0 >
+<tr>
+<td><tt><b>CoverCnt<br>
+CarKitCnt<br>
+HeadsetCnt &nbsp;<br>
+DeskStandCnt</b></tt></td>
+</tr>
+</table>
+</td>
+</tr>
+</table>
+
+<p>
+<ul>
+<li>aaaa - how many times Communicator's cover was opened</li>
+<li>bbbb - how many times carkit was connected</li>
+<li>cccc - how many times headset was used</li>
+</ul>
+
 <p>here's for Nokia 5190:
 
 <p>
@@ -210,7 +247,7 @@ how many times they were erased.
 
 <p><a NAME="Menu91"></a><b>Test 91</b>
 
-<p>In Nokia 9110:
+<p>In Nokia 9110/9210:
 
 <p>
 <table CELLSPACING=0 CELLPADDING=0 WIDTH="100%" >
@@ -293,7 +330,7 @@ ErCnt&nbsp;ErMask<br>
 
 <p><a NAME="Menu92"></a><b>Test 92</b>
 
-<p>In Nokia 9110 it looks different:
+<p>In Nokia 9110/9210 it looks different:
 
 <p>
 <table CELLSPACING=0 CELLPADDING=0 WIDTH="100%" >
@@ -485,6 +522,41 @@ PpInd PpECnt
 bbbb=FFFE), parameters "eeeeffffffff" are equal "FFFFFFFFFFFF".
 Parameter "dddddddd" shows, how many times bank was erased.
 
+<p>In Nokia 9210 it's different:
+
+<p>
+<table CELLSPACING=0 CELLPADDING=0 WIDTH="100%" >
+<tr>
+<td>
+
+<table BORDER CELLSPACING=0 CELLPADDING=0 >
+<tr>
+<td><tt><i>
+&nbsp; Power on<br>
+&nbsp;CMT wakeup&nbsp;<br>
+&nbsp; enabled<br>&nbsp;</i></tt></td>
+</tr>
+</table>
+
+</td>
+
+<td>
+<table BORDER CELLSPACING=0 CELLPADDING=0 >
+<tr>
+<td><tt><b>Use menu to&nbsp;<br>
+&nbsp; toogle<br>
+&nbsp; &nbsp;state<br>
+&nbsp; ON/OFF</b></tt></td>
+</tr>
+</table>
+</td>
+</tr>
+</table>
+
+<p>You can set here (by direct enter), that phone module will be automatically
+enabled after each removing battery or software reset (for example, using
+Task Manager).
+
 <p><a NAME="Menu94"></a><b>Test 94</b>
 
 <p>Test in Nokia 3210:
@@ -572,6 +644,37 @@ InExc InRec<br>
 </tr>
 </table>
 
+<p>In Nokia 9210:
+
+<p>
+<table CELLSPACING=0 CELLPADDING=0 WIDTH="100%" >
+<tr>
+<td>
+
+<table BORDER CELLSPACING=0 CELLPADDING=0 >
+<tr>
+<td><tt><i>
+DEALLOC: &nbsp; 0<br>
+EEPROM: &nbsp; &nbsp;0<p>&nbsp;
+</i></tt></td>
+</tr>
+</table>
+
+</td>
+
+<td>
+<table BORDER CELLSPACING=0 CELLPADDING=0 >
+<tr>
+<td><tt><b>
+Error<br>
+counters &nbsp; &nbsp;<p>&nbsp;
+</b></tt></td>
+</tr>
+</table>
+</td>
+</tr>
+</table>
+
 <p><a NAME="Menu95"></a><b>Test 95</b>
 
 <p>In Nokia 3210
@@ -636,6 +739,41 @@ Pwr-Cls Mod
 </tr>
 </table>
 
+<p>In Nokia 9210:
+
+<p>
+<table CELLSPACING=0 CELLPADDING=0 WIDTH="100%" >
+<tr>
+<td>
+
+<table BORDER CELLSPACING=0 CELLPADDING=0 >
+<tr>
+<td><tt><i>
+&nbsp; &nbsp;0 &nbsp; &nbsp; &nbsp;0<br>
+&nbsp; &nbsp;0 &nbsp; &nbsp; &nbsp;0<br>
+00000000 &nbsp;00<br>
+00000000 &nbsp;00
+</i></tt></td>
+</tr>
+</table>
+
+</td>
+
+<td>
+<table BORDER CELLSPACING=0 CELLPADDING=0 >
+<tr>
+<td><tt><b>
+OpCod AccVio<br>
+Aligm PageFa<br>
+CodeAdd Exec<br>
+DataAdd CPSR
+</b></tt></td>
+</tr>
+</table>
+</td>
+</tr>
+</table>
+
 <p><a NAME="Menu96"></a><b>Test 96</b>
 
 <p>In Nokia 3210:
@@ -705,6 +843,35 @@ Offset &nbsp; &nbsp; C<br>&nbsp;
 </tr>
 </table>
 
+<p>In Nokia 9210:
+
+<p>
+<table CELLSPACING=0 CELLPADDING=0 WIDTH="100%" >
+<tr>
+<td>
+
+<table BORDER CELLSPACING=0 CELLPADDING=0 >
+<tr>
+<td><tt><i>
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<p>&nbsp;<br>&nbsp;
+</i></tt></td>
+</tr>
+</table>
+
+</td>
+
+<td>
+<table BORDER CELLSPACING=0 CELLPADDING=0 >
+<tr>
+<td><tt><b>
+Crash Info &nbsp;<p>&nbsp;<br>&nbsp;
+</b></tt></td>
+</tr>
+</table>
+</td>
+</tr>
+</table>
+
 <p><a NAME="Menu98"></a><b>Test 98</b>
 
 <p>
@@ -865,6 +1032,41 @@ Acc. status<br>
 </tr>
 </table>
 
+<p>In Nokia 9210:
+
+<p>
+<table CELLSPACING=0 CELLPADDING=0 WIDTH="100%" >
+<tr>
+<td>
+<table BORDER CELLSPACING=0 CELLPADDING=0 >
+<tr>
+<td><tt>
+<i>
+&nbsp; &nbsp; 0 &nbsp; &nbsp;0&nbsp;&nbsp;<br>
+&nbsp; &nbsp; 0 &nbsp; &nbsp;0<br>
+&nbsp; &nbsp;24 &nbsp; 24<br>
+&nbsp; &nbsp; 0 &nbsp; &nbsp;0
+</i>
+</tt></td>
+</tr>
+</table>
+</td>
+
+<td>
+<table BORDER CELLSPACING=0 CELLPADDING=0 >
+<tr>
+<td><tt><b>
+CCove PDAdis<br>
+BatLatch BSI<br>
+Bmax &nbsp; &nbsp;Bmin<br>
+TxOnTime MMC
+</b></tt></td>
+</tr>
+</table>
+</td>
+</tr>
+</table>
+
 <p><a NAME="Menu100"></a><b>Test 100</b>
 
 <p>Test from Nokia 9110:
@@ -1005,7 +1207,7 @@ that memory for them is empty)
 
 <p><a NAME="Menu101"></a><b>Test 101</b>
 
-<p>Test from Nokia 9110:
+<p>Test from Nokia 9110/9210:
 
 <p>
 <table CELLSPACING=0 CELLPADDING=0 WIDTH="100%" >
@@ -1173,6 +1375,36 @@ info<br>
 </tr>
 </table>
 
+<p>From Nokia 9210:
+
+<p>
+<table CELLSPACING=0 CELLPADDING=0 WIDTH="100%" >
+<tr>
+<td>
+<table BORDER CELLSPACING=0 CELLPADDING=0 >
+<tr>
+<td><tt><i>
+Data call &nbsp;&nbsp;<br>
+type:<br>
+PSTN<br>&nbsp;
+</i></tt></td>
+</tr>
+</table>
+</td>
+
+<td>
+<table BORDER CELLSPACING=0 CELLPADDING=0 >
+<tr>
+<td><tt><b>
+Data call &nbsp;&nbsp;<br>
+type<p>&nbsp;
+</b></tt></td>
+</tr>
+</table>
+</td>
+</tr>
+</table>
+
 <p>In Nokia 8210/3310 it's different (information about the recognizing voice tags
 in voice dialling feature):
 
@@ -1325,6 +1557,36 @@ Reservations<br>&nbsp;
 </tr>
 </table>
 
+<p>From Nokia 9210:
+
+<p>
+<table CELLSPACING=0 CELLPADDING=0 WIDTH="100%" >
+<tr>
+<td>
+<table BORDER CELLSPACING=0 CELLPADDING=0 >
+<tr>
+<td><tt><i>
+Incoming &nbsp; &nbsp;<br>
+call type:<br>
+Speech<br>&nbsp;
+</i></tt></td>
+</tr>
+</table>
+</td>
+
+<td>
+<table BORDER CELLSPACING=0 CELLPADDING=0 >
+<tr>
+<td><tt><b>
+Incoming<br>
+call type &nbsp;&nbsp;<p>&nbsp;
+</b></tt></td>
+</tr>
+</table>
+</td>
+</tr>
+</table>
+
 <p><a NAME="Menu104"></a><b>Test 104</b>
 
 <p>
@@ -1683,12 +1945,11 @@ Cu Sl Cc MnC
 </tr>
 </table>
 
-<p>New generation of Nokia phones (6210/6250/7110 and compatible)
+<p>Nokia 6210/6250/7110 and newer (new generations) 
 save ALL settings and datas (phonebook, SMS, ringtones, WAP, etc.)
-in one memory. It's called
+in flash memory as part of EEPROM. This part is called
 PMM (I don't know official meaning - unofficial it can be
-"Post Multiple Memory"). These tests show probably info about next banks of
-this memory:
+"Post Multiple Memory"). These tests show probably info about next banks of PMM:
 
 <p>
 <ul>
@@ -1702,6 +1963,102 @@ this memory:
 <li>ggggg - how many percent of memory is free (when add to ccccc, you have 100%)</li>
 </ul>
 
+<p>In Nokia 9210 test 110 looks like <a href=#Menu100>test 100</a> in Nokia 6210,
+test 111 like <a href=#Menu101>test 101</a> in Nokia 6210,
+test 112 is here:
+
+<p>
+<table CELLSPACING=0 CELLPADDING=0 WIDTH="100%" >
+<tr>
+
+<td>
+<table BORDER CELLSPACING=0 CELLPADDING=0 >
+<tr>
+<td><tt><i>
+100 &nbsp; 0 &nbsp;00<br>
+PoolS 003CC7<br>
+RsrvS 0022B6<br>&nbsp;
+</i></tt></td>
+</tr>
+</table>
+</td>
+
+<td>
+
+<p><table BORDER CELLSPACING=0 CELLPADDING=0 >
+<tr>
+<td><tt><b>
+%FW %BW FrCo<br>
+PoolSizeLeft<br>
+Reservations<br>&nbsp;
+</b></tt></td>
+</tr>
+</table>
+
+</td>
+</tr>
+</table>
+
+
+<p><a NAME="Menu117_119"></a><b>Test 117, 118, 119</b>
+
+
+<p>
+<table CELLSPACING=0 CELLPADDING=0 WIDTH="100%" >
+<tr>
+
+<td>
+<table BORDER CELLSPACING=0 CELLPADDING=0 >
+<tr>
+<td><tt>
+Ea bbbb &nbsp; &nbsp;&nbsp;<br>
+cccccc<p>&nbsp;
+</tt></td>
+</tr>
+</table>
+</td>
+
+<td>
+<table BORDER CELLSPACING=0 CELLPADDING=0 >
+<tr>
+<td><tt><i>
+E0 FFF8 &nbsp; &nbsp;&nbsp;<br>
+00001A<p>&nbsp;
+</i></tt></td>
+</tr>
+</table>
+</td>
+
+<td>
+
+<p><table BORDER CELLSPACING=0 CELLPADDING=0 >
+<tr>
+<td><tt><b>
+Ptn Sta&nbsp; &nbsp; &nbsp;<br>
+EraseCount<p>&nbsp;
+</b></tt></td>
+</tr>
+</table>
+
+</td>
+</tr>
+</table>
+
+<p>Is it info about PMM banks ?
+
+<p>
+<ul>
+<li>a - 0, 1 or 2</li>
+<li>bbbb - FFFF8 (bank is used ?) or FFFE (bank is empty ?)</li>
+<li>cccccc - 00001A or 00001B</li>
+</ul>
+
+<p><a NAME="Menu120_123"></a><b>Test 120, 121, 122, 123</b>
+
+<p>Info about PMM in Nokia 9210. These tests look like
+<a href=#Menu110_115>tests 110-115</a>,
+empty bank is marked as FFFE (like in Nokia 7110)
+
 <p><a NAME="Menu130"></a><b>Test 130</b>
 
 <p>Test from Nokia 7110:
@@ -2835,6 +3192,22 @@ In case of LiION battery you will find in netmonitor
 the same value as on battery casing, in NiMH batteries
 this value can differ even by 200 mAh (and it changes)... 
 
+<p><a NAME="42"></a><font color="#1F409F" size=+2 class="dzial">42. NetMonitor in Nokia 6310, 8310,...</font><br>
+<hr align="LEFT" size="3" width="300" color="#60c0a0" noshade>
+
+<p>Problems with activating netmonitor started with DCT-4 generation of Nokia phones.
+There are two possibilities:
+
+<p>
+<ol>
+<li>Nokia changed method of activation (if yes, earlier or later it will be
+known)</li>
+<li>in phones for "normal" users firmware is WITHOUT this function (no comments)</li>
+</ol>
+
+<p>It's very difficult to say something about it without flash dump from
+these phones for me
+
 <font class="drukuj">
 <p><a class="shref" href="#Top"><small><em>Back to the top</em></small></a>
 </font>
@@ -2846,7 +3219,7 @@ this value can differ even by 200 mAh (and it changes)...
 </font>
 
 <br><p align="RIGHT"><font class='autor' size='1'><a class="autoremail" href="mailto:Marcin Wiacek<Marcin-Wiacek@topnet.pl>">Marcin Wiacek</a> (<a class="autoremail" href="http://marcin-wiacek.topnet.pl">WWW</a>)
-<br>Last modification: 5 January 2002</font>
+<br>Last modification: 10 March 2002</font>
 
 </body>
 </html>
index ad9cf46..ab0d814 100644 (file)
@@ -1,14 +1,12 @@
 <html>
 <head>
-   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
-   <meta name="Author" content="Marcin Wi±cek">
-   <meta name="Description" content="Odsy³acze do testów w opisie monitora sieci">
-   <title>Odsy³acze do testów monitora sieci</title>
+   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+   <meta name="Author" content="Marcin Wiacek">
+   <title>Links of NetMonitor tests</title>
 
 <STYLE TYPE='text/css'><!--
-<!-- style z www.fkn.pl -->
-<!-- nieznacznie zmienione na potrzeby -->
-<!-- strony Marcina Wi±cka (www.marcin-wiacek.topnet.pl) -->
+<!-- styles from www.fkn.pl -->
+<!-- changed to page of Marcin Wiacek (www.marcin-wiacek.topnet.pl) -->
 BODY {font-family: Arial, Helvetica; margin-right: 0pt; font-weight: normal; font-size:10pt; text-decoration: none; color:#2B2B69}
 P {font-family: Arial, Helvetica; font-weight: normal; font-size:10pt; text-decoration: none; color:#2B2B69}
 font.menu {font-family: Arial, Helvetica; font-weight: bold; font-size:8pt; text-decoration: none; color:#2B2B69}
@@ -20,88 +18,90 @@ a.menu:active {font-family: Arial, Helvetica; font-weight: bold; font-size:8pt;
 </head>
 <body bgcolor="#FFFFFF" text="#2B2B69" link="#525FF5" vlink="#525FF5" alink="#2FA030">
 
-<center><font class=menu>Wybierz numer testu</font><p>
+<center><font class=menu>Select test number</font><p>
 
-<a class=menu href=faq_net2.htm#Menu1 title='Informacje o trybie komunikacji z komorka' target=main>1</a>
-<a class=menu href=faq_net2.htm#Menu2 title='Nastepne parametry sieci' target=main>2</a>
-<a class=menu href=faq_net2.htm#Menu3 title='Informacje o aktualnie uzywanej i sasiednich komorkach' target=main>3</a>
-<a class=menu href=faq_net2.htm#Menu4_5 title='Informacje o sasiednich komorkach' target=main>4</a>
-<a class=menu href=faq_net2.htm#Menu4_5 title='Informacje o sasiednich komorkach' target=main>5</a>
-<a class=menu href=faq_net2.htm#Menu6 title='Informacje o "preferowanych" i zabronionych sieciach wlozonej do telefonu karty SIM' target=main>6</a>
-<a class=menu href=faq_net2.htm#Menu7 title='Informacje o aktualnie uzywanej (ostatnio monitorowanej) komorce' target=main>7</a>
+<a class=menu href=faq_net2.htm#Menu1 title='Information about communication with cell ' target=main>1</a>
+<a class=menu href=faq_net2.htm#Menu2 title='More information about used cell' target=main>2</a>
+<a class=menu href=faq_net2.htm#Menu3 title='Information about current and neighbor cells' target=main>3</a>
+<a class=menu href=faq_net2.htm#Menu4 title='Information about neighbor cells' target=main>4</a>
+<a class=menu href=faq_net2.htm#Menu5 title='Information about neighbor cells' target=main>5</a>
+<a class=menu href=faq_net2.htm#Menu6 title='Information about preferred and restricted networks of the inserted SIM card' target=main>6</a>
+<a class=menu href=faq_net2.htm#Menu7 title='Information about current (recently monitored) cell' target=main>7</a>
 <a class=menu href=faq_net3.htm#Menu8 target=main>8</a>
 <a class=menu href=faq_net3.htm#Menu9 target=main>9</a>
-<a class=menu href=faq_net3.htm#Menu10 title='Informacje sieciowe (dotycza aktualnie uzywanej albo ostatnio monitorowanej sieci)' target=main>10</a>
-<a class=menu href=faq_net3.htm#Menu11 title='Identyfikacja aktualnie uzywanej (ostatnio monitorowanej) sieci' target=main>11</a>
-<a class=menu href=faq_net3.htm#Menu12 title='Parametry aktualnie uzywanej (ostatnio monitorowanej) sieci' target=main>12</a>
-<a class=menu href=faq_net3.htm#Menu13 title='Informacje o przerywanej transmisji (DTX) w aktualnie uzywanej (ostatnio monitorowanej) sieci' target=main>13</a>
-<a class=menu href=faq_net3.htm#Menu14 title='SCREENING INDICATOR (wartosci 0 albo 1)' target=main>14</a>
+<a class=menu href=faq_net3.htm#Menu10 title='Network information (concern current or recently monitored network)' target=main>10</a>
+<a class=menu href=faq_net3.htm#Menu11 title='Identification of the currently used (last monitored) network' target=main>11</a>
+<a class=menu href=faq_net3.htm#Menu12 title='Parameters of currently used (last monitored) network' target=main>12</a>
+<a class=menu href=faq_net3.htm#Menu13 title='Information about DTX in currently used (last monitored) network' target=main>13</a>
+<a class=menu href=faq_net3.htm#Menu14 title='SCREENING INDICATOR (values 0 or 1)' target=main>14</a>
 <a class=menu href=faq_net3.htm#Menu15 title='AMPS' target=main>15</a>
 <a class=menu href=faq_net3.htm#Menu17 title='BTS TEST' target=main>17</a>
-<a class=menu href=faq_net3.htm#Menu18 title='LIGHTS (wartosci 0 albo 1)' target=main>18</a>
-<a class=menu href=faq_net3.htm#Menu19 title='CELL BARR (ACCEPTED - tylko normalne komorki, REVERSE - tylko testowane, DISCARD - wszystkie)' target=main>19</a>
-<a class=menu href=faq_net3.htm#Menu20 title='Informacje o baterii i trybie pracy ladowarki' target=main>20</a>
-<a class=menu href=faq_net3.htm#Menu21 title='Parametry ladowania' target=main>21</a>
-<a class=menu href=faq_net3.htm#Menu22 title='Wskazniki pozwalajace ocenic parametry ladowania' target=main>22</a>
-<a class=menu href=faq_net3.htm#Menu23 title='Informacje o baterii' target=main>23</a>
+<a class=menu href=faq_net3.htm#Menu18 title='LIGHTS (values 0 or 1)' target=main>18</a>
+<a class=menu href=faq_net3.htm#Menu19 title='CELL BARR (ACCEPTED - only normal cells, REVERSE - only tested, DISCARD - all possible)' target=main>19</a>
+<a class=menu href=faq_net3.htm#Menu20 title='Information about battery and phone charger mode' target=main>20</a>
+<a class=menu href=faq_net3.htm#Menu21 title='Charging parameters' target=main>21</a>
+<a class=menu href=faq_net3.htm#Menu22 title='Charging parameters and indicators' target=main>22</a>
+<a class=menu href=faq_net3.htm#Menu23 title='Information about the battery' target=main>23</a>
 <a class=menu href=faq_net3.htm#Menu24 target=main>24</a>
 <a class=menu href=faq_net3.htm#Menu25 target=main>25</a>
-<a class=menu href=faq_net4.htm#Menu30 title='Test z zawartosciami rejestrow API dzwieku' target=main>30</a>
+<a class=menu href=faq_net4.htm#Menu30 title='Audio API register display' target=main>30</a>
+<a class=menu href=faq_net4.htm#Menu31 target=main>31</a>
 <a class=menu href=faq_net4.htm#Menu32 target=main>32</a>
-<a class=menu href=faq_net4.htm#Menu34 title='Informacje o polaczeniu telefonu z komputerem kablem FBUS' target=main>34</a>
-<a class=menu href=faq_net4.htm#Menu35 title='Przyczyna ostatniego restartu oprogramowania telefonu' target=main>35</a>
-<a class=menu href=faq_net4.htm#Menu36 title='Przyczyny restartu oprogramowania telefonu' target=main>36</a>
-<a class=menu href=faq_net4.htm#Menu38 title='Zrzut pamieci' target=main>38</a>
-<a class=menu href=faq_net4.htm#Menu39 title='Przyczyna zakonczenia ostatniego polaczenia' target=main>39</a>
-<a class=menu href=faq_net4.htm#Menu40 title='Zerowanie licznikow handover (testy 41-43)' target=main>40</a>
-<a class=menu href=faq_net4.htm#Menu41 title='Informacje o handoverach' target=main>41</a>
-<a class=menu href=faq_net4.htm#Menu42 title='Handovery Intra cell - Intra BSC w telefonach dualnych' target=main>42</a>
-<a class=menu href=faq_net4.htm#Menu43 title='Liczniki T200' target=main>43</a>
-<a class=menu href=faq_net4.htm#Menu44 title='REVISION LEVEL (wartosci 0 lub 1)' target=main>44</a>
-<a class=menu href=faq_net4.htm#Menu45 title='TRANSMITTER (ENABLED lub DISABLED)' target=main>45</a>
+<a class=menu href=faq_net4.htm#Menu34 title='Information about FBUS connection between phone and computer' target=main>34</a>
+<a class=menu href=faq_net4.htm#Menu35 title='Reason of last reboting internal firmware of phone' target=main>35</a>
+<a class=menu href=faq_net4.htm#Menu36 title='Reasons of last reboting internal firmware of phone' target=main>36</a>
+<a class=menu href=faq_net4.htm#Menu37 target=main>37</a>
+<a class=menu href=faq_net4.htm#Menu38 title='Memory dump' target=main>38</a>
+<a class=menu href=faq_net4.htm#Menu39 title='Reason of last connection end' target=main>39</a>
+<a class=menu href=faq_net4.htm#Menu40 title='Resets handover counters (tests 41-43)' target=main>40</a>
+<a class=menu href=faq_net4.htm#Menu41 title='Information about handovers' target=main>41</a>
+<a class=menu href=faq_net4.htm#Menu42 title='Intra cell - Intra BSC handovers counters (in dualband phone only)' target=main>42</a>
+<a class=menu href=faq_net4.htm#Menu43 title='T200 counters' target=main>43</a>
+<a class=menu href=faq_net4.htm#Menu44 title='REVISION LEVEL (values 0 or 1)' target=main>44</a>
+<a class=menu href=faq_net4.htm#Menu45 title='TRANSMITTER (ENABLED or DISABLED)' target=main>45</a>
 <a class=menu href=faq_net4.htm#Menu46 target=main>46</a>
-<a class=menu href=faq_net4.htm#Menu48 title='Informacje o aktualnie uzywanej (ostatnio monitorowanej) komorce (Nokia 3110)' target=main>48</a>
-<a class=menu href=faq_net4.htm#Menu51 title='Informacje o karcie SIM' target=main>51</a>
-<a class=menu href=faq_net4.htm#Menu52 title='Czytanie zawartosci karty SIM' target=main>52</a>
-<a class=menu href=faq_net4.htm#Menu53 title='Zmiana komorek karty SIM' target=main>53</a>
-<a class=menu href=faq_net4.htm#Menu54 title='Informacje o blokach pamieci' target=main>54</a>
-<a class=menu href=faq_net4.htm#Menu55 title='Informacje o blokach pamieci' target=main>55</a>
-<a class=menu href=faq_net4.htm#Menu56 title='Informacje o blokach pamieci' target=main>56</a>
-<a class=menu href=faq_net4.htm#Menu57 title='Stan pamieci telefonu przed restartem' target=main>57</a>
+<a class=menu href=faq_net4.htm#Menu48 title='Information about current (recently monitored) cell (Nokia 3110)' target=main>48</a>
+<a class=menu href=faq_net4.htm#Menu51 title='Information about SIM card' target=main>51</a>
+<a class=menu href=faq_net4.htm#Menu52 title='Reads datafield from SIM card' target=main>52</a>
+<a class=menu href=faq_net4.htm#Menu53 title='Writes datafield into SIM card' target=main>53</a>
+<a class=menu href=faq_net4.htm#Menu54 title='Information about memory blocks' target=main>54</a>
+<a class=menu href=faq_net4.htm#Menu55 title='Information about memory blocks' target=main>55</a>
+<a class=menu href=faq_net4.htm#Menu56 title='Block display' target=main>56</a>
+<a class=menu href=faq_net4.htm#Menu57 title='Memory status before reset' target=main>57</a>
 <a class=menu href=faq_net5.htm#Menu58 target=main>58</a>
 <a class=menu href=faq_net5.htm#Menu59 target=main>59</a>
-<a class=menu href=faq_net5.htm#Menu60 title='Zerowanie licznikow handover (testy 41-43) i testow 61-66' target=main>60</a>
-<a class=menu href=faq_net5.htm#Menu61 title='Liczniki braku PSW, synchronizacji i powtornych wyborow komorki' target=main>61</a>
-<a class=menu href=faq_net5.htm#Menu62 title='Liczniki PSW, synchronizacji w sasiednich komorkach i pomiarow BCCH' target=main>62</a>
-<a class=menu href=faq_net5.htm#Menu63 title='Liczniki polaczen' target=main>63</a>
-<a class=menu href=faq_net5.htm#Menu64 title='Liczniki Location Update' target=main>64</a>
-<a class=menu href=faq_net5.htm#Menu65 title='Liczniki SMSow' target=main>65</a>
-<a class=menu href=faq_net5.htm#Menu66 title='Liczniki przekroczenia czasu (zwiazane z SMSami)' target=main>66</a>
+<a class=menu href=faq_net5.htm#Menu60 title='Resets handover counters (tests 41-43) and tests 61-66' target=main>60</a>
+<a class=menu href=faq_net5.htm#Menu61 title='Counters for non PSW, synchronization measurement attempts and cell reselections' target=main>61</a>
+<a class=menu href=faq_net5.htm#Menu62 title='Counters for PSW, neighbour synchronization measurement attempts and BCCH measurement attempts' target=main>62</a>
+<a class=menu href=faq_net5.htm#Menu63 title='Calls counters' target=main>63</a>
+<a class=menu href=faq_net5.htm#Menu64 title='Location Update counters' target=main>64</a>
+<a class=menu href=faq_net5.htm#Menu65 title='SMS counters' target=main>65</a>
+<a class=menu href=faq_net5.htm#Menu66 title='Timeout counters (connected with SMS)' target=main>66</a>
 <a class=menu href=faq_net5.htm#Menu67 target=main>67</a>
 <a class=menu href=faq_net5.htm#Menu68 target=main>68</a>
-<a class=menu href=faq_net5.htm#Menu70 title='Rejestry DSP' target=main>70</a>
+<a class=menu href=faq_net5.htm#Menu70 title='Temporary counters of DSP' target=main>70</a>
 <a class=menu href=faq_net5.htm#Menu71_72 title='AUDIO ENHANCEMENT' target=main>71</a>
 <a class=menu href=faq_net5.htm#Menu71_72 title='AUDIO ENHANCEMENT' target=main>72</a>
-<a class=menu href=faq_net5.htm#Menu73 title='Ogolne informacje o ustawieniach DSP' target=main>73</a>
-<a class=menu href=faq_net5.htm#Menu74 title='Informacje o glosnosci podczas rozmowy' target=main>74</a>
-<a class=menu href=faq_net5.htm#Menu75 title='Informacje o trybie pracy podlaczonych akcesoriow' target=main>75</a>
-<a class=menu href=faq_net5.htm#Menu76 title='Informacje o dzwieku, ktory Ty slyszysz w swoim telefonie' target=main>76</a>
-<a class=menu href=faq_net5.htm#Menu77 title='Informacje o dzwieku, ktory slyszy Twoj rozmowca' target=main>77</a>
-<a class=menu href=faq_net5.htm#Menu78 title='Kolejne parametry DSP' target=main>78</a>
-<a class=menu href=faq_net5.htm#Menu79 title='Kolejne parametry DSP' target=main>79</a>
-<a class=menu href=faq_net5.htm#Menu80 title='Zerowanie licznikow z testu 82' target=main>80</a>
-<a class=menu href=faq_net5.htm#Menu81 title='Wlaczanie/wylaczanie licznikow z testu 82' target=main>81</a>
-<a class=menu href=faq_net5.htm#Menu82 title='Liczniki czasu (ile czasu telefon jest wlaczony, itp.)' target=main>82</a>
-<a class=menu href=faq_net5.htm#Menu83 title='Zmienia wartosci wyswietlane w testach 84-87' target=main>83</a>
+<a class=menu href=faq_net5.htm#Menu73 title='Generic display for DSP Audio Enhancements' target=main>73</a>
+<a class=menu href=faq_net5.htm#Menu74 title='DSP audio enhancements 1 (DRC)' target=main>74</a>
+<a class=menu href=faq_net5.htm#Menu75 title='Audio path status' target=main>75</a>
+<a class=menu href=faq_net5.htm#Menu76 title='Ear (= downlink) audio display' target=main>76</a>
+<a class=menu href=faq_net5.htm#Menu77 title='Microphone (= uplink) audio display' target=main>77</a>
+<a class=menu href=faq_net5.htm#Menu78 title='DSP audio enhancements (AEC)' target=main>78</a>
+<a class=menu href=faq_net5.htm#Menu79 title='Audio equalizer display' target=main>79</a>
+<a class=menu href=faq_net5.htm#Menu80 title='Resets counters from test 82' target=main>80</a>
+<a class=menu href=faq_net5.htm#Menu81 title='Enables/disables counters from test 82' target=main>81</a>
+<a class=menu href=faq_net5.htm#Menu82 title='Time counters (how long phone is enabled, etc.)' target=main>82</a>
+<a class=menu href=faq_net5.htm#Menu83 title='Changes values displayed in tests 84-87' target=main>83</a>
 <a class=menu href=faq_net5.htm#Menu84_86 target=main>84</a>
 <a class=menu href=faq_net5.htm#Menu85_86 target=main>85</a>
 <a class=menu href=faq_net5.htm#Menu86_86 target=main>86</a>
 <a class=menu href=faq_net5.htm#Menu87 target=main>87</a>
-<a class=menu href=faq_net5.htm#Menu88 title='Informacje o wersjach DSP i oprogramowania, suma kontrolna pamieci' target=main>88</a>
-<a class=menu href=faq_net5.htm#Menu89 title='Wersja sprzetowa telefonu (i nazw operatorow)' target=main>89</a>
-<a class=menu href=faq_net6.htm#Menu90 title='Liczniki otwarc pokrywy i podlaczen zestawow (sluchawkowego i samochodowego)' target=main>90</a>
-<a class=menu href=faq_net6.htm#Menu91 title='Zeruje liczniki z testu 90' target=main>91</a>
-<a class=menu href=faq_net6.htm#Menu92 title="Aktywuje profil 'headset'" target=main>92</a>
+<a class=menu href=faq_net5.htm#Menu88 title='Information about DSP and firmware versions, memory checksum' target=main>88</a>
+<a class=menu href=faq_net5.htm#Menu89 title='Hardware and operator names versions' target=main>89</a>
+<a class=menu href=faq_net6.htm#Menu90 title='Counters for opening phone's cover and connecting audio accesories' target=main>90</a>
+<a class=menu href=faq_net6.htm#Menu91 title='Resets counters from test 90' target=main>91</a>
+<a class=menu href=faq_net6.htm#Menu92 title="Enables 'headset' profile" target=main>92</a>
 <a class=menu href=faq_net6.htm#Menu93 target=main>93</a>
 <a class=menu href=faq_net6.htm#Menu94 target=main>94</a>
 <a class=menu href=faq_net6.htm#Menu95 target=main>95</a>
@@ -119,16 +119,18 @@ a.menu:active {font-family: Arial, Helvetica; font-weight: bold; font-size:8pt;
 <a class=menu href=faq_net6.htm#Menu108 target=main>108</a>
 <a class=menu href=faq_net6.htm#Menu109 target=main>109</a>
 <a class=menu href=faq_net6.htm#Menu110_115 target=main>110-115</a>
+<a class=menu href=faq_net6.htm#Menu117_119 target=main>117-119</a>
+<a class=menu href=faq_net6.htm#Menu120_123 target=main>120-123</a>
 <a class=menu href=faq_net6.htm#Menu130 target=main>130</a>
 <a class=menu href=faq_net6.htm#Menu131 target=main>131</a>
 <a class=menu href=faq_net6.htm#Menu132 target=main>132</a>
 <a class=menu href=faq_net6.htm#Menu133 target=main>133</a>
 <a class=menu href=faq_net6.htm#Menu140 target=main>140</a>
-<a class=menu href=faq_net6.htm#Menu240 title='Zeruje liczniki z testow 41-43, 61-62 i 82 (ten ostatni rowniez wlacza)' target=main>240</a>
-<a class=menu href=faq_net6.htm#Menu241 title='Wylacza monitor sieci' target=main>241</a>
-<a class=menu href=faq_net6.htm#Menu242 title='Wlacza okrojony monitor sieci' target=main>242</a>
-<a class=menu href=faq_net6.htm#Menu243 title='Wlacza pelen monitor (ten test mozna uzyc tylko z komputera)' target=main>243</a>
-<a class=menu href=faq_net6.htm#Menu250 title='Czysci informacje z testu 57' target=main>250</a>
+<a class=menu href=faq_net6.htm#Menu240 title='Resets counters from tests 41-43, 61-62 and 82 (and enables last of them)' target=main>240</a>
+<a class=menu href=faq_net6.htm#Menu241 title='Disables network monitor' target=main>241</a>
+<a class=menu href=faq_net6.htm#Menu242 title='Enables limited network monitor' target=main>242</a>
+<a class=menu href=faq_net6.htm#Menu243 title='Enables full network monitor (this test can be used from computer only)' target=main>243</a>
+<a class=menu href=faq_net6.htm#Menu250 title='Clears values from test 57' target=main>250</a>
 <a class=menu href=faq_net6.htm#Menu497 title='' target=main>497</a>
 
 </center>
index 3106a75..13b4584 100644 (file)
@@ -12,6 +12,7 @@ connection = fbus
 bindir = /usr/local/sbin/
 synchronizetime = yes
 ;logfile = mygnokiilog
+;use_locking = yes
 
 [gnokiid]
 
@@ -130,6 +131,14 @@ path = c:\
 # Method 1 is better. When not possible (for example, when have only
 # compiled binary version), use 2.
 
+# USE_LOCKING
+# -----------
+# Under Unix set this to 'yes' if you want gnokii to set and check the
+# lock file in /var/lock directory. It avoids potential conflicts with
+# other serial port software (eg. minicom). If you have wrong permissions
+# for the directory, a warning will be generated. If you don't want a lockfile,
+# set it to 'no'.
+
 #                                 EXAMPLES
 
 #1.Nokia 5110, fbus cable on "/dev/ttyS1" port with gnokii/xgnokii
diff --git a/INSTALL b/INSTALL
index 3551ce2..7d5654f 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -16,7 +16,7 @@
                        Install path prefix. Default /usr/local/
 
                --without-x
-                       Compile without GTK (Xwin) programs
+                       Compile without GTK (X11) programs
                
                --disable-nls
                        Set if you don't have/want GNU gettext support
        Good default (example):
 
                ./configure --prefix=/usr \
-                           --enable-gettext
+                           --enable-security
 
 2/
        compilation:
        
-               make 
+               make (or make gnokii-debug to create staticlly linked binary
+                       -- mainly for debugging)
                groupadd gnokii  - it is really needed
                (make dep - if you want/need) 
-               make install
+               make install or make install-suid or make install-strip or
+                       make install-ss (suid + strip)
                make install-docs
 
        clean source:
diff --git a/readme b/README
similarity index 78%
rename from readme
rename to README
index 33e95cc..ceccec6 100644 (file)
--- a/readme
+++ b/README
@@ -2,18 +2,21 @@
 ----------------
 This is my own version of gnokii...
 
-It's related rather to improvements in command line gnokii and in the main code.
 It was created from CVS gnokii 0.3.3_pre8-gold and contains many other changes.
 I decided to make it, since gnokii project seemed to be frozen (from 07.2000 ?)
-and my changes were ignored
+and my changes were ignored.
 
 In this moment CVS gnokii is developed again. It went into different
 direction (doesn't use threads and probably will work better on multi CPU
 systems), but many functions still are worse than in mygnokii
-Now there is small cooperation of these two projects(some new CVS source is in mygnokii and some things from mygnokii are in CVS),but they're more and more different and I don't know, if they will join
-again (well, I implemented almost all Smart Messaging and other functions
+
+Now there is small cooperation of these two projects(some new CVS source is in
+mygnokii and some things from mygnokii are in CVS), but they're more and more
+different and I don't think, that they will join again
+(well, I implemented almost all Smart Messaging and other functions
 Everything works rather correct and only bugs need to be removed. Because of
-it I'm not sure, if it will have sence for me to write it again for CVS gnokii- especially, that I don't like organisation there and IMHO every change needs
+it I'm not sure, if it will have sence for me to write it again for CVS gnokii-
+especially, that I don't like organisation there and IMHO every change needs
 there tons of explanations and emails)
 
 So, if you think, that mygnokii works better for you, use it and please help
@@ -43,20 +46,17 @@ Make "patch < patchfile", where patchfile is name of file with patch.
 5.TODO
 ------
 6210:
-  * setting Picture Images
   * support for voice tags in phonebook
   * NBS (with preview) uploading for caller/op logos
-  * test and eventually make full support for speed dials
+  * probably speed dials need some improvements
 
 Other:
-  * make DLR3 init using AT-commands (will work for more phones)
   * support for 5210, 5510, 6310, 6510, 8310 (sniffs required)
   * support for irda sockets in win32
   * EMS
   * support for more AT phones and commands
-  * compatibility with gnomecal (Bostjan - I remember ;-))
+  * compatibility with gnomecal
   * end xgnokii
-  * move some things from gnokii (lockfile, setting smsc in gnokii)
 
 6.BUGS and INCOMPATIBILITIES
 ----------------------------
@@ -74,5 +74,6 @@ Other:
 -----
 If know some other, please let me know to marcin-wiacek@topnet.pl.
 Please include version of mygnokii, description of bug and debug info from it
-(you can use "logfile" option in gnokiirc to make it).
+(the best, if you can compile it with debug and send me it; if have only
+ executables, you can use "logfile" option in gnokiirc to make it).
  
\ No newline at end of file
diff --git a/VERSION b/VERSION
index 3a1e380..2a8e926 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-0.3.3_pre8-gold_2002_02_24
+0.3.3_pre8-gold_2002_03_10
index e396803..2dad729 100644 (file)
@@ -35,12 +35,14 @@ OBJS =      devices/device.o \
        files/cfgreader.o \
        misc.o \
        protocol/fbus.o \
+       protocol/fbus3110.o \
        protocol/fbusirda.o \
        protocol/mbus.o \
        protocol/at.o \
        newmodules/sniff/sniff.o \
        newmodules/newat.o \
        newmodules/n6110.o \
+       newmodules/n3110.o \
        newmodules/n7110.o
 
 DATA_OBJS = data/virtmodem.o \
index 9795a79..bf48de3 100644 (file)
@@ -24,6 +24,7 @@
 
 #include "gsm-api.h"
 #include "devices/device.h"
+#include "files/cfgreader.h"
 
 #include <string.h>
 
@@ -38,6 +39,8 @@ bool duringwrite;
 
 #ifndef WIN32
 
+char *lockfile;
+
 //pthread_t Thread;
 #if defined(__svr4__) || defined(__FreeBSD__)
   pthread_t selThread;
@@ -45,6 +48,110 @@ bool duringwrite;
 
 int device_portfd = -1;
 
+#define max_buf_len 128
+#define lock_path "/var/lock/LCK.."
+
+/* Lock the device. Return allocated string with a lock name */
+char *lock_device(const char* port)
+{
+       char *lock_file = NULL;
+       char buffer[max_buf_len];
+       const char *aux = rindex(port, '/');
+       int fd, len = strlen(aux) + strlen(lock_path);
+
+       /* Remove leading '/' */
+       if (aux) aux++;
+       else aux = port;
+
+       memset(buffer, 0, sizeof(buffer));
+       lock_file = calloc(len + 1, 1);
+       if (!lock_file) {
+               fprintf(stderr, _("Out of memory error while locking device\n"));
+               return NULL;
+       }
+       /* I think we don't need to use strncpy, as we should have enough
+        * buffer due to strlen results
+        */
+       strcpy(lock_file, lock_path);
+       strcat(lock_file, aux);
+
+       /* Check for the stale lockfile.
+        * The code taken from minicom by Miquel van Smoorenburg */
+       if ((fd = open(lock_file, O_RDONLY)) >= 0) {
+               char buf[max_buf_len];
+               int pid, n = 0;
+
+               n = read(fd, buf, sizeof(buf) - 1);
+               close(fd);
+               if (n > 0) {
+                       pid = -1;
+                       if (n == 4)
+                               /* Kermit-style lockfile. */
+                               pid = *(int *)buf;
+                       else {
+                               /* Ascii lockfile. */
+                               buf[n] = 0;
+                               sscanf(buf, "%d", &pid);
+                       }
+                       if (pid > 0 && kill((pid_t)pid, 0) < 0 && errno == ESRCH) {
+                               fprintf(stderr, _("Lockfile %s is stale. Overriding it..\n"), lock_file);
+                               sleep(1);
+                               if (unlink(lock_file) == -1) {
+                                       fprintf(stderr, _("Overriding failed, please check the permissions\n"));
+                                       fprintf(stderr, _("Cannot lock device\n"));
+                                       goto failed;
+                               }
+                       } else {
+                               fprintf(stderr, _("Device already locked.\n"));
+                               goto failed;
+                       }
+               }
+               /* this must not happen. because we could open the file   */
+               /* no wrong permissions are set. only reason could be     */
+               /* flock/lockf or a empty lockfile due to a broken binary */
+               /* which is more likely (like gnokii 0.4.0pre11 ;-)       */
+               if (n == 0) {
+                       fprintf(stderr, _("Unable to read lockfile %s.\n"), lock_file);
+                       fprintf(stderr, _("Please check for reason and remove the lockfile by hand.\n"));
+                       fprintf(stderr, _("Cannot lock device\n"));
+                       goto failed;
+               }
+       }
+
+       /* Try to create a new file, with 0644 mode */
+       fd = open(lock_file, O_CREAT | O_EXCL | O_WRONLY, 0644);
+       if (fd == -1) {
+               if (errno == EEXIST)
+                       fprintf(stderr, _("Device seems to be locked by unknown process\n"));
+               else if (errno == EACCES)
+                       fprintf(stderr, _("Please check permission on lock directory\n"));
+               else if (errno == ENOENT)
+                       fprintf(stderr, _("Cannot create lockfile %s. Please check for existence of path"), lock_file);
+               goto failed;
+       }
+       sprintf(buffer, "%10ld gnokii\n", (long)getpid());
+       write(fd, buffer, strlen(buffer));
+       close(fd);
+       return lock_file;
+failed:
+       free(lock_file);
+       return NULL;
+}
+
+/* Removes lock and frees memory */
+bool unlock_device(char *lock_file)
+{
+       int err;
+
+       if (!lock_file) {
+//             fprintf(stderr, _("Cannot unlock device\n"));
+               return false;
+       }
+       err = unlink(lock_file);
+       free(lock_file);
+       return (err + 1);
+}
+
 /*
  * Structure to store the filedescriptor we use.
  *
@@ -55,7 +162,20 @@ int device_getfd(void)
 }
 
 int device_open(__const char *__file, int __with_odd_parity) {
-
+  struct CFG_Header *cfg_info;
+  char *aux;   
+
+  cfg_info=CFG_FindGnokiirc();
+  if (cfg_info!=NULL) {
+    aux = CFG_Get(cfg_info, "global", "use_locking");
+    if (aux) {
+      if (!strcmp(aux, "yes")) {
+        lockfile = lock_device(__file);
+        if (!lockfile) return false;
+      }
+    }
+  }
+  
   switch (CurrentConnectionType) {
     case GCT_Tekram:
       device_portfd = tekram_open(__file);
@@ -78,6 +198,8 @@ void device_close(void)
   /* Now wait for thread to terminate. */
   //pthread_join(Thread, NULL);
 
+  unlock_device(lockfile);
+  
   switch (CurrentConnectionType) {
     case GCT_Tekram: tekram_close(device_portfd); break;
     case GCT_Irda  :   irda_close(device_portfd); break;
index 7ad6128..bc7e37e 100644 (file)
@@ -81,10 +81,8 @@ int serial_open(__const char *__file, int __oflag) {
   if(retcode==-1) {
     perror("Gnokii serial_open:tcgetattr");
     /* Don't call serial_close since serial_termios is not valid */
-#if 0
     close(__fd);
     return(-1);
-#endif
   }
   
   return __fd;
@@ -110,7 +108,7 @@ int serial_opendevice(__const char *__file, int __with_odd_parity, int __with_as
 
   /* Open device */
 
-  fd = serial_open(__file, O_RDONLY | O_NOCTTY | O_NONBLOCK);
+  fd = serial_open(__file, O_RDWR | O_NOCTTY | O_NONBLOCK);
 
   if (fd < 0) 
     return fd;
@@ -121,10 +119,8 @@ int serial_opendevice(__const char *__file, int __with_odd_parity, int __with_as
   retcode = fcntl(fd, F_SETOWN, getpid());
   if (retcode == -1){
     perror("Gnokii serial_opendevice: fnctl(F_SETOWN)");
-#if 0
     serial_close(fd);
     return(-1);
-#endif
   }
 #endif
 
@@ -134,10 +130,8 @@ int serial_opendevice(__const char *__file, int __with_odd_parity, int __with_as
     retcode=fcntl(fd, F_SETFL, FASYNC);
     if (retcode == -1){
       perror("Gnokii serial_opendevice: fnctl(F_SETFL)");
-#if 0
       serial_close(fd);
       return(-1);
-#endif
     }
   }
   
@@ -167,19 +161,15 @@ int serial_opendevice(__const char *__file, int __with_odd_parity, int __with_as
   retcode=tcflush(fd, TCIFLUSH);
   if (retcode == -1) {
     perror("Gnokii serial_opendevice: tcflush");
-#if 0
     serial_close(fd);
     return(-1);
-#endif
   }
 
   retcode=tcsetattr(fd, TCSANOW, &tp);
   if (retcode == -1){
     perror("Gnokii serial_opendevice: tcsetattr");
-#if 0
     serial_close(fd);
     return(-1);
-#endif
   }
 
   return fd;
@@ -270,10 +260,7 @@ size_t serial_read(int __fd, __ptr_t __buf, size_t __nbytes) {
 
 size_t serial_write(int __fd, __const __ptr_t __buf, size_t __n) {
        
-#if 0
        return (write(__fd, __buf, __n));
-#endif
-       return __n;
 }
 
 #endif  /* WIN32 */
index fc087f6..dd0e575 100644 (file)
@@ -48,7 +48,7 @@ struct CFG_Header *CFG_ReadFile(char *filename)
         /* Open file */
         if ((handle = fopen(filename, "r")) == NULL) {
 #ifdef DEBUG
-                fprintf( stderr, "CFG_ReadFile - open %s: %s\n", filename, strerror(errno));
+//                fprintf( stderr, "CFG_ReadFile - open %s: %s\n", filename, strerror(errno));
 #endif /* DEBUG */
                 return NULL;
         }
@@ -104,7 +104,7 @@ struct CFG_Header *CFG_ReadFile(char *filename)
                         cfg_info = heading;
 
 #ifdef DEBUG
-                        fprintf(stderr, "Added new section %s\n", heading->section);
+//                        fprintf(stderr, "Added new section %s\n", heading->section);
 #endif
                         /* Go on to next line */
 
@@ -153,7 +153,7 @@ struct CFG_Header *CFG_ReadFile(char *filename)
                         cfg_info->entries = entry;
 
 #ifdef DEBUG
-                        fprintf(stderr, "Adding key/value %s/%s\n", entry->key, entry->value);
+//                        fprintf(stderr, "Adding key/value %s/%s\n", entry->key, entry->value);
 #endif
                         /* Go on to next line */
                         continue;
@@ -254,7 +254,7 @@ struct CFG_Header *CFG_FindGnokiirc()
 #else
         homedir = getenv("HOME");
         if (homedir) strncpy(rcfile, homedir, 200);
-        strncat(rcfile, "/.mygnokiirc", 200);
+        strncat(rcfile, "/.gnokiirc", 200);
 #endif
 
         /* Try opening .gnokirc from users home directory first */
@@ -265,7 +265,7 @@ struct CFG_Header *CFG_FindGnokiirc()
                 if ((cfg_info = CFG_ReadFile("/etc/gnokiirc")) == NULL) {
                         /* That failed too so exit */
 #ifdef DEBUG
-                        fprintf(stderr, _("Couldn't open %s or /etc/gnokiirc. Using defaults...\n"), rcfile);
+//                        fprintf(stderr, _("Couldn't open %s or /etc/gnokiirc. Using defaults...\n"), rcfile);
 #endif /* DEBUG */
                         return NULL;
                 }
@@ -276,7 +276,7 @@ struct CFG_Header *CFG_FindGnokiirc()
                 if ((cfg_info = CFG_ReadFile("gnokiirc")) == NULL) {
                         /* That failed too so exit */
 #ifdef DEBUG
-                        fprintf(stderr, _("Couldn't open %s or gnokiirc. Using defaults...\n"), rcfile);
+//                        fprintf(stderr, _("Couldn't open %s or gnokiirc. Using defaults...\n"), rcfile);
 #endif /* DEBUG */
                         return NULL;
                 }
index e431fa4..8e5fc39 100644 (file)
@@ -2081,7 +2081,10 @@ void loadlmbpbkentry(unsigned char *buffer, unsigned char *buffer2, GSM_Backup *
 
 void loadlmbstartupentry(unsigned char *buffer, unsigned char *buffer2, GSM_Backup *backup)
 {
-  int i,j,z;
+  int i,j;
+#ifdef DEBUG
+  int z;
+#endif
 
   j=1;
   for (i=0;i<buffer2[0];i++) {
index 5a91da9..3c090a0 100644 (file)
@@ -30,6 +30,7 @@
 
 #include "gsm-api.h"
 
+#include "newmodules/n3110.h"
 #include "newmodules/n6110.h"
 #include "newmodules/n7110.h"
 #include "newmodules/newat.h"
@@ -38,6 +39,7 @@
 #endif
 #include "protocol/fbusirda.h"
 #include "protocol/fbus.h"
+#include "protocol/fbus3110.h"
 #include "protocol/mbus.h"
 #include "protocol/at.h"
 #include "files/cfgreader.h"
@@ -247,6 +249,9 @@ bool CheckModel (GSM_Information InfoToCheck, char *model, GSM_ConnectionType co
   if (strstr(InfoToCheck.TekramModels, model) != NULL) {
     if (connection==GCT_Tekram) found_match=true;
   }
+  if (strstr(InfoToCheck.FBUS3110Models, model) != NULL) {
+    if (connection==GCT_FBUS3110) found_match=true;
+  }
 
   return found_match;
 }
@@ -298,7 +303,8 @@ GSM_Error TryNewNokia(char *model, char *device, char *initlength, GSM_Connectio
   while (N6110_GetModel(phonemodel) != GE_NONE)
     sleep(1);
 
-  if (!strcmp(phonemodel,"NPE-3") || !strcmp(phonemodel,"NSE-5"))
+  if (!strcmp(phonemodel,"NPE-3") || !strcmp(phonemodel,"NSE-5") || 
+      !strcmp(phonemodel,"NHM-3"))
   {
     GSM->Terminate();      
     
@@ -426,7 +432,7 @@ GSM_Error GSM_Initialise(char *model, char *device, char *initlength, GSM_Connec
         case GCT_MBUS    : Protocol = &MBUS_Functions;    break;
         case GCT_Irda    : Protocol = &FBUSIRDA_Functions;break;
         case GCT_AT      : Protocol = &AT_Functions;      break;
-        case GCT_Default : Protocol = NULL;               break;
+        case GCT_FBUS3110: Protocol = &FBUS3110_Functions;break;
       }
       CurrentConnectionType=connection;    
       connection2=connection;
@@ -452,6 +458,13 @@ GSM_Error GSM_Initialise(char *model, char *device, char *initlength, GSM_Connec
       }
 #endif
 
+      if (CheckModel (N3110_Information, model, connection)) {
+        /* Set pointers to relevant addresses */
+        GSM = &N3110_Functions;
+        GSM_Info = &N3110_Information;
+        GSM_LinkOK = &CurrentLinkOK;
+        found_match=true;
+      }
       if (CheckModel (N6110_Information, model, connection)) {
         /* Set pointers to relevant addresses */
         GSM = &N6110_Functions;
@@ -483,7 +496,7 @@ GSM_Error GSM_Initialise(char *model, char *device, char *initlength, GSM_Connec
           case GCT_MBUS    : Protocol = &MBUS_Functions;    break;
           case GCT_Irda    : Protocol = &FBUSIRDA_Functions;break;
           case GCT_AT      : Protocol = &AT_Functions;      break;
-          case GCT_Default : Protocol = NULL;               break;
+          case GCT_FBUS3110: Protocol = &FBUS3110_Functions;break;
         }
       } else
         return GE_NOTSUPPORTED;
@@ -617,6 +630,7 @@ GSM_ConnectionType GetConnectionTypeFromString(char *Connection) {
   if (!strcmp(Connection, "infrared")) connection=GCT_Infrared;
   if (!strcmp(Connection, "mbus"))     connection=GCT_MBUS;
   if (!strcmp(Connection, "dlr3"))     connection=GCT_DLR3;
+  if (!strcmp(Connection, "fbus3110")) connection=GCT_FBUS3110;
   if (!strcmp(Connection, "at"))       connection=GCT_AT;
   if (!strcmp(Connection, "tekram210"))connection=GCT_Tekram;
   
index 52020c1..9fbb114 100644 (file)
@@ -730,6 +730,7 @@ GSM_Error GSM_EncodeETSISMSSubmitValidity(GSM_SMSMessage *SMS,GSM_ETSISMSMessage
 GSM_Error GSM_EncodeETSISMS(GSM_SMSMessage *SMS, GSM_ETSISMSMessage *ETSI, SMS_MessageType PDU, int *length)
 {
   int size=0;
+  GSM_Error error;
 
   ETSI->firstbyte=0;
   ETSI->TPPID=0;
@@ -749,8 +750,10 @@ GSM_Error GSM_EncodeETSISMS(GSM_SMSMessage *SMS, GSM_ETSISMSMessage *ETSI, SMS_M
       /* Mask for request for delivery report from SMSC */
       if (SMS->Type == GST_DR) ETSI->firstbyte |= 32;
 
-      GSM_EncodeETSISMSSubmitHeader(SMS, ETSI);
-      GSM_EncodeETSISMSSubmitValidity(SMS, ETSI);
+      error=GSM_EncodeETSISMSSubmitHeader(SMS, ETSI);
+      if (error!=GE_NONE) return error;
+      error=GSM_EncodeETSISMSSubmitValidity(SMS, ETSI);
+      if (error!=GE_NONE) return error;
       size=GSM_EncodeETSISMSSubmitData(SMS, ETSI);
 
       break;
@@ -760,7 +763,8 @@ GSM_Error GSM_EncodeETSISMS(GSM_SMSMessage *SMS, GSM_ETSISMSMessage *ETSI, SMS_M
       /* Bits 1 and 0: 00. SMS-Deliver */
       ETSI->firstbyte |= 0x00;
 
-      GSM_EncodeETSISMSSubmitHeader(SMS, ETSI);
+      error=GSM_EncodeETSISMSSubmitHeader(SMS, ETSI);
+      if (error!=GE_NONE) return error;
       GSM_EncodeSMSDateTime(&SMS->Time, ETSI->DeliveryDateTime);
       size=GSM_EncodeETSISMSSubmitData(SMS, ETSI);
 
index 53306bc..1adf9c8 100644 (file)
@@ -83,8 +83,6 @@ void hexdump(u16 MessageLength, u8 *MessageBuffer)
   char hex1[10];
   char hex2[10];
  
-printf("NK: ");
   for (count = 0; count < MessageLength; count ++)
   {
     n++;
@@ -155,88 +153,3 @@ void txhexdump(u16 MessageLength, u8 *MessageBuffer)
   fflush(stdout);
 }
 #endif
-
-#ifndef WIN32
-
-#define max_buf_len 128
-#define lock_path "/var/lock/LCK.."
-
-/* Lock the device. Return allocated string with a lock name */
-char *lock_device(const char* port)
-{
-       char *lock_file = NULL;
-       char buffer[max_buf_len];
-       char *aux = rindex(port, '/');
-       int fd, len = strlen(aux) + strlen(lock_path);
-
-       memset(buffer, 0, sizeof(buffer));
-       lock_file = calloc(len + 1, 1);
-       if (!lock_file) {
-               fprintf(stderr, _("Cannot lock device\n"));
-               return NULL;
-       }
-       /* I think we don't need to use strncpy, as we should have enough
-        * buffer due to strlen results
-        */
-       strcpy(lock_file, lock_path);
-       strcat(lock_file, aux);
-
-       /* Check for the stale lockfile.
-        * The code taken from minicom by Miquel van Smoorenburg */
-       if ((fd = open(lock_file, O_RDONLY)) >= 0) {
-               char buf[max_buf_len];
-               int pid, n = 0;
-
-               n = read(fd, buf, sizeof(buf) - 1);
-               close(fd);
-               if (n > 0) {
-                       pid = -1;
-                       if (n == 4)
-                               /* Kermit-style lockfile. */
-                               pid = *(int *)buf;
-                       else {
-                               /* Ascii lockfile. */
-                               buf[n] = 0;
-                               sscanf(buf, "%d", &pid);
-                       }
-                       if (pid > 0 && kill((pid_t)pid, 0) < 0 && errno == ESRCH) {
-                               fprintf(stderr, _("Lockfile is stale. Overriding it..\n"));
-                               sleep(1);
-                               unlink(lock_file);
-                       } else
-                               n = 0;
-               }
-               if (n == 0) {
-                       free(lock_file);
-                       fprintf(stderr, _("Device is already locked.\n"));
-                       return NULL;
-               }
-       }
-
-       /* Try to create a new file, with 0644 mode */
-       fd = open(lock_file, O_CREAT | O_EXCL, 0644);
-       if (fd == -1) {
-               free(lock_file);
-               fprintf(stderr, _("Cannot lock device\n"));
-               return NULL;
-       }
-       sprintf(buffer, "%10ld gnokii\n", (long)getpid());
-       write(fd, buffer, strlen(buffer));
-       close(fd);
-       return lock_file;
-}
-
-/* Removes lock and frees memory */
-bool unlock_device(char *lock_file)
-{
-       int err;
-
-       if (!lock_file) {
-               fprintf(stderr, _("Cannot unlock device\n"));
-               return false;
-       }
-       err = unlink(lock_file);
-       free(lock_file);
-       return (err + 1);
-}
-#endif /* WIN32 */
diff --git a/common/newmodules/n3110.c b/common/newmodules/n3110.c
new file mode 100644 (file)
index 0000000..21a4bb9
--- /dev/null
@@ -0,0 +1,191 @@
+/*
+
+  G N O K I I
+
+  A Linux/Unix toolset and driver for Nokia mobile phones.
+
+  Released under the terms of the GNU GPL, see file COPYING for more details.
+
+  This file provides an API for accessing functions on the N3110 and similar
+  phones.
+
+*/
+
+/* "Turn on" prototypes in n-3110.h */
+
+#define __n_3110_c 
+
+/* System header files */
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+
+#ifdef WIN32
+  #include "misc_win32.h"
+#endif
+/* Various header file */
+#ifndef VC6
+  #include "config.h"
+#endif
+
+#include "misc.h"
+#include "gsm-api.h"
+#include "gsm-common.h"
+#include "files/cfgreader.h"
+#include "newmodules/n3110.h"
+#include "newmodules/n6110.h"
+#include "gsm-networks.h"
+
+/* Here we initialise model specific functions. */
+
+GSM_Functions N3110_Functions = {
+  N3110_Initialise,
+  N3110_DispatchMessage,
+  NULL_Terminate,
+  NULL_KeepAlive,
+  NOTSUPPORTED,
+  NOTSUPPORTED,  
+  NOTSUPPORTED,
+  NOTSUPPORTED,
+  NOTSUPPORTED,
+  NOTSUPPORTED,
+  NOTSUPPORTED,
+  NOTSUPPORTED,
+  NOTSUPPORTED,
+  NOTSUPPORTED,
+  NOTSUPPORTED,
+  NOTSUPPORTED,
+  NOTSUPPORTED,
+  NOTSUPPORTED,
+  NOTSUPPORTED,
+  NOTSUPPORTED,
+  NOTSUPPORTED,
+  NOTSUPPORTED,
+  NOTSUPPORTED,
+  NOTSUPPORTED,
+  NOTSUPPORTED,
+  NOTSUPPORTED,
+  NOTSUPPORTED,
+  NOTSUPPORTED,
+  NOTSUPPORTED,
+  NOTSUPPORTED,
+  NOTSUPPORTED,
+  NOTSUPPORTED,
+  NOTSUPPORTED,
+  NOTSUPPORTED,
+  NOTSUPPORTED,
+  NOTSUPPORTED,
+  NOTSUPPORTED,
+  NOTSUPPORTED,
+  NOTSUPPORTED,
+  NOTSUPPORTED,
+  NOTSUPPORTED,
+  NOTSUPPORTED,
+  NOTSUPPORTED,
+  NOTSUPPORTED,
+  NOTSUPPORTED,
+  NOTSUPPORTED,
+  NOTSUPPORTED,
+  NOTSUPPORTED,
+  NOTSUPPORTED,
+  NOTSUPPORTED,
+  NOTSUPPORTED,
+  NOTSUPPORTED,
+  NOTSUPPORTED,
+  NOTSUPPORTED,
+  NOTSUPPORTED,
+  NOTSUPPORTED,
+  NOTSUPPORTED,
+  NOTSUPPORTED,
+  NOTSUPPORTED,
+  NOTSUPPORTED,
+  NOTSUPPORTED,  NOTSUPPORTED,
+  NOTSUPPORTED,
+  NOTSUPPORTED,
+  NOTSUPPORTED,
+  NOTSUPPORTED,
+  NOTSUPPORTED,
+  NOTSUPPORTED,
+  NOTSUPPORTED,
+  NOTSUPPORTED,
+  NOTSUPPORTED
+};
+
+
+
+/* for all these Phones we support N3110 */
+
+GSM_Information N3110_Information = {
+  "", /* Supported models in FBUS */
+  "",/* Supported models in MBUS */
+  "",/* Supported models in FBUS over infrared */
+  "",/* Supported models in FBUS over DLR3 */
+  "",
+  "", /* Supported models in FBUS over Irda sockets */
+  "",
+  "3110|3810|8110|8110i|8148|8148i", /* FBUS version 1 */
+  4,                     /* Max RF Level */
+  0,                     /* Min RF Level */
+  GRF_Arbitrary,         /* RF level units */
+  4,                     /* Max Battery Level */
+  0,                     /* Min Battery Level */
+  GBU_Arbitrary,         /* Battery level units */
+  GDT_None,              /* No date/time support */
+  GDT_None,             /* No alarm support */
+  0                      /* Max alarms = 0 */
+};
+
+/* Initialise variables and state machine. */
+GSM_Error N3110_Initialise(char *port_device, char *initlength,
+                          GSM_ConnectionType connection,
+                          void (*rlp_callback)(RLP_F96Frame *frame))
+{
+  u8 init[20]={0x02, 0x01, 0x07, 0xa2, 0x88, 0x81, 0x21, 0x55, 0x63, 0xa8,
+               0x00, 0x00, 0x07, 0xa3, 0xb8, 0x81, 0x20, 0x15, 0x63, 0x80};
+
+  unsigned char init_char = N6110_SYNC_BYTE;
+
+  int count;
+  int InitLength;
+
+  GSM_Error error;
+    if (Protocol->Initialise(port_device,initlength,connection,rlp_callback)!=GE_NONE)
+  {
+    return GE_NOTSUPPORTED;
+  }
+
+  InitLength = atoi(initlength);
+
+  if ((strcmp(initlength, "default") == 0) || (InitLength == 0)) {
+    InitLength = 250;  /* This is the usual value, lower may work. */
+  }
+
+#ifdef DEBUG
+  fprintf(stdout,_("Writing init chars...."));
+#endif
+
+  /* Initialise link with phone or what have you */
+  /* Send init string to phone, this is a bunch of 0x55 characters. Timing is
+     empirical. */
+  for (count = 0; count < InitLength; count ++) {
+    usleep(1000);
+    Protocol->WritePhone(1,&init_char);
+  }
+
+#ifdef DEBUG
+  fprintf(stdout,_("Done\n"));  
+#endif
+
+  error=NULL_SendMessageSequence (200, &CurrentGetIMEIError, 20, 0x15, init);
+  if (error!=GE_NONE) return error;
+
+  CurrentLinkOK = true;                           
+
+  return (GE_NONE);
+}
+
+
+void N3110_DispatchMessage(u16 MessageLength, u8 *MessageBuffer, u8 MessageType)
+{
+}
index bd70285..410808d 100644 (file)
@@ -124,7 +124,7 @@ GSM_Functions N6110_Functions = {
 GSM_Information N6110_Information = {
   "3210|3310|3330|5110|5130|5190|6110|6130|6150|6190|8210|8850",
      /* Supported models in FBUS */
-  "3210|3310|3330|5110|5130|5190|6110|6130|6150|6190|8210|8850",
+  "3210|3310|3330|5110|5130|5190|6110|6130|6150|6190|8210|8850|9210",
      /* Supported models in MBUS */
   "6110|6130|6150|8210|8850",
      /* Supported models in FBUS over infrared */
@@ -135,7 +135,7 @@ GSM_Information N6110_Information = {
   "8210|8850",
      /* infrared sockets */
   "6110|6130|6150|8210|8850",
-     /* Supported models in FBUS over infrared with Tekram device */  
+     /* Supported models in FBUS over infrared with Tekram device */  "",
   4,                     /* Max RF Level */
   0,                     /* Min RF Level */
   GRF_Arbitrary,         /* RF level units */
@@ -3679,14 +3679,10 @@ void N6110_ReplyGetSMSMessage(u16 MessageLength, u8 *MessageBuffer, u8 MessageTy
     fprintf(stdout, _("Message: SMS reading failed\n"));
 
     switch (MessageBuffer[4]) {
-      case 0x02:
-        fprintf(stdout, _("   Invalid location!\n"));break;
-      case 0x07:
-       fprintf(stdout, _("   Empty SMS location.\n"));break;
-      case 0x0c:
-       fprintf(stdout, _("   No access to memory (no PIN on card ?)\n"));break;
-      default:      
-        fprintf(stdout, _("   Error code %i - please report it \n"),MessageBuffer[4]);break;
+      case 0x02:fprintf(stdout, _("   Invalid location!\n"));break;
+      case 0x07:fprintf(stdout, _("   Empty SMS location.\n"));break;
+      case 0x0c:fprintf(stdout, _("   No access to memory (no PIN on card ?)\n"));break;
+      default  :fprintf(stdout, _("   Error code %i - please report it \n"),MessageBuffer[4]);break;
     }
 #endif /* DEBUG */
 
@@ -3773,8 +3769,7 @@ GSM_Error GSM_EncodeNokiaSMSFrame(GSM_SMSMessage *SMS, unsigned char *req, int *
   switch (PDU) {
     case SMS_Submit:
       offset=5;
-      for (i=0;i<((ETSI.Number[0]+1)/2+1)+1;i++)
-        req[i+12+offset]=ETSI.Number[i];
+      for (i=0;i<((ETSI.Number[0]+1)/2+1)+1;i++) req[i+12+offset]=ETSI.Number[i];
       req[10+offset]=ETSI.TPDCS;
       req[11+offset]=ETSI.TPUDL;
       req[24+offset]=ETSI.TPVP;
@@ -3784,21 +3779,17 @@ GSM_Error GSM_EncodeNokiaSMSFrame(GSM_SMSMessage *SMS, unsigned char *req, int *
 //      fprintf(stdout,_("   TP-DCS: %02x\n"),ETSI.TPDCS);
 #endif
 //    req[]=ETSI.TPPID;
-      for(i=0;i<*length;i++)
-        req[i+31+offset]=ETSI.MessageText[i];
+      for(i=0;i<*length;i++) req[i+31+offset]=ETSI.MessageText[i];
       break;
 
     case SMS_Deliver:
       offset=4;
-      for (i=0;i<((ETSI.Number[0]+1)/2+1)+1;i++)
-        req[i+12+offset]=ETSI.Number[i];
+      for (i=0;i<((ETSI.Number[0]+1)/2+1)+1;i++) req[i+12+offset]=ETSI.Number[i];
       req[10+offset]=ETSI.TPDCS;
       req[11+offset]=ETSI.TPUDL;
 //    req[]=ETSI.TPPID;
-      for(i=0;i<*length;i++)
-        req[i+31+offset]=ETSI.MessageText[i];
-      for (i=0;i<7;i++)
-        req[24+offset+i]=ETSI.DeliveryDateTime[i];
+      for(i=0;i<*length;i++) req[i+31+offset]=ETSI.MessageText[i];
+      for (i=0;i<7;i++) req[24+offset+i]=ETSI.DeliveryDateTime[i];
       break;
     default:
       break;
@@ -5322,7 +5313,7 @@ void N6110_RX_HandleRLPMessage(u8 *MessageBuffer)
   /* We do not need RLP frame parsing to be done when we do not have callback
      specified. */
   if (CurrentRLP_RXCallback == NULL)
-    return;
+    exit;
     
   /* Anybody know the official meaning of the first two bytes?
      Nokia 6150 sends junk frames starting D9 01, and real frames starting
index 78bffaf..9f0f205 100644 (file)
@@ -130,6 +130,7 @@ GSM_Information N7110_Information = {
   "",
   "6210|6250|7110", /* Supported models in FBUS over Irda sockets */
   "",
+  "",
   5,                     /* Max RF Level */
   0,                     /* Min RF Level */
   GRF_Arbitrary,         /* RF level units */
@@ -2460,14 +2461,14 @@ GSM_Error N7110_DeletePhonebookLocation(GSM_PhonebookEntry *entry)
     0x05, /* mem location low*/
     0x00, /* mem location high*/
     0x00, 0x00
-      };
+  };
 
-   req[12] = (entry->Location >> 8);
-   req[13] = entry->Location & 0xff;
-   req[14] = N7110_GetMemoryType(entry->MemoryType);
+  req[12] = (entry->Location >> 8);
+  req[13] = entry->Location & 0xff;
+  req[14] = N7110_GetMemoryType(entry->MemoryType);
  
 #ifdef DEBUG
-       fprintf(stdout, _("Deleting phonebook entry at location %d...\n"),entry->Location);
+  fprintf(stdout, _("Deleting phonebook entry at location %d...\n"),entry->Location);
 #endif
   
   return NULL_SendMessageSequence(50, &CurrentPhonebookError, 18, 0x03, req);
@@ -2689,7 +2690,7 @@ GSM_Error N7110_SetBitmap(GSM_Bitmap *Bitmap)
       if (NULL_SendMessageSequence (50, &CurrentGetBitmapError, 7, 0x14, req2)!=GE_NONE) break;
       if (PictureImageNum==Bitmap->number+1) break;
     }
-    if (CurrentGetBitmapError!=GE_NONE) {
+    if (PictureImageNum!=Bitmap->number+1) {
       req4[5]=0x21;
       req4[6]=0;
       req4[7]=0;
@@ -2698,15 +2699,49 @@ GSM_Error N7110_SetBitmap(GSM_Bitmap *Bitmap)
       req4[6]=PictureImageIndex/256;
       req4[7]=PictureImageIndex%256;
     }
-    count=7;
-    for (i=0;i<38;i++) req4[count++]=0x00;
+
+    /* Cleaning */
+    for (i=0;i<36;i++) req4[i+9]=0;
+
+    count=8;
+    if (strlen(Bitmap->text)==0) {
+      count+=2 ;req4[count]=0x0c;
+      count+=2 ;req4[count]=0x0d;
+      count+=2 ;req4[count]=0x0e;
+      count+=2 ;req4[count]=0x0f;
+      count+=2 ;req4[count]=0x10;
+      count+=2 ;req4[count]=0x11;
+      count+=23;req4[count]=0x02;
+      count++  ;req4[count]=0x01;
+      count+=2;
+    } else {
+      count+=2 ;req4[count]=0x54;
+      count++  ;req4[count]=0xd4;
+      count++  ;req4[count]=0x0d;
+      count+=2 ;req4[count]=0x0e;
+      count+=2 ;req4[count]=0x0f;
+      count+=2 ;req4[count]=0x10;
+      count+=2 ;req4[count]=0x11;
+      count+=21;req4[count]=0x01;
+      count+=3 ;req4[count]=0x01;
+      count+=2;
+    }
+
+    req4[count++]=0x01;
     req4[count++]=Bitmap->width;
     req4[count++]=Bitmap->height;
     req4[count++]=Bitmap->size/256;
     req4[count++]=Bitmap->size%256;
-    memcpy(reqOp+count,Bitmap->bitmap,Bitmap->size);
+    memcpy(req4+count,Bitmap->bitmap,Bitmap->size);
     count += Bitmap->size;
-    req4[count++]=0x00;
+
+    if (strlen(Bitmap->text)!=0) {
+      req4[count] = strlen(Bitmap->text);
+      GSM_PackSevenBitsToEight(0, Bitmap->text, req4+count+1);
+      count=count+req4[count];
+    } else {
+      req4[count++]=0x00;
+    }
     req4[count++]=0x00;
 
     CurrentSetBitmapError = GE_BUSY;
@@ -2854,6 +2889,7 @@ int ReturnBinRingLocation()
 
   if (strcmp(model,"NSE-5") == 0) return 0x74; //first 0x74 //7110
   if (strcmp(model,"NPE-3") == 0) return 0x89; //first is 0x89; //6210
+  if (strcmp(model,"NHM-3") == 0) return 0x89; //quess for 6250
     
   return 0;
 }
@@ -3324,7 +3360,15 @@ void N7110_Dispatch0x14Message(u16 MessageLength, u8 *MessageBuffer, u8 MessageT
       CurrentSMSMessageError = GE_NONE;
       break;
     }
-    
+  case 0x51:
+#ifdef DEBUG
+    fprintf(stdout, _("Message: Picture Image saved OK\n"));
+    fprintf(stdout, _("  folder  : %02x\n"),MessageBuffer[4]);
+    fprintf(stdout, _("  location: %02x\n"),MessageBuffer[5]*256+MessageBuffer[6]);
+#endif /* DEBUG */
+    CurrentSetBitmapError=GE_NONE;
+    break;
+
   case 0x97:
 
 #ifdef DEBUG
index 985eb8c..01e051f 100644 (file)
@@ -132,6 +132,7 @@ GSM_Information Nat_Information = {
   "at", /* Supported models in AT commands mode */
   "",
   "",
+  "",
   4,                     /* Max RF Level */
   0,                     /* Min RF Level */
   GRF_Arbitrary,         /* RF level units */
@@ -237,20 +238,30 @@ void Nat_ReplyGetID(u16 MessageLength, u8 *MessageBuffer, u8 MessageType) {
     fprintf(stdout, _("   Model: RAE-3\n"));
 #endif
     strcpy(Current_Model,"RAE-3");
-
-  } else {
-    while (MessageBuffer[i]!=0x0d && MessageBuffer[i]!=0x0a) {
-      Current_Model[i-10]=MessageBuffer[i];
-      i++;
-    }
-    Current_Model[i-9]=0;
-
+    CurrentMagicError=GE_NONE;
+    return;
+  }
+  if (strncmp("Nokia 6210",MessageBuffer+i,10)==0) {
 #ifdef DEBUG
     fprintf(stdout, _("Message: Mobile phone model identification received:\n"));
-    fprintf(stdout, _("   Model: %s\n"),Current_Model);
+    fprintf(stdout, _("   Model: NPE-3\n"));
 #endif
+    strcpy(Current_Model,"NPE-3");
+    CurrentMagicError=GE_NONE;
+    return;
   }
 
+  while (MessageBuffer[i]!=0x0d && MessageBuffer[i]!=0x0a) {
+    Current_Model[i-10]=MessageBuffer[i];
+    i++;
+  }
+  Current_Model[i-9]=0;
+
+#ifdef DEBUG
+  fprintf(stdout, _("Message: Mobile phone model identification received:\n"));
+  fprintf(stdout, _("   Model: %s\n"),Current_Model);
+#endif
+
   CurrentMagicError=GE_NONE;
 }
 
@@ -277,7 +288,7 @@ void Nat_ReplyGetHW(u16 MessageLength, u8 *MessageBuffer, u8 MessageType) {
       for (i=12;i<17;i++) fprintf(stdout,_("%c"),MessageBuffer[i]);
       fprintf(stdout, _("\n"));
       /* Some Nokia phones like 9210 return only firmware */
-      if (MessageLength>22) {
+      if (MessageLength>24) {
         fprintf(stdout, _("   Hardware: "));
         for (i=21;i<25;i++) fprintf(stdout,_("%c"),MessageBuffer[i]);
         fprintf(stdout, _("\n"));
@@ -290,7 +301,7 @@ void Nat_ReplyGetHW(u16 MessageLength, u8 *MessageBuffer, u8 MessageType) {
       Current_Revision[current++]=' ';
       Current_Revision[current++]='H';
       Current_Revision[current++]='W';
-      if (MessageLength>22) {
+      if (MessageLength>24) {
         for (i=21;i<25;i++) Current_Revision[current++]=MessageBuffer[i];
       } else {
         /* Some Nokia phones like 9210 return only firmware */
@@ -385,10 +396,10 @@ GSM_Error Nat_Initialise(char *port_device, char *initlength,
 
   if (Nat_SendIMEIFrame()!=GE_NONE) return GE_TIMEOUT;
 
-  if (Nat_SendHWFrame()!=GE_NONE) return GE_TIMEOUT;
-
   if (Nat_SendIDFrame()!=GE_NONE) return GE_TIMEOUT;
 
+  if (Nat_SendHWFrame()!=GE_NONE) return GE_TIMEOUT;
+
   /* In AT doesn't have any init strings, etc. Phone answered with frame,
      so connection should be enabled ;-) */
   CurrentLinkOK = true;                           
@@ -407,6 +418,15 @@ GSM_Error Nat_GetManufacturer(char* manufacturer)
   return GE_NONE;
 }
 
+void Nat_ReplyPBKSetMemoryTypeError(u16 MessageLength, u8 *MessageBuffer, u8 MessageType) {
+
+#ifdef DEBUG
+  fprintf(stdout, _("Message: memory setting error\n"));
+#endif
+
+  CurrentPhonebookError=GE_UNKNOWN;
+}
+
 void Nat_ReplyPBKSetMemoryType(u16 MessageLength, u8 *MessageBuffer, u8 MessageType) {
 
 #ifdef DEBUG
@@ -469,6 +489,15 @@ GSM_Error SetCharset()
   return error;
 }
 
+void Nat_ReplyGetMemoryLocationError(u16 MessageLength, u8 *MessageBuffer, u8 MessageType) {
+
+#ifdef DEBUG
+  fprintf(stdout, _("Message: phonebook entry receiving error\n"));
+#endif
+
+  CurrentPhonebookError=GE_UNKNOWN;
+}
+
 /* FIXME: M20 can have " inside name. We can't get endpos by finding first " */
 void Nat_ReplyGetMemoryLocation(u16 MessageLength, u8 *MessageBuffer, u8 MessageType) {
 
@@ -620,6 +649,13 @@ void Nat_ReplyGetMemoryStatusCPBS(u16 MessageLength, u8 *MessageBuffer, u8 Messa
   } else CurrentMemoryStatusError=GE_UNKNOWN;
 }
 
+void Nat_ReplyGetMemoryStatusCPBSError(u16 MessageLength, u8 *MessageBuffer, u8 MessageType) {
+#ifdef DEBUG
+  fprintf(stdout, _("Message: memory status receiving error\n"));
+#endif
+  CurrentMemoryStatusError=GE_UNKNOWN;
+}
+
 void Nat_ReplyGetMemoryStatusCPBR(u16 MessageLength, u8 *MessageBuffer, u8 MessageType) {
 
   char *start;
@@ -735,6 +771,8 @@ void Nat_ReplyGetNetworkInfo(u16 MessageLength, u8 *MessageBuffer, u8 MessageTyp
   int i,current;
   GSM_NetworkInfo NullNetworkInfo;
 
+  if (!strncmp(MessageBuffer,"AT+CREG=",8)) return;
+
   /* TODO: checking if phone really registered to network */
 
   current=23;
@@ -771,6 +809,26 @@ void Nat_ReplyGetNetworkInfo(u16 MessageLength, u8 *MessageBuffer, u8 MessageTyp
   CurrentNetworkInfoError = GE_NONE;      
 }
 
+void Nat_ReplyGetNetworkInfoCOPS(u16 MessageLength, u8 *MessageBuffer, u8 MessageType) {
+  /* Make sure we are expecting NetworkInfo frame */
+  if (CurrentNetworkInfo && CurrentNetworkInfoError == GE_BUSY) {
+#ifdef DEBUG
+    fprintf(stdout, _("Message: network info received\n"));
+#endif
+    if (MessageBuffer[20]=='2') {
+      CurrentNetworkInfo->NetworkCode[0]=MessageBuffer[23];
+      CurrentNetworkInfo->NetworkCode[1]=MessageBuffer[24];
+      CurrentNetworkInfo->NetworkCode[2]=MessageBuffer[25];
+      CurrentNetworkInfo->NetworkCode[3]=' ';
+      CurrentNetworkInfo->NetworkCode[4]=MessageBuffer[26];
+      CurrentNetworkInfo->NetworkCode[5]=MessageBuffer[27];
+      CurrentNetworkInfo->NetworkCode[6]=0;
+
+      CurrentNetworkInfoError = GE_NONE;      
+    }
+  }
+}
+
 GSM_Error Nat_GetNetworkInfo(GSM_NetworkInfo *NetworkInfo)
 {
   GSM_Error error;
@@ -781,6 +839,10 @@ GSM_Error Nat_GetNetworkInfo(GSM_NetworkInfo *NetworkInfo)
   
   error=NULL_SendMessageSequence
     (20, &CurrentNetworkInfoError, 9, 0x00, "AT+CREG?\r");
+  if (error!=GE_NONE) return error;
+
+  error=NULL_SendMessageSequence
+    (20, &CurrentNetworkInfoError, 9, 0x00, "AT+COPS?\r");
 
   CurrentNetworkInfo = NULL;
 
@@ -912,10 +974,11 @@ GSM_Error Nat_PressKey(int key, int event)
 {
   char req[128];
 
-  sprintf(req, "AT+CKPD=?\r");
+  sprintf(req, "AT+CKPD=\"1\",\"20\"\r");
 
   return NULL_SendMessageSequence
     (50, &CurrentPressKeyError, strlen(req), 0x00, req);
+//  return GE_NOTSUPPORTED;
 }
 
 GSM_Error Nat_DialVoice(char *Number) {
@@ -1055,6 +1118,14 @@ void Nat_ReplySetDateTime(u16 MessageLength, u8 *MessageBuffer, u8 MessageType)
   CurrentSetDateTimeError=GE_NONE;
 }
 
+void Nat_ReplyDateTimeError(u16 MessageLength, u8 *MessageBuffer, u8 MessageType) {
+#ifdef DEBUG
+  fprintf(stdout,_("Message: date & time functions error\n"));
+#endif
+  CurrentSetDateTimeError=GE_UNKNOWN;
+  CurrentDateTimeError=GE_UNKNOWN;
+}
+
 GSM_Error Nat_SetDateTime(GSM_DateTime *date_time)
 {
   char req[128];
@@ -1114,35 +1185,45 @@ GSM_Error Nat_SetAlarm(int alarm_number, GSM_DateTime *date_time)
     (50, &CurrentSetAlarmError, strlen(req), 0x00, req);
 }
 
+void Nat_ReplyAlarmError(u16 MessageLength, u8 *MessageBuffer, u8 MessageType) {
+#ifdef DEBUG
+  fprintf(stdout,_("Message: alarm functions error\n"));
+#endif
+  CurrentSetAlarmError=GE_UNKNOWN;
+  CurrentAlarmError=GE_UNKNOWN;
+}
+
 void Nat_ReplyGetSMSCenter(u16 MessageLength, u8 *MessageBuffer, u8 MessageType) {
   int i,start;
   unsigned char buffer[300];
 
   start=18;
 
+#ifdef DEBUG
+  fprintf(stdout, _("Message: SMSC data received\n"));
+#endif
+
   /* FIXME: support for all formats */        
   start+=ExtractOneParameter(MessageBuffer+start, buffer);
   for (i=1;i<strlen(buffer)-1;i++) buffer[i-1]=buffer[i];
   buffer[i-1]=0;
 
-  /* FIXME: when SMSC in empty, I set default (for my network) */
-  /* Any better solution ? */
-//  if (buffer[0]==0) strcpy(buffer,"+48602951111");
-  if (buffer[0]==0) strcpy(buffer,"+48601000310");
-
-  strcpy(CurrentMessageCenter->Number,buffer);
+  if (buffer[0]==0) CurrentMessageCenterError=GE_EMPTYSMSC;
+  else {
+    strcpy(CurrentMessageCenter->Number,buffer);
 
-  /* Some default values. Is it possible to get them ? */
-  CurrentMessageCenter->Name[0]=0;
-  CurrentMessageCenter->DefaultRecipient[0]=0;
-  CurrentMessageCenter->Format=GSMF_Text;
-  CurrentMessageCenter->Validity=GSMV_Max_Time;
+    /* Some default values. Is it possible to get them ? */
+    CurrentMessageCenter->Name[0]=0;
+    CurrentMessageCenter->DefaultRecipient[0]=0;
+    CurrentMessageCenter->Format=GSMF_Text;
+    CurrentMessageCenter->Validity=GSMV_Max_Time;
 
 #ifdef DEBUG
-  fprintf(stdout, _("Message: SMSC number received\n   Number: '%s'\n"),buffer);
+    fprintf(stdout, _("   Number: '%s'\n"),buffer);
 #endif
 
-  CurrentMessageCenterError=GE_NONE;
+    CurrentMessageCenterError=GE_NONE;
+  }
 }
 
 /* We only get SMSC number */
@@ -1232,6 +1313,7 @@ GSM_Error GSM_DecodeETSISMSFrame(GSM_SMSMessage *SMS, unsigned char *req, int le
   SMS_MessageType PDU=SMS_Deliver;
   GSM_ETSISMSMessage ETSI;
   int i,current=0,current2=0;
+  GSM_Error error;
 
   for(i=0;i<req[0]+1;i++) ETSI.SMSCNumber[i]=req[current++];
 
@@ -1287,11 +1369,37 @@ GSM_Error GSM_DecodeETSISMSFrame(GSM_SMSMessage *SMS, unsigned char *req, int le
       break;
   }
 
-  GSM_DecodeETSISMS(SMS, &ETSI);
+  error=GSM_DecodeETSISMS(SMS, &ETSI);
+  if (error!=GE_NONE) return error;
 
   return GE_NONE;
 }
 
+void Nat_ReplyGetSMSMessageError(u16 MessageLength, u8 *MessageBuffer, u8 MessageType) {
+  int error;
+
+  error=MessageBuffer[MessageLength-2]-'0';
+  error=error+(MessageBuffer[MessageLength-3]-'0')*10;
+  error=error+(MessageBuffer[MessageLength-4]-'0')*100;
+
+#ifdef DEBUG
+  fprintf(stdout, _("Message: SMS Reading failed\n"));
+
+  switch (error) {
+    case 311:fprintf(stdout, _("   No access to memory (no PIN on card ?)\n"));break;
+    case 321:fprintf(stdout, _("   Empty location!\n"));break;
+    default :fprintf(stdout, _("   Error code %i - please report it \n"),error);break;
+  }
+
+#endif
+
+  switch (error) {
+    case 311:CurrentSMSMessageError = GE_NOACCESS;break;
+    case 321:CurrentSMSMessageError = GE_EMPTYSMSLOCATION;break;
+    default :CurrentSMSMessageError = GE_UNKNOWN;break;
+  }
+}
+
 void Nat_ReplyGetSMSMessage(u16 MessageLength, u8 *MessageBuffer, u8 MessageType) {
   int i,start,j,end;
   unsigned char buffer[300],buffer2[300];
@@ -1570,9 +1678,11 @@ GSM_Error Nat_GetSMSMessage(GSM_SMSMessage *message)
 GSM_Error GSM_EncodeETSISMSFrame(GSM_SMSMessage *SMS, unsigned char *req, int *length, SMS_MessageType PDU)
 {
   GSM_ETSISMSMessage ETSI;
+  GSM_Error error;
   int i,current=0;
 
-  GSM_EncodeETSISMS(SMS, &ETSI, PDU, length);
+  error=GSM_EncodeETSISMS(SMS, &ETSI, PDU, length);
+  if (error!=GE_NONE) return error;
 
   for (i=0;i<ETSI.SMSCNumber[0]+1;i++)
     req[current++]=ETSI.SMSCNumber[i];
@@ -1651,7 +1761,8 @@ GSM_Error Nat_SendSaveSMSMessage(GSM_SMSMessage *message,bool savesms)
 
   switch (SMSATCMGF) {
     case SMS_AT_PDU: /* PDU mode */
-      GSM_EncodeETSISMSFrame(message, req3, &length, PDU);
+      error=GSM_EncodeETSISMSFrame(message, req3, &length, PDU);
+      if (error!=GE_NONE) return error;
 
       if (savesms) 
         sprintf(req2, "AT+CMGW=%i,%i\r",(length-(req3[0]+1)),stat); //saves SMS
@@ -1676,7 +1787,8 @@ GSM_Error Nat_SendSaveSMSMessage(GSM_SMSMessage *message,bool savesms)
         }
       }
 
-      GSM_EncodeETSISMS(message, &ETSISMS, PDU, &length);
+      error=GSM_EncodeETSISMS(message, &ETSISMS, PDU, &length);
+      if (error!=GE_NONE) return error;
 
       sprintf(req4, "AT+CSMP=%i,%i,%i,%i\r",
                 ETSISMS.firstbyte, ETSISMS.TPVP,
@@ -1828,15 +1940,27 @@ GSM_Error Nat_GetSMSStatus(GSM_SMSStatus *Status)
     (10, &CurrentSMSStatusError, 13, 0x00, "AT+CPMS=\"SM\"\r");
 }
 
+struct AT_OneReply ATRepliesError[] = {
+
+{"AT+CALA"  ,Nat_ReplyAlarmError              },
+{"AT+CCLK"  ,Nat_ReplyDateTimeError           },
+{"AT+CMGR=" ,Nat_ReplyGetSMSMessageError      },
+{"AT+CPBR=" ,Nat_ReplyGetMemoryLocationError  },
+{"AT+CPBS?" ,Nat_ReplyGetMemoryStatusCPBSError},
+{"AT+CPBS=" ,Nat_ReplyPBKSetMemoryTypeError   },
+
+{"",NULL}
+};
+
 struct AT_OneReply ATRepliesOK[] = {
 
 {"AT+CCFC=" ,Nat_ReplyCallDivert            },
 {"AT+CGMI\r",Nat_ReplyGetManufacturer       },
 {"AT+CPBS?" ,Nat_ReplyGetMemoryStatusCPBS   },
+{"AT+CPBS=" ,Nat_ReplyPBKSetMemoryType      },
 {"AT+CPBR=?",Nat_ReplyGetMemoryStatusCPBR   },
 {"AT+CPBR=" ,Nat_ReplyGetMemoryLocation     },
 {"AT+CPBW=" ,Nat_ReplyWritePhonebookLocation},
-{"AT+CPBS=" ,Nat_ReplyPBKSetMemoryType      },
 {"AT+CSCS=\"HEX\"",Nat_ReplySetCharset      },
 {"AT+CSCS=\"GSM\"",Nat_ReplySetCharset      },
 {"AT+CSCA?" ,Nat_ReplyGetSMSCenter          },
@@ -1856,7 +1980,8 @@ struct AT_OneReply ATRepliesOK[] = {
 {"AT+CALA?" ,Nat_ReplyGetAlarm              },
 {"AT+CGMM\r",Nat_ReplyGetID                 },
 {"AT+CGMR\r",Nat_ReplyGetHW                 },
-{"AT+CREG?" ,Nat_ReplyGetNetworkInfo        },
+{"AT+CREG"  ,Nat_ReplyGetNetworkInfo        },
+{"AT+COPS?" ,Nat_ReplyGetNetworkInfoCOPS    },
 {"AT+CGSN\r",Nat_ReplyGetIMEI               },
 {"AT+CHUP"  ,Nat_ReplyCancelCall            },
 {"AT+CBC"   ,Nat_ReplyGetBatteryLevel       },
@@ -1882,6 +2007,7 @@ void Nat_DispatchMessage(u16 MessageLength, u8 *MessageBuffer, u8 MessageType) {
 
   AnswerError=false;
   if (strncmp("ERROR\r",MessageBuffer+(MessageLength-6),6)==0) AnswerError=true;
+  if (strncmp("+CMS ERROR: ",MessageBuffer+(MessageLength-16),12)==0) AnswerError=true;
 
   AnswerOK=false;
   if (strncmp("OK\r",MessageBuffer+(MessageLength-3),3)==0) AnswerOK=true;
@@ -1902,34 +2028,23 @@ void Nat_DispatchMessage(u16 MessageLength, u8 *MessageBuffer, u8 MessageType) {
     if (ATRepliesOK[i].ReplyFunction==NULL)
       fprintf(stdout,_("Message: unknown AT command\n"));
 #endif
-   
-    if (strncmp("AT\r",MessageBuffer+start,3)==0) {
-#ifdef DEBUG
-      fprintf(stdout, _("Message: used for setting DLR3 to FBUS - part 1 OK\n"));
-#endif
-      CurrentGetHWError=GE_NONE;
-    }
-    if (strncmp("AT&F\r",MessageBuffer+start,5)==0) {
-#ifdef DEBUG
-      fprintf(stdout, _("Message: used for setting DLR3 to FBUS - part 2 OK\n"));
-#endif
-      CurrentGetHWError=GE_NONE;
-    }
-    if (strncmp("AT*NOKIAFBUS\r",MessageBuffer+start,13)==0) {
-#ifdef DEBUG
-      fprintf(stdout, _("Message: Setting DLR3 to FBUS - part 3 OK\n"));
-#endif
-      CurrentGetHWError=GE_NONE;
-    }
   }
 
   if (AnswerError) {
-    if (strncmp("AT*NOKIAFBUS\r",MessageBuffer+start,13)==0) {
+    i=0;
+    while (true) {
+      if (ATRepliesError[i].ReplyFunction==NULL) break;
+      if (strncmp(ATRepliesError[i].ReplyString,MessageBuffer+start,
+           strlen(ATRepliesError[i].ReplyString))==0) {
+        ATRepliesError[i].ReplyFunction(MessageLength-start,MessageBuffer+start,MessageType);
+        break;
+      }
+      i++;
+    }
+
 #ifdef DEBUG
-      fprintf(stdout, _("Message: Setting DLR3 to FBUS - part 3 ERROR\n"));
+    if (ATRepliesError[i].ReplyFunction==NULL)
+      fprintf(stdout,_("Message: unknown error AT command\n"));
 #endif
-
-      CurrentGetHWError=GE_INTERNALERROR;
-    }
   }
 }
index cf71682..2a97c24 100644 (file)
@@ -148,6 +148,7 @@ GSM_Information Nsniff_Information = {
   "",
   "6210decode|6250decode|7110decode", /* Supported models in FBUS over Irda sockets */
   "",
+  "",
   4,                     /* Max RF Level */
   0,                     /* Min RF Level */
   GRF_Arbitrary,         /* RF level units */
index 34c0507..e58d0c1 100644 (file)
@@ -60,8 +60,6 @@ u8 MessageBuffer[FBUS_MAX_RECEIVE_LENGTH * 6],MultiMessageBuffer[FBUS_MAX_RECEIV
 
 u8        RequestSequenceNumber = 0x00;
 
-int fbus_decoding=0;
-
 #ifdef DEBUG   
 char *N61_PrintDevice(int Device)
 {
@@ -80,12 +78,11 @@ char *N61_PrintDevice(int Device)
 void N61_RX_DisplayMessage()
 {
 #ifdef DEBUG
-  hexdump(MessageLength-2,MessageBuffer);
-
   fprintf(stdout, _("Msg Dest: %s\n"), N61_PrintDevice(MessageDestination));
   fprintf(stdout, _("Msg Source: %s\n"), N61_PrintDevice(MessageSource));
   fprintf(stdout, _("Msg Type: %02x\n"), MessageType);
-  fprintf(stdout, _("Msg Seq: %d\n"), MessageBuffer[MessageLength-1] & 0x0f);
+
+  hexdump(MessageLength-2,MessageBuffer);
 #endif
 
   AppendLog(MessageBuffer,MessageLength-2,true);
@@ -210,9 +207,6 @@ int FBUS_SendAck(u8 message_type, u8 message_seq) {
 
   unsigned char request[6];
 
-  if (fbus_decoding)
-    return 0;
-
   request[0] = message_type;
   request[1] = message_seq;
 
@@ -239,18 +233,12 @@ void FBUS_Terminate(void)
 
 void FBUS_RX_StateMachine(unsigned char rx_byte) {
 
-#if 0
   static struct timeval time_now, time_last, time_diff;
-#endif
   
   static int checksum[2];
   
   int i=0;
 
-//  if (CurrentConnectionType==GCT_DLR3) {
-//    AT_RX_StateMachine(rx_byte);
-//  } else {
-
 #ifdef DEBUG
   /* For model sniff only display received bytes */
   if (strcmp(GSM_Info->FBUSModels, "sniff"))
@@ -271,7 +259,6 @@ void FBUS_RX_StateMachine(unsigned char rx_byte) {
 
   case FBUS_RX_Discarding:
 
-#if 0
 #ifndef VC6
     gettimeofday(&time_now, NULL);
     timersub(&time_now, &time_last, &time_diff);
@@ -281,21 +268,13 @@ void FBUS_RX_StateMachine(unsigned char rx_byte) {
     }
     /* else fall through to... */
 #endif
-#endif
 
-  case FBUS_RX_Sync: {
-static int discarded=0,discarded55=0;
+  case FBUS_RX_Sync:
 
       if ((CurrentConnectionType==GCT_FBUS && rx_byte == FBUS_FRAME_ID) ||
           ((CurrentConnectionType==GCT_Infrared ||
           CurrentConnectionType==GCT_Tekram) && rx_byte == FBUS_IR_FRAME_ID)) {
 
-       if (discarded) {
-         printf("[discarded %d bytes, %d were NOT 0x55]\n",discarded,discarded-discarded55);
-         discarded=0;
-         discarded55=0;
-         }
-
         BufferCount = 0;
 
        RX_State = FBUS_RX_GetDestination;
@@ -306,16 +285,11 @@ static int discarded=0,discarded55=0;
       } else {
         /* Lost frame sync */
         RX_State = FBUS_RX_Discarding;
-#if 0
 #ifndef VC6
         gettimeofday(&time_last, NULL);
 #endif
-#endif
-       discarded++;
-       if (rx_byte == 0x55)
-         discarded55++;
       }    
-    break;
+    break;
 
   case FBUS_RX_GetDestination:
 
@@ -407,7 +381,6 @@ static int discarded=0,discarded55=0;
 
       /* Is the checksum correct? */
       if (checksum[0] == checksum[1]) {
-u8 msgseq;
          
         if (RX_Multiple) {
 
@@ -429,7 +402,7 @@ u8 msgseq;
            }
            MultiMessageLength=MultiMessageLength+MessageLength-2;
 
-           msgseq=MessageBuffer[MessageLength-1] & 0x0f;
+            FBUS_SendAck(MessageType, MessageBuffer[MessageLength-1] & 0x0f);          
                
             if ((MessageLength > 1) && (MessageBuffer[MessageLength-2] != 0x01))
             {
@@ -443,22 +416,15 @@ u8 msgseq;
               /* Do not debug Ack and RLP frames to detail. */
               if (MessageType != FBUS_FRTYPE_ACK && MessageType != 0xf1)
                 N61_RX_DisplayMessage();
-             else {
-               if (MessageType == FBUS_FRTYPE_ACK)
-                 puts("[ignoring print of ACK]");
-               else
-                 puts("[ignoring print of RLP]");
-               }
 
               GSM->DispatchMessage(MessageLength-2, MessageBuffer, MessageType);
             }
 
-            FBUS_SendAck(MessageType, msgseq);
-
          } else {
 
             /* We do not want to send ACK of ACKs and ACK of RLP frames. */
             if (MessageType != FBUS_FRTYPE_ACK && MessageType != 0xf1) {
+              FBUS_SendAck(MessageType, MessageBuffer[MessageLength-1] & 0x0f);
 
               if ((MessageLength > 1) && (MessageBuffer[MessageLength-2] != 0x01))
               {
@@ -468,16 +434,13 @@ u8 msgseq;
 #endif
                 RX_State = FBUS_RX_Sync;
               }
-
-             msgseq=MessageBuffer[MessageLength-1] & 0x0f;
-             FBUS_SendAck(MessageType, msgseq);
             }
          }
         } else {
-         msgseq=MessageBuffer[MessageLength-1] & 0x0f;
 
           /* We do not want to send ACK of ACKs and ACK of RLP frames. */
           if (MessageType != FBUS_FRTYPE_ACK && MessageType != 0xf1) {
+            FBUS_SendAck(MessageType, MessageBuffer[MessageLength-1] & 0x0f);
 
             if ((MessageLength > 1) && (MessageBuffer[MessageLength-2] != 0x01))
             {
@@ -491,23 +454,17 @@ u8 msgseq;
            }
          }
 
-          if (!RX_Multiple /* && MessageDestination!=FBUS_DEVICE_PHONE */ ) {
+          if (!RX_Multiple && MessageDestination!=FBUS_DEVICE_PHONE ) {
             /* Do not debug Ack and RLP frames to detail. */
             if (MessageType != FBUS_FRTYPE_ACK && MessageType != 0xf1)
               N61_RX_DisplayMessage();
-           else {
-             if (MessageType == FBUS_FRTYPE_ACK)
-               puts("[ignoring print of ACK]");
-             else
-               puts("[ignoring print of RLP]");
-             }
 
             GSM->DispatchMessage(MessageLength-2, MessageBuffer, MessageType);
           }
 
 #ifdef DEBUG
           /* When make debug and message is to phone display it */
-         if (MessageDestination==FBUS_DEVICE_PHONE && !fbus_decoding) {
+         if (MessageDestination==FBUS_DEVICE_PHONE) {
             for (i=MessageLength;i>=0;i--)
               MessageBuffer[i+6]=MessageBuffer[i];
             MessageBuffer[0]=FBUS_FRAME_ID;
@@ -521,12 +478,7 @@ u8 msgseq;
            NULL_TX_DisplayMessage(MessageLength, MessageBuffer);
           }
 #endif   
-          if (MessageType != FBUS_FRTYPE_ACK && MessageType != 0xf1)
-           FBUS_SendAck(MessageType, msgseq);
        }
-#ifdef DEBUG
-       putchar('\n');
-#endif
       } else {
 #ifdef DEBUG
           fprintf(stdout, _("Bad checksum %02x (should be %02x), msg len=%i !\n"),checksum[0],checksum[1],MessageLength);
@@ -550,22 +502,15 @@ u8 msgseq;
 
   }
 #endif
-
-//  }
 }
   
 /* Called by initialisation code to open comm port in asynchronous mode. */
 bool FBUS_OpenSerial(void)
 {
   /* Uncomment, if want to test first method for DLR3 */
-//  unsigned char req[3] = {"AT\r"};  
-//  unsigned char req2[5] = {"AT&F\r"};  
-//  unsigned char req3[13] = {"AT*NOKIAFBUS\r"};  
-
-//  GSM_Error error;
-
-//  GSM_Information *GSMINFOCOPY;
-//  GSM_Functions *GSMCOPY;
+  unsigned char req[3]   = {"AT\r"};  
+  unsigned char req2[5]  = {"AT&F\r"};  
+  unsigned char req3[13] = {"AT*NOKIAFBUS\r"};  
 
   switch (CurrentConnectionType) {
      case GCT_FBUS:
@@ -599,66 +544,33 @@ bool FBUS_OpenSerial(void)
 
        /* There are 2 ways to init DLR in FBUS: Here is first described by
           Reuben Harris [reuben.harris@snowvalley.com] and used in Logo Manager,
-              1. Firstly set the connection baud to 19200, DTR off, RTS off,
-                Parity on, one stop bit, 
-              2. Send "AT\r\n". The response should be "AT\r\n\r\nOK\r\n".
-              3. Send "AT&F\r\n". The response should be "AT&F\r\n\r\nOK\r\n".
-              4. Send "AT*NOKIAFBUS\r\n". The response should be
-                 "AT*NOKIAFBUS\r\n\r\nOK\r\n".
-              5. Set speed to 115200 
+            1. Firstly set the connection baud to 19200, DTR off, RTS off,
+              Parity on, one stop bit, 
+            2. Send "AT\r\n". The response should be "AT\r\n\r\nOK\r\n".
+            3. Send "AT&F\r\n". The response should be "AT&F\r\n\r\nOK\r\n".
+            4. Send "AT*NOKIAFBUS\r\n". The response should be
+               "AT*NOKIAFBUS\r\n\r\nOK\r\n".
+            5. Set speed to 115200 
+          This seems to be compatible with more phones*/
 
-          This is one should be used by us, because seems to be compatible with more
-          phones. But we make something wrong and often phones don't want to start transmision */
-
-       /* Uncomment and test if want */
-//       device_changespeed(19200);
+       device_changespeed(19200);
 
        /*leave RTS low, DTR low for duration of session.*/
-//       device_setdtrrts(0, 0);
-
-       /* Making copy of pointers */
-//       GSMCOPY = GSM;
-//       GSMINFOCOPY =GSM_Info;        
-
-       /* Set pointers to relevant addresses - new "AT" module here is required */
-//       GSM = &Nat_Functions;
-//       GSM_Info = &Nat_Information;
-
-       /* Note: We change Protocol inside function pointed by it.
-       That's why in FBUS_RX_StateMachine we must check it (changing
-       Protocol is not enough), This is for correct work and be sure... */
-//       Protocol = &AT_Functions;
-
-//       error=N6110_SendMessageSequence (50, &CurrentGetHWError, 3, 0x00, req);
-//       if (error!=GE_NONE) return false;
-
-//       error=N6110_SendMessageSequence (50, &CurrentGetHWError, 5, 0x00, req2);
-//       if (error!=GE_NONE) return false;
-
-//       error=N6110_SendMessageSequence (50, &CurrentGetHWError, 13, 0x00, req3);
-//       if (error!=GE_NONE) return false;
-
-       /* Returning to old protocol */
-//       Protocol = &FBUS_Functions;
-
-       /* Returning to old module */
-//       GSM = GSMCOPY;
-//       GSM_Info = GSMINFOCOPY;        
-
-//       device_changespeed(115200);
-
-       /*  Second method for DLR3:
-               Used by some 7110 soft, but not compatible with some other
-               phones supporting DLR3 - 7160, NCP2.0
-              Used in this moment in mygnokii
-       */
+       device_setdtrrts(0, 0);
+                            
+       Protocol->WritePhone (3,req );usleep(300);
+       Protocol->WritePhone (5,req2);usleep(300);
+       Protocol->WritePhone(13,req3);usleep(300);
 
        device_changespeed(115200);
 
-       /*leave RTS low, DTR low for duration of session.*/
-       device_setdtrrts(0, 0);
-      
-       usleep(100000);
+//     /*  Second method for DLR3:
+//         Used by some 7110 soft, but not compatible with some other
+//         phones supporting DLR3 - 7160, NCP2.0*/
+//     device_changespeed(115200);
+//     /*leave RTS low, DTR low for duration of session.*/
+//     device_setdtrrts(0, 0);      
+//     usleep(100000);
 
        CurrentConnectionType=GCT_FBUS;
 
diff --git a/common/protocol/fbus3110.c b/common/protocol/fbus3110.c
new file mode 100644 (file)
index 0000000..64d9985
--- /dev/null
@@ -0,0 +1,261 @@
+/*
+
+  G N O K I I
+
+  A Linux/Unix toolset and driver for Nokia mobile phones.
+
+  Released under the terms of the GNU GPL, see file COPYING for more details.
+
+  This file provides an API for support for FBUS3110 protocol
+
+*/
+
+/* "Turn on" prototypes in FBUS3110.h */
+#define __fbus3110_c 
+
+/* System header files */
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#ifdef WIN32
+  #include <windows.h>
+  #include "misc_win32.h"
+#else
+  #include <ctype.h>
+#endif
+
+/* Various header file */
+#include "devices/device.h"
+#include "gsm-api.h"
+#include "protocol/fbus3110.h"
+#include "protocol/fbus.h"
+#include "newmodules/n6110.h"
+#include "misc.h"
+
+GSM_Protocol FBUS3110_Functions = {
+  FBUS3110_Initialise,
+  FBUS3110_SendMessage,
+  FBUS3110_SendFrame,
+  NULL_WritePhone,
+  FBUS3110_Terminate,
+  FBUS3110_RX_StateMachine
+};
+
+/* Local variables */
+enum FBUS_RX_States RX_State;
+
+u8 MessageDestination, MessageSource;
+
+u16 BufferCount;
+
+u16 MessageLength;
+
+u8 MessageType;
+
+u8 MessageBuffer[FBUS3110_MAX_RECEIVE_LENGTH * 6];
+
+u8 RequestSequenceNumber3110=0x10;
+
+#ifdef DEBUG   
+char *N31_PrintDevice(int Device)
+{
+  switch (Device) {
+
+//  case FBUS3110_DEVICE_PHONE:return _("Phone");
+//  case FBUS3110_DEVICE_PC   :return _("PC");
+  default               :return _("Unknown");
+  }
+}
+#endif /* DEBUG */
+
+/* N61_RX_DisplayMessage is called when a message we don't know about is
+   received so that the user can see what is going back and forth, and perhaps
+   shed some more light/explain another message type! */
+void N31_RX_DisplayMessage()
+{
+#ifdef DEBUG
+  fprintf(stdout, _("Msg Dest: %s\n"), N31_PrintDevice(MessageDestination));
+  fprintf(stdout, _("Msg Source: %s\n"), N31_PrintDevice(MessageSource));
+  fprintf(stdout, _("Msg Type: %02x\n"), MessageType);
+
+  hexdump(MessageLength-2,MessageBuffer);
+#endif
+
+  AppendLog(MessageBuffer,MessageLength-2,true);
+}
+
+/* Prepares the message header and sends it, prepends the message start byte
+          (0x1e) and other values according the value specified when called.
+          Calculates checksum and then sends the lot down the pipe... */
+int FBUS3110_SendFrame(u16 message_length, u8 message_type, u8 *buffer) {
+
+  /* Originally out_buffer[FBUS3110_MAX_CONTENT_LENGTH + 2],
+     but it made problems with MBUS */
+  u8 out_buffer[1000];
+  
+  int count, current=0;
+  unsigned char        checksum;
+
+  /* Now construct the message header. */
+  out_buffer[current++] = FBUS3110_FRAME_TO_PHONE;   /* Start of frame */
+  out_buffer[current++] = message_length + 2;        /* Length */
+  out_buffer[current++] = message_type;              /* Type */
+  out_buffer[current++] = RequestSequenceNumber3110; /* Sequence number */
+
+  /* Copy in data if any. */
+  if (message_length != 0) {
+    memcpy(out_buffer + current, buffer, message_length);
+    current += message_length;
+  }
+
+  /* Now calculate checksum over entire message and append to message. */
+  checksum = 0;
+  for (count = 0; count < current; count++) checksum ^= out_buffer[count];
+  out_buffer[current++] = checksum;
+
+#ifdef DEBUG
+  NULL_TX_DisplayMessage(current, out_buffer);
+#endif /* DEBUG */
+
+  /* Send it out... */
+  if (!NULL_WritePhone(current,out_buffer)) return (false);
+
+  return (true);
+}
+
+/* Any command we originate must have a unique SequenceNumber.
+   Observation to date suggests that these values startx at 0x10
+   and cycle up to 0x17 before repeating again.  Perhaps more
+   accurately, the numbers cycle 0,1,2,3..7 with bit 4 of the byte
+   premanently set. */
+
+void FBUS3110_UpdateSequenceNumber(void)
+{
+  RequestSequenceNumber3110++;
+
+  if (RequestSequenceNumber3110 > 0x17 || RequestSequenceNumber3110 < 0x10)
+    RequestSequenceNumber3110 = 0x10;
+}
+
+int FBUS3110_SendMessage(u16 message_length, u8 message_type, u8 *buffer) {
+
+  FBUS3110_UpdateSequenceNumber();
+
+  return FBUS3110_SendFrame(message_length, message_type, buffer);
+}
+
+int FBUS3110_SendAck(u8 message_type, u8 message_seq) {
+
+  return 0;
+}
+
+/* Applications should call FBUS3110_Terminate to shut down the FBUS3110 thread and
+   close the serial port. */
+void FBUS3110_Terminate(void)
+{
+  /* Request termination of thread */
+  CurrentRequestTerminate = true;
+
+  /* Close serial port. */
+  device_close();
+}
+
+/* RX_State machine for receive handling.  Called once for each character
+   received from the phone/phone. */
+
+void FBUS3110_RX_StateMachine(unsigned char rx_byte) {
+
+  static int checksum;
+  
+  /* XOR the byte with the current checksum */
+  checksum ^= rx_byte;
+
+  switch (RX_State) {
+       
+  case FBUS_RX_Discarding:
+    if (rx_byte != 0x55) break;
+
+  case FBUS_RX_Sync:
+
+    if (rx_byte == 0x04 || rx_byte == 0x03) {
+      MessageDestination=rx_byte;
+      RX_State = FBUS_RX_GetLength1;
+    }
+    break;
+
+  case FBUS_RX_GetLength1:
+
+    MessageLength = rx_byte;
+    RX_State = FBUS_RX_GetType;
+    
+    break;
+
+  case FBUS_RX_GetType:
+
+    MessageType=rx_byte;
+    RX_State = FBUS_RX_GetMessage;
+
+    break;
+
+  case FBUS_RX_GetMessage:
+
+    MessageBuffer[BufferCount] = rx_byte;
+    BufferCount ++;
+    
+    if (BufferCount>FBUS3110_MAX_RECEIVE_LENGTH) {
+#ifdef DEBUG
+      fprintf(stdout, "FB31: Message buffer overun - resetting\n");
+#endif
+      AppendLogText("OVERUN\n",false);
+      RX_State = FBUS_RX_Sync;
+      break;
+    }
+
+    /* If this is the last byte, it's the checksum. */
+    if (BufferCount == MessageLength) {
+
+      RX_State = FBUS_RX_Sync;    
+    }
+    break;
+  default:
+    break;
+  }
+}
+  
+/* Called by initialisation code to open comm port in asynchronous mode. */
+bool FBUS3110_OpenSerial(void)
+{
+  switch (CurrentConnectionType) {
+     case GCT_FBUS3110:
+
+#ifdef DEBUG
+       fprintf(stdout, _("Setting cable for FBUS3110 communication...\n"));
+#endif /* DEBUG */
+
+       device_changespeed(115200);   
+       break;
+     default:
+#ifdef DEBUG
+       fprintf(stdout,_("Wrong connection type for FBUS3110 module. Inform marcin-wiacek@topnet.pl about it\n"));
+#endif
+       break;
+  }
+
+  return (true);
+}
+
+/* Initialise variables and state machine. */
+GSM_Error FBUS3110_Initialise(char *port_device, char *initlength,
+                          GSM_ConnectionType connection,
+                          void (*rlp_callback)(RLP_F96Frame *frame))
+{
+  if (!StartConnection (port_device,false,connection))
+    return GE_INTERNALERROR;
+      
+  CurrentConnectionType = connection;
+
+  if (FBUS3110_OpenSerial() != true) return GE_INTERNALERROR;
+
+  return (GE_NONE);
+}
diff --git a/configure b/configure
new file mode 100755 (executable)
index 0000000..54b4344
--- /dev/null
+++ b/configure
@@ -0,0 +1,6379 @@
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by Autoconf 2.52.
+#
+# Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001
+# Free Software Foundation, Inc.
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g"
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g"
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+  set -o posix
+fi
+
+# Name of the executable.
+as_me=`echo "$0" |sed 's,.*[\\/],,'`
+
+if expr a : '\(a\)' >/dev/null 2>&1; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+echo >conf$$.file
+if ln -s conf$$.file conf$$ 2>/dev/null; then
+  # We could just check for DJGPP; but this test a) works b) is more generic
+  # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
+  if test -f conf$$.exe; then
+    # Don't use ln at all; we don't have any links
+    as_ln_s='cp -p'
+  else
+    as_ln_s='ln -s'
+  fi
+elif ln conf$$.file conf$$ 2>/dev/null; then
+  as_ln_s=ln
+else
+  as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.file
+
+as_executable_p="test -f"
+
+# Support unset when possible.
+if (FOO=FOO; unset FOO) >/dev/null 2>&1; then
+  as_unset=unset
+else
+  as_unset=false
+fi
+
+# NLS nuisances.
+$as_unset LANG || test "${LANG+set}" != set || { LANG=C; export LANG; }
+$as_unset LC_ALL || test "${LC_ALL+set}" != set || { LC_ALL=C; export LC_ALL; }
+$as_unset LC_TIME || test "${LC_TIME+set}" != set || { LC_TIME=C; export LC_TIME; }
+$as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set || { LC_CTYPE=C; export LC_CTYPE; }
+$as_unset LANGUAGE || test "${LANGUAGE+set}" != set || { LANGUAGE=C; export LANGUAGE; }
+$as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set || { LC_COLLATE=C; export LC_COLLATE; }
+$as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set || { LC_NUMERIC=C; export LC_NUMERIC; }
+$as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set || { LC_MESSAGES=C; export LC_MESSAGES; }
+
+# IFS
+# We need space, tab and new line, in precisely that order.
+as_nl='
+'
+IFS="  $as_nl"
+
+# CDPATH.
+$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=:; export CDPATH; }
+
+# Name of the host.
+# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+exec 6>&1
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+cross_compiling=no
+subdirs=
+MFLAGS= MAKEFLAGS=
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+# Maximum number of lines to put in a shell here document.
+# This variable seems obsolete.  It should probably be removed, and
+# only ac_max_sed_lines should be used.
+: ${ac_max_here_lines=38}
+
+ac_unique_file="gnokii/gnokii.c"
+ac_default_prefix="/usr/local"
+# Factoring default headers for most tests.
+ac_includes_default="\
+#include <stdio.h>
+#if HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#if HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+#if STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# if HAVE_STDLIB_H
+#  include <stdlib.h>
+# endif
+#endif
+#if HAVE_STRING_H
+# if !STDC_HEADERS && HAVE_MEMORY_H
+#  include <memory.h>
+# endif
+# include <string.h>
+#endif
+#if HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#if HAVE_INTTYPES_H
+# include <inttypes.h>
+#else
+# if HAVE_STDINT_H
+#  include <stdint.h>
+# endif
+#endif
+#if HAVE_UNISTD_H
+# include <unistd.h>
+#endif"
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/lib'
+datadir='${prefix}/share'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='/var/lib'
+libdir='${exec_prefix}/lib'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+infodir='${prefix}/share/info'
+mandir='${prefix}/man'
+
+# Identity of this package.
+PACKAGE_NAME=
+PACKAGE_TARNAME=
+PACKAGE_VERSION=
+PACKAGE_STRING=
+PACKAGE_BUGREPORT=
+
+ac_prev=
+for ac_option
+do
+  # If the previous option needs an argument, assign it.
+  if test -n "$ac_prev"; then
+    eval "$ac_prev=\$ac_option"
+    ac_prev=
+    continue
+  fi
+
+  ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
+
+  # Accept the important Cygnus configure options, so we can diagnose typos.
+
+  case $ac_option in
+
+  -bindir | --bindir | --bindi | --bind | --bin | --bi)
+    ac_prev=bindir ;;
+  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+    bindir=$ac_optarg ;;
+
+  -build | --build | --buil | --bui | --bu)
+    ac_prev=build_alias ;;
+  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+    build_alias=$ac_optarg ;;
+
+  -cache-file | --cache-file | --cache-fil | --cache-fi \
+  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+    ac_prev=cache_file ;;
+  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+    cache_file=$ac_optarg ;;
+
+  --config-cache | -C)
+    cache_file=config.cache ;;
+
+  -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
+    ac_prev=datadir ;;
+  -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
+  | --da=*)
+    datadir=$ac_optarg ;;
+
+  -disable-* | --disable-*)
+    ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+   { (exit 1); exit 1; }; }
+    ac_feature=`echo $ac_feature | sed 's/-/_/g'`
+    eval "enable_$ac_feature=no" ;;
+
+  -enable-* | --enable-*)
+    ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+   { (exit 1); exit 1; }; }
+    ac_feature=`echo $ac_feature | sed 's/-/_/g'`
+    case $ac_option in
+      *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
+      *) ac_optarg=yes ;;
+    esac
+    eval "enable_$ac_feature='$ac_optarg'" ;;
+
+  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+  | --exec | --exe | --ex)
+    ac_prev=exec_prefix ;;
+  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+  | --exec=* | --exe=* | --ex=*)
+    exec_prefix=$ac_optarg ;;
+
+  -gas | --gas | --ga | --g)
+    # Obsolete; use --with-gas.
+    with_gas=yes ;;
+
+  -help | --help | --hel | --he | -h)
+    ac_init_help=long ;;
+  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+    ac_init_help=recursive ;;
+  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+    ac_init_help=short ;;
+
+  -host | --host | --hos | --ho)
+    ac_prev=host_alias ;;
+  -host=* | --host=* | --hos=* | --ho=*)
+    host_alias=$ac_optarg ;;
+
+  -includedir | --includedir | --includedi | --included | --include \
+  | --includ | --inclu | --incl | --inc)
+    ac_prev=includedir ;;
+  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+  | --includ=* | --inclu=* | --incl=* | --inc=*)
+    includedir=$ac_optarg ;;
+
+  -infodir | --infodir | --infodi | --infod | --info | --inf)
+    ac_prev=infodir ;;
+  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+    infodir=$ac_optarg ;;
+
+  -libdir | --libdir | --libdi | --libd)
+    ac_prev=libdir ;;
+  -libdir=* | --libdir=* | --libdi=* | --libd=*)
+    libdir=$ac_optarg ;;
+
+  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+  | --libexe | --libex | --libe)
+    ac_prev=libexecdir ;;
+  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+  | --libexe=* | --libex=* | --libe=*)
+    libexecdir=$ac_optarg ;;
+
+  -localstatedir | --localstatedir | --localstatedi | --localstated \
+  | --localstate | --localstat | --localsta | --localst \
+  | --locals | --local | --loca | --loc | --lo)
+    ac_prev=localstatedir ;;
+  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+  | --localstate=* | --localstat=* | --localsta=* | --localst=* \
+  | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
+    localstatedir=$ac_optarg ;;
+
+  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+    ac_prev=mandir ;;
+  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+    mandir=$ac_optarg ;;
+
+  -nfp | --nfp | --nf)
+    # Obsolete; use --without-fp.
+    with_fp=no ;;
+
+  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+  | --no-cr | --no-c)
+    no_create=yes ;;
+
+  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+    no_recursion=yes ;;
+
+  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+  | --oldin | --oldi | --old | --ol | --o)
+    ac_prev=oldincludedir ;;
+  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+    oldincludedir=$ac_optarg ;;
+
+  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+    ac_prev=prefix ;;
+  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+    prefix=$ac_optarg ;;
+
+  -program-prefix | --program-prefix | --program-prefi | --program-pref \
+  | --program-pre | --program-pr | --program-p)
+    ac_prev=program_prefix ;;
+  -program-prefix=* | --program-prefix=* | --program-prefi=* \
+  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+    program_prefix=$ac_optarg ;;
+
+  -program-suffix | --program-suffix | --program-suffi | --program-suff \
+  | --program-suf | --program-su | --program-s)
+    ac_prev=program_suffix ;;
+  -program-suffix=* | --program-suffix=* | --program-suffi=* \
+  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+    program_suffix=$ac_optarg ;;
+
+  -program-transform-name | --program-transform-name \
+  | --program-transform-nam | --program-transform-na \
+  | --program-transform-n | --program-transform- \
+  | --program-transform | --program-transfor \
+  | --program-transfo | --program-transf \
+  | --program-trans | --program-tran \
+  | --progr-tra | --program-tr | --program-t)
+    ac_prev=program_transform_name ;;
+  -program-transform-name=* | --program-transform-name=* \
+  | --program-transform-nam=* | --program-transform-na=* \
+  | --program-transform-n=* | --program-transform-=* \
+  | --program-transform=* | --program-transfor=* \
+  | --program-transfo=* | --program-transf=* \
+  | --program-trans=* | --program-tran=* \
+  | --progr-tra=* | --program-tr=* | --program-t=*)
+    program_transform_name=$ac_optarg ;;
+
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil)
+    silent=yes ;;
+
+  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+    ac_prev=sbindir ;;
+  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+  | --sbi=* | --sb=*)
+    sbindir=$ac_optarg ;;
+
+  -sharedstatedir | --sharedstatedir | --sharedstatedi \
+  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+  | --sharedst | --shareds | --shared | --share | --shar \
+  | --sha | --sh)
+    ac_prev=sharedstatedir ;;
+  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+  | --sha=* | --sh=*)
+    sharedstatedir=$ac_optarg ;;
+
+  -site | --site | --sit)
+    ac_prev=site ;;
+  -site=* | --site=* | --sit=*)
+    site=$ac_optarg ;;
+
+  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+    ac_prev=srcdir ;;
+  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+    srcdir=$ac_optarg ;;
+
+  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+  | --syscon | --sysco | --sysc | --sys | --sy)
+    ac_prev=sysconfdir ;;
+  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+    sysconfdir=$ac_optarg ;;
+
+  -target | --target | --targe | --targ | --tar | --ta | --t)
+    ac_prev=target_alias ;;
+  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+    target_alias=$ac_optarg ;;
+
+  -v | -verbose | --verbose | --verbos | --verbo | --verb)
+    verbose=yes ;;
+
+  -version | --version | --versio | --versi | --vers | -V)
+    ac_init_version=: ;;
+
+  -with-* | --with-*)
+    ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid package name: $ac_package" >&2
+   { (exit 1); exit 1; }; }
+    ac_package=`echo $ac_package| sed 's/-/_/g'`
+    case $ac_option in
+      *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
+      *) ac_optarg=yes ;;
+    esac
+    eval "with_$ac_package='$ac_optarg'" ;;
+
+  -without-* | --without-*)
+    ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid package name: $ac_package" >&2
+   { (exit 1); exit 1; }; }
+    ac_package=`echo $ac_package | sed 's/-/_/g'`
+    eval "with_$ac_package=no" ;;
+
+  --x)
+    # Obsolete; use --with-x.
+    with_x=yes ;;
+
+  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+  | --x-incl | --x-inc | --x-in | --x-i)
+    ac_prev=x_includes ;;
+  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+    x_includes=$ac_optarg ;;
+
+  -x-libraries | --x-libraries | --x-librarie | --x-librari \
+  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+    ac_prev=x_libraries ;;
+  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+    x_libraries=$ac_optarg ;;
+
+  -*) { echo "$as_me: error: unrecognized option: $ac_option
+Try \`$0 --help' for more information." >&2
+   { (exit 1); exit 1; }; }
+    ;;
+
+  *=*)
+    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid variable name: $ac_envvar" >&2
+   { (exit 1); exit 1; }; }
+    ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`
+    eval "$ac_envvar='$ac_optarg'"
+    export $ac_envvar ;;
+
+  *)
+    # FIXME: should be removed in autoconf 3.0.
+    echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+      echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+    : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
+    ;;
+
+  esac
+done
+
+if test -n "$ac_prev"; then
+  ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+  { echo "$as_me: error: missing argument to $ac_option" >&2
+   { (exit 1); exit 1; }; }
+fi
+
+# Be sure to have absolute paths.
+for ac_var in exec_prefix prefix
+do
+  eval ac_val=$`echo $ac_var`
+  case $ac_val in
+    [\\/$]* | ?:[\\/]* | NONE | '' ) ;;
+    *)  { echo "$as_me: error: expected an absolute path for --$ac_var: $ac_val" >&2
+   { (exit 1); exit 1; }; };;
+  esac
+done
+
+# Be sure to have absolute paths.
+for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \
+              localstatedir libdir includedir oldincludedir infodir mandir
+do
+  eval ac_val=$`echo $ac_var`
+  case $ac_val in
+    [\\/$]* | ?:[\\/]* ) ;;
+    *)  { echo "$as_me: error: expected an absolute path for --$ac_var: $ac_val" >&2
+   { (exit 1); exit 1; }; };;
+  esac
+done
+
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: should be removed in autoconf 3.0.
+if test "x$host_alias" != x; then
+  if test "x$build_alias" = x; then
+    cross_compiling=maybe
+    echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
+    If a cross compiler is detected then cross compile mode will be used." >&2
+  elif test "x$build_alias" != "x$host_alias"; then
+    cross_compiling=yes
+  fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+  ac_srcdir_defaulted=yes
+  # Try the directory containing this script, then its parent.
+  ac_prog=$0
+  ac_confdir=`echo "$ac_prog" | sed 's%[\\/][^\\/][^\\/]*$%%'`
+  test "x$ac_confdir" = "x$ac_prog" && ac_confdir=.
+  srcdir=$ac_confdir
+  if test ! -r $srcdir/$ac_unique_file; then
+    srcdir=..
+  fi
+else
+  ac_srcdir_defaulted=no
+fi
+if test ! -r $srcdir/$ac_unique_file; then
+  if test "$ac_srcdir_defaulted" = yes; then
+    { echo "$as_me: error: cannot find sources in $ac_confdir or .." >&2
+   { (exit 1); exit 1; }; }
+  else
+    { echo "$as_me: error: cannot find sources in $srcdir" >&2
+   { (exit 1); exit 1; }; }
+  fi
+fi
+srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'`
+ac_env_build_alias_set=${build_alias+set}
+ac_env_build_alias_value=$build_alias
+ac_cv_env_build_alias_set=${build_alias+set}
+ac_cv_env_build_alias_value=$build_alias
+ac_env_host_alias_set=${host_alias+set}
+ac_env_host_alias_value=$host_alias
+ac_cv_env_host_alias_set=${host_alias+set}
+ac_cv_env_host_alias_value=$host_alias
+ac_env_target_alias_set=${target_alias+set}
+ac_env_target_alias_value=$target_alias
+ac_cv_env_target_alias_set=${target_alias+set}
+ac_cv_env_target_alias_value=$target_alias
+ac_env_CC_set=${CC+set}
+ac_env_CC_value=$CC
+ac_cv_env_CC_set=${CC+set}
+ac_cv_env_CC_value=$CC
+ac_env_CFLAGS_set=${CFLAGS+set}
+ac_env_CFLAGS_value=$CFLAGS
+ac_cv_env_CFLAGS_set=${CFLAGS+set}
+ac_cv_env_CFLAGS_value=$CFLAGS
+ac_env_LDFLAGS_set=${LDFLAGS+set}
+ac_env_LDFLAGS_value=$LDFLAGS
+ac_cv_env_LDFLAGS_set=${LDFLAGS+set}
+ac_cv_env_LDFLAGS_value=$LDFLAGS
+ac_env_CPPFLAGS_set=${CPPFLAGS+set}
+ac_env_CPPFLAGS_value=$CPPFLAGS
+ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set}
+ac_cv_env_CPPFLAGS_value=$CPPFLAGS
+ac_env_CPP_set=${CPP+set}
+ac_env_CPP_value=$CPP
+ac_cv_env_CPP_set=${CPP+set}
+ac_cv_env_CPP_value=$CPP
+
+#
+# Report the --help message.
+#
+if test "$ac_init_help" = "long"; then
+  # Omit some internal or obsolete options to make the list less imposing.
+  # This message is too long to be a string in the A/UX 3.1 sh.
+  cat <<EOF
+\`configure' configures this package to adapt to many kinds of systems.
+
+Usage: $0 [OPTION]... [VAR=VALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE.  See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+  -h, --help              display this help and exit
+      --help=short        display options specific to this package
+      --help=recursive    display the short help of all the included packages
+  -V, --version           display version information and exit
+  -q, --quiet, --silent   do not print \`checking...' messages
+      --cache-file=FILE   cache test results in FILE [disabled]
+  -C, --config-cache      alias for \`--cache-file=config.cache'
+  -n, --no-create         do not create output files
+      --srcdir=DIR        find the sources in DIR [configure dir or \`..']
+
+EOF
+
+  cat <<EOF
+Installation directories:
+  --prefix=PREFIX         install architecture-independent files in PREFIX
+                          [$ac_default_prefix]
+  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
+                          [PREFIX]
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+  --bindir=DIR           user executables [EPREFIX/bin]
+  --sbindir=DIR          system admin executables [EPREFIX/sbin]
+  --libexecdir=DIR       program executables [EPREFIX/libexec]
+  --datadir=DIR          read-only architecture-independent data [PREFIX/share]
+  --sysconfdir=DIR       read-only single-machine data [PREFIX/etc]
+  --sharedstatedir=DIR   modifiable architecture-independent data [PREFIX/com]
+  --localstatedir=DIR    modifiable single-machine data [PREFIX/var]
+  --libdir=DIR           object code libraries [EPREFIX/lib]
+  --includedir=DIR       C header files [PREFIX/include]
+  --oldincludedir=DIR    C header files for non-gcc [/usr/include]
+  --infodir=DIR          info documentation [PREFIX/info]
+  --mandir=DIR           man documentation [PREFIX/man]
+EOF
+
+  cat <<\EOF
+
+X features:
+  --x-includes=DIR    X include files are in DIR
+  --x-libraries=DIR   X library files are in DIR
+
+System types:
+  --build=BUILD     configure for building on BUILD [guessed]
+  --host=HOST       build programs to run on HOST [BUILD]
+  --target=TARGET   configure for building compilers for TARGET [HOST]
+EOF
+fi
+
+if test -n "$ac_init_help"; then
+
+  cat <<\EOF
+
+Optional Features:
+  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
+  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
+  --enable-debug          compile with debug code
+  --enable-xdebug         compile with xdebug code
+  --enable-rlpdebug       compile with RLP debug code
+  --disable-nls           do not use NLS
+  --enable-security       enable all security features
+  --enable-win32          if you want win32 suport
+
+Optional Packages:
+  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
+  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
+  --with-libintl=DIR      specifies the base NLS
+  --with-locale-dir=DIR   Location of the locale file(s)
+                       PREFIX/share/locale
+  --with-libpthread=DIR   specifies the base libpthread
+  --with-getopt=DIR       specifies the getopt library location directory
+  --with-x                use the X Window System
+  --with-xgnokiidir=DIR   specifies the base for xgnokii
+
+Some influential environment variables:
+  CC          C compiler command
+  CFLAGS      C compiler flags
+  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
+              nonstandard directory <lib dir>
+  CPPFLAGS    C/C++ preprocessor flags, e.g. -I<include dir> if you have
+              headers in a nonstandard directory <include dir>
+  CPP         C preprocessor
+
+Use these variables to override the choices made by `configure' or to help
+it to find libraries and programs with nonstandard names/locations.
+
+EOF
+fi
+
+if test "$ac_init_help" = "recursive"; then
+  # If there are subdirs, report their specific --help.
+  ac_popdir=`pwd`
+  for ac_subdir in : $ac_subdirs_all; do test "x$ac_subdir" = x: && continue
+    cd $ac_subdir
+    # A "../" for each directory in /$ac_subdir.
+    ac_dots=`echo $ac_subdir |
+             sed 's,^\./,,;s,[^/]$,&/,;s,[^/]*/,../,g'`
+
+    case $srcdir in
+    .) # No --srcdir option.  We are building in place.
+      ac_sub_srcdir=$srcdir ;;
+    [\\/]* | ?:[\\/]* ) # Absolute path.
+      ac_sub_srcdir=$srcdir/$ac_subdir ;;
+    *) # Relative path.
+      ac_sub_srcdir=$ac_dots$srcdir/$ac_subdir ;;
+    esac
+
+    # Check for guested configure; otherwise get Cygnus style configure.
+    if test -f $ac_sub_srcdir/configure.gnu; then
+      echo
+      $SHELL $ac_sub_srcdir/configure.gnu  --help=recursive
+    elif test -f $ac_sub_srcdir/configure; then
+      echo
+      $SHELL $ac_sub_srcdir/configure  --help=recursive
+    elif test -f $ac_sub_srcdir/configure.ac ||
+           test -f $ac_sub_srcdir/configure.in; then
+      echo
+      $ac_configure --help
+    else
+      echo "$as_me: WARNING: no configuration information is in $ac_subdir" >&2
+    fi
+    cd $ac_popdir
+  done
+fi
+
+test -n "$ac_init_help" && exit 0
+if $ac_init_version; then
+  cat <<\EOF
+configure
+generated by GNU Autoconf 2.52
+
+Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001
+Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+EOF
+  exit 0
+fi
+exec 5>config.log
+cat >&5 <<EOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by $as_me, which was
+generated by GNU Autoconf 2.52.  Invocation command line was
+
+  $ $0 $@
+
+EOF
+{
+cat <<_ASUNAME
+## ---------- ##
+## Platform.  ##
+## ---------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
+
+/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+hostinfo               = `(hostinfo) 2>/dev/null               || echo unknown`
+/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
+/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
+
+PATH = $PATH
+
+_ASUNAME
+} >&5
+
+cat >&5 <<EOF
+## ------------ ##
+## Core tests.  ##
+## ------------ ##
+
+EOF
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Also quote any args containing shell meta-characters.
+ac_configure_args=
+ac_sep=
+for ac_arg
+do
+  case $ac_arg in
+  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+  | --no-cr | --no-c) ;;
+  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;;
+  *" "*|*"     "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
+    ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"`
+    ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'"
+    ac_sep=" " ;;
+  *) ac_configure_args="$ac_configure_args$ac_sep$ac_arg"
+     ac_sep=" " ;;
+  esac
+  # Get rid of the leading space.
+done
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log.  We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+trap 'exit_status=$?
+  # Save into config.log some information that might help in debugging.
+  echo >&5
+  echo "## ----------------- ##" >&5
+  echo "## Cache variables.  ##" >&5
+  echo "## ----------------- ##" >&5
+  echo >&5
+  # The following way of writing the cache mishandles newlines in values,
+{
+  (set) 2>&1 |
+    case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in
+    *ac_space=\ *)
+      sed -n \
+        "s/'"'"'/'"'"'\\\\'"'"''"'"'/g;
+         s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p"
+      ;;
+    *)
+      sed -n \
+        "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
+      ;;
+    esac;
+} >&5
+  sed "/^$/d" confdefs.h >conftest.log
+  if test -s conftest.log; then
+    echo >&5
+    echo "## ------------ ##" >&5
+    echo "## confdefs.h.  ##" >&5
+    echo "## ------------ ##" >&5
+    echo >&5
+    cat conftest.log >&5
+  fi
+  (echo; echo) >&5
+  test "$ac_signal" != 0 &&
+    echo "$as_me: caught signal $ac_signal" >&5
+  echo "$as_me: exit $exit_status" >&5
+  rm -rf conftest* confdefs* core core.* *.core conf$$* $ac_clean_files &&
+    exit $exit_status
+     ' 0
+for ac_signal in 1 2 13 15; do
+  trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -rf conftest* confdefs.h
+# AIX cpp loses on an empty file, so make sure it contains at least a newline.
+echo >confdefs.h
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer explicitly selected file to automatically selected ones.
+if test -z "$CONFIG_SITE"; then
+  if test "x$prefix" != xNONE; then
+    CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
+  else
+    CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
+  fi
+fi
+for ac_site_file in $CONFIG_SITE; do
+  if test -r "$ac_site_file"; then
+    { echo "$as_me:888: loading site script $ac_site_file" >&5
+echo "$as_me: loading site script $ac_site_file" >&6;}
+    cat "$ac_site_file" >&5
+    . "$ac_site_file"
+  fi
+done
+
+if test -r "$cache_file"; then
+  # Some versions of bash will fail to source /dev/null (special
+  # files actually), so we avoid doing that.
+  if test -f "$cache_file"; then
+    { echo "$as_me:899: loading cache $cache_file" >&5
+echo "$as_me: loading cache $cache_file" >&6;}
+    case $cache_file in
+      [\\/]* | ?:[\\/]* ) . $cache_file;;
+      *)                      . ./$cache_file;;
+    esac
+  fi
+else
+  { echo "$as_me:907: creating cache $cache_file" >&5
+echo "$as_me: creating cache $cache_file" >&6;}
+  >$cache_file
+fi
+
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in `(set) 2>&1 |
+               sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do
+  eval ac_old_set=\$ac_cv_env_${ac_var}_set
+  eval ac_new_set=\$ac_env_${ac_var}_set
+  eval ac_old_val="\$ac_cv_env_${ac_var}_value"
+  eval ac_new_val="\$ac_env_${ac_var}_value"
+  case $ac_old_set,$ac_new_set in
+    set,)
+      { echo "$as_me:923: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,set)
+      { echo "$as_me:927: error: \`$ac_var' was not set in the previous run" >&5
+echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,);;
+    *)
+      if test "x$ac_old_val" != "x$ac_new_val"; then
+        { echo "$as_me:933: error: \`$ac_var' has changed since the previous run:" >&5
+echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+        { echo "$as_me:935:   former value:  $ac_old_val" >&5
+echo "$as_me:   former value:  $ac_old_val" >&2;}
+        { echo "$as_me:937:   current value: $ac_new_val" >&5
+echo "$as_me:   current value: $ac_new_val" >&2;}
+        ac_cache_corrupted=:
+      fi;;
+  esac
+  # Pass precious variables to config.status.  It doesn't matter if
+  # we pass some twice (in addition to the command line arguments).
+  if test "$ac_new_set" = set; then
+    case $ac_new_val in
+    *" "*|*"   "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
+      ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"`
+      ac_configure_args="$ac_configure_args '$ac_arg'"
+      ;;
+    *) ac_configure_args="$ac_configure_args $ac_var=$ac_new_val"
+       ;;
+    esac
+  fi
+done
+if $ac_cache_corrupted; then
+  { echo "$as_me:956: error: changes in the environment can compromise the build" >&5
+echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+  { { echo "$as_me:958: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
+echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
+  *c*,-n*) ECHO_N= ECHO_C='
+' ECHO_T='     ' ;;
+  *c*,*  ) ECHO_N=-n ECHO_C= ECHO_T= ;;
+  *)      ECHO_N= ECHO_C='\c' ECHO_T= ;;
+esac
+echo "#! $SHELL" >conftest.sh
+echo  "exit 0"   >>conftest.sh
+chmod +x conftest.sh
+if { (echo "$as_me:978: PATH=\".;.\"; conftest.sh") >&5
+  (PATH=".;."; conftest.sh) 2>&5
+  ac_status=$?
+  echo "$as_me:981: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  ac_path_separator=';'
+else
+  ac_path_separator=:
+fi
+PATH_SEPARATOR="$ac_path_separator"
+rm -f conftest.sh
+
+ac_aux_dir=
+for ac_dir in config $srcdir/config; do
+  if test -f $ac_dir/install-sh; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install-sh -c"
+    break
+  elif test -f $ac_dir/install.sh; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install.sh -c"
+    break
+  elif test -f $ac_dir/shtool; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/shtool install -c"
+    break
+  fi
+done
+if test -z "$ac_aux_dir"; then
+  { { echo "$as_me:1007: error: cannot find install-sh or install.sh in config $srcdir/config" >&5
+echo "$as_me: error: cannot find install-sh or install.sh in config $srcdir/config" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+ac_config_guess="$SHELL $ac_aux_dir/config.guess"
+ac_config_sub="$SHELL $ac_aux_dir/config.sub"
+ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
+
+# Make sure we can run config.sub.
+$ac_config_sub sun4 >/dev/null 2>&1 ||
+  { { echo "$as_me:1017: error: cannot run $ac_config_sub" >&5
+echo "$as_me: error: cannot run $ac_config_sub" >&2;}
+   { (exit 1); exit 1; }; }
+
+echo "$as_me:1021: checking build system type" >&5
+echo $ECHO_N "checking build system type... $ECHO_C" >&6
+if test "${ac_cv_build+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_build_alias=$build_alias
+test -z "$ac_cv_build_alias" &&
+  ac_cv_build_alias=`$ac_config_guess`
+test -z "$ac_cv_build_alias" &&
+  { { echo "$as_me:1030: error: cannot guess build type; you must specify one" >&5
+echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
+   { (exit 1); exit 1; }; }
+ac_cv_build=`$ac_config_sub $ac_cv_build_alias` ||
+  { { echo "$as_me:1034: error: $ac_config_sub $ac_cv_build_alias failed." >&5
+echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed." >&2;}
+   { (exit 1); exit 1; }; }
+
+fi
+echo "$as_me:1039: result: $ac_cv_build" >&5
+echo "${ECHO_T}$ac_cv_build" >&6
+build=$ac_cv_build
+build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+
+echo "$as_me:1046: checking host system type" >&5
+echo $ECHO_N "checking host system type... $ECHO_C" >&6
+if test "${ac_cv_host+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_host_alias=$host_alias
+test -z "$ac_cv_host_alias" &&
+  ac_cv_host_alias=$ac_cv_build_alias
+ac_cv_host=`$ac_config_sub $ac_cv_host_alias` ||
+  { { echo "$as_me:1055: error: $ac_config_sub $ac_cv_host_alias failed" >&5
+echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;}
+   { (exit 1); exit 1; }; }
+
+fi
+echo "$as_me:1060: result: $ac_cv_host" >&5
+echo "${ECHO_T}$ac_cv_host" >&6
+host=$ac_cv_host
+host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+
+echo "$as_me:1067: checking target system type" >&5
+echo $ECHO_N "checking target system type... $ECHO_C" >&6
+if test "${ac_cv_target+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_target_alias=$target_alias
+test "x$ac_cv_target_alias" = "x" &&
+  ac_cv_target_alias=$ac_cv_host_alias
+ac_cv_target=`$ac_config_sub $ac_cv_target_alias` ||
+  { { echo "$as_me:1076: error: $ac_config_sub $ac_cv_target_alias failed" >&5
+echo "$as_me: error: $ac_config_sub $ac_cv_target_alias failed" >&2;}
+   { (exit 1); exit 1; }; }
+
+fi
+echo "$as_me:1081: result: $ac_cv_target" >&5
+echo "${ECHO_T}$ac_cv_target" >&6
+target=$ac_cv_target
+target_cpu=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+target_vendor=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+target_os=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+
+# The aliases save the names the user supplied, while $host etc.
+# will get canonicalized.
+test -n "$target_alias" &&
+  test "$program_prefix$program_suffix$program_transform_name" = \
+    NONENONEs,x,x, &&
+  program_prefix=${target_alias}-
+
+CFLAGS="-O2 -Wall"
+ALL_LINGUAS="cs de et fi nl sk pl it"
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+echo "$as_me:1106: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+  ac_save_IFS=$IFS; IFS=$ac_path_separator
+ac_dummy="$PATH"
+for ac_dir in $ac_dummy; do
+  IFS=$ac_save_IFS
+  test -z "$ac_dir" && ac_dir=.
+  $as_executable_p "$ac_dir/$ac_word" || continue
+ac_cv_prog_CC="${ac_tool_prefix}gcc"
+echo "$as_me:1121: found $ac_dir/$ac_word" >&5
+break
+done
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  echo "$as_me:1129: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+  echo "$as_me:1132: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+  ac_ct_CC=$CC
+  # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+echo "$as_me:1141: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+  ac_save_IFS=$IFS; IFS=$ac_path_separator
+ac_dummy="$PATH"
+for ac_dir in $ac_dummy; do
+  IFS=$ac_save_IFS
+  test -z "$ac_dir" && ac_dir=.
+  $as_executable_p "$ac_dir/$ac_word" || continue
+ac_cv_prog_ac_ct_CC="gcc"
+echo "$as_me:1156: found $ac_dir/$ac_word" >&5
+break
+done
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  echo "$as_me:1164: result: $ac_ct_CC" >&5
+echo "${ECHO_T}$ac_ct_CC" >&6
+else
+  echo "$as_me:1167: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  CC=$ac_ct_CC
+else
+  CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+echo "$as_me:1180: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+  ac_save_IFS=$IFS; IFS=$ac_path_separator
+ac_dummy="$PATH"
+for ac_dir in $ac_dummy; do
+  IFS=$ac_save_IFS
+  test -z "$ac_dir" && ac_dir=.
+  $as_executable_p "$ac_dir/$ac_word" || continue
+ac_cv_prog_CC="${ac_tool_prefix}cc"
+echo "$as_me:1195: found $ac_dir/$ac_word" >&5
+break
+done
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  echo "$as_me:1203: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+  echo "$as_me:1206: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+  ac_ct_CC=$CC
+  # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+echo "$as_me:1215: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+  ac_save_IFS=$IFS; IFS=$ac_path_separator
+ac_dummy="$PATH"
+for ac_dir in $ac_dummy; do
+  IFS=$ac_save_IFS
+  test -z "$ac_dir" && ac_dir=.
+  $as_executable_p "$ac_dir/$ac_word" || continue
+ac_cv_prog_ac_ct_CC="cc"
+echo "$as_me:1230: found $ac_dir/$ac_word" >&5
+break
+done
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  echo "$as_me:1238: result: $ac_ct_CC" >&5
+echo "${ECHO_T}$ac_ct_CC" >&6
+else
+  echo "$as_me:1241: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  CC=$ac_ct_CC
+else
+  CC="$ac_cv_prog_CC"
+fi
+
+fi
+if test -z "$CC"; then
+  # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+echo "$as_me:1254: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+  ac_prog_rejected=no
+  ac_save_IFS=$IFS; IFS=$ac_path_separator
+ac_dummy="$PATH"
+for ac_dir in $ac_dummy; do
+  IFS=$ac_save_IFS
+  test -z "$ac_dir" && ac_dir=.
+  $as_executable_p "$ac_dir/$ac_word" || continue
+if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then
+  ac_prog_rejected=yes
+  continue
+fi
+ac_cv_prog_CC="cc"
+echo "$as_me:1274: found $ac_dir/$ac_word" >&5
+break
+done
+
+if test $ac_prog_rejected = yes; then
+  # We found a bogon in the path, so make sure we never use it.
+  set dummy $ac_cv_prog_CC
+  shift
+  if test $# != 0; then
+    # We chose a different compiler from the bogus one.
+    # However, it has the same basename, so the bogon will be chosen
+    # first if we set CC to just the basename; use the full file name.
+    shift
+    set dummy "$ac_dir/$ac_word" ${1+"$@"}
+    shift
+    ac_cv_prog_CC="$@"
+  fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  echo "$as_me:1296: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+  echo "$as_me:1299: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$CC"; then
+  if test -n "$ac_tool_prefix"; then
+  for ac_prog in cl
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+echo "$as_me:1310: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+  ac_save_IFS=$IFS; IFS=$ac_path_separator
+ac_dummy="$PATH"
+for ac_dir in $ac_dummy; do
+  IFS=$ac_save_IFS
+  test -z "$ac_dir" && ac_dir=.
+  $as_executable_p "$ac_dir/$ac_word" || continue
+ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+echo "$as_me:1325: found $ac_dir/$ac_word" >&5
+break
+done
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  echo "$as_me:1333: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+  echo "$as_me:1336: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+    test -n "$CC" && break
+  done
+fi
+if test -z "$CC"; then
+  ac_ct_CC=$CC
+  for ac_prog in cl
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:1349: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+  ac_save_IFS=$IFS; IFS=$ac_path_separator
+ac_dummy="$PATH"
+for ac_dir in $ac_dummy; do
+  IFS=$ac_save_IFS
+  test -z "$ac_dir" && ac_dir=.
+  $as_executable_p "$ac_dir/$ac_word" || continue
+ac_cv_prog_ac_ct_CC="$ac_prog"
+echo "$as_me:1364: found $ac_dir/$ac_word" >&5
+break
+done
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  echo "$as_me:1372: result: $ac_ct_CC" >&5
+echo "${ECHO_T}$ac_ct_CC" >&6
+else
+  echo "$as_me:1375: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$ac_ct_CC" && break
+done
+
+  CC=$ac_ct_CC
+fi
+
+fi
+
+test -z "$CC" && { { echo "$as_me:1387: error: no acceptable cc found in \$PATH" >&5
+echo "$as_me: error: no acceptable cc found in \$PATH" >&2;}
+   { (exit 1); exit 1; }; }
+
+# Provide some information about the compiler.
+echo "$as_me:1392:" \
+     "checking for C compiler version" >&5
+ac_compiler=`set X $ac_compile; echo $2`
+{ (eval echo "$as_me:1395: \"$ac_compiler --version </dev/null >&5\"") >&5
+  (eval $ac_compiler --version </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:1398: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (eval echo "$as_me:1400: \"$ac_compiler -v </dev/null >&5\"") >&5
+  (eval $ac_compiler -v </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:1403: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (eval echo "$as_me:1405: \"$ac_compiler -V </dev/null >&5\"") >&5
+  (eval $ac_compiler -V </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:1408: \$? = $ac_status" >&5
+  (exit $ac_status); }
+
+cat >conftest.$ac_ext <<_ACEOF
+#line 1412 "configure"
+#include "confdefs.h"
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.exe"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+echo "$as_me:1428: checking for C compiler default output" >&5
+echo $ECHO_N "checking for C compiler default output... $ECHO_C" >&6
+ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+if { (eval echo "$as_me:1431: \"$ac_link_default\"") >&5
+  (eval $ac_link_default) 2>&5
+  ac_status=$?
+  echo "$as_me:1434: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  # Find the output, starting from the most likely.  This scheme is
+# not robust to junk in `.', hence go to wildcards (a.*) only as a last
+# resort.
+for ac_file in `ls a.exe conftest.exe 2>/dev/null;
+                ls a.out conftest 2>/dev/null;
+                ls a.* conftest.* 2>/dev/null`; do
+  case $ac_file in
+    *.$ac_ext | *.o | *.obj | *.xcoff | *.tds | *.d | *.pdb ) ;;
+    a.out ) # We found the default executable, but exeext='' is most
+            # certainly right.
+            break;;
+    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+          # FIXME: I believe we export ac_cv_exeext for Libtool --akim.
+          export ac_cv_exeext
+          break;;
+    * ) break;;
+  esac
+done
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+{ { echo "$as_me:1457: error: C compiler cannot create executables" >&5
+echo "$as_me: error: C compiler cannot create executables" >&2;}
+   { (exit 77); exit 77; }; }
+fi
+
+ac_exeext=$ac_cv_exeext
+echo "$as_me:1463: result: $ac_file" >&5
+echo "${ECHO_T}$ac_file" >&6
+
+# Check the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+echo "$as_me:1468: checking whether the C compiler works" >&5
+echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6
+# FIXME: These cross compiler hacks should be removed for Autoconf 3.0
+# If not cross compiling, check that we can run a simple program.
+if test "$cross_compiling" != yes; then
+  if { ac_try='./$ac_file'
+  { (eval echo "$as_me:1474: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:1477: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+    cross_compiling=no
+  else
+    if test "$cross_compiling" = maybe; then
+       cross_compiling=yes
+    else
+       { { echo "$as_me:1484: error: cannot run C compiled programs.
+If you meant to cross compile, use \`--host'." >&5
+echo "$as_me: error: cannot run C compiled programs.
+If you meant to cross compile, use \`--host'." >&2;}
+   { (exit 1); exit 1; }; }
+    fi
+  fi
+fi
+echo "$as_me:1492: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+
+rm -f a.out a.exe conftest$ac_cv_exeext
+ac_clean_files=$ac_clean_files_save
+# Check the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+echo "$as_me:1499: checking whether we are cross compiling" >&5
+echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6
+echo "$as_me:1501: result: $cross_compiling" >&5
+echo "${ECHO_T}$cross_compiling" >&6
+
+echo "$as_me:1504: checking for executable suffix" >&5
+echo $ECHO_N "checking for executable suffix... $ECHO_C" >&6
+if { (eval echo "$as_me:1506: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:1509: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in `(ls conftest.exe; ls conftest; ls conftest.*) 2>/dev/null`; do
+  case $ac_file in
+    *.$ac_ext | *.o | *.obj | *.xcoff | *.tds | *.d | *.pdb ) ;;
+    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+          export ac_cv_exeext
+          break;;
+    * ) break;;
+  esac
+done
+else
+  { { echo "$as_me:1525: error: cannot compute EXEEXT: cannot compile and link" >&5
+echo "$as_me: error: cannot compute EXEEXT: cannot compile and link" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+rm -f conftest$ac_cv_exeext
+echo "$as_me:1531: result: $ac_cv_exeext" >&5
+echo "${ECHO_T}$ac_cv_exeext" >&6
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+echo "$as_me:1537: checking for object suffix" >&5
+echo $ECHO_N "checking for object suffix... $ECHO_C" >&6
+if test "${ac_cv_objext+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 1543 "configure"
+#include "confdefs.h"
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { (eval echo "$as_me:1555: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:1558: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb ) ;;
+    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+       break;;
+  esac
+done
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+{ { echo "$as_me:1570: error: cannot compute OBJEXT: cannot compile" >&5
+echo "$as_me: error: cannot compute OBJEXT: cannot compile" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+echo "$as_me:1577: result: $ac_cv_objext" >&5
+echo "${ECHO_T}$ac_cv_objext" >&6
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+echo "$as_me:1581: checking whether we are using the GNU C compiler" >&5
+echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6
+if test "${ac_cv_c_compiler_gnu+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 1587 "configure"
+#include "confdefs.h"
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:1602: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:1605: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:1608: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:1611: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_compiler_gnu=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_compiler_gnu=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+echo "$as_me:1623: result: $ac_cv_c_compiler_gnu" >&5
+echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6
+GCC=`test $ac_compiler_gnu = yes && echo yes`
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+CFLAGS="-g"
+echo "$as_me:1629: checking whether $CC accepts -g" >&5
+echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6
+if test "${ac_cv_prog_cc_g+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 1635 "configure"
+#include "confdefs.h"
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:1647: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:1650: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:1653: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:1656: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_prog_cc_g=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_prog_cc_g=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:1666: result: $ac_cv_prog_cc_g" >&5
+echo "${ECHO_T}$ac_cv_prog_cc_g" >&6
+if test "$ac_test_CFLAGS" = set; then
+  CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+  if test "$GCC" = yes; then
+    CFLAGS="-g -O2"
+  else
+    CFLAGS="-g"
+  fi
+else
+  if test "$GCC" = yes; then
+    CFLAGS="-O2"
+  else
+    CFLAGS=
+  fi
+fi
+# Some people use a C++ compiler to compile C.  Since we use `exit',
+# in C++ we need to declare it.  In case someone uses the same compiler
+# for both compiling C and C++ we need to have the C++ compiler decide
+# the declaration of exit, since it's the most demanding environment.
+cat >conftest.$ac_ext <<_ACEOF
+#ifndef __cplusplus
+  choke me
+#endif
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:1693: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:1696: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:1699: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:1702: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  for ac_declaration in \
+   ''\
+   '#include <stdlib.h>' \
+   'extern "C" void std::exit (int) throw (); using std::exit;' \
+   'extern "C" void std::exit (int); using std::exit;' \
+   'extern "C" void exit (int) throw ();' \
+   'extern "C" void exit (int);' \
+   'void exit (int);'
+do
+  cat >conftest.$ac_ext <<_ACEOF
+#line 1714 "configure"
+#include "confdefs.h"
+#include <stdlib.h>
+$ac_declaration
+int
+main ()
+{
+exit (42);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:1727: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:1730: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:1733: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:1736: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+continue
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+  cat >conftest.$ac_ext <<_ACEOF
+#line 1746 "configure"
+#include "confdefs.h"
+$ac_declaration
+int
+main ()
+{
+exit (42);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:1758: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:1761: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:1764: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:1767: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  break
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+done
+rm -f conftest*
+if test -n "$ac_declaration"; then
+  echo '#ifdef __cplusplus' >>confdefs.h
+  echo $ac_declaration      >>confdefs.h
+  echo '#endif'             >>confdefs.h
+fi
+
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+echo "$as_me:1799: checking how to run the C preprocessor" >&5
+echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+  CPP=
+fi
+if test -z "$CPP"; then
+  if test "${ac_cv_prog_CPP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+      # Double quotes because CPP needs to be expanded
+    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+    do
+      ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat >conftest.$ac_ext <<_ACEOF
+#line 1820 "configure"
+#include "confdefs.h"
+#include <assert.h>
+                     Syntax error
+_ACEOF
+if { (eval echo "$as_me:1825: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  egrep -v '^ *\+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:1831: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether non-existent headers
+  # can be detected and how.
+  cat >conftest.$ac_ext <<_ACEOF
+#line 1854 "configure"
+#include "confdefs.h"
+#include <ac_nonexistent.h>
+_ACEOF
+if { (eval echo "$as_me:1858: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  egrep -v '^ *\+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:1864: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  # Broken: success on invalid input.
+continue
+else
+  echo "$as_me: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+  break
+fi
+
+    done
+    ac_cv_prog_CPP=$CPP
+
+fi
+  CPP=$ac_cv_prog_CPP
+else
+  ac_cv_prog_CPP=$CPP
+fi
+echo "$as_me:1901: result: $CPP" >&5
+echo "${ECHO_T}$CPP" >&6
+ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat >conftest.$ac_ext <<_ACEOF
+#line 1911 "configure"
+#include "confdefs.h"
+#include <assert.h>
+                     Syntax error
+_ACEOF
+if { (eval echo "$as_me:1916: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  egrep -v '^ *\+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:1922: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether non-existent headers
+  # can be detected and how.
+  cat >conftest.$ac_ext <<_ACEOF
+#line 1945 "configure"
+#include "confdefs.h"
+#include <ac_nonexistent.h>
+_ACEOF
+if { (eval echo "$as_me:1949: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  egrep -v '^ *\+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:1955: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  # Broken: success on invalid input.
+continue
+else
+  echo "$as_me: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+  :
+else
+  { { echo "$as_me:1983: error: C preprocessor \"$CPP\" fails sanity check" >&5
+echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+for ac_prog in flex lex
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:1998: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_LEX+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$LEX"; then
+  ac_cv_prog_LEX="$LEX" # Let the user override the test.
+else
+  ac_save_IFS=$IFS; IFS=$ac_path_separator
+ac_dummy="$PATH"
+for ac_dir in $ac_dummy; do
+  IFS=$ac_save_IFS
+  test -z "$ac_dir" && ac_dir=.
+  $as_executable_p "$ac_dir/$ac_word" || continue
+ac_cv_prog_LEX="$ac_prog"
+echo "$as_me:2013: found $ac_dir/$ac_word" >&5
+break
+done
+
+fi
+fi
+LEX=$ac_cv_prog_LEX
+if test -n "$LEX"; then
+  echo "$as_me:2021: result: $LEX" >&5
+echo "${ECHO_T}$LEX" >&6
+else
+  echo "$as_me:2024: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$LEX" && break
+done
+test -n "$LEX" || LEX=":"
+
+if test -z "$LEXLIB"
+then
+  echo "$as_me:2034: checking for yywrap in -lfl" >&5
+echo $ECHO_N "checking for yywrap in -lfl... $ECHO_C" >&6
+if test "${ac_cv_lib_fl_yywrap+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lfl  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+#line 2042 "configure"
+#include "confdefs.h"
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char yywrap ();
+int
+main ()
+{
+yywrap ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:2061: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:2064: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:2067: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:2070: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_fl_yywrap=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_lib_fl_yywrap=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:2081: result: $ac_cv_lib_fl_yywrap" >&5
+echo "${ECHO_T}$ac_cv_lib_fl_yywrap" >&6
+if test $ac_cv_lib_fl_yywrap = yes; then
+  LEXLIB="-lfl"
+else
+  echo "$as_me:2086: checking for yywrap in -ll" >&5
+echo $ECHO_N "checking for yywrap in -ll... $ECHO_C" >&6
+if test "${ac_cv_lib_l_yywrap+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ll  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+#line 2094 "configure"
+#include "confdefs.h"
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char yywrap ();
+int
+main ()
+{
+yywrap ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:2113: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:2116: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:2119: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:2122: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_l_yywrap=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_lib_l_yywrap=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:2133: result: $ac_cv_lib_l_yywrap" >&5
+echo "${ECHO_T}$ac_cv_lib_l_yywrap" >&6
+if test $ac_cv_lib_l_yywrap = yes; then
+  LEXLIB="-ll"
+fi
+
+fi
+
+fi
+
+if test "x$LEX" != "x:"; then
+  echo "$as_me:2144: checking lex output file root" >&5
+echo $ECHO_N "checking lex output file root... $ECHO_C" >&6
+if test "${ac_cv_prog_lex_root+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  # The minimal lex program is just a single line: %%.  But some broken lexes
+# (Solaris, I think it was) want two %% lines, so accommodate them.
+echo '%%
+%%' | $LEX
+if test -f lex.yy.c; then
+  ac_cv_prog_lex_root=lex.yy
+elif test -f lexyy.c; then
+  ac_cv_prog_lex_root=lexyy
+else
+  { { echo "$as_me:2158: error: cannot find output from $LEX; giving up" >&5
+echo "$as_me: error: cannot find output from $LEX; giving up" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+fi
+echo "$as_me:2163: result: $ac_cv_prog_lex_root" >&5
+echo "${ECHO_T}$ac_cv_prog_lex_root" >&6
+LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root
+
+echo "$as_me:2167: checking whether yytext is a pointer" >&5
+echo $ECHO_N "checking whether yytext is a pointer... $ECHO_C" >&6
+if test "${ac_cv_prog_lex_yytext_pointer+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  # POSIX says lex can declare yytext either as a pointer or an array; the
+# default is implementation-dependent. Figure out which it is, since
+# not all implementations provide the %pointer and %array declarations.
+ac_cv_prog_lex_yytext_pointer=no
+echo 'extern char *yytext;' >>$LEX_OUTPUT_ROOT.c
+ac_save_LIBS=$LIBS
+LIBS="$LIBS $LEXLIB"
+cat >conftest.$ac_ext <<_ACEOF
+`cat $LEX_OUTPUT_ROOT.c`
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:2183: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:2186: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:2189: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:2192: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_prog_lex_yytext_pointer=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_save_LIBS
+rm -f "${LEX_OUTPUT_ROOT}.c"
+
+fi
+echo "$as_me:2204: result: $ac_cv_prog_lex_yytext_pointer" >&5
+echo "${ECHO_T}$ac_cv_prog_lex_yytext_pointer" >&6
+if test $ac_cv_prog_lex_yytext_pointer = yes; then
+
+cat >>confdefs.h <<\EOF
+#define YYTEXT_POINTER 1
+EOF
+
+fi
+
+fi
+# Extract the first word of "rm", so it can be a program name with args.
+set dummy rm; ac_word=$2
+echo "$as_me:2217: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_RM+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $RM in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_RM="$RM" # Let the user override the test with a path.
+  ;;
+  *)
+  ac_save_IFS=$IFS; IFS=$ac_path_separator
+ac_dummy="$PATH"
+for ac_dir in $ac_dummy; do
+  IFS=$ac_save_IFS
+  test -z "$ac_dir" && ac_dir=.
+  if $as_executable_p "$ac_dir/$ac_word"; then
+   ac_cv_path_RM="$ac_dir/$ac_word"
+   echo "$as_me:2234: found $ac_dir/$ac_word" >&5
+   break
+fi
+done
+
+  test -z "$ac_cv_path_RM" && ac_cv_path_RM="no"
+  ;;
+esac
+fi
+RM=$ac_cv_path_RM
+
+if test -n "$RM"; then
+  echo "$as_me:2246: result: $RM" >&5
+echo "${ECHO_T}$RM" >&6
+else
+  echo "$as_me:2249: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+# Extract the first word of "find", so it can be a program name with args.
+set dummy find; ac_word=$2
+echo "$as_me:2255: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_FIND+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $FIND in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_FIND="$FIND" # Let the user override the test with a path.
+  ;;
+  *)
+  ac_save_IFS=$IFS; IFS=$ac_path_separator
+ac_dummy="$PATH"
+for ac_dir in $ac_dummy; do
+  IFS=$ac_save_IFS
+  test -z "$ac_dir" && ac_dir=.
+  if $as_executable_p "$ac_dir/$ac_word"; then
+   ac_cv_path_FIND="$ac_dir/$ac_word"
+   echo "$as_me:2272: found $ac_dir/$ac_word" >&5
+   break
+fi
+done
+
+  test -z "$ac_cv_path_FIND" && ac_cv_path_FIND="no"
+  ;;
+esac
+fi
+FIND=$ac_cv_path_FIND
+
+if test -n "$FIND"; then
+  echo "$as_me:2284: result: $FIND" >&5
+echo "${ECHO_T}$FIND" >&6
+else
+  echo "$as_me:2287: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+for ac_prog in gmake make
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:2295: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_MAKE+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$MAKE"; then
+  ac_cv_prog_MAKE="$MAKE" # Let the user override the test.
+else
+  ac_save_IFS=$IFS; IFS=$ac_path_separator
+ac_dummy="$PATH"
+for ac_dir in $ac_dummy; do
+  IFS=$ac_save_IFS
+  test -z "$ac_dir" && ac_dir=.
+  $as_executable_p "$ac_dir/$ac_word" || continue
+ac_cv_prog_MAKE="$ac_prog"
+echo "$as_me:2310: found $ac_dir/$ac_word" >&5
+break
+done
+
+fi
+fi
+MAKE=$ac_cv_prog_MAKE
+if test -n "$MAKE"; then
+  echo "$as_me:2318: result: $MAKE" >&5
+echo "${ECHO_T}$MAKE" >&6
+else
+  echo "$as_me:2321: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$MAKE" && break
+done
+
+# Find a good install program.  We prefer a C program (faster),
+# so one script is as good as another.  But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# ./install, which can be erroneously created by make from ./install.sh.
+echo "$as_me:2340: checking for a BSD compatible install" >&5
+echo $ECHO_N "checking for a BSD compatible install... $ECHO_C" >&6
+if test -z "$INSTALL"; then
+if test "${ac_cv_path_install+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+    ac_save_IFS=$IFS; IFS=$ac_path_separator
+  for ac_dir in $PATH; do
+    IFS=$ac_save_IFS
+    # Account for people who put trailing slashes in PATH elements.
+    case $ac_dir/ in
+    / | ./ | .// | /cC/* \
+    | /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* \
+    | /usr/ucb/* ) ;;
+    *)
+      # OSF1 and SCO ODT 3.0 have their own names for install.
+      # Don't use installbsd from OSF since it installs stuff as root
+      # by default.
+      for ac_prog in ginstall scoinst install; do
+        if $as_executable_p "$ac_dir/$ac_prog"; then
+         if test $ac_prog = install &&
+            grep dspmsg "$ac_dir/$ac_prog" >/dev/null 2>&1; then
+           # AIX install.  It has an incompatible calling convention.
+           :
+         elif test $ac_prog = install &&
+           grep pwplus "$ac_dir/$ac_prog" >/dev/null 2>&1; then
+           # program-specific install script used by HP pwplus--don't use.
+           :
+         else
+           ac_cv_path_install="$ac_dir/$ac_prog -c"
+           break 2
+         fi
+       fi
+      done
+      ;;
+    esac
+  done
+
+fi
+  if test "${ac_cv_path_install+set}" = set; then
+    INSTALL=$ac_cv_path_install
+  else
+    # As a last resort, use the slow shell script.  We don't cache a
+    # path for INSTALL within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the path is relative.
+    INSTALL=$ac_install_sh
+  fi
+fi
+echo "$as_me:2389: result: $INSTALL" >&5
+echo "${ECHO_T}$INSTALL" >&6
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+test x"$prefix" = xNONE && prefix="$ac_default_prefix"
+
+# Check whether --enable-debug or --disable-debug was given.
+if test "${enable_debug+set}" = set; then
+  enableval="$enable_debug"
+   CFLAGS="-g -Wall"
+         cat >>confdefs.h <<\EOF
+#define DEBUG 1
+EOF
+
+         debug="yes"
+else
+   debug="no"
+
+fi;
+
+# Check whether --enable-xdebug or --disable-xdebug was given.
+if test "${enable_xdebug+set}" = set; then
+  enableval="$enable_xdebug"
+   cat >>confdefs.h <<\EOF
+#define XDEBUG 1
+EOF
+
+         xdebug="yes"
+else
+   xdebug="no"
+
+fi;
+
+# Check whether --enable-rlpdebug or --disable-rlpdebug was given.
+if test "${enable_rlpdebug+set}" = set; then
+  enableval="$enable_rlpdebug"
+   cat >>confdefs.h <<\EOF
+#define RLP_DEBUG 1
+EOF
+
+         rlpdebug="yes"
+else
+   rlpdebug="no"
+
+fi;
+
+LIBS=""
+NLS_LIBS=""
+NLS_CFLAGS=""
+
+# Check whether --with-libintl or --without-libintl was given.
+if test "${with_libintl+set}" = set; then
+  withval="$with_libintl"
+   if test "x$withval" = "xyes"; then
+               { echo "$as_me:2450: WARNING: Usage is --with-libintl=DIR" >&5
+echo "$as_me: WARNING: Usage is --with-libintl=DIR" >&2;}
+         else
+               NLS_LIBS="-L$withval/lib"
+               NLS_CFLAGS="-I$withval/include"
+         fi
+
+fi;
+
+# Check whether --enable-nls or --disable-nls was given.
+if test "${enable_nls+set}" = set; then
+  enableval="$enable_nls"
+   USE_NLS=$enableval
+else
+   USE_NLS=yes
+
+fi;
+
+if test "$USE_NLS" = "yes"; then
+       echo "$as_me:2469: checking whether ${MAKE-make} sets \${MAKE}" >&5
+echo $ECHO_N "checking whether ${MAKE-make} sets \${MAKE}... $ECHO_C" >&6
+set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,./+-,__p_,'`
+if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.make <<\EOF
+all:
+       @echo 'ac_maketemp="${MAKE}"'
+EOF
+# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=`
+if test -n "$ac_maketemp"; then
+  eval ac_cv_prog_make_${ac_make}_set=yes
+else
+  eval ac_cv_prog_make_${ac_make}_set=no
+fi
+rm -f conftest.make
+fi
+if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then
+  echo "$as_me:2489: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+  SET_MAKE=
+else
+  echo "$as_me:2493: result: no" >&5
+echo "${ECHO_T}no" >&6
+  SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+for ac_header in locale.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+echo "$as_me:2501: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 2507 "configure"
+#include "confdefs.h"
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:2511: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  egrep -v '^ *\+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:2517: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  eval "$as_ac_Header=yes"
+else
+  echo "$as_me: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  eval "$as_ac_Header=no"
+fi
+rm -f conftest.err conftest.$ac_ext
+fi
+echo "$as_me:2536: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+  cat >>confdefs.h <<EOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+EOF
+
+fi
+done
+
+for ac_func in setlocale
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:2549: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 2555 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.  */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char $ac_func ();
+char (*f) ();
+
+int
+main ()
+{
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+f = $ac_func;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:2586: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:2589: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:2592: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:2595: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  eval "$as_ac_var=yes"
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+eval "$as_ac_var=no"
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:2605: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+  cat >>confdefs.h <<EOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+EOF
+
+fi
+done
+
+       CPPFLAGS="$CPPFLAGS $NLS_CFLAGS"
+       cat >conftest.$ac_ext <<_ACEOF
+#line 2617 "configure"
+#include "confdefs.h"
+#include <libintl.h>
+_ACEOF
+if { (eval echo "$as_me:2621: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  egrep -v '^ *\+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:2627: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+   cat >>confdefs.h <<\EOF
+#define HAVE_LIBINTL_H 1
+EOF
+
+                    echo "$as_me:2642: result: checking for libintl.h... yes" >&5
+echo "${ECHO_T}checking for libintl.h... yes" >&6
+else
+  echo "$as_me: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+   { echo "$as_me:2647: WARNING: not found header file: libintl.h !!!" >&5
+echo "$as_me: WARNING: not found header file: libintl.h !!!" >&2;}
+                    USE_NLS=no
+
+fi
+rm -f conftest.err conftest.$ac_ext
+fi
+
+if test "$USE_NLS" = "yes"; then
+       echo "$as_me:2656: checking for gettext" >&5
+echo $ECHO_N "checking for gettext... $ECHO_C" >&6
+if test "${ac_cv_func_gettext+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 2662 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char gettext (); below.  */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char gettext ();
+char (*f) ();
+
+int
+main ()
+{
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_gettext) || defined (__stub___gettext)
+choke me
+#else
+f = gettext;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:2693: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:2696: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:2699: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:2702: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_func_gettext=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_func_gettext=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:2712: result: $ac_cv_func_gettext" >&5
+echo "${ECHO_T}$ac_cv_func_gettext" >&6
+if test $ac_cv_func_gettext = yes; then
+  cat >>confdefs.h <<\EOF
+#define HAVE_LIBINTL 1
+EOF
+
+else
+  echo "$as_me:2720: checking for gettext in -lintl" >&5
+echo $ECHO_N "checking for gettext in -lintl... $ECHO_C" >&6
+if test "${ac_cv_lib_intl_gettext+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lintl $NLS_LIBS
+                      $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+#line 2729 "configure"
+#include "confdefs.h"
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char gettext ();
+int
+main ()
+{
+gettext ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:2748: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:2751: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:2754: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:2757: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_intl_gettext=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_lib_intl_gettext=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:2768: result: $ac_cv_lib_intl_gettext" >&5
+echo "${ECHO_T}$ac_cv_lib_intl_gettext" >&6
+if test $ac_cv_lib_intl_gettext = yes; then
+   NLS_LIBS="$NLS_LIBS -lintl"
+                                    cat >>confdefs.h <<\EOF
+#define HAVE_LIBINTL 1
+EOF
+
+else
+   { echo "$as_me:2777: WARNING: not found library: intl !!!" >&5
+echo "$as_me: WARNING: not found library: intl !!!" >&2;}
+                                    USE_NLS=no
+fi
+
+fi
+
+fi
+
+if test "$USE_NLS" = "yes"; then
+
+               LOCALEDIR='${prefix}/share/locale'
+
+# Check whether --with-locale-dir or --without-locale-dir was given.
+if test "${with_locale_dir+set}" = set; then
+  withval="$with_locale_dir"
+   if test x$withval = xyes; then
+                       { echo "$as_me:2794: WARNING: Usage is: --with-locale-dir=basedir" >&5
+echo "$as_me: WARNING: Usage is: --with-locale-dir=basedir" >&2;}
+                     else
+                       if test x$withval = xno; then
+                               { echo "$as_me:2798: WARNING: Usage is: --with-locale-dir=basedir" >&5
+echo "$as_me: WARNING: Usage is: --with-locale-dir=basedir" >&2;}
+                       else
+                               LOCALEDIR=$withval
+                       fi
+                     fi
+
+fi;
+
+       # Extract the first word of "msgfmt", so it can be a program name with args.
+set dummy msgfmt; ac_word=$2
+echo "$as_me:2809: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_MSGFMT+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $MSGFMT in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path.
+  ;;
+  *)
+  ac_save_IFS=$IFS; IFS=$ac_path_separator
+ac_dummy="$PATH"
+for ac_dir in $ac_dummy; do
+  IFS=$ac_save_IFS
+  test -z "$ac_dir" && ac_dir=.
+  if $as_executable_p "$ac_dir/$ac_word"; then
+   ac_cv_path_MSGFMT="$ac_dir/$ac_word"
+   echo "$as_me:2826: found $ac_dir/$ac_word" >&5
+   break
+fi
+done
+
+  test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT="$MSGFMT"
+  ;;
+esac
+fi
+MSGFMT=$ac_cv_path_MSGFMT
+
+if test -n "$MSGFMT"; then
+  echo "$as_me:2838: result: $MSGFMT" >&5
+echo "${ECHO_T}$MSGFMT" >&6
+else
+  echo "$as_me:2841: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+       if test -n "$MSGFMT"; then
+
+for ac_func in dcgettext
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:2850: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 2856 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.  */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char $ac_func ();
+char (*f) ();
+
+int
+main ()
+{
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+f = $ac_func;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:2887: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:2890: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:2893: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:2896: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  eval "$as_ac_var=yes"
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+eval "$as_ac_var=no"
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:2906: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+  cat >>confdefs.h <<EOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+EOF
+
+fi
+done
+
+               # Extract the first word of "gmsgfmt", so it can be a program name with args.
+set dummy gmsgfmt; ac_word=$2
+echo "$as_me:2918: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_GMSGFMT+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $GMSGFMT in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path.
+  ;;
+  *)
+  ac_save_IFS=$IFS; IFS=$ac_path_separator
+ac_dummy="$PATH"
+for ac_dir in $ac_dummy; do
+  IFS=$ac_save_IFS
+  test -z "$ac_dir" && ac_dir=.
+  if $as_executable_p "$ac_dir/$ac_word"; then
+   ac_cv_path_GMSGFMT="$ac_dir/$ac_word"
+   echo "$as_me:2935: found $ac_dir/$ac_word" >&5
+   break
+fi
+done
+
+  test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT"
+  ;;
+esac
+fi
+GMSGFMT=$ac_cv_path_GMSGFMT
+
+if test -n "$GMSGFMT"; then
+  echo "$as_me:2947: result: $GMSGFMT" >&5
+echo "${ECHO_T}$GMSGFMT" >&6
+else
+  echo "$as_me:2950: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+               # Extract the first word of "xgettext", so it can be a program name with args.
+set dummy xgettext; ac_word=$2
+echo "$as_me:2956: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_XGETTEXT+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $XGETTEXT in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path.
+  ;;
+  *)
+  ac_save_IFS=$IFS; IFS=$ac_path_separator
+ac_dummy="$PATH"
+for ac_dir in $ac_dummy; do
+  IFS=$ac_save_IFS
+  test -z "$ac_dir" && ac_dir=.
+  if $as_executable_p "$ac_dir/$ac_word"; then
+   ac_cv_path_XGETTEXT="$ac_dir/$ac_word"
+   echo "$as_me:2973: found $ac_dir/$ac_word" >&5
+   break
+fi
+done
+
+  test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT="$XGETTEXT"
+  ;;
+esac
+fi
+XGETTEXT=$ac_cv_path_XGETTEXT
+
+if test -n "$XGETTEXT"; then
+  echo "$as_me:2985: result: $XGETTEXT" >&5
+echo "${ECHO_T}$XGETTEXT" >&6
+else
+  echo "$as_me:2988: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+               # Extract the first word of "msgmerge", so it can be a program name with args.
+set dummy msgmerge; ac_word=$2
+echo "$as_me:2994: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_MSGMERGE+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $MSGMERGE in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path.
+  ;;
+  *)
+  ac_save_IFS=$IFS; IFS=$ac_path_separator
+ac_dummy="$PATH"
+for ac_dir in $ac_dummy; do
+  IFS=$ac_save_IFS
+  test -z "$ac_dir" && ac_dir=.
+  if $as_executable_p "$ac_dir/$ac_word"; then
+   ac_cv_path_MSGMERGE="$ac_dir/$ac_word"
+   echo "$as_me:3011: found $ac_dir/$ac_word" >&5
+   break
+fi
+done
+
+  test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE="$MSGMERGE"
+  ;;
+esac
+fi
+MSGMERGE=$ac_cv_path_MSGMERGE
+
+if test -n "$MSGMERGE"; then
+  echo "$as_me:3023: result: $MSGMERGE" >&5
+echo "${ECHO_T}$MSGMERGE" >&6
+else
+  echo "$as_me:3026: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+                               if test -n "$XGETTEXT"; then
+                       if $XGETTEXT --omit-header /dev/null 2> /dev/null; then
+                               : ;
+                       else
+                               echo "$as_me:3034: result: found xgettext program is not GNU xgettext; ignore it" >&5
+echo "${ECHO_T}found xgettext program is not GNU xgettext; ignore it" >&6
+                               XGETTEXT=""
+                       fi
+               fi
+
+                               if test -n "$XGETTEXT"; then
+                       if $XGETTEXT --help > /dev/null 2> /dev/null; then
+                               : ;
+                       else
+                               echo "$as_me:3044: result: found xgettext program is not GNU xgettext; ignore it" >&5
+echo "${ECHO_T}found xgettext program is not GNU xgettext; ignore it" >&6
+                               XGETTEXT=""
+                       fi
+               fi
+
+                               if test -n "$MSGFMT"; then
+                       if $MSGFMT < /dev/null 2> /dev/null; then
+                               echo "$as_me:3052: result: found msgfmt program is not GNU msgfmt; NLS will not be installed" >&5
+echo "${ECHO_T}found msgfmt program is not GNU msgfmt; NLS will not be installed" >&6
+                               MSGFMT=""
+                       fi
+               fi
+
+               cat >conftest.$ac_ext <<_ACEOF
+#line 3059 "configure"
+#include "confdefs.h"
+
+int
+main ()
+{
+ extern int _nl_msg_cat_cntr;
+                             return _nl_msg_cat_cntr
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:3072: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:3075: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:3078: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:3081: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+   CATOBJEXT=.gmo
+                             DATADIRNAME=share
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ CATOBJEXT=.mo
+                             DATADIRNAME=lib
+
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+               INSTOBJEXT=.mo
+       fi
+
+       if test -n "$ALL_LINGUAS"; then
+               for lang in $ALL_LINGUAS; do
+                       CATALOGS="$CATALOGS $lang$CATOBJEXT"
+               done
+       fi
+
+fi
+
+if test x"$MSGFMT" = x; then
+       USE_NLS=no
+fi
+
+if test x"$USE_NLS" = xyes; then
+       cat >>confdefs.h <<\EOF
+#define USE_NLS 1
+EOF
+
+fi
+
+# Check whether --with-libpthread or --without-libpthread was given.
+if test "${with_libpthread+set}" = set; then
+  withval="$with_libpthread"
+   if test x$withval = xyes
+     then
+      { echo "$as_me:3120: WARNING: Usage is: --with-libpthread=DIR" >&5
+echo "$as_me: WARNING: Usage is: --with-libpthread=DIR" >&2;}
+     else
+      PTHREAD_LIBS="-L$withval/lib/"
+      PTHREAD_CFLAGS="-I$withval/include/"
+     fi
+
+fi;
+
+PTHREAD_LIBS_SAVE="$PTHREAD_LIBS"
+PTHREAD_LIBS=error
+echo "$as_me:3131: checking for pthread_attr_init in -lpthread" >&5
+echo $ECHO_N "checking for pthread_attr_init in -lpthread... $ECHO_C" >&6
+if test "${ac_cv_lib_pthread_pthread_attr_init+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lpthread  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+#line 3139 "configure"
+#include "confdefs.h"
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char pthread_attr_init ();
+int
+main ()
+{
+pthread_attr_init ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:3158: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:3161: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:3164: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:3167: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_pthread_pthread_attr_init=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_lib_pthread_pthread_attr_init=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:3178: result: $ac_cv_lib_pthread_pthread_attr_init" >&5
+echo "${ECHO_T}$ac_cv_lib_pthread_pthread_attr_init" >&6
+if test $ac_cv_lib_pthread_pthread_attr_init = yes; then
+
+                      PTHREAD_CFLAGS="$PTHREAD_CFLAGS -D_REENTRANT"
+                      PTHREAD_LIBS="$PTHREAD_LIBS_SAVE -lpthread"
+fi
+
+if test "x$PTHREAD_LIBS" = xerror; then
+  echo "$as_me:3187: checking for pthread_attr_init in -lc_r" >&5
+echo $ECHO_N "checking for pthread_attr_init in -lc_r... $ECHO_C" >&6
+if test "${ac_cv_lib_c_r_pthread_attr_init+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lc_r  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+#line 3195 "configure"
+#include "confdefs.h"
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char pthread_attr_init ();
+int
+main ()
+{
+pthread_attr_init ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:3214: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:3217: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:3220: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:3223: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_c_r_pthread_attr_init=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_lib_c_r_pthread_attr_init=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:3234: result: $ac_cv_lib_c_r_pthread_attr_init" >&5
+echo "${ECHO_T}$ac_cv_lib_c_r_pthread_attr_init" >&6
+if test $ac_cv_lib_c_r_pthread_attr_init = yes; then
+
+                    PTHREAD_CFLAGS="$PTHREAD_CFLAGS -D_THREAD_SAFE"
+                    PTHREAD_LIBS="-pthread"
+fi
+
+fi
+
+if test "x$PTHREAD_LIBS" = xerror; then
+   echo "$as_me:3245: checking for pthread_attr_init" >&5
+echo $ECHO_N "checking for pthread_attr_init... $ECHO_C" >&6
+if test "${ac_cv_func_pthread_attr_init+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 3251 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char pthread_attr_init (); below.  */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char pthread_attr_init ();
+char (*f) ();
+
+int
+main ()
+{
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_pthread_attr_init) || defined (__stub___pthread_attr_init)
+choke me
+#else
+f = pthread_attr_init;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:3282: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:3285: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:3288: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:3291: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_func_pthread_attr_init=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_func_pthread_attr_init=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:3301: result: $ac_cv_func_pthread_attr_init" >&5
+echo "${ECHO_T}$ac_cv_func_pthread_attr_init" >&6
+if test $ac_cv_func_pthread_attr_init = yes; then
+  PTHREAD_LIBS=""
+else
+  { { echo "$as_me:3306: error: not found library: pthread !!!" >&5
+echo "$as_me: error: not found library: pthread !!!" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+fi
+
+echo "$as_me:3313: checking for tm_gmtoff in struct tm" >&5
+echo $ECHO_N "checking for tm_gmtoff in struct tm... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+#line 3316 "configure"
+#include "confdefs.h"
+#include <time.h>
+int
+main ()
+{
+struct tm t; t.tm_gmtoff = 0
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:3328: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:3331: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:3334: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:3337: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  echo "$as_me:3339: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+         cat >>confdefs.h <<\EOF
+#define HAVE_TM_GMTON 1
+EOF
+
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+echo "$as_me:3348: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+
+echo "$as_me:3353: checking for timersub" >&5
+echo $ECHO_N "checking for timersub... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+#line 3356 "configure"
+#include "confdefs.h"
+#include <sys/time.h>
+int
+main ()
+{
+timersub(NULL, NULL, NULL)
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:3368: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:3371: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:3374: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:3377: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  cat >>confdefs.h <<\EOF
+#define HAVE_TIMEOPS 1
+EOF
+
+         cat >>confdefs.h <<\EOF
+#define HAVE_TIMEOPS 1
+EOF
+
+         echo "$as_me:3387: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+echo "$as_me:3392: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+
+have_termios="no"
+echo "$as_me:3398: checking for cfsetspeed in termios.h" >&5
+echo $ECHO_N "checking for cfsetspeed in termios.h... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+#line 3401 "configure"
+#include "confdefs.h"
+#include <termios.h>
+int
+main ()
+{
+struct termios t; cfsetspeed(&t, B9600);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:3413: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:3416: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:3419: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:3422: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  cat >>confdefs.h <<\EOF
+#define HAVE_CFSETSPEED 1
+EOF
+
+         have_termios="yes"
+         echo "$as_me:3429: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+echo "$as_me:3434: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+
+if test $have_termios = "no"; then
+   echo "$as_me:3440: checking for cfsetispeed and cfsetospeed in termios.h" >&5
+echo $ECHO_N "checking for cfsetispeed and cfsetospeed in termios.h... $ECHO_C" >&6
+   cat >conftest.$ac_ext <<_ACEOF
+#line 3443 "configure"
+#include "confdefs.h"
+#include <termios.h>
+int
+main ()
+{
+struct termios t; cfsetispeed(&t, B9600);  cfsetospeed(&t, B9600);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:3455: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:3458: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:3461: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:3464: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  cat >>confdefs.h <<\EOF
+#define HAVE_CFSETISPEED 1
+EOF
+
+                cat >>confdefs.h <<\EOF
+#define HAVE_CFSETOSPEED 1
+EOF
+
+                have_termios="yes"
+                echo "$as_me:3475: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+echo "$as_me:3480: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+
+   if test $have_termios = "no"; then
+      echo "$as_me:3486: checking for c_ispeed and c_ospeed in struct termios" >&5
+echo $ECHO_N "checking for c_ispeed and c_ospeed in struct termios... $ECHO_C" >&6
+      cat >conftest.$ac_ext <<_ACEOF
+#line 3489 "configure"
+#include "confdefs.h"
+#include <termios.h>
+int
+main ()
+{
+struct termios t; t.c_iflag = B9600; t.c_oflag = B9600;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:3501: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:3504: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:3507: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:3510: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  cat >>confdefs.h <<\EOF
+#define HAVE_TERMIOS_CSPEED 1
+EOF
+
+                   echo "$as_me:3516: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+echo "$as_me:3521: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+   fi
+fi
+
+echo "$as_me:3528: checking for getopt.h" >&5
+echo $ECHO_N "checking for getopt.h... $ECHO_C" >&6
+if test "${ac_cv_header_getopt_h+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 3534 "configure"
+#include "confdefs.h"
+#include <getopt.h>
+_ACEOF
+if { (eval echo "$as_me:3538: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  egrep -v '^ *\+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:3544: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  ac_cv_header_getopt_h=yes
+else
+  echo "$as_me: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  ac_cv_header_getopt_h=no
+fi
+rm -f conftest.err conftest.$ac_ext
+fi
+echo "$as_me:3563: result: $ac_cv_header_getopt_h" >&5
+echo "${ECHO_T}$ac_cv_header_getopt_h" >&6
+if test $ac_cv_header_getopt_h = yes; then
+  :
+else
+  CFLAGS="$CFLAGS -I../getopt"
+fi
+
+# Check whether --with-gnugetopt or --without-gnugetopt was given.
+if test "${with_gnugetopt+set}" = set; then
+  withval="$with_gnugetopt"
+   if test x$withval=yes; then
+        { echo "$as_me:3575: WARNING: Usage is: --with-getopt=DIR" >&5
+echo "$as_me: WARNING: Usage is: --with-getopt=DIR" >&2;}
+     else
+        GETOPT_LIBS="-L$withval"
+     fi
+
+fi;
+
+OWN_GETOPT=""
+echo "$as_me:3584: checking for getopt_long" >&5
+echo $ECHO_N "checking for getopt_long... $ECHO_C" >&6
+if test "${ac_cv_func_getopt_long+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 3590 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char getopt_long (); below.  */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char getopt_long ();
+char (*f) ();
+
+int
+main ()
+{
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_getopt_long) || defined (__stub___getopt_long)
+choke me
+#else
+f = getopt_long;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:3621: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:3624: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:3627: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:3630: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_func_getopt_long=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_func_getopt_long=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:3640: result: $ac_cv_func_getopt_long" >&5
+echo "${ECHO_T}$ac_cv_func_getopt_long" >&6
+if test $ac_cv_func_getopt_long = yes; then
+  :
+else
+
+        LIBS="$LIBS $GETOPT_LIBS"
+           echo "$as_me:3647: checking for getopt_long in -lgnugetopt" >&5
+echo $ECHO_N "checking for getopt_long in -lgnugetopt... $ECHO_C" >&6
+if test "${ac_cv_lib_gnugetopt_getopt_long+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lgnugetopt  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+#line 3655 "configure"
+#include "confdefs.h"
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char getopt_long ();
+int
+main ()
+{
+getopt_long ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:3674: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:3677: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:3680: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:3683: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_gnugetopt_getopt_long=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_lib_gnugetopt_getopt_long=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:3694: result: $ac_cv_lib_gnugetopt_getopt_long" >&5
+echo "${ECHO_T}$ac_cv_lib_gnugetopt_getopt_long" >&6
+if test $ac_cv_lib_gnugetopt_getopt_long = yes; then
+  LIBS="$LIBS -lgnugetopt"
+else
+  OWN_GETOPT="1"
+fi
+
+fi
+
+if test "$no_x" = yes -o "$with_x" = "no"; then
+   x_support="no"
+   XPM_CFLAGS=""
+   XPM_LIBS=""
+   GTK_CFLAGS=""
+   GTK_LIBS=""
+else
+   echo "$as_me:3711: checking for X" >&5
+echo $ECHO_N "checking for X... $ECHO_C" >&6
+
+# Check whether --with-x or --without-x was given.
+if test "${with_x+set}" = set; then
+  withval="$with_x"
+
+fi;
+# $have_x is `yes', `no', `disabled', or empty when we do not yet know.
+if test "x$with_x" = xno; then
+  # The user explicitly disabled X.
+  have_x=disabled
+else
+  if test "x$x_includes" != xNONE && test "x$x_libraries" != xNONE; then
+    # Both variables are already set.
+    have_x=yes
+  else
+    if test "${ac_cv_have_x+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  # One or both of the vars are not set, and there is no cached value.
+ac_x_includes=no ac_x_libraries=no
+rm -fr conftest.dir
+if mkdir conftest.dir; then
+  cd conftest.dir
+  # Make sure to not put "make" in the Imakefile rules, since we grep it out.
+  cat >Imakefile <<'EOF'
+acfindx:
+       @echo 'ac_im_incroot="${INCROOT}"; ac_im_usrlibdir="${USRLIBDIR}"; ac_im_libdir="${LIBDIR}"'
+EOF
+  if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
+    # GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+    eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
+    # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR.
+    for ac_extension in a so sl; do
+      if test ! -f $ac_im_usrlibdir/libX11.$ac_extension &&
+         test -f $ac_im_libdir/libX11.$ac_extension; then
+        ac_im_usrlibdir=$ac_im_libdir; break
+      fi
+    done
+    # Screen out bogus values from the imake configuration.  They are
+    # bogus both because they are the default anyway, and because
+    # using them would break gcc on systems where it needs fixed includes.
+    case $ac_im_incroot in
+       /usr/include) ;;
+       *) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;;
+    esac
+    case $ac_im_usrlibdir in
+       /usr/lib | /lib) ;;
+       *) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;;
+    esac
+  fi
+  cd ..
+  rm -fr conftest.dir
+fi
+
+# Standard set of common directories for X headers.
+# Check X11 before X11Rn because it is often a symlink to the current release.
+ac_x_header_dirs='
+/usr/X11/include
+/usr/X11R6/include
+/usr/X11R5/include
+/usr/X11R4/include
+
+/usr/include/X11
+/usr/include/X11R6
+/usr/include/X11R5
+/usr/include/X11R4
+
+/usr/local/X11/include
+/usr/local/X11R6/include
+/usr/local/X11R5/include
+/usr/local/X11R4/include
+
+/usr/local/include/X11
+/usr/local/include/X11R6
+/usr/local/include/X11R5
+/usr/local/include/X11R4
+
+/usr/X386/include
+/usr/x386/include
+/usr/XFree86/include/X11
+
+/usr/include
+/usr/local/include
+/usr/unsupported/include
+/usr/athena/include
+/usr/local/x11r5/include
+/usr/lpp/Xamples/include
+
+/usr/openwin/include
+/usr/openwin/share/include'
+
+if test "$ac_x_includes" = no; then
+  # Guess where to find include files, by looking for Intrinsic.h.
+  # First, try using that file with no special directory specified.
+  cat >conftest.$ac_ext <<_ACEOF
+#line 3808 "configure"
+#include "confdefs.h"
+#include <X11/Intrinsic.h>
+_ACEOF
+if { (eval echo "$as_me:3812: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  egrep -v '^ *\+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:3818: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  # We can compile using X headers with no special include directory.
+ac_x_includes=
+else
+  echo "$as_me: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  for ac_dir in $ac_x_header_dirs; do
+  if test -r "$ac_dir/X11/Intrinsic.h"; then
+    ac_x_includes=$ac_dir
+    break
+  fi
+done
+fi
+rm -f conftest.err conftest.$ac_ext
+fi # $ac_x_includes = no
+
+if test "$ac_x_libraries" = no; then
+  # Check for the libraries.
+  # See if we find them without any special options.
+  # Don't add to $LIBS permanently.
+  ac_save_LIBS=$LIBS
+  LIBS="-lXt $LIBS"
+  cat >conftest.$ac_ext <<_ACEOF
+#line 3851 "configure"
+#include "confdefs.h"
+#include <X11/Intrinsic.h>
+int
+main ()
+{
+XtMalloc (0)
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:3863: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:3866: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:3869: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:3872: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  LIBS=$ac_save_LIBS
+# We can link X programs with no special library path.
+ac_x_libraries=
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+LIBS=$ac_save_LIBS
+for ac_dir in `echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g`
+do
+  # Don't even attempt the hair of trying to link an X program!
+  for ac_extension in a so sl; do
+    if test -r $ac_dir/libXt.$ac_extension; then
+      ac_x_libraries=$ac_dir
+      break 2
+    fi
+  done
+done
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi # $ac_x_libraries = no
+
+if test "$ac_x_includes" = no || test "$ac_x_libraries" = no; then
+  # Didn't find X anywhere.  Cache the known absence of X.
+  ac_cv_have_x="have_x=no"
+else
+  # Record where we found X for the cache.
+  ac_cv_have_x="have_x=yes \
+               ac_x_includes=$ac_x_includes ac_x_libraries=$ac_x_libraries"
+fi
+fi
+
+  fi
+  eval "$ac_cv_have_x"
+fi # $with_x != no
+
+if test "$have_x" != yes; then
+  echo "$as_me:3910: result: $have_x" >&5
+echo "${ECHO_T}$have_x" >&6
+  no_x=yes
+else
+  # If each of the values was on the command line, it overrides each guess.
+  test "x$x_includes" = xNONE && x_includes=$ac_x_includes
+  test "x$x_libraries" = xNONE && x_libraries=$ac_x_libraries
+  # Update the cache value to reflect the command line values.
+  ac_cv_have_x="have_x=yes \
+               ac_x_includes=$x_includes ac_x_libraries=$x_libraries"
+  echo "$as_me:3920: result: libraries $x_libraries, headers $x_includes" >&5
+echo "${ECHO_T}libraries $x_libraries, headers $x_includes" >&6
+fi
+
+   CPPFLAGS="$CPPFLAGS -I$x_includes"
+
+for ac_header in X11/xpm.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+echo "$as_me:3929: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 3935 "configure"
+#include "confdefs.h"
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:3939: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  egrep -v '^ *\+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:3945: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  eval "$as_ac_Header=yes"
+else
+  echo "$as_me: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  eval "$as_ac_Header=no"
+fi
+rm -f conftest.err conftest.$ac_ext
+fi
+echo "$as_me:3964: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+  cat >>confdefs.h <<EOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+EOF
+  XPMINC="yes"
+else
+   XPMINC="no"
+fi
+done
+
+   if test "x$XPMINC" = "xno"; then
+      x_support="no"
+      XPM_CFLAGS=""
+      XPM_LIBS=""
+      GTK_CFLAGS=""
+      GTK_LIBS=""
+      { echo "$as_me:3982: WARNING: Cannot find include X11/xpm.h" >&5
+echo "$as_me: WARNING: Cannot find include X11/xpm.h" >&2;}
+      { echo "$as_me:3984: WARNING: Disabling xgnokii." >&5
+echo "$as_me: WARNING: Disabling xgnokii." >&2;}
+   elif test "x$x_libraries" = "xNONE"; then
+      x_support="no"
+      XPM_CFLAGS=""
+      XPM_LIBS=""
+      GTK_CFLAGS=""
+      GTK_LIBS=""
+      { echo "$as_me:3992: WARNING: Cannot find library libX11." >&5
+echo "$as_me: WARNING: Cannot find library libX11." >&2;}
+      { echo "$as_me:3994: WARNING: Disabling xgnokii." >&5
+echo "$as_me: WARNING: Disabling xgnokii." >&2;}
+   else
+      echo "$as_me:3997: checking for XpmWriteFileFromXpmImage in -lXpm" >&5
+echo $ECHO_N "checking for XpmWriteFileFromXpmImage in -lXpm... $ECHO_C" >&6
+if test "${ac_cv_lib_Xpm_XpmWriteFileFromXpmImage+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lXpm  -L$x_libraries -lX11
+       $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+#line 4006 "configure"
+#include "confdefs.h"
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char XpmWriteFileFromXpmImage ();
+int
+main ()
+{
+XpmWriteFileFromXpmImage ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:4025: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:4028: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:4031: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:4034: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_Xpm_XpmWriteFileFromXpmImage=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_lib_Xpm_XpmWriteFileFromXpmImage=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:4045: result: $ac_cv_lib_Xpm_XpmWriteFileFromXpmImage" >&5
+echo "${ECHO_T}$ac_cv_lib_Xpm_XpmWriteFileFromXpmImage" >&6
+if test $ac_cv_lib_Xpm_XpmWriteFileFromXpmImage = yes; then
+   XPM_CFLAGS="-I$x_includes" XPM_LIBS="-L$x_libraries -lX11 -lXpm"
+              cat >>confdefs.h <<\EOF
+#define XPM 1
+EOF
+
+else
+  { echo "$as_me:4054: WARNING: Cannot found library libXpm - disabling XPM support." >&5
+echo "$as_me: WARNING: Cannot found library libXpm - disabling XPM support." >&2;}
+fi
+
+      for ac_prog in gtk-config gtk12-config
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:4062: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_GTK_CONFIG+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $GTK_CONFIG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_GTK_CONFIG="$GTK_CONFIG" # Let the user override the test with a path.
+  ;;
+  *)
+  ac_save_IFS=$IFS; IFS=$ac_path_separator
+ac_dummy="$PATH"
+for ac_dir in $ac_dummy; do
+  IFS=$ac_save_IFS
+  test -z "$ac_dir" && ac_dir=.
+  if $as_executable_p "$ac_dir/$ac_word"; then
+   ac_cv_path_GTK_CONFIG="$ac_dir/$ac_word"
+   echo "$as_me:4079: found $ac_dir/$ac_word" >&5
+   break
+fi
+done
+
+  ;;
+esac
+fi
+GTK_CONFIG=$ac_cv_path_GTK_CONFIG
+
+if test -n "$GTK_CONFIG"; then
+  echo "$as_me:4090: result: $GTK_CONFIG" >&5
+echo "${ECHO_T}$GTK_CONFIG" >&6
+else
+  echo "$as_me:4093: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$GTK_CONFIG" && break
+done
+test -n "$GTK_CONFIG" || GTK_CONFIG="no"
+
+      if test "$GTK_CONFIG" = no; then
+         x_support="no"
+         GTK_CFLAGS=""
+         GTK_LIBS=""
+         { echo "$as_me:4105: WARNING: Cannot find gtk-config." >&5
+echo "$as_me: WARNING: Cannot find gtk-config." >&2;}
+         { echo "$as_me:4107: WARNING: Disabling xgnokii." >&5
+echo "$as_me: WARNING: Disabling xgnokii." >&2;}
+      else
+         GTK_CFLAGS=`$GTK_CONFIG --cflags`
+         GTK_LIBS=`$GTK_CONFIG --libs`
+         x_support="yes"
+
+         XGNOKIIDIR='${prefix}/share'
+         XGNOKIIPATH=${prefix}/share
+
+# Check whether --with-xgnokiidir or --without-xgnokiidir was given.
+if test "${with_xgnokiidir+set}" = set; then
+  withval="$with_xgnokiidir"
+   if test x$withval = xyes; then
+                 { echo "$as_me:4121: WARNING: Usage is: --with-xgnokiilib=DIR" >&5
+echo "$as_me: WARNING: Usage is: --with-xgnokiilib=DIR" >&2;}
+              else
+                 XGNOKIIDIR="$withval"
+                 XGNOKIIPATH="$withval"
+              fi
+
+fi;
+      fi
+   fi
+fi
+
+echo "$as_me:4133: checking for socket in -lsocket" >&5
+echo $ECHO_N "checking for socket in -lsocket... $ECHO_C" >&6
+if test "${ac_cv_lib_socket_socket+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsocket  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+#line 4141 "configure"
+#include "confdefs.h"
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char socket ();
+int
+main ()
+{
+socket ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:4160: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:4163: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:4166: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:4169: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_socket_socket=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_lib_socket_socket=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:4180: result: $ac_cv_lib_socket_socket" >&5
+echo "${ECHO_T}$ac_cv_lib_socket_socket" >&6
+if test $ac_cv_lib_socket_socket = yes; then
+  cat >>confdefs.h <<EOF
+#define HAVE_LIBSOCKET 1
+EOF
+
+  LIBS="-lsocket $LIBS"
+
+fi
+
+# Check whether --enable-security or --disable-security was given.
+if test "${enable_security+set}" = set; then
+  enableval="$enable_security"
+   cat >>confdefs.h <<\EOF
+#define SECURITY 1
+EOF
+
+     security="yes"
+else
+   security="no"
+
+fi;
+
+# Check whether --enable-win32 or --disable-win32 was given.
+if test "${enable_win32+set}" = set; then
+  enableval="$enable_win32"
+   cat >>confdefs.h <<\EOF
+#define WIN32 1
+EOF
+
+     win32="-DWIN32"
+else
+   win32=""
+
+fi;
+
+echo "$as_me:4217: checking for grantpt" >&5
+echo $ECHO_N "checking for grantpt... $ECHO_C" >&6
+if test "${ac_cv_func_grantpt+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 4223 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char grantpt (); below.  */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char grantpt ();
+char (*f) ();
+
+int
+main ()
+{
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_grantpt) || defined (__stub___grantpt)
+choke me
+#else
+f = grantpt;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:4254: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:4257: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:4260: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:4263: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_func_grantpt=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_func_grantpt=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:4273: result: $ac_cv_func_grantpt" >&5
+echo "${ECHO_T}$ac_cv_func_grantpt" >&6
+if test $ac_cv_func_grantpt = yes; then
+   if test "$cross_compiling" = yes; then
+  { echo "$as_me:4277: WARNING: \"Ensure to disable unix98ptys when crosscompiling\"" >&5
+echo "$as_me: WARNING: \"Ensure to disable unix98ptys when crosscompiling\"" >&2;}
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 4281 "configure"
+#include "confdefs.h"
+
+#define  _XOPEN_SOURCE 500
+
+#include <features.h>
+#include <stdlib.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <unistd.h>
+
+int main()
+{
+       char *name = NULL;
+        int master, err;
+
+        master = open("/dev/ptmx", O_RDWR | O_NOCTTY | O_NONBLOCK);
+        if (master >= 0) {
+                err = grantpt(master);
+                err = err || unlockpt(master);
+                if (!err) {
+                        name = ptsname(master);
+                } else {
+                        exit(-1);
+                }
+        } else {
+               exit(-1);
+       }
+       close(master);
+       exit(0);
+}
+
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:4316: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:4319: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (eval echo "$as_me:4321: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:4324: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  cat >>confdefs.h <<\EOF
+#define USE_UNIX98PTYS 1
+EOF
+
+else
+  echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+{ echo "$as_me:4334: WARNING: \"No unix98ptys\"" >&5
+echo "$as_me: WARNING: \"No unix98ptys\"" >&2;}
+fi
+rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+fi
+
+echo "$as_me:4342: checking for ANSI C header files" >&5
+echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
+if test "${ac_cv_header_stdc+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 4348 "configure"
+#include "confdefs.h"
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+_ACEOF
+if { (eval echo "$as_me:4356: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  egrep -v '^ *\+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:4362: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  ac_cv_header_stdc=yes
+else
+  echo "$as_me: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  ac_cv_header_stdc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+  cat >conftest.$ac_ext <<_ACEOF
+#line 4384 "configure"
+#include "confdefs.h"
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  egrep "memchr" >/dev/null 2>&1; then
+  :
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+  cat >conftest.$ac_ext <<_ACEOF
+#line 4402 "configure"
+#include "confdefs.h"
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  egrep "free" >/dev/null 2>&1; then
+  :
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+  if test "$cross_compiling" = yes; then
+  :
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 4423 "configure"
+#include "confdefs.h"
+#include <ctype.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) (('a' <= (c) && (c) <= 'i') \
+                     || ('j' <= (c) && (c) <= 'r') \
+                     || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+  int i;
+  for (i = 0; i < 256; i++)
+    if (XOR (islower (i), ISLOWER (i))
+        || toupper (i) != TOUPPER (i))
+      exit(2);
+  exit (0);
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:4449: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:4452: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (eval echo "$as_me:4454: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:4457: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  :
+else
+  echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_header_stdc=no
+fi
+rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+fi
+echo "$as_me:4470: result: $ac_cv_header_stdc" >&5
+echo "${ECHO_T}$ac_cv_header_stdc" >&6
+if test $ac_cv_header_stdc = yes; then
+
+cat >>confdefs.h <<\EOF
+#define STDC_HEADERS 1
+EOF
+
+fi
+
+echo "$as_me:4480: checking for sys/wait.h that is POSIX.1 compatible" >&5
+echo $ECHO_N "checking for sys/wait.h that is POSIX.1 compatible... $ECHO_C" >&6
+if test "${ac_cv_header_sys_wait_h+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 4486 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+#include <sys/wait.h>
+#ifndef WEXITSTATUS
+# define WEXITSTATUS(stat_val) ((unsigned)(stat_val) >> 8)
+#endif
+#ifndef WIFEXITED
+# define WIFEXITED(stat_val) (((stat_val) & 255) == 0)
+#endif
+
+int
+main ()
+{
+  int s;
+  wait (&s);
+  s = WIFEXITED (s) ? WEXITSTATUS (s) : 1;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:4508: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:4511: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:4514: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:4517: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_header_sys_wait_h=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_header_sys_wait_h=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:4527: result: $ac_cv_header_sys_wait_h" >&5
+echo "${ECHO_T}$ac_cv_header_sys_wait_h" >&6
+if test $ac_cv_header_sys_wait_h = yes; then
+
+cat >>confdefs.h <<\EOF
+#define HAVE_SYS_WAIT_H 1
+EOF
+
+fi
+
+for ac_header in fcntl.h sys/ioctl.h sys/time.h unistd.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+echo "$as_me:4540: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 4546 "configure"
+#include "confdefs.h"
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:4550: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  egrep -v '^ *\+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:4556: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  eval "$as_ac_Header=yes"
+else
+  echo "$as_me: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  eval "$as_ac_Header=no"
+fi
+rm -f conftest.err conftest.$ac_ext
+fi
+echo "$as_me:4575: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+  cat >>confdefs.h <<EOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+EOF
+
+fi
+done
+
+echo "$as_me:4585: checking for $CC option to accept ANSI C" >&5
+echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6
+if test "${ac_cv_prog_cc_stdc+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_prog_cc_stdc=no
+ac_save_CC=$CC
+cat >conftest.$ac_ext <<_ACEOF
+#line 4593 "configure"
+#include "confdefs.h"
+#include <stdarg.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+     char **p;
+     int i;
+{
+  return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+  char *s;
+  va_list v;
+  va_start (v,p);
+  s = g (p, va_arg (v,int));
+  va_end (v);
+  return s;
+}
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
+  ;
+  return 0;
+}
+_ACEOF
+# Don't try gcc -ansi; that turns off useful extensions and
+# breaks some systems' header files.
+# AIX                  -qlanglvl=ansi
+# Ultrix and OSF/1     -std1
+# HP-UX 10.20 and later        -Ae
+# HP-UX older versions -Aa -D_HPUX_SOURCE
+# SVR4                 -Xc -D__EXTENSIONS__
+for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+  CC="$ac_save_CC $ac_arg"
+  rm -f conftest.$ac_objext
+if { (eval echo "$as_me:4642: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:4645: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:4648: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:4651: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_prog_cc_stdc=$ac_arg
+break
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+fi
+rm -f conftest.$ac_objext
+done
+rm -f conftest.$ac_ext conftest.$ac_objext
+CC=$ac_save_CC
+
+fi
+
+case "x$ac_cv_prog_cc_stdc" in
+  x|xno)
+    echo "$as_me:4668: result: none needed" >&5
+echo "${ECHO_T}none needed" >&6 ;;
+  *)
+    echo "$as_me:4671: result: $ac_cv_prog_cc_stdc" >&5
+echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6
+    CC="$CC $ac_cv_prog_cc_stdc" ;;
+esac
+
+echo "$as_me:4676: checking for an ANSI C-conforming const" >&5
+echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6
+if test "${ac_cv_c_const+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 4682 "configure"
+#include "confdefs.h"
+
+int
+main ()
+{
+/* FIXME: Include the comments suggested by Paul. */
+#ifndef __cplusplus
+  /* Ultrix mips cc rejects this.  */
+  typedef int charset[2];
+  const charset x;
+  /* SunOS 4.1.1 cc rejects this.  */
+  char const *const *ccp;
+  char **p;
+  /* NEC SVR4.0.2 mips cc rejects this.  */
+  struct point {int x, y;};
+  static struct point const zero = {0,0};
+  /* AIX XL C 1.02.0.0 rejects this.
+     It does not let you subtract one const X* pointer from another in
+     an arm of an if-expression whose if-part is not a constant
+     expression */
+  const char *g = "string";
+  ccp = &g + (g ? g-g : 0);
+  /* HPUX 7.0 cc rejects these. */
+  ++ccp;
+  p = (char**) ccp;
+  ccp = (char const *const *) p;
+  { /* SCO 3.2v4 cc rejects this.  */
+    char *t;
+    char const *s = 0 ? (char *) 0 : (char const *) 0;
+
+    *t++ = 0;
+  }
+  { /* Someone thinks the Sun supposedly-ANSI compiler will reject this.  */
+    int x[] = {25, 17};
+    const int *foo = &x[0];
+    ++foo;
+  }
+  { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */
+    typedef const int *iptr;
+    iptr p = 0;
+    ++p;
+  }
+  { /* AIX XL C 1.02.0.0 rejects this saying
+       "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
+    struct s { int j; const int *ap[3]; };
+    struct s *b; b->j = 5;
+  }
+  { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
+    const int foo = 10;
+  }
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:4740: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:4743: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:4746: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:4749: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_c_const=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_c_const=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:4759: result: $ac_cv_c_const" >&5
+echo "${ECHO_T}$ac_cv_c_const" >&6
+if test $ac_cv_c_const = no; then
+
+cat >>confdefs.h <<\EOF
+#define const
+EOF
+
+fi
+
+echo "$as_me:4769: checking for inline" >&5
+echo $ECHO_N "checking for inline... $ECHO_C" >&6
+if test "${ac_cv_c_inline+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_c_inline=no
+for ac_kw in inline __inline__ __inline; do
+  cat >conftest.$ac_ext <<_ACEOF
+#line 4777 "configure"
+#include "confdefs.h"
+#ifndef __cplusplus
+static $ac_kw int static_foo () {return 0; }
+$ac_kw int foo () {return 0; }
+#endif
+
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:4786: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:4789: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:4792: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:4795: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_c_inline=$ac_kw; break
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+done
+
+fi
+echo "$as_me:4806: result: $ac_cv_c_inline" >&5
+echo "${ECHO_T}$ac_cv_c_inline" >&6
+case $ac_cv_c_inline in
+  inline | yes) ;;
+  no)
+cat >>confdefs.h <<\EOF
+#define inline
+EOF
+ ;;
+  *)  cat >>confdefs.h <<EOF
+#define inline $ac_cv_c_inline
+EOF
+ ;;
+esac
+
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+                  inttypes.h stdint.h unistd.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+echo "$as_me:4827: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 4833 "configure"
+#include "confdefs.h"
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:4839: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:4842: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:4845: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:4848: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  eval "$as_ac_Header=yes"
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+eval "$as_ac_Header=no"
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:4858: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+  cat >>confdefs.h <<EOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+EOF
+
+fi
+done
+
+echo "$as_me:4868: checking for pid_t" >&5
+echo $ECHO_N "checking for pid_t... $ECHO_C" >&6
+if test "${ac_cv_type_pid_t+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 4874 "configure"
+#include "confdefs.h"
+$ac_includes_default
+int
+main ()
+{
+if ((pid_t *) 0)
+  return 0;
+if (sizeof (pid_t))
+  return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:4889: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:4892: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:4895: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:4898: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_type_pid_t=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_type_pid_t=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:4908: result: $ac_cv_type_pid_t" >&5
+echo "${ECHO_T}$ac_cv_type_pid_t" >&6
+if test $ac_cv_type_pid_t = yes; then
+  :
+else
+
+cat >>confdefs.h <<EOF
+#define pid_t int
+EOF
+
+fi
+
+echo "$as_me:4920: checking for size_t" >&5
+echo $ECHO_N "checking for size_t... $ECHO_C" >&6
+if test "${ac_cv_type_size_t+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 4926 "configure"
+#include "confdefs.h"
+$ac_includes_default
+int
+main ()
+{
+if ((size_t *) 0)
+  return 0;
+if (sizeof (size_t))
+  return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:4941: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:4944: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:4947: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:4950: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_type_size_t=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_type_size_t=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:4960: result: $ac_cv_type_size_t" >&5
+echo "${ECHO_T}$ac_cv_type_size_t" >&6
+if test $ac_cv_type_size_t = yes; then
+  :
+else
+
+cat >>confdefs.h <<EOF
+#define size_t unsigned
+EOF
+
+fi
+
+echo "$as_me:4972: checking whether time.h and sys/time.h may both be included" >&5
+echo $ECHO_N "checking whether time.h and sys/time.h may both be included... $ECHO_C" >&6
+if test "${ac_cv_header_time+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 4978 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+#include <sys/time.h>
+#include <time.h>
+
+int
+main ()
+{
+if ((struct tm *) 0)
+return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:4994: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:4997: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:5000: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:5003: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_header_time=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_header_time=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:5013: result: $ac_cv_header_time" >&5
+echo "${ECHO_T}$ac_cv_header_time" >&6
+if test $ac_cv_header_time = yes; then
+
+cat >>confdefs.h <<\EOF
+#define TIME_WITH_SYS_TIME 1
+EOF
+
+fi
+
+echo "$as_me:5023: checking whether struct tm is in sys/time.h or time.h" >&5
+echo $ECHO_N "checking whether struct tm is in sys/time.h or time.h... $ECHO_C" >&6
+if test "${ac_cv_struct_tm+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 5029 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+#include <time.h>
+
+int
+main ()
+{
+struct tm *tp; tp->tm_sec;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:5043: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:5046: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:5049: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:5052: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_struct_tm=time.h
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_struct_tm=sys/time.h
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:5062: result: $ac_cv_struct_tm" >&5
+echo "${ECHO_T}$ac_cv_struct_tm" >&6
+if test $ac_cv_struct_tm = sys/time.h; then
+
+cat >>confdefs.h <<\EOF
+#define TM_IN_SYS_TIME 1
+EOF
+
+fi
+
+if test $ac_cv_c_compiler_gnu = yes; then
+    echo "$as_me:5073: checking whether $CC needs -traditional" >&5
+echo $ECHO_N "checking whether $CC needs -traditional... $ECHO_C" >&6
+if test "${ac_cv_prog_gcc_traditional+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+    ac_pattern="Autoconf.*'x'"
+  cat >conftest.$ac_ext <<_ACEOF
+#line 5080 "configure"
+#include "confdefs.h"
+#include <sgtty.h>
+Autoconf TIOCGETP
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  egrep "$ac_pattern" >/dev/null 2>&1; then
+  ac_cv_prog_gcc_traditional=yes
+else
+  ac_cv_prog_gcc_traditional=no
+fi
+rm -f conftest*
+
+  if test $ac_cv_prog_gcc_traditional = no; then
+    cat >conftest.$ac_ext <<_ACEOF
+#line 5095 "configure"
+#include "confdefs.h"
+#include <termio.h>
+Autoconf TCGETA
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  egrep "$ac_pattern" >/dev/null 2>&1; then
+  ac_cv_prog_gcc_traditional=yes
+fi
+rm -f conftest*
+
+  fi
+fi
+echo "$as_me:5108: result: $ac_cv_prog_gcc_traditional" >&5
+echo "${ECHO_T}$ac_cv_prog_gcc_traditional" >&6
+  if test $ac_cv_prog_gcc_traditional = yes; then
+    CC="$CC -traditional"
+  fi
+fi
+
+echo "$as_me:5115: checking for working memcmp" >&5
+echo $ECHO_N "checking for working memcmp... $ECHO_C" >&6
+if test "${ac_cv_func_memcmp_working+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test "$cross_compiling" = yes; then
+  ac_cv_func_memcmp_working=no
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 5124 "configure"
+#include "confdefs.h"
+
+int
+main ()
+{
+
+  /* Some versions of memcmp are not 8-bit clean.  */
+  char c0 = 0x40, c1 = 0x80, c2 = 0x81;
+  if (memcmp(&c0, &c2, 1) >= 0 || memcmp(&c1, &c2, 1) >= 0)
+    exit (1);
+
+  /* The Next x86 OpenStep bug shows up only when comparing 16 bytes
+     or more and with at least one buffer not starting on a 4-byte boundary.
+     William Lewis provided this test program.   */
+  {
+    char foo[21];
+    char bar[21];
+    int i;
+    for (i = 0; i < 4; i++)
+      {
+        char *a = foo + i;
+        char *b = bar + i;
+        strcpy (a, "--------01111111");
+        strcpy (b, "--------10000000");
+        if (memcmp (a, b, 16) >= 0)
+          exit (1);
+      }
+    exit (0);
+  }
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:5160: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:5163: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (eval echo "$as_me:5165: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:5168: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_func_memcmp_working=yes
+else
+  echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_func_memcmp_working=no
+fi
+rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+echo "$as_me:5180: result: $ac_cv_func_memcmp_working" >&5
+echo "${ECHO_T}$ac_cv_func_memcmp_working" >&6
+test $ac_cv_func_memcmp_working = no && LIBOBJS="$LIBOBJS memcmp.$ac_objext"
+
+echo "$as_me:5184: checking return type of signal handlers" >&5
+echo $ECHO_N "checking return type of signal handlers... $ECHO_C" >&6
+if test "${ac_cv_type_signal+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 5190 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+#include <signal.h>
+#ifdef signal
+# undef signal
+#endif
+#ifdef __cplusplus
+extern "C" void (*signal (int, void (*)(int)))(int);
+#else
+void (*signal ()) ();
+#endif
+
+int
+main ()
+{
+int i;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:5212: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:5215: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:5218: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:5221: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_type_signal=void
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_type_signal=int
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:5231: result: $ac_cv_type_signal" >&5
+echo "${ECHO_T}$ac_cv_type_signal" >&6
+
+cat >>confdefs.h <<EOF
+#define RETSIGTYPE $ac_cv_type_signal
+EOF
+
+for ac_func in strftime
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:5241: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 5247 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.  */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char $ac_func ();
+char (*f) ();
+
+int
+main ()
+{
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+f = $ac_func;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:5278: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:5281: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:5284: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:5287: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  eval "$as_ac_var=yes"
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+eval "$as_ac_var=no"
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:5297: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+  cat >>confdefs.h <<EOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+EOF
+
+else
+  # strftime is in -lintl on SCO UNIX.
+echo "$as_me:5306: checking for strftime in -lintl" >&5
+echo $ECHO_N "checking for strftime in -lintl... $ECHO_C" >&6
+if test "${ac_cv_lib_intl_strftime+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lintl  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+#line 5314 "configure"
+#include "confdefs.h"
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char strftime ();
+int
+main ()
+{
+strftime ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:5333: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:5336: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:5339: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:5342: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_intl_strftime=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_lib_intl_strftime=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:5353: result: $ac_cv_lib_intl_strftime" >&5
+echo "${ECHO_T}$ac_cv_lib_intl_strftime" >&6
+if test $ac_cv_lib_intl_strftime = yes; then
+  cat >>confdefs.h <<\EOF
+#define HAVE_STRFTIME 1
+EOF
+
+LIBS="-lintl $LIBS"
+fi
+
+fi
+done
+
+for ac_func in mktime select strdup strstr strtol strtok strsep snprintf
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:5369: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 5375 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.  */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char $ac_func ();
+char (*f) ();
+
+int
+main ()
+{
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+f = $ac_func;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:5406: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:5409: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:5412: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:5415: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  eval "$as_ac_var=yes"
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+eval "$as_ac_var=no"
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:5425: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+  cat >>confdefs.h <<EOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+EOF
+
+fi
+done
+
+CFLAGS="$CFLAGS $NLS_CFLAGS"
+LIBS="$LIBS $NLS_LIBS"
+
+PACKAGE=gnokii
+XPACKAGE=xgnokii
+VERSION=`cat VERSION`
+XVERSION=`cat xgnokii/VERSION`
+HAVE_XGNOKII=$x_support
+
+case "$INSTALL" in
+  'config/install-sh -c') INSTALL=`pwd`/$INSTALL
+   ;;
+esac
+
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+case "$build_os" in
+  solaris*) SHELL=/bin/ksh
+   ;;
+esac
+
+ac_config_headers="$ac_config_headers include/config.h"
+
+ac_config_files="$ac_config_files include/config.h.in Makefile.global po/Makefile.in packaging/RedHat/gnokii.spec packaging/Slackware/SlackBuild"
+ac_config_commands="$ac_config_commands default"
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems.  If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overriden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, don't put newlines in cache variables' values.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+{
+  (set) 2>&1 |
+    case `(ac_space=' '; set | grep ac_space) 2>&1` in
+    *ac_space=\ *)
+      # `set' does not quote correctly, so add quotes (double-quote
+      # substitution turns \\\\ into \\, and sed turns \\ into \).
+      sed -n \
+        "s/'/'\\\\''/g;
+         s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+      ;;
+    *)
+      # `set' quotes correctly as required by POSIX, so do not add quotes.
+      sed -n \
+        "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
+      ;;
+    esac;
+} |
+  sed '
+     t clear
+     : clear
+     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+     t end
+     /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+     : end' >>confcache
+if cmp -s $cache_file confcache; then :; else
+  if test -w $cache_file; then
+    test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file"
+    cat confcache >$cache_file
+  else
+    echo "not updating unwritable cache $cache_file"
+  fi
+fi
+rm -f confcache
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+# VPATH may cause trouble with some makes, so we remove $(srcdir),
+# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
+if test "x$srcdir" = x.; then
+  ac_vpsub='/^[        ]*VPATH[        ]*=/{
+s/:*\$(srcdir):*/:/;
+s/:*\${srcdir}:*/:/;
+s/:*@srcdir@:*/:/;
+s/^\([^=]*=[   ]*\):*/\1/;
+s/:*$//;
+s/^[^=]*=[     ]*$//;
+}'
+fi
+
+DEFS=-DHAVE_CONFIG_H
+
+: ${CONFIG_STATUS=./config.status}
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ echo "$as_me:5539: creating $CONFIG_STATUS" >&5
+echo "$as_me: creating $CONFIG_STATUS" >&6;}
+cat >$CONFIG_STATUS <<_ACEOF
+#! $SHELL
+# Generated automatically by configure.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+SHELL=\${CONFIG_SHELL-$SHELL}
+ac_cs_invocation="\$0 \$@"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+  set -o posix
+fi
+
+# Name of the executable.
+as_me=`echo "$0" |sed 's,.*[\\/],,'`
+
+if expr a : '\(a\)' >/dev/null 2>&1; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+echo >conf$$.file
+if ln -s conf$$.file conf$$ 2>/dev/null; then
+  # We could just check for DJGPP; but this test a) works b) is more generic
+  # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
+  if test -f conf$$.exe; then
+    # Don't use ln at all; we don't have any links
+    as_ln_s='cp -p'
+  else
+    as_ln_s='ln -s'
+  fi
+elif ln conf$$.file conf$$ 2>/dev/null; then
+  as_ln_s=ln
+else
+  as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.file
+
+as_executable_p="test -f"
+
+# Support unset when possible.
+if (FOO=FOO; unset FOO) >/dev/null 2>&1; then
+  as_unset=unset
+else
+  as_unset=false
+fi
+
+# NLS nuisances.
+$as_unset LANG || test "${LANG+set}" != set || { LANG=C; export LANG; }
+$as_unset LC_ALL || test "${LC_ALL+set}" != set || { LC_ALL=C; export LC_ALL; }
+$as_unset LC_TIME || test "${LC_TIME+set}" != set || { LC_TIME=C; export LC_TIME; }
+$as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set || { LC_CTYPE=C; export LC_CTYPE; }
+$as_unset LANGUAGE || test "${LANGUAGE+set}" != set || { LANGUAGE=C; export LANGUAGE; }
+$as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set || { LC_COLLATE=C; export LC_COLLATE; }
+$as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set || { LC_NUMERIC=C; export LC_NUMERIC; }
+$as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set || { LC_MESSAGES=C; export LC_MESSAGES; }
+
+# IFS
+# We need space, tab and new line, in precisely that order.
+as_nl='
+'
+IFS="  $as_nl"
+
+# CDPATH.
+$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=:; export CDPATH; }
+
+exec 6>&1
+
+_ACEOF
+
+# Files that config.status was made for.
+if test -n "$ac_config_files"; then
+  echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_headers"; then
+  echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_links"; then
+  echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_commands"; then
+  echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS
+fi
+
+cat >>$CONFIG_STATUS <<\EOF
+
+ac_cs_usage="\
+\`$as_me' instantiates files from templates according to the
+current configuration.
+
+Usage: $0 [OPTIONS] [FILE]...
+
+  -h, --help       print this help, then exit
+  -V, --version    print version number, then exit
+  -d, --debug      don't remove temporary files
+      --recheck    update $as_me by reconfiguring in the same conditions
+  --file=FILE[:TEMPLATE]
+                   instantiate the configuration file FILE
+  --header=FILE[:TEMPLATE]
+                   instantiate the configuration header FILE
+
+Configuration files:
+$config_files
+
+Configuration headers:
+$config_headers
+
+Configuration commands:
+$config_commands
+
+Report bugs to <bug-autoconf@gnu.org>."
+EOF
+
+cat >>$CONFIG_STATUS <<EOF
+ac_cs_version="\\
+config.status
+configured by $0, generated by GNU Autoconf 2.52,
+  with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
+
+Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001
+Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+srcdir=$srcdir
+INSTALL="$INSTALL"
+EOF
+
+cat >>$CONFIG_STATUS <<\EOF
+# If no file are specified by the user, then we need to provide default
+# value.  By we need to know if files were specified by the user.
+ac_need_defaults=:
+while test $# != 0
+do
+  case $1 in
+  --*=*)
+    ac_option=`expr "x$1" : 'x\([^=]*\)='`
+    ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'`
+    shift
+    set dummy "$ac_option" "$ac_optarg" ${1+"$@"}
+    shift
+    ;;
+  -*);;
+  *) # This is not an option, so the user has probably given explicit
+     # arguments.
+     ac_need_defaults=false;;
+  esac
+
+  case $1 in
+  # Handling of the options.
+EOF
+cat >>$CONFIG_STATUS <<EOF
+  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+    echo "running $SHELL $0 " $ac_configure_args " --no-create --no-recursion"
+    exec $SHELL $0 $ac_configure_args --no-create --no-recursion ;;
+EOF
+cat >>$CONFIG_STATUS <<\EOF
+  --version | --vers* | -V )
+    echo "$ac_cs_version"; exit 0 ;;
+  --he | --h)
+    # Conflict between --help and --header
+    { { echo "$as_me:5715: error: ambiguous option: $1
+Try \`$0 --help' for more information." >&5
+echo "$as_me: error: ambiguous option: $1
+Try \`$0 --help' for more information." >&2;}
+   { (exit 1); exit 1; }; };;
+  --help | --hel | -h )
+    echo "$ac_cs_usage"; exit 0 ;;
+  --debug | --d* | -d )
+    debug=: ;;
+  --file | --fil | --fi | --f )
+    shift
+    CONFIG_FILES="$CONFIG_FILES $1"
+    ac_need_defaults=false;;
+  --header | --heade | --head | --hea )
+    shift
+    CONFIG_HEADERS="$CONFIG_HEADERS $1"
+    ac_need_defaults=false;;
+
+  # This is an error.
+  -*) { { echo "$as_me:5734: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&5
+echo "$as_me: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&2;}
+   { (exit 1); exit 1; }; } ;;
+
+  *) ac_config_targets="$ac_config_targets $1" ;;
+
+  esac
+  shift
+done
+
+exec 5>>config.log
+cat >&5 << _ACEOF
+
+## ----------------------- ##
+## Running config.status.  ##
+## ----------------------- ##
+
+This file was extended by $as_me 2.52, executed with
+  CONFIG_FILES    = $CONFIG_FILES
+  CONFIG_HEADERS  = $CONFIG_HEADERS
+  CONFIG_LINKS    = $CONFIG_LINKS
+  CONFIG_COMMANDS = $CONFIG_COMMANDS
+  > $ac_cs_invocation
+on `(hostname || uname -n) 2>/dev/null | sed 1q`
+
+_ACEOF
+EOF
+
+cat >>$CONFIG_STATUS <<\EOF
+for ac_config_target in $ac_config_targets
+do
+  case "$ac_config_target" in
+  # Handling of arguments.
+  "include/config.h.in" ) CONFIG_FILES="$CONFIG_FILES include/config.h.in" ;;
+  "Makefile.global" ) CONFIG_FILES="$CONFIG_FILES Makefile.global" ;;
+  "po/Makefile.in" ) CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;;
+  "packaging/RedHat/gnokii.spec" ) CONFIG_FILES="$CONFIG_FILES packaging/RedHat/gnokii.spec" ;;
+  "packaging/Slackware/SlackBuild" ) CONFIG_FILES="$CONFIG_FILES packaging/Slackware/SlackBuild" ;;
+  "default" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;;
+  "include/config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS include/config.h" ;;
+  *) { { echo "$as_me:5776: error: invalid argument: $ac_config_target" >&5
+echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
+   { (exit 1); exit 1; }; };;
+  esac
+done
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used.  Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+  test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
+  test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
+fi
+
+# Create a temporary directory, and hook for its removal unless debugging.
+$debug ||
+{
+  trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0
+  trap '{ (exit 1); exit 1; }' 1 2 13 15
+}
+
+# Create a (secure) tmp directory for tmp files.
+: ${TMPDIR=/tmp}
+{
+  tmp=`(umask 077 && mktemp -d -q "$TMPDIR/csXXXXXX") 2>/dev/null` &&
+  test -n "$tmp" && test -d "$tmp"
+}  ||
+{
+  tmp=$TMPDIR/cs$$-$RANDOM
+  (umask 077 && mkdir $tmp)
+} ||
+{
+   echo "$me: cannot create a temporary directory in $TMPDIR" >&2
+   { (exit 1); exit 1; }
+}
+
+EOF
+
+cat >>$CONFIG_STATUS <<EOF
+
+#
+# CONFIG_FILES section.
+#
+
+# No need to generate the scripts if there are no CONFIG_FILES.
+# This happens for instance when ./config.status config.h
+if test -n "\$CONFIG_FILES"; then
+  # Protect against being on the right side of a sed subst in config.status.
+  sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g;
+   s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF
+s,@SHELL@,$SHELL,;t t
+s,@exec_prefix@,$exec_prefix,;t t
+s,@prefix@,$prefix,;t t
+s,@program_transform_name@,$program_transform_name,;t t
+s,@bindir@,$bindir,;t t
+s,@sbindir@,$sbindir,;t t
+s,@libexecdir@,$libexecdir,;t t
+s,@datadir@,$datadir,;t t
+s,@sysconfdir@,$sysconfdir,;t t
+s,@sharedstatedir@,$sharedstatedir,;t t
+s,@localstatedir@,$localstatedir,;t t
+s,@libdir@,$libdir,;t t
+s,@includedir@,$includedir,;t t
+s,@oldincludedir@,$oldincludedir,;t t
+s,@infodir@,$infodir,;t t
+s,@mandir@,$mandir,;t t
+s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t
+s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t
+s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t
+s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t
+s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t
+s,@build_alias@,$build_alias,;t t
+s,@host_alias@,$host_alias,;t t
+s,@target_alias@,$target_alias,;t t
+s,@ECHO_C@,$ECHO_C,;t t
+s,@ECHO_N@,$ECHO_N,;t t
+s,@ECHO_T@,$ECHO_T,;t t
+s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t
+s,@DEFS@,$DEFS,;t t
+s,@LIBS@,$LIBS,;t t
+s,@build@,$build,;t t
+s,@build_cpu@,$build_cpu,;t t
+s,@build_vendor@,$build_vendor,;t t
+s,@build_os@,$build_os,;t t
+s,@host@,$host,;t t
+s,@host_cpu@,$host_cpu,;t t
+s,@host_vendor@,$host_vendor,;t t
+s,@host_os@,$host_os,;t t
+s,@target@,$target,;t t
+s,@target_cpu@,$target_cpu,;t t
+s,@target_vendor@,$target_vendor,;t t
+s,@target_os@,$target_os,;t t
+s,@CC@,$CC,;t t
+s,@CFLAGS@,$CFLAGS,;t t
+s,@LDFLAGS@,$LDFLAGS,;t t
+s,@CPPFLAGS@,$CPPFLAGS,;t t
+s,@ac_ct_CC@,$ac_ct_CC,;t t
+s,@EXEEXT@,$EXEEXT,;t t
+s,@OBJEXT@,$OBJEXT,;t t
+s,@CPP@,$CPP,;t t
+s,@LEX@,$LEX,;t t
+s,@LEXLIB@,$LEXLIB,;t t
+s,@LEX_OUTPUT_ROOT@,$LEX_OUTPUT_ROOT,;t t
+s,@RM@,$RM,;t t
+s,@FIND@,$FIND,;t t
+s,@MAKE@,$MAKE,;t t
+s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t
+s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t
+s,@INSTALL_DATA@,$INSTALL_DATA,;t t
+s,@SET_MAKE@,$SET_MAKE,;t t
+s,@HAVE_LOCALE_H@,$HAVE_LOCALE_H,;t t
+s,@HAVE_LIBINTL_H@,$HAVE_LIBINTL_H,;t t
+s,@HAVE_LIBINTL@,$HAVE_LIBINTL,;t t
+s,@LOCALEDIR@,$LOCALEDIR,;t t
+s,@MSGFMT@,$MSGFMT,;t t
+s,@GMSGFMT@,$GMSGFMT,;t t
+s,@XGETTEXT@,$XGETTEXT,;t t
+s,@MSGMERGE@,$MSGMERGE,;t t
+s,@CATALOGS@,$CATALOGS,;t t
+s,@CATOBJEXT@,$CATOBJEXT,;t t
+s,@INSTOBJEXT@,$INSTOBJEXT,;t t
+s,@DATADIRNAME@,$DATADIRNAME,;t t
+s,@GTK_CONFIG@,$GTK_CONFIG,;t t
+s,@LIBOBJS@,$LIBOBJS,;t t
+s,@PACKAGE@,$PACKAGE,;t t
+s,@VERSION@,$VERSION,;t t
+s,@XVERSION@,$XVERSION,;t t
+s,@XPACKAGE@,$XPACKAGE,;t t
+s,@XGNOKIIDIR@,$XGNOKIIDIR,;t t
+s,@XGNOKIIPATH@,$XGNOKIIPATH,;t t
+s,@USE_NLS@,$USE_NLS,;t t
+s,@GTK_CFLAGS@,$GTK_CFLAGS,;t t
+s,@GTK_LIBS@,$GTK_LIBS,;t t
+s,@PTHREAD_CFLAGS@,$PTHREAD_CFLAGS,;t t
+s,@PTHREAD_LIBS@,$PTHREAD_LIBS,;t t
+s,@XPM_CFLAGS@,$XPM_CFLAGS,;t t
+s,@XPM_LIBS@,$XPM_LIBS,;t t
+s,@OWN_GETOPT@,$OWN_GETOPT,;t t
+s,@USE_UNIX98PTYS@,$USE_UNIX98PTYS,;t t
+s,@HAVE_XGNOKII@,$HAVE_XGNOKII,;t t
+CEOF
+
+EOF
+
+  cat >>$CONFIG_STATUS <<\EOF
+  # Split the substitutions into bite-sized pieces for seds with
+  # small command number limits, like on Digital OSF/1 and HP-UX.
+  ac_max_sed_lines=48
+  ac_sed_frag=1 # Number of current file.
+  ac_beg=1 # First line for current file.
+  ac_end=$ac_max_sed_lines # Line after last line for current file.
+  ac_more_lines=:
+  ac_sed_cmds=
+  while $ac_more_lines; do
+    if test $ac_beg -gt 1; then
+      sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+    else
+      sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+    fi
+    if test ! -s $tmp/subs.frag; then
+      ac_more_lines=false
+    else
+      # The purpose of the label and of the branching condition is to
+      # speed up the sed processing (if there are no `@' at all, there
+      # is no need to browse any of the substitutions).
+      # These are the two extra sed commands mentioned above.
+      (echo ':t
+  /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed
+      if test -z "$ac_sed_cmds"; then
+       ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
+      else
+       ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
+      fi
+      ac_sed_frag=`expr $ac_sed_frag + 1`
+      ac_beg=$ac_end
+      ac_end=`expr $ac_end + $ac_max_sed_lines`
+    fi
+  done
+  if test -z "$ac_sed_cmds"; then
+    ac_sed_cmds=cat
+  fi
+fi # test -n "$CONFIG_FILES"
+
+EOF
+cat >>$CONFIG_STATUS <<\EOF
+for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue
+  # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+  case $ac_file in
+  - | *:- | *:-:* ) # input from stdin
+        cat >$tmp/stdin
+        ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+        ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+  *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+        ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+  * )   ac_file_in=$ac_file.in ;;
+  esac
+
+  # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.
+  ac_dir=`$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+         X"$ac_file" : 'X\(//\)[^/]' \| \
+         X"$ac_file" : 'X\(//\)$' \| \
+         X"$ac_file" : 'X\(/\)' \| \
+         .     : '\(.\)' 2>/dev/null ||
+echo X"$ac_file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+         /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+         /^X\(\/\/\)$/{ s//\1/; q; }
+         /^X\(\/\).*/{ s//\1/; q; }
+         s/.*/./; q'`
+  if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
+    { case "$ac_dir" in
+  [\\/]* | ?:[\\/]* ) as_incr_dir=;;
+  *)                      as_incr_dir=.;;
+esac
+as_dummy="$ac_dir"
+for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do
+  case $as_mkdir_dir in
+    # Skip DOS drivespec
+    ?:) as_incr_dir=$as_mkdir_dir ;;
+    *)
+      as_incr_dir=$as_incr_dir/$as_mkdir_dir
+      test -d "$as_incr_dir" || mkdir "$as_incr_dir"
+    ;;
+  esac
+done; }
+
+    ac_dir_suffix="/`echo $ac_dir|sed 's,^\./,,'`"
+    # A "../" for each directory in $ac_dir_suffix.
+    ac_dots=`echo "$ac_dir_suffix" | sed 's,/[^/]*,../,g'`
+  else
+    ac_dir_suffix= ac_dots=
+  fi
+
+  case $srcdir in
+  .)  ac_srcdir=.
+      if test -z "$ac_dots"; then
+         ac_top_srcdir=.
+      else
+         ac_top_srcdir=`echo $ac_dots | sed 's,/$,,'`
+      fi ;;
+  [\\/]* | ?:[\\/]* )
+      ac_srcdir=$srcdir$ac_dir_suffix;
+      ac_top_srcdir=$srcdir ;;
+  *) # Relative path.
+    ac_srcdir=$ac_dots$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_dots$srcdir ;;
+  esac
+
+  case $INSTALL in
+  [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+  *) ac_INSTALL=$ac_dots$INSTALL ;;
+  esac
+
+  if test x"$ac_file" != x-; then
+    { echo "$as_me:6032: creating $ac_file" >&5
+echo "$as_me: creating $ac_file" >&6;}
+    rm -f "$ac_file"
+  fi
+  # Let's still pretend it is `configure' which instantiates (i.e., don't
+  # use $as_me), people would be surprised to read:
+  #    /* config.h.  Generated automatically by config.status.  */
+  configure_input="Generated automatically from `echo $ac_file_in |
+                                                 sed 's,.*/,,'` by configure."
+
+  # First look for the input files in the build tree, otherwise in the
+  # src tree.
+  ac_file_inputs=`IFS=:
+    for f in $ac_file_in; do
+      case $f in
+      -) echo $tmp/stdin ;;
+      [\\/$]*)
+         # Absolute (can't be DOS-style, as IFS=:)
+         test -f "$f" || { { echo "$as_me:6050: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+   { (exit 1); exit 1; }; }
+         echo $f;;
+      *) # Relative
+         if test -f "$f"; then
+           # Build tree
+           echo $f
+         elif test -f "$srcdir/$f"; then
+           # Source tree
+           echo $srcdir/$f
+         else
+           # /dev/null tree
+           { { echo "$as_me:6063: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+   { (exit 1); exit 1; }; }
+         fi;;
+      esac
+    done` || { (exit 1); exit 1; }
+EOF
+cat >>$CONFIG_STATUS <<EOF
+  sed "$ac_vpsub
+$extrasub
+EOF
+cat >>$CONFIG_STATUS <<\EOF
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s,@configure_input@,$configure_input,;t t
+s,@srcdir@,$ac_srcdir,;t t
+s,@top_srcdir@,$ac_top_srcdir,;t t
+s,@INSTALL@,$ac_INSTALL,;t t
+" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out
+  rm -f $tmp/stdin
+  if test x"$ac_file" != x-; then
+    mv $tmp/out $ac_file
+  else
+    cat $tmp/out
+    rm -f $tmp/out
+  fi
+
+done
+EOF
+cat >>$CONFIG_STATUS <<\EOF
+
+#
+# CONFIG_HEADER section.
+#
+
+# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
+# NAME is the cpp macro being defined and VALUE is the value it is being given.
+#
+# ac_d sets the value in "#define NAME VALUE" lines.
+ac_dA='s,^\([  ]*\)#\([        ]*define[       ][      ]*\)'
+ac_dB='[       ].*$,\1#\2'
+ac_dC=' '
+ac_dD=',;t'
+# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
+ac_uA='s,^\([  ]*\)#\([        ]*\)undef\([    ][      ]*\)'
+ac_uB='$,\1#\2define\3'
+ac_uC=' '
+ac_uD=',;t'
+
+for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue
+  # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+  case $ac_file in
+  - | *:- | *:-:* ) # input from stdin
+        cat >$tmp/stdin
+        ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+        ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+  *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+        ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+  * )   ac_file_in=$ac_file.in ;;
+  esac
+
+  test x"$ac_file" != x- && { echo "$as_me:6124: creating $ac_file" >&5
+echo "$as_me: creating $ac_file" >&6;}
+
+  # First look for the input files in the build tree, otherwise in the
+  # src tree.
+  ac_file_inputs=`IFS=:
+    for f in $ac_file_in; do
+      case $f in
+      -) echo $tmp/stdin ;;
+      [\\/$]*)
+         # Absolute (can't be DOS-style, as IFS=:)
+         test -f "$f" || { { echo "$as_me:6135: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+   { (exit 1); exit 1; }; }
+         echo $f;;
+      *) # Relative
+         if test -f "$f"; then
+           # Build tree
+           echo $f
+         elif test -f "$srcdir/$f"; then
+           # Source tree
+           echo $srcdir/$f
+         else
+           # /dev/null tree
+           { { echo "$as_me:6148: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+   { (exit 1); exit 1; }; }
+         fi;;
+      esac
+    done` || { (exit 1); exit 1; }
+  # Remove the trailing spaces.
+  sed 's/[     ]*$//' $ac_file_inputs >$tmp/in
+
+EOF
+
+# Transform confdefs.h into two sed scripts, `conftest.defines' and
+# `conftest.undefs', that substitutes the proper values into
+# config.h.in to produce config.h.  The first handles `#define'
+# templates, and the second `#undef' templates.
+# And first: Protect against being on the right side of a sed subst in
+# config.status.  Protect against being in an unquoted here document
+# in config.status.
+rm -f conftest.defines conftest.undefs
+# Using a here document instead of a string reduces the quoting nightmare.
+# Putting comments in sed scripts is not portable.
+#
+# `end' is used to avoid that the second main sed command (meant for
+# 0-ary CPP macros) applies to n-ary macro definitions.
+# See the Autoconf documentation for `clear'.
+cat >confdef2sed.sed <<\EOF
+s/[\\&,]/\\&/g
+s,[\\$`],\\&,g
+t clear
+: clear
+s,^[   ]*#[    ]*define[       ][      ]*\(\([^        (][^    (]*\)([^)]*)\)[         ]*\(.*\)$,${ac_dA}\2${ac_dB}\1${ac_dC}\3${ac_dD},gp
+t end
+s,^[   ]*#[    ]*define[       ][      ]*\([^  ][^     ]*\)[   ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp
+: end
+EOF
+# If some macros were called several times there might be several times
+# the same #defines, which is useless.  Nevertheless, we may not want to
+# sort them, since we want the *last* AC-DEFINE to be honored.
+uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines
+sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs
+rm -f confdef2sed.sed
+
+# This sed command replaces #undef with comments.  This is necessary, for
+# example, in the case of _POSIX_SOURCE, which is predefined and required
+# on some systems where configure will not decide to define it.
+cat >>conftest.undefs <<\EOF
+s,^[   ]*#[    ]*undef[        ][      ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */,
+EOF
+
+# Break up conftest.defines because some shells have a limit on the size
+# of here documents, and old seds have small limits too (100 cmds).
+echo '  # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS
+echo '  if egrep "^[   ]*#[    ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS
+echo '  # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS
+echo '  :' >>$CONFIG_STATUS
+rm -f conftest.tail
+while grep . conftest.defines >/dev/null
+do
+  # Write a limited-size here document to $tmp/defines.sed.
+  echo '  cat >$tmp/defines.sed <<CEOF' >>$CONFIG_STATUS
+  # Speed up: don't consider the non `#define' lines.
+  echo '/^[    ]*#[    ]*define/!b' >>$CONFIG_STATUS
+  # Work around the forget-to-reset-the-flag bug.
+  echo 't clr' >>$CONFIG_STATUS
+  echo ': clr' >>$CONFIG_STATUS
+  sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS
+  echo 'CEOF
+  sed -f $tmp/defines.sed $tmp/in >$tmp/out
+  rm -f $tmp/in
+  mv $tmp/out $tmp/in
+' >>$CONFIG_STATUS
+  sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail
+  rm -f conftest.defines
+  mv conftest.tail conftest.defines
+done
+rm -f conftest.defines
+echo '  fi # egrep' >>$CONFIG_STATUS
+echo >>$CONFIG_STATUS
+
+# Break up conftest.undefs because some shells have a limit on the size
+# of here documents, and old seds have small limits too (100 cmds).
+echo '  # Handle all the #undef templates' >>$CONFIG_STATUS
+rm -f conftest.tail
+while grep . conftest.undefs >/dev/null
+do
+  # Write a limited-size here document to $tmp/undefs.sed.
+  echo '  cat >$tmp/undefs.sed <<CEOF' >>$CONFIG_STATUS
+  # Speed up: don't consider the non `#undef'
+  echo '/^[    ]*#[    ]*undef/!b' >>$CONFIG_STATUS
+  # Work around the forget-to-reset-the-flag bug.
+  echo 't clr' >>$CONFIG_STATUS
+  echo ': clr' >>$CONFIG_STATUS
+  sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS
+  echo 'CEOF
+  sed -f $tmp/undefs.sed $tmp/in >$tmp/out
+  rm -f $tmp/in
+  mv $tmp/out $tmp/in
+' >>$CONFIG_STATUS
+  sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail
+  rm -f conftest.undefs
+  mv conftest.tail conftest.undefs
+done
+rm -f conftest.undefs
+
+cat >>$CONFIG_STATUS <<\EOF
+  # Let's still pretend it is `configure' which instantiates (i.e., don't
+  # use $as_me), people would be surprised to read:
+  #    /* config.h.  Generated automatically by config.status.  */
+  if test x"$ac_file" = x-; then
+    echo "/* Generated automatically by configure.  */" >$tmp/config.h
+  else
+    echo "/* $ac_file.  Generated automatically by configure.  */" >$tmp/config.h
+  fi
+  cat $tmp/in >>$tmp/config.h
+  rm -f $tmp/in
+  if test x"$ac_file" != x-; then
+    if cmp -s $ac_file $tmp/config.h 2>/dev/null; then
+      { echo "$as_me:6265: $ac_file is unchanged" >&5
+echo "$as_me: $ac_file is unchanged" >&6;}
+    else
+      ac_dir=`$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+         X"$ac_file" : 'X\(//\)[^/]' \| \
+         X"$ac_file" : 'X\(//\)$' \| \
+         X"$ac_file" : 'X\(/\)' \| \
+         .     : '\(.\)' 2>/dev/null ||
+echo X"$ac_file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+         /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+         /^X\(\/\/\)$/{ s//\1/; q; }
+         /^X\(\/\).*/{ s//\1/; q; }
+         s/.*/./; q'`
+      if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
+        { case "$ac_dir" in
+  [\\/]* | ?:[\\/]* ) as_incr_dir=;;
+  *)                      as_incr_dir=.;;
+esac
+as_dummy="$ac_dir"
+for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do
+  case $as_mkdir_dir in
+    # Skip DOS drivespec
+    ?:) as_incr_dir=$as_mkdir_dir ;;
+    *)
+      as_incr_dir=$as_incr_dir/$as_mkdir_dir
+      test -d "$as_incr_dir" || mkdir "$as_incr_dir"
+    ;;
+  esac
+done; }
+
+      fi
+      rm -f $ac_file
+      mv $tmp/config.h $ac_file
+    fi
+  else
+    cat $tmp/config.h
+    rm -f $tmp/config.h
+  fi
+done
+EOF
+cat >>$CONFIG_STATUS <<\EOF
+
+#
+# CONFIG_COMMANDS section.
+#
+for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue
+  ac_dest=`echo "$ac_file" | sed 's,:.*,,'`
+  ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'`
+
+  case $ac_dest in
+    default ) sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile
+    ;;
+  esac
+done
+EOF
+
+cat >>$CONFIG_STATUS <<\EOF
+
+{ (exit 0); exit 0; }
+EOF
+chmod +x $CONFIG_STATUS
+ac_clean_files=$ac_clean_files_save
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded.  So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status.  When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+  ac_cs_success=:
+  exec 5>/dev/null
+  $SHELL $CONFIG_STATUS || ac_cs_success=false
+  exec 5>>config.log
+  # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+  # would make configure fail if this is the last instruction.
+  $ac_cs_success || { (exit 1); exit 1; }
+fi
+
+echo "
+
+  G N O K I I
+
+  A Linux/Unix toolset and driver for Nokia mobile phones.
+
+  Copyright (C) 1999-2000  The Gnokii Development Team.
+
+  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.
+
+  See file COPYING for more details.
+
+    Host system:        $host_os
+    Gnokii version:     $VERSION
+    Xgnokii version:    $XVERSION
+    X (GTK) support:    $x_support
+    Debug:              $debug
+    XDebug:             $xdebug
+    RLPDebug:           $rlpdebug
+    NLS:                $USE_NLS
+    Security:           $security
+    Win32:              $win32
+    Prefix:             $prefix
+
+  Type '${MAKE}' for compilation or '${MAKE} makelib' when want to compile
+  all binaries with one shared library
+  
+  After it '${MAKE} install', '${MAKE} install-suid', '${MAKE} install-strip'
+  or '${MAKE} install-ss' to install gnokii.
+"
diff --git a/decode b/decode
deleted file mode 100755 (executable)
index 1f49c15..0000000
--- a/decode
+++ /dev/null
@@ -1,6 +0,0 @@
-#! /bin/sh
-
-set -ex
-
-./gnokii/gnokii --decodefile ~/_CONNECT/ttyS0.i
-./gnokii/gnokii --decodefile ~/_CONNECT/ttyS1.i
diff --git a/do b/do
deleted file mode 100755 (executable)
index e09498f..0000000
--- a/do
+++ /dev/null
@@ -1,9 +0,0 @@
-#! /bin/sh
-
-exec 2>&1
-set -ex
-rm -f config.cache
-autoconf
-./configure --without-x --disable-nls --enable-debug --enable-xdebug
-make clean
-make
index 4da6169..65d8227 100644 (file)
@@ -66,8 +66,6 @@
 #include "files/gsm-filetypes.h"
 #include "gnokii.h"
 
-#include "protocol/fbus.h"
-
 #ifdef USE_NLS
   #include <locale.h>
 #endif
@@ -262,6 +260,7 @@ char *print_error(GSM_Error e)
         case GE_INVALIDBOOKMARKLOCATION:  return "Invalid or empty WAP bookmark location";
         case GE_INSIDESETTINGSMENU:       return "Inside WAP Settings menu. Please leave it and try again";
         case GE_INVALIDSETTINGSLOCATION:  return "Invalid or empty WAP settings location";
+        case GE_EMPTYSMSC:                return "Empty SMSC number. Use --smsc";
        default:                          return "Unknown error.";
        }
 }
@@ -455,8 +454,8 @@ int GSM_SendMultiPartSMSOnConsole(GSM_MultiSMSMessage *MultiSMS, int argnum, int
   int w,i;
   
   struct option options[] = {
-             { "smscno",       required_argument, NULL, '1'},
-             { "smsc",         required_argument, NULL, '2'},
+             { "smscno",       required_argument, NULL, '2'},
+             { "smsc",         required_argument, NULL, '1'},
             { "name",         required_argument, NULL, '3'},
              { "unicode",      no_argument,       NULL, '4'},
              { "profilestyle", no_argument,       NULL, '5'},
@@ -529,7 +528,7 @@ int GSM_SendMultiPartSMSOnConsole(GSM_MultiSMSMessage *MultiSMS, int argnum, int
     if (error == GE_SMSSENDOK) {
       fprintf(stdout, _("SMS %i/%i sent OK !\n"),w+1,MultiSMS->number);
     } else {
-      fprintf(stdout, _("SMS %i/%i, sending failed (error=%d)\n"),w+1,MultiSMS->number, error);
+      fprintf(stdout, _("SMS %i/%i, sending failed (%d, %s)\n"),w+1,MultiSMS->number, error,print_error(error));
     }
 
   }
@@ -547,8 +546,8 @@ int GSM_SaveMultiPartSMSOnConsole(GSM_MultiSMSMessage *MultiSMS, int argnum, int
   GSM_SMSMessage SMSold;
 
   struct option options[] = {
-             { "smscno",       required_argument, NULL, '1'},
-             { "smsc",         required_argument, NULL, '2'},
+             { "smscno",       required_argument, NULL, '2'},
+             { "smsc",         required_argument, NULL, '1'},
             { "name",         required_argument, NULL, '3'},
              { "unicode",      no_argument,       NULL, '4'},
              { "profilestyle", no_argument,       NULL, '5'},
@@ -657,7 +656,7 @@ int GSM_SaveMultiPartSMSOnConsole(GSM_MultiSMSMessage *MultiSMS, int argnum, int
     if (error == GE_NONE)
       fprintf(stdout, _("SMS %i/%i saved at location %i !\n"),w+1,MultiSMS->number,MultiSMS->SMS[w].MessageNumber);
     else
-      fprintf(stdout, _("SMS %i/%i saving failed (error=%d, location=%i)\n"), w+1, MultiSMS->number, error,MultiSMS->SMS[w].Location);
+      fprintf(stdout, _("SMS %i/%i saving failed (%d, %s, location=%i)\n"), w+1, MultiSMS->number,error,print_error(error),MultiSMS->SMS[w].Location);
   }
 
   GSM->Terminate();  
@@ -1644,8 +1643,8 @@ int sendsms(int argc, char *argv[])
   GSM_UDH SMSUDHType=GSM_NoUDH;
 
   struct option options[] = {
-             { "smscno",       required_argument, NULL, '1'},
-             { "smsc",         required_argument, NULL, '2'},
+             { "smscno",       required_argument, NULL, '2'},
+             { "smsc",         required_argument, NULL, '1'},
              { "long",        required_argument, NULL, '3'},
              { "enablevoice",  no_argument,       NULL, '4'},
             { "disablevoice", no_argument,       NULL, '5'},
@@ -1830,8 +1829,8 @@ int savesms(int argc, char *argv[])
   bool interactive=false;
 
   struct option options[] = {
-             { "smscno",       required_argument, NULL, '1'},
-             { "smsc",         required_argument, NULL, '2'},
+             { "smscno",       required_argument, NULL, '2'},
+             { "smsc",         required_argument, NULL, '1'},
              { "long",        required_argument, NULL, '3'},
              { "enablevoice",  no_argument,       NULL, '4'},
             { "disablevoice", no_argument,       NULL, '5'},
@@ -7515,31 +7514,20 @@ int decodefile(int argc, char *argv[])
  int i = 0;
 
   /* base model comes from gnokiirc */
-#if 0
   strcat(model,"decode");
-#else
-  strcpy(model,"5190sniff");
-  fbus_decoding=1;
-#endif
 
  /* Initialise the GSM interface. */
  fbusinit(NULL);
 
- printf ("open InPutFile: %s\n\n\n", argv[0]);
+ printf ("open InPutFile: %s\n", argv[0]);
  if ( (infile = fopen( argv[0], "rb")) == NULL ) {
    printf ("Failed to open InPutFile: %s\n", argv[0]);
    exit (1); }
 
  while ( (nr_read = fread(in_buffer, 1, 16, infile)) > 0 ) {
-static int last=0;
-       if (ftell(infile)>last+1000) {
-               last=ftell(infile);
-               printf("ftell=%d\n",last);
-               }
   for (i=0; i < nr_read; i++)
      Protocol->StateMachine(in_buffer[i]);
   }
-   puts("gnokii/decodefile() done");
 
    return 0;
 }
index e9310a6..a5dae23 100644 (file)
 /* Define if you compile for M$ Windows */
 #undef WIN32
 
-
-/* "decode" brach hacks:
- */
-#define _XOPEN_SOURCE 1
-
-#include <unistd.h>
-#undef usleep
-#define usleep(x)
-
-
 #endif /* __CONFIG_H__ */
index 5ad2dd3..92460be 100644 (file)
@@ -28,7 +28,7 @@ typedef enum {
   GCT_DLR3,     /* FBUS over DLR3 cable */
   GCT_Tekram,   /* FBUS over direct infrared connection (Tekram device) - 61xx. */
   GCT_AT,       /* AT commands */
-  GCT_Default   /* Old style module */
+  GCT_FBUS3110  /* FBUS version 1 used in N3110 */
 } GSM_ConnectionType;
 
 #ifndef WIN32
index 7f45115..fa655b4 100644 (file)
@@ -227,19 +227,14 @@ typedef struct {
 
 typedef struct {
                
-  char *FBUSModels; /* Models covered by this type, pipe '|' delimited. */
-  
-  char *MBUSModels; /* Models covered by this type, pipe '|' delimited. */
-
-  char *InfraredModels; /* Models covered by this type, pipe '|' delimited. */
-  
-  char *DLR3Models; /* Models covered by this type, pipe '|' delimited. */
-
-  char *ATModels; /* Models covered by this type, pipe '|' delimited. */
-
-  char *IrdaModels; /* Models covered by this type, pipe '|' delimited. */
-
-  char *TekramModels; /* Models covered by this type, pipe '|' delimited. */  
+  char *FBUSModels;     /* Models covered by this type, pipe '|' delimited. */  
+  char *MBUSModels;     /* Models covered by this type, pipe '|' delimited. */
+  char *InfraredModels; /* Models covered by this type, pipe '|' delimited. */  
+  char *DLR3Models;     /* Models covered by this type, pipe '|' delimited. */
+  char *ATModels;       /* Models covered by this type, pipe '|' delimited. */
+  char *IrdaModels;     /* Models covered by this type, pipe '|' delimited. */
+  char *TekramModels;   /* Models covered by this type, pipe '|' delimited. */  
+  char *FBUS3110Models; /* Models covered by this type, pipe '|' delimited. */  
   
 /* Minimum and maximum levels for RF signal strength. Units are as per the
    setting of RFLevelUnits.  The setting of RFLevelUnits indicates the 
@@ -444,7 +439,7 @@ bool CheckModel (GSM_Information InfoToCheck, char *model, GSM_ConnectionType co
 char *GetMygnokiiVersion();
 
 typedef enum {
-  F_CAL61=0,/*Calendar in 6110 style - 4 types,...*/
+  F_CAL61=1,/*Calendar in 6110 style - 4 types,...*/
   F_CAL33,  /*Calendar in 3310 style - 10 reminders, Unicode, 3 coding types*/
   F_CAL71,  /*Calendar in 7110 style - 4 types, recurrance, etc.*/
 
@@ -456,8 +451,8 @@ typedef enum {
   F_DATA61, /*We can make data calls using gnokiid. Like in 6110*/
   F_DATA71, /*Datacalls using AT commands*/
 
-  F_SMS,    /*SMS with Inbox, Outbox*/
-  F_SMS71,  /*SMS with SMS folders like in 7110*/ /*10*/
+  F_SMS,    /*SMS with Inbox, Outbox*/ /*10*/
+  F_SMS71,  /*SMS with SMS folders like in 7110*/ 
 
   F_AUTH,   /*We can make authentication and have "Accessory connected" like in 6110*/
   F_NETMON, /*Netmonitor available*/ 
@@ -467,9 +462,9 @@ typedef enum {
   F_SPEED,  /*We can handle speed dials*/
   F_SCRSAV, /*We have screen savers*/
   F_DTMF,   /*We can handle DTMF sequences*/
-  F_NOPOWER,/*We must get power/battery info from netmonitor*/
+  F_NOPOWER,/*We must get power/battery info from netmonitor*/ /*20*/
 
-  F_STANIM, /*Startup logo animated or static*/ /*20*/
+  F_STANIM, /*Startup logo animated or static*/ 
   F_STA   , /*Startup logo static*/
   F_STA62 , /*Startup logo static size 6210*/ 
   F_STA71 , /*Startup logo static size 7110*/
@@ -481,7 +476,7 @@ typedef enum {
   F_RING_SM,/*Binary ringtone in Smart Messaging*/
   F_RINGBIN,/*Binary ringtone in binary format*/
 
-  F_WAP     /*WAP functions available*/
+  F_WAP     /*WAP functions available*/ /*30*/
 } feat_index;
 
 typedef enum {
index a87900f..dbbe24a 100644 (file)
@@ -314,6 +314,7 @@ typedef enum {
   GE_INVALIDBOOKMARKLOCATION,
   GE_INSIDESETTINGSMENU,
   GE_INVALIDSETTINGSLOCATION,
+  GE_EMPTYSMSC,
   
   /* The following are here in anticipation of data call requirements. */
 
diff --git a/include/newmodules/n3110.h b/include/newmodules/n3110.h
new file mode 100644 (file)
index 0000000..0debe2e
--- /dev/null
@@ -0,0 +1,32 @@
+/*
+
+  G N O K I I
+
+  A Linux/Unix toolset and driver for Nokia mobile phones.
+
+  Released under the terms of the GNU GPL, see file COPYING for more details.
+
+  Header file for the various functions, definitions etc. used to implement
+  the handset interface.
+
+*/
+
+#ifndef __n_3110_h
+#define __n_3110_h
+
+#include "gsm-api.h"
+
+/* Global variables */
+extern bool            N3110_LinkOK;
+extern GSM_Functions   N3110_Functions;
+extern GSM_Information N3110_Information;
+
+/* Prototypes for the functions designed to be used externally. */
+GSM_Error N3110_Initialise(char *port_device, char *initlength,
+                          GSM_ConnectionType connection,
+                          void (*rlp_callback)(RLP_F96Frame *frame));
+
+void      N3110_DispatchMessage(u16 MessageLength, u8 *MessageBuffer,
+                              u8 MessageType);
+
+#endif /* __n_3110_h */
index a8d3c97..1340262 100644 (file)
@@ -49,8 +49,6 @@ enum FBUS_RX_States {
   FBUS_RX_GetMessage
 };
 
-extern int fbus_decoding;
-
 GSM_Error FBUS_Initialise(char *port_device, char *initlength,
                           GSM_ConnectionType connection,
                           void (*rlp_callback)(RLP_F96Frame *frame));
diff --git a/include/protocol/fbus3110.h b/include/protocol/fbus3110.h
new file mode 100644 (file)
index 0000000..d6dcbec
--- /dev/null
@@ -0,0 +1,40 @@
+/*
+
+  G N O K I I
+
+  A Linux/Unix toolset and driver for Nokia mobile phones.
+
+  Released under the terms of the GNU GPL, see file COPYING for more details.
+
+  Header file for the various functions, definitions etc. used to implement
+  the handset interface.
+
+*/
+
+#ifndef __fbus3110_h
+#define __fbus3110_h
+
+#include "gsm-api.h"
+
+#define FBUS3110_FRAME_TO_PHONE 0x01     /* Command from PC to phone */
+#define FBUS3110_DATAFRAME_TO_PHONE 0x02 /* Data call frame from PC to phone */
+#define FBUS3110_FRAME_TO_PC 0x03        /* Command from phone to PC */
+#define FBUS3110_DATAFRAME_TO_PC 0x04    /* Data call frame from phone to PC */
+
+#define FBUS3110_MAX_TRANSMIT_LENGTH (256)
+#define FBUS3110_MAX_RECEIVE_LENGTH  (512)
+#define FBUS3110_MAX_CONTENT_LENGTH  (120)
+
+/* Global variables */
+extern GSM_Protocol    FBUS3110_Functions;
+
+GSM_Error FBUS3110_Initialise(char *port_device, char *initlength,
+                          GSM_ConnectionType connection,
+                          void (*rlp_callback)(RLP_F96Frame *frame));
+
+int FBUS3110_SendMessage(u16 message_length, u8 message_type, u8 *buffer);
+int FBUS3110_SendFrame(u16 message_length, u8 message_type, u8 *buffer);
+void FBUS3110_Terminate(void);
+void FBUS3110_RX_StateMachine(unsigned char rx_byte);
+
+#endif /* __FBUS3110_h */
index c49b6cf..e507cb5 100644 (file)
@@ -106,6 +106,10 @@ SOURCE=".\fbus.c"
 # End Source File\r
 # Begin Source File\r
 \r
+SOURCE=".\fbus3110.c"\r
+# End Source File\r
+# Begin Source File\r
+\r
 SOURCE=".\fbusirda.c"\r
 # End Source File\r
 # Begin Source File\r
@@ -178,6 +182,10 @@ SOURCE=".\misc.c"
 # End Source File\r
 # Begin Source File\r
 \r
+SOURCE=".\n3110.c"\r
+# End Source File\r
+# Begin Source File\r
+\r
 SOURCE=".\n6110.c"\r
 # End Source File\r
 # Begin Source File\r
@@ -266,6 +274,10 @@ SOURCE=".\win32\misc_win32.h"
 # End Source File\r
 # Begin Source File\r
 \r
+SOURCE=".\n3110.h"\r
+# End Source File\r
+# Begin Source File\r
+\r
 SOURCE=".\n6110.h"\r
 # End Source File\r
 # Begin Source File\r
index d39fbe0..c726be5 100644 (file)
@@ -1,6 +1,7 @@
 @echo off\r
 ren gnokiiapi.c gnokiiapi.1 > nul\r
 ren gnokiiapi.h gnokiiapi.2 > nul\r
+ren resource.h resource.1 > nul\r
 call ..\clean.bat make\r
 del release\*.pch > nul\r
 del release\*.exe > nul\r
@@ -18,4 +19,5 @@ del debug\*.ilk > nul
 rmdir debug > nul\r
 ren gnokiiapi.1 gnokiiapi.c > nul\r
 ren gnokiiapi.2 gnokiiapi.h > nul\r
+ren resource.1 resource.h > nul\r
 del log > nul
\ No newline at end of file
index c68a939..2c0346e 100644 (file)
@@ -45,11 +45,13 @@ CLEAN :
        -@erase "$(INTDIR)\device.obj"\r
        -@erase "$(INTDIR)\at.obj"\r
        -@erase "$(INTDIR)\fbus.obj"\r
+       -@erase "$(INTDIR)\fbus3110.obj"\r
        -@erase "$(INTDIR)\fbusirda.obj"\r
        -@erase "$(INTDIR)\mbus.obj"\r
        -@erase "$(INTDIR)\n7110.obj"\r
        -@erase "$(INTDIR)\newat.obj"\r
        -@erase "$(INTDIR)\n6110.obj"\r
+       -@erase "$(INTDIR)\n3110.obj"\r
        -@erase "$(INTDIR)\sniff.obj"\r
        -@erase "$(INTDIR)\misc.obj"\r
        -@erase "$(INTDIR)\getopt.obj"\r
@@ -118,12 +120,14 @@ LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi3
 LINK32_OBJS= \\r
        "$(INTDIR)\cfgreader.obj" \\r
        "$(INTDIR)\n6110.obj" \\r
+       "$(INTDIR)\n3110.obj" \\r
        "$(INTDIR)\sniff.obj" \\r
        "$(INTDIR)\fbusirda.obj" \\r
        "$(INTDIR)\n7110.obj" \\r
        "$(INTDIR)\newat.obj" \\r
        "$(INTDIR)\mbus.obj" \\r
        "$(INTDIR)\fbus.obj" \\r
+       "$(INTDIR)\fbus3110.obj" \\r
        "$(INTDIR)\at.obj" \\r
        "$(INTDIR)\device.obj" \\r
        "$(INTDIR)\gsm-sms.obj" \\r
@@ -164,10 +168,12 @@ ALL : "$(OUTDIR)\gnokii.exe"
 CLEAN :\r
        -@erase "$(INTDIR)\cfgreader.obj"\r
        -@erase "$(INTDIR)\fbus.obj"\r
+       -@erase "$(INTDIR)\fbus3110.obj"\r
        -@erase "$(INTDIR)\mbus.obj"\r
        -@erase "$(INTDIR)\at.obj"\r
        -@erase "$(INTDIR)\n7110.obj"\r
        -@erase "$(INTDIR)\n6110.obj"\r
+       -@erase "$(INTDIR)\n3110.obj"\r
        -@erase "$(INTDIR)\sniff.obj"\r
        -@erase "$(INTDIR)\fbusirda.obj"\r
        -@erase "$(INTDIR)\newat.obj"\r
@@ -242,8 +248,10 @@ LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi3
 LINK32_OBJS= \\r
        "$(INTDIR)\cfgreader.obj" \\r
        "$(INTDIR)\n6110.obj" \\r
+       "$(INTDIR)\n3110.obj" \\r
        "$(INTDIR)\sniff.obj" \\r
        "$(INTDIR)\fbusirda.obj" \\r
+       "$(INTDIR)\fbus3110.obj" \\r
        "$(INTDIR)\n7110.obj" \\r
        "$(INTDIR)\newat.obj" \\r
        "$(INTDIR)\mbus.obj" \\r
@@ -342,6 +350,11 @@ SOURCE="n6110.c"
 "$(INTDIR)\n6110.obj" : $(SOURCE) "$(INTDIR)"\r
        $(CPP) $(CPP_PROJ) $(SOURCE)\r
 \r
+SOURCE="n3110.c"\r
+\r
+"$(INTDIR)\n3110.obj" : $(SOURCE) "$(INTDIR)"\r
+       $(CPP) $(CPP_PROJ) $(SOURCE)\r
+\r
 SOURCE="sniff.c"\r
 \r
 "$(INTDIR)\sniff.obj" : $(SOURCE) "$(INTDIR)"\r
@@ -362,6 +375,11 @@ SOURCE="fbus.c"
 "$(INTDIR)\fbus.obj" : $(SOURCE) "$(INTDIR)"\r
        $(CPP) $(CPP_PROJ) $(SOURCE)\r
 \r
+SOURCE="fbus3110.c"\r
+\r
+"$(INTDIR)\fbus3110.obj" : $(SOURCE) "$(INTDIR)"\r
+       $(CPP) $(CPP_PROJ) $(SOURCE)\r
+\r
 SOURCE="gsm-ringtones.c"\r
 \r
 "$(INTDIR)\gsm-ringtones.obj" : $(SOURCE) "$(INTDIR)"\r
index edfbc39..4d6e425 100644 (file)
@@ -101,24 +101,24 @@ const
   FN_WAP=16;\r
   FN_RINGNUMBER=17;\r
 \r
-  F_CAL61=0;   //Calendar in 6110 style - 4 types,...\r
-  F_CAL33=1;   //Calendar in 3310 style - 10 reminders, Unicode, 3 coding types\r
-  F_CAL71=2;   //Calendar in 7110 style - 4 types, recurrance, etc.\r
-  F_PBK33SIM=3;//Phonebook in Unicode(3310 style).Name and number.No internal\r
-  F_PBK33INT=4;//Phonebook in Unicode(3310 style).Name and number.Internal available\r
-  F_PBK71INT=5;//Extended phonebook-multiple numbers,Unicode(7110 style).Internal available\r
-  F_PBK61INT=6;//Name and number,no Unicode(6110 style).Internal available\r
-  F_SMS  =9;   //SMS with Inbox, Outbox\r
-  F_SMS71=10;  //SMS with SMS folders like in 7110\r
-  F_STANIM=20; //Startup logo animated or static\r
-  F_STA=21;    //Startup logo static\r
-  F_STA62=22;  //Startup logo static size 6210\r
-  F_STA71=23;  //Startup logo static size 7110\r
-  F_PROF61=24; //Profiles numbered like in N6110\r
-  F_PROF51=25; //Profiles numbered like in N5110\r
-  F_PROF33=26; //Profiles numbered like in N3310.Unicode names\r
-  F_RING_SM=27;//Binary ringtone in Smart Messaging\r
-  F_RINGBIN=28;//Binary ringtone in binary format\r
+  F_CAL61=1;   //Calendar in 6110 style - 4 types,...\r
+  F_CAL33=2;   //Calendar in 3310 style - 10 reminders, Unicode, 3 coding types\r
+  F_CAL71=3;   //Calendar in 7110 style - 4 types, recurrance, etc.\r
+  F_PBK33SIM=4;//Phonebook in Unicode(3310 style).Name and number.No internal\r
+  F_PBK33INT=5;//Phonebook in Unicode(3310 style).Name and number.Internal available\r
+  F_PBK71INT=6;//Extended phonebook-multiple numbers,Unicode(7110 style).Internal available\r
+  F_PBK61INT=7;//Name and number,no Unicode(6110 style).Internal available\r
+  F_SMS  =10;  //SMS with Inbox, Outbox\r
+  F_SMS71=11;  //SMS with SMS folders like in 7110\r
+  F_STANIM=21; //Startup logo animated or static\r
+  F_STA=22;    //Startup logo static\r
+  F_STA62=23;  //Startup logo static size 6210\r
+  F_STA71=24;  //Startup logo static size 7110\r
+  F_PROF61=25; //Profiles numbered like in N6110\r
+  F_PROF51=26; //Profiles numbered like in N5110\r
+  F_PROF33=27; //Profiles numbered like in N3310.Unicode names\r
+  F_RING_SM=28;//Binary ringtone in Smart Messaging\r
+  F_RINGBIN=29;//Binary ringtone in binary format\r
 \r
 const\r
   GE_SMSTOOLONG=22;\r
diff --git a/win32_makefile/gui_delphi/logo.ico b/win32_makefile/gui_delphi/logo.ico
new file mode 100644 (file)
index 0000000..1ac8916
Binary files /dev/null and b/win32_makefile/gui_delphi/logo.ico differ
index 2b1b7e7..85f37ba 100644 (file)
@@ -1,10 +1,9 @@
 object MainForm: TMainForm\r
-  Left = 177\r
-  Top = 126\r
-  BorderStyle = bsSingle\r
+  Left = 138\r
+  Top = 137\r
+  Width = 655\r
+  Height = 431\r
   Caption = 'Mygnokii for WIN32'\r
-  ClientHeight = 377\r
-  ClientWidth = 607\r
   Color = clBtnFace\r
   Font.Charset = DEFAULT_CHARSET\r
   Font.Color = clWindowText\r
@@ -13,21 +12,23 @@ object MainForm: TMainForm
   Font.Style = []\r
   Menu = MainMenu1\r
   OldCreateOrder = False\r
+  OnClose = FormClose\r
   OnCreate = FormCreate\r
   OnResize = FormResize\r
+  OnShow = FormShow\r
   PixelsPerInch = 96\r
   TextHeight = 13\r
   object Splitter1: TSplitter\r
     Left = 93\r
     Top = 0\r
     Width = 4\r
-    Height = 360\r
+    Height = 368\r
     Cursor = crHSplit\r
   end\r
   object StatusBar1: TStatusBar\r
     Left = 0\r
-    Top = 360\r
-    Width = 607\r
+    Top = 368\r
+    Width = 647\r
     Height = 17\r
     Panels = <\r
       item\r
@@ -45,7 +46,7 @@ object MainForm: TMainForm
     Left = 0\r
     Top = 0\r
     Width = 93\r
-    Height = 360\r
+    Height = 368\r
     Align = alLeft\r
     AutoExpand = True\r
     BevelInner = bvNone\r
@@ -83,12 +84,12 @@ object MainForm: TMainForm
   object PageControl1: TPageControl\r
     Left = 97\r
     Top = 0\r
-    Width = 510\r
-    Height = 360\r
-    ActivePage = ConfigTabSheet\r
+    Width = 550\r
+    Height = 368\r
+    ActivePage = PhoneTabSheet\r
     Align = alClient\r
     Style = tsFlatButtons\r
-    TabIndex = 12\r
+    TabIndex = 2\r
     TabOrder = 2\r
     object NetmonitorTabSheet: TTabSheet\r
       Caption = 'netm'\r
@@ -159,15 +160,15 @@ object MainForm: TMainForm
       object GroupBox2: TGroupBox\r
         Left = 0\r
         Top = 0\r
-        Width = 502\r
-        Height = 329\r
+        Width = 542\r
+        Height = 337\r
         Align = alClient\r
         Caption = 'Phonebook'\r
         TabOrder = 0\r
         object Panel1: TPanel\r
           Left = 2\r
           Top = 15\r
-          Width = 498\r
+          Width = 538\r
           Height = 25\r
           Align = alTop\r
           BevelOuter = bvNone\r
@@ -201,8 +202,8 @@ object MainForm: TMainForm
         object ListView1: TListView\r
           Left = 2\r
           Top = 40\r
-          Width = 498\r
-          Height = 287\r
+          Width = 538\r
+          Height = 295\r
           Align = alClient\r
           Columns = <\r
             item\r
@@ -248,22 +249,22 @@ object MainForm: TMainForm
       object GroupBox3: TGroupBox\r
         Left = 0\r
         Top = 0\r
-        Width = 502\r
-        Height = 329\r
+        Width = 542\r
+        Height = 337\r
         Align = alClient\r
         Caption = 'Phone'\r
         TabOrder = 0\r
         object Label14: TLabel\r
-          Left = 432\r
-          Top = 24\r
+          Left = 440\r
+          Top = 240\r
           Width = 38\r
           Height = 13\r
           Caption = 'Label14'\r
           Visible = False\r
         end\r
         object Label16: TLabel\r
-          Left = 432\r
-          Top = 64\r
+          Left = 440\r
+          Top = 280\r
           Width = 38\r
           Height = 13\r
           Caption = 'Label16'\r
@@ -271,7 +272,7 @@ object MainForm: TMainForm
         end\r
         object GroupBox12: TGroupBox\r
           Left = 8\r
-          Top = 24\r
+          Top = 16\r
           Width = 257\r
           Height = 121\r
           Caption = 'Info'\r
@@ -330,8 +331,8 @@ object MainForm: TMainForm
           end\r
         end\r
         object Button9: TButton\r
-          Left = 304\r
-          Top = 24\r
+          Left = 272\r
+          Top = 208\r
           Width = 81\r
           Height = 25\r
           Caption = 'Reset'\r
@@ -341,16 +342,16 @@ object MainForm: TMainForm
         end\r
         object GroupBox14: TGroupBox\r
           Left = 8\r
-          Top = 216\r
+          Top = 200\r
           Width = 257\r
-          Height = 105\r
+          Height = 97\r
           Caption = 'Simlocks'\r
           TabOrder = 3\r
           object ListView8: TListView\r
             Left = 2\r
             Top = 15\r
             Width = 253\r
-            Height = 88\r
+            Height = 80\r
             Align = alClient\r
             Columns = <\r
               item\r
@@ -379,14 +380,14 @@ object MainForm: TMainForm
         end\r
         object GroupBox11: TGroupBox\r
           Left = 8\r
-          Top = 152\r
+          Top = 144\r
           Width = 257\r
-          Height = 57\r
+          Height = 49\r
           Caption = 'Alarm'\r
           TabOrder = 1\r
           object CheckBox1: TCheckBox\r
-            Left = 16\r
-            Top = 24\r
+            Left = 8\r
+            Top = 16\r
             Width = 105\r
             Height = 17\r
             Caption = 'Enabled in phone'\r
@@ -395,8 +396,8 @@ object MainForm: TMainForm
             TabOrder = 0\r
           end\r
           object DateTimePicker1: TDateTimePicker\r
-            Left = 128\r
-            Top = 24\r
+            Left = 120\r
+            Top = 16\r
             Width = 65\r
             Height = 25\r
             CalAlignment = dtaLeft\r
@@ -411,6 +412,60 @@ object MainForm: TMainForm
             TabOrder = 1\r
           end\r
         end\r
+        object GroupBox26: TGroupBox\r
+          Left = 272\r
+          Top = 16\r
+          Width = 265\r
+          Height = 177\r
+          Caption = 'Settings'\r
+          TabOrder = 4\r
+          Visible = False\r
+          object Label46: TLabel\r
+            Left = 8\r
+            Top = 24\r
+            Width = 63\r
+            Height = 13\r
+            Caption = 'LCD Contrast'\r
+          end\r
+          object CheckBox3: TCheckBox\r
+            Left = 8\r
+            Top = 48\r
+            Width = 193\r
+            Height = 17\r
+            Caption = 'Alternative Line Service'\r
+            TabOrder = 0\r
+          end\r
+          object TrackBar1: TTrackBar\r
+            Left = 88\r
+            Top = 16\r
+            Width = 169\r
+            Height = 25\r
+            Orientation = trHorizontal\r
+            Frequency = 1\r
+            Position = 0\r
+            SelEnd = 0\r
+            SelStart = 0\r
+            TabOrder = 1\r
+            TickMarks = tmBottomRight\r
+            TickStyle = tsAuto\r
+          end\r
+          object CheckBox4: TCheckBox\r
+            Left = 8\r
+            Top = 64\r
+            Width = 201\r
+            Height = 17\r
+            Caption = 'Additional games'\r
+            TabOrder = 2\r
+          end\r
+          object CheckBox5: TCheckBox\r
+            Left = 8\r
+            Top = 80\r
+            Width = 217\r
+            Height = 17\r
+            Caption = 'Vibra menu'\r
+            TabOrder = 3\r
+          end\r
+        end\r
       end\r
     end\r
     object LogosTabSheet: TTabSheet\r
@@ -420,8 +475,8 @@ object MainForm: TMainForm
       object GroupBox4: TGroupBox\r
         Left = 0\r
         Top = 0\r
-        Width = 502\r
-        Height = 329\r
+        Width = 542\r
+        Height = 337\r
         Align = alClient\r
         Caption = 'logos'\r
         TabOrder = 0\r
@@ -437,7 +492,7 @@ object MainForm: TMainForm
           Left = 2\r
           Top = 15\r
           Width = 143\r
-          Height = 312\r
+          Height = 320\r
           Align = alLeft\r
           Transparent = True\r
           OnMouseDown = Image1MouseDown\r
@@ -2486,15 +2541,15 @@ object MainForm: TMainForm
       object GroupBox6: TGroupBox\r
         Left = 0\r
         Top = 0\r
-        Width = 502\r
-        Height = 329\r
+        Width = 542\r
+        Height = 337\r
         Align = alClient\r
         Caption = 'SMS'\r
         TabOrder = 0\r
         object Panel2: TPanel\r
           Left = 2\r
           Top = 15\r
-          Width = 498\r
+          Width = 538\r
           Height = 26\r
           Align = alTop\r
           BevelOuter = bvNone\r
@@ -2511,7 +2566,7 @@ object MainForm: TMainForm
             Top = 0\r
             Width = 233\r
             Height = 21\r
-            ItemHeight = 0\r
+            ItemHeight = 13\r
             TabOrder = 0\r
             Text = 'None'\r
             OnChange = ComboBox3Change\r
@@ -2520,8 +2575,8 @@ object MainForm: TMainForm
         object Panel3: TPanel\r
           Left = 2\r
           Top = 41\r
-          Width = 498\r
-          Height = 286\r
+          Width = 538\r
+          Height = 294\r
           Align = alClient\r
           BevelOuter = bvNone\r
           Caption = 'Panel3'\r
@@ -2529,7 +2584,7 @@ object MainForm: TMainForm
           object Splitter2: TSplitter\r
             Left = 0\r
             Top = 96\r
-            Width = 498\r
+            Width = 538\r
             Height = 5\r
             Cursor = crVSplit\r
             Align = alTop\r
@@ -2537,7 +2592,7 @@ object MainForm: TMainForm
           object ListView2: TListView\r
             Left = 0\r
             Top = 0\r
-            Width = 498\r
+            Width = 538\r
             Height = 96\r
             Align = alTop\r
             Columns = <\r
@@ -2572,7 +2627,7 @@ object MainForm: TMainForm
           object Memo1: TMemo\r
             Left = 0\r
             Top = 101\r
-            Width = 498\r
+            Width = 538\r
             Height = 52\r
             Align = alTop\r
             BevelInner = bvNone\r
@@ -2585,8 +2640,8 @@ object MainForm: TMainForm
           object Memo2: TMemo\r
             Left = 0\r
             Top = 153\r
-            Width = 498\r
-            Height = 133\r
+            Width = 538\r
+            Height = 141\r
             Align = alClient\r
             Lines.Strings = (\r
               ''\r
@@ -2605,15 +2660,15 @@ object MainForm: TMainForm
       object GroupBox7: TGroupBox\r
         Left = 0\r
         Top = 0\r
-        Width = 502\r
-        Height = 329\r
+        Width = 542\r
+        Height = 337\r
         Align = alClient\r
         Caption = 'Speed dials'\r
         TabOrder = 0\r
         object ListView3: TListView\r
           Left = 2\r
           Top = 15\r
-          Width = 498\r
+          Width = 538\r
           Height = 162\r
           Align = alTop\r
           Columns = <\r
@@ -2645,8 +2700,8 @@ object MainForm: TMainForm
       object GroupBox8: TGroupBox\r
         Left = 0\r
         Top = 0\r
-        Width = 502\r
-        Height = 329\r
+        Width = 542\r
+        Height = 337\r
         Align = alClient\r
         Caption = 'Calendar'\r
         Ctl3D = True\r
@@ -2655,8 +2710,8 @@ object MainForm: TMainForm
         object ListView4: TListView\r
           Left = 2\r
           Top = 15\r
-          Width = 498\r
-          Height = 312\r
+          Width = 538\r
+          Height = 320\r
           Align = alClient\r
           Columns = <\r
             item\r
@@ -2703,16 +2758,16 @@ object MainForm: TMainForm
       object GroupBox9: TGroupBox\r
         Left = 0\r
         Top = 0\r
-        Width = 502\r
-        Height = 329\r
+        Width = 542\r
+        Height = 337\r
         Align = alClient\r
         Caption = 'SMS Center'\r
         TabOrder = 0\r
         object ListView6: TListView\r
           Left = 2\r
           Top = 15\r
-          Width = 498\r
-          Height = 312\r
+          Width = 538\r
+          Height = 320\r
           Align = alClient\r
           Columns = <\r
             item\r
@@ -2757,16 +2812,16 @@ object MainForm: TMainForm
       object GroupBox10: TGroupBox\r
         Left = 0\r
         Top = 0\r
-        Width = 502\r
-        Height = 329\r
+        Width = 542\r
+        Height = 337\r
         Align = alClient\r
         Caption = 'Caller groups'\r
         TabOrder = 0\r
         object ListView5: TListView\r
           Left = 2\r
           Top = 15\r
-          Width = 498\r
-          Height = 312\r
+          Width = 538\r
+          Height = 320\r
           Align = alClient\r
           Columns = <\r
             item\r
@@ -2801,16 +2856,16 @@ object MainForm: TMainForm
       object GroupBox13: TGroupBox\r
         Left = 0\r
         Top = 0\r
-        Width = 502\r
-        Height = 329\r
+        Width = 542\r
+        Height = 337\r
         Align = alClient\r
         Caption = 'Profiles'\r
         TabOrder = 0\r
         object ListView7: TListView\r
           Left = 2\r
           Top = 15\r
-          Width = 498\r
-          Height = 312\r
+          Width = 538\r
+          Height = 320\r
           Align = alClient\r
           Columns = <\r
             item\r
@@ -2870,16 +2925,16 @@ object MainForm: TMainForm
       object GroupBox17: TGroupBox\r
         Left = 0\r
         Top = 0\r
-        Width = 502\r
-        Height = 329\r
+        Width = 542\r
+        Height = 337\r
         Align = alClient\r
         Caption = 'WAP bookmarks'\r
         TabOrder = 0\r
         object ListView9: TListView\r
           Left = 2\r
           Top = 15\r
-          Width = 498\r
-          Height = 312\r
+          Width = 538\r
+          Height = 320\r
           Align = alClient\r
           Columns = <\r
             item\r
@@ -2912,8 +2967,8 @@ object MainForm: TMainForm
       object GroupBox18: TGroupBox\r
         Left = 0\r
         Top = 0\r
-        Width = 502\r
-        Height = 329\r
+        Width = 542\r
+        Height = 337\r
         Align = alClient\r
         Caption = 'Configuration'\r
         TabOrder = 0\r
@@ -3014,8 +3069,8 @@ object MainForm: TMainForm
       object GroupBox19: TGroupBox\r
         Left = 0\r
         Top = 0\r
-        Width = 502\r
-        Height = 329\r
+        Width = 542\r
+        Height = 337\r
         Align = alClient\r
         Caption = 'WAP Settings'\r
         TabOrder = 0\r
@@ -3340,8 +3395,8 @@ object MainForm: TMainForm
       object GroupBox20: TGroupBox\r
         Left = 0\r
         Top = 0\r
-        Width = 502\r
-        Height = 329\r
+        Width = 542\r
+        Height = 337\r
         Align = alClient\r
         Caption = 'Call diverts'\r
         TabOrder = 0\r
@@ -3469,8 +3524,8 @@ object MainForm: TMainForm
       object GroupBox21: TGroupBox\r
         Left = 0\r
         Top = 0\r
-        Width = 502\r
-        Height = 329\r
+        Width = 542\r
+        Height = 337\r
         Align = alClient\r
         Caption = 'About'\r
         TabOrder = 0\r
@@ -3491,7 +3546,7 @@ object MainForm: TMainForm
         object Memo3: TMemo\r
           Left = 2\r
           Top = 15\r
-          Width = 498\r
+          Width = 538\r
           Height = 282\r
           Align = alTop\r
           Lines.Strings = (\r
@@ -3561,15 +3616,15 @@ object MainForm: TMainForm
       object GroupBox22: TGroupBox\r
         Left = 0\r
         Top = 0\r
-        Width = 502\r
-        Height = 329\r
+        Width = 542\r
+        Height = 337\r
         Align = alClient\r
         Caption = 'SMS Offline'\r
         TabOrder = 0\r
         object Splitter3: TSplitter\r
           Left = 2\r
           Top = 160\r
-          Width = 498\r
+          Width = 538\r
           Height = 2\r
           Cursor = crVSplit\r
           Align = alTop\r
@@ -3577,7 +3632,7 @@ object MainForm: TMainForm
         object Panel4: TPanel\r
           Left = 2\r
           Top = 15\r
-          Width = 498\r
+          Width = 538\r
           Height = 145\r
           Align = alTop\r
           BevelOuter = bvNone\r
@@ -3586,7 +3641,7 @@ object MainForm: TMainForm
           object ListView10: TListView\r
             Left = 0\r
             Top = 0\r
-            Width = 498\r
+            Width = 538\r
             Height = 145\r
             Align = alClient\r
             Columns = <\r
@@ -3623,8 +3678,8 @@ object MainForm: TMainForm
         object Panel5: TPanel\r
           Left = 2\r
           Top = 162\r
-          Width = 498\r
-          Height = 165\r
+          Width = 538\r
+          Height = 173\r
           Align = alClient\r
           BevelOuter = bvNone\r
           Caption = 'Panel5'\r
@@ -3661,16 +3716,16 @@ object MainForm: TMainForm
       object GroupBox23: TGroupBox\r
         Left = 0\r
         Top = 0\r
-        Width = 502\r
-        Height = 329\r
+        Width = 542\r
+        Height = 337\r
         Align = alClient\r
         Caption = 'Calendar offline'\r
         TabOrder = 0\r
         object ListView11: TListView\r
           Left = 2\r
           Top = 15\r
-          Width = 498\r
-          Height = 312\r
+          Width = 538\r
+          Height = 320\r
           Align = alClient\r
           Columns = <\r
             item\r
@@ -3755,16 +3810,16 @@ object MainForm: TMainForm
       object GroupBox25: TGroupBox\r
         Left = 0\r
         Top = 0\r
-        Width = 502\r
-        Height = 329\r
+        Width = 542\r
+        Height = 337\r
         Align = alClient\r
         Caption = 'Phonebook offline'\r
         TabOrder = 0\r
         object ListView12: TListView\r
           Left = 2\r
           Top = 15\r
-          Width = 498\r
-          Height = 312\r
+          Width = 538\r
+          Height = 320\r
           Align = alClient\r
           Columns = <\r
             item\r
@@ -3790,7 +3845,7 @@ object MainForm: TMainForm
   end\r
   object MainMenu1: TMainMenu\r
     Left = 72\r
-    Top = 344\r
+    Top = 328\r
     object File1: TMenuItem\r
       Caption = 'File'\r
       object Savebackuptofile1: TMenuItem\r
@@ -3829,22 +3884,22 @@ object MainForm: TMainForm
     Interval = 500\r
     OnTimer = Timer1Timer\r
     Left = 136\r
-    Top = 344\r
+    Top = 328\r
   end\r
   object OpenDialog1: TOpenDialog\r
     Options = [ofHideReadOnly, ofPathMustExist, ofFileMustExist, ofEnableSizing]\r
     Left = 8\r
-    Top = 344\r
+    Top = 328\r
   end\r
   object SaveDialog1: TSaveDialog\r
     Options = [ofOverwritePrompt, ofHideReadOnly, ofEnableSizing]\r
     Left = 40\r
-    Top = 344\r
+    Top = 328\r
   end\r
   object CalendarPopupMenu: TPopupMenu\r
     OnPopup = CalendarPopupMenuPopup\r
     Left = 264\r
-    Top = 344\r
+    Top = 328\r
     object New1: TMenuItem\r
       Caption = 'New'\r
       OnClick = New1Click\r
@@ -3872,7 +3927,7 @@ object MainForm: TMainForm
   object SMSPopupMenu: TPopupMenu\r
     OnPopup = SMSPopupMenuPopup\r
     Left = 200\r
-    Top = 344\r
+    Top = 328\r
     object New2: TMenuItem\r
       Caption = 'New (Send/Save)'\r
       OnClick = New2Click\r
@@ -3896,7 +3951,7 @@ object MainForm: TMainForm
   object SMSCPopupMenu: TPopupMenu\r
     OnPopup = SMSCPopupMenuPopup\r
     Left = 232\r
-    Top = 344\r
+    Top = 328\r
     object Edit5: TMenuItem\r
       Caption = 'Edit'\r
       OnClick = Edit5Click\r
@@ -3905,7 +3960,7 @@ object MainForm: TMainForm
   object PBKPopupMenu: TPopupMenu\r
     OnPopup = PBKPopupMenuPopup\r
     Left = 296\r
-    Top = 344\r
+    Top = 328\r
     object Delete4: TMenuItem\r
       Caption = 'Delete'\r
       OnClick = Delete4Click\r
@@ -3941,12 +3996,12 @@ object MainForm: TMainForm
     Interval = 2000\r
     OnTimer = Timer2Timer\r
     Left = 104\r
-    Top = 344\r
+    Top = 328\r
   end\r
   object PCSMSPopupMenu: TPopupMenu\r
     OnPopup = PCSMSPopupMenuPopup\r
     Left = 328\r
-    Top = 344\r
+    Top = 328\r
     object SendSave1: TMenuItem\r
       Caption = 'SMS (Send/Save)'\r
       OnClick = SendSave1Click\r
@@ -3962,7 +4017,7 @@ object MainForm: TMainForm
   object PCCalendarPopupMenu: TPopupMenu\r
     OnPopup = PCCalendarPopupMenuPopup\r
     Left = 168\r
-    Top = 344\r
+    Top = 328\r
     object Copytocalendar1: TMenuItem\r
       Caption = 'Copy to phone'\r
       OnClick = Copytocalendar1Click\r
@@ -3978,7 +4033,7 @@ object MainForm: TMainForm
   object WAPBookPopupMenu: TPopupMenu\r
     OnPopup = WAPBookPopupMenuPopup\r
     Left = 360\r
-    Top = 344\r
+    Top = 328\r
     object New20: TMenuItem\r
       Caption = 'New'\r
       OnClick = New20Click\r
index 6461f68..b88de77 100644 (file)
@@ -241,6 +241,12 @@ type
     Edit20: TMenuItem;\r
     Button23: TButton;\r
     CopyphonebooktoPC1: TMenuItem;\r
+    GroupBox26: TGroupBox;\r
+    CheckBox3: TCheckBox;\r
+    TrackBar1: TTrackBar;\r
+    Label46: TLabel;\r
+    CheckBox4: TCheckBox;\r
+    CheckBox5: TCheckBox;\r
     procedure TreeView1MouseDown(Sender: TObject; Button: TMouseButton;\r
       Shift: TShiftState; X, Y: Integer);\r
     procedure FormCreate(Sender: TObject);\r
@@ -357,6 +363,8 @@ type
     procedure Button23Click(Sender: TObject);\r
     procedure CopyphonebooktoPC1Click(Sender: TObject);\r
     procedure PCPBKTabSheetShow(Sender: TObject);\r
+    procedure FormShow(Sender: TObject);\r
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);\r
   private\r
     { Private declarations }\r
   public\r
@@ -521,6 +529,19 @@ begin
   Result:= S;\r
 end;\r
 \r
+procedure SaveMainConfig;\r
+var\r
+  MyIniFile: TIniFile;\r
+begin\r
+  MyIniFile := TIniFile.Create(ExtractFilePath(Application.ExeName)+'\gnokiirc');\r
+  MyIniFile.WriteString('win32gui', 'x', inttostr(MainForm.Left));\r
+  MyIniFile.WriteString('win32gui', 'y', inttostr(MainForm.Top));\r
+  MyIniFile.WriteString('win32gui', 'width', inttostr(MainForm.Width));\r
+  MyIniFile.WriteString('win32gui', 'height', inttostr(MainForm.Height));\r
+  MyIniFile.WriteString('win32gui', 'treewidth', inttostr(MainForm.Treeview1.Width));\r
+  MyIniFile.Free;\r
+end;\r
+\r
 function DayOFweek3(date:TDateTime):string;\r
 var\r
   days: array[1..7] of string;\r
@@ -1497,6 +1518,7 @@ end;
 procedure TMainForm.Quit1Click(Sender: TObject);\r
 begin\r
   if GSMPhoneConnected then GSM_Terminate();\r
+  SaveMainConfig;\r
   Halt;\r
 end;\r
 \r
@@ -4636,4 +4658,35 @@ begin
   end;\r
 end;\r
 \r
+procedure TMainForm.FormShow(Sender: TObject);\r
+var\r
+  MyIniFile: TIniFile;\r
+  x:string;\r
+begin\r
+  MyIniFile := TIniFile.Create(ExtractFilePath(Application.ExeName)+'\gnokiirc');\r
+\r
+  x:=MyInifile.ReadString('win32gui', 'x', '100');\r
+  MainForm.Left:=strtoint(x);\r
+\r
+  x:=MyInifile.ReadString('win32gui', 'y', '100');\r
+  MainForm.Top:=strtoint(x);\r
+\r
+  x:=MyInifile.ReadString('win32gui', 'treewidth', '93');\r
+  MainForm.TreeView1.Width:=strtoint(x);\r
+\r
+  x:=MyInifile.ReadString('win32gui', 'width', '655');\r
+  MainForm.Width:=strtoint(x);\r
+\r
+  x:=MyInifile.ReadString('win32gui', 'height', '431');\r
+  MainForm.Height:=strtoint(x);\r
+\r
+  MyIniFile.Free;\r
+\r
+end;\r
+\r
+procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction);\r
+begin\r
+  SaveMainConfig;\r
+end;\r
+\r
 end.\r