:pserver:cvs@pserver.samba.org:/cvsroot - gnokii - Sun Nov 25 22:56 CET 2001
authorshort <>
Sun, 25 Nov 2001 22:00:37 +0000 (22:00 +0000)
committershort <>
Sun, 25 Nov 2001 22:00:37 +0000 (22:00 +0000)
358 files changed:
COPYING [new file with mode: 0644]
Docs/Bugs [new file with mode: 0644]
Docs/CREDITS [new file with mode: 0644]
Docs/CodingStyle [new file with mode: 0644]
Docs/DataCalls-QuickStart [new file with mode: 0644]
Docs/FAQ [new file with mode: 0644]
Docs/Makefile [new file with mode: 0644]
Docs/README [new file with mode: 0644]
Docs/README-2110 [new file with mode: 0644]
Docs/README-3810 [new file with mode: 0644]
Docs/README-6110 [new file with mode: 0644]
Docs/README-WIN32 [new file with mode: 0644]
Docs/README-dancall [new file with mode: 0644]
Docs/gettext-howto [new file with mode: 0644]
Docs/gnokii-6210-7110-IrDA [new file with mode: 0644]
Docs/gnokii-ir-howto [new file with mode: 0644]
Docs/gnokii.nol [new file with mode: 0755]
Docs/gnokii.xpm [new file with mode: 0644]
Docs/logos.txt [new file with mode: 0644]
Docs/man/gnokii.1 [new file with mode: 0644]
Docs/man/gnokiid.8 [new file with mode: 0644]
Docs/man/mgnokiidev.8 [new file with mode: 0644]
Docs/man/todologo.1 [new file with mode: 0644]
Docs/man/xgnokii.1x [new file with mode: 0644]
Docs/packaging-howto [new file with mode: 0644]
Docs/protocol/nk2110.txt [new file with mode: 0644]
Docs/protocol/nk3110.txt [new file with mode: 0644]
Docs/protocol/nk6110.txt [new file with mode: 0644]
Docs/protocol/nk6160.txt [new file with mode: 0644]
Docs/protocol/nk6185.txt [new file with mode: 0644]
Docs/protocol/nk640.txt [new file with mode: 0644]
Docs/protocol/nk7110.txt [new file with mode: 0644]
Docs/protocol/nokia.txt [new file with mode: 0644]
Docs/sample/gnokiirc [new file with mode: 0644]
Docs/sample/options [new file with mode: 0644]
Docs/sample/pap-secrets [new file with mode: 0644]
Docs/sample/ppp-6210-modem [new file with mode: 0755]
Docs/sample/ppp-gnokii [new file with mode: 0644]
Docs/sample/ppp-on [new file with mode: 0644]
Docs/test.vcs [new file with mode: 0644]
INSTALL [new file with mode: 0644]
Makefile [new file with mode: 0644]
Makefile.global.in [new file with mode: 0644]
TODO [new file with mode: 0644]
VERSION [new file with mode: 0644]
common/Makefile [new file with mode: 0644]
common/cfgreader.c [new file with mode: 0644]
common/data/Makefile [new file with mode: 0644]
common/data/at-emulator.c [new file with mode: 0644]
common/data/datapump.c [new file with mode: 0644]
common/data/rlp-common.c [new file with mode: 0644]
common/data/rlp-crc24.c [new file with mode: 0644]
common/data/virtmodem.c [new file with mode: 0644]
common/device.c [new file with mode: 0644]
common/devices/Makefile [new file with mode: 0644]
common/devices/tekram.c [new file with mode: 0644]
common/devices/unixirda.c [new file with mode: 0644]
common/devices/unixserial.c [new file with mode: 0644]
common/fbus-6110-auth.c [new file with mode: 0644]
common/fbus-6110-ringtones.c [new file with mode: 0644]
common/fbus-6110.c [new file with mode: 0644]
common/gsm-api.c [new file with mode: 0644]
common/gsm-bitmaps.c [new file with mode: 0644]
common/gsm-common.c [new file with mode: 0644]
common/gsm-encoding.c [new file with mode: 0644]
common/gsm-error.c [new file with mode: 0644]
common/gsm-filetypes.c [new file with mode: 0644]
common/gsm-networks.c [new file with mode: 0644]
common/gsm-ringtones.c [new file with mode: 0644]
common/gsm-sms.c [new file with mode: 0644]
common/gsm-statemachine.c [new file with mode: 0644]
common/links/Makefile [new file with mode: 0644]
common/links/atbus.c [new file with mode: 0644]
common/links/cbus.c [new file with mode: 0644]
common/links/fbus-phonet.c [new file with mode: 0644]
common/links/fbus.c [new file with mode: 0644]
common/links/utils.c [new file with mode: 0644]
common/mbus-2110.c [new file with mode: 0644]
common/mbus-6160.c [new file with mode: 0644]
common/mbus-640.c [new file with mode: 0644]
common/misc.c [new file with mode: 0644]
common/phones/Makefile [new file with mode: 0644]
common/phones/atgen.c [new file with mode: 0644]
common/phones/dc2711.c [new file with mode: 0644]
common/phones/generic.c [new file with mode: 0644]
common/phones/nk2110.c [new file with mode: 0644]
common/phones/nk3110.c [new file with mode: 0644]
common/phones/nk6100.c [new file with mode: 0644]
common/phones/nk7110.c [new file with mode: 0644]
common/phones/nokia.c [new file with mode: 0644]
common/vcal.lx [new file with mode: 0644]
config/config.guess [new file with mode: 0755]
config/config.sub [new file with mode: 0755]
config/install-sh [new file with mode: 0755]
configure.in [new file with mode: 0644]
getopt/Makefile [new file with mode: 0644]
getopt/getopt.c [new file with mode: 0644]
getopt/getopt.h [new file with mode: 0644]
getopt/getopt1.c [new file with mode: 0644]
gnokii/Makefile [new file with mode: 0644]
gnokii/gnokii.c [new file with mode: 0644]
gnokiid/Makefile [new file with mode: 0644]
gnokiid/gnokiid.c [new file with mode: 0644]
include/cfgreader.h [new file with mode: 0644]
include/config.h.in.in [new file with mode: 0644]
include/data/at-emulator.h [new file with mode: 0644]
include/data/datapump.h [new file with mode: 0644]
include/data/rlp-common.h [new file with mode: 0644]
include/data/rlp-crc24.h [new file with mode: 0644]
include/data/virtmodem.h [new file with mode: 0644]
include/device.h [new file with mode: 0644]
include/devices/tekram.h [new file with mode: 0644]
include/devices/unixirda.h [new file with mode: 0644]
include/devices/unixserial.h [new file with mode: 0644]
include/fbus-6110-auth.h [new file with mode: 0644]
include/fbus-6110-ringtones.h [new file with mode: 0644]
include/fbus-6110.h [new file with mode: 0644]
include/gnokii.h [new file with mode: 0644]
include/gsm-api.h [new file with mode: 0644]
include/gsm-bitmaps.h [new file with mode: 0644]
include/gsm-common.h [new file with mode: 0644]
include/gsm-encoding.h [new file with mode: 0644]
include/gsm-error.h [new file with mode: 0644]
include/gsm-filetypes.h [new file with mode: 0644]
include/gsm-networks.h [new file with mode: 0644]
include/gsm-ringtones.h [new file with mode: 0644]
include/gsm-sms.h [new file with mode: 0644]
include/gsm-statemachine.h [new file with mode: 0644]
include/links/atbus.h [new file with mode: 0644]
include/links/cbus.h [new file with mode: 0644]
include/links/fbus-phonet.h [new file with mode: 0644]
include/links/fbus.h [new file with mode: 0644]
include/links/utils.h [new file with mode: 0644]
include/linuxirda.h [new file with mode: 0644]
include/mbus-2110.h [new file with mode: 0644]
include/mbus-6160.h [new file with mode: 0644]
include/mbus-640.h [new file with mode: 0644]
include/misc.h [new file with mode: 0644]
include/phones/generic.h [new file with mode: 0644]
include/phones/nk2110.h [new file with mode: 0644]
include/phones/nk3110.h [new file with mode: 0644]
include/phones/nk6100.h [new file with mode: 0644]
include/phones/nk7110.h [new file with mode: 0644]
include/phones/nokia.h [new file with mode: 0644]
include/win32/getopt.h [new file with mode: 0644]
include/win32/winserial.h [new file with mode: 0644]
mkinstalldirs [new file with mode: 0644]
packaging/Debian/README.debian [new file with mode: 0644]
packaging/Debian/changelog [new file with mode: 0644]
packaging/Debian/conffiles [new file with mode: 0644]
packaging/Debian/control [new file with mode: 0644]
packaging/Debian/copyright [new file with mode: 0644]
packaging/Debian/docs [new file with mode: 0644]
packaging/Debian/examples [new file with mode: 0644]
packaging/Debian/files [new file with mode: 0644]
packaging/Debian/manpages [new file with mode: 0644]
packaging/Debian/menu [new file with mode: 0644]
packaging/Debian/postinst [new file with mode: 0644]
packaging/Debian/postinst.debhelper [new file with mode: 0644]
packaging/Debian/postrm [new file with mode: 0644]
packaging/Debian/postrm.debhelper [new file with mode: 0644]
packaging/Debian/preinst [new file with mode: 0644]
packaging/Debian/prerm.debhelper [new file with mode: 0644]
packaging/Debian/rules [new file with mode: 0755]
packaging/Debian/substvars [new file with mode: 0644]
packaging/RedHat/gnokii.spec.in [new file with mode: 0644]
packaging/Slackware/SlackBuild.in [new file with mode: 0644]
packaging/Slackware/disk [new file with mode: 0644]
packaging/make_dist [new file with mode: 0755]
patches/IR-Dongles/README-Tekram_IRmate_210 [new file with mode: 0644]
patches/IR-Dongles/device_tekram_irmate_210.c [new file with mode: 0644]
po/Makefile.in.in [new file with mode: 0644]
po/POTFILES.in [new file with mode: 0644]
po/cs.po [new file with mode: 0644]
po/de.po [new file with mode: 0644]
po/et.po [new file with mode: 0644]
po/fi.po [new file with mode: 0644]
po/it.po [new file with mode: 0644]
po/nl.po [new file with mode: 0644]
po/pl.po [new file with mode: 0644]
po/sk.po [new file with mode: 0644]
po/sl.po [new file with mode: 0644]
smsd/ChangeLog [new file with mode: 0644]
smsd/Makefile [new file with mode: 0644]
smsd/README [new file with mode: 0644]
smsd/db.c [new file with mode: 0644]
smsd/db.h [new file with mode: 0644]
smsd/lowlevel.c [new file with mode: 0644]
smsd/lowlevel.h [new file with mode: 0644]
smsd/sms.tables.sql [new file with mode: 0644]
smsd/smsd.c [new file with mode: 0644]
smsd/smsd.h [new file with mode: 0644]
utils/Makefile [new file with mode: 0644]
utils/mgnokiidev.c [new file with mode: 0644]
utils/todologo [new file with mode: 0644]
win32/Makefile [new file with mode: 0644]
win32/getopt.c [new file with mode: 0644]
win32/winserial.c [new file with mode: 0644]
xgnokii/ChangeLog [new file with mode: 0644]
xgnokii/Makefile [new file with mode: 0644]
xgnokii/README.vcard [new file with mode: 0644]
xgnokii/VERSION [new file with mode: 0644]
xgnokii/docs/help/en_US/cables/cables.html [new file with mode: 0644]
xgnokii/docs/help/en_US/config.html [new file with mode: 0644]
xgnokii/docs/help/en_US/faq.html [new file with mode: 0644]
xgnokii/docs/help/en_US/firmware/firmware.html [new file with mode: 0644]
xgnokii/docs/help/en_US/index.html [new file with mode: 0644]
xgnokii/docs/help/en_US/irda/irda.html [new file with mode: 0644]
xgnokii/docs/help/en_US/netmon/faq_net0.html [new file with mode: 0644]
xgnokii/docs/help/en_US/netmon/faq_net1.html [new file with mode: 0644]
xgnokii/docs/help/en_US/netmon/faq_net2.html [new file with mode: 0644]
xgnokii/docs/help/en_US/netmon/faq_net3.html [new file with mode: 0644]
xgnokii/docs/help/en_US/netmon/faq_net4.html [new file with mode: 0644]
xgnokii/docs/help/en_US/netmon/faq_net5.html [new file with mode: 0644]
xgnokii/docs/help/en_US/netmon/faq_net6.html [new file with mode: 0644]
xgnokii/docs/help/en_US/netmon/net_mon1.gif [new file with mode: 0644]
xgnokii/docs/help/en_US/netmon/net_mon2.gif [new file with mode: 0644]
xgnokii/docs/help/en_US/netmon/net_mon3.gif [new file with mode: 0644]
xgnokii/docs/help/en_US/netmon/nm2_5110.gif [new file with mode: 0644]
xgnokii/docs/help/en_US/netmon/nm_3210.gif [new file with mode: 0644]
xgnokii/docs/help/en_US/netmon/nm_5110.gif [new file with mode: 0644]
xgnokii/docs/help/en_US/netmon/nm_9110.gif [new file with mode: 0644]
xgnokii/docs/help/en_US/netmon/tip.gif [new file with mode: 0644]
xgnokii/docs/help/en_US/styl.css [new file with mode: 0644]
xgnokii/docs/help/en_US/windows/calendar/index.html [new file with mode: 0644]
xgnokii/docs/help/en_US/windows/contacts/index.html [new file with mode: 0644]
xgnokii/docs/help/en_US/windows/dtmf/index.html [new file with mode: 0644]
xgnokii/docs/help/en_US/windows/main/index.html [new file with mode: 0644]
xgnokii/docs/help/en_US/windows/netmon/index.html [new file with mode: 0644]
xgnokii/docs/help/en_US/windows/sms/index.html [new file with mode: 0644]
xgnokii/docs/help/en_US/windows/speeddial/index.html [new file with mode: 0644]
xgnokii/docs/help/en_US/windows/xkeyb/index.html [new file with mode: 0644]
xgnokii/docs/help/pl_PL/calendar.html [new file with mode: 0644]
xgnokii/docs/help/pl_PL/contacts.html [new file with mode: 0644]
xgnokii/docs/help/pl_PL/dtmf.html [new file with mode: 0644]
xgnokii/docs/help/pl_PL/index.html [new file with mode: 0644]
xgnokii/docs/help/pl_PL/netmon.html [new file with mode: 0644]
xgnokii/docs/help/pl_PL/netmon/dir0.gif [new file with mode: 0644]
xgnokii/docs/help/pl_PL/netmon/dir1.gif [new file with mode: 0644]
xgnokii/docs/help/pl_PL/netmon/glowna.htm [new file with mode: 0644]
xgnokii/docs/help/pl_PL/netmon/gsm/f2mbus.gif [new file with mode: 0644]
xgnokii/docs/help/pl_PL/netmon/gsm/f2mbus2.gif [new file with mode: 0644]
xgnokii/docs/help/pl_PL/netmon/gsm/faq_loga.htm [new file with mode: 0644]
xgnokii/docs/help/pl_PL/netmon/gsm/faq_net0.htm [new file with mode: 0644]
xgnokii/docs/help/pl_PL/netmon/gsm/faq_net1.htm [new file with mode: 0644]
xgnokii/docs/help/pl_PL/netmon/gsm/faq_net2.htm [new file with mode: 0644]
xgnokii/docs/help/pl_PL/netmon/gsm/faq_net3.htm [new file with mode: 0644]
xgnokii/docs/help/pl_PL/netmon/gsm/faq_net4.htm [new file with mode: 0644]
xgnokii/docs/help/pl_PL/netmon/gsm/faq_net5.htm [new file with mode: 0644]
xgnokii/docs/help/pl_PL/netmon/gsm/faq_net6.htm [new file with mode: 0644]
xgnokii/docs/help/pl_PL/netmon/gsm/faqkable.htm [new file with mode: 0644]
xgnokii/docs/help/pl_PL/netmon/gsm/firmware.htm [new file with mode: 0644]
xgnokii/docs/help/pl_PL/netmon/gsm/index.htm [new file with mode: 0644]
xgnokii/docs/help/pl_PL/netmon/gsm/net_mon1.gif [new file with mode: 0644]
xgnokii/docs/help/pl_PL/netmon/gsm/net_mon2.gif [new file with mode: 0644]
xgnokii/docs/help/pl_PL/netmon/gsm/net_mon3.gif [new file with mode: 0644]
xgnokii/docs/help/pl_PL/netmon/gsm/net_spis.htm [new file with mode: 0644]
xgnokii/docs/help/pl_PL/netmon/gsm/nm2_5110.gif [new file with mode: 0644]
xgnokii/docs/help/pl_PL/netmon/gsm/nm_3210.gif [new file with mode: 0644]
xgnokii/docs/help/pl_PL/netmon/gsm/nm_5110.gif [new file with mode: 0644]
xgnokii/docs/help/pl_PL/netmon/gsm/nm_9110.gif [new file with mode: 0644]
xgnokii/docs/help/pl_PL/netmon/gsm/tip.gif [new file with mode: 0644]
xgnokii/docs/help/pl_PL/netmon/htm.gif [new file with mode: 0644]
xgnokii/docs/help/pl_PL/netmon/index.htm [new file with mode: 0644]
xgnokii/docs/help/pl_PL/netmon/konw.js [new file with mode: 0644]
xgnokii/docs/help/pl_PL/netmon/spis.htm [new file with mode: 0644]
xgnokii/docs/help/pl_PL/netmon/spis_d.htm [new file with mode: 0644]
xgnokii/docs/help/pl_PL/netmon/spis_d2.htm [new file with mode: 0644]
xgnokii/docs/help/pl_PL/netmon/spis_g.htm [new file with mode: 0644]
xgnokii/docs/help/pl_PL/netmon/styl.css [new file with mode: 0644]
xgnokii/docs/help/pl_PL/sms.html [new file with mode: 0644]
xgnokii/docs/help/pl_PL/speeddial.html [new file with mode: 0644]
xgnokii/docs/help/pl_PL/xkeyb.html [new file with mode: 0644]
xgnokii/xgnokii.c [new file with mode: 0644]
xgnokii/xgnokii.h [new file with mode: 0644]
xgnokii/xgnokii_calendar.c [new file with mode: 0644]
xgnokii/xgnokii_calendar.h [new file with mode: 0644]
xgnokii/xgnokii_cfg.c [new file with mode: 0644]
xgnokii/xgnokii_cfg.h [new file with mode: 0644]
xgnokii/xgnokii_common.c [new file with mode: 0644]
xgnokii/xgnokii_common.h [new file with mode: 0644]
xgnokii/xgnokii_contacts.c [new file with mode: 0644]
xgnokii/xgnokii_contacts.h [new file with mode: 0644]
xgnokii/xgnokii_data.c [new file with mode: 0644]
xgnokii/xgnokii_data.h [new file with mode: 0644]
xgnokii/xgnokii_dtmf.c [new file with mode: 0644]
xgnokii/xgnokii_dtmf.h [new file with mode: 0644]
xgnokii/xgnokii_logos.c [new file with mode: 0644]
xgnokii/xgnokii_logos.h [new file with mode: 0644]
xgnokii/xgnokii_lowlevel.c [new file with mode: 0644]
xgnokii/xgnokii_lowlevel.h [new file with mode: 0644]
xgnokii/xgnokii_netmon.c [new file with mode: 0644]
xgnokii/xgnokii_netmon.h [new file with mode: 0644]
xgnokii/xgnokii_sms.c [new file with mode: 0644]
xgnokii/xgnokii_sms.h [new file with mode: 0644]
xgnokii/xgnokii_speed.c [new file with mode: 0644]
xgnokii/xgnokii_speed.h [new file with mode: 0644]
xgnokii/xgnokii_xkeyb.c [new file with mode: 0644]
xgnokii/xgnokii_xkeyb.h [new file with mode: 0644]
xgnokii/xpm/5110.xpm [new file with mode: 0644]
xgnokii/xpm/6110.xpm [new file with mode: 0644]
xgnokii/xpm/6110mini.xpm [new file with mode: 0644]
xgnokii/xpm/6150.xpm [new file with mode: 0644]
xgnokii/xpm/BCard.xpm [new file with mode: 0644]
xgnokii/xpm/Black_point.xpm [new file with mode: 0644]
xgnokii/xpm/Caller.xpm [new file with mode: 0644]
xgnokii/xpm/Caller_logo.xpm [new file with mode: 0644]
xgnokii/xpm/Check.xpm [new file with mode: 0644]
xgnokii/xpm/Delete.xpm [new file with mode: 0644]
xgnokii/xpm/Dial.xpm [new file with mode: 0644]
xgnokii/xpm/Display.xpm [new file with mode: 0644]
xgnokii/xpm/Duplicate.xpm [new file with mode: 0644]
xgnokii/xpm/Edit.xpm [new file with mode: 0644]
xgnokii/xpm/Edit_flip_horizontal.xpm [new file with mode: 0644]
xgnokii/xpm/Edit_flip_vertical.xpm [new file with mode: 0644]
xgnokii/xpm/Edit_invert.xpm [new file with mode: 0644]
xgnokii/xpm/Flip.xpm [new file with mode: 0644]
xgnokii/xpm/Forward.xpm [new file with mode: 0644]
xgnokii/xpm/Green_pixel.xpm [new file with mode: 0644]
xgnokii/xpm/Green_point.xpm [new file with mode: 0644]
xgnokii/xpm/Invert.xpm [new file with mode: 0644]
xgnokii/xpm/Names.xpm [new file with mode: 0644]
xgnokii/xpm/New.xpm [new file with mode: 0644]
xgnokii/xpm/NewBD.xpm [new file with mode: 0644]
xgnokii/xpm/NewCall.xpm [new file with mode: 0644]
xgnokii/xpm/NewMeet.xpm [new file with mode: 0644]
xgnokii/xpm/NewRem.xpm [new file with mode: 0644]
xgnokii/xpm/Op.xpm [new file with mode: 0644]
xgnokii/xpm/Open.xpm [new file with mode: 0644]
xgnokii/xpm/Operator_logo.xpm [new file with mode: 0644]
xgnokii/xpm/Preview_3210.xpm [new file with mode: 0644]
xgnokii/xpm/Preview_3310.xpm [new file with mode: 0644]
xgnokii/xpm/Preview_5110.xpm [new file with mode: 0644]
xgnokii/xpm/Preview_6110.xpm [new file with mode: 0644]
xgnokii/xpm/Preview_6150.xpm [new file with mode: 0644]
xgnokii/xpm/Preview_6210.xpm [new file with mode: 0644]
xgnokii/xpm/Preview_6250.xpm [new file with mode: 0644]
xgnokii/xpm/Preview_7110.xpm [new file with mode: 0644]
xgnokii/xpm/Read.xpm [new file with mode: 0644]
xgnokii/xpm/Reply.xpm [new file with mode: 0644]
xgnokii/xpm/Save.xpm [new file with mode: 0644]
xgnokii/xpm/Send.xpm [new file with mode: 0644]
xgnokii/xpm/SendSMS.xpm [new file with mode: 0644]
xgnokii/xpm/Startup.xpm [new file with mode: 0644]
xgnokii/xpm/Startup_logo.xpm [new file with mode: 0644]
xgnokii/xpm/Tool_brush.xpm [new file with mode: 0644]
xgnokii/xpm/Tool_filled_rectangle.xpm [new file with mode: 0644]
xgnokii/xpm/Tool_line.xpm [new file with mode: 0644]
xgnokii/xpm/Tool_rectangle.xpm [new file with mode: 0644]
xgnokii/xpm/alarm.xpm [new file with mode: 0644]
xgnokii/xpm/background.xpm [new file with mode: 0644]
xgnokii/xpm/info.xpm [new file with mode: 0644]
xgnokii/xpm/logo.xpm [new file with mode: 0644]
xgnokii/xpm/phone.xpm [new file with mode: 0644]
xgnokii/xpm/quest.xpm [new file with mode: 0644]
xgnokii/xpm/sim.xpm [new file with mode: 0644]
xgnokii/xpm/sms.xpm [new file with mode: 0644]
xgnokii/xpm/stop.xpm [new file with mode: 0644]

diff --git a/COPYING b/COPYING
new file mode 100644 (file)
index 0000000..99a8ab6
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,30 @@
+GNOKII - A Linux/Unix toolset and driver for the Nokia 3x10/8110/51x0/61x0
+         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/Bugs b/Docs/Bugs
new file mode 100644 (file)
index 0000000..4a43bbe
--- /dev/null
+++ b/Docs/Bugs
@@ -0,0 +1,16 @@
+When you report some problems with gnokii please attach the following information:
+ - phone model
+ - connection type (irda/cable with its type)
+ - gnokii version (gnokii --version) along with source for it: cvs,
+tarball, binary package
+ - if you can, compile gnokii with --enable-debug option for configure and
+attach gzipped output to the email:
+(x)gnokii(d) [parameters] 2>errfile
+
+It would be good if you name the problem in the subject if possible and
+name if it meets gnokii, xgnokii or gnokiid binaries or gnokii as a whole.
+
+(from Pawel Kot's mailing to gnokii mailing list).
+
+Send resulting report to gnokii@net.lut.ac.uk.
+
diff --git a/Docs/CREDITS b/Docs/CREDITS
new file mode 100644 (file)
index 0000000..820c4af
--- /dev/null
@@ -0,0 +1,127 @@
+- Credits -
+
+Thank you to, in no particular order...
+
+*  Everyone on the gnokii mailing list for their interest
+   and input into the project.
+
+*  Pavel Janík ml. for the majority of work on gnokii 6110 series
+   support, spelling corrections and miscellaneous code cleanups.
+
+*  Serge Odinokov for 6110 series authentication protocol and
+   example Delphi RLP code. Many thanks...
+
+*  Nick Lamb for operator logos, CLI uploading and AT*C command support.
+
+*  Francois Dessart, Brendan O'Dea, Tony Lindstrom, Steffan Henke
+   and Cobus Van Eeden for dumps (and in some cases interpretation!)
+   of unknown messages, bug reports and prompt feedback of being
+   able to build new releases.
+
+*  Staffan Ulfberg for taking care of the website and for instigating
+   the 6110 project which has now been merged with the gnokii effort.
+
+*  Martin Hamilton for looking after the mailing list.
+
+*  Tim Potter for some of the ideas that are now incorporated in gnokii
+   to provide multiple model support and config file code.
+
+*  Paul Mackerras and Andrew Tridgell for discussions about pseudo
+   ttys, setuid programs and such.  Tridge kindly reviewed the
+   mgnokiidev.c code.
+
+*  Richard Kalton for his excellent page about Nokia 6110 protocol.
+
+*  Colin Paton for his mail with subject "Dumps of phone<>PC traffic".
+   It helped a lot.
+
+*  Juan Altmayer Pizzorno for his help with MBUS/FBUS and other
+   debugging.
+
+*  Gary Reuter for his help when looking for a bug in phone numbers,
+   for the set-time function debugging.
+
+*  Jiri Meloun for voice calling.
+
+*  Emilio Brambilla for SMS notification fixes, setdatetime implementation
+   and typing GSM_Default_Alphabet.
+
+*  Pawe³ Kot for EnterPIN on 6110 Series changes and other things.
+
+*  Konstantinos Agouros for gnokii-perl module.
+
+*  Czech Linux Users' group for it's CVS server which hosted our
+   development repository.
+
+*  Goran Dokic, Samuli Sorvakko and anonymous for gettext files for
+   Dutch, Finnish and German translations.
+   
+*  Marcel Holtmann for RLP FCS code, the irda code and other misc stuff.
+
+*  Chris Kemp for logo stuff and a big part of the RLP code.
+  
+*  Andrew Kozin for the model 640 support (NMT 450 network).
+*  Karel Zak for his enthusiasm (and patches) for the autoconf stuff.
+  
+*  Harri Yli-Torkko for investigative work & code on the 3810/8110. 
+
+*  Stano Meduna for misc code and build process work.
+  
+*  Alfred Nurnberger for some information on the 5160/6160 MBUS
+   protocol.  
+   
+*  Alessandro Zummo for reset and getopts code.
+
+*  Manfred Jonsson for his manufacturer and windows patch, and AT command
+   support.
+
+*  Mark Looi for Cell Broadcast code - based on protocol decoded by
+   Colin Paton.
+
+*  Sebastian Zagrodzki and Jacek Fiok for Polish .po file.
+
+*  Marcin Wi±cek for all his work and tons of patches.
+
+*  Gabriele Zappi for testing, general help and bug fixes.
+
+*  Erik Rossen for help with documentation and debian packaging support.
+
+*  Marian Jancar for patches on 7110 series.
+
+*  Tamar Bondar for updates on SMS handling on 3810 series.
+
+*  Marek Rogoziñski for help in tracing some nasty bugs.
+
+*  Pavel Machek for developing 2110 and Duncall support and many clever
+   hints.
+
+*  Bo¹tjan Müller for Slovenian translation and other things.
+
+*  Hans Motshärg for Estonian translation.
+
+*  Marcin P³awiñski for preview logos.
+
+*  Martin Lucina for any kind of help he is providing ;-)
+
+*  Gabriele Stella for Italian translation.
+
+*  Andrea Scopece for bug reports and other help.
+*  Panagiotis Astithas, Daniel O'Connor, Sheldon Hearn for help with FreeBSD.
+
+*  Artur Kubiak for help with Solaris.
+
+*  Markus Plail for work on 7110 support.
+
+*  Simon Huggins for help with 6210 and IrDA.
+
+*  Lucy for making pizza and putting up with Hugh disappearing to
+   work on this.  Rachael for new parent induced insomnia...
+
+*  Last not least: Mirka for allowing Pavel to work on gnokii
+   and for _great_ gnokii operator logos...
+
+We tried to mentioned everyone who contributed to gnokii project but we
+might to forgot someone. If anyone does feel that we missed him and his
+name should be mentioned here do not hesitate to contact us :-)
diff --git a/Docs/CodingStyle b/Docs/CodingStyle
new file mode 100644 (file)
index 0000000..179984a
--- /dev/null
@@ -0,0 +1,209 @@
+
+               Gnokii coding style
+
+               (derived from Linux kernel coding style)
+
+First off, I'd suggest printing out a copy of the GNU coding standards,
+and NOT read it.  Burn them, it's a great symbolic gesture. 
+
+Anyway, here goes:
+
+
+               Chapter 1: Indentation
+
+Tabs are 8 characters, and thus indentations are also 8 characters. 
+There are heretic movements that try to make indentations 4 (or even 2!)
+characters deep, and that is akin to trying to define the value of PI to
+be 3. 
+
+Rationale: The whole idea behind indentation is to clearly define where
+a block of control starts and ends.  Especially when you've been looking
+at your screen for 20 straight hours, you'll find it a lot easier to see
+how the indentation works if you have large indentations. 
+
+Now, some people will claim that having 8-character indentations makes
+the code move too far to the right, and makes it hard to read on a
+80-character terminal screen.  The answer to that is that if you need
+more than 3 levels of indentation, you're screwed anyway, and should fix
+your program. 
+
+In short, 8-char indents make things easier to read, and have the added
+benefit of warning you when you're nesting your functions too deep. 
+Heed that warning. 
+
+
+               Chapter 2: Placing Braces
+
+The other issue that always comes up in C styling is the placement of
+braces.  Unlike the indent size, there are few technical reasons to
+choose one placement strategy over the other, but the preferred way, as
+shown to us by the prophets Kernighan and Ritchie, is to put the opening
+brace last on the line, and put the closing brace first, thusly:
+
+       if (x is true) {
+               we do y
+       }
+
+However, there is one special case, namely functions: they have the
+opening brace at the beginning of the next line, thus:
+
+       int function(int x)
+       {
+               body of function
+       }
+
+Heretic people all over the world have claimed that this inconsistency
+is ...  well ...  inconsistent, but all right-thinking people know that
+(a) K&R are _right_ and (b) K&R are right.  Besides, functions are
+special anyway (you can't nest them in C). 
+
+Note that the closing brace is empty on a line of its own, _except_ in
+the cases where it is followed by a continuation of the same statement,
+ie a "while" in a do-statement or an "else" in an if-statement, like
+this:
+
+       do {
+               body of do-loop
+       } while (condition);
+
+and
+
+       if (x == y) {
+               ..
+       } else if (x > y) {
+               ...
+       } else {
+               ....
+       }
+                       
+Rationale: K&R. 
+
+Also, note that this brace-placement also minimizes the number of empty
+(or almost empty) lines, without any loss of readability.  Thus, as the
+supply of new-lines on your screen is not a renewable resource (think
+25-line terminal screens here), you have more empty lines to put
+comments on. 
+
+
+               Chapter 3: Naming
+
+C is a Spartan language, and so should your naming be.  Unlike Modula-2
+and Pascal programmers, C programmers do not use cute names like
+ThisVariableIsATemporaryCounter.  A C programmer would call that
+variable "tmp", which is much easier to write, and not the least more
+difficult to understand. 
+
+HOWEVER, while mixed-case names are frowned upon, descriptive names for
+global variables are a must.  To call a global function "foo" is a
+shooting offense. 
+
+GLOBAL variables (to be used only if you _really_ need them) need to
+have descriptive names, as do global functions.  If you have a function
+that counts the number of active users, you should call that
+"count_active_users()" or similar, you should _not_ call it "cntusr()". 
+
+Encoding the type of a function into the name (so-called Hungarian
+notation) is brain damaged - the compiler knows the types anyway and can
+check those, and it only confuses the programmer.  No wonder MicroSoft
+makes buggy programs. 
+
+LOCAL variable names should be short, and to the point.  If you have
+some random integer loop counter, it should probably be called "i". 
+Calling it "loop_counter" is non-productive, if there is no chance of it
+being mis-understood.  Similarly, "tmp" can be just about any type of
+variable that is used to hold a temporary value. 
+
+If you are afraid to mix up your local variable names, you have another
+problem, which is called the function-growth-hormone-imbalance syndrome. 
+See next chapter. 
+
+               
+               Chapter 4: Functions
+
+Functions should be short and sweet, and do just one thing.  They should
+fit on one or two screenfuls of text (the ISO/ANSI screen size is 80x24,
+as we all know), and do one thing and do that well. 
+
+The maximum length of a function is inversely proportional to the
+complexity and indentation level of that function.  So, if you have a
+conceptually simple function that is just one long (but simple)
+case-statement, where you have to do lots of small things for a lot of
+different cases, it's OK to have a longer function. 
+
+However, if you have a complex function, and you suspect that a
+less-than-gifted first-year high-school student might not even
+understand what the function is all about, you should adhere to the
+maximum limits all the more closely.  Use helper functions with
+descriptive names (you can ask the compiler to in-line them if you think
+it's performance-critical, and it will probably do a better job of it
+that you would have done). 
+
+Another measure of the function is the number of local variables.  They
+shouldn't exceed 5-10, or you're doing something wrong.  Re-think the
+function, and split it into smaller pieces.  A human brain can
+generally easily keep track of about 7 different things, anything more
+and it gets confused.  You know you're brilliant, but maybe you'd like
+to understand what you did 2 weeks from now. 
+
+
+               Chapter 5: Commenting
+
+Comments are good, but there is also a danger of over-commenting.  NEVER
+try to explain HOW your code works in a comment: it's much better to
+write the code so that the _working_ is obvious, and it's a waste of
+time to explain badly written code. 
+
+Generally, you want your comments to tell WHAT your code does, not HOW. 
+Also, try to avoid putting comments inside a function body: if the
+function is so complex that you need to separately comment parts of it,
+you should probably go back to chapter 4 for a while.  You can make
+small comments to note or warn about something particularly clever (or
+ugly), but try to avoid excess.  Instead, put the comments at the head
+of the function, telling people what it does, and possibly WHY it does
+it. 
+
+
+               Chapter 6: You've made a mess of it
+
+That's OK, we all do.  You've probably been told by your long-time Unix
+user helper that "GNU emacs" automatically formats the C sources for
+you, and you've noticed that yes, it does do that, but the defaults it
+uses are less than desirable (in fact, they are worse than random
+typing - a infinite number of monkeys typing into GNU emacs would never
+make a good program). 
+
+So, you can either get rid of GNU emacs, or change it to use saner
+values.  To do the latter, you can stick the following in your .emacs file:
+
+(defun linux-c-mode ()
+  "C mode with adjusted defaults for use with the Linux kernel."
+  (interactive)
+  (c-mode)
+  (c-set-style "K&R")
+  (setq c-basic-offset 8))
+
+This will define the M-x linux-c-mode command.  When hacking on a
+module, if you put the string -*- linux-c -*- somewhere on the first
+two lines, this mode will be automatically invoked. Also, you may want
+to add
+
+(setq auto-mode-alist (cons '("/usr/src/linux.*/.*\\.[ch]$" . linux-c-mode)
+                       auto-mode-alist))
+
+to your .emacs file if you want to have linux-c-mode switched on
+automagically when you edit source files under /usr/src/linux.
+
+But even if you fail in getting emacs to do sane formatting, not
+everything is lost: use "indent".
+
+Now, again, GNU indent has the same brain dead settings that GNU emacs
+has, which is why you need to give it a few command line options. 
+However, that's not too bad, because even the makers of GNU indent
+recognize the authority of K&R (the GNU people aren't evil, they are
+just severely misguided in this matter), so you just give indent the
+options "-kr -i8" (stands for "K&R, 8 character indents"). 
+
+"indent" has a lot of options, and especially when it comes to comment
+re-formatting you may want to take a look at the manual page.  But
+remember: "indent" is not a fix for bad programming. 
+
diff --git a/Docs/DataCalls-QuickStart b/Docs/DataCalls-QuickStart
new file mode 100644 (file)
index 0000000..04b16b5
--- /dev/null
@@ -0,0 +1,76 @@
+
+           QUICK-START GUIDE TO RLP DATA CALLS USING GNOKII
+
+(1) Compile and install gnokii as per instructions in the INSTALL file.
+
+e.g.
+
+   cd /usr/src
+   tar xvfz /tmp/gnokii-0.3.3pre10.tar.gz
+   cd gnokii-0.3.3pre10
+   ./configure --enable-nls --with-x
+   make
+   groupadd gnokii
+   make install
+
+(2) Create /etc/gnokiirc or ~/.gnokiirc
+
+   cp Docs/sample/gnokiirc /etc/gnokiirc
+   
+   or
+   
+   cp Docs/sample/gnokiirc ~/.gnokiirc
+
+   Edit to suit; in my case:
+
+   [global]
+   port = /dev/ttyS2
+   model = 6150
+   initlength = default
+   connection = serial
+   bindir = /usr/local/sbin/
+
+(3) Connect your phone to your PC and then run gnokiid:
+
+   # gnokiid
+
+   If successful, you should see a message saying that mgnokiidev has been
+   run to create /dev/gnokii.  If you're using a 5110/6110 series phone
+   you should hear a beep and see an "accessory connected" message on
+   the phone.  If you're using a 3810 series phone you won't see anything
+   on the phones LCD.
+
+   I run gnokiid as root; it will also work for another user who is
+   in group gnokii, as long as the serial port is accessible to that
+   user as well.  It's not recommended that you run gnokiid as root
+   permanently however - it is better to put yourself in group gnokii
+
+
+(4) Use /dev/gnokii as a modem:
+
+e.g. ppp session
+--------------- /etc/ppp/peers/demon-gnokii ---------------------
+/dev/gnokii 115200
+modem crtscts defaultroute
+connect 'chat -v ABORT BUSY ABORT ERROR ABORT "NO CARRIER" "" AT OK-AT-OK ATD02083389666 CONNECT'
+user XXXX.demon.co.uk
+noauth
+mtu 296
+debug
+----------------------------------------------------------------
+--------------- /etc/ppp/pap-secrets ---------------------------
+XXXX.demon.co.uk       demon-gnokii    <yourpassword>
+----------------------------------------------------------------
+
+    Then "pppd call demon-gnokii" should connect
+    ('tail -f /var/log/messages' to see what is happening)
+
+(5) If a call terminates you should get 'NO CARRIER' and gnokiid should
+    continue to work, but this is early code and you may find you have to
+    Ctrl-C and restart gnokiid (especially if the phone says the terminal
+    connection has been lost)
+    
+(6) As gnokiid is still under development, ensure your data call has
+    hung up by checking your phone display at the end of the call.
+
+(7) See also example files in Docs/sample directory.
diff --git a/Docs/FAQ b/Docs/FAQ
new file mode 100644 (file)
index 0000000..f140e5d
--- /dev/null
+++ b/Docs/FAQ
@@ -0,0 +1,114 @@
+GNOKII FAQ
+Pawe³ Kot, pkot@linuxnews.pl
+Hugh Blemings, hugh@blemings.org
+
+$Id$
+
+-------------------------------------------------------------------------------
+Q. What is gnokii ?
+
+A. It is a name of project. The aim of it is to develop tools and drivers
+for Nokia mobile phones. Of course, I think in this moment about really
+different tools - for example, modem drivers, console tools, etc.
+All created here software is released under the GNU
+General Public License. Please see COPYING file for more details on
+license/copying issues, the lack of warranty and where to send a postcard
+if you like gnokii :-). Anyway, our software works on many software
+(Linux, Free BSD, etc.) and hardware (Intel, etc.) platforms...
+
+-------------------------------------------------------------------------------
+Q. How do you pronounce gnokii ?
+
+A. You can pronounce gnokii as "gnooki" or "gnocki" at your option :-)
+
+-------------------------------------------------------------------------------
+Q. What models are supported ?
+
+A. Currently supported phone models are:
+         + 6110|6130|6150|6190|5110|5130|5190|3310|3210
+         + 3110|3810|8110|8110i
+         + 2110|2140|6080
+         + 640
+         + 5160|6160|6185
+         + 6210|7110
+   Support for these models is planned:
+         + Dancall 2711
+         + 8210|8250
+         + Ericsson GA628 and similiar
+
+-------------------------------------------------------------------------------
+Q. I get "Hmmm... GSM_LinkOK never went true. Quitting." message when
+   running gnokii. What's wrong ?
+
+A. Gnokii cannot connect to the phone.  Possible reasons are:
+    - wrong serial port is defined in gnokii config file,
+    - you are using the wrong cable,
+    - you are using not supported phone model,
+    - you don't have permission to write to /dev/ttySX device.
+
+-------------------------------------------------------------------------------
+Q. Does mgnokiidev need to be suid root ?
+
+A. Yes.  gnokiid needs to create a symbolic link in the /dev directory.
+   mgnokiidev is the program which does this and hence it must be suid
+   root so it can write to the directory.  mgnokiidev is executable only
+   for gnokii group members (and root) so it presents minimal security
+   problems.
+
+-------------------------------------------------------------------------------
+Q. Should any other gnokii binary be installed suid root?
+
+A. No.  There's no need for it.
+
+-------------------------------------------------------------------------------
+Q. Does gnokii support Nokia 3210/3310/6210/7110 phone ?
+
+A. Yes it does. Support is not as full as with 6110 series but it is improving
+almost every day now.
+
+-------------------------------------------------------------------------------
+Q: Can I use IrDA with 6210/7110 and gnokii ?
+
+A: Yes. Just put:
+connection = irda
+line into your config file.
+
+-------------------------------------------------------------------------------
+Q. Can I get a copy of the protocol for the <insert phone model here> ?
+
+A. We don't have any formal documentation of the protocols in use.
+   The best source we can give you now is all our knowlegde assembled
+   together by Nagy Balazs and Marcin Wiacek. You can find result of their
+   work in Docs/protocol/ subdirectory in gnokii sources. Note that not all
+   known protocol is already implemented in gnokii.
+
+   Alternatively there are some web sites that have collated some
+   information:
+   
+     Nokia 3110/3810/8110
+       http://www.tec.puv.fi/~s98114/GSM/FBUS.html  
+   
+     Nokia 5110/6110
+       http://www.gadgets.demon.co.uk/nokia61xx/protocol.html
+
+     Marcin Wiacek's pages are also useful;
+       http://www.fkn.pl/marcinw/
+
+     Nagy Balazs' pages:
+       http://www.lsc.hu/dl/
+
+-------------------------------------------------------------------------------
+Q. Does gnokii work under Sun's Solaris ?
+
+A. Generally yes, but in fact it depends on hardware -- your serial port
+must support at least 115200 baud rate. Sun Enterprise 250 machine is known
+to work with gnokii.
+
+-------------------------------------------------------------------------------
+Q. I get "Sorry, phone has not yet been converted to new style.
+   Phone.Functions == NULL!" message. What's wrong?
+
+A. Don't worry. Nothing's wrong with your phone. Gnokii internal structure is
+   changing to be more flexible. It is quite complex process so it may take
+   some time to get everything to work. You may help us to do it -- you'll get
+   more functionality sooner.
diff --git a/Docs/Makefile b/Docs/Makefile
new file mode 100644 (file)
index 0000000..d5666ac
--- /dev/null
@@ -0,0 +1,54 @@
+#
+# Makefile for the GNOKII tool suite's documentation directory
+#
+# Copyright (C) 1999 Hugh Blemings & Pavel Janík ml.
+#               2000 Karel Zak
+#
+
+TOPDIR=../
+include ${TOPDIR}/Makefile.global
+
+#
+# Documentation for gnokii (xgnokii install documentation files itself).
+#
+
+INSTALL_DOCS =         README \
+               README-3810 \
+               README-6110 \
+               CREDITS \
+               DataCalls-QuickStart \
+               README-WIN32 \
+               gettext-howto \
+               gnokii.nol \
+               gnokii-ir-howto \
+               packaging-howto \
+               sample.gnokiirc
+
+GNOKII1_MAN = "man/gnokii.1 man/todologo.1"
+GNOKII8_MAN = "man/gnokiid.8 man/mgnokiidev.8"
+XGNOKII_MAN = man/xgnokii.1x
+
+all:
+       @echo
+
+install:
+       $(INSTALL) -d $(docdir)
+       @for xxx in $(INSTALL_DOCS); do \
+           if [ -e $$xxx ]; then \
+               $(INSTALL) -m 0444 $$xxx $(docdir)/$$xxx; \
+           fi; \
+       done
+       $(INSTALL) $(GNOKII1_MAN) $(man1dir)
+       $(INSTALL) $(GNOKII8_MAN) $(man8dir)
+       if [ "x$HAVE_XGNOKII" = xyes ]; then \
+               $(INSTALL) $(XGNOKII_MAN) $(xmandir) \
+       fi
+       @echo "done"
+
+clean:
+       $(RM) *~
+
+depend dep:
+       @echo
+
+.PHONY: all install clean dep depend
diff --git a/Docs/README b/Docs/README
new file mode 100644 (file)
index 0000000..78a1087
--- /dev/null
@@ -0,0 +1,459 @@
+                              - G N O K I I -
+             (C) 1999, 2000, 2001 Hugh Blemings & Pavel Janík ml.
+                            (C) 2001 Pawe³ Kot
+                  Last update 27 Sep 2001    Version 0.3.3
+
+- Contents -                      
+
+1.0   Introduction
+2.0   About the applications
+3.0   Notes for specific model phones
+4.0   Installation from source 
+5.0   Installation of pre-built binaries
+6.0   Configuration
+7.0   Known Bugs
+8.0   Gnokii and Perl
+9.0   How to help
+10.0  gnokii by CVS
+11.0  Protocol Details
+12.0  References
+13.0  Handsets/Networks tested
+14.0  Credits
+15.0  Release Notes
+
+                          
+- 1.0 Introduction -
+
+This is version 0.3.3 of gnokii, a Linux/Unix tool suite and modem
+driver for Nokia mobile phones, released under the GPL.  Please
+see COPYING for more details on license/copying issues, the lack of
+warranty and where to send a postcard if you like gnokii :).  This
+release provides the much awaited ability to place data calls for
+all platforms except Win32.  Fax calls are not supported.
+
+gnokii supports most phones from the 3810/8110, 5110/6110, and 2110
+series, details including bugs specific to each series appear in the
+files README-3810, README-6110 and README-2110 respectively.  
+
+In the early stages of the project there were indications that
+Nokia would provide some support for the project.  Regrettably, these
+negotiations stalled over the issue of binary versus open source
+releases and the project has proceeded without official or unofficial
+assistance.
+
+We have a web site at http://gnokii.org which amongst other things
+gives information on how to join the gnokii mailing list, retrieving
+bleeding edge releases through CVS and more!
+
+If you haven't already done so, please indicate your interest in 
+the gnokii project by adding yourself to the user database
+at http://gnokii.org/users
+
+
+- 2.0 About the applications -
+  
+gnokii now consists of three main executables and a fourth "helper"
+application that is run suid root.  To get the most from gnokii it
+is worth understanding the details of them and how they interact.
+It is important to note that at present you cannot run more than
+one of gnokii, xgnokii or gnokiid at a time.
+
+The first application, gnokii, is a command line utility that was
+originally provided to assist developers and interested users in
+working with the low level API functions that were being developed.
+
+From these rather humble beginnings, it has evolved into a the main
+command line tool of the suite.  Many people now use it for
+reading/writing phone book entries, sending and receiving SMS messages
+etc.  Ultimately it is intended that it will become a utility that
+communicates with gnokiid to provide a command line interface to
+the functionality provided by the gnokiid daemon.
+
+The second application provided is xgnokii which as the name suggests
+is a X-windows based application that provides a graphical interface
+to your phone.  Amongst other things, xgnokii allows you to read and
+write phone book entries, read, write and send SMS messages, monitor
+battery and received signal strength.
+
+At present xgnokii works directly with the phone, however in the
+future it will more likely use the "side" interface of gnokiid.
+
+The third part of the suite is gnokiid.  gnokiid provides a
+virtual modem interface, /dev/gnokii that looks like a regular
+Hayes-AT compatible modem with the ETSI defined extensions for
+GSM phones.  What this means in practical terms is that you can
+treat the /dev/gnokii device like an ordinary modem and use it
+to make data calls from pppd or a terminal application like
+minicom.
+
+gnokiid is still under development, it's ultimate aim being to
+act as a "master" daemon that interfaces with your phone on one
+side and gnokii or xgnokii on the other.  This "side" code is still
+under discussion, particularly with respect to the most appropriate
+choice of communication method (IPC, TCP/IP etc.)
+
+The last application provided with the suite is mgnokiidev which is
+used by gnokiid to create on demand a symbolic link between
+/dev/gnokii and the pseudo tty used by gnokiid for the virtual
+modem interface.  It's operation is transparent under normal
+usage as gnokiid takes care of calling it when required.
+
+You should be aware of a minor security hole in mgnokiidev -
+members of the 'gnokii' group may be able to use it as a way
+to access pseudottys in use by other users on the system.  If
+you are the only user on your system, or you trust anyone that
+you put into group gnokii you have no problem.  If this isn't 
+the case contact one of the authors who will try and suggest
+a workaround.  It is expected that this problem will be fixed
+in the next release of gnokii.
+
+
+- 3.0  Notes for specific model phones -
+  
+Please see the README-3810 file for notes specific to the
+3810/8110 series, README-6110 for notes on the 5110/6110
+series and README-2110 for notes on 2110 series.
+
+
+- 4.0 Installation from source -
+
+gnokii makes use of autoconf/automake which allows you to configure
+the source tree for your system by typing 
+
+./configure
+
+You can also run configure with the --help flag to get a list of 
+available options.  There are about a dozen or so that are specific
+to gnokii.
+
+Once you've run ./configure successfully, you should be able to
+simply do a make and make install to compile and install your 
+binaries respectively.
+
+make
+
+make install
+
+With this done you've built and installed your binaries, and
+should proceed to the configuration section below.
+
+
+- 5.0 Installation of pre-built binaries -
+  
+If you downloaded gnokii as a pre-built binary you should install
+it in the conventional manner for the package type in question.
+For example if you downloaded a .rpm file you can install it by
+running the following as root.
+
+rpm -i gnokii-0.3.3-i386.rpm
+
+If you are using a Debian based system, you can use dpackage
+to do the installation. On Slackware you use installpkg or pkgtool.
+
+
+- 6.0 Configuration -
+
+Once you have installed the binaries, you should copy the
+sample/gnokiirc file from the Docs directory to your home
+directory and name it .gnokiirc  Using your favorite editor
+ensure that the settings are correct for your system, the sample
+file has details of the various options available.
+
+If you used a pre-built version of gnokii (.rpm, .deb etc) it
+may have installed a /etc/gnokiirc file.  If it has, the 
+settings in this file will be used in the absence of a
+.gnokiirc file in your home directory.
+
+Note that you will need read/write permissions on whatever
+serial port you specify in .gnokiirc.  You can now use gnokii
+and xgnokii.
+
+Review the notes specific to your model of phone in either
+README-6110 or README-3810 as appropriate.  These files
+also provide information about what functionality is
+available for each model.
+
+In order to make use of the AT emulator provided by gnokiid
+through /dev/gnokii, you must read the documentation file
+DataCalls-QuickStart.
+A simple test to confirm that your cable/IR link is working
+is to run gnokii with the --monitor flag e.g.
+
+  foobar$ gnokii --monitor
+  
+This will attempt to connect to your phone and display
+information such as signal strength, battery level  etc.
+      
+If you get an error along the lines of
+       
+  Hmmm... GSM_LinkOK never went true. Quitting.
+           
+this indicates that gnokii could not communicate with your phone
+for some reason and you will need to do some troubleshooting.
+                                       
+
+- 7.0 Known Bugs -
+
+Review the bugs section in the README for your series of phone.
+
+Note the possible security hole in mgnokiidev discussed above.
+
+
+- 8.0 Gnokii and Perl -
+
+There is a perlmodule available for gnokii. It gives access to all
+the routines that are defined in gsm-common.h from a perl-program. It
+is intended for application developers who want to use their favorite
+language in interfacing the phone data with databases, ldap-directories
+and (in the future) different calendar applications. It is written by
+Konstantin Agouros (konstantin@agouros.de) and support starts with
+revision 0.2.6-pre3 of gnokii.
+
+The homepage of this module is http://www.agouros.de/gnokii
+
+
+- 9.0 How to help -
+
+There are a number of ways you can help out.
+
+Code specific to each model is contained within fbus-3810.[ch] and
+fbus-6110.[ch] and other [fm]bus-*.[ch] files. All command handlers
+will dump information to stderr when they encounter a message they don't
+understand.  If this happens to you, try and work out what is going on.
+
+Suggestions on changes to the code are welcome, the preference is that
+they be aired on the mailing list so that a consensus can be reached
+when appropriate.  This is particularly important if you intend making
+large changes and/or submitting big patches.
+
+- 10.0 gnokii by CVS -
+
+The gnokii project has a new CVS server thanks to Andrew Tridgell
+and the Samba team.  The server's address is pserver.samba.org.  If you
+are already familiar with CVS, set the CVSROOT to 
+
+       :pserver:cvs@pserver.samba.org:/cvsroot
+
+and use the password cvs for checking out the repository with the name
+gnokii.
+
+If you are not familiar with cvs, don't worry. It's very simple.
+Just install the cvs package for your distribution and follow these steps:
+
+       1. set your environmental variable CVSROOT. If you have bash (Bourne
+           Again Shell):
+
+       export CVSROOT=:pserver:cvs@pserver.samba.org:/cvsroot
+
+          If you have different shell, use different command (e.g. setenv).
+
+
+       2. Log in to the CVS server as anonymous reader by typing
+
+       cvs login
+
+          Use 'cvs' as your password.
+
+
+       3. If you are logged in you are ready to checkout the latest sources:
+
+       cvs co gnokii
+
+If you prefer, there is a WWW interface to the CVS server at
+
+http://pserver.samba.org/cgi-bin/cvsweb/gnokii/
+
+Once you have the sources, you will need to run the following commands
+
+       autoconf
+       ./configure
+       make
+
+to build the sources.
+
+Now you are on your own - you have the current sources on your disk
+in the directory gnokii.  If you are going to make substantial changes
+and feel that they should be included into gnokii please mention it
+on the list first to avoid duplicated effort.
+       
+If you would like to receive email when updates are made to the CVS
+repository, just send Hugh and email to that effect (hugh@blemings.org)
+and you'll be added to the recipients list.
+
+Our thanks go to the Czech Linux Users Group for hosting the original
+CVS repository at cvs.linux.cz.
+
+- 11.0 Protocol Details -
+
+3810 Series
+
+The protocol used between the phone and the PC has been worked out
+by a mixture of trial and error, monitoring the data that goes between
+the 3810 and its Windows 95 software and a few snippets of information
+found on the 'net relating to older Nokia models.  Feedback from
+people who played with the first release of gnokii was invaluable.
+
+
+6110 Series
+
+The same applies for 6110 Series (but I use Windows NT 4.0 for
+monitoring). The protocol of 6110 Series is somewhat different from 3810
+Series. Perhaps the first draft of the protocol for communication between
+Nokia mobile phones and PCs was not so general to support the newest features
+of Nokia's phones.
+
+You'll find the detailed protocol description in Docs/protocol directory/
+
+- 12.0 References -
+
+The web site for this project is at;
+
+       http://gnokii.org
+
+The mailing list devoted to the gnokii project is
+
+       <gnokii@net.lut.ac.uk>
+
+You can subscribe by sending an email to
+
+       <gnokii-request@net.lut.ac.uk>
+
+with the word subscribe in the body.
+
+The serial programming how-to was valuable in cobbling together
+serial code for both monitoring and the tools themselves.  This
+is the Australian mirror, there will be one nearby to you too :)
+
+<http://www.monash.edu.au/mirror/ldp/HOWTO/Serial-Programming-HOWTO.html>
+
+
+- 13.0 Handsets/Networks tested -
+
+3810 Series
+
+3110/Sonera (Finland)
+3110/Telefonica (Spain)
+3810/Telstra (Australia)
+3810/Optus [Actually Hutchison] (Australia)
+3810/Mobile One (Singapore)
+3810/SingTel Mobile (Singapore)
+8110/Proximus (Belgium)
+8110/D2 Privat (Germany)
+8110i/MTN (South Africa)
+8110/Beeline Vympelkom (Russia)
+8110i/A1 Mobilkom (Austria)
+
+6110 Series
+
+6190/Microcel (Canada) (GSM 1900)
+6150/Viag Interkom (Germany) (GSM 1800)
+6150/Omnitel (Italy)
+6150/Beeline (Vympelkom) (Moscow, Russia)
+6150/MTS (Moscow, Russia)
+6150/NWGSM (St. Petersburg, Russia)
+6150/NetCom GSM (Norway)
+6130/IDEA Centertel (Poland) (GSM 1800)
+6110/Paegas (Czech Republic)
+6110/Panafon (Greece)
+6110/Telstra Mobilenet (Australia)
+5110/Omnitel (Italy)
+5110/Paegas (Czech Republic)
+5110/ERA GSM (Poland)
+5110/Plus GSM (Poland)
+5130/IDEA Centertel (Poland)
+5190/Microcel (Canada) (GSM 1900)
+
+3210 (some functions does not not work yet)
+
+2110 Series
+
+6160 Series
+
+640 Series
+
+
+- 14.0 Credits -
+  
+Please take a moment to read the CREDITS file which endeavors
+to recognise those who have helped so far!
+
+
+- 15.0 Release Notes -
+20010627 Version 0.3.3
+Many 6110 series updates: mainly in SMS, bitmaps and ringtones handling.
+Better localization. Integrated xlogos with xgnokii. Documentation updates.
+Probably the last 0.3 series release.
+
+20000520 Version 0.3.2
+We have data calls and autoconf.  Nuff said :)
+
+19991222 Version 0.3.1
+Interim release to bring released code into line with latest CVS
+offerings.
+
+19990824 Version 0.3.0
+6110 functionality has increased again, details of which are
+in the 6110 specific readme.  Few minor tweaks on the 3810
+side but we've just about run out of things the 3810 can do
+(data and fax calls aside of course!)
+
+This release is the first to include xgnokii - an X based
+interface to your phone and gnokiid - the makings of a
+virtual modem/AT emulator interface.  Details of these
+two apps appear above.
+
+19990519 Version 0.2.5
+Little has changed on the 3810 side - mostly adding stub functions
+to stay current with the 6110 code.  A no-brainer bug was found in 
+the SMS send routines which is now corrected - could have caused
+multiple messages to be sent.
+
+6110 support has moved ahead in leaps and bounds, SMS sending is
+now in there along with many other new function.
+
+19990328 Version 0.2.4
+Largely a synchronisation release to incorporate Pavel's numerous
+patches for 6110 support and internationalisation (such a long
+word, i18n is better :-).
+
+Added SMS delete function for 3810 series.
+
+19990305 Version 0.2.3
+Added gsm-api.c/.h and gsm-common.h as a standard interface and
+set of datatypes that can be used across multiple models.  This
+API is still a work in progress.
+
+Changed references to "handset" to "phone" to ensure a consistent
+nomenclature.
+
+Phonebook is now dumped with words int or sim for memory type
+rather than a numeric value.
+
+19990219 Version 0.2.2
+Fixed bug and added support to display bytes returned when
+the link is initialised.  If you see something other than the
+values noted in fbus.c, please let me know and include
+your phone type and software version.
+
+Added initial cut of SMS send capability.  Caveats are
+discussed above.
+
+Added two different default values for length of phonebook
+name and numbers.  These are selected according to whether
+internal or SIM memory is specified.
+
+Fixed bugs reported in 0.2.1 (errno.h and reversal of message
+center and sender fields)
+
+19990216 Version 0.2.1
+Fixed bug that caused phone book entries containing spaces to be
+mangled.  Added retrieve SMS message function.
+
+19990213 Version 0.2.0
+First version that looks more like the finished product - supports
+command line options etc. 
+
+19990126 Version 0.1.0
+Initial release of monitoring tool - first rough incarnation of
+gnokii - what will ultimately be the monitoring and programming tool.
diff --git a/Docs/README-2110 b/Docs/README-2110
new file mode 100644 (file)
index 0000000..32ab315
--- /dev/null
@@ -0,0 +1,27 @@
+-- README-2110                                     --
+-- Notes, bugs and a todo list for the 2110 series --
+
+* Notes *
+
+Code for the 2110 phones has been tested with home-built cable. It
+should work well with any sort of cable.
+
+* Known Bugs *
+
+- Nokia protocol is not followed. We use hacks instead of collision
+  detection protocol nokia suggests.
+
+- Many. Look at code, needs cleanup, etc. Contact pavel@ucw.cz
+  if you want to help.
+
+- When periodically fetching messages, it gets to state where protocol
+  breaks with "bad checksum".
+
+* To-do *
+
+- SMS sending.
+
+- Implement functionanlity such as reading internal A/D convertors and
+  ability to turn on netmon. [Not sure if all 2110s even have netmon.]
+
+
diff --git a/Docs/README-3810 b/Docs/README-3810
new file mode 100644 (file)
index 0000000..c4aaefa
--- /dev/null
@@ -0,0 +1,93 @@
+-- README-3810                                     --
+-- Notes, bugs and a todo list for the 3810 series --
+
+* Notes *
+
+Phones in the 3810 series that have been tested to date are
+3110, 3810, 8110, 8110i with either the DAU-4F cable or in
+one or two cases a home made cable.  Specific phone/
+network combinations appear in the main README file.
+
+After some digging in to the protocol it has become apparent
+that there aren't many more functions we can support, compared
+to our 5110/6110 cousins!  Remaining functionality which I would
+like to add appears in the To-do section below, suggestions
+are welcome.
+
+The code for reading/writing phonebook entries has had limited testing
+but the read code is believed to be solid.  It has been observed
+that the write code occasionally fails to write a location for
+reasons as yet unknown.  The format of the input to the write
+option is relatively unforgiving and does only very basic parsing.
+This format should be compatible with the output from the Windows
+NCDS software.
+
+Routines for retrieving SMS messages have been tested and appear
+to be bug free.  The 3810 used for testing appears to ignore the
+memory type field however. 
+
+Sending SMS is still something of "black art".  This has been tested
+on a 3810 on the Australian Optus/Hutchison network.  Most of the
+time the messages are sent as expected but occasionally they
+fail for no apparent reason.  The code is designed to re-try up
+to four times before giving up if a 0x65 0x26 response is received.
+
+Sometimes however error codes are seen 0x65 0xYY, the meaning
+of which is unknown.  Any light you can cast on this is welcome.
+It is possible that switching off the phone and switching
+on again may help but this may be just a coincidence.
+
+It should also be noted that the SMS header message sent by
+FB38_TX_Send0x23_SendSMSHeader code has no less than 10 bytes
+in it that aren't understood.  The values used are simply those
+that have been observed.  They may have to be totally different
+on your network :(  They may inadvertently route the message to
+a distant land or just not work at all.
+
+Having said all of the above about SMS sending, a number of people
+have now tested SMS sending on various networks around the world and
+in the main have found it to work correctly.
+
+* Functionality *
+The following functions/facilities are available for the 3810 series
+phones.
+
+- Retrieving and writing single or multiple phone book entries from
+  either SIM or (in the case of the 8110s) internal memory.
+  
+- Retrieving and deleting single or multiple stored SMS messages from
+  either SIM or (again in the case of 8110s) internal memory.
+  
+- Sending an SMS message to a specified recipient via a specified
+  message center number.
+  
+- By way of a message in --monitor mode, receive notification 
+  of the following occuring;
+  
+  + Incoming call being received, answered and hung up.
+  + Outgoing call being made, answered and hung up.
+  + Incoming SMS message
+  + Current phone status (connected to network, call progress etc.)
+
+- Retrieve current RF and battery level
+  
+- Retrieve IMEI, Model and Revision information
+
+* Known Bugs *
+
+fbus-3810 code cannot (yet) automatically determine the maximum
+length of the name and phone number fields in the SIM.  Similarly
+it cannot yet determine the maximum number of SIM locations. 
+These are defined in fbus-3810.h
+
+The status (read or unread, sent or unsent) of SMS messages
+retrieved from memory is not known so these flags are always
+set to read / sent.
+
+* To-do *
+Add support to automatically determine the maximum number of SIM
+entries and lengths of phonebook and name fields.
+
+Try building under Win32 and report success/failure to the list.
diff --git a/Docs/README-6110 b/Docs/README-6110
new file mode 100644 (file)
index 0000000..cb20ed3
--- /dev/null
@@ -0,0 +1,57 @@
+-- README-6110                                     --
+-- Notes, bugs and a todo list for the 6110 series --
+
+* Notes *
+
+Code for the 6110 phones has been tested with the DAU-9P MBus Cable NSE-3.
+
+Phones of 6110 Series have somewhat different protocol and that
+is the main reason for having the 3810 Series and 6110 Series.
+These phones also provide more features so hacking on it is
+greater fun.
+
+The current code allows you to enter PIN from the PC (gnokii asks
+you for the PIN, you enter it and gnokii sends it to the phone
+without touching the phone's keyboard). The code also allows you
+to monitor the status of the mobile phone - it recognizes
+network signal strength, your GSM provider network and battery
+level, the clock, date and alarm setting of your phone (if the phone
+supports it - e.g. 5110 doesn't seem to support date so the date is
+bogus on it).
+
+The newest feature is that gnokii can read your mobile phone's
+preferred SMS Center so in the future you will not need to enter
+the SMS Message Center number for SMS messages to be sent.
+Gnokii will read it automatically.
+
+There are some problems with the newest firmwares (V 05.24). It
+seems that this firmware is weird. If you have a Nokia with this
+firmware, it accepts the PIN request (displays Code Accepted message)
+but nothing is returned to the PC. The communication is only in
+one direction :-( I do not know why. If you can help with this,
+please let me know.
+
+* Known Bugs *
+
+- None, we write quality software here... :)
+
+* To-do *
+
+- writing documentation of the protocol
+
+- check out errors when reading and writing phonebook entries!!!
+
+- delete all FIXME from the sources
+
+- implement calendar notes infrastructure and --getcalendarnote, --writecalendarnote
+
+- implement function FB61_GetStatus which should return {"Waiting for PIN",
+  "Registered within the network", "Call in progress" ...}
+
+- X interface :-)
+
+- how NCDS saves names with ";" in it?
+
+- make util directory with support utilities, clean up the source tree...
+
+- Wait for ack of Auth message
diff --git a/Docs/README-WIN32 b/Docs/README-WIN32
new file mode 100644 (file)
index 0000000..66eff84
--- /dev/null
@@ -0,0 +1,144 @@
+
+README-WIN32
+============
+
+The Win32 port of Gnokii currently supports only Gnokii for the Nokia 6110 
+phone. Other phones in the 51xx and 61xx familie are likely to work also with 
+this version. The graphical X version, the AT-emulater and virtual device are 
+not ported to Win32. This might change in the future but as far as I know no 
+work is in progress. Ofcourse the effort of porting only makes sense if there is 
+a need. Do you have the need for extended Win32 functionality don't ask me but 
+let us all know on the Gnokii mailing list.
+
+Update: Allthough not finished I did explore the possibility to compile Xgnokii 
+using the Win32 port of GTK+. It seems to compile fine but right after the 
+splash screen the program crashes. This means no luck since I do not have time 
+to go into detail (aka debugging).
+
+The following sections describe what I did to compile Gnokii on Win32 using two 
+(completely) different tools. I am aware of the fact that more ways may lead to 
+the same result. I just think these two are two most logical methods. The first 
+method is the graphical Windows way of working with M$ software tools. The 
+second option is the freaky Unix command prompt way utilizing a GPL'ed software 
+development environment.
+
+       * Microsoft Visual Studio and Visual C++ 
+       * Cygwin B20 
+
+
+Compile using Microsoft Visual Studio and Visual C++
+====================================================
+
+Below a description of how I compiled Gnokii with the Microsoft Visual Studio 
+6.0 and Visual C++ 6.0. It is not the only solution but it is how I typically 
+work with Visual Studio. I also think this method relates more to the average 
+Windows programmer. It is assumed you have some basic knowledge about workspaces 
+and projects in Microsoft Visual Studio. If not, please go back to the 
+documentation as this page has no intention to learn you the details about this.
+
+0. Put the Gnokii sources somewhere.
+
+Put the Gnokii source in <path>\gnokii\gnokii src. Please do not use a version 
+in the path. This wil cause problems as you have to modify the project any time 
+you get new sources. In case you want to use CVS you need to check out the 
+sources in <path>\gnokii\gnokii src.
+
+1. First create a blank workspace called Gnokii.
+
+Visual Studio appends the the workspace name to the location, please keep this 
+default. As location <path> is assumed. The combined location should now read 
+<path>\gnokii.
+
+2. Create project 'Gnokii lib'.
+
+The project has to be of type 'win32 static library'. Add this project to the 
+current workspace, this is the one you just created. The location will now be 
+<path>\gnokii\gnokii lib. Do not check 'pre-compiled header' and 'MFC support' 
+in the window appearing next. Click finish and Ok to create the project.
+Add the files below to the project. (Menu: Project -> Add To Project -> Files 
+...) Open the directory gnokii src and select the files below, click OK to add 
+the files to the project.
+
+  cfgreader.c 
+  cfgreader.h 
+  fbus-3810.c 
+  fbus-3810.h 
+  fbus-6110-auth.c 
+  fbus-6110-auth.h 
+  fbus-6110-ringtones.c 
+  fbus-6110-ringtones.h 
+  fbus-6110.c 
+  fbus-6110.h 
+  win32\getopt.c 
+  win32\getopt.h 
+  gsm-api.c 
+  gsm-api.h 
+  gsm-common.h 
+  gsm-filetypes.c 
+  gsm-filetypes.h 
+  gsm-networks.c 
+  gsm-networks.h 
+  mbus-2110.c 
+  mbus-2110.h 
+  win32\winserial.c 
+  win32\winserial.h 
+
+To really finish the project change it's settings (Menu: Project -> Settings 
+...). On the tab C/C++ the box with 'Preprocessor definitions:' should be 
+changed to:
+WIN32,_DEBUG,_CONSOLE,_MBCS,VERSION=\"win32\",MODEL=\"6110\",PORT=\"COM1\",DEBUG
+for the Win32 Debug version. For the Win 32 Release version leave out the DEBUG. 
+This way the version is fixed to win32 and there is no easy way to automate 
+this. Please change the version after you have installed new sources.
+
+3. Project Gnokii rlp (win32 static library).
+
+Repeat step 2 but now for the following files.
+(location: <path>\gnokii\gnokii rlp).
+
+  rlp-common.c 
+  rlp-common.h 
+  rlp-crc24.c 
+  rlp-crc24.h 
+
+4. Project Gnokii.
+
+This step is simular to the previous steps but instead make this project a win32 
+console application. (location: <path>\gnokii\gnokii)
+
+  gnokii.c 
+  gnokii.h 
+
+The project has to be dependent on 'Gnokii lib' and 'Gnokii rlp'.
+
+5. The final step.
+
+The last step is to make 'Gnokii' the 'active project'. Now building Gnokii will 
+also build the library and rlp stuff because of the dependencies. The final 
+result is an executable file with the name gnokii.exe.
+
+
+Compile with Cygwin (B20)
+=========================
+
+This is in fact the easiest option. Because Cygwin implements a GNU (Unix style) 
+environment on your PC you can almost compile Gnokii 'as is' out of the box. 
+
+There are just a few steps extra needed to tweak the Makefile. Read the comments 
+in the Makefile. Actually you might want to keep the '-s' in the LDFLAGS since 
+this strips debug information and keeps your executable lean.
+
+
+Disclaimer
+==========
+
+No warranty, you are on your own. If you have questions or remarks, please let me
+know on my email address mentioned below.
+
+Author:        Feico de Boer (mailto:feico.de.boer@hetnet.nl)
+Date:  December 6th, 1999
+
+Pre-compiled Gnokii binaries are available on:
+       http://www.homepages.hetnet.nl/~fdboerhetnet/
+
+Here you will also find the latest edition of the README-WIN32.
diff --git a/Docs/README-dancall b/Docs/README-dancall
new file mode 100644 (file)
index 0000000..6f8a700
--- /dev/null
@@ -0,0 +1,20 @@
+-- README-dancall                                     --
+-- Notes, bugs and a todo list for the Dancall phones --
+
+* Notes *
+
+Dancalls are crappy telephones, commonly found in czech republic. In
+bazaar, you can find good phones on one table, bad phones on another
+table, and dancalls in nearby trashcan. Dancall for $10 is too
+expensive, in fact it is $10 more than it is worth.
+
+OTOH, dancalls try to speak something like AT-commands over serial
+cable, which made their decoding pretty easy. And they include netmon
+by default (just type *#9993#).
+
+You *need* setserial /dev/ttyS0 low_latency in order for dancall
+support to work.
+
+* Known Bugs *
+
+* To-do *
diff --git a/Docs/gettext-howto b/Docs/gettext-howto
new file mode 100644 (file)
index 0000000..c24e67d
--- /dev/null
@@ -0,0 +1,102 @@
+1. What do I need?
+
+- a reasonably recent version of GNU gettext (e.g. 0.10.35)
+  Check the version using e.g. msgfmt -V
+
+- autoconf
+
+- gnokii distribution :-)
+
+- if you have the variable LINGUAS in the environment
+  (most Red Hats have, no idea about other distributions),
+  unset it
+
+
+2. How to make gnokii.pot file?
+
+gnokii.pot file is a collection of all localizable strings
+in the gnokii package. It will be generated automagically
+and is included in the standard distribution package.
+
+If you need to regenerate it, goto "po" directory,
+remove gnokii.pot and say
+
+        make gnokii.pot
+
+
+3.1 How to start translating for a new language?
+
+First, you would like to contact the authors or write
+to the mailing list - maybe there already is someone
+working on this translation. 
+
+If you get the OK from the maintainer, there are several
+steps to do:
+
+- add the code of your language to the ALL_LINGUAS line
+  in the configure.in file
+
+  Caution: the language code may differ from the country
+  code, e.g. czech language is cs, Czech Republic is cz 
+
+- run autoconf to recreate configure script
+
+- reconfigure the package (./configure)
+
+- in the po directory, copy gnokii.pot to <country>.po
+
+- start translating
+  
+
+3.2 How to merge existing translations with the updated gnokii.pot?
+
+This is simple. Rename the old file and use msgmerge to create
+an updated one:
+
+        mv cs.po cs.po.bak
+        msgmerge -o cs.po cs.po.bak gnokii.pot
+
+
+4. How to generate a .mo file
+
+When you say make in the po directory, all existing
+translations will be generated. The suffix will be .gmo.
+
+If you want to do this manually, use the msgfmt utility, e.g.
+
+        msgfmt -o cs.mo -v cs.po 
+
+
+5. How to install the files
+
+Again, the makefile takes care of this. Simply use (as root)
+
+        make install
+
+in the po directory. If you want to do this manually (and/or
+for your language only), move the .mo file to
+/usr/share/locale/<your locale>/LC_MESSAGES/gnokii.mo 
+
+
+I'm from Czech republic, so I did (well, I did not, but if you would
+like to localize gnokii, you should :-):
+
+        cd po
+        make gnokii.pot
+        cp gnokii.pot cs.po
+        <translating messages in cs.po>
+        <checking the translations using> msgfmt -o cs.mo -v cs.po
+       make
+        make install
+
+And now:
+
+SnowWhite:/tmp/gnokii$ export LC_MESSAGES=cs_CZ
+SnowWhite:/tmp/gnokii$ ./gnokii --version
+GNOKII Version 0.3.1 Copyright (C) Hugh Blemings 1999. <hugh@linuxcare.com>
+        Kompilace: 19:09:02 Mar 13 1999 pro model 6110 na portu /dev/ttyS0 
+SnowWhite:/tmp/gnokii$ 
+
+The second line is in czech language :-) There are some problems - for
+example with "Mar" which is substitute by the C preprocessor.
+
diff --git a/Docs/gnokii-6210-7110-IrDA b/Docs/gnokii-6210-7110-IrDA
new file mode 100644 (file)
index 0000000..73b23aa
--- /dev/null
@@ -0,0 +1,87 @@
+Getting gnokii to work with a 6210 under linux
+==============================================
+
+- Compile your kernel with IrDA support for your chipset.
+
+For me on my VAIO this was:
+CONFIG_IRDA=m
+CONFIG_IRCOMM=m
+CONFIG_IRDA_OPTIONS=y
+CONFIG_IRDA_DEBUG=y
+
+CONFIG_IRTTY_SIR=m
+       Use the emulation of serial port part of your IrDA chipset or...
+CONFIG_NSC_FIR=m
+       Specify the one you have (I have a NSC 87338)
+
+- Reboot onto new kernel etc.
+- Check your serial devices don't conflict with the ioport/irq that your
+  chipset driver will try to use:
+  setserial /dev/ttySX (where X is 0 -> 3) should give you the information
+  you need.
+  If you have a device that conflicts with your ioport/irq then you will
+  need to remove the serial driver's control over it with:
+  setserial /dev/ttySX uart none port 0 irq 0
+  (where X is there relevant port mine is /dev/ttyS2)
+- I used the chipset way to get IrDA working.
+  I needed:
+  options nsc-ircc dongle_id=0x09
+  alias irda0 nsc-ircc
+  in /etc/modules.conf
+  Then just irattach irda0 -s 1 which *should* load all the modules you need
+  and start it doing irda discovery.
+  The modules I have loaded at this point are: nsc-ircc and irda.
+- Run irdadump to see that it is indeed attempting to discover something.
+  You should see messages like:
+15:24:07.380360 xid:cmd 0c57083d > ffffffff S=6 s=0 (14)
+15:24:07.470333 xid:cmd 0c57083d > ffffffff S=6 s=1 (14)
+15:24:07.560310 xid:cmd 0c57083d > ffffffff S=6 s=2 (14)
+15:24:07.650283 xid:cmd 0c57083d > ffffffff S=6 s=3 (14)
+15:24:07.740279 xid:cmd 0c57083d > ffffffff S=6 s=4 (14)
+15:24:07.830279 xid:cmd 0c57083d > ffffffff S=6 s=5 (14)
+15:24:07.920311 xid:cmd 0c57083d > ffffffff S=6 s=* langly hint=0400 [ Computer
+] (22)
+- Place the phone in front of it, enable the Infrared parts of it (Menu 90)
+  then it should change to be like:
+15:26:07.380336 xid:cmd 0c57083d > ffffffff S=6 s=0 (14)
+15:26:07.470288 xid:cmd 0c57083d > ffffffff S=6 s=1 (14)
+15:26:07.560284 xid:cmd 0c57083d > ffffffff S=6 s=2 (14)
+15:26:07.650281 xid:cmd 0c57083d > ffffffff S=6 s=3 (14)
+15:26:07.740280 xid:cmd 0c57083d > ffffffff S=6 s=4 (14)
+15:26:07.847192 xid:rsp 0c57083d < d10e0000 S=6 s=4 Nokia 6210 hint=b125 [ PnP Modem Fax Telephony IrCOMM IrOBEX ] (27)
+15:26:07.830293 xid:cmd 0c57083d > ffffffff S=6 s=5 (14)
+15:26:07.920283 xid:cmd 0c57083d > ffffffff S=6 s=* langly hint=0400 [ Computer
+] (22)
+- Now try using ircomm to talk to the phone.  Try minicom /dev/ircomm0 (you
+  may need to setup a default profile for this port as the root user with
+  minicom -s /dev/ircomm0).
+- This depends on your distribution having the right lines in modules.conf
+  for ircomm to be loaded:
+alias tty-ldisc-11 irtty
+alias char-major-160 irda0
+alias char-major-161 ircomm-tty
+  And your /dev/ircomm0 should be character device 161,0.
+  Debian testing/unstable gets this right.
+  If these don't work you may need to load ircomm and ircomm-tty manually.
+- minicom /dev/ircomm0 should now work and AT commands should function.
+- With a .gnokiirc modified as follows:
+       port = /dev/ircomm0
+       model = 6210
+       connection = irda
+  gnokii --monitor should now function.
+
+       [huggie@langly ~]$ gnokii --monitor
+       Entering monitor mode...
+       RFLevel: 100
+       Battery: 100
+       SIM: Used 5, Free 85
+       etc.
+  
+  Not all the functions for 6210 work yet seemingly.
+
+- If instead gnokii hangs then you may have a version of gnokii that still
+  has recv() in irda_open of common/devices/unixirda.c.  Just comment out
+  that line, recompile and try again.
+
+
+Simon Huggins <huggie-gnokii@earth.li>
diff --git a/Docs/gnokii-ir-howto b/Docs/gnokii-ir-howto
new file mode 100644 (file)
index 0000000..35ce339
--- /dev/null
@@ -0,0 +1,594 @@
+  Gnokii-Infrared-HowTo
+  Thomas Schneider, ts-ml@dev-thomynet.de
+  Version: 1.04, 04 Aug 1999
+
+  This document describes how to use the infrared-function of gnokii
+  ______________________________________________________________________
+
+  Table of Contents
+
+
+  1. Preamble
+
+     1.1 Copyright
+     1.2 Credits
+     1.3 Comments
+     1.4 Latest version of this document
+
+  2. Introduction
+
+  3. Installation
+
+     3.1 What Gnokii needs for communication over infrared
+     3.2 Installing and Configuring the Software
+
+  4. Mobiles and their software-version
+
+     4.1 Get software-version of your phone
+     4.2 Tested phone-software-version
+
+  5. PC-Hardware and Configuration
+
+     5.1 Laptops - who work with gnokii
+        5.1.1 DELL Inspiron 7000 A366LT
+        5.1.2 DELL Latitude LM 166
+        5.1.3 DELL Latitude D266XT w/ C/Dock
+        5.1.4 Fujitsu Lifebook B110 'Biblo' Laptop
+        5.1.5 Gericom (Network) Notebook with SIR-Infrared
+        5.1.6 IBM Thinkpad 390
+        5.1.7 IBM Thinkpad 600
+        5.1.8 Toshiba Libretto 70CT
+     5.2 Laptops - who don't work
+     5.3 Mainboards - who work with gnokii
+        5.3.1 ASUS ????
+     5.4 Mainboards - who don't work with gnokii
+     5.5 External Adapters - who work with gnokii
+     5.6 External Adapters - who don't work with gnokii
+        5.6.1 Tekram IR210B
+
+  6. Gnokii over infrared versus LINUX-IRDA
+
+  7. FAQ
+
+  8. Appendix A: COM-Port-Table
+
+
+
+  ______________________________________________________________________
+
+  1.  Preamble
+
+  1.1.  Copyright
+
+  Copyright Thomas Schneider 1999
+
+  You may redistribute and/or modify this document as long as you comply
+  with the terms of the GNU General Public Licence, version 2 or later.
+  1.2.  Credits
+
+  Special thanks go to Hugh Blemings and Pavel Janik, they are the
+  maintainer of gnokii, for the good work. Also to Colin Paton for his
+  mail with description connection establishment over infrared.
+
+
+  1.3.  Comments
+
+  Do not hesitate to tell me any thing you think will help make this
+  document better. I will examine your critics thoroughly.  Do not
+  hesitate as well to ask me any questions related to topics discussed
+  here. I will be more than happy to answer them, as they may help me
+  further improve this document. (-- Translator note: If the English is
+  ugly, well then that goes to me!--)
+
+  Note:If you have any big problems or other questions to gnokii -
+  please mail to gnokii-mailinglist and not to me! For more details:
+  http://www.gnokii.org/
+
+
+  1.4.  Latest version of this document
+
+  You can find the latest version of this document in the gnokii-
+  distribution under: http://www.gnokii.org/ or in the web on
+  http://www.dev-thomynet.de/nokworld/gnokii-infrared-howto/ .
+
+
+  2.  Introduction
+
+  Gnokii is a suite of programs what deal with some mobilephones from
+  NOKIA (http://www.nokia.com ).
+
+  This document is the guide to use gnokii over infrared.  It is not the
+  general gnokii-userguide and contains no part of protocol.
+
+
+  3.  Installation
+
+  You can get gnokii from gnokiis-homepage:
+
+  o  http://www.gnokii.org/
+
+  Gnokii-package is available in some different formats: rpm and tgz.
+  To install the tgz unpack the package with
+
+  tar xvzf filename
+
+
+  The first address after unpack is file README in dir gnokii - all
+  important parts you can read in it.
+
+
+  3.1.  What Gnokii needs for communication over infrared
+
+  Since version **FIX_ME** gnokii contains everything that you need in
+  software for infrared-communication.
+
+  On the other side you need some hardware:
+
+  1. nokia mobile phone with infrared-port.  Some phones are: 6110, 6150
+
+  2. infrared-port on your pc or notebook.  In moment only SIR works
+     with gnokii, because phones are limmited to 115200 bps.
+
+
+  3.2.  Installing and Configuring the Software
+
+  All steps needed to install and configure gnokii are described in
+  README.  Here is the short way for configure infrared with gnokii:
+
+
+  1. Copy the file sample/gnokiirc as .gnokiirc in your homedir.
+
+
+       cp Docs/sample/gnokiirc ~/.gnokiirc
+
+
+
+
+  2. Edit the ~/.gnokiirc file:
+
+
+       port       = /dev/ttyS1 # Set this to the port where you infrared-equipment is connected.
+       model      = 6150       # Set up to your model.
+       connection = infrared   # If you want connection over cable set this to serial.
+
+
+
+
+  3. Make the complete gnokii-software with make in gnokii-dir.
+
+  Thats all! If you use infrared in ~/.gnokiirc all parts of the gnokii-
+  distribution use communication over infrared! This parts are in
+  moment:
+
+  1. gnokii
+
+  2. xgnokii
+
+  3. gnokiid
+
+
+  4.  Mobiles and their software-version
+
+  In all tested situations the software from your phone is not the
+  problem if you can't connect it over infrared. The problem in such
+  situations was the pc-equipment or the pc-configuration. If you have
+  problems please look first in ``pc-section''.
+
+
+  4.1.  Get software-version of your phone
+
+  To get the software-version from your phone press in idle-mode:
+
+
+       *#0000#
+
+
+
+
+
+  4.2.  Tested phone-software-version
+
+
+  1. 6100
+
+  o  V 4.73, 22-04-98, NSE-3
+
+  o  V 5.24, 14-09-98, NSE-3
+
+
+  2. 6150
+
+  o  V 4.01, 23-09-98
+
+  o  V 4.12, 02-12-98, NSM-1
+
+  o  V 5.02, 02-02-99, NSM-1
+
+
+  5.  PC-Hardware and Configuration
+
+  This is the most cause for some problems. In moment gnokii works only
+  with SIR- equipment and not with FIR-eqipment. One reason for this is,
+  what phone-speed is limited to 115200 bps.  If you have any problems
+  with your equipment read the following parts. Adapters can be the
+  following:
+
+  o  Internal Adapters
+
+  o  Serial Adapters
+
+  o  SIR
+
+  o  FIR
+
+  o  Parallel Adapters
+
+  o  SIR
+
+  o  FIR
+
+  o  External Adapters
+
+  o  Serial Adapters
+
+  o  SIR
+
+  o  FIR
+
+  o  Parallel Adapters
+
+  o  SIR
+
+  o  FIR
+
+  Mosts laptops have an internal infrared-port. Some motherboards - ASUS
+  for example - have also a infrared-connector. On this boards you must
+  buy a little infrared-transmitter to use infrared-connections.
+
+  It is very difficult to describe all parts of configuration. On this
+  reason this HowTo list all tested laptops and other hardware in each
+  section.
+
+
+  5.1.  Laptops - who work with gnokii
+
+  Short list:
+
+  o  ``DELL Inspiron 7000 A366LT''
+
+  o  ``DELL Latitude LM 166''
+
+  o  ``DELL Latitude D266XT w/ C/Dock''
+
+  o  ``Fujitsu Lifebook B110 'Biblo' Laptop''
+
+  o  ``Gericom (Network) Notebook with SIR-Infrared''
+
+  o  ``IBM Thinkpad 390''
+
+  o  ``IBM Thinkpad 600''
+
+  o  ``Toshiba Libretto 70CT''
+
+
+  5.1.1.  DELL Inspiron 7000 A366LT
+
+
+  o  BIOS-Version  : Phoenix BIOS 4.0, Release: 6.0
+
+  o  CPU           : Mobile Pentium II, MMX, 366MHz, BIOS Rev A10 (037A)
+
+  o  Memory        : 256 MByte
+
+  o  Kernel        : 2.2.5
+
+  o  Distibution   : SuSE 6.1 (german version)
+
+  o  reported from : Thomas Schneider < ts-ml@dev-thomynet.de >
+
+  o  BIOS-Menu     : System Devices: Infrared Port: Customized: SIR,
+     2F8, IRQ3
+
+  o  Configuration : In BIOS you can configure many thinks for the
+     internal-infrared-port.  First you have some choices: SIR or FIR or
+     AUTO. All kinds are tested and works - also FIR!  For the COM-Port
+     you must set address in hex and irq. For FIR and AUTO you must also
+     DMA.  If you have problems with address/irq look in ``COM-PORT-
+     Table''.  Tested with all possibillity com-port from 1 to 4 and
+     their default irqs - no problems. DMA was set in all test to: 3.
+
+  o  Known Problems: no problems known yet
+
+  o  Note          : -
+
+
+  5.1.2.  DELL Latitude LM 166
+
+
+  o  BIOS-Version  : Phoenix NoteBIOS 4.0
+
+  o  CPU           : Mobile Pentium, MMX, 166MHz
+
+  o  Memory        : 40 MByte
+
+  o  Kernel        : 2.2.5
+
+  o  Distibution   : SuSE 6.1 (german version)
+
+  o  reported from : Thomas Schneider < ts-ml@dev-thomynet.de >
+
+  o  BIOS-Menu     : Peripherals: Integrated Peripherals: Infrared: COM2
+
+  o  Configuration : You must enable in BIOS the internal-infrared-port
+     and must setup the COM-Port on which the internal ir-adapter should
+     work. If you want what infrared use COM2 you must set it here for
+     example.
+
+  o  Known Problems: no problems known yet
+
+  o  Note          : -
+
+  5.1.3.  DELL Latitude D266XT w/ C/Dock
+
+
+  o  BIOS-Version  : ????
+
+  o  CPU           : ????
+
+  o  Memory        : ????
+
+  o  Kernel        : ????
+
+  o  Distibution   : ????
+
+  o  reported from : Stig-rjan Smelror < Stig.Orjan.Smelror@winther.net
+     > on 26. July to gnokii-ml
+
+  o  BIOS-Menu     : Peripherals: Integrated Peripherals: Infrared: COM2
+
+  o  Configuration : You must enable in BIOS the internal-infrared-port
+     and must setup the COM-Port on which the internal ir-adapter should
+     work. If you want what infrared use COM2 you must set it here for
+     example.
+
+  o  Known Problems: no problems known yet
+
+  o  Note          : -
+
+
+  5.1.4.  Fujitsu Lifebook B110 'Biblo' Laptop
+
+
+  o  BIOS-Version  : PhoenixBIOS v1.09 10/28/1998
+
+  o  CPU           : 233 MMX
+
+  o  Memory        : 32 MByte
+
+  o  Kernel        : 2.2.5-15
+
+  o  Distibution   : Redhat 6.0
+
+  o  reported from : Tuomas Salo < tuomas@optinet.fi > on 28. July to
+     gnokii-ml
+
+  o  BIOS-Menu     : ????
+
+  o  Configuration : Serial B: Mode IrDA (not FIR), 3F8 IRQ 4
+
+  o  Known Problems: no problems known yet
+
+  o  Note          : -
+
+
+  5.1.5.  Gericom (Network) Notebook with SIR-Infrared
+
+
+  o  BIOS-Version  : SystemSoft SCU For Intel 430TX/440BX
+
+  o  CPU           : 233 MMX
+
+  o  Memory        : ????
+
+  o  Kernel        : ????
+
+  o  Distibution   : ????
+
+  o  reported from : Marcel Holtmann < marcel@rvs.uni-bielefeld.de > on
+     22. July to gnokii-ml
+
+  o  BIOS-Menu     : Components/COM Ports
+
+  o  Configuration : COM A:   COM1, 3F8, IRQ4   (Standard Serial for
+     Cable or somthing else) COM B:   COM2, 2F8, IRQ3   (Bulit in IR
+     Port) Mode for COM B:   IrDA (HPSIR)
+
+  o  Known Problems: no problems known yet
+
+  o  Note          : -
+
+
+  5.1.6.  IBM Thinkpad 390
+
+
+  o  BIOS-Version  : V1.0 R01-A7
+
+  o  CPU           : 233 MMX
+
+  o  Memory        : 32 MByte
+
+  o  Kernel        : 2.2.5-15
+
+  o  Distibution   : Redhat 6.0
+
+  o  reported from : Mario Viljac < Mario.Viljac@znanost.hr > on 22.
+     July to gnokii-ml
+
+  o  BIOS-Menu     : Config->Advanced Setup
+
+  o  Configuration : IR-port must be enabled, set also COM-Address and
+     IRQ. If you have problems with address/irq look in ``COM-PORT-
+     Table''.
+
+  o  Known Problems: no problems known yet
+
+  o  Note          : -
+
+
+  5.1.7.  IBM Thinkpad 600
+
+
+  o  BIOS-Version  : ????
+
+  o  CPU           : ????
+
+  o  Memory        : ????
+
+  o  Kernel        : ????
+
+  o  Distibution   : ????
+
+  o  reported from : Tuomas Mttnen < maattanen@iki.fi > on 06. July to
+     gnokii-ml
+
+  o  BIOS-Menu     : ????
+
+  o  Configuration : ????
+
+  o  Known Problems: no problems known yet
+
+  o  Note          : -
+
+
+  5.1.8.  Toshiba Libretto 70CT
+
+
+  o  BIOS-Version  : 6.20
+
+  o  CPU           : Intel P120MMX
+
+  o  Memory        : 32 MByte
+
+  o  Kernel        : 2.0.36
+
+  o  Distibution   : Red Hat 5.2
+
+  o  reported from : Patrick Robbe < probbe@mail.dotcom.fr > on 30. July
+     to gnokii-ml
+
+  o  BIOS-Menu     : ????
+
+  o  Configuration : Infrared port (COM2) 2F8h / IRQ3, mode IrDA
+     compatible.
+
+  o  Known Problems: no problems known yet
+
+  o  Note          : -
+
+
+  5.2.  Laptops - who don't work
+
+  No mails for this part in moment.
+
+
+  5.3.  Mainboards - who work with gnokii
+
+  Short list:
+
+  o  ``ASUS ????''
+
+
+  5.3.1.  ASUS ????
+
+
+  o  BIOS-Version  : ????
+
+  o  CPU           : ????
+
+  o  Memory        : ????
+
+  o  Kernel        : ????
+
+  o  Distibution   : ????
+
+  o  reported from : mail from Victor L. Belov on 06. July to gnokii-ml
+
+  o  BIOS-Menu     : ????
+
+  o  Configuration : ????
+
+  o  Known Problems: no problems known yet
+
+  o  Note          : -
+
+
+  5.4.  Mainboards - who don't work with gnokii
+
+  No mails for this part in moment.
+
+  5.5.  External Adapters - who work with gnokii
+
+  No mails for this part in moment.
+
+
+  5.6.  External Adapters - who don't work with gnokii
+
+  Short list:
+
+  o  ``Tekram IR210B''
+
+
+  5.6.1.  Tekram IR210B
+
+
+  o  BIOS-Version  : ????
+
+  o  CPU           : ????
+
+  o  Memory        : ????
+
+  o  Kernel        : ????
+
+  o  Distibution   : ????
+
+  o  reported from : Any mails from some peopel.
+
+  o  BIOS-Menu     : ????
+
+  o  Configuration : ????
+
+  o  Known Problems: don't work
+
+  o  Note          : selfpowered over com-port Must be tested - mail to
+     gnokii-ml.
+
+
+  6.  Gnokii over infrared versus LINUX-IRDA
+
+  You can not use gnokii over infrared and linux-irda at the same time.
+  If you want use gnokiis ir-communication you must put linux-irda off.
+  If you want use linux-irda you must close all gnokii-applications what
+  use the infrared-port in moment.
+
+
+  7.  FAQ
+
+  No FAQ is available in moment.
+
+
+  8.  Appendix A: COM-Port-Table
+
+  Here you find the default addresses and irq's from com1 up to com4 -
+  or ttyS0 up to ttyS3.
+
+
+  o  ttyS0: 3F8, IRQ: 4, COM1
+
+  o  ttyS1: 2F8, IRQ: 3, COM2
+
+  o  ttyS2: 3E8, IRQ: 4, COM3
+
+  o  ttyS3: 2E8, IRQ: 3, COM4
+
+
+
diff --git a/Docs/gnokii.nol b/Docs/gnokii.nol
new file mode 100755 (executable)
index 0000000..9885942
Binary files /dev/null and b/Docs/gnokii.nol differ
diff --git a/Docs/gnokii.xpm b/Docs/gnokii.xpm
new file mode 100644 (file)
index 0000000..8d4a307
--- /dev/null
@@ -0,0 +1,303 @@
+/* XPM */
+static char * gnokii_xpm[] = {
+"49 44 256 2",
+"      c None",
+".     c #020203",
+"+     c #4C5A4C",
+"@     c #C2CAD2",
+"#     c #8EA68C",
+"$     c #627661",
+"%     c #0D1210",
+"&     c #1A2622",
+"*     c #6E8A6E",
+"=     c #EAEAEB",
+"-     c #223A36",
+";     c #A3A68E",
+">     c #9A9A8A",
+",     c #A2B2A4",
+"'     c #DADEDC",
+")     c #524E4E",
+"!     c #869E85",
+"~     c #8E7666",
+"{     c #506250",
+"]     c #324A46",
+"^     c #8F9080",
+"/     c #6A626A",
+"(     c #ADBAAE",
+"_     c #7B7A7B",
+":     c #7E967E",
+"<     c #667E66",
+"[     c #CED2D0",
+"}     c #566653",
+"|     c #444244",
+"1     c #293E38",
+"2     c #878A77",
+"3     c #566A56",
+"4     c #424A44",
+"5     c #121A16",
+"6     c #B8C1BA",
+"7     c #122E2A",
+"8     c #0E0E10",
+"9     c #26628E",
+"0     c #D6DADA",
+"a     c #5A82A6",
+"b     c #768E76",
+"c     c #373E3A",
+"d     c #566E86",
+"e     c #757773",
+"f     c #E2E2E2",
+"g     c #545C59",
+"h     c #6A826A",
+"i     c #EEEEEF",
+"j     c #5E725E",
+"k     c #9EAE9C",
+"l     c #252D2B",
+"m     c #9AB2C2",
+"n     c #A2A692",
+"o     c #8F9A8F",
+"p     c #425650",
+"q     c #7E856D",
+"r     c #A6B4A6",
+"s     c #7C8A98",
+"t     c #BEC6BE",
+"u     c #AEAEAE",
+"v     c #1A322E",
+"w     c #666C68",
+"x     c #36423C",
+"y     c #6D6E6E",
+"z     c #494A49",
+"A     c #869EB2",
+"B     c #373A38",
+"C     c #828676",
+"D     c #262223",
+"E     c #4E6682",
+"F     c #828A72",
+"G     c #626A68",
+"H     c #0E0909",
+"I     c #151E1A",
+"J     c #9AA28A",
+"K     c #6E786E",
+"L     c #666666",
+"M     c #8E8E8E",
+"N     c #929E8A",
+"O     c #92A6B6",
+"P     c #828F7D",
+"Q     c #29342F",
+"R     c #DAD6DA",
+"S     c #464F46",
+"T     c #8E968A",
+"U     c #AEB5B0",
+"V     c #827A72",
+"W     c #768574",
+"X     c #B2BABA",
+"Y     c #7A8E77",
+"Z     c #3E423E",
+"`     c #D2D6D5",
+" .    c #5A655E",
+"..    c #82967F",
+"+.    c #F1F2F2",
+"@.    c #6E866E",
+"#.    c #9AAA99",
+"$.    c #BEBEBF",
+"%.    c #466686",
+"&.    c #7A927B",
+"*.    c #7C7F7B",
+"=.    c #767E7A",
+"-.    c #C9CECC",
+";.    c #1E2626",
+">.    c #787068",
+",.    c #9EA28E",
+"'.    c #0A0507",
+").    c #687671",
+"!.    c #8AA288",
+"~.    c #829A81",
+"{.    c #E2E6E3",
+"].    c #364644",
+"^.    c #667A65",
+"/.    c #5A6E5A",
+"(.    c #263A36",
+"_.    c #171615",
+":.    c #898A8A",
+"<.    c #5B5A5A",
+"[.    c #555654",
+"}.    c #A6A6A6",
+"|.    c #1C1E1C",
+"1.    c #7C867E",
+"2.    c #B2B2B2",
+"3.    c #BEC2C0",
+"4.    c #362E32",
+"5.    c #2E3631",
+"6.    c #889692",
+"7.    c #32463E",
+"8.    c #364A46",
+"9.    c #9EA292",
+"0.    c #060708",
+"a.    c #313E3C",
+"b.    c #667267",
+"c.    c #96A795",
+"d.    c #4D4E4C",
+"e.    c #889284",
+"f.    c #9A9A99",
+"g.    c #828671",
+"h.    c #3E524E",
+"i.    c #727E76",
+"j.    c #2E3A33",
+"k.    c #B6B6B6",
+"l.    c #A9AAAA",
+"m.    c #5A6A6A",
+"n.    c #646C70",
+"o.    c #3A4A45",
+"p.    c #D2D2D2",
+"q.    c #8C827E",
+"r.    c #929292",
+"s.    c #F5F6F6",
+"t.    c #768A86",
+"u.    c #7E8E84",
+"v.    c #6E826C",
+"w.    c #BABABA",
+"x.    c #9E9E8E",
+"y.    c #A2B2BE",
+"z.    c #616262",
+"A.    c #728A72",
+"B.    c #2E2D2D",
+"C.    c #526262",
+"D.    c #9AA296",
+"E.    c #8A9E87",
+"F.    c #828A84",
+"G.    c #5B5656",
+"H.    c #4C524E",
+"I.    c #060204",
+"J.    c #7E927B",
+"K.    c #3A463E",
+"L.    c #4D564D",
+"M.    c #4B5A57",
+"N.    c #828282",
+"O.    c #869A83",
+"P.    c #323A34",
+"Q.    c #728278",
+"R.    c #6A6662",
+"S.    c #454645",
+"T.    c #32423E",
+"U.    c #969697",
+"V.    c #625C56",
+"W.    c #526652",
+"X.    c #6A869A",
+"Y.    c #6A726D",
+"Z.    c #5E6A5E",
+"`.    c #5A5054",
+" +    c #CECECE",
+".+    c #8A8E7E",
+"++    c #768A73",
+"@+    c #92AA90",
+"#+    c #6A7E69",
+"$+    c #C2C6C4",
+"%+    c #6A7A68",
+"&+    c #726A6A",
+"*+    c #272627",
+"=+    c #707270",
+"-+    c #728670",
+";+    c #1A221E",
+">+    c #858685",
+",+    c #9EA2A4",
+"'+    c #D6D6D6",
+")+    c #DEDEDE",
+"!+    c #191A19",
+"~+    c #8EA28A",
+"{+    c #9E9E9E",
+"]+    c #4E4E56",
+"^+    c #DEDADE",
+"/+    c #5E5E5E",
+"(+    c #56665E",
+"_+    c #667272",
+":+    c #859686",
+"<+    c #CACACA",
+"[+    c #121616",
+"}+    c #3E3E3E",
+"|+    c #AAB2BE",
+"1+    c #6E7E6F",
+"2+    c #92A690",
+"3+    c #4E4A4B",
+"4+    c #323631",
+"5+    c #5A6A62",
+"6+    c #E6E6E6",
+"7+    c #929A98",
+"8+    c #7C8E7E",
+"9+    c #C2C2C2",
+"0+    c #3E4E4E",
+"a+    c #424E44",
+"b+    c #888E8B",
+"c+    c #8E9296",
+"d+    c #9EAEAA",
+"e+    c #3A423D",
+"f+    c #3E3A3E",
+"g+    c #5F6661",
+"h+    c #3A4643",
+"i+    c #16221F",
+"j+    c #627266",
+"k+    c #5A6A5B",
+"l+    c #E6E2E6",
+"m+    c #969A8A",
+"n+    c #1E221E",
+"o+    c #C6C6C7",
+"p+    c #0A0A0A",
+"q+    c #525252",
+"r+    c #3E4640",
+"s+    c #4A4647",
+"t+    c #121211",
+"u+    c #4E5E4E",
+"v+    c #4A5E56",
+"w+    c #465252",
+"x+    c #2C3A3A",
+"y+    c #6B6A6A",
+"z+    c #323A3A",
+"A+    c #3E4A42",
+"B+    c #A2A2A2",
+"C+    c #93A196",
+"D+    c #7A7276",
+"E+    c #626E65",
+"F+    c #DADADA",
+"G+    c #BEBABE",
+"      J V d.q.) x z G.q+S.e+L.Y.1.o l.k.$+ +p.'+p.p.<+$.u {+b+=.G a+x+a.a.a.K.d.h+7 T.- H         ",
+"    v+,.>.G.~ 4 x 4 e 7+3.f = 6+l+f )+)+)+' F+R F+R '+'+p.'+^+^+' )+` 2.e._+A+S | v x+(.H         ",
+"    M.; &+S V.K 2.= i i i = = 6+l+0 R '+p.9+9+<+'+9+o+'+9+'+0 ' ' ^+' F+)+' F+3.b+7.x+(.H         ",
+"    h.; R.e.i F+F+= = = 6+6+6+f {.R.c >+) y q+3+/+:.<.}.B.B+'+F+^+F+^+)+F+)+^+= 6+9+].1 8         ",
+"    p ,.z.X i '+F+= 6+= 6+f {.)+)+y f.;.q+/+z q+_ y+<.H./+z  +F+F+F+)+)+^+)+F+6+= <+0+a.8         ",
+"    v+; <.$+= '+F+6+6+6+6+6+f f )+R ^+p.p.<+<+ +'+-. + +p. +'+'+F+F+F+F+' F+F+f i  +h.T.8         ",
+"    u+,.G.[ 6+p.'+6+{.{.f l+)+^+'+[ <+o+9+$.w.X G+k.G+G+9+9+$+-.` '+F+F+)+F+F+f i p.M.7.%         ",
+"    C.,.+ F+f  +w.P 1.K b. .u+v++ + u+{ { 3 j j+$ ^.^.< %+^.1+1+Q.%+1+W u.e.T [ +.p.C.T.8         ",
+"    (+x.H.)+' <+E+{ W.W.3 3 3 /./.j j+$ $ $ ^.< #+#+#+h v.@.-+-+A.++Y b &.8+J.( s.p. .].t+        ",
+"    } x.p {.R $. .{ W.W.W.} 3 3 k+/.j $ $ $ ^.$ < #+#+#+h v.@.A.++A.++Y Y &.J.U +.F+G ].[+D       ",
+"     .> S {.p.$.{ { { W.3 3 /././.j /.j $ $ ^.^.< #+#+#+h -+-+-+++b ++b J.&.J.r s.0 E+7.[+q+      ",
+"    3 > h.=  +2.} { W.} 3 3 3 /././.$ $ $ $ $ ^.^.#+#+v.v.-+A.Y ++J.J...J.J.: , s.F+Y.h+[+3+      ",
+"    k+> A+6+<+u W.W.W.W.3 /././.j j j $ ^.^.%+%+#+h h -+v.-+-+++E+:+-+F.: : ..k +.F+Y.].5 s+      ",
+"    E+^ 4 {.$+}.W.3 3 3 k+/./.j j j $ $ $ ^.< #+#+#+H.!++ ++++b j+l e.;.1+....#.s.^+=+].!+|       ",
+"    E+^ a+{.9+{+{ 3 3 } P.A+r+S g+r+r+P.+ v.u+c r+^.a+I.) Z.S Q.j+_.F n+K ....#.s.^+=+x !+|       ",
+"    j+^ K.l+6 {+W.3 3 P.. D . 8 d.. |.I.'.g+. *+'.p+) . z _.I.e.y I 1.Q *...O.c.s.' y 7.!+|       ",
+"    j ^ o.f $.f.W.k+k+B . >.8 8 3+. H._.0.q+I.w !+. `.. I . 4+N C.|.).l *...~.C++.F+).].I |       ",
+"    b..+r+F+6 U.W././.B . R.8 8 z . [.[+0.q+. R._.I.[.. . . _ : T.l /+% :+! O.2++.0 y 7.i+S.      ",
+"    Q.^ r+p.$.c+W././.B . n.8 8 3+. G.t+'.3+I.y+_.. G.I.. . g+:+n+}+]+8 D.! O.c.i '+n.].i+S.      ",
+"    t..+K.<+3.M W././.4+. _+8 8 3+. [._.'.3+I.y+!+I.<.I.. . *+E.8 S.c _.c.! ! C+s.` m.8.|.|       ",
+"    ++2 r+3.$+:.3 j j B . e 8 8 z . [._.'.]+I.y+_.. G.. e+0.. 1.% }+a.t+D.!.! C+s.[ C.8.& s+      ",
+"    J.2 4 U <+b+W./.j B I.*+0.8 3+. [._.0./ . D 0.0.V.. H.4+. B I l H.'.o E.!.c.+.<+M.].i+z       ",
+"    A.F r+#.-.:./.j $ K 4 s+. 8 Q.w F.Y.K T E+s+q+>+1.w F.Q.&+D+*._+O. .#.~+!.#.s.<+h.].i+3+      ",
+"    &.>+e+7+p.:./.j j  .p+p+I.B P v.v.v.Q.-+++++++Y Y Y J.....~.~.! O.E.!.!.!.d+s.9+o.].i+d.      ",
+"    : C ].s ` >+b.j $ %+%+Y.K P h h v.@.-+-+++Y Y Y J.&.J.......~.! ! !.!.~+~+r +.w.x 8.i+]+      ",
+"    8+g.Z i.^+N.^.j j ^.^.%+%+#+v.v.@.-+-+A.++b b &.&.: : : O.! O.! E.E.~+# # U +.2.x+h+& )       ",
+"    ..g.Z E+)+N.%+/./.$ ^.< #+#+v.v.-+A.++++++Y Y J.J.......~.! E.!.~+~+~+# @+6 i }.a.8.& q+      ",
+"    ..g.e++ )+>+%+j $ $ ^.#+#+v.v.-+@.-+++b b Y &.&.J.: ..~.O.E.! E.!.!.# # 2+t = U.a.h+;+q+      ",
+"    ..g.T.o.)+:.K j $ ^.^.#+#+v.v.-+-+-+++++b Y Y &.J.: ..~.~.O.! ! !.~+# @+@+ +)+N.T.7.;+[.      ",
+"    6.q a.c  +r.y j $ $ < #+h #+v.v.-+A.A.Y ++Y &.J.&.: ~...O.! ! E.E.!.# # @+' ' ).T.o.& G.      ",
+"    e.q a.x 2.}.w j $ $ < #+h v.-+@.-+++A.Y b Y &.J.: : ~.~.O.! !.!.~+~+# 2+# {.[ g 7.].& <.      ",
+"    ..q P.T.{+$._ i.v.Q.v.v.v.@.@.A.++A.++b &.J.J.: ....O.! ! E.! ~+# 2+c.@+, s.$+h.].h+n+<.      ",
+"    o g.P.P.1. +w. +{.= {.' ` -.6 ( #.C+T ..J.J.J...E.~+#.U 6 $+-.-.[ p.p.'++.= X ] ].].n+D       ",
+"      q j.P.G R $.p.f f )+F+[ <+ +<+p.'+' )+f {.6+6+6+6+f ' p.[ <+ +<+<+ +'+F+-.u 1 e+K.n+        ",
+"      q 5.4+A+R w.X G+$.3.o+<+-.p.p.p. +p. +p.'+R ^+)+f )+F+'+`  + +-.<+o+<+o+o+M j.h+].n+        ",
+"      g.j.j.P.G+k.u 2.u u u u l.u l.2.k.$.o+o+ + +<+<+9+$.$.9+9+o+o+o+o+o+9+$.k.g+x K.K.;+        ",
+"      F j.P.a.B.| <.z._ {+}.l.}.l.}.}.}.}.l.l.x.{+l.2.w.$.$.$.$.$.$.$.l._ q+S.Q [+x e+e+n+        ",
+"      q 5.5.4+l -.)+<+B+e /+>+B+B+B+B+B+}.f.<.e e q+U.2.k.w.$.$.G+r.q+/ r.G+o+{+;.x x o.;+        ",
+"      q 5.5.5.P.l.[ |+p.R p.M <.M {+B+{+{+<. + + +9+[.x.k.k.w.}.[.N.$+<+o+u r.e B.x x K.;+        ",
+"      q j.j.Q B w '+O a @ F+'+<+R.U.{+B+z.w.9+2.l.G+2.<.u w.k.L o+ + +$+s d ,+| T.].e+e+;+        ",
+"      g.5.P.5.5.B $+p.m 9 A 9+3.{+:.f.U._ 2.B+4.;.U.u _ M 2.u B+3.3.k.%.E ,+:.l e+].h+r+;+        ",
+"      q 4+Q Q 4+a._ ` -.d+X.l.{+_ f.{+L u }.U.C M :.B+2.z.2.w.r.B+l.l.s }.{+]+a.].h+h+K.|.        ",
+"      F P.5.5.4+5.c G+o+w.B+b+y {+f.f.y $.2.u l.u 2.u k.y+}.k.G+>+:.f.{+{+>+Q Z h+h+h+h+;+        ",
+"      F B Q 4+4+4+j.z.9+2.>+*.{+r.r.M :.$.o+<+ + +<+o+9+r.N.u k.w.c+*.f.U.| x e+e+r+r+A+I         "};
diff --git a/Docs/logos.txt b/Docs/logos.txt
new file mode 100644 (file)
index 0000000..04a8c5a
--- /dev/null
@@ -0,0 +1,54 @@
+$Id$
+
+------------------------[ Tutorial about logos files ]-------------------------
+nol (operator logo) and ngg (caller logo) files include the header as few
+first bytes of their content. That is 16 or 20 bytes structure. Header
+contains type of the file, netcode, width and height of icon. But width and
+height of icon is very important. Why? Because in NOKIA 7110, width = 72 bytes
+and height = 28 lines, and in other NOKIA phones witdh = 72 bytes, but height
+is only 14 lines ( thx for that info to Gabriele Zappi ).
+
+[1] NOL header
+
+            1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
+            N O L 0 1 0 x 0 1  0  x  0  x  0  1  0  1  0  x  0
+
+    so :
+       first 3 bytes that's type of file
+       next 3 bytes (4,5,6) - nothing important
+        next 4 (7,8,9,10) - network code :
+              sprintf(netcode, "%d %02d", header[7] + 256 * header[8], header[9]);
+               <<<<<<<<<<< this line is from common/gsm-common.h >>>>>>>>>>>
+        
+        next 3 (11,12,13) - very important bytes :
+                           width of icon = header[11]
+                           height of icon = header[13]
+        another 7 bytes (14,15,..,20) - I think that's nothing special
+    
+[2] NGG header
+
+              1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
+              N G G 0 1 0 x 0 x  0  1  0  1  0  x  0
+
+       so :
+          first 3 bytes that's type of file 
+          next 3 bytes (4,5,6) - nothing important
+           next 3 (7,8,9) - very important
+                           width of icon = header[7]
+                           height of icon = header[9]
+           another 7 bytes (10,11,..,16) - nothing special 
+
+[3] icon's bytes
+
+To show icon on terminal you can read (height) times 72 bytes line and print
+these lines in the terminal:
+
+             ...
+             for (i = 0; i < heigth; i++) {
+                 read(buffer, 1, width, fd);
+                 printf("%s\n", buffer);
+             }
+            ...         
+
+------------------[ 2001 crayola <--> szuflandia corporation ]-----------------
+                  crayola@polbox.com klepacz@juni.gliwice.pl
diff --git a/Docs/man/gnokii.1 b/Docs/man/gnokii.1
new file mode 100644 (file)
index 0000000..1c9e4a2
--- /dev/null
@@ -0,0 +1,196 @@
+.TH "gnokii" "1" "July 15, 2000" "" "Gnokii"
+.SH "NAME"
+gnokii \- modem/fax driver for Nokia mobile phones
+.SH "SYNOPSIS"
+.B gnokii
+\fIOPTION\fR [\fIARGUMENT\fR]...
+.SH "DESCRIPTION"
+.PP 
+.B gnokii
+is a Linux/Unix tool suite and (eventually) modem/fax driver for Nokia mobile phones, released under the GPL.
+.PP 
+.B gnokii
+supports most phones from the 3810/8110 and 5110/6110 series, details including bugs specific to each series appear in the files Docs/README\-3810 and Docs/README\-6110 respectively.  
+
+.SH "OPTIONS"
+The options that are recognized by
+.B gnokii
+can be divided into several different groups.
+
+.SS GENERAL
+.TP 
+.BR "\-\-help"
+display usage information.
+.TP 
+.BR "\-\-version"
+displays version and copyright information.
+.TP 
+.BR "\-\-monitor"
+continually updates phone status to stderr.
+
+.SS DIALING
+.TP 
+.BR "\-\-getspeeddial \fIn\fP"
+reads speed dial from the specified location.
+.TP 
+.BR "\-\-setspeeddial \fInumber\fP \fImemory_type\fP \fIlocation\fP"
+specify speed dial.
+.TP 
+.BR "\-\-dialvoice \fInumber\fP"
+initiate voice call.
+.TP 
+.BR "\-\-senddtmf \fIstring\fP"
+send DTMF sequence.
+
+.SS PHONE SETTINGS
+.TP 
+.BR "\-\-getdisplaystatus"
+shows what icons are displayed.
+.TP 
+.BR "\-\-displayoutput"
+show texts displayed in phone's screen.
+.TP 
+.BR "\-\-getprofile [\fInumber\fP]"
+show settings for selected(all) profile(s).
+.TP 
+.BR "\-\-netmonitor {\fIreset\fP|\fIoff\fP|\fIfield\fP|\fIdevel\fP|\fInext\fP|\fInr\fP}"
+setting/querying netmonitor mode.
+.TP 
+.BR "\-\-reset [\fIsoft\fP|\fIhard\fP]"
+resets the phone.
+
+.SS CALENDAR
+.TP 
+.BR "\-\-getcalendarnote \fIstart\fP [\fIsend\fP] [\-v]"
+get the note with numbers from \fIstart\fR to \fIend\fR from calendar.
+.PP 
+[\-v] \- output in vCalendar 1.0 format
+.TP 
+.BR "\-\-writecalendarnote"
+write the note to calendar.
+.TP 
+.BR "\-\-deletecalendarnote \fIstart\fP [\fIend\fP]"
+delete the note with numbers from \fIstart\fR to \fIend\fR from calendar.
+
+.SS SMS
+.TP 
+.BR "\-\-getsms \fImemory_type\fR \fIstart\fP [\fIend\fP] [\-f \fIfile\fP] [\-d]"
+gets SMS messages from specified \fImemory type\fR starting at entry [\fIstart\fR] and ending at [\fIend\fR].
+If [\fIend\fR] is not specified only one location \- [\fIstart\fR] is read.
+If [\-f \fIfile\fR] is used entries are saved in \fIfile\fR.
+Otherwise they are dumped to stdout.
+If [\-d] switch is used, a message is deleted after reading.
+.TP 
+.BR "\-\-deletesms \fImemory_type\fP \fIstart\fP [\fIend\fP]"
+deletes SMS messages from specified \fImemory type\fR starting at entry [\fIstart\fR] and ending at [\fIend\fR].
+If [\fIend\fI] is not specified only one location \- [\fIstart\fR] is read.
+.TP 
+.BR "\-\-sendsms \fIdestination\fP [\-\-smsc \fImessage_center_number\fP | \-\-smscno \fImessage_center_index\fP] [\-r] [\-C \fIn\fP] [\-v \fIn\fP] [\-\-long \fIn\fP]"
+sends an SMS message to \fIdestination\fR via \fImessage_center_number\fR or SMSC number taken from phone memory from address \fImessage_center_index\fR.
+If this argument is ommited SMSC number is taken from phone memory from location 1.
+Message text is taken from STDIN.
+This function has had limited testing and may not work at all on your network.
+Meaning of other optional parameters:
+.PP 
+[\-r] \- request for delivery report
+.PP 
+[\-C \fIn\fR] \- Class Message \fIn\fR, where \fIn\fR can be 0..3
+.PP 
+[\-v \fIn\fR] \- validity in minutes
+.PP 
+[\-\-long \fIn\fR] \- send no more then \fIn\fR characters, default is 160
+.TP 
+.BR "\-\-savesms [\-m] [\-l \fIn\fP] [\-i]"
+saves SMS messages to the Outbox. Messages are read from STDIN. You can specify the following optional arguments:
+.PP 
+[\-m] \- mark the message as sent
+[\-l \fIn\fR] \- save the message at location \fIn\fR on the SIM card
+[\-i] \- ask before overwriting specified location
+.TP 
+.BR "\-\-getsmsc \fInumber\fP"
+show the SMSC number from location \fInumber\fR.
+
+.SS LOGOS
+.TP 
+.BR "\-\-sendlogo {\fIcaller\fP|\fIop\fP} \fIdestination\fP \fIlogofile\fP [\fInetwork_code\fP]"
+send the \fIlogofile\fR to \fIdestination\fR as operator or CLI logo.
+.TP 
+.BR "\-\-setlogo \fIlogofile\fP [\fInetwork_code\fP]"
+.TP 
+.BR "\-\-setlogo \fIlogofile\fP [\fIcaller_group_number\fP] [\fIgroup_name\fP]"
+.TP 
+.BR "\-\-setlogo \fItext\fP [\fIstartup_text\fP]"
+.TP 
+.BR "\-\-setlogo \fIdealer\fP [\fIdealer_startup_text\fP]"
+set caller, startup or operator logo.
+.TP 
+.BR "\-\-getlogo \fIlogofile\fP {\fIcaller\fP|\fIop\fP|\fIstartup\fP} [\fIcaller_group_number\fP]"
+get caller, startup or operator logo.
+
+.SS RINGTONES
+.TP 
+.BR "\-\-sendringtone \fIdestination\fI \fIrtttlfile\fP"
+send the \fIrtttlfile\fR to \fIdestination\fR as ringtone.
+.TP 
+.BR "\-\-setringtone \fIrtttlfile\fP"
+set the \fIrtttlfile\fR as ringtone (on 6110).
+
+.SS PHONEBOOK
+.TP 
+.BR "\-\-getmemory \fImemory_type\fP \fIstart\fP [\fIend\fP]"
+reads specificed memory location from phone.
+If [\fIend\fR] is not specified only one location \- [\fIstart\fR] is read.
+Valid \fImemory types\fR are: ME, SM, FD, ON, EN, DC, RC, MC, LD.
+.TP 
+.BR "\-\-writephonebook [\-i]"
+reads data from stdin and writes to phonebook
+When \-i option is used, refuses to overwrite existing entries.
+Uses the same format as provided by the output of the getphonebook command.
+
+.SS DATE, TIME AND ALARM
+.TP 
+.BR "\-\-setdatetime [\fIYYY\fP [\fIMM\fP [\fIDD\fP [\fIHH\fP [\fIMM\fP]]]]]"
+set the date and the time of the phone.
+.TP 
+.BR "\-\-getdatetime"
+shows current date and time in the phone.
+.TP 
+.BR "\-\-setalarm \fIHH\fP \fIMM\fP"
+set the alarm of the phone.
+.TP 
+.BR "\-\-getalarm"
+shows current alarm.
+
+.SS SECURITY
+.TP 
+.BR "\-\-identify"
+get IMEI, model and revision.
+.TP 
+.BR "\-\-entersecuritycode {\fIPIN\fP|\fIPIN2\fP|\fIPUK\fP|\fIPUK2\fP}"
+asks for the code and sends it to the phone.
+.TP 
+.BR "\-\-getsecuritycodestatus"
+show if a security code is needed.
+
+.SH "DIAGNOSTICS"
+Various error messages are printed to standard error.  The exit code
+is 0 for correct functioning.  Errors which appear to be caused by
+invalid or abused command line parameters cause an exit code of 2, and
+other errors cause an exit code of 1.
+
+.SH "BUGS"
+.PP 
+We write quality software here ;)
+
+.SH "AUTHOR"
+Hugh Blemings <hugh@blemings.org> and Pavel Janik ml. <Pavel.Janik@suse.cz>
+
+Manual page written by Dag Wieers <dag@mind.be> and Pawel Kot <pkot@linuxnews.pl>
+
+See also Docs/CREDITS from Gnokii sources.
+
+.SH "COPYING"
+This program is distributed under the GNU Public License.
+
+.SH "SEE ALSO"
+gnokiid, xgnokii
diff --git a/Docs/man/gnokiid.8 b/Docs/man/gnokiid.8
new file mode 100644 (file)
index 0000000..99c2b90
--- /dev/null
@@ -0,0 +1,63 @@
+.TH "gnokiid" "8" "May 27, 2001" "" "Gnokii"
+.SH "NAME"
+gnokiid \- create a virtual modem for Nokia portable phones
+.SH "SYNOPSIS"
+.B gnokiid
+
+.B gnokiid
+[\fB\-\-help\fR|\fB\-\-version\fR|\fB\-\-debug\fR]
+
+.SH "DESCRIPTION"
+.PP 
+.B gnokiid
+is a tool from the Gnokii tool suite used to create a virtual modem device with a Nokia portable telephone.  The virtual modem device is usually accessed via a symbolic link called /dev/gnokii (created automatically by \fBmgnokiidev\fR(8)).
+
+.PP 
+After 
+.B gnokiid
+has created the virtual modem, it can be accessed like any other Hayes\-compatible modem by such programs as the terminal program \fBminicom\fR(1) or the PPP daemon \fBpppd\fR(8) to make standard data connections to remote computers.
+
+.PP 
+The full range of portable telephone functions (SMS messaging, phone book, operator logos, etc.) are accessed using the command\-line program \fBgnokii\fR(1) or the graphical interface program \fBxgnokii\fR(1x).
+
+
+.PP 
+Gnokii
+is a Linux/Unix tool suite and (eventually) modem/fax driver for Nokia mobile phones, released under the GPL.
+.PP 
+Gnokii
+supports most phones from the 3810/8110 and 5110/6110 series, details including bugs specific to each series appear in the files Docs/README\-3810 and Docs/README\-6110 respectively.  
+
+.SH "OPTIONS"
+.PP 
+If called without any options, \fBgnokiid\fR will set up a virtual modem device using the settings in /etc/gnokiirc or in the user's ~/.gnokiirc (if it exists).  Otherwise,
+
+.TP 
+\fB\-\-help\fR
+print out a short usage message
+.TP 
+\fB\-\-version\fR
+print out version, copyright, phone, and serial device info
+.TP 
+\fB\-\-debug\fR
+uses STDIN/STDOUT for a virtual modem
+.SH "DIAGNOSTICS"
+Various error messages are printed to STDERR.
+.SH "BUGS"
+.PP 
+Hmmm...
+
+
+.SH "AUTHOR"
+Hugh Blemings <hugh@blemings.org> and Pavel Janik ml. <Pavel.Janik@suse.cz> are the authors of the
+Gnokii
+tool suite.
+
+This manual page was written by Erik Rossen <rossen@freesurf.ch>.
+
+See also Docs/CREDITS from the Gnokii sources.
+.SH "COPYING"
+This program is distributed under the GNU Public License.
+
+.SH "SEE ALSO"
+gnokii, xgnokii, mgnokiidev
diff --git a/Docs/man/mgnokiidev.8 b/Docs/man/mgnokiidev.8
new file mode 100644 (file)
index 0000000..03db0aa
--- /dev/null
@@ -0,0 +1,49 @@
+.TH "mgnokiidev" "8" "May 27, 2001" "" "Gnokii"
+.SH "NAME"
+mgnokiidev \- links /dev/gnokii to a virtual modem
+.SH "SYNOPSIS"
+.B mgnokiidev \fI/dev/pts/?\fR
+
+.SH "DESCRIPTION"
+.PP 
+.B mgnokiidev
+is a tool from the Gnokii tool suite used to create the link /dev/gnokii that points to a pseudo\-tty (/dev/pts/?).
+
+.PP 
+It is called after 
+.B gnokiid
+has created a virtual modem that is attached to the pty.  It's operation is transparent under normal usage as gnokiid takes care of calling it when required.
+
+.PP 
+Since
+.B mgnokiidev
+must modifiy files in /dev, it must be either run as root or SUID root.  The latter is the preferred method.  Normally the 
+.B mgnokiidev
+binary is chmod 4750 and owned by root.gnokii.
+
+.PP 
+Gnokii
+is a Linux/Unix tool suite and (eventually) modem/fax driver for Nokia mobile phones, released under the GPL.
+.PP 
+Gnokii
+supports most phones from the 3810/8110 and 5110/6110 series, details including bugs specific to each series appear in the files Docs/README\-3810 and Docs/README\-6110 respectively.  
+
+.SH "DIAGNOSTICS"
+Various error messages are printed to STDERR.
+.SH "BUGS"
+.PP 
+None reported.
+
+
+.SH "AUTHOR"
+Hugh Blemings <hugh@blemings.org> and Pavel Janik ml. <Pavel.Janik@suse.cz> are the authors of the
+Gnokii tool suite.
+
+This manual page was written by Erik Rossen <rossen@freesurf.ch>.
+
+See also Docs/CREDITS from the Gnokii sources.
+.SH "COPYING"
+This program is distributed under the GNU Public License.
+
+.SH "SEE ALSO"
+gnokiid, gnokii
diff --git a/Docs/man/todologo.1 b/Docs/man/todologo.1
new file mode 100644 (file)
index 0000000..db9b969
--- /dev/null
@@ -0,0 +1,56 @@
+.TH todologo 8 "January 3, 2001" "GNOKII Tools" "GNOKII Tools"
+
+.SH NAME
+todologo \- Create operator logo that contains 3 lines of text
+
+.SH SYNOPSIS
+.B todologo
+\fI<text of line> - <text of line 2> - <text of line 3>\fR
+
+.SH DESCRIPTION
+The 
+.B todologo
+program is used to create three lines of text 
+that fits to the standard Nokia operator logo space (i.e. 72x14 
+pixel space). This is achieved by using a proportional tiny font 
+which most elements have size of 3x4 pixels (some are thinner). 
+
+The name comes from an original intention that this program is
+used to create todo entries to one's mobile phone screen so that
+those are always visible and thus in user's memory. But the tool
+can just be used to print arbitrary text to the space provided
+by an operator logo.
+
+The hand-crafted font currently supports the following characters:
+abcdefghijklmnopqrstuvwxyz and 0123456789
+
+.SH OUTPUT
+The standard `.nol' formatted operator logo is printed to 
+standard output. The header information of that output is taken 
+from \fIgnokii.nol\fR that is distributed with
+.B GNOKII
+-- so you most probably need to give your operator code when uploading it to your
+mobile phone. Use 
+.B gnokii
+or
+.B xgnokii
+to do the uploading.
+
+.SH EXAMPLES
+First example writes some todo entries to todo.nol:
+.IP
+\fCtodologo pick up kids - call wife - order chinese >todo.nol\fP
+.LP
+This last example writes some wisdom to the stdout:
+.IP
+\fCtodologo Never underestimate - the power of the dark - side of the force\fP
+.LP
+.SH AUTHOR
+Tomi Ollila <Tomi.Ollila@iki.fi>
+
+.SH COPYING
+This program is distributed under the GNU Public License.
+
+.SH SEE ALSO
+.BR gnokii(1), xgnokii(1x)
+
diff --git a/Docs/man/xgnokii.1x b/Docs/man/xgnokii.1x
new file mode 100644 (file)
index 0000000..16f1037
--- /dev/null
@@ -0,0 +1,39 @@
+.TH "xgnokii" "1x" "May 27, 2001" "" "Gnokii"
+.SH "NAME"
+xgnokii \- graphical interface of the Gnokii telephone toolkit
+.SH "SYNOPSIS"
+.B xgnokii
+
+.SH "DESCRIPTION"
+.PP 
+.B xgnokii
+is a fancy graphical interface for Gnokii.  It has on\-line help and plenty of doo\-dads.
+.PP 
+Gnokii
+is a Linux/Unix tool suite and (eventually) modem/fax driver for Nokia mobile phones, released under the GPL.
+.PP 
+Gnokii
+supports most phones from the 3810/8110 and 5110/6110 series, details including bugs specific to each series appear in the files Docs/README\-3810 and Docs/README\-6110 respectively.  
+
+.SH "DIAGNOSTICS"
+Various error messages are printed to STDERR.
+.SH "BUGS"
+.PP 
+This man page is too short.  The only excuse is that the online help in xgnokii is extensive.  Click and see for yourself.
+
+.SH "AUTHOR"
+Jan Derfinak is the author of the
+.B xgnokii
+.
+
+Hugh Blemings <hugh@blemings.org> and Pavel Janik ml. <Pavel.Janik@suse.cz> are the authors of the
+Gnokii tool suite.
+
+This manual page was written by Erik Rossen <rossen@freesurf.ch>.
+
+See also Docs/CREDITS from the Gnokii sources.
+.SH "COPYING"
+This program is distributed under the GNU Public License.
+
+.SH "SEE ALSO"
+gnokii, gnokiid
diff --git a/Docs/packaging-howto b/Docs/packaging-howto
new file mode 100644 (file)
index 0000000..04725f2
--- /dev/null
@@ -0,0 +1,142 @@
+$Id$
+
+The gnokii Packaging HOWTO
+
+
+PURPOSE
+
+Read this document if you want to build gnokii binary packages for your
+system or repackage gnokii for a system that is not yet supported.
+
+
+GENERAL POLICY
+
+For more install/compilation information see the INSTALL file.
+
+Makefiles support 'make install prefix=<your_directory>' for package
+building.  For example, in .spec:
+
+       ./configure --prefix=/usr
+
+       make install prefix=$RPM_BUILD_ROOT/usr
+
+(You do not need to create any directories - just 'make && make install'.)
+
+For installation procedures use 'make install' or 'make install prefix=',
+and verify that all outputs from the procedure are correct.
+
+Please, DO NOT make any corrections using your package-specific build
+system (for example, using 'cp' in packaging scripts like .spec).
+Installation is a job for Makefiles.  Writing different installation
+procedures for different packaging systems is the road to hell...
+
+The only exception to the above rule is documentation. 'make install'
+does not install documentation - one should use each distributions'
+packaging routines for this job.  If you want to install docs via a
+Makefile use 'make install-docs'.
+
+
+SYSTEM-SPECIFIC INFORMATION
+
+Debian:
+
+1) Add new lines to Debian/changelog and set the correct version number
+in this file.
+
+2) Check the following files:
+
+       rules, menu, docs, *.manpages
+
+3) Since gnokii's debian directory is in the subdirectory 'packaging'
+which is totally non-standard for the Debian package building system,
+you must first 'cd' to the top gnokii directory and type:
+
+       ln -s packaging/Debian debian
+
+4) In the top gnokii directory type:
+
+       fakeroot debian/rules binary
+
+5) And then clean up:
+
+       fakeroot debian/rules clean
+
+       rm debian
+
+The .deb packages will appear in the directory ABOVE the top gnokii
+directory.
+
+Alternatively, if you want to build everything including sources (.tar.gz,
+.dsc, and .changes files), go to the top gnokii directory and type:
+
+       dpkg-buildpackage -rfakeroot
+
+instead of invoking "debian/rules binary" directly.  Note that you will
+need the fakeroot package installed, but are there any Debian developers
+that don't have that one installed?  Nope.  If you want to sign the
+packages with your own PGP key, you will need to make a new first entry
+in the Debian changelog.
+
+
+RedHat:
+
+Just type:
+
+       rpm -ta gnokii-$VERSION.tar.gz
+
+where $VERSION is the version of the gnokii distribution that you are
+packaging.
+
+
+Slackware:
+
+1) Create a gnokii directory and put the gnokii tarball there:
+
+       mkdir gnokii
+
+       cp gnokii-X.Y.Z.tar.gz gnokii
+
+2) Extract SlackBuild from the tarball and copy it into the gnokii
+directory, eg.:
+
+       tar xzf gnokii-X.Y.Z.tar.gz
+
+       cp gnokii-X.Y.Z/packaging/Slackware/SlackBuild gnokii
+
+3) Run SlackBuild:
+
+       cd gnokii
+
+       chmod 755 ./SlackBuild ; ./SlackBuild
+
+4) A Slackware package is now located in /tmp/gnokii.tgz.
+
+
+FreeBSD:
+
+
+Win32:
+
+
+DOCUMENT HISTORY
+
+2001-06-18
+
+Erik Rossen <rossen@freesurf.ch>
+
+* fixing Debian notes to mention 'fakeroot' and 'dpkg-buildpackage'
+
+2001-04-20
+
+Erik Rossen <rossen@freesurf.ch>
+
+* fixing English grammar and spelling errors, but no change of information
+
+* changing to a flatter format for easier editing: sections separated
+by double spacing and only system commands indented with a tab
+
+* file is always treated with GNU 'fmt' with no options
+
+Pawel Kot <pkot@linuxnews.pl>
+
+* Slackware build instructions added
diff --git a/Docs/protocol/nk2110.txt b/Docs/protocol/nk2110.txt
new file mode 100644 (file)
index 0000000..b7137eb
--- /dev/null
@@ -0,0 +1,200 @@
+$Id$
+
+Assembled by
+       Marcin Wiacek (Marcin-Wiacek@TOPNET.PL)
+        Pavel Machek <pavel@ucw.cz>
+       ... 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 2110 and derivatives:
+Correct format is MBUS version 1 (see nokia.txt for protocol details):
+
+ List:
+
+0x12:
+    r Display               {+?, ?, ?, x, y, string, 0x00 }
+0x19:
+    s Enable display status {+0x03, 0x03, 0x00, 0x00, 0x01}
+0x1f: phonebook
+    s Get mem location      {+0x1a, memtype, location }
+                            where: memtype:
+                                      0x03: telephone phonebook
+                                      0x04: SIM phonebook
+    s Set mem location      {+0x1b, memtype, location, name, 0x00, number, 0x00 }
+                            where: memtype: see 0x1f/0x1a
+0x2f:
+    r Status                {+?, byte1, byte2, byte3, byte4, byte5}
+                            where byte1 (for N2110):
+                                     bit 0 - "d",      bit 2 - "b",        bit 4 - "a",          bit 6 - "lights"
+                                  byte2 (for N2110):
+                                     bit 0 - "service",bit 2 - "scroll_up",bit 4 - "scroll_down",bit 6 - "ABC"
+                                  byte3 (for N2110):
+                                     bit 0 - "2.>",    bit 2 - "1.>",      bit 4 - "roam",       bit 6 - "handset"
+                                  byte4 (for N2110):
+                                     bit 0 - "vmail",  bit 2 - "envelope", bit 4 - "battery bar",bit 6 - "3.>"
+                                  byte5 (for N2110):
+                                                                           bit 4 - "fieldbar",   bit 6 - "ring"
+0x37: SMS
+    r SendSMS/GetSMS/DelSMS/{+0x10, code, frame }
+      SetSMSC/GetSMSC       where:
+                              code: 0x08 - SMS send OK
+                                    frame:
+                                      0x1d 0x24 0x25 (latter 2 in order)
+                                    0x0b - SMS get OK
+                                    Frame:
+                                      memtype, location, msgstatus, unknown2, unknown2, 0x00, date(7 bytes) in BCD, msglen, msgtext, recipient,
+                                      0x00, smsc, 0x00
+                                      Where:
+                                        memtype, msglen, msgtext: see 0x38/0x1002 frame
+                                        msgstatus, unknown2, unknown3: see 0x37/0x21
+                                      Note: This frame used only, when FrameLength < 0x75
+                                    0x0d - SMS delete OK
+                                    0x0f - SMS delete failed
+                                    0x10 - SMS send failed
+                                    frame:
+                                      0x1d 0x24 0x25 (latter 2 in order)
+                                    0x10 - SMS get failed
+                                    0x1a - SMS message received (by phone).
+                                    Frame:
+                                      memtype, location, unknown1, unknown2, 0x00, date(7 bytes) in BCD, msglen, sender,
+                                      0x00, smsc, 0x00
+                                      where
+                                        memtype: see 0x38/0x1002 frame
+                                        unknown1: 0x00 0x00 0x04 more messages?
+                                          true:0x00
+                                          false:0x04
+                                        unknown2: 0x20 0x20 0x20
+                                    0x1c - SMSC set OK
+                                    0x1d - SMSC set failed
+                                    0x2f - SMSC get OK
+                                    Frame:
+                                      0x00, 0x00, unknown1, unknown2, 0x00, 0x00, unknown3, unknown4, unknown5,
+                                      0x00, smsc, 0x00
+                                      Where:
+                                        unknown1: 0x05 0x08
+                                          last memtype location used or number of messages??
+                                        unknown2: 0x02 0x00
+                                          unread messages indicator??
+                                        unknown3: 0xff
+                                          validity period?
+                                        unknown4: accept reply costs?
+                                                    no:0x01
+                                                    yes:0x02
+                                        unknown5: status reports
+                                                    no:0x01
+                                                    yes:0x02
+                                    0x30 - SMSC get failed
+    r Get SMS part 2        {+0x20, ... continuation of 0x37/0x21 frame }
+    r Get SMS part 1        {+0x21, 0x0b, memtype, location, msgstatus, unknown2, unknown3, 0x00, date(7 bytes) in BCD, msglen, msgtext}
+                            where memtype: see 0x38/0x1002
+                                  msgstatus:
+                                    message status
+                                      not sent: 0x07
+                                      sent: 0x05
+                                      unread: 0x03:
+                                      read: 0x01
+                                  unknown2: more messages ?
+                                    true: 0x00
+                                    false: 0x04
+                                  this flag seems to be set by locust when a message (e.g. tv) is split across more than 1 sms
+                                  unknown3: 0x20
+0x38: SMS
+    s Send SMS message      {+0x1000, unknown, pr, 0x00, validity, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+                                    msglen, msgtxt, recipient, 0x00, smsc, 0x00}
+                            where: unknown:   0x11 or 0x91 parameter mask?
+                                              (data, data coding, protocol but 0x80?)
+                                   pr:        0x00 or protocol id + 0x20
+                                   validity:  0x0b:  1 hour
+                                              0x47:  6 hours
+                                              0xa7: 24 hours
+                                              0xad:  1 week
+                                              0xff: max.time
+                                   msglen:    SMS message length
+                                   msgtext:   message string (unterminated)
+                                   recipient: receipient`s number string
+                                   smsc:      SMS centre number string
+                            Note: Used when FrameLength < 0x75
+    s Get SMS message       {+0x1002, memtype, location }
+                            where: memtype:
+                                     0x01: default
+                                     0x02: SIM
+                                     0x03: phone
+    s Delete SMS message    {+0x1003, memtype, location }
+                            where: memtype: see 0x38/0x1002
+    r ???                   {+0x1006...}
+    s Reserve SMS           {+0x1012, <do you want normal reserve or only new messages indication?>}
+    s Enable cell broadcast {+0x1013, ...}
+    s Kill reserve SMS      {+0x1014}
+    r New msg from network ?{+0x1015...}
+    r Reserve SMS OK        {+0x1016}
+    r Reserve SMS err       {+0x1017, error}
+    s Set SMSC              {+0x101b, unknown, pr, 0x00, validity, reply, report, 0x00, smsc, 0x00, 0x00 }
+                            where:
+                               pr:        protocol id + 0x20 
+                               validity:  0x0b:  1 hour
+                                          0x47:  6 hours
+                                          0xa7: 24 hours
+                                          0xad:  1 week
+                                          0xff: max.time
+                               reply:     reply via same SMSC:
+                                            0x01: no
+                                            0x02: yes
+                               report:    delivery reports:
+                                            0x01: no
+                                            0x02: yes
+                               unknown:   0x74, 0x75 parameter mask ??
+    s Get SMSC              {+0x101e, 0x09, 0xe9} 
+    s Send SMS message 2part{+0x20, continuation of 0x38/0x21 frame }
+                            Note: Used when FrameLength >= 0x75
+                                  Format the same to 0x38/0x1000 frame
+    s Send SMS message 1part{+0x21, unknown, pr, 0x00, validity, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+                             msglen, msgtext }
+                            Note: Used when FrameLength >= 0x75
+                                  Format the same to 0x38/0x1000 frame
+0xc9: phonebook
+    r Get mem location      {+0a1a, memtype, location, code, {name}, 0x00, {number}, 0x00 }
+                            where: memtype: see 0x1f/0x1a
+                                   code:
+                                     0x64 - invalid location
+                                     0x65 - device failure
+                                     0x66 - device not available
+                                     0x67 - entry locked
+                                     0x68 - communication error
+                                     0x69 - update impossible
+                                     0x6a - number too long
+                                     0x6b - name too long
+                                     0x82 - store ok
+                                     0x83 - read ok
+                                     0x84 - number overflow
+                                   name: name string, only present on "read ok" code
+                                   number: phone number string, only present on "read ok" code
+    r Set mem location      {+0a1a, memtype, location, code }
+                            where: memtype: see 0x1f/0x1a
+                                   code: see "Get mem location"
+0xe9:
+    s Start connection      {+0x00, 0x02, 0x1c, 0x00, 0x1c}
+                            Note: this is message with SrcDEV = 0xf8 !
+                            ACK frame for it is (DestDEV = 0xf8 too) 0x1c, 0x01, 0x1c
+                            According to http://www.gadgets.demon.co.uk/nokia21xx/protocol.html
+    s Start connection      {+0x01, 0x01, 0x0f, 0x01, 0x0f}
+                            Note: frame according to mbus-2110.c from gnokii (Normal DestDEV)
+0xcd:
+    r Enable display status {+0x01}
+0xe5:
+    s Phone ID request      {+0x11, 0x03, 0x00}
+    s Get RF level          {+0x84, 0x02, 0x00}
+    s Get battery level     {+0x85, 0x02, 0x00}
+    s Press key             {+press: ?; release: ?; 0x00, 0x01, keycode } 
+                            where keycode:
+0xe6:
+    r Phone ID request      {+0x11, 0x03, "revision", "\n", "revision_date", "\n", "model"}
+    r Get RF level          {+0x84, 0x02, 0x00, ?, value}
+    r Get battery level     {+0x85, 0x02, 0x00, ?, value}
diff --git a/Docs/protocol/nk3110.txt b/Docs/protocol/nk3110.txt
new file mode 100644 (file)
index 0000000..5c1d19b
--- /dev/null
@@ -0,0 +1,231 @@
+$Id$
+
+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
diff --git a/Docs/protocol/nk6110.txt b/Docs/protocol/nk6110.txt
new file mode 100644 (file)
index 0000000..a4f35ed
--- /dev/null
@@ -0,0 +1,664 @@
+$Id$
+
+Assembled by
+       Balazs Nagy (js@lsc.hu)
+       Alfred R. Nurnberger <arnu@flosys.com>
+       Hugh Blemings <Hugh.Blemings@vsb.com.au>
+       Mike Bradley <mike@trumpington.st>
+       Odinokov Serge <serge@takas.lt>
+       Pavel Janik <Pavel@Janik.cz>
+       Pawel Kot <pkot@linuxnews.pl>
+       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/PCN Nokia 6110 and derivatives (Nokia 6130, 6150, 6190, 5110, 5130, 5150,
+5190, 3210, 3310)
+Correct format is FBUS version 2/Direct IRDA/MBUS version 2
+(see nokia.txt for protocol details):
+
+ List:
+
+0x00: Monitoring values
+    r monitoring value      {+0x01, 0x01, block... }
+      where block: 0x5e, 0x05, 0x7a(?), 0xd0(?), 0x85(?), 0x02, percentHI, percentLO
+                      Battery percent level
+                   0x5e, 0x0c, 0x52(?), 0x4b(?), 0x6f(?), 0x02, voltageHI, voltageLO
+                      Battery standby voltage
+                   ............
+0x01: Call Information
+    s Make call             { 0x0001, "number", type, block }
+                              where type:
+                                      0x01 - data call
+                                      0x05 - voice call
+                                   block:
+                                     data call (non digital lines):
+                                       0x02,0x01,0x05,0x81,0x01,0x00,0x00,0x01,0x02,0x0a,
+                                       0x07,0xa2,0x88,0x81,0x21,0x15,0x63,0xa8,0x00,0x00
+                                     data call (digital lines):
+                                       0x02,0x01,0x05,0x81,0x01,0x00,0x00,0x01,0x02,0x0a,
+                                       0x07,0xa1,0x88,0x89,0x21,0x15,0x63,0xa0,0x00,0x06,
+                                       0x88,0x90,0x21,0x48,0x40,0xbb
+                                      voice call:
+                                       0x01, 0x01, 0x05, 0x81/0x00, sendnum, 0x00, 0x00, 0x01
+                                        where:
+                                          sendnum (own number sending):
+                                              0x01: preset (depends on network)
+                                              0x03: on
+                                              0x02: off
+    r Call going msg        { 0x0002 }
+    r Call in progress      { 0x0003, seqnr }
+    r Remote end hang up    { 0x0004, seqnr, ?, error (like in netmon in 39) }
+    r incoming call alert   { 0x0005, seqnr, numlen, "number", namelen, "name" }
+    s Answer call part 2    { 0x0006, seqnr, 0x00 }
+    r answered call         { 0x0007, seqnr }
+    s Hang up               { 0x0008, seqnr, 0x85 }
+    r terminated call       { 0x0009, seqnr }
+    r call msg              { 0x000a, seqnr }
+    r Send DTMF/voice call  { 0x0040}
+    s Answer call part 1    { 0x0042,0x05,0x01,0x07,0xa2,0x88,0x81,0x21,0x15,0x63,0xa8,0x00,0x00,
+                                    0x07,0xa3,0xb8,0x81,0x20,0x15,0x63,0x80 }
+    s Sent after issuing    { 0x0042,0x05,0x81,0x07,0xa1,0x88,0x89,0x21,0x15,0x63,0xa0,0x00,0x06,
+      data call                             0x88,0x90,0x21,0x48,0x40,0xbb,0x07,0xa3,
+      (digital lines)                0xb8,0x81,0x20,0x15,0x63,0x80 }
+    s Sent after issuing    { 0x0042,0x05,0x01,0x07,0xa2,0xc8,0x81,0x21,0x15,0x63,0xa8,0x00,0x00,
+      data call                             0x07,0xa3,0xb8,0x81,0x20,0x15,0x63,0x80,
+      (non digital lines)            0x01,0x60 }
+    s Send DTMF             { 0x0050, length, {ascii codes for DTMF}, 0x01 }
+    
+    Note:
+      to make data call (non digital lines):
+        1.send "Make call" for non digital lines
+       2.send "Sent after issuing data call (non digital lines)"
+      to make data call (digital lines):
+        1.send "Answer call part 1"
+       2.send "Sent after issuing data call (digital lines)"
+        3.send "Make call" for digital lines
+      to answer call:
+        1.send "Answer call part 1"
+        2.send "Answer call part 2"
+
+0x02: SMS handling
+    s Send SMS message      { 0x0001, 0x02, 0x00 (SEND REQUEST), ... }
+    r Message sent          { 0x0002 }
+    r Send failed           { 0x0003, ?, ?, error (like in netmon in 65)}    
+    s Get SMS message       { 0x0007, 0x02, location, 0x01, 0x64 }
+    s Initiate connection   { 0x000d, 0x00, 0x00, 0x02 }
+    r Initiate ACK          { 0x000e, 0x01 }
+    r SMS message received  { 0x0010, ...... } (whole message)
+    s Set CellBroadcast     { 0x0020, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01 }
+                                      for enable cell broadcast ?
+                                      0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
+                                      for disable cell broadcast ?
+    r Set CellBroadcast OK  { 0x0021, 0x01 }
+    r Read CellBroadcast    { 0x0023, ?, ?, ?, channel, ?, message... } ?
+    s Set SMS center        { 0x0030, 0x64, priority, checksum? ,0?, format,
+                                      validity, {DefaultRecipient no.}[12], 
+                                      {SMScenter no.}[12], {SMSC name}, 0x00}
+                              where tel.no.[12]: {len, type, {number(BCD)}}
+                                    type: 0x81: normal
+                                          0x91: + (international)
+                                          0xd0: alphanumeric
+                                    format: 0x00: text
+                                            0x22: fax
+                                            0x24: voice
+                                            0x25: ERMES
+                                            0x26: paging
+                                            0x31: X.400
+                                            0x32: email
+                                    validity: 0x0b:  1 hour
+                                              0x47:  6 hours
+                                              0xa7: 24 hours
+                                              0xa9: 72 hours
+                                              0xad:  1 week
+                                              0xff: max.time
+    r Set SMS center OK     { 0x0031 }
+    r Set SMS center error  { 0x0032, reason }
+    s Get SMS center        { 0x0033, 0x64, priority }
+    r SMS center received   { 0x0034, priority, checksum?, format, 0x00?,
+                                      validity, {DefaultRecipient no.}[12],
+                                      {SMScenter no.}[12], {SMSC name}, 0x00}
+                                      tel.no[12]: {len, type, {number(BCD)}} 
+                              where priority, checksum, type, validity,
+                                    tel.no.[12]: see 0x02/0x0030
+    r SMS center error recv { 0x0035, reason }
+0x03: Phonebook functions
+    s Get mem location      { 0x0001, memtype, location, 0 }
+                            where memory:
+                                     0x01: telephone and SIM phonebook (in one)
+                                     0x02: telephone phonebook
+                                     0x03: SIM phonebook
+                                     0x04: SIM fixdialling-phonebook (?)
+                                     0x05: Own numbers
+                                     0x07: Dialled numbers
+                                     0x08: Missed calls
+                                     0x09: Received calls
+                                     0x0b: voice mailbox (location not important)
+    r mem location recvd    { 0x0002, 0x00,namelen,"name",numlen,"number",groupID, 0x01?, yearLO, yearHI, month, day, hour, minute, sec. }
+                            Note: in 3310 all entries have null name ("feature" of bug ?)
+    r mem loc error recvd   { 0x0003, errtype }
+                            where errtype: 0x7d: invalid memory type
+    s Set mem location      { 0x0004, memtype,location,namelen,"Name",numlen,"number",groupID }
+    r mem set OK            { 0x0005 }
+    r mem set error         { 0x0006, errtype }
+                            where errtype: 0x7d: name is too long
+    s Mem status request    { 0x0007, memtype }
+    r Mem status recvd      { 0x0008, memtype, free, used }
+    r Mem status error recv { 0x0009, errtype }
+                            where errtype: 0x6f: mem status error
+                                           0x7d: invalid memory type
+                                           0x8d: waiting for pin
+    s Get caller group data { 0x0010, groupID }
+    r Get caller group data { 0x0011, groupID, size, "Name", ringtoneID, graphic_on?1:0, lenHI, lenLO, OTABitmap (72x14 logo) }
+    r Get call.group error  { 0x0012, reason }
+                            where reason: 0x7d: invalid location
+    s Set caller group data { 0x0013, groupID, size, "Name", ringtoneID, graphic_on?1:0, lenHI, lenLO, OTABitmap (72x14 logo) }
+    r Set caller group OK   { 0x0014 }
+    r Set call.group error  { 0x0015, reason }
+                            where reason: 0x7d: invalid location
+    s Get speed dial        { 0x0016, index(1-9) }
+    r Get speed dial OK     { 0x0017, mem.type, location }
+                            where mem.type: 0x02: ME        (== 0 if not stored)
+                                            0x03: SIM
+                                  location: memory location (== 0 if not stored)
+    r Get speed dial error  { 0x0018 }
+    s Set speed dial        { 0x0019, index(1-9), mem.type, location }
+    r Set speed dial OK     { 0x001a }
+    r Set speed dial error  { 0x001b }
+0x04: Phone Status
+    s Phone status          { 0x0001 }
+    r Phone status          { 0x0002, mode, signal str, ???, pwr, batt.level }
+                            where mode: 1: registered within the network
+                                        2: call in progress
+                                        3: waiting for pin
+                                        4: powered off
+                                  pwr: 1: AC/DC
+                                       2: battery
+    s Request Phone ID      { 0x0003 }
+    r RequestPhone ID       { 0x0004, 0x01,"NOKIA""imei", 0, "model", 0, "prod.code", 0, "HW", 0, "firmware", 0x00, 0x01 }
+0x05: Profile settings
+    s Set profile feature   { 0x0010, 1, nr, feature, a, 1 }
+                            where nr: see 0x05/0x0013
+                                  feature: see 0x05/0x0014
+                                  a: see 0x05/0x0014
+    r Set profile feat. OK  { 0x0011, 1 }
+    s Get profile feature   { 0x0013, 1, nr, feature, 1 }
+                            where nr is profile number (general=0, silent, meeting, outdoor, pager, car, headset=6)
+                                  feature: see 0x05/0x0014
+    r Get profile feature   { 0x0014, 1, nr, feature, 4, a, b, c, d, 1 }
+      Features and answers (in a, b, c, d form):
+         0x00: keypad notes (in Nokia 3310 feature 0x00)
+               xx, 1, 0, 2
+                   xx: 0xff: off
+                       0x00: level 1
+                       0x01: level 2
+                       0x02: level 3
+         0x01: lights (? only in car profile) (what number in Nokia 3310 ?)
+               xx, 0, 0, 1
+                   xx: 0x00: off
+                       0x??: on (maybe 0x01)
+         0x02: incoming call alert (in Nokia 3310 feature 0x01)
+               xx, 1, 0, 7
+                   xx: 1: ringing,
+                       2: beep once,
+                       3: unknown
+                       4: off
+                       5: ring once
+                       6: ascending
+                       7: caller groups (see feature #0x08)
+         0x03: ringing tone (in Nokia 3310 feature 0x02)
+               xx, 0, 0, 0
+                   xx: 0x12: ring ring
+                       0x13: low
+                       etc
+         0x04: ringing volume (in Nokia 3310 feature 0x03)
+               xx, 0, 0, 0
+                   xx: level 1 (0x06) - level 5 (0x0a)
+         0x05: message alert tone (in Nokia 3310 feature 0x04)
+               xx, 1, 0, 4
+                   xx: 0: no tone
+                       1: standard
+                       2: special
+                       3: beep once
+                       4: ascending
+        0x06: vibration (in Nokia 3310 feature 0x05)
+              xx: 0: off
+                  1: on
+         0x07: warning and game tones (in Nokia 3310 feature 0x06 called warning tones)
+               xx, 4, 0, 4
+                   xx: 0xff: off
+                       0x04: on
+        0x07: screen saver - Nokia 3310
+              xx: 1: on
+                  0: off
+         0x08: incoming caller groups (what number in Nokia 3310 ?)
+               xx, 0, 0, 0
+                   xx: 1: family
+                       2: VIP
+                       4: friends
+                       8: collegues
+                      16: other
+         0x09: automatic answer (what number in Nokia 3310 ?)
+               xx, 0, 0, 1
+                   xx: 0x00: off
+                       0x01: on 
+    s Get welcome message   { 0x0016 }
+    r Get welcome message   { 0x0017, no.of blocks, { block } * }
+                            where block: { id, {blockspecific} }
+                                  id: 1: startup logo { y, x, picture (coding?) }
+                                      2: welcome note { len, "message" }
+                                      3: operator msg { len, "message" }
+    s Set welcome message   { 0x0018, no.of blocks, { block } * }
+                            where block: see 0x05/0x0017
+    r Set welcome OK        { 0x0019, 0x01 }
+    s Get profile name      { 0x001a, nr }
+                            where nr: see 0x05/0x0013
+    r Profile name          { 0x001b, 1, 1, 3, flen, nr, len, {text} }
+                            where nr: see 0x05/0x0013
+                                  len: text length 
+                                  flen len + len(nr, len) = len + 2
+                            Note: in Nokia 3310 name is in Unicode
+    s ???                   { 0x001c }
+    r ???                   { 0x001d, 0x93 }
+    s Set oplogo            { 0x0030, location, MCC1, MCC2, MNC, lenhi=0x00, lenlo=0x82, OTABitmap }
+    r Set oplogo OK         { 0x0031 }
+    r Set oplogo error      { 0x0032, reason }
+                            where reason: 0x7d invalid location
+    s Get oplogo            { 0x0033, location }
+                            where location: 1 (doesn't seem to matter)
+    r Get oplogo            { 0x0034, location, MCC1, MCC2, MNC, lenhi=0x00, lenlo=0x82, OTABitmap }
+    r Get oplogo error      { 0x0035, reason }
+                            where reason: 0x7d invalid location
+    s Set ringtone          { 0x0036, location,0x00,0x78, ringtone packed according to SM2.0}
+    r Set ringtone OK       { 0x0037 }
+    r Set ringtone error    { 0x0038, reason }
+                            where reason=0x7d, when not supported location
+    s Get services settings { 0x0080, setting (2 bytes) }
+                            where: setting: 0x02,0x00=Nokia access number 1
+                                            0x02,0x01=Operator access number 1
+                                            0x01,0x00=Personal bookmark 1 settings (name only ?)
+                                            0x01,0x01=?
+                                            0x02,0x02=?
+    r Get services sett.OK  { 0x0081, .... }
+    r Get services sett.err { 0x0082, 0x7b }
+0x06: Calling line restriction/Call forwarding etc
+    s Set call divert       { 0x0001, 0x03, 0x00, divtype, calltype, 0x01, number(packed like in SMS), 0x00, 0x00...,timeout}
+                            NOTE: msglen=0x37
+                            where timeout:
+                              0x00: not set ?
+                              0x05: 5 second
+                              0x0a: 10 second
+                              0x0f: 15 second
+                              0x1e: 20 second
+                              0x14: 25 second
+                              0x19: 30 second
+                            where divtype:
+                              0x02: all diverts for all call types ?
+                                    Found only, when deactivate all diverts for all call types (with call type 0x00)
+                              0x15: all calls
+                              0x43: when busy
+                              0x3d: when not answered
+                              0x3e: if not reached
+                            calltype:
+                              0x00: all calls (data, voice, fax)
+                              0x0b: voice calls
+                              0x0d: fax calla
+                              0x19: data calls
+    s Deactivate calldiverts{ 0x0001, 0x04, 0x00, divtype, calltype, 0x00 }
+                            where divtype, calltype: see above
+    s Get call diverts      { 0x0001, 0x05, 0x00, divtype, calltype, 0x00 }
+                            where divtype, calltype: see above
+    r Get prepaid(?) info   { 0x0005, ?,?,?,length,message(packed like in 7bit SMS)}
+0x07:
+    s ???                   { 0x0022, ? (1&2 sounds OK) }
+    r ??? OK                { 0x0023, ?,?,? }
+    r ??? error             { 0x0024, reason }
+    s ???                   { 0x0025, ??? }
+    r ??? OK                { 0x0026, ??? }
+    r ??? error             { 0x0027, reason }
+0x08: Security codes
+    s Change code           { 0x0004, code, "current", 0x00, "new", 0x00 }
+                            where code: 1: security code (5 chars)
+                                        2: PIN (4 chars)
+                                        3: PIN2 (4 chars)
+                                        4: PUK (8 chars)
+                                        5: PUK2 (8 chars)
+    s Status request        { 0x0007, 0x01 }
+    r pin recvd             { 0x0008, accepted }
+                            where accepted: 0x0c (or 0x06): OK
+                                            code: waiting for (0x08/0x0004) code
+    s entering code         { 0x000a, code, "code", 0x00 }
+                            where code: see 0x08/0x0004
+0x09: SIM login
+    r login                 { 0x0080 }
+    r logout                { 0x0081 }
+0x0a: Network status
+    s Key duplication on/off{ 0x0044, on? 0x01: 0x02 }
+    s get used network      { 0x0070 }
+    r network registration  { 0x0071, ?,?,?,length,netstatus,netsel,cellIDH,cellIDL,lacH,lacL,netcode,netcode,netcode }
+0x0c: Keys
+    s Get key assignments   { 0x0040, 0x01 }
+    r Get key assignments   { 0x0041, {key '1'}, 0x00, {key '2'} ... {key '0'}, 0,0,0, {symbols}, 0 }
+                            where {key '0'} => ' ', '0'
+    s Press key             { 0x0042, press: 0x01; release: 0x02, button, 0x01 }
+                            where button: 0x01 - 0x09: 1-9
+                                          0x0a: 0
+                                          0x0b: #
+                                          0x0c: *
+                                          0x0d: Power
+                                          0x0e: Pick up phone
+                                          0x0f: Hang
+                                          0x10: Volume +
+                                          0x11: Volume -
+                                          0x17: Up
+                                          0x18: Down
+                                          0x19: Menu
+                                          0x1a: Names
+                                          0x1B onwards: don't know but they do produce
+                                               a beep and light up the keypad as if
+                                               a key had been pressed. 
+    r Press key ack         { 0x0043, press/release/error(0x05) }
+    s ???                   { 0x0044 }
+    r ??? ack               { 0x0045, 0x01 }
+0x0d: Status
+    r Display               { 0x0050, 0x01, y, x, len, "string"(unicode) }
+    s Status request        { 0x0051 }
+    r Status                { 0x0052, no. of byte pairs, {byte pair} }
+                            where {byte pair}: {cmd, 1:off 2:on}
+                            cmd: 1: call in progress
+                                 2: ???
+                                 3: have unread sms
+                                 4: voice call active
+                                 5: fax call active
+                                 6: data call active
+                                 7: key lock active
+                                 8: is SMS storage full
+    s Display status        { 0x0053, 1:on 2:off }
+                            (will send displayed messages with x,y coordinates)
+    r Display status ack    { 0x0054, 1 }
+0x11: Phone clock & alarm
+    s set date and time     { 0x0060, 1,1,7,yearh,yearl,month,mday,hour,min,0x00 }
+    r date and time set     { 0x0061 }
+    s get date and time     { 0x0062 }
+    r date and time recvd   { 0x0063,date_set?,time_set?,?,?,yearh,yearl,month,mday,hour,min,second }
+                            where: date_set & time_set==0x01 - set
+                                                       0x00 - not set, ?,?,yearh,yearl,month,mday,hour,min,second
+                                                               not available in frame
+    s set alarm             { 0x006b, 1,32,3,0x02(on-off),hour,min,0x00 }
+    r alarm set             { 0x006c }
+    s get alarm             { 0x006d }
+    r alarm received        { 0x006e,?,?,?,?,alrm(==2:on),hour,min }
+0x12: Connect to NBS port (61xx only ?)
+    s Send                  {+0x0c, 0x01, UDH header, data}
+                            (without 0,1 header  -- for oplogo, cli, ringtone etc upload)
+                           where: UDH header = 0x06, 0x05, 0x04,destporth,destportl,srcporth,srcportl
+                            Seems not to work in MBUS!
+0x13: Calendar notes
+    s Write calendar note   { 0x0064, 0x01, 0x10, length, type, yearH, yearL, month, day, hour, timezone,
+                              alarm?(alarm yearH, yearL, month, day, hour, timezone): (0,0,0,0,0,0),
+                              textlen, "text" }
+    r Write cal.note report { 0x0065, return }
+                            where return: 0x01: ok
+                                          0x73: failure
+                                         0x81: calendar functions busy. Exit Calendar menu and try again
+    s Calendar notes set    { 0x0066... }
+    r Calendar note recvd   { 0x0067, 0x01, ?, length, type, yrH,yrL,mon,day,hr,tz,alrm yrH,yrL,mon,day,hr,tz,textlen, "text" }
+    r Cal.note recvd error  { 0x0067, err }
+                            where err: 0x93: not available
+                                      (0x01: OK)
+                                       other: error
+    s Delete cal.note       { 0x0068, location }
+    r Del. cal.note report  { 0x0069, err }
+                            where err: 0x01: OK
+                                       0x93: cannot delete
+0x14: SMS funcs
+    s Write SMS to SIM      { 0x0004, .... }
+    s Mark SMS as read      { 0x0007, 0x02, location, 0x00, 0x64 }
+    r SMS message frame rcv { 0x0008,subtype,?,num,?,BCD(smscenter)...} 20->type, 22->status
+                            where type: 0x06: delivery report 
+                                  status: 0x00: delivered
+                                          0x30: pending
+                                          0x46: failed
+                                          0x09: reading failed
+                                  subtype: 0x02: invalid mem type
+                                           0x07: empty SMS location
+                                          0x0c: no access to memory (no PIN in card, etc.)
+    s Delete SMS message    { 0x000a, 0x02, location }
+    r Delete OK             { 0x000b }
+    s SMS status request    { 0x0036, 0x64 }
+    r SMS status            { 0x0037,?,?,?,?,?,?,msgnumber,unread }
+    r SMS status error      { 0x0038 }
+0x40: Security commands
+    s ???                   {+0x00, 0x00, 0x07, 0x11, 0x00, 0x10, 0x00, 0x00}
+                            This frame hangs phone (N3310 4.02). Meaning unknown !
+    s Open simlock 1        { 0x02, 0x03, 0x1f, 0x11, 0x01, 0x01, 0x10, 0x00}
+    r Open simlock 1        { 0x02 }
+    s ???(N6150)            { 0x08, 0x00 }
+    r ???(N6150)            { 0x08 }
+    s Enable extended cmds  { 0x64, cmd }
+                            where cmd: 0x00: off
+                                       0x01: on
+                                      0x02: enter service mode ?
+                                       0x03: reset (doesn't ask for PIN again)
+                                       0x04: reset (PIN is requested)
+                                             In 5110 makes reset without PIN
+                                       0x06: CONTACT SERVICE!!! Don't try it!
+    s Reset phone settings  { 0x65, value, 0x00 }
+                            where value: 0x08 - reset UI (User Interface) settings
+                                        0x38 - reset UI, SCM and call counters
+    r Reset phone settings  { 0x65, 0x00 }
+    s Get IMEI              { 0x66 }
+    r Get IMEI              { 0x66, 0x01, IMEI, 0x00}
+    s (ACD Readings)?(N6150 { 0x68 }
+    r (ACD Readings)?(N6150 { 0x68, ... }
+    s Get Product Profile
+      Settings              { 0x6a}
+    r Get Product Profile
+      Settings              { 0x6a, 4bytes with Product Profile Settings }
+    s Set Product Profile
+      Settings              { 0x6b, 4bytes with Product Profile Settings }
+    r Set Product Profile
+      Settings OK ?         { 0x6b }
+    s Get code              { 0x6e, code }
+                            where code: see 0x08/0x0004 (only sec.code is allowed)
+    r Get code              { 0x6e, code, allowed, allowed? (sec code (text)) }
+                            where code: see 0x08/0x0004
+                                  allowed: 0: no
+                                           1: yes
+    s Set code              { 0x6f, code, sec code(text), 0x00 }
+                            where code: see 0x08/0x0004
+    s Start monitoring      { 0x70, block }
+                            where block(N6150):
+                              0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+                              0xff,0xff,0xff,0xff,0xff,0xf9,0x76,0x65,0x20,0x00,
+                              0x00,0x00,0x00,0x00,0x18,0x26,0x15,0x7d,0x0a,0x00,
+                              0xf5,0x82,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+                              0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0x77,0x80,
+                              0x77,0x80,0xf2,0x82,0x20,0x20,0x20,0x20,0x20,0x20,
+                              0x20,0x20,0x20,0x20
+                            This block enables probably all possible monitorred parameters.
+                            After it phone sends 0x00 message type values
+    s Break monitoring      { 0x71 }
+    r Break monitoring      { 0x71 }
+    s Reset Permanent
+      Counters (nm->test36) { 0x74, 0x01, 0x01, 0x0e }
+    r Reset Permanent
+      Counters (nm->test36) { 0x74 }
+    s Call commands         { 0x7c, block }
+                            where where: command, (values)
+                                 command: 0x01
+                                     values: number(ASCII), 0x00 - makes voice call
+                                 command: 0x02 - answer call
+                                 command: 0x03 - release call
+    r Call commands         { 0x7c, command }
+    s Netmonitor            { 0x7e, field }
+                            where: field: 00: next
+                                          F0: reset
+                                          F1: off
+                                          F2: field test menus
+                                          F3: developer menus
+    s Open simlock 2        { 0x81, 0x01, locknumber, 0x10, 0x10, 0x10, 0x10, 0x10 }
+                            Note: sets simlock type to factory?
+                           where locknumber: 1,2,4,8
+    s Open simlock 2        { 0x81, 0x01, locknumber }
+                           where locknumber: 1,2,4,8
+    s Close simlock         { 0x82, 0x01, locknumber, 0x00, 0x00, locksinfo(lock1,4,2,3), 0x00 }
+                            where locknumber: 1,2,4,8
+    r Close simlock         { 0x82, the rest like in 0x40/0x8a }
+    s Get simlock info      { 0x8a, 0x00}
+    r Get simlock info      { 0x8a, 0x00, 0x01, lockstype, locksclosed, 0x00, 0x00, locksinfo(lock1,4,2,3), counter1,counter2,counter4,counter4,0x00 }
+                            where: lockstype:   bit1,bit2,bit3,bit4 - if set, selected lock is user lock
+                                   locksclosed: bit1,bit2,bit3,bit4 - if set, selected lock is closed
+                                   counter1 - counter4: counters for locks
+    s Set downloaded OpName { 0x8b, 0x00, MCC1, MCC2, MNC, Name, 0x00 }
+    r SetdownloadedOpNameOK?{ 0x8b, 0x00, 0x01 }
+    s Get downloaded OpName { 0x8c, 0x00 }
+    r Get downloaded OpName { 0x8c, 0x00, 0x01, MCC1, MCC2, MNC, Name, 0x00,...}
+    s Buzzer pitch          { 0x8f, volume, hzLO, hzHI }
+                            if volume and hz is 0, it's off
+    r Buzzer pitch          { 0x8f}
+    s ACD Readings ?        { 0x91, parameter?(0x02,0x03,0x04,0x05,0x07) }
+    r ACD Readings ?        { 0x91, parameter?, value? }
+    s Sleep mode test       { 0x92, 0x00, 0x00, howlong(2 bytes), enable }
+                            where: enable == 0x01 - enable after test
+                                            0x00 - don't enable after test
+                                  howlong (ms) = 0x07, 0xd0 = 2000
+    s ???(N6150)            { 0x98, 0x00 }
+    r ???(N6150)            { 0x98, 0x00, 0x04 }
+    s Get bin ringtone      { 0x9e, location }
+                            where: location=0,1,etc.
+    r Get bin ringtone      { 0x9e, location, error, contents... }
+                            where location=0,1,etc.
+                                  error=0x0a, ringtone NOT available
+                                        0x00, OK
+    s Set bin ringtone      { 0xa0, location, 0x00, contenst... }
+                            where: location=0,1,etc.
+    r Set bin ringtone      { 0xa0, location, error }
+                              where location=0,1,etc.
+                                    error=0x0a, ringtone NOT set
+                                          0x00, ringtone set OK
+    r Get MSid              { 0xb5, 0x01, 0x2f, msid, 0x25 }
+    s Get info about phone  { 0xc8, 0x01 }
+    r Get info about phone  { 0xc8, 0x01, 0x00, "V ", "firmware", 0x0a, "firmware date", 0x0a, "model", 0x0a, "(c) NMP.", 0x00 }
+    s Get MCU SW Checksum   { 0xc8, 0x02 }
+    r Get MCU SW Checksum   { 0xc8, 0x02, 0x00, checksum (4 bytes),0x00 }
+    s DPS External SW       { 0xc7, 0x03 }
+    r DSP External SW       { 0xc7, 0x03, 0x00, string,0x00 }
+    s Get HW                { 0xc8, 0x05 }
+    r Get HW                { 0xc8, 0x05, 0x00, HW version (4 bytes), 0x00 }
+    s Get "Made" Date       { 0xc8, 0x05 }
+    r Get "Made" Date       { 0xc8, 0x05, 0x00, date(4 bytes), 0x00 }
+    s Get DSP Internal SW   { 0xc8, 0x09 }
+    r Get DSP Internal SW   { 0xc8, 0x09, 0x00, version (1 bytes), 0x00 }
+    s Get PCI version       { 0xc8, 0x0b }
+    r Get PCI version       { 0xc8, 0x0b, 0x00, version, 0x00 }
+    s Get system ASIC       { 0xc8, 0x0c }
+    r Get system ASIC       { 0xc8, 0x0c, 0x00, string, 0x00 }
+    s Get COBBA             { 0xc8, 0x0d }
+    r Get COBBA             { 0xc8, 0x0d, 0x00, string, 0x00 }
+    s Get PLUSSA            { 0xc8, 0x0e }
+    r Get PLUSSA            { 0xc8, 0x0e, available, 0x00 }
+                            where available: 0x01: not available
+    s Get CCONT             { 0xc8, 0x0f }
+    r Get CCONT             { 0xc8, 0x0f, available, 0x00 }
+                            where available: 0x01: not available
+    s Get PPM version       { 0xc8, 0x10 }
+    r Get PPM version       { 0xc8, 0x10, 0x00, "V ", "firmware", 0x0a, "firmware date", 0x0a, "model", 0x0a, "(c) NMP.", 0x00 }
+    s Get PPM info          { 0xc8, 0x12 }
+    r Get PPM info          { 0xc8, 0x12, 0x00, PPM version ("B", "C", etc.), 0x00 }
+    s Set HW version        { 0xc9, 0x05, version, 0x00 }
+    s Get Product Code      { 0xca, 0x01 }
+    r Get Product Code      { 0xca, 0x01, 0x00, number, 0x00 }
+    s Get Order Number      { 0xca, 0x02 }
+    r Get Order Number      { 0xca, 0x02, 0x00, string, 0x00 }
+    s Get Prod.Ser.Number   { 0xca, 0x03 }
+    r Get Prod.Ser.Number   { 0xca, 0x03, 0x00, number, 0x00 }
+    s Get Basic Prod.Code   { 0xca, 0x04 }
+    r Get Basic Prod.Code   { 0xca, 0x04, 0x00, number, 0x00 }
+    s Set Product Code      { 0xcb, 0x01, product code, 0x00 }
+    s Set Order Number      { 0xcb, 0x02, number, 0x00 }
+    s Set Prod.Ser.Number   { 0xcb, 0x03, number, 0x00 }
+    s Get (original ?)IMEI  { 0xcc, 0x01 }
+    r Get (original ?)IMEI  { 0xcc, 0x01, IMEI, 0x00 }
+    s Get Manufacture Month { 0xcc, 0x02 }
+    r Get Manufacture Month { 0xcc, 0x02, 0x00, string, 0x00 }
+    s Get Purchare date     { 0xcc, 0x04 }
+    r Get Purchare date     { 0xcc, 0x04, 0x00, string, 0x00 }
+    s Set "Made" date       { 0xcd, 0x02, string, 0x00 }
+    s Make "all" phone tests{ 0xce,0x1d,0xfe,0x23,0x00,0x00}
+    s Make one phone test   { 0xce,0x1d,num1,num2,num3,num4}
+                            Where num1-num4: 0x02,0x00,0x00,0x00;
+                                             0x04,0x00,0x00,0x00;
+                                             0x08,0x00,0x00,0x00;
+                                             0x10,0x00,0x00,0x00;
+                                             0x20,0x00,0x00,0x00;
+                                             0x40,0x00,0x00,0x00;
+                                             0x80,0x00,0x00,0x00;
+                                             0x00,0x01,0x00,0x00;
+                                             0x00,0x02,0x00,0x00;
+                                             0x00,0x04,0x00,0x00; - "Power off"
+                                               No test for "Security data"
+                                             0x00,0x10,0x00,0x00;
+                                             0x00,0x20,0x00,0x00;
+                                             0x00,0x40,0x00,0x00;
+                                             0x00,0x80,0x00,0x00;
+                                             0x00,0x00,0x01,0x00;
+                                             ....
+                                             0x00,0x00,0x10,0x00;
+    s Result of phone tests { 0xcf }
+    r Result of phone tests { 0xcf, number of tests, results of next tests }
+    s ???                   { 0xd1 }
+    r ???(N5110)            { 0xd1, 0x00, 0x1d, 0x00, 0x01, 0x08, 0x00 }
+    s LCD Test              { 0xd3, value }
+                            where value: 0x03, 0x02 - 1'st test
+                                         0x03, 0x01 - 2'nd test
+                                         0x02, 0x03 - clears screen
+    s ACD Readings(N6150)?  { 0xd4, 0x02, 0x00, 0x02, 0x00, 0x0e, 0x01}
+    r ACD Readings(N6150)?  { 0xd4, 0x02, 0x00, 0x02, 0x00, 0x0e, 0x01, ?}
+    s Get EEPROM            { 0xd4, 0x02, 0x00, 0xa0, locationLo, locationHi, numofbytes }
+                            where: numofbytes - how many bytes to read
+                           Note: Works ONLY in MBUS
+    r Get EEPROM            { 0xd4, 0x02, 0x00, 0xa0, locationLo, locationHi, numofbytes, contest... }
+                            where numofbytes - how many bytes available
+                                    contest - bytes with contests (if numofbytes != 0)
+0x41: Snake game ?
+0x47:
+    s Get Picture Image     { 0x0001, location }
+    r Get Picture Image     when contains sender number
+                            { 0x0002, location, number(like in SMS), 0x00, len, text, 0x00, width, height, 0x01, bitmap }
+                           NOTE:
+                              Supports only 0x81 and 0x91 coding (NOT alphanumeric numbers!)
+                              in sender without sender number
+                            { 0x0002, location, 0x00, 0x00, 0x00, len, text, 0x00, width, height, 0x01, bitmap }
+    s Set Picture Image     { 0x0003, frame...}
+                            where frame: see 0x47/0x0002
+    r Get/Set PictureImageOK{ 0x0004 }
+    r Set Picture Image err { 0x0005, error? }
+                            where error=0x74 - wrong location ?
+0x64:
+    s Phone ID request      { 0x0010 }
+    r Phone ID recvd        { 0x0011, "NOKIA", "imei", 0, "model", 0, "prod.code", 0, "HW", 0, "firmware", magic bytes x 4 ... }
+    s Accessory connection  { 0x0012, 16x0x00, 'NOKIA&NOKIA accessory', 3x0x00 } (45 bytes)
+0x7f: Acknowledge(FBUS/IRDA){+type, seq }
+      Acknowledge(MBUS)...
+0xd0: 
+    s Power on message seq1 {+04 }
+    r Power on message seq1 {+05 }
+0xd1:
+    s Get HW&SW version     { 0x0003, 0x00 }
+0xd2:
+    r Get HW&SW version     { 0x0003 "V " "firmware\n" "firmware date\n"
+                              "model\n" "(c) NMP." }
+0xda: ? (during playing 2 player snake)
+0xf0:
+    s Send RLP frame        {+0x00, 0xd9, ... }
+0xf4: Power on message seq 2
diff --git a/Docs/protocol/nk6160.txt b/Docs/protocol/nk6160.txt
new file mode 100644 (file)
index 0000000..574a318
--- /dev/null
@@ -0,0 +1,98 @@
+$Id$
+
+Assembled by
+                     <arnu@venia.net>
+       ... 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
+TDMA NOKIA 5120 / 5160 / 6120 / 6160
+
+TDMA phones support simultaneously both MBUS protocols
+(see nokia.txt for protocol details)
+the old one (version1) and the new (version2). Both protocols can be used
+at the same time on the MBUS. The phone will decode both and react accordingly.
+
+Correct format is MBUS version 1:
+
+ List:
+
+0x17:
+    s Release key           {+0x00, keynum }
+    s Press key             {+0x01, keynum }
+0xe9:
+    s Start connection      {+0x01 0x01 0x1c 0x01 0x1c}
+      (3Com cell modem card)Note: this is message with SrcDEV = 0xf8 !
+                            ACK frame for it is (DestDEV = 0xf8 too) 0x1c, 0x01, 0x1c
+    s Start connection      {+0x00 0x02 0x1d 0x00 0x1d}
+                            Note: this is message with SrcDEV = 0xf8 !
+
+Other frames from 3Com cell modem card (MBUS version 1):
+   unknown purpose : 00 E0 00 1D SQ CS
+       probably request 
+       Alive response from cellmodem 
+   UC_RESERVE_REQ:   00 E0 05 19 00 00 01 01 00 SQ CS
+       register system state info presentation 
+   UC_RESERVE_REQ:   E0 00 01 CD 01 SQ CS
+       phone tries to register some info from cellmodem 
+
+   Dialing as cellmodem forces the phone into analoge AMPS mode,
+   answering a call as cellmodem answers in AMPS mode 
+   This allows transparent transmission of the analoge modem tones since
+   digital TDMA won't transmit them transparently. 
+   It also switches audio to the XEAR , XMIC pins automatically. 
+
+   LN_ALIVE_REQ:     E0 00 00 1E SQ CS
+       checks if cellmodem is still present (sent 1 /sec.) 
+   SYS_STATE_IND:    FF 02 07 CA 1C Con 02 01 0E 0F 00 SQ CS
+       sytems state information 
+       Con holds the connection state 
+         00 = idle 
+         01 = ringing 
+         02 = connecting 
+         03 = talk 
+         04 = ringing / alternating with 01
+       the destignation is the Global object and the source
+       is subaddress 02 of the Nokia phone. 
+
+Correct format is MBUS version 2:
+
+ List:
+
+0x40:
+    s Read phonebook(2way)  {+0x00, 0x00, 0x07, 0x11, 0x00, 0x10, 0x00, location }
+                            Note: works also on CDMA 6185
+    s Read phonebook(1way)  { 0x1F, 0x01, 0x04, 0x86, location }
+    s Write phonebook       { 0x1f, 0x01, 0x04, 0x87, number, 0x00, name, 0x00 }
+    s Enable extended cmds  { 0x64, cmd }
+                            where 
+                              cmd(probably): 0x00: off
+                                             0x01: on
+                                             0x03: reset (doesn't ask for PIN again)
+                                             0x04: reset (PIN is requested)
+                                                   In 5110 makes reset without PIN
+                                             0x06: CONTACT SERVICE!!! Don't try it!
+0xd1:
+    s Registration request? {+0x00, 0xF8, 0x05, 0xE9, 0x00, 0x02, 0x1D, 0x00, 0x1D}
+    s Get HW&SW version     { 0x0003, 0x00 }
+    s Get phone version?    { 0x000D, 0x00, 0x00, 0x02}
+    s ???                   { 0x47, 0x00, 0x00}
+    s ???                   { 0x47, 0x00, 0x05}
+    s Key release(1way)     { 0x50, 0x00, 0x00, KEY }
+    s Key press             { 0x50, 0x00, 0x01, KEY }
+                              dials in digital TDMA default mode ?
+    s Key release(2way)     { 0x51, 0x00, 0x01, KEY }
+0xd2:
+    r Get HW&SW version     { 0x0003 "V " "firmware\n" "firmware date\n"
+                              "model\n" "(c) NMP." }
+    r Get phone version     { 0x000D, "V " "firmware\n" "firmware date\n" }
+    r Key press             {+0x01, 0x00, 0x50, 0x00}
+    r ???                   {+0x01, 0x00, 0x47, 0x00}
diff --git a/Docs/protocol/nk6185.txt b/Docs/protocol/nk6185.txt
new file mode 100644 (file)
index 0000000..bd8ec88
--- /dev/null
@@ -0,0 +1,52 @@
+$Id$
+
+Assembled by
+                     <arnu@venia.net>
+       ... 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
+CDMA Nokia 6185.
+Correct format is MBUS version 2
+(see nokia.txt for protocol details):
+
+ List:
+
+0x07: Phonebook functions ?
+    s Set mem location      {0x0710, 0x00, memory, 0x00, location, length, number(each byte contains two digits), 0x00, ..., name[23], 0x00 }
+                            where: memory 0x22 - internal phonebook
+                                   max. length for name 15
+                                   max. length for number 15 bytes (30 digits)
+    s Get mem location      {0x0711, 0x00, memory, 0x00, location }
+                            where: memory 0x22 - internal phonebook
+0x40:
+?   s Read phonebook        {+0x00, 0x00, 0x07, 0x11, 0x00, 0x10, 0x00, location }
+    s Get phone memory ?    {+0x00, 0x01, 0xc8, 0xXX}
+0xd1:
+?   s Registration request? {+0x00, 0xF8, 0x05, 0xE9, 0x00, 0x02, 0x1D, 0x00, 0x1D}
+    s Get HW&SW version     { 0x0003, 0x00 }
+?   s Get phone version?    { 0x000D, 0x00, 0x00, 0x02}
+?   s ???                   { 0x47, 0x00, 0x00}
+?   s ???                   { 0x47, 0x00, 0x05}
+    s Press key             { 0x51, 0x00, 0x01, KEY }
+                              dials in digital CDMA default mode?
+    s Key release           { 0x52, 0x00, 0x01, KEY }
+0xd2:
+    r Get HW&SW version     { 0x0003 "V " "firmware\n" "firmware date\n"
+                              "model\n" "(c) NMP." }
+?   r Get phone version     { 0x000D, "V " "firmware\n" "firmware date\n"}
+?   r ???                   {+0x01, 0x00, 0x47, 0x00}
+0xdd: Phonebook functions ?
+    r Get mem location      {+0x01, 0x00, block, length, number(each byte contains two digits), 0x00, ..., name[23], 0x00 }
+                            where: block: 0x11, 0x00, memory, 0x00, location (bytes like in 0x07/0x0711)
+                                   memory 0x22 - internal phonebook
+                                   max. length for name 15
+                                   max. length for number 15 bytes (30 digits)
diff --git a/Docs/protocol/nk640.txt b/Docs/protocol/nk640.txt
new file mode 100644 (file)
index 0000000..9818fd1
--- /dev/null
@@ -0,0 +1,33 @@
+$Id$
+
+Assembled by
+        Andrew Kozin
+       ... 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 NMT Nokia 640 and derivatives:
+Correct format is MBUS version 1 (see nokia.txt for protocol details):
+
+ List:
+
+0x0f:
+    r Get serial number     {+0x19, 0x03, 0x00, 0x01, 0x0b, 0x00, 0x00}
+    s Get mem location      {+0x2d, 0x03, 0x00, 0x07, 0x1f, 0x7f, 0xf0, 0x00, location?, 0x00, 0x00}
+    s Get startup logo      {+0x60, 0x03, 0x00, 0x07, 0x3A, 0x7f, 0xf0, 0x00, 0x00, 0x00, 0x00}
+0x10:
+    s Set startup logo      {+0x08,0x03,0x00,0x07,0x3A,0x7F,0xF0,0x00,0x00,0x00,0x00,0x54, bitmap }
+    s Set mem location      {+0x10,0x08,0x03,0x00,0x07,0x1F,0x7F,0xF0,0x00,
+                              location,0x00,0x00,0x00,0x21,numlen,number,name[starts on 30 byte],0x00,0x05[starts on 46 byte]}
+0x19:
+    s Get RF level          {+0x02,0x01,0x07}
+    s Get battery level     {+0x02,0x01,0x00}
+0x43:
+    s Reset                 {+0x00, 0x00}
diff --git a/Docs/protocol/nk7110.txt b/Docs/protocol/nk7110.txt
new file mode 100644 (file)
index 0000000..c95d9b9
--- /dev/null
@@ -0,0 +1,527 @@
+$Id$
+
+Assembled by
+       Balazs Nagy (js@lsc.hu)
+       Marcin Wiacek (Marcin-Wiacek@TOPNET.PL)
+        Jens Bennfors <jens.bennfors@ing.hj.se>
+        Michael Hund <michael@drhund.de>
+        Jay Bertrand <jay.bertrand@libertysurf.fr>
+        Gabriele Zappi <gzappi@inwind.it>
+        Markus Plail <plail@web.de>
+       ... 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 6210 and derivatives (7110)
+Correct format is FBUS version 2/Infrared/MBUS version 2
+(see nokia.txt for protocol details):
+
+ List:
+
+0x00: Connect to NBS port ?
+    r Set ringtone          {+0x7c,0x01,0x00,0x0d,0x06[6],0x78,ringtone packed according to SM2.0}
+                            Seems not to work in MBUS!
+0x01: Communication Status
+?   r Call msg              { 0x0002 }
+?   r Call in progress      { 0x0003, seqnr }
+?   r Remote end hang up    { 0x0004, seqnr, ?, error (like in netmon in 39) }
+?   r incoming call alert   { 0x0005, seqnr, numlen, "number", namelen, "name" }
+?   r answered call         { 0x0007, seqnr }
+?   r terminated call       { 0x0009, seqnr }
+?   r call msg              { 0x000a, seqnr }
+    Note: in 6210 4.27 all msg from 0x01 seems to be unavailable
+0x02: SMS handling
+    s Send SMS message      { 0x0001, 0x02, 0x00 (SEND REQUEST), ... }
+    r Message sent          { 0x0002 }
+    r Send failed           { 0x0003, ?, ?, error (like in netmon in 65)}
+    r SMS message received  { 0x0010, ...... } (whole message)
+    s Set CellBroadcast     { 0x0020, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01 }
+                                      for enable cell broadcast ?
+                                      0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
+                                      for disable cell broadcast ?
+    r Set CellBroadcast OK  { 0x0021, 0x01 }
+    r Read CellBroadcast    { 0x0023, ?, ?, ?, channel, ?, message... } ?
+    s Set SMS center        { 0x0030, 0x64, priority, checksum?, format,
+                                      validity[2], {DefaultRecipient no.}[12],
+                                      {SMScenter no.}[12], {SMSC name}, 0x00}
+                              where tel.no.[12]: {len, type, {number(BCD)}}
+                                    type: 0x81: normal
+                                          0x91: + (international)
+                                          0xd0: alphanumeric
+                                    format: 0x00: text
+                                            0x22: fax
+                                            0x24: voice
+                                            0x25: ERMES
+                                            0x26: paging
+                                            0x31: X.400
+                                            0x32: email
+                                    validity: 0x000b:  1 hour
+                                              0x0047:  6 hours
+                                              0x00a7: 24 hours
+                                              0x00a9: 72 hours
+                                              0x00ad:  1 week
+                                              0x00ff: max.time
+    r Set SMS center OK     { 0x0031 }
+    r Set SMS center error  { 0x0032, reason }
+    s Get SMS center        { 0x0033, 0x64, priority }
+    r SMS center received   { 0x0034, priority, checksum?, type,
+                                      validity[2], {DefaultRecipient no.}[12],
+                                      {SMScenter no.}[12], {SMSC name}, 0x00 }
+                              where priority, checksum, type, validity,
+                                    tel.no.[12]: see 0x02/0x0030
+    r SMS center error recv { 0x0035, reason }
+    s??                     { 0x0074}
+    r??                     { 0x0075, 0xFF, 0x11, 0x98}
+    s??                     { 0x008C}
+    r??                     { 0x008D, 0x00}
+0x03: Phonebook functions
+    s Get memory status     { 0x0103, 0x02, memory type }
+                            where: memory type - see 0x03/0x0107
+    r Get memory status     { 0x0104, 0x00, xL, 0x00[2], y1H, y1L, 0x10,
+                                      0x00[2], z?, ymaxH, ymaxL, y2H, y2L,
+                                      0x0d?, xH?, 0x00[2]? }
+                              where y1: location (lowermost)
+                                    y2: no. of locations
+                                    ymax: maximum location no.
+    s Read memory           { 0x0107, 0x01, 0x01, 0x00, 0x01, xH, xL,
+                                     yH, yL, 0x00, 0x00}
+                            where x: memory type
+                                     0x01: (256) Dialled numbers
+                                     0x02: (512) Missed calls
+                                     0x03: (768) Received calls
+                                     0x05: (500) telephone phonebook
+                                     0x06: (160) SIM phonebook
+                                     0x07: (10/0)
+                                     0x08: (1/0)
+                                     0x09: (4) voice mailbox
+                                     0x0e: (10) speed dials
+                                     0x10: (5) caller groups
+                                  y: location
+    r Read memory           { 0x0108, 0x00, 0x01,
+                             code,0x00, 0x00, z, xH, xL, yH, yL, 0x00, 0x00, 0x00, no.of blocks, { block } * }
+                            where if code==0x0f && xH==0x34 - phonebook location not found
+                              y: location
+                              z: generic block size
+                              block: {id, 0, 0, blocksize, block no.,
+                                      {contents}, 0x00}
+                                id: 0x04 pointer to another memory location { 0xff?, yH, yL, xL,0x00[3] }
+                                    0x07 name {len, (unicode)},
+                                    0x08 email
+                                    0x09 postal
+                                    0x0a note {len, (unicode)}
+                                    0x0b number {type, 0x00[3], len, (unicode)}
+                                    0x0c ringtone {ringtone no., 0, 0}
+                                   0x13 date for a called list (DC, RC, etc.)
+                                    0x1b caller group graphic {width, height, 0, 0 {bitmap}}
+                                    0x1c caller group graphic on? {(1: yes, 0: no), 0, 0}
+                                    0x1e caller group number {number, 0, 0}
+                                   type: 0x0a: General,
+                                         0x03: Mobile (office ?),
+                                         0x06: Work,
+                                         0x04: Fax,
+                                         0x02: Home (mobile ?)
+    s Set mem location      { 0x010b, 0x00, 0x01, 0x01, 0x00, 0x00, z,
+                                      xH, xL, yH, yL, 0x00, 0x00, 0x00,
+                                      no.of blocks, { block }[no.of blocks] }
+    r Set mem location      { 0x010c, 0?, 1?, code, 0?, 0?, z?, 0?, 0?,
+                                      yH, yL, xL }
+                            where code:
+                                    0x3d - wrong entry type
+                                    0x3e - too much entries
+0x0a: Network status
+    s get used network      { 0x0070 }
+    r get used network      { 0x0071, available,?,?,length,netstatus,netsel,cellIDH,
+                                      cellIDL,lacH,lacL,MCC+MNC[3],{Opstr}, 4?,
+                                      len, xlen(78), ylen(21), 0, {bitmap} }
+                              where {Opstr}: namelen, {operator name(unicode)}
+                                    len: {xlen, ylen, 0, {bitmap} + 2
+                                    {bitmap}: bitmaplen, 0, 0, {OTA bitmap}
+                                   available: 0x02 if the logo following is valid,
+                                              0x01 for no operator logo following
+    s get network status    { 0x0081 }
+    r get network status    { 0x0082, network%, 0x14? }
+    s set operator logo     { 0x01a3 0x01, oplogo?, MCC+MNC[3], 0?,4?,len,
+                                     xlen(78),ylen(21), 0 (frames?),
+                                     {bitmap}*?, 0x00(padding) }
+                              where len, {bitmap}: see 0x0a/0x0071
+    r set operator logo OK  { 0x01a4 }
+0x13: Calendar notes
+    s Add meeting note      { 0x0001, body like in subtype 0x001a...}
+    r Add meeting note      { 0x0002, location (2 bytes), status (2 bytes)}
+    s Add call note         { 0x0003, body like in subtype 0x001a...}
+    r Add call note         { 0x0004, location (2 bytes), status (2 bytes)}
+    s Add birthday note     { 0x0005, body like in subtype 0x001a...}
+    r Add birthday note     { 0x0006, location (2 bytes), status (2 bytes)}
+    s Add reminder note     { 0x0007, body like in subtype 0x001a...}
+    r Add reminder note     { 0x0008, location (2 bytes), status (2 bytes)}
+    s Delete calendar note  { 0x000b, location (2 bytes) }
+    r Delete calendar note  { 0x000c, location (2 bytes), ?, ?, ?, ? }
+    s Get calendar note     { 0x0019, location (2 bytes) }
+    r Calendar note recvd   { 0x001a, location (2 bytes), entry type, 0x00, year (2 bytes), Month, Day, block}
+                            where: entry type - 0x01 - Meeting, 0x02 - Call, 0x04 - Birthday, 0x08 - Reminder
+                                   block: for Meeting:{hour,minute,alarm (two bytes),recurrance (two bytes),len,0x00,string(unicode)}
+                                          where alarm=Number of minutes before the time of the meeting
+                                                  that the alarm should be triggered:
+                                                  For meetings with "No alarm"=0xFFFF (-1).
+                                                  For "On time"=0x0000
+                                                  half an hour=0x001E, and so on.
+                                                Recurrance=in hours, between future occurances of this meeting.
+                                                  If there is no repeat, this value is 0x0000. The special value 0xffff 
+                                                  means 1 Year!
+                                          for Call:{Hour,Minute,Alarm (as above),Recurrance (as above),namelen,numberlen,
+                                                    name(unicode),number(unicode)}
+                                          for Reminder:{Recurrance (as above),len,0x00,string(unicode)}
+                                          for Birthday:{byte1,byte2,alarm(4 bytes),yearofbirth,alarmtype,len,string(unicode)}
+                                                    byte1 and byte2 may vary (???). Usually are 0x00 both (but not always)
+                                                    In Birthday, the Year in the common part, usually contains a strange year.
+                                                    So, don't consider it as Year of note, neither year of BirthDay (for Year of
+                                                    Birthday use the value described below).
+                                          where alarm=32-bit integer that is the number of seconds between the desired
+                                                  alarm time and 11:59:58pm on the birthday.For "No Alarm", the value is
+                                                  0x0000FFFF (65535).
+                                                YearOfBirth=used instead of the one in the common part of the entry (see above)
+                                                  but only when reading birthday entries. For storing entries, this field does
+                                                  not exist.
+                                                AlarmType: 0x00 - Tone, 0x01 - Silent
+?   s???                    { 0x0021 }
+?   r???                    { 0x0022, 0x5A, 0x00 }
+?   s???                    { 0x0025 }
+?   r???                    { 0x0026, 0x04, 0x00 }
+?   s                       { 0x0029 }
+?   r                       { 0x002A, 0x04, 0x00 }
+    s Get first free pos    { 0x0031 }
+    r Get first free pos    { 0x0032, location (2bytes) }
+    s Get notes info        { 0x003a, 0xFF, 0xFE}
+    r Get notes info        { 0x003b, how many notes used (2 bytes), 0x01, 0x07, { two bytes with location for each note} *}
+?   s Get calendar note??   { 0x003E, location (2 bytes) }
+?   r Get calendar note??   { 0x003F, location (2bytes), ... }
+0x14:
+    s Get Picture Image     { 0x0007, location, number[2 bytes], 0x00, 0x64 }
+                              where location: 0x21 (always ?)
+    r Get Picture Image     { 0x0008, 0x07, location, number[2 bytes], 0x07, ??[38],
+                                     width, height, lenH, lenL, {bitmap}}
+                              where location: 0x21 (always ?)
+    s Set Picture Image     { 0x0050, 0x07, location, number[2 bytes], 0x07, ??[38], 
+                                     width, height, lenH, lenL, {bitmap}}
+                              std. size: 72x28
+                              where location: 0x21 (always ?)
+    r Set Picture Image     { 0x0051, location, number[2 bytes], 0x07 }
+                              where location: 0x21 (always ?)
+
+    s List Picture Images   { 0x0096, FolderID, 0x0f, 0x07 }
+                              where: FolderID - see 0x14/0x017B
+    r List Picture Images   { 0x0097, number of pictures[2 bytes], number1[2 bytes], number2[2 bytes], ..., }
+
+    s Get SMS from folder   { 0x0107, folderID, 0x00, location, 0x01, 0x65, 0x01}
+                            where: folderID - see 0x14/0x017B
+    r Get SMS from folder   { 0x0108, status, folderID, 0x00, location, type, sender number,...}
+
+                            where: status=0x01 - reveived/read
+                                         0x03 - received/unread
+                                         0x05 - stored/sent
+                                         0x07 - stored/not sent
+
+                           where: folderID - see 0x14/0x017B
+
+                            where: type=0x00 - received SMS
+                                       0x01 - delivery report
+                                       0x02 - stored SMS
+                                       0x07 - picture message
+    s Get folder status     { 0x016b, folderID, 0x0F, 0x01}
+                            where: folderID - see 0x14/0x017B
+    r Get folder status     { 0x016c, number of entries (2 bytes), entry1number (2 bytes), entry2number(2 bytes), ....}
+    s Get folder names      { 0x017A, 0x00, 0x00}
+    r Get folder names      { 0x017B, number of strings, folderID, name1, 0x00, folderID, name2, 0x00, name3, 0x00,...}
+                            where: folderID=0x08 - Inbox
+                                            0x10 - Outbox
+                                            0x18 - Archive
+                                            0x20 - Templates
+                                            0x29 - first "My folders"
+                                            0x31 - second "My folders"
+                                            0x39 - third -"-
+                                            and so on
+0x17:
+    s Get Battery info      { 0x0002 }
+    r Get Battery info      { 0x0003, 0x0b, batt%, 0x14?, 0x01? }
+0x19: Date & time
+?   s Get date time ?       { 0x0062 }
+?   r Get date time ?       { 0x0063, 0x01, 0x01, 0x01, 0x07, 0x07,0xD1(year==2001) 0x05(month?) 0x02(day?) 0x00,0x1D,0x0D(hour:minute:second?)
+
+?   s Get alarm ?           { 0x006D }
+?   r Get alarm ?           { 0x006E 0x01, 0x01, 0x20, 0x03, 0x01, 0x0B, 0x14 }
+
+?   s ??                    { 0x0083, id }
+?   r ??                    { 0x0084, 0x01, 0x40, 0x03, id, 0x00, 0x00 }
+?   r ??                    { 0x0084, 0x01, 0x40, 0x03, id, 0x00, 0x01 }
+?   r ??                    { 0x0084, 0x01, 0x40, 0x03, id, 0x01, 0x00 }
+                            where: id=0x27,0x2a,0x32,0x28,0x40
+0x1b:
+    s Get IMEI              { 0x0001 }
+    r Get IMEI              { 0x0002, {IMEI(ASCII)}, 0x00 }
+    s get HW&SW version     { 0x0003, 0x01, 0x32 }
+    r get HW&SW version     { 0x0004, "V " "firmware\n" "firmware date\n"
+                              "model\n" "(c) NMP." 0x00 0xff[14] }
+0x1f:
+    s ???                   { 0x0010, 0x02, 0x00, 0xff, 0xff }
+    r ???                   { 0x0011, length, 0x00, {block}[length] }
+                              where block: { unicode letter[2], 0x0000,
+                                0x00, 0x55, ??, ?? }
+    s Set ringtone          { 0x011f, 0x00, location, 0x00, name(Unicode),
+                              ringtone(format the same to 0x40/0x019e and 0x40/0x01a0) }
+                              where: location: 0x87 to 0x8b on N6210
+                                               0x74 to ... on N7110
+?   s Get ringtone          { 0x0122, 0x00, location}
+?   r Get ringtone          { 0x0123, 0x00, location, name(Unicode), 0x00,...,0x00, 0x02,0xFC,0x09(ringtone contenst)}
+0x39:
+    s get profile feature ? { 0x0101, 0x01, 0x01, 0x01, number1, number2}
+                            where number1: from 0x00 to 0x07 (for each profile ?)
+                                  number2: 0x00 - 0x09, 0x0A, 0x16 - 0x19, 0x1a - 0x1f, 0x20 - 0x29, 0x2a - 0x2c, 0xff
+    r get profile feature ? { 0x0102, 0x01, number1, number2, block...}
+                            for number2==0xff: block: 0x01, 0x01, length, name(Unicode), 0x00, 0x00
+
+    s ???                   { 0x0101, 0x04, 0x01, 0x01, 0xff, 0x03 }
+    r ???                   { 0x0102, 0x01, 0x02, 0x03, 0x01, 0x01, 0x01, 0x85/0x087 }
+
+    s ?                     { 0x0105}
+    r ?                     { 0x0106, 0x01, 0x04}
+0x3f: WAP 
+    s                       { 0x0000}
+    r                       { 0x0001, 0x01}
+    s  ??                   { 0x0003}
+    r  ??                   { 0x0004}
+    s Get WAP bookmark      { 0x0006, 0x00, location}
+                              where location: 0 - 14
+    r Get WAP bookmark      { 0x0007, 0x00, name_len, name(unicode),
+                              url_len, url(unicode), 0x01,0x80,0x00[7]}
+    r Get WAP bookmark err  { 0x0008, error }
+                              where error:
+                                0x00  invalid position
+                                0x02  no more bookmark stored
+    s Set WAP bookmark      { 0x0009, 0xff, 0xff, name_len, name(unicode),
+                              url_len, url(unicode), 0x01,0x80,0x00[7] }
+                              Note: bookmark is added to the first free location.
+
+?   r Set WAP bookmark err  {+0x01, 0x36, 0x0b, error }
+                              where error:
+                               0x04 - memory is full
+                               0x01 - we are in the bookmark menu
+                               0x00 - unknown reason for now ;(
+?   r Set WAP bookmark OK   {+0x01, 0x36, 0x00, block }
+                              where block:
+                                0x0a, location_of_just_written_bookmark(?),
+                                0x00, next_free_location(?)
+
+    s Delete WAP bookmark   { 0x000c, 0x00, location }
+                              where: location = 0-14
+    r Delete WAR bookmark OK{ 0x000d }
+    r Delete WAPbookmark err{ 0x000e, 0x02 }
+    s ??                    { 0x000F}
+    r ??                    { 0x0010, 0x00}
+    s Get WAP settings      { 0x0015, location}
+                            where location: 0x00 - 0x05
+    r Get WAP settings OK   { 0x0016, location }
+    r Get WAP settings err  { 0x0017, error }
+    s ???                   { 0x001b, location}
+                            where location: 0x00 - 0x1d
+    r ???                   { 0x001c,...}
+    r ??? err               { 0x001d,error}
+                            where: error=0x05    
+0x40: Security commands
+?   s ???(N6150)            { 0x08, 0x00 }
+?   r ???(N6150)            { 0x08 }
+    s Enable extended cmds  { 0x64, cmd }
+                            where cmd: 0x00: off
+                                       0x01: on
+                                       0x03: reset (doesn't ask for PIN again)
+                                       0x04: reset (PIN is requested)
+                                             In 5110 makes reset without PIN
+                                       0x06: CONTACT SERVICE!!! Don't try it!
+    s Get IMEI              { 0x66 }
+    r Get IMEI              { 0x66, 0x01, IMEI, 0x00}
+    s (ACD Readings)?(N6150 { 0x68 }
+    r (ACD Readings)?(N6150 { 0x68, ... }
+    s Get Product Profile
+      Settings              { 0x6a}
+    r Get Product Profile
+      Settings              { 0x6a, 4bytes with Product Profile Settings }
+    s Set Product Profile
+      Settings              { 0x6b, 4bytes with Product Profile Settings }
+    r Set Product Profile
+      Settings OK ?         { 0x6b }
+    s Get code              { 0x6e, code }
+                            where code: see 0x08/0x0004 (no allowed code !)
+    r Get code              { 0x6e, code, allowed, allowed? (sec code (text)) }
+                            where code: see 0x08/0x0004
+                                  allowed: 0: no
+                                           1: yes
+?   s Reset Permanent
+?     Counters (nm->test36) { 0x74, 0x01, 0x01, 0x0e }
+?   r Reset Permanent
+?     Counters (nm->test36) { 0x74 }
+    s Call commands         { 0x7c, block }
+                            where where: command, (values)
+                                 command: 0x01
+                                     values: number(ASCII), 0x00 - makes voice call
+                                 command: 0x02 - answer call
+                                 command: 0x03 - release call
+    r Call commands         { 0x7c, command }
+    s Netmonitor            { 0x7e, field }
+                            where: field: 00: next
+                                          F0: reset
+                                          F1: off
+                                          F2: field test menus
+                                          F3: developer menus
+    s Get simlock info      { 0x8a, 0x00}
+    r Get simlock info      { 0x8a, 0x00, 0x01, lockstype, locksclosed, 0x00, 0x00, locksinfo(lock1,4,2,3), counter1,counter2,counter4,counter4,0x00 }
+                            where: lockstype:   bit1,bit2,bit3,bit4 - if set, selected lock is user lock
+                                   locksclosed: bit1,bit2,bit3,bit4 - if set, selected lock is closed
+                                   counter1 - counter4: counters for locks
+    s Buzzer pitch          { 0x8f, volume, hzLO, hzHI }
+                            if volume and hz is 0, it's off
+    r Buzzer pitch          { 0x8f}
+    s ACD Readings ?        { 0x91, parameter?(0x02,0x03,0x04,0x05,0x07) }
+    r ACD Readings ?        { 0x91, parameter?, value? }
+?   s ???(N6150)            { 0x98, 0x00 }
+?   r ???(N6150)            { 0x98, 0x00, 0x04 }
+    s Get bin ringtone      { 0x9e, location }
+                            where: location=0,1,etc.
+    r Get bin ringtone      { 0x9e, location, error, contents... }
+                            where location=0,1,etc.
+                                  error=0x0a, ringtone NOT available
+                                        0x00, OK
+    s Set bin ringtone      { 0xa0, location, 0x00, contenst... }
+                            where: location=0,1,etc.
+    r Set bin ringtone      { 0xa0, location, error }
+                              where location=0,1,etc.
+                                    error=0x0a, ringtone NOT set
+                                          0x00, ringtone set OK
+?   r Get MSid              { 0xb5, 0x01, 0x2f, msid, 0x25 }
+    s Get info about phone  { 0xc8, 0x01 }
+    r Get info about phone  { 0xc8, 0x01, 0x00, "V ", "firmware", 0x0a, "firmware date", 0x0a, "model", 0x0a, "(c) NMP.", 0x00 }
+    s Get MCU SW Checksum   { 0xc8, 0x02 }
+    r Get MCU SW Checksum   { 0xc8, 0x02, 0x00, checksum (4 bytes),0x00 }
+    s DPS External SW       { 0xc7, 0x03 }
+    r DSP External SW       { 0xc7, 0x03, 0x00, string,0x00 }
+    s Get HW                { 0xc8, 0x05 }
+    r Get HW                { 0xc8, 0x05, 0x00, HW version (4 bytes), 0x00 }
+    s Get "Made" Date       { 0xc8, 0x05 }
+    r Get "Made" Date       { 0xc8, 0x05, 0x00, date(4 bytes), 0x00 }
+    s Get DSP Internal SW   { 0xc8, 0x09 }
+    r Get DSP Internal SW   { 0xc8, 0x09, 0x00, version (1 bytes), 0x00 }
+    s Get PCI version       { 0xc8, 0x0b }
+    r Get PCI version       { 0xc8, 0x0b, 0x00, version, 0x00 }
+    s Get system ASIC       { 0xc8, 0x0c }
+    r Get system ASIC       { 0xc8, 0x0c, 0x00, string, 0x00 }
+    s Get COBBA             { 0xc8, 0x0d }
+    r Get COBBA             { 0xc8, 0x0d, 0x00, string, 0x00 }
+    s Get PLUSSA            { 0xc8, 0x0e }
+    r Get PLUSSA            { 0xc8, 0x0e, available, 0x00 }
+                            where available: 0x01: not available
+    s Get CCONT             { 0xc8, 0x0f }
+    r Get CCONT             { 0xc8, 0x0f, available, 0x00 }
+                            where available: 0x01: not available
+    s Get PPM version       { 0xc8, 0x10 }
+    r Get PPM version       { 0xc8, 0x10, 0x00, "V ", "firmware", 0x0a, "firmware date", 0x0a, "model", 0x0a, "(c) NMP.", 0x00 }
+    s Get PPM info          { 0xc8, 0x12 }
+    r Get PPM info          { 0xc8, 0x12, 0x00, PPM version ("B", "C", etc.), 0x00 }
+    s Set HW version        { 0xc9, 0x05, version, 0x00 }
+    s Get Product Code      { 0xca, 0x01 }
+    r Get Product Code      { 0xca, 0x01, 0x00, number, 0x00 }
+    s Get Order Number      { 0xca, 0x02 }
+    r Get Order Number      { 0xca, 0x02, 0x00, string, 0x00 }
+    s Get Prod.Ser.Number   { 0xca, 0x03 }
+    r Get Prod.Ser.Number   { 0xca, 0x03, 0x00, number, 0x00 }
+    s Get Basic Prod.Code   { 0xca, 0x04 }
+    r Get Basic Prod.Code   { 0xca, 0x04, 0x00, number, 0x00 }
+    s Set Product Code      { 0xcb, 0x01, product code, 0x00 }
+    s Set Order Number      { 0xcb, 0x02, number, 0x00 }
+    s Set Prod.Ser.Number   { 0xcb, 0x03, number, 0x00 }
+    s Get (original ?)IMEI  { 0xcc, 0x01 }
+    r Get (original ?)IMEI  { 0xcc, 0x01, IMEI, 0x00 }
+    s Get Manufacture Month { 0xcc, 0x02 }
+    r Get Manufacture Month { 0xcc, 0x02, 0x00, string, 0x00 }
+    s Get Purchare date     { 0xcc, 0x04 }
+    r Get Purchare date     { 0xcc, 0x04, 0x00, string, 0x00 }
+    s Set "Made" date       { 0xcd, 0x02, string, 0x00 }
+    s Make "all" phone tests{ 0xce,0x1d,0xfe,0x23,0x00,0x00}
+    s Make one phone test   { 0xce,0x1d,num1,num2,num3,num4}
+                            Where num1-num4: 0x02,0x00,0x00,0x00;
+                                             0x04,0x00,0x00,0x00;
+                                             0x08,0x00,0x00,0x00;
+                                             0x10,0x00,0x00,0x00;
+                                             0x20,0x00,0x00,0x00;
+                                             0x40,0x00,0x00,0x00;
+                                             0x80,0x00,0x00,0x00;
+                                             0x00,0x01,0x00,0x00;
+                                             0x00,0x02,0x00,0x00;
+                                             0x00,0x04,0x00,0x00; - "Power off"
+                                               No test for "Security data"
+                                             0x00,0x10,0x00,0x00;
+                                             0x00,0x20,0x00,0x00;
+                                             0x00,0x40,0x00,0x00;
+                                             0x00,0x80,0x00,0x00;
+                                             0x00,0x00,0x01,0x00;
+                                             ....
+                                             0x00,0x00,0x10,0x00;
+    s Result of phone tests { 0xcf }
+    r Result of phone tests { 0xcf, number of tests, results of next tests }
+?   s ???                   { 0xd1 }
+?   r ???(N5110)            { 0xd1, 0x00, 0x1d, 0x00, 0x01, 0x08, 0x00 }
+    s LCD Test              { 0xd3, value }
+                            where value: 0x03, 0x02 - 1'st test
+                                        0x03, 0x01 - 2'nd test
+                                         0x02, 0x03 - clears screen
+    s ACD Readings(N6150)?  { 0xd4, 0x02, 0x00, 0x02, 0x00, 0x0e, 0x01}
+    r ACD Readings(N6150)?  { 0xd4, 0x02, 0x00, 0x02, 0x00, 0x0e, 0x01, ?}
+    r Function of           { 0xff, 0x8c }
+      0x40 msgtype not
+      supported ?
+0x78:
+    s Status confirm        { 0x0201, 0x03 }
+    r Incoming call seq1    { 0x0102 0x0e 0x03 }
+    r Incoming call seq2    { 0x0102 0x7e 0x01 }
+0x79:
+    s CarKit enable         { 0x0201 0x01 0x62 0x00 }
+    r CarKit enabled        { 0x0201 0x02 0x06 0x00 "V " {version} "\nHFU"
+                                     0x00 }
+0x7a: settings
+    r Set setting           { 0x01eb, number, 0x00 }
+    s Set setting           { 0x01ec, number, contents }
+                            where for number:
+                              0x15 (startup logo) : 0x00, 0x00, 0x00, 0x04,
+                                        0xc0, 0x02, 0x00, height, 0xc0, 0x03, 0x00, width,
+                                       0xc0, 0x04, 0x03, 0x00, {bitmap} }
+                                where width, height, {bitmap}: see 0x7a/0x01ed 0x15
+    s Get setting           { 0x01ee, number}
+                            where number: 0x01 - 0x1e
+                              0x15: startup logo
+                              0x1c: security code
+    r Get setting           { 0x01ed,number, 0x00, contents}
+                            where for number:
+                              0x15 (startup logo) : 0x00, 0x00, 0x00, 0x04,
+                                        0xc0, 0x02, 0x00, height, 0xc0, 0x03, 0x00, width,
+                                        0xc0, 0x04, 0x03, 0x00, {bitmap} }
+                                where height: 60 (0x3c) or 65
+                                      width:  96 (0x60)
+                                      {bitmap}: like other bitmaps but pixels
+                                                placed vertically.
+                              0x1c (security code): {code(ascii)}, 0x00 
+0x7f: Acknowledge(FBUS/IRDA){+type, seq }
+      Acknowledge(MBUS)...
+0xd0: 
+    s Power on message seq1 {+04 }
+    r Power on message seq1 {+05 }
+0xd1:
+    s Get HW&SW version     { 0x0003, 0x00 }
+0xd2:
+    r Get HW&SW version     { 0x0003 "V " "firmware\n" "firmware date\n"
+                              "model\n" "(c) NMP." }
+0xf4: Power on message seq 2
diff --git a/Docs/protocol/nokia.txt b/Docs/protocol/nokia.txt
new file mode 100644 (file)
index 0000000..1f28639
--- /dev/null
@@ -0,0 +1,280 @@
+$Id$
+
+Document describing protocol used in Nokia phones.
+
+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.
+
+Last update 01.03.2001
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Assembled by
+       Balazs Nagy (js@lsc.hu)
+       Alfred R. Nurnberger <arnu@flosys.com>
+       Hugh Blemings <Hugh.Blemings@vsb.com.au>
+       Mike Bradley <mike@trumpington.st>
+       Odinokov Serge <serge@takas.lt>
+       Pavel Janik <Pavel@Janik.cz>
+       Pawe³ Kot <pkot@linuxnews.pl>
+       Marcin Wiacek (Marcin-Wiacek@TOPNET.PL)
+        Jens Bennfors <jens.bennfors@ing.hj.se>
+        Michael Hund <michael@drhund.de>
+        Jay Bertrand <jay.bertrand@libertysurf.fr>
+                     <arnu@venia.net>
+        Andrew Kozin
+        Pavel Machek <pavel@ucw.cz>
+        Diego Betancor <dbetancor@duocom.net>
+       ... and other members of gnokii mailing list
+            and authors of some WWW pages.
+
+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.
+
+ Frame format for MBUS version 1:
+
+  Request from Computer/Answer from Phone:
+
+   { DestDEV, SrcDEV, FrameLength, MsgType, {block}, id, ChkSum }
+
+       where DestDEV, SrcDEV:   0x00: phone
+                                0xf8: PC (wakeup msg)
+                                0xe4: PC (normal msg)
+             FrameLength:       length of data frame. Maximal 0x78. Longer
+                                frames are divided into smaller.
+             MsgType:           see List
+             {block}:           main frame
+             id:                request identity number 1..n, incremented after
+                                the request is accepted
+             ChkSum:            XOR on frame's all numbers
+
+  Ack from Phone:
+    
+    { DestDEV, 0x00, FrameLength, MsgType, {block} , id, ChkSum }
+
+       where DestDEV:           taken from original request packet
+             FrameLength:       0x7f, when DestDEV = 0xe4
+                                0x7e, when DestDEV = 0xf8
+             MsgType:           see List. Present only, when DestDEV = 0xf8
+             {block}:           main frame. Present only, when DestDEV = 0xf8
+             id:                request identity number 1..?, corresponding
+                                to the original request packet id
+                                the request is accepted
+             ChkSum:            XOR on frame's all numbers
+
+    Update: description above according to the
+    http://www.gadgets.demon.co.uk/nokia21xx/protocol.html.
+
+    Pavel Machek <pavel@ucw.cz> wrote:
+      0x7e is actually registration acknowledge. Both have nothing to do
+      with DestDEV, except that special device needs to be used for
+      registration.
+
+  Ack from Computer:
+
+    { 0x00, SrcDEV, 0x7f, id, ChkSum }
+
+       where SrcDEV:            taken from response packet
+             id:                request identity number 1..?, corresponding
+                                to the response packet id
+                                the request is accepted
+             ChkSum:            XOR on frame's all numbers
+
+   Port settings:
+     Speed 9600 bps, Bits 8, ParityOdd, Stop Bits 1, DTR and RTS logic 0
+
+   In the MBUS bus, the phone has only one connector for transmition and
+   reception.
+
+   Because of this characteristics of the phone connector, every time that the
+   PC writes into the phone it is writing as well into its own Rx. So every
+   time the PC sends info into the phone it finds that same information in its
+   own Rx buffers, like a mirror copy. This should be discarded.
+   
+   The communications is made like an old cb radio, only one
+   talking at a time. Many transmission are made this way:
+
+     <computer sends request>
+     <phone sends ack>
+     <phone sends response>
+     <computer sends ack>
+
+   Some frames are sent from phone without asking for them
+
+   You have to implement collision protocol. IE. you should listen for
+   what you are transmitting, and if it does not come back, you have
+   collision.
+
+   You should wait for bus to be free for 3 miliseconds before normal
+   message, and for 2.5 miliseconds before acknowledge. You should wait
+   for acknowledge for 200 miliseconds, then retransmit.
+
+ Frame format for FBUS version 1:
+
+    { FrameID, FrameLength, MsgType, {block}, SeqNo, ChkSum }
+
+         where FrameID:         0x01 Command frame from computer to Nokia 
+                                0x02 ??? - Data call frame from computer to Nokia - ??? 
+                                0x03 Data call frame from Nokia to computer 
+                                0x04 Command frame from Nokia to computer 
+               FrameLength:     {block} + 2
+               MsgType:         see List
+               SeqNum:          Sequence number of command in case where direction is
+                                from ME to computer, the sequence number is 
+                                counting from 0x30 to 0x37 and resetting back to 0x30.
+                                When direction is from computer to ME,
+                                sequence number counts from 0x08 to 0x0f and resets back to 0x08.
+                                It may not be required to be this way.
+                                Sequence numbers are used in acknowledging commands.
+               ChkSum1:         CRC = 0;
+                                for (i = 0; i < (2 + CMD_LEN); i++)
+                                  CRC ^= frame[i];
+
+ Frame format for FBUS version 2/Direct IRDA:
+
+    { FrameID, DestDEV, SrcDEV, MsgType, 0x00, FrameLength, {block}, FramesToGo,
+      SeqNo, PaddingByte?, ChkSum1, ChkSum2 }
+
+         where FrameID:         0x1c: IR / FBUS
+                                0x1e: Serial / FBUS
+               DestDev, SrcDev: 0x00: mobile phone
+                                0x0c: TE (FBUS) [eg. PC]
+               MsgType:         see List
+               FrameLength:     {block} + 2 (+ 1 if PaddingByte exists)
+               FramesToGo:      0x01 means the last frame
+               SeqNo:           [0xXY]
+                                  X: 4: first block
+                                     0: continuing block
+                                     Y: sequence number
+               PaddingByte:     0x00 if FrameLength would be an odd number
+                                anyways it doesn't exists
+               ChkSum1:         XOR on frame's odd numbers
+               ChkSum2?:        XOR on frame's even numbers
+
+ Frame format for MBUS version 2:
+    { FrameID, DestDEV, SrcDEV, MsgType, FrameLengthLO, FrameLengthHI, {block},
+      SeqNo, ChkSum }
+
+         where FrameID:         0x1f: Serial / M2BUS
+               DestDev, SrcDev: 0x00: mobile phone
+                                0x1d: TE (M2BUS)
+                                0x10: TE (M2BUS) (Service Software ?)
+                                0x04: Carkit?
+                                0x48: DLR3 cable?
+                                0xF8: unknown target?
+                                0xFF: global target?
+               MsgType:         see List
+               FrameLength:     {block}
+               SeqNo:           sequence number
+               ChkSum:          XOR on frame's all numbers
+
+    Please note that M2BUS has only one checksum: XOR on frame[FrameID..SeqNo]
+
+  Ack:
+    
+    { FrameID, DestDEV, SrcDEV, 0x7f, Id_SeqNo, ChkSum }
+       
+        where Id_SeqNo:        Is the sequence number that you are
+                               acknowleging (from the other part).
+
+ Frame format for Infrared:
+
+    { FrameID, DestDEV, SrcDEV, MsgType, FrameLengthLo, FrameLengthHi, {block}}
+
+         where FrameID:         0x14
+               DestDev, SrcDev: 0x00: mobile phone
+                                0x0c: TE [eg. PC]
+               MsgType:         see List
+               FrameLength:     {block}
+
+ Frames list format:
+
+    hex: Short description
+       x msg desc                { ... }
+       0xXX   -> one byte
+       0xXXYY -> two bytes (== 0xXX, 0xYY)
+
+         where hex:     message type
+               x:       s=send (eg. to mobile), r=receive
+               { ... }: data after 0x00, 0x01 header
+               {+... }: raw data (without header)
+
+-------------------------------------------------------------------------------
+
+Misc (about MBUS version 2):
+
+0x4E commands:
+  (sent from a 5160i TDMA / 6160i TDMA / 6185 CDMA or 7110 GSM 
+   phone to the uC in the DLR-3 cable) 
+DLR-3 req:
+  1F 48 00 4E 00 02 01 XX SQ CS
+      frame sent from the phone to the DLR-3 cable
+      (after 15kOhm resistor detected betw. XMIC (3) and DGND (9).)                                                                                  
+      DSR,DCD,CTS flow control data is coded into the 2nd databyte 
+      XX: bit.0=/CTS 
+          bit.1=/DCD
+          bit.2=CMD/DATA
+          bit.3=DSR
+          bit.4-7=0 
+
+0x78 / 0x79 commands:
+  (used by handsfree carkit) Works also on GSM phones (5110 / 6110 / etc) 
+These commands are used by the Nokia Carkits to switch the phone audio path to 
+XMiC and XEAR , turn the phone on/off according to the car ignition, and
+control the PA loudspeaker amplifier in the carkit and the car radio mute
+output which silences the car radio during a call 
+mute status tone:
+  1F 04 00 78 00 04 01 02 0E 00 SQ CS
+     status indication = disable carkit audio amplifier (no audio / no tone) 
+mute status tone:
+  1F 04 00 78 00 04 01 02 0E 03 SQ CS
+     status indication = enable carkit audio amplifier (audio / tone present) 
+mute status call:
+  1F 04 00 78 00 04 01 02 07 00 SQ CS
+     status indication = disable radio mute output (no call) 
+mute status call:
+  1F 04 00 78 00 04 01 02 07 01 SQ CS
+     status indication = enable radio mute output (call active) 
+enable ???:
+  1F 04 00 78 00 04 01 02 08 01 SQ CS
+     status indication = enable ???  sent to HFU-2 on power on 
+  byte 9 (07,08,0E) seems to be a pointer to a memory location,
+  byte 10 is the data at this memeory location. 
+response from HFU:
+  1F 00 04 78 00 03 02 01 03 SQ CS
+     response message from HFU-2 (use unknown) 
+go HF and IGN on:
+  1F 00 04 79 00 05 02 01 01 63 00 SQ CS
+     enables carkit mode + turns phone on + req. mute status 
+go HF and IGN off:
+  1F 00 04 79 00 05 02 01 01 61 00 SQ CS
+     enables carkit mode + powers phone off (1 min delay) + req. mute status 
+ext. HS Offhk:
+  1F 00 04 79 00 05 02 01 01 23 00 SQ CS
+     enables carkit mode + external handset lifted (OFF-Hook) 
+ext. HS Onhk:
+  1F 00 04 79 00 05 02 01 01 63 00 SQ CS
+     enables carkit mode + external handset put back (ON-Hook) 
+  Ignition and Hook are coded into one byte 
+    bit.0 = 0:on power on 1:when in operation 
+    bit.1 = IGNITION STATUS 
+    bit.2 = x  can be 1 or 0 
+    bit.3 = 0 
+    bit.4 = 0 
+    bit.5 = 1 
+    bit.6 = Hook (inverted) 
+    bit.7 = 0 
+HFU-2 version:
+  1F 00 04 79 00 12 02 01 02 06 00 56 20 30 36 2E 30 30 0A 48 46 55 32 00 SQ CS
+for HFU-2:
+  1F 04 00 DA 00 02 00 02 SQ CS
+    function unknown - sent from Nokia phone to HFU-2mute output (call active ) 
+
+0xD0 commands: 
+init:
+  1F 00 1D D0 00 01 04 SQ CS
+    sent by the Service Software or HFU-2 on startup 
+init resp:
+  1F 1D 00 D0 00 01 05 SQ CS
+    response from phone to above frame 
diff --git a/Docs/sample/gnokiirc b/Docs/sample/gnokiirc
new file mode 100644 (file)
index 0000000..845aca8
--- /dev/null
@@ -0,0 +1,34 @@
+# This is a sample ~/.gnokiirc file.  Copy it into your
+# home directory and name it .gnokiirc.
+#
+
+[global]
+
+# Set port to the physical serial port used to connect to your phone
+port = /dev/ttyS0
+
+# Set model to the model number of your phone
+model = 6110
+
+# Initlength controls the number of characters sent to the
+# phone during initialisation.  You can either set it to
+# the word "default" or a positive integer.
+# 
+# You can try setting this value if you want to connect
+# to the phone quicker.  If you've never noticed the
+# connection to be slow, it is suggested that you 
+# leave this alone.  Read the initialisation code in fbus-xxxx
+# to understand what this changes if you're curious.
+initlength = default
+
+# The type of the connection, for IR set this to infrared or irda.
+# If you have 6210/6250/7110 phone and dau9p cable (the one you can
+# use with 6100 series and cannot use hardware modem from the phone)
+# you may want to use 'dau9p' value to get faster initialization.
+connection = serial
+
+# Set bindir to point to the location of the various gnokii binaries.
+# In particular ensure that mgnokiidev is in this location, with
+# permissions 4750, owned by root, group gnokii.  Ensure you
+# are in the gnokii group and that the group exists...
+bindir = /usr/local/sbin/
diff --git a/Docs/sample/options b/Docs/sample/options
new file mode 100644 (file)
index 0000000..63e0eb6
--- /dev/null
@@ -0,0 +1,7 @@
+modem
+crtscts
+defaultroute
+asyncmap 0
+mtu 1500
+mru 1500
+user ppp
diff --git a/Docs/sample/pap-secrets b/Docs/sample/pap-secrets
new file mode 100644 (file)
index 0000000..96d459b
--- /dev/null
@@ -0,0 +1 @@
+ppp * ppp
diff --git a/Docs/sample/ppp-6210-modem b/Docs/sample/ppp-6210-modem
new file mode 100755 (executable)
index 0000000..3111a52
--- /dev/null
@@ -0,0 +1,11 @@
+#!/bin/sh
+/usr/sbin/chat -v                                       \
+        TIMEOUT         30                              \
+        ABORT           '\nBUSY\r'                      \
+        ABORT           '\nNO ANSWER\r'                 \
+        ABORT           '\nRINGING\r\n\r\nRINGING\r'    \
+        ABORT           '\nNO CARRIER\r'                \
+        ''              '\r\dATZ'                       \
+        TIMEOUT         60                              \
+        OK              ATDT$TELEPHONE                  \
+        CONNECT         ''                              
diff --git a/Docs/sample/ppp-gnokii b/Docs/sample/ppp-gnokii
new file mode 100644 (file)
index 0000000..2b12aaf
--- /dev/null
@@ -0,0 +1,9 @@
+#!/bin/sh
+/usr/sbin/chat -v                                       \
+        TIMEOUT         30                              \
+        ABORT           '\nBUSY\r'                      \
+        ABORT           '\nNO ANSWER\r'                 \
+        ABORT           '\nRINGING\r\n\r\nRINGING\r'    \
+        ABORT           '\nNO CARRIER\r'                \
+        ''              ATDT$TELEPHONE                  \
+        CONNECT         ''                              
diff --git a/Docs/sample/ppp-on b/Docs/sample/ppp-on
new file mode 100644 (file)
index 0000000..3774465
--- /dev/null
@@ -0,0 +1,9 @@
+#!/bin/sh
+TELEPHONE=501808080
+LOCAL_IP=0.0.0.0       
+REMOTE_IP=0.0.0.0     
+NETMASK=255.255.255.0   
+DIALER_SCRIPT=/etc/ppp/ppp-gnokii
+export $TELEPHONE
+exec /usr/sbin/pppd debug /dev/gnokii 115200 $LOCAL_IP:$REMOTE_IP connect $DIALER_SCRIPT
diff --git a/Docs/test.vcs b/Docs/test.vcs
new file mode 100644 (file)
index 0000000..9f6a1d8
--- /dev/null
@@ -0,0 +1,33 @@
+BEGIN:VCALENDAR
+VERSION:1.0
+
+BEGIN:VEVENT:
+CATEGORIES:PHONE CALL
+SUMMARY: 0123456789
+DTSTART:20000623T194400
+AALARM:20000623T194300
+END:VEVENT
+
+BEGIN:VEVENT:
+CATEGORIES:MISCELLANEOUS
+SUMMARY:Gnokii Reminder
+DTSTART:20000623T204400
+AALARM:20000623T204300
+END:VEVENT
+
+BEGIN:VEVENT:
+CATEGORIES:MEETING
+SUMMARY:Gnokii Meeting
+DTSTART:20000623T204400
+AALARM:20000623T204300
+END:VEVENT
+
+BEGIN:VEVENT:
+CATEGORIES:SPECIAL OCASSION
+SUMMARY:Marcels Birthday
+DTSTART:19790806T031000
+AALARM:20000806T100000
+END:VEVENT
+
+END:VCALENDAR
+
diff --git a/INSTALL b/INSTALL
new file mode 100644 (file)
index 0000000..3551ce2
--- /dev/null
+++ b/INSTALL
@@ -0,0 +1,54 @@
+
+ TODO: write me!
+
+ For package building see the 'Docs/packaging-howto' file.
+
+0/     If you got an CVS version
+
+       autoconf
+
+1/
+       ./configure [ option ]
+
+       where basic options:
+
+               --prefix=DIR
+                       Install path prefix. Default /usr/local/
+
+               --without-x
+                       Compile without GTK (Xwin) programs
+               
+               --disable-nls
+                       Set if you don't have/want GNU gettext support
+               
+               --enable-security
+                       Set if you want to enable all security features
+
+               --enable-debug
+                       Set if you want debug code in gnokii
+
+               --help          
+                       show all options
+
+
+       Good default (example):
+
+               ./configure --prefix=/usr \
+                           --enable-gettext
+
+2/
+       compilation:
+       
+               make 
+               groupadd gnokii  - it is really needed
+               (make dep - if you want/need) 
+               make install
+               make install-docs
+
+       clean source:
+       
+               make clean       - standard clean
+               make distclean   - clean all ./configure outputs
+                                  (after this command you must run
+                                   ./configure again if you need use
+                                    any Makefile)
diff --git a/Makefile b/Makefile
new file mode 100644 (file)
index 0000000..cfef684
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,182 @@
+
+#
+# $Id$
+#
+# Makefile for the GNOKII tool suite.
+#
+# Copyright (C) 1999 Hugh Blemings & Pavel Janík ml.
+#               2000 Karel Zak
+#
+
+TOPDIR=.
+
+#
+# Makefile.global contains gnokii global settings
+#
+include ${TOPDIR}/Makefile.global
+
+BIN_DIRS = gnokii
+
+ifndef WIN32
+BIN_DIRS += gnokiid utils
+endif
+
+DIRS =  common/phones \
+       common/links \
+       common/devices \
+       common/data \
+        common \
+       $(BIN_DIRS)
+
+GTK_DIRS =  xgnokii
+
+PO_DIR   =     po
+DOCS_DIR =     Docs
+
+all: $(DIRS)
+       @if [ "x$(USE_NLS)" = xyes ]; then \
+               $(MAKE) -C $(PO_DIR); \
+       fi
+
+       @if [ "$(GTK_LIBS)" ]; then \
+               for dir in $(GTK_DIRS); do \
+                   if [ -e $$dir/Makefile ]; then \
+                       $(MAKE) -C $$dir; \
+                   fi; \
+               done \
+       fi
+       @echo "done"
+
+dummy:
+
+$(DIRS): dummy
+       $(MAKE) -C $@
+
+clean:
+       $(RM) *~ *.orig *.rej include/*~ include/*.orig include/*.rej
+       @for dir in $(DIRS); do \
+           if [ -e $$dir/Makefile ]; then \
+               $(MAKE) -C $$dir clean; \
+           fi; \
+       done
+       @if [ "x$(USE_NLS)" = xyes ]; then \
+               $(MAKE) -C $(PO_DIR) clean; \
+       fi
+
+ifdef OWN_GETOPT
+               $(MAKE) -C getopt clean
+endif
+
+       @if [ "$(GTK_LIBS)" ]; then \
+               for dir in $(GTK_DIRS); do \
+                   if [ -e $$dir/Makefile ]; then \
+                       $(MAKE) -C $$dir clean; \
+                   fi; \
+               done \
+       fi
+
+       $(MAKE) -C Docs clean
+
+       @echo "done"
+
+distclean:     clean
+       @if [ -e $(PO_DIR)/Makefile ]; then \
+               $(MAKE) -C $(PO_DIR) distclean; \
+       fi
+       $(RM) Makefile.global config.cache config.log config.status \
+               include/config.h \
+               include/config.h.in \
+               packaging/RedHat/gnokii.spec \
+               packaging/Slackware/SlackBuild \
+               po/Makefile.in \
+               debian
+       $(RM) `$(FIND) . -name "*~"`
+       @echo "done"
+
+dep:
+       @for dir in $(DIRS); do \
+           if [ -e $$dir/Makefile ]; then \
+               $(MAKE) -C $$dir dep; \
+           fi; \
+       done
+
+       @if [ "$(GTK_LIBS)" ]; then \
+               for dir in $(GTK_DIRS); do \
+                   if [ -e $$dir/Makefile ]; then \
+                       $(MAKE) -C $$dir dep; \
+                   fi; \
+               done \
+       fi
+       @echo "done"
+
+install: all
+       @for dir in $(DIRS); do \
+           if [ -e $$dir/Makefile ]; then \
+               $(MAKE) -C $$dir install; \
+           fi; \
+       done
+       @if [ "x$(USE_NLS)" = xyes ]; then \
+               $(MAKE) -C $(PO_DIR) install; \
+       fi
+
+       @if [ "$(GTK_LIBS)" ]; then \
+               for dir in $(GTK_DIRS); do \
+                   if [ -e $$dir/Makefile ]; then \
+                       $(MAKE) -C $$dir install; \
+                   fi; \
+               done \
+       fi
+       @echo "done"
+
+install-docs:
+       $(MAKE) -C $(DOCS_DIR) install
+       @echo "done"
+
+install-strip:
+       @for dir in $(BIN_DIRS); do \
+               if [ -e $$dir/Makefile ]; then \
+                       $(MAKE) -C $$dir install-strip; \
+               fi; \
+       done
+
+       @if [ "$(GTK_LIBS)" ]; then \
+               @for dir in $(GTK_DIRS); do \
+                       if [ -e $$dir/Makefile ]; then \
+                               $(MAKE) -C $$dir install-strip; \
+                       fi; \
+               done \
+       fi
+       @echo "done"
+
+install-suid:
+       @for dir in $(BIN_DIRS); do \
+               if [ -e $$dir/Makefile ]; then \
+                       $(MAKE) -C $$dir install-suid; \
+               fi; \
+       done
+       @if [ "$(GTK_LIBS)" ]; then \
+               @for dir in $(GTK_DIRS); do \
+                       if [ -e $$dir/Makefile ]; then \
+                               $(MAKE) -C $$dir install-suid; \
+                       fi; \
+               done \
+       fi
+       @echo "done"
+
+install-ss:
+       @for dir in $(BIN_DIRS); do \
+               if [ -e $$dir/Makefile ]; then \
+                       $(MAKE) -C $$dir install-ss; \
+               fi; \
+       done
+
+       @if [ "$(GTK_LIBS)" ]; then \
+               for dir in $(GTK_DIRS); do \
+                       if [ -e $$dir/Makefile ]; then \
+                               $(MAKE) -C $$dir install-ss; \
+                       fi; \
+               done \
+       fi
+       @echo "done"
+
+.PHONY: all install clean distclean dep depend install-docs
diff --git a/Makefile.global.in b/Makefile.global.in
new file mode 100644 (file)
index 0000000..05f4a5a
--- /dev/null
@@ -0,0 +1,77 @@
+
+#
+# $Id$
+#
+# Global Makefiles configuration for the GNOKII.
+#
+# Copyright (C) 1999 Hugh Blemings & Pavel Janík ml.
+#               2000 Karel Zak
+#
+
+
+
+SHELL          = @SHELL@
+
+LD             = @CC@ -Xlinker -r -nostdlib -nodefaultlibs -o
+
+PACKAGE        = gnokii
+
+srcdir         = @srcdir@
+prefix         = @prefix@
+exec_prefix    = @exec_prefix@
+
+bindir         = @bindir@
+sbindir        = @sbindir@
+xbindir        = ${prefix}/X11R6/bin/
+libdir         = @libdir@
+xgnokii_libdir = @XGNOKIIDIR@/@XPACKAGE@
+man1dir        = @mandir@/man1/
+man8dir        = @mandir@/man8/
+xmandir        = ${prefix}/X11R6/man/man1/
+docdir         = ${prefix}/doc/${PACKAGE}
+locdir         = @datadir@/locale
+
+BIN_MODE       = 0755
+TEXT_MODE      = 0444
+
+INSTALL        = @INSTALL@
+RM             = @RM@ -f
+FIND           = @FIND@
+MAKE           = @MAKE@
+XGETTEXT       = @XGETTEXT@
+MSGFMT         = @MSGFMT@
+
+CC             = @CC@
+CFLAGS         = @CFLAGS@
+CPPFLAGS       = @CPPFLAGS@
+LIBS           = @LIBS@
+LEX            = @LEX@
+
+GTK_CFLAGS     = @GTK_CFLAGS@
+GTK_LIBS       = @GTK_LIBS@
+PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
+PTHREAD_LIBS   = @PTHREAD_LIBS@
+XPM_LIBS       = @XPM_LIBS@
+XPM_CFLAGS     = @XPM_CFLAGS@
+OWN_GETOPT     = @OWN_GETOPT@
+
+USE_NLS        = @USE_NLS@
+HAVE_XGNOKII   = @HAVE_XGNOKII@
+
+#
+# Global include directory
+#      ($TOPDIR is defined in Makefile)
+#
+GNOKII_INCLUDE = $(TOPDIR)/include
+
+#
+# Win32 option
+#
+ifdef WIN32
+       WIN32 += -I$(TOPDIR)/win32
+endif
+
+
+CFLAGS += -I$(GNOKII_INCLUDE)
+LDFLAGS = $(LIBS) -Wl,--rpath -Wl,$(libdir)
+
diff --git a/TODO b/TODO
new file mode 100644 (file)
index 0000000..137e153
--- /dev/null
+++ b/TODO
@@ -0,0 +1,45 @@
+0.4.0 THINGS:
+
+= Documentation:
+  - update spec file for instalation of manual page
+  - write some docs about gnokiid -- beeing written
+
+- --disable-debug should really disable debug :-)
+- FreeBSD build and work - is it done already?
+- 6160 support (is this useful: http://www.venia.net/tdma/? - yes it was -HAB)
+  Please email Hugh before delving into x160 support.
+- 7110 support (fbus and/or plain AT commands)
+- integrate xlogos into xgnokii
+- incoming RLP calls (will anyone actually use this?)
+- other mobile phones (Ericsson, Siemens? - any support from vendor? Are they
+  better then Nokia? in this? Any programs already existing?)
+- getsecuritycode patch (I have it in ~/ so if there is anyone interested... We
+  must include it in ---with-security).
+- international characters in SMS messages and phonebooks - see the mailing
+  list messages in archive -- almost done for SMS
+- Business card sending via SMS (I do not know if it is already implemented or
+  not)
+- if GNU getopt is not available in the system, use compile getopt from
+  source tree (move it from win32/)
+- gnokiid and other AT commands.
+- we should report back to xgnokii what functions are and which are not
+  supported so xgnokii can disable some GUI stuff on phones which do not
+  support this functions.  (Should be an extension to existing GSM_Information
+  structure - HAB)
+- multiframed packets
+- how can we read the name of the uploaded tune? Can we do that?
+- SMS errors (Gary reported them on Fri, 25 Feb 2000 15:55:58 -0500 (EST))
+- storing of SMS messages into INBOX (Pavel already sent the dump of such
+  message) -- done, not applied
+- Marcin's setprofile patch
+- --getdisplaystatus and Alarm sign? Is there any indication of it?
+- gnokii --setlogo logofile [caller group number] [group name] is not
+  working correctly as is
+- --netmonitor field/devel should not report the menu (which contains
+  useless data)... Try it.
+- integrate Marcin's patches
+
+Additional things
+=================
+
+- ringtone editor
diff --git a/VERSION b/VERSION
new file mode 100644 (file)
index 0000000..b790e70
--- /dev/null
+++ b/VERSION
@@ -0,0 +1 @@
+0.4.0pre2
diff --git a/common/Makefile b/common/Makefile
new file mode 100644 (file)
index 0000000..9b44ad1
--- /dev/null
@@ -0,0 +1,71 @@
+
+#
+# $Id$
+#
+# Makefile for the GNOKII tool suite.
+#
+# Copyright (C) 1999 Hugh Blemings & Pavel Janík ml.
+#               2000 Karel Zak
+#
+
+#
+# For this common directory is used "subsystem.o" .o files concept.
+#   (the list of object files to be linked together (to COMMON.o),
+#   and other dirs is used this _one_ file (instead of all OBJS)
+#
+
+TOPDIR=..
+include $(TOPDIR)/Makefile.global
+
+OBJS = cfgreader.o \
+       device.o \
+       gsm-ringtones.o \
+       gsm-api.o \
+       gsm-networks.o \
+       vcal.o \
+       misc.o \
+        gsm-sms.o \
+       gsm-bitmaps.o \
+       gsm-common.o \
+       gsm-encoding.o \
+       gsm-error.o \
+       gsm-statemachine.o
+
+all: libgnokii.so gsm-filetypes.o
+
+phones/PHONES.o:
+       $(MAKE) -C phones PHONES.o
+
+links/LINKS.o:
+       $(MAKE) -C links LINKS.o
+
+devices/DEVICES.o:
+       $(MAKE) -C devices DEVICES.o
+
+libgnokii.so: $(OBJS) phones/PHONES.o links/LINKS.o devices/DEVICES.o
+       $(CC) -shared -o libgnokii.so $(OBJS) phones/PHONES.o links/LINKS.o devices/DEVICES.o
+
+gsm-filetypes.o: gsm-filetypes.c
+       $(CC) $(CFLAGS) $(CPPFLAGS) $(XPM_CFLAGS) -c gsm-filetypes.c
+
+vcal.c: vcal.lx
+       $(LEX) -ovcal.c vcal.lx
+
+clean:
+       $(RM) $(OBJS) *~ depend libgnokii.so gsm-filetypes.o vcal.c phones/PHONES.o links/LINKS.o devices/DEVICES.o
+
+install:
+       $(INSTALL) -d $(libdir)
+       $(INSTALL) libgnokii.so $(libdir)
+       @echo
+
+depend dep:
+       $(CC) $(CFLAGS) -MM *.c >depend
+
+ifeq (depend,$(wildcard depend))
+include depend
+endif
+
+
+.PHONY: all install clean dep depend
+
diff --git a/common/cfgreader.c b/common/cfgreader.c
new file mode 100644 (file)
index 0000000..1b18760
--- /dev/null
@@ -0,0 +1,322 @@
+/*
+
+  $Id$
+
+  G N O K I I
+
+  A Linux/Unix toolset and driver for Nokia mobile phones.
+
+  Copyright (C) 1999, 2000 Hugh Blemings & Pavel Janík ml.
+
+  Released under the terms of the GNU GPL, see file COPYING for more details.
+
+  Config file (/etc/gnokiirc and ~/.gnokiirc) reader.
+
+  Modified from code by Tim Potter.
+
+  $Log$
+  Revision 1.1.1.1  2001/11/25 21:58:58  short
+  :pserver:cvs@pserver.samba.org:/cvsroot - gnokii - Sun Nov 25 22:56 CET 2001
+
+  Revision 1.16  2001/11/14 10:46:12  pkot
+  Small cleanup with __unices__
+
+  Revision 1.15  2001/06/10 11:24:57  machek
+  Kill "slash star" inside comment.
+
+  Revision 1.14  2001/03/19 23:43:45  pkot
+  Solaris/ *BSD '#if defined' cleanup
+
+  Revision 1.13  2001/03/13 01:21:38  pkot
+  *BSD updates (Bert Driehuis)
+
+  Revision 1.12  2001/01/08 15:11:36  pkot
+  Documentation updates.
+  Fixed some bugs and removed FIXMEs.
+  We need to move some stuff from configure.in to aclocal.m4
+
+  Revision 1.11  2001/01/02 09:09:07  pkot
+  Misc fixes and updates.
+
+  Revision 1.10  2000/12/19 16:18:15  pkot
+  configure script updates and added shared function for configfile reading
+
+
+*/
+
+#include "misc.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+#include <errno.h>
+
+#include "cfgreader.h"
+
+/* Read configuration information from a ".INI" style file */
+struct CFG_Header *CFG_ReadFile(char *filename)
+{
+        FILE *handle;
+        char *line;
+        char *buf;
+        struct CFG_Header *cfg_info = NULL, *cfg_head = NULL;
+
+        /* Error check */
+        if (filename == NULL) {
+                return NULL;
+        }
+
+        /* Initialisation */
+        if ((buf = (char *)malloc(255)) == NULL) {
+                return NULL;
+        }
+    
+        /* Open file */
+        if ((handle = fopen(filename, "r")) == NULL) {
+#ifdef DEBUG
+                fprintf( stderr, "CFG_ReadFile - open %s: %s\n", filename, strerror(errno));
+#endif /* DEBUG */
+                return NULL;
+        }
+#ifdef DEBUG
+        else
+                fprintf( stderr, "Opened configuration file %s\n", filename );
+#endif /* DEBUG */
+
+        /* Iterate over lines in the file */
+        while (fgets(buf, 255, handle) != NULL) {
+
+                line = buf;
+
+                /* Strip leading, trailing whitespace */
+                while(isspace((int) *line))
+                        line++;
+
+                while((strlen(line) > 0) && isspace((int) line[strlen(line) - 1]))
+                        line[strlen(line) - 1] = '\0';
+        
+                /* Ignore blank lines and comments */
+                if ((*line == '\n') || (*line == '\0') || (*line == '#'))
+                        continue;
+
+                /* Look for "headings" enclosed in square brackets */
+                if ((line[0] == '[') && (line[strlen(line) - 1] == ']')) {
+                        struct CFG_Header *heading;
+
+                        /* Allocate new heading entry */
+                        if ((heading = (struct CFG_Header *)malloc(sizeof(*heading))) == NULL) {
+                                return NULL;
+                        }
+
+                        /* Fill in fields */
+                        memset(heading, '\0', sizeof(*heading));
+            
+                        line++;
+                        line[strlen(line) - 1] = '\0';
+
+                        /* FIXME: strdup is not ANSI C compliant. */
+                        heading->section = strdup(line);
+
+                        /* Add to tail of list  */
+                        heading->prev = cfg_info;
+
+                        if (cfg_info != NULL) {
+                                cfg_info->next = heading;
+                        } else {
+                                /* Store copy of head of list for return value */
+                                cfg_head = heading;
+                        }
+
+                        cfg_info = heading;
+
+#ifdef DEBUG
+                        fprintf(stderr, "Added new section %s\n", heading->section);
+#endif
+                        /* Go on to next line */
+
+                        continue;
+                }
+
+                /* Process key/value line */
+
+                if ((strchr(line, '=') != NULL) && cfg_info != NULL) {
+                        struct CFG_Entry *entry;
+                        char *value;
+
+                        /* Allocate new entry */
+                        if ((entry = (struct CFG_Entry *)malloc(sizeof(*entry))) == NULL) {
+                                return NULL;
+                        }
+
+                        /* Fill in fields */
+                        memset(entry, '\0', sizeof(*entry));
+
+                        value = strchr(line, '=');
+                        *value = '\0';                /* Split string */
+                        value++;
+            
+                        while(isspace((int) *value)) {      /* Remove leading white */
+                                value++;
+                        }
+
+                        entry->value = strdup(value);
+
+                        while((strlen(line) > 0) && isspace((int) line[strlen(line) - 1])) {
+                                line[strlen(line) - 1] = '\0';  /* Remove trailing white */
+                        }
+
+                        /* FIXME: strdup is not ANSI C compliant. */
+                        entry->key = strdup(line);
+
+                        /* Add to head of list */
+
+                        entry->next = cfg_info->entries;
+
+                        if (cfg_info->entries != NULL) {
+                                cfg_info->entries->prev = entry;
+                        }
+
+                        cfg_info->entries = entry;
+
+#ifdef DEBUG
+                        fprintf(stderr, "Adding key/value %s/%s\n", entry->key, entry->value);
+#endif
+                        /* Go on to next line */
+                        continue;
+                }
+
+                        /* Line not part of any heading */
+                fprintf(stderr, "Orphaned line: %s\n", line);
+        }
+
+        /* Return pointer to configuration information */
+        return cfg_head;
+}
+
+/*  Write configuration information to a config file */
+
+int CFG_WriteFile(struct CFG_Header *cfg, char *filename)
+{
+  /* Not implemented - tricky to do and preserve comments */
+
+  return 0;
+}
+
+/* 
+ * Find the value of a key in a config file.  Return value associated
+ * with key or NULL if no such key exists. 
+ */
+
+char *CFG_Get(struct CFG_Header *cfg, char *section, char *key)
+{
+        struct CFG_Header *h;
+        struct CFG_Entry *e;
+
+        if ((cfg == NULL) || (section == NULL) || (key == NULL)) {
+                return NULL;
+        }
+
+        /* Search for section name */
+        for (h = cfg; h != NULL; h = h->next) {
+                if (strcmp(section, h->section) == 0) {
+                        /* Search for key within section */
+                        for (e = h->entries; e != NULL; e = e->next) {
+                                if (strcmp(key, e->key) == 0) {
+                                        /* Found! */
+                                        return e->value;
+                                }
+                        }
+                }
+        }
+        /* Key not found in section */
+        return NULL;
+}
+
+/*  Set the value of a key in a config file.  Return the new value if
+    the section/key can be found, else return NULL.  */
+
+char *CFG_Set(struct CFG_Header *cfg, char *section, char *key, 
+                    char *value)
+{
+        struct CFG_Header *h;
+        struct CFG_Entry *e;
+
+        if ((cfg == NULL) || (section == NULL) || (key == NULL) || 
+            (value == NULL)) {
+                return NULL;
+        }
+
+        /* Search for section name */
+        for (h = cfg; h != NULL; h = h->next) {
+                if (strcmp(section, h->section) == 0) {
+                        /* Search for key within section */
+                        for (e = h->entries; e != NULL; e = e->next) {
+                                if ((e->key != NULL) && strcmp(key, e->key) == 0) {
+                                        /* Found - set value */
+                                        free(e->key);
+                                        /* FIXME: strdup is not ANSI C compliant. */
+                                        e->key = strdup(value);
+     &