This commit was generated by cvs2svn to compensate for changes in r158,
authorshort <>
Wed, 3 Apr 2002 00:08:34 +0000 (00:08 +0000)
committershort <>
Wed, 3 Apr 2002 00:08:34 +0000 (00:08 +0000)
which included commits to RCS files with non-trunk default branches.

430 files changed:
COPYRIGHT [new file with mode: 0644]
Docs/default/3210/nse8/pictures/picture1.nlm [new file with mode: 0644]
Docs/default/3210/nse8/pictures/picture2.nlm [new file with mode: 0644]
Docs/default/3210/nse8/pictures/picture3.nlm [new file with mode: 0644]
Docs/default/3210/nse8/startup.nlm [new file with mode: 0644]
Docs/default/3210/nse9/pictures/picture1.nlm [new file with mode: 0644]
Docs/default/3210/nse9/pictures/picture2.nlm [new file with mode: 0644]
Docs/default/3210/nse9/pictures/picture3.nlm [new file with mode: 0644]
Docs/default/3210/nse9/pictures/picture4.nlm [new file with mode: 0644]
Docs/default/3210/nse9/startup.nlm [new file with mode: 0644]
Docs/default/3310/TwojaEra [new file with mode: 0644]
Docs/default/3310/pictures/picture1.nlm [new file with mode: 0644]
Docs/default/3310/pictures/picture10.nlm [new file with mode: 0644]
Docs/default/3310/pictures/picture11.nlm [new file with mode: 0644]
Docs/default/3310/pictures/picture12.nlm [new file with mode: 0644]
Docs/default/3310/pictures/picture13.nlm [new file with mode: 0644]
Docs/default/3310/pictures/picture14.nlm [new file with mode: 0644]
Docs/default/3310/pictures/picture2.nlm [new file with mode: 0644]
Docs/default/3310/pictures/picture3.nlm [new file with mode: 0644]
Docs/default/3310/pictures/picture4.nlm [new file with mode: 0644]
Docs/default/3310/pictures/picture5.nlm [new file with mode: 0644]
Docs/default/3310/pictures/picture6.nlm [new file with mode: 0644]
Docs/default/3310/pictures/picture7.nlm [new file with mode: 0644]
Docs/default/3310/pictures/picture8.nlm [new file with mode: 0644]
Docs/default/3310/pictures/picture9.nlm [new file with mode: 0644]
Docs/default/6150/caller/colleagues.nlm [new file with mode: 0644]
Docs/default/6150/caller/family.nlm [new file with mode: 0644]
Docs/default/6150/caller/friends.nlm [new file with mode: 0644]
Docs/default/6150/caller/other.nlm [new file with mode: 0644]
Docs/default/6150/caller/vip.nlm [new file with mode: 0644]
Docs/default/6150/startup.nlm [new file with mode: 0644]
Docs/default/6210/caller/colleagues.bmp [new file with mode: 0644]
Docs/default/6210/caller/family.bmp [new file with mode: 0644]
Docs/default/6210/caller/friends.bmp [new file with mode: 0644]
Docs/default/6210/caller/other.bmp [new file with mode: 0644]
Docs/default/6210/caller/vip.bmp [new file with mode: 0644]
Docs/default/6210/picture/picture1.nlm [new file with mode: 0644]
Docs/default/6210/picture/picture10.nlm [new file with mode: 0644]
Docs/default/6210/picture/picture2.nlm [new file with mode: 0644]
Docs/default/6210/picture/picture3.nlm [new file with mode: 0644]
Docs/default/6210/picture/picture4.nlm [new file with mode: 0644]
Docs/default/6210/picture/picture5.nlm [new file with mode: 0644]
Docs/default/6210/picture/picture6.nlm [new file with mode: 0644]
Docs/default/6210/picture/picture7.nlm [new file with mode: 0644]
Docs/default/6210/picture/picture8.nlm [new file with mode: 0644]
Docs/default/6210/picture/picture9.nlm [new file with mode: 0644]
Docs/default/6210/startup.bmp [new file with mode: 0644]
Docs/default/6250/picture1.nlm [new file with mode: 0644]
Docs/default/6250/picture10.nlm [new file with mode: 0644]
Docs/default/6250/picture2.nlm [new file with mode: 0644]
Docs/default/6250/picture3.nlm [new file with mode: 0644]
Docs/default/6250/picture4.nlm [new file with mode: 0644]
Docs/default/6250/picture5.nlm [new file with mode: 0644]
Docs/default/6250/picture6.nlm [new file with mode: 0644]
Docs/default/6250/picture7.nlm [new file with mode: 0644]
Docs/default/6250/picture8.nlm [new file with mode: 0644]
Docs/default/6250/picture9.nlm [new file with mode: 0644]
Docs/default/sounds/readme [new file with mode: 0644]
Docs/default/sounds/ring2.txt [new file with mode: 0644]
Docs/default/sounds/ringtones/12_months [new file with mode: 0644]
Docs/default/sounds/ringtones/9th_Symphony [new file with mode: 0644]
Docs/default/sounds/ringtones/Alamuhan [new file with mode: 0644]
Docs/default/sounds/ringtones/Attraction [new file with mode: 0644]
Docs/default/sounds/ringtones/Auld_Lang_Syne [new file with mode: 0644]
Docs/default/sounds/ringtones/Bach_nr_3 [new file with mode: 0644]
Docs/default/sounds/ringtones/Badinerie [new file with mode: 0644]
Docs/default/sounds/ringtones/Barn_dance [new file with mode: 0644]
Docs/default/sounds/ringtones/Baroque [new file with mode: 0644]
Docs/default/sounds/ringtones/Basic_rock [new file with mode: 0644]
Docs/default/sounds/ringtones/Bee [new file with mode: 0644]
Docs/default/sounds/ringtones/Bossanova [new file with mode: 0644]
Docs/default/sounds/ringtones/Bounce [new file with mode: 0644]
Docs/default/sounds/ringtones/Brave_Scotland [new file with mode: 0644]
Docs/default/sounds/ringtones/Bumblebee [new file with mode: 0644]
Docs/default/sounds/ringtones/Canter [new file with mode: 0644]
Docs/default/sounds/ringtones/Carioca [new file with mode: 0644]
Docs/default/sounds/ringtones/Charleston [new file with mode: 0644]
Docs/default/sounds/ringtones/Chase [new file with mode: 0644]
Docs/default/sounds/ringtones/Cicada [new file with mode: 0644]
Docs/default/sounds/ringtones/Circles [new file with mode: 0644]
Docs/default/sounds/ringtones/City_Slicker [new file with mode: 0644]
Docs/default/sounds/ringtones/City_bird [new file with mode: 0644]
Docs/default/sounds/ringtones/Cladoceran [new file with mode: 0644]
Docs/default/sounds/ringtones/Classical [new file with mode: 0644]
Docs/default/sounds/ringtones/Croak [new file with mode: 0644]
Docs/default/sounds/ringtones/Dawn [new file with mode: 0644]
Docs/default/sounds/ringtones/Dizzy [new file with mode: 0644]
Docs/default/sounds/ringtones/Do-mi-so [new file with mode: 0644]
Docs/default/sounds/ringtones/Electric_eel [new file with mode: 0644]
Docs/default/sounds/ringtones/Elise [new file with mode: 0644]
Docs/default/sounds/ringtones/Entertainer [new file with mode: 0644]
Docs/default/sounds/ringtones/Etude [new file with mode: 0644]
Docs/default/sounds/ringtones/Fly [new file with mode: 0644]
Docs/default/sounds/ringtones/Fool about [new file with mode: 0644]
Docs/default/sounds/ringtones/Four_seasons [new file with mode: 0644]
Docs/default/sounds/ringtones/Frantic [new file with mode: 0644]
Docs/default/sounds/ringtones/Frog [new file with mode: 0644]
Docs/default/sounds/ringtones/Fuga [new file with mode: 0644]
Docs/default/sounds/ringtones/Funfair [new file with mode: 0644]
Docs/default/sounds/ringtones/Fusion [new file with mode: 0644]
Docs/default/sounds/ringtones/Get_cool [new file with mode: 0644]
Docs/default/sounds/ringtones/Going_up [new file with mode: 0644]
Docs/default/sounds/ringtones/Grande_valse [new file with mode: 0644]
Docs/default/sounds/ringtones/Groovy_blue [new file with mode: 0644]
Docs/default/sounds/ringtones/Happy_return [new file with mode: 0644]
Docs/default/sounds/ringtones/Helan [new file with mode: 0644]
Docs/default/sounds/ringtones/HipHop [new file with mode: 0644]
Docs/default/sounds/ringtones/Hopping_down [new file with mode: 0644]
Docs/default/sounds/ringtones/Hummingbird [new file with mode: 0644]
Docs/default/sounds/ringtones/Hunt [new file with mode: 0644]
Docs/default/sounds/ringtones/Hurdy-gurdy [new file with mode: 0644]
Docs/default/sounds/ringtones/Hurry_up [new file with mode: 0644]
Docs/default/sounds/ringtones/Improvisation [new file with mode: 0644]
Docs/default/sounds/ringtones/Indifference [new file with mode: 0644]
Docs/default/sounds/ringtones/Intro [new file with mode: 0644]
Docs/default/sounds/ringtones/Jingle_bells [new file with mode: 0644]
Docs/default/sounds/ringtones/Jitters [new file with mode: 0644]
Docs/default/sounds/ringtones/Jumping [new file with mode: 0644]
Docs/default/sounds/ringtones/Kick [new file with mode: 0644]
Docs/default/sounds/ringtones/Knick-knack [new file with mode: 0644]
Docs/default/sounds/ringtones/Knock_again [new file with mode: 0644]
Docs/default/sounds/ringtones/Knock_knock [new file with mode: 0644]
Docs/default/sounds/ringtones/Lamb [new file with mode: 0644]
Docs/default/sounds/ringtones/Languor [new file with mode: 0644]
Docs/default/sounds/ringtones/Left_hand [new file with mode: 0644]
Docs/default/sounds/ringtones/Liszt [new file with mode: 0644]
Docs/default/sounds/ringtones/Low [new file with mode: 0644]
Docs/default/sounds/ringtones/Mangrove [new file with mode: 0644]
Docs/default/sounds/ringtones/Marry [new file with mode: 0644]
Docs/default/sounds/ringtones/Matilda [new file with mode: 0644]
Docs/default/sounds/ringtones/Menuet [new file with mode: 0644]
Docs/default/sounds/ringtones/Merry_Xmas [new file with mode: 0644]
Docs/default/sounds/ringtones/Mexican_Hat_Dance [new file with mode: 0644]
Docs/default/sounds/ringtones/Moon & clouds [new file with mode: 0644]
Docs/default/sounds/ringtones/Morning [new file with mode: 0644]
Docs/default/sounds/ringtones/Mosquito [new file with mode: 0644]
Docs/default/sounds/ringtones/Mozart40 [new file with mode: 0644]
Docs/default/sounds/ringtones/Nokia_tune [new file with mode: 0644]
Docs/default/sounds/ringtones/Ode_to_Joy [new file with mode: 0644]
Docs/default/sounds/ringtones/Orient [new file with mode: 0644]
Docs/default/sounds/ringtones/Persuasion [new file with mode: 0644]
Docs/default/sounds/ringtones/Piano_concerto [new file with mode: 0644]
Docs/default/sounds/ringtones/Playground [new file with mode: 0644]
Docs/default/sounds/ringtones/Polite [new file with mode: 0644]
Docs/default/sounds/ringtones/Polka [new file with mode: 0644]
Docs/default/sounds/ringtones/Polska [new file with mode: 0644]
Docs/default/sounds/ringtones/Private_eye [new file with mode: 0644]
Docs/default/sounds/ringtones/Progress [new file with mode: 0644]
Docs/default/sounds/ringtones/Reveille [new file with mode: 0644]
Docs/default/sounds/ringtones/Right_Hand [new file with mode: 0644]
Docs/default/sounds/ringtones/Ring_ring [new file with mode: 0644]
Docs/default/sounds/ringtones/Robo_N1X [new file with mode: 0644]
Docs/default/sounds/ringtones/Rocket [new file with mode: 0644]
Docs/default/sounds/ringtones/Running_horse [new file with mode: 0644]
Docs/default/sounds/ringtones/Salsa [new file with mode: 0644]
Docs/default/sounds/ringtones/Samba [new file with mode: 0644]
Docs/default/sounds/ringtones/Samba_rumble [new file with mode: 0644]
Docs/default/sounds/ringtones/Sare [new file with mode: 0644]
Docs/default/sounds/ringtones/Scifi [new file with mode: 0644]
Docs/default/sounds/ringtones/Side_step [new file with mode: 0644]
Docs/default/sounds/ringtones/Siren [new file with mode: 0644]
Docs/default/sounds/ringtones/Songette [new file with mode: 0644]
Docs/default/sounds/ringtones/Speedy [new file with mode: 0644]
Docs/default/sounds/ringtones/Sunny_walks [new file with mode: 0644]
Docs/default/sounds/ringtones/Swan_Lake [new file with mode: 0644]
Docs/default/sounds/ringtones/Tango [new file with mode: 0644]
Docs/default/sounds/ringtones/Tangoed [new file with mode: 0644]
Docs/default/sounds/ringtones/Tap dance [new file with mode: 0644]
Docs/default/sounds/ringtones/Tchaikovsky [new file with mode: 0644]
Docs/default/sounds/ringtones/That_is_it [new file with mode: 0644]
Docs/default/sounds/ringtones/The_Buffoon [new file with mode: 0644]
Docs/default/sounds/ringtones/Tick_tick [new file with mode: 0644]
Docs/default/sounds/ringtones/Tingle [new file with mode: 0644]
Docs/default/sounds/ringtones/Toreador [new file with mode: 0644]
Docs/default/sounds/ringtones/Toreador1 [new file with mode: 0644]
Docs/default/sounds/ringtones/Transylvania [new file with mode: 0644]
Docs/default/sounds/ringtones/Treadmill [new file with mode: 0644]
Docs/default/sounds/ringtones/Trio [new file with mode: 0644]
Docs/default/sounds/ringtones/Tripod [new file with mode: 0644]
Docs/default/sounds/ringtones/Tweet [new file with mode: 0644]
Docs/default/sounds/ringtones/Valkyrie [new file with mode: 0644]
Docs/default/sounds/ringtones/Walze_Brillant [new file with mode: 0644]
Docs/default/sounds/ringtones/William_Tell [new file with mode: 0644]
Docs/default/sounds/sms/SMS_Ancending [new file with mode: 0644]
Docs/default/sounds/sms/SMS_Beep_once [new file with mode: 0644]
Docs/default/sounds/sms/SMS_Special [new file with mode: 0644]
Docs/default/sounds/sms/SMS_Standard [new file with mode: 0644]
Docs/developers/gnokii/CodingStyle [new file with mode: 0644]
Docs/developers/gnokii/gettext-howto [new file with mode: 0644]
Docs/developers/gnokii/gnokii.txt [new file with mode: 0644]
Docs/developers/gnokii/packaging-howto [new file with mode: 0644]
Docs/developers/gnokii/untitled.txt [new file with mode: 0644]
Docs/developers/other/RE RE.txt [new file with mode: 0644]
Docs/developers/other/dmcp/addsms [new file with mode: 0644]
Docs/developers/other/dmcp/readme [new file with mode: 0644]
Docs/developers/other/dmcp/removesms [new file with mode: 0644]
Docs/developers/other/ringtones.txt [new file with mode: 0644]
Docs/developers/other/sniffs/Telefonbucheditor7110.txt [new file with mode: 0644]
Docs/developers/other/sniffs/irda/info.txt [new file with mode: 0644]
Docs/developers/other/sniffs/irda/tools/fcs/fcs.c [new file with mode: 0644]
Docs/developers/other/sniffs/irda/tools/fcs/fcs.h [new file with mode: 0644]
Docs/developers/other/sniffs/irda/tools/include/irda.h [new file with mode: 0644]
Docs/developers/other/sniffs/irda/tools/include/irlap.h [new file with mode: 0644]
Docs/developers/other/sniffs/irda/tools/intercept/Makefile [new file with mode: 0644]
Docs/developers/other/sniffs/irda/tools/intercept/irda_intercept.c [new file with mode: 0644]
Docs/developers/other/sniffs/sniffing.txt [new file with mode: 0644]
Docs/developers/protocol/n3110.txt [new file with mode: 0644]
Docs/developers/protocol/n6110.txt [new file with mode: 0644]
Docs/developers/protocol/n7110.txt [new file with mode: 0644]
Docs/developers/protocol/nokia.txt [new file with mode: 0644]
Docs/developers/protocol/readme [new file with mode: 0644]
Docs/en_US/gnokii/config.htm [new file with mode: 0644]
Docs/en_US/gnokii/faq.htm [new file with mode: 0644]
Docs/en_US/gnokii/gnokii-6210-7110-IrDA [new file with mode: 0644]
Docs/en_US/gnokii/gnokii.htm [new file with mode: 0644]
Docs/en_US/gnokii/phones.htm [new file with mode: 0644]
Docs/en_US/gnokii/todologo [new file with mode: 0644]
Docs/en_US/gnokii/xgnokii/calendar/index.htm [new file with mode: 0644]
Docs/en_US/gnokii/xgnokii/contacts/index.htm [new file with mode: 0644]
Docs/en_US/gnokii/xgnokii/dtmf/index.htm [new file with mode: 0644]
Docs/en_US/gnokii/xgnokii/main/index.htm [new file with mode: 0644]
Docs/en_US/gnokii/xgnokii/netmon/index.htm [new file with mode: 0644]
Docs/en_US/gnokii/xgnokii/sms/index.htm [new file with mode: 0644]
Docs/en_US/gnokii/xgnokii/sms/sms.gif [new file with mode: 0644]
Docs/en_US/gnokii/xgnokii/speeddial/index.htm [new file with mode: 0644]
Docs/en_US/gnokii/xgnokii/xkeyb/index.htm [new file with mode: 0644]
Docs/en_US/gsm/cables/cable1.gif [new file with mode: 0644]
Docs/en_US/gsm/cables/cable2.gif [new file with mode: 0644]
Docs/en_US/gsm/cables/cables.htm [new file with mode: 0644]
Docs/en_US/gsm/cables/switch.gif [new file with mode: 0644]
Docs/en_US/gsm/codes/codes.htm [new file with mode: 0644]
Docs/en_US/gsm/compare/1.htm [new file with mode: 0644]
Docs/en_US/gsm/compare/compare.htm [new file with mode: 0644]
Docs/en_US/gsm/compare/index.htm [new file with mode: 0644]
Docs/en_US/gsm/compare/null.htm [new file with mode: 0644]
Docs/en_US/gsm/firmware/firm12.htm [new file with mode: 0644]
Docs/en_US/gsm/firmware/firm3.htm [new file with mode: 0644]
Docs/en_US/gsm/firmware/firm5.htm [new file with mode: 0644]
Docs/en_US/gsm/firmware/firm6_1.htm [new file with mode: 0644]
Docs/en_US/gsm/firmware/firm6_2.htm [new file with mode: 0644]
Docs/en_US/gsm/firmware/firm7.htm [new file with mode: 0644]
Docs/en_US/gsm/firmware/firm8.htm [new file with mode: 0644]
Docs/en_US/gsm/firmware/firm9.htm [new file with mode: 0644]
Docs/en_US/gsm/firmware/firmware.htm [new file with mode: 0644]
Docs/en_US/gsm/irda/irda.htm [new file with mode: 0644]
Docs/en_US/gsm/logos/logos.htm [new file with mode: 0644]
Docs/en_US/gsm/netmon/3210_09.gif [new file with mode: 0644]
Docs/en_US/gsm/netmon/3210_092.gif [new file with mode: 0644]
Docs/en_US/gsm/netmon/3210_10.gif [new file with mode: 0644]
Docs/en_US/gsm/netmon/faq_net0.htm [new file with mode: 0644]
Docs/en_US/gsm/netmon/faq_net1.htm [new file with mode: 0644]
Docs/en_US/gsm/netmon/faq_net2.htm [new file with mode: 0644]
Docs/en_US/gsm/netmon/faq_net3.htm [new file with mode: 0644]
Docs/en_US/gsm/netmon/faq_net4.htm [new file with mode: 0644]
Docs/en_US/gsm/netmon/faq_net5.htm [new file with mode: 0644]
Docs/en_US/gsm/netmon/faq_net6.htm [new file with mode: 0644]
Docs/en_US/gsm/netmon/net_mon1.gif [new file with mode: 0644]
Docs/en_US/gsm/netmon/net_mon2.gif [new file with mode: 0644]
Docs/en_US/gsm/netmon/net_mon3.gif [new file with mode: 0644]
Docs/en_US/gsm/netmon/net_spis.htm [new file with mode: 0644]
Docs/en_US/gsm/netmon/nm_01.gif [new file with mode: 0644]
Docs/en_US/gsm/netmon/nm_02.gif [new file with mode: 0644]
Docs/en_US/gsm/netmon/nm_03.gif [new file with mode: 0644]
Docs/en_US/gsm/netmon/nm_04.gif [new file with mode: 0644]
Docs/en_US/gsm/netmon/nm_05.gif [new file with mode: 0644]
Docs/en_US/gsm/netmon/nm_06.gif [new file with mode: 0644]
Docs/en_US/gsm/netmon/nm_07.gif [new file with mode: 0644]
Docs/en_US/gsm/netmon/nm_08.gif [new file with mode: 0644]
Docs/en_US/gsm/netmon/nm_09.gif [new file with mode: 0644]
Docs/en_US/gsm/netmon/nm_10.gif [new file with mode: 0644]
Docs/en_US/gsm/netmon/nm_11.gif [new file with mode: 0644]
Docs/en_US/gsm/netmon/nm_12.gif [new file with mode: 0644]
Docs/en_US/gsm/netmon/nm_14.gif [new file with mode: 0644]
Docs/en_US/gsm/netmon/nm_15.gif [new file with mode: 0644]
Docs/en_US/gsm/netmon/nm_3210.gif [new file with mode: 0644]
Docs/en_US/gsm/netmon/nm_32102.gif [new file with mode: 0644]
Docs/en_US/gsm/netmon/nm_3310.gif [new file with mode: 0644]
Docs/en_US/gsm/netmon/nm_5110.gif [new file with mode: 0644]
Docs/en_US/gsm/netmon/nm_6150.gif [new file with mode: 0644]
Docs/en_US/gsm/netmon/nm_6190.gif [new file with mode: 0644]
Docs/en_US/gsm/netmon/nm_6210.gif [new file with mode: 0644]
Docs/en_US/gsm/netmon/nm_6310.gif [new file with mode: 0644]
Docs/en_US/gsm/netmon/nm_7110.gif [new file with mode: 0644]
Docs/en_US/gsm/netmon/nm_8210.gif [new file with mode: 0644]
Docs/en_US/gsm/netmon/nm_8310.gif [new file with mode: 0644]
Docs/en_US/gsm/netmon/nm_9110.gif [new file with mode: 0644]
Docs/en_US/gsm/netmon/nm_9210.gif [new file with mode: 0644]
Docs/en_US/gsm/sms/sms.htm [new file with mode: 0644]
Docs/en_US/gsm/tip.gif [new file with mode: 0644]
Docs/en_US/index.htm [new file with mode: 0644]
Docs/en_US/styl.css [new file with mode: 0644]
Docs/examples/axelf.txt [new file with mode: 0644]
Docs/examples/gnokiirc [new file with mode: 0644]
Docs/examples/logos/gnokii.nol [new file with mode: 0644]
Docs/examples/logos/gnokii.xpm [new file with mode: 0644]
Docs/examples/logos/gnokii2.nol [new file with mode: 0644]
Docs/examples/logos/magic [new file with mode: 0644]
Docs/examples/netmon/netmonitordata_6110_433.dat [new file with mode: 0644]
Docs/examples/netmon/netmonitordata_6150_413.dat [new file with mode: 0644]
Docs/examples/netmon/netmonitordata_6150_522.dat [new file with mode: 0644]
Docs/examples/netmon/nmd_commands.dat [new file with mode: 0644]
Docs/examples/ppp/options [new file with mode: 0644]
Docs/examples/ppp/pap-secrets [new file with mode: 0644]
Docs/examples/ppp/ppp-6210-modem [new file with mode: 0755]
Docs/examples/ppp/ppp-FILES [new file with mode: 0644]
Docs/examples/ppp/ppp-gnokii [new file with mode: 0644]
Docs/examples/ppp/ppp-hscsd [new file with mode: 0644]
Docs/examples/ppp/ppp-on [new file with mode: 0644]
Docs/examples/test.vcs [new file with mode: 0644]
Docs/gnokii-hackers-howto [new file with mode: 0644]
Docs/pl_PL/mygnokii.htm [new file with mode: 0644]
Docs/pl_PL/styl.css [new file with mode: 0644]
Docs/sample/cimd-connect [deleted file]
Docs/sample/magic [new file with mode: 0644]
README [new file with mode: 0644]
common/devices/device.c [new file with mode: 0644]
common/devices/winserial.c [new file with mode: 0644]
common/files/cfgreader.c [new file with mode: 0644]
common/files/gsm-filetypes.c [new file with mode: 0644]
common/files/midifile.c [new file with mode: 0644]
common/gsm-calendar.c [new file with mode: 0644]
common/gsm-coding.c [new file with mode: 0644]
common/gsm-datetime.c [new file with mode: 0644]
common/gsm-phonebook.c [new file with mode: 0644]
common/gsm-wap.c [new file with mode: 0644]
common/links/fbus-3110.c [new file with mode: 0644]
common/newmodules/n3110.c [new file with mode: 0644]
common/newmodules/n6110.c [new file with mode: 0644]
common/newmodules/n7110.c [new file with mode: 0644]
common/newmodules/newat.c [new file with mode: 0644]
common/newmodules/sniff/sniff.c [new file with mode: 0644]
common/phones/ateric.c [new file with mode: 0644]
common/phones/atnok.c [new file with mode: 0644]
common/phones/atsie.c [new file with mode: 0644]
common/protocol/at.c [new file with mode: 0644]
common/protocol/fbus.c [new file with mode: 0644]
common/protocol/fbus3110.c [new file with mode: 0644]
common/protocol/fbusirda.c [new file with mode: 0644]
common/protocol/mbus.c [new file with mode: 0644]
configure [new file with mode: 0755]
do [deleted file]
getopt/win32/getopt.c [new file with mode: 0644]
getopt/win32/getopt.h [new file with mode: 0644]
gnokii.spec [new file with mode: 0644]
gnokii/gnokii.h [new file with mode: 0644]
include/devices/device.h [new file with mode: 0644]
include/devices/linuxirda.h [new file with mode: 0644]
include/devices/winserial.h [new file with mode: 0644]
include/files/cfgreader.h [new file with mode: 0644]
include/files/gsm-filetypes.h [new file with mode: 0644]
include/files/midifile.h [new file with mode: 0644]
include/gsm-calendar.h [new file with mode: 0644]
include/gsm-coding.h [new file with mode: 0644]
include/gsm-datetime.h [new file with mode: 0644]
include/gsm-phonebook.h [new file with mode: 0644]
include/gsm-wap.h [new file with mode: 0644]
include/links/fbus-3110.h [new file with mode: 0644]
include/misc_win32.h [new file with mode: 0644]
include/newmodules/n3110.h [new file with mode: 0644]
include/newmodules/n6110.h [new file with mode: 0644]
include/newmodules/n7110.h [new file with mode: 0644]
include/newmodules/newat.h [new file with mode: 0644]
include/newmodules/sniff/sniff.h [new file with mode: 0644]
include/phones/ateric.h [new file with mode: 0644]
include/phones/atgen.h [new file with mode: 0644]
include/phones/atnok.h [new file with mode: 0644]
include/phones/atsie.h [new file with mode: 0644]
include/protocol/at.h [new file with mode: 0644]
include/protocol/fbus.h [new file with mode: 0644]
include/protocol/fbus3110.h [new file with mode: 0644]
include/protocol/fbusirda.h [new file with mode: 0644]
include/protocol/mbus.h [new file with mode: 0644]
mgnetd/Makefile [new file with mode: 0644]
mgnetd/mg_demo_client/Makefile [new file with mode: 0644]
mgnetd/mg_demo_client/mg_demo_client.c [new file with mode: 0644]
mgnetd/mg_demo_client/mg_net_api.c [new file with mode: 0644]
mgnetd/mg_demo_client/mg_net_api.h [new file with mode: 0644]
mgnetd/mg_demo_client/mg_net_api.txt [new file with mode: 0644]
mgnetd/mgnetd.c [new file with mode: 0644]
mgnetd/mgnetd.h [new file with mode: 0644]
mgnetd/readme.txt [new file with mode: 0644]
packaging/Debian/changelog.in [new file with mode: 0644]
utils/sendsms [new file with mode: 0644]
win32_makefile/clean.bat [new file with mode: 0644]
win32_makefile/dll_vc6/GnokiiAPI.PRJ [new file with mode: 0644]
win32_makefile/dll_vc6/GnokiiAPI.def [new file with mode: 0644]
win32_makefile/dll_vc6/GnokiiAPI.dep [new file with mode: 0644]
win32_makefile/dll_vc6/GnokiiAPI.dsp [new file with mode: 0644]
win32_makefile/dll_vc6/GnokiiAPI.dsw [new file with mode: 0644]
win32_makefile/dll_vc6/Script1.rc [new file with mode: 0644]
win32_makefile/dll_vc6/clean.bat [new file with mode: 0644]
win32_makefile/dll_vc6/fcopy.BAT [new file with mode: 0644]
win32_makefile/dll_vc6/gnokiiapi.c [new file with mode: 0644]
win32_makefile/dll_vc6/gnokiiapi.h [new file with mode: 0644]
win32_makefile/dll_vc6/resource.h [new file with mode: 0644]
win32_makefile/fcopy.bat [new file with mode: 0644]
win32_makefile/gnokii_vc6/clean.bat [new file with mode: 0644]
win32_makefile/gnokii_vc6/debug.bat [new file with mode: 0644]
win32_makefile/gnokii_vc6/gnokii.mak [new file with mode: 0644]
win32_makefile/gnokii_vc6/release.bat [new file with mode: 0644]
win32_makefile/gui_delphi/Calendar.dfm [new file with mode: 0644]
win32_makefile/gui_delphi/Calendar.pas [new file with mode: 0644]
win32_makefile/gui_delphi/GnokiiAPI.pas [new file with mode: 0644]
win32_makefile/gui_delphi/Project1.cfg [new file with mode: 0644]
win32_makefile/gui_delphi/Project1.dof [new file with mode: 0644]
win32_makefile/gui_delphi/Project1.dpr [new file with mode: 0644]
win32_makefile/gui_delphi/backup.dfm [new file with mode: 0644]
win32_makefile/gui_delphi/backup.pas [new file with mode: 0644]
win32_makefile/gui_delphi/backup2.dfm [new file with mode: 0644]
win32_makefile/gui_delphi/backup2.pas [new file with mode: 0644]
win32_makefile/gui_delphi/logo.ico [new file with mode: 0644]
win32_makefile/gui_delphi/logosring.dfm [new file with mode: 0644]
win32_makefile/gui_delphi/logosring.pas [new file with mode: 0644]
win32_makefile/gui_delphi/mainunit.dfm [new file with mode: 0644]
win32_makefile/gui_delphi/mainunit.pas [new file with mode: 0644]
win32_makefile/gui_delphi/netmon.dfm [new file with mode: 0644]
win32_makefile/gui_delphi/netmon.pas [new file with mode: 0644]
win32_makefile/gui_delphi/pbkedit.dfm [new file with mode: 0644]
win32_makefile/gui_delphi/pbkedit.pas [new file with mode: 0644]
win32_makefile/gui_delphi/pbkedit2.dfm [new file with mode: 0644]
win32_makefile/gui_delphi/pbkedit2.pas [new file with mode: 0644]
win32_makefile/gui_delphi/smscedit.dfm [new file with mode: 0644]
win32_makefile/gui_delphi/smscedit.pas [new file with mode: 0644]
win32_makefile/gui_delphi/smsedit.dfm [new file with mode: 0644]
win32_makefile/gui_delphi/smsedit.pas [new file with mode: 0644]
win32_makefile/gui_delphi/wapbook.dfm [new file with mode: 0644]
win32_makefile/gui_delphi/wapbook.pas [new file with mode: 0644]
win32_makefile/mversion.js [new file with mode: 0644]
xgnokii/xgnokii_xring.c [new file with mode: 0644]
xgnokii/xgnokii_xring.h [new file with mode: 0644]

diff --git a/COPYRIGHT b/COPYRIGHT
new file mode 100644 (file)
index 0000000..8565fdb
--- /dev/null
+++ b/COPYRIGHT
@@ -0,0 +1,30 @@
+GNOKII - A Linux/Unix toolset and driver for the GSM phones
+         Copyright (C) 1999 Hugh Blemings & Pavel Janík ml.
+
+This program is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2 of the License, or (at your option) any later
+version.
+
+This program is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+details.
+
+You should have received a copy of the GNU General Public License along with
+this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+Place - Suite 330, Boston, MA 02111-1307, USA.
+
+You can contact authors by mail at
+
+hugh@blemings.org                     Pavel.Janik@suse.cz
+Hugh Blemings                         Mgr. Pavel Janík, SuSE CR, s.r.o.
+PO Box 234                            Pod Pekárnami 338/12
+Belconnen ACT 2616                    190 00 Praha 9
+Australia                             Czech Republic
+
+We would be delighted to receive a postcard from you if you use gnokii but
+this is not a requirement of these licence terms! :)
+
+Any trademarks in this or other gnokii documents/files are the property of
+their respective owners.
diff --git a/Docs/default/3210/nse8/pictures/picture1.nlm b/Docs/default/3210/nse8/pictures/picture1.nlm
new file mode 100644 (file)
index 0000000..85aee07
Binary files /dev/null and b/Docs/default/3210/nse8/pictures/picture1.nlm differ
diff --git a/Docs/default/3210/nse8/pictures/picture2.nlm b/Docs/default/3210/nse8/pictures/picture2.nlm
new file mode 100644 (file)
index 0000000..95192e6
Binary files /dev/null and b/Docs/default/3210/nse8/pictures/picture2.nlm differ
diff --git a/Docs/default/3210/nse8/pictures/picture3.nlm b/Docs/default/3210/nse8/pictures/picture3.nlm
new file mode 100644 (file)
index 0000000..4db41a3
Binary files /dev/null and b/Docs/default/3210/nse8/pictures/picture3.nlm differ
diff --git a/Docs/default/3210/nse8/startup.nlm b/Docs/default/3210/nse8/startup.nlm
new file mode 100644 (file)
index 0000000..a339ef6
Binary files /dev/null and b/Docs/default/3210/nse8/startup.nlm differ
diff --git a/Docs/default/3210/nse9/pictures/picture1.nlm b/Docs/default/3210/nse9/pictures/picture1.nlm
new file mode 100644 (file)
index 0000000..95192e6
Binary files /dev/null and b/Docs/default/3210/nse9/pictures/picture1.nlm differ
diff --git a/Docs/default/3210/nse9/pictures/picture2.nlm b/Docs/default/3210/nse9/pictures/picture2.nlm
new file mode 100644 (file)
index 0000000..64f67a8
Binary files /dev/null and b/Docs/default/3210/nse9/pictures/picture2.nlm differ
diff --git a/Docs/default/3210/nse9/pictures/picture3.nlm b/Docs/default/3210/nse9/pictures/picture3.nlm
new file mode 100644 (file)
index 0000000..85aee07
Binary files /dev/null and b/Docs/default/3210/nse9/pictures/picture3.nlm differ
diff --git a/Docs/default/3210/nse9/pictures/picture4.nlm b/Docs/default/3210/nse9/pictures/picture4.nlm
new file mode 100644 (file)
index 0000000..93aee77
Binary files /dev/null and b/Docs/default/3210/nse9/pictures/picture4.nlm differ
diff --git a/Docs/default/3210/nse9/startup.nlm b/Docs/default/3210/nse9/startup.nlm
new file mode 100644 (file)
index 0000000..25bf8d4
Binary files /dev/null and b/Docs/default/3210/nse9/startup.nlm differ
diff --git a/Docs/default/3310/TwojaEra b/Docs/default/3310/TwojaEra
new file mode 100644 (file)
index 0000000..81b0548
--- /dev/null
@@ -0,0 +1 @@
+Twoja Era:d=8,o=6,s=N,b=160,l=0:g5,c,g,2f,2e,2p,p,g5,c,g,2f,2e,2p,4p,h5,g5,2d.5,4p,2p,p,g5,c,g,2f,2e,2p,p,g5,c,g,2f,2e,2p,4p,h5,g5,2d.5,4p
\ No newline at end of file
diff --git a/Docs/default/3310/pictures/picture1.nlm b/Docs/default/3310/pictures/picture1.nlm
new file mode 100644 (file)
index 0000000..c1a4ec2
Binary files /dev/null and b/Docs/default/3310/pictures/picture1.nlm differ
diff --git a/Docs/default/3310/pictures/picture10.nlm b/Docs/default/3310/pictures/picture10.nlm
new file mode 100644 (file)
index 0000000..d277ec9
Binary files /dev/null and b/Docs/default/3310/pictures/picture10.nlm differ
diff --git a/Docs/default/3310/pictures/picture11.nlm b/Docs/default/3310/pictures/picture11.nlm
new file mode 100644 (file)
index 0000000..01f76e0
Binary files /dev/null and b/Docs/default/3310/pictures/picture11.nlm differ
diff --git a/Docs/default/3310/pictures/picture12.nlm b/Docs/default/3310/pictures/picture12.nlm
new file mode 100644 (file)
index 0000000..d7cc9a4
Binary files /dev/null and b/Docs/default/3310/pictures/picture12.nlm differ
diff --git a/Docs/default/3310/pictures/picture13.nlm b/Docs/default/3310/pictures/picture13.nlm
new file mode 100644 (file)
index 0000000..6fc50c6
Binary files /dev/null and b/Docs/default/3310/pictures/picture13.nlm differ
diff --git a/Docs/default/3310/pictures/picture14.nlm b/Docs/default/3310/pictures/picture14.nlm
new file mode 100644 (file)
index 0000000..698ec61
Binary files /dev/null and b/Docs/default/3310/pictures/picture14.nlm differ
diff --git a/Docs/default/3310/pictures/picture2.nlm b/Docs/default/3310/pictures/picture2.nlm
new file mode 100644 (file)
index 0000000..1cb9c6d
Binary files /dev/null and b/Docs/default/3310/pictures/picture2.nlm differ
diff --git a/Docs/default/3310/pictures/picture3.nlm b/Docs/default/3310/pictures/picture3.nlm
new file mode 100644 (file)
index 0000000..d72fdaf
Binary files /dev/null and b/Docs/default/3310/pictures/picture3.nlm differ
diff --git a/Docs/default/3310/pictures/picture4.nlm b/Docs/default/3310/pictures/picture4.nlm
new file mode 100644 (file)
index 0000000..7dca99b
Binary files /dev/null and b/Docs/default/3310/pictures/picture4.nlm differ
diff --git a/Docs/default/3310/pictures/picture5.nlm b/Docs/default/3310/pictures/picture5.nlm
new file mode 100644 (file)
index 0000000..ecb1c3b
Binary files /dev/null and b/Docs/default/3310/pictures/picture5.nlm differ
diff --git a/Docs/default/3310/pictures/picture6.nlm b/Docs/default/3310/pictures/picture6.nlm
new file mode 100644 (file)
index 0000000..4db41a3
Binary files /dev/null and b/Docs/default/3310/pictures/picture6.nlm differ
diff --git a/Docs/default/3310/pictures/picture7.nlm b/Docs/default/3310/pictures/picture7.nlm
new file mode 100644 (file)
index 0000000..85aee07
Binary files /dev/null and b/Docs/default/3310/pictures/picture7.nlm differ
diff --git a/Docs/default/3310/pictures/picture8.nlm b/Docs/default/3310/pictures/picture8.nlm
new file mode 100644 (file)
index 0000000..90f9469
Binary files /dev/null and b/Docs/default/3310/pictures/picture8.nlm differ
diff --git a/Docs/default/3310/pictures/picture9.nlm b/Docs/default/3310/pictures/picture9.nlm
new file mode 100644 (file)
index 0000000..692a4d6
Binary files /dev/null and b/Docs/default/3310/pictures/picture9.nlm differ
diff --git a/Docs/default/6150/caller/colleagues.nlm b/Docs/default/6150/caller/colleagues.nlm
new file mode 100644 (file)
index 0000000..6346bc4
Binary files /dev/null and b/Docs/default/6150/caller/colleagues.nlm differ
diff --git a/Docs/default/6150/caller/family.nlm b/Docs/default/6150/caller/family.nlm
new file mode 100644 (file)
index 0000000..6aa0bf3
Binary files /dev/null and b/Docs/default/6150/caller/family.nlm differ
diff --git a/Docs/default/6150/caller/friends.nlm b/Docs/default/6150/caller/friends.nlm
new file mode 100644 (file)
index 0000000..1ae5a1d
Binary files /dev/null and b/Docs/default/6150/caller/friends.nlm differ
diff --git a/Docs/default/6150/caller/other.nlm b/Docs/default/6150/caller/other.nlm
new file mode 100644 (file)
index 0000000..df78781
Binary files /dev/null and b/Docs/default/6150/caller/other.nlm differ
diff --git a/Docs/default/6150/caller/vip.nlm b/Docs/default/6150/caller/vip.nlm
new file mode 100644 (file)
index 0000000..e3855f2
Binary files /dev/null and b/Docs/default/6150/caller/vip.nlm differ
diff --git a/Docs/default/6150/startup.nlm b/Docs/default/6150/startup.nlm
new file mode 100644 (file)
index 0000000..a339ef6
Binary files /dev/null and b/Docs/default/6150/startup.nlm differ
diff --git a/Docs/default/6210/caller/colleagues.bmp b/Docs/default/6210/caller/colleagues.bmp
new file mode 100644 (file)
index 0000000..35e78d0
Binary files /dev/null and b/Docs/default/6210/caller/colleagues.bmp differ
diff --git a/Docs/default/6210/caller/family.bmp b/Docs/default/6210/caller/family.bmp
new file mode 100644 (file)
index 0000000..481a311
Binary files /dev/null and b/Docs/default/6210/caller/family.bmp differ
diff --git a/Docs/default/6210/caller/friends.bmp b/Docs/default/6210/caller/friends.bmp
new file mode 100644 (file)
index 0000000..bc246e6
Binary files /dev/null and b/Docs/default/6210/caller/friends.bmp differ
diff --git a/Docs/default/6210/caller/other.bmp b/Docs/default/6210/caller/other.bmp
new file mode 100644 (file)
index 0000000..da3b928
Binary files /dev/null and b/Docs/default/6210/caller/other.bmp differ
diff --git a/Docs/default/6210/caller/vip.bmp b/Docs/default/6210/caller/vip.bmp
new file mode 100644 (file)
index 0000000..08dfc56
Binary files /dev/null and b/Docs/default/6210/caller/vip.bmp differ
diff --git a/Docs/default/6210/picture/picture1.nlm b/Docs/default/6210/picture/picture1.nlm
new file mode 100644 (file)
index 0000000..4db41a3
Binary files /dev/null and b/Docs/default/6210/picture/picture1.nlm differ
diff --git a/Docs/default/6210/picture/picture10.nlm b/Docs/default/6210/picture/picture10.nlm
new file mode 100644 (file)
index 0000000..7dca99b
Binary files /dev/null and b/Docs/default/6210/picture/picture10.nlm differ
diff --git a/Docs/default/6210/picture/picture2.nlm b/Docs/default/6210/picture/picture2.nlm
new file mode 100644 (file)
index 0000000..85aee07
Binary files /dev/null and b/Docs/default/6210/picture/picture2.nlm differ
diff --git a/Docs/default/6210/picture/picture3.nlm b/Docs/default/6210/picture/picture3.nlm
new file mode 100644 (file)
index 0000000..5f736a7
Binary files /dev/null and b/Docs/default/6210/picture/picture3.nlm differ
diff --git a/Docs/default/6210/picture/picture4.nlm b/Docs/default/6210/picture/picture4.nlm
new file mode 100644 (file)
index 0000000..546dcd6
Binary files /dev/null and b/Docs/default/6210/picture/picture4.nlm differ
diff --git a/Docs/default/6210/picture/picture5.nlm b/Docs/default/6210/picture/picture5.nlm
new file mode 100644 (file)
index 0000000..d525fec
Binary files /dev/null and b/Docs/default/6210/picture/picture5.nlm differ
diff --git a/Docs/default/6210/picture/picture6.nlm b/Docs/default/6210/picture/picture6.nlm
new file mode 100644 (file)
index 0000000..27588dd
Binary files /dev/null and b/Docs/default/6210/picture/picture6.nlm differ
diff --git a/Docs/default/6210/picture/picture7.nlm b/Docs/default/6210/picture/picture7.nlm
new file mode 100644 (file)
index 0000000..fb9f031
Binary files /dev/null and b/Docs/default/6210/picture/picture7.nlm differ
diff --git a/Docs/default/6210/picture/picture8.nlm b/Docs/default/6210/picture/picture8.nlm
new file mode 100644 (file)
index 0000000..3db6fca
Binary files /dev/null and b/Docs/default/6210/picture/picture8.nlm differ
diff --git a/Docs/default/6210/picture/picture9.nlm b/Docs/default/6210/picture/picture9.nlm
new file mode 100644 (file)
index 0000000..0081da6
Binary files /dev/null and b/Docs/default/6210/picture/picture9.nlm differ
diff --git a/Docs/default/6210/startup.bmp b/Docs/default/6210/startup.bmp
new file mode 100644 (file)
index 0000000..0365bd6
Binary files /dev/null and b/Docs/default/6210/startup.bmp differ
diff --git a/Docs/default/6250/picture1.nlm b/Docs/default/6250/picture1.nlm
new file mode 100644 (file)
index 0000000..71095da
Binary files /dev/null and b/Docs/default/6250/picture1.nlm differ
diff --git a/Docs/default/6250/picture10.nlm b/Docs/default/6250/picture10.nlm
new file mode 100644 (file)
index 0000000..b5fbd69
Binary files /dev/null and b/Docs/default/6250/picture10.nlm differ
diff --git a/Docs/default/6250/picture2.nlm b/Docs/default/6250/picture2.nlm
new file mode 100644 (file)
index 0000000..bdc680f
Binary files /dev/null and b/Docs/default/6250/picture2.nlm differ
diff --git a/Docs/default/6250/picture3.nlm b/Docs/default/6250/picture3.nlm
new file mode 100644 (file)
index 0000000..85aee07
Binary files /dev/null and b/Docs/default/6250/picture3.nlm differ
diff --git a/Docs/default/6250/picture4.nlm b/Docs/default/6250/picture4.nlm
new file mode 100644 (file)
index 0000000..4284ac2
Binary files /dev/null and b/Docs/default/6250/picture4.nlm differ
diff --git a/Docs/default/6250/picture5.nlm b/Docs/default/6250/picture5.nlm
new file mode 100644 (file)
index 0000000..4db41a3
Binary files /dev/null and b/Docs/default/6250/picture5.nlm differ
diff --git a/Docs/default/6250/picture6.nlm b/Docs/default/6250/picture6.nlm
new file mode 100644 (file)
index 0000000..2f76e7c
Binary files /dev/null and b/Docs/default/6250/picture6.nlm differ
diff --git a/Docs/default/6250/picture7.nlm b/Docs/default/6250/picture7.nlm
new file mode 100644 (file)
index 0000000..58e1797
Binary files /dev/null and b/Docs/default/6250/picture7.nlm differ
diff --git a/Docs/default/6250/picture8.nlm b/Docs/default/6250/picture8.nlm
new file mode 100644 (file)
index 0000000..2b79a73
Binary files /dev/null and b/Docs/default/6250/picture8.nlm differ
diff --git a/Docs/default/6250/picture9.nlm b/Docs/default/6250/picture9.nlm
new file mode 100644 (file)
index 0000000..6ef7bcf
Binary files /dev/null and b/Docs/default/6250/picture9.nlm differ
diff --git a/Docs/default/sounds/readme b/Docs/default/sounds/readme
new file mode 100644 (file)
index 0000000..dd59e7a
--- /dev/null
@@ -0,0 +1,45 @@
+In subdirs there are original ringtones and SMS tones
+from various Nokia phones. They're saved in special
+binary format used in phone's firmware. You can download them to your phone,
+if it has downloadable ringtone(s) - use
+"gnokii --setbinringtone file [location]". I tested Nokia 6150 5.22 and it was
+OK. I hope, that Nokia will not change this format and you will be able to
+use it with new phones too (update: 3310 seems to have different format).
+
+I also noticed, that with Nokia 6150 some ringtones required small changes
+(inserting space (0x20 char) after name displayed in phone's menu).
+Maximal length of names for this phone is 12 chars (that's why "Moon & clouds"
+is only "Moon & cloud", "Mexican Hat Dance" -> "Mexican Dance",
+"Piano concerto" -> "Piano concer", "WalzeBrillant" -> "WalzeBrilla")
+
+I wasn't also to restore Badinerie, Tchaikovsky,
+Entertainer, Valkyrie, Four seasons, Auld lang syne, Bumblebee,
+Brave Scotland, Liszt, Hungarian, Left Hand
+(I had it in the file - it was no problem to save
+it), because it was too long (ringtones in phone's firmware in flash
+can be infinitely long, downloadable not - frame can be 317 chars long
+only)... I had to short name in "Swan Lake" to "Swan" because of it...
+
+In Get_Cool,Sunny_Walks,Tick tick ringtones there is and error - small
+"pyk" on the end. It's not my fault, it was made by Nokia...
+
+Similiary Hopping-down seems to cut (next Nokia fault ?)...
+
+PS. I didn't compared many of these ringtones with original phones.
+If there are differences, please let me know (my files could be broken too)
+
+PS2. I tried to understand this format, but I didn't make it at all (too small
+free time, etc.). Here are some observations:
+
+Format is used by 0x40/0x9e and 0x40/0xa0 frames. General format is:
+
+0x00,0x01,0xa0(0x9e),location,0x00,0xc1,0x01,?,name,0x00,0x00,0x02,
+commands and tones?each probably in two bytes?,0x0b
+
+where: location=0x00,0x01,etc.
+       name=name in ASCII displayed in menu
+
+If phone doesn't find 0xc1,0x01,? bytes in 7,8,9 byte, don't display ringtone
+name and treat them (if there are next) as ringtone contenst
+
+Marcin-Wiacek@Topnet.PL
\ No newline at end of file
diff --git a/Docs/default/sounds/ring2.txt b/Docs/default/sounds/ring2.txt
new file mode 100644 (file)
index 0000000..e91f6a6
--- /dev/null
@@ -0,0 +1,799 @@
+http://www.gsmcity.de/cgi-bin/ultimatebb.cgi?ubb=get_topic&f=1&t=001084&counterhit=yes
+03.09.2001 19:00
+
+  can i change the original ringtones on 5110? i've heard that 
+  with datasuite u can change the ringtones. pls let me know
+  regards
+  --------------------
+  ---I'M UNIQUE AND SO IS MY PHONE---
+  -- sms,logos,soft,ringtones and many more free --
+
+
+  Posts: 247 | From: Bucharest,Romania | Registered: May 2001  | 
+   IP:  
+
+  azywerks 
+  Newbie 
+   
+   posted 09 June 2001 18:58               
+
+  No.
+  You can add/change 1 ringtone (Received tone) for a 61XX phone 
+  using Datasuite though.
+
+  aCe 
+
+
+  IP:  
+
+  mrENigma 
+  Moderator 
+   
+  Member # 4409 
+  Member Rated:
+    posted 09 June 2001 19:01         
+
+       
+  TOO BAD!!!!
+  IS ANY WAY TO DO THIS? ON ANY NOKIA HANDY???
+  --------------------
+  ---I'M UNIQUE AND SO IS MY PHONE---
+  -- sms,logos,soft,ringtones and many more free --
+
+
+  Posts: 247 | From: Bucharest,Romania | Registered: May 2001  | 
+   IP:  
+
+  azywerks 
+  Newbie 
+   
+   posted 09 June 2001 19:48               
+
+  Except for the downloaded ringtones which is available to most 
+  nokia phones(GSM) except 5110, no.
+  Maybe if you can understand the two byte(i guess, or was it 
+  four) sequence for the tones notation in the PPM section and 
+  have it manually changed to a tone of your desire then your 
+  probably half way there.
+  The other half would then be spent on how to get your phone to 
+  accept the new PPM package you've just made without causing 
+  any problems like Contact Service, sim locks, and Network 
+  Access. Heck, I can't even change just the simple "Insert" 
+  from "Insert SIM Card" to tresnI without causing my phone to 
+  display Contact Service. Must have some security data 
+  elsewhere.
+
+  Anyway, we'll keep on trying.
+
+  aCe 
+
+
+  IP:  
+
+  zizo 
+  Freak Poster 
+   
+  Member # 2631 
+  Member Rated:
+    posted 10 June 2001 00:32      
+
+  Hi mrENigma!
+  U can not change a ringtone on your phone, U have only I think 
+  2 byte free memory there u can recive one ringtone on it.
+  Good luck!
+  --------------------
+  /Z
+
+
+  Posts: 102 | From: Sweden | Registered: Nov 2000  |  IP:  
+
+  mrENigma 
+  Moderator 
+   
+  Member # 4409 
+  Member Rated:
+    posted 10 June 2001 20:44         
+
+  even if i erase some of them? 10 originals for one of mine  
+  it's kind a stupid can't do this....
+  --------------------
+  ---I'M UNIQUE AND SO IS MY PHONE---
+  -- sms,logos,soft,ringtones and many more free --
+
+
+  Posts: 247 | From: Bucharest,Romania | Registered: May 2001  | 
+   IP:  
+
+  Ice Dragon 
+  Freak Poster 
+   
+  Member # 3365 
+  Member Rated:
+    posted 14 June 2001 03:23         
+
+
+    quote:
+
+    Originally posted by mrENigma:
+    even if i erase some of them? 10 originals for one of mine  
+    it's kind a stupid can't do this....
+
+
+  Well, I have a post of this a while (months) ago.
+  It's not possible to ADD TONES to the Nokia 5110 but it is 
+  possible to CHANGE TONES on the Nokia 5110.
+  Well, changing RING TONES is a bit hard but changing ALERT 
+  TONES is relatively easier to do.
+  Of course us all Nokia users can add ring tones to phone like 
+  the 61xx, 6210, 3210, 33xx, etc. but I bet most of our alert 
+  tones are all the same.
+  The beep, the standard (which is a dit-dit tone), the special 
+  (which is a dit-dit-dit-dat-dat-dit-dit-dit, which is actually 
+  a Morse code for "SMS"), and the ascending (which is actualy a 
+  Morse code for "connecting people") are the same to all Nokia 
+  phones unless there is one I don't know about.
+  Anyway, have any of you once experienced when on a crowd when 
+  a SMS message came and most people around you have Nokia 
+  phones (riding a bus for example or on a bar).
+  Some of us would check their phone if it was for them, like I 
+  did.
+  So I changed my standard tone which is a dit-dit to dit-dat to 
+  sound differently. And my special tone from 
+  dit-dit-dit-dat-dat-dit-dit-dit to 
+  dat-dit-dit-dit-dat-dit-dit-dit (which sounds like "Who let 
+  the dogs out" with dit-dit-dit at the end). So when I myself 
+  received a message, I know that it's for me coz I only have to 
+  take note of the tone.
+  Too bad, Viper stopped his research with the NFREE project. I 
+  have been inquiring about the checksums but he's no longer 
+  responding. So I guess I have to do this on my own. 
+  I'm coming up with a software to change the ringtone on the 
+  5110, just like I came up with the soft for changing the alert 
+  tone on my 5110. Imagine, we have 30 changeable ringtones on 
+  our Nokia, not just the 5110 but also with the 3210, 33xx, 
+  51xx, 61xx, 62xx, 7110, 82xx, 88xx, etc.
+  The info about this is not for free of course. Anyone 
+  experimenting with his Nokia can come with a way to change the 
+  fixed ringtones and alert tones on his phone.
+  BTW, the ringtones can be found on the PPM part of the phone.
+  Regards...
+  [ 15 June 2001 06:43: Message edited 1 time, lastly by Ice 
+  Dragon ]
+  --------------------
+  "Keyboard not found. Press F1 to continue."
+  ICQ#:97427188
+  -------------------
+  Send me private messages if any, no kinky stuff though. :-)
+
+
+  Posts: 171 | From: Bacolod, Philippines | Registered: Feb 2001 
+   |  IP:  
+
+  azywerks 
+  Newbie 
+   
+   posted 14 June 2001 18:05               
+
+  Yo Ice! Could you share with me the search values for the SMS 
+  tones. Pleazzee.
+  BTW, have you tried changing the words in our PPM package (i.e 
+  "Insert" in Insert SIM card to something else). I've tried 
+  even simply reversing Insert to tresnI so as not to get any 
+  checksum problems but still I get the CS. 
+  Maybe their using a different method of calculation (CRC 
+  perhaps) or they have a compare module elsewhere?
+  Just wondering,
+  aCe 
+
+
+  IP:  
+
+  Leeloo 
+  Major Poster 
+   
+  Member # 2809 
+  Rate Member  posted 16 June 2001 13:31      
+
+  If the ringtones are saved in the ppm pack, and you get cs 
+  when trying to change places of some letters in ppm.....what 
+  happens in the phon when you download a new ringtone ?
+  does it recalculate the cs for ppm itself ?
+  I thought these ringtones where saved in a area without any cs 
+  check.
+  /Leeloo 
+
+
+  Posts: 46 | From: Sweden | Registered: Dec 2000  |  IP:  
+
+  azywerks 
+  Newbie 
+   
+   posted 17 June 2001 20:27               
+
+  The downloaded tones aren't stored in your PPM, they are 
+  stored in your EEPROM. It is in the EEPROM where checksum 
+  recalculation takes place.
+  The tones that are in the PPM are the static tones (i.e Ring 
+  Ring, Mosquito).
+  The SMS alert tones on the other hand (according to ICE 
+  DRAGON) are located at the MCU portion of your flash.
+  Hope this clears up the confusion.
+  Regards,
+  aCe 
+
+
+  IP:  
+
+  Ice Dragon 
+  Freak Poster 
+   
+  Member # 3365 
+  Member Rated:
+    posted 03 July 2001 04:11         
+
+
+    quote:
+
+    Originally posted by aZyWeRks:
+    Yo Ice! Could you share with me the search values for the 
+    SMS tones. Pleazzee.
+    BTW, have you tried changing the words in our PPM package 
+    (i.e "Insert" in Insert SIM card to something else). I've 
+    tried even simply reversing Insert to tresnI so as not to 
+    get any checksum problems but still I get the CS. 
+    Maybe their using a different method of calculation (CRC 
+    perhaps) or they have a compare module elsewhere?
+    Just wondering,
+    aCe
+
+
+
+  Yo aCe! Here's the hex values particularly for the Special and 
+  Ascending alerts tones.
+  Using flash from a 5110v5.30C:
+  For Special (morse code for "SMS"): 
+  5A0C,400C,5A0C,400C,0AFE,5A0C,
+  4025,0A01,5A25,400C,5A25,4025,
+  0AFE,5A0C,400C,5A0C,400C,5A0C
+  So it sounds like: 
+  dit-dit-dit dat-dat dit-dit-dit
+  "5A0C" is a "dit" with a duration of 0C
+  "5A25" is a "dat" with a duration of 25
+  "400C" is a pause with a duration of 0C
+  "4025" is a pause with a duration of 25
+  "0AFE" is.... I don't know what this means, let me know
+  For Ascending (morse code for "connecting people"):
+  5A25,400C,5A0C,0AFE,400C,5A25,400C,5A0C,4025,0A01,
+  5A25,400C,5A25,0AFE,400C,5A25,4025,
+  5A25,400C,5A0C,4025,
+  5A25,400C,5A0C,4025,
+  5A0C,4025,
+  5A25,400C,5A0C,400C,5A25,400C,5A0C,4025,
+  5A25,4025,
+  5A0C,400C,5A0C,4025,
+  5A25,400C,5A0C,4025,
+  5A25,400C,5A25,400C,5A0C,4064
+  5A0C,400C,5A25,400C,5A25,400C,5A0C,4025
+  5A0C,4025
+  5A25,400C,5A25,400C,5A25,4025
+  5A0C,400C,5A25,400C,5A25,400C,5A0C,4025
+  5A0C,400C,5A25,400C,5A0C,400C,5A0C,4025
+  5A0C,4025
+  So it sounds like:
+  dat-dit-dat-dit dat-dat-dat dat-dit dat-dit dit 
+  dat-dit-dat-dit dat dit-dit dat-dit dat-dat-dit 
+  dit-dat-dat-dit dit dat-dat-dat dit-dat-dat-dit 
+  dit-dat-dit-dit dit
+  Again:
+  "5A0C" is a "dit" with a duration of 0C
+  "5A25" is a "dat" with a duration of 25
+  "400C" is a pause with a duration of 0C
+  "4025" is a pause with a duration of 25
+  "4064" is a pause with a duration of 64 (long pause)
+  "0A01" and "0AFE" are.... I don't know what these means, let 
+  me know
+  Correct me if I'm wrong, I think "0A01" and "0AEF" is a system 
+  pause to let the user interrupt the beeping. for sure, it's 
+  not a checksum.
+  On other phone models:
+  Read a full flash from any model of Nokia phone (from 3210, 
+  33xx, 51xx, 61xx, 62xx, 7110, 82xx, 88xx) and use these search 
+  strings on a hex editor (I use HexWorks):
+  For alert tones: 8005020A01
+  Following hex values after these hex are actual alert tones
+  For ringtones: 0905020A01 or 0A05020A01
+  Hex values following after these hex are not necessarily ring 
+  tones but you can see the names of the ring tones and 
+  following them are their ringtone values. Just see for 
+  yourself what I mean.
+  Can I ask one-thing? If any of you find these info 
+  interesting, please rate me 
+  Thanks and best regards...
+  P.S. Oh, about changing the "Insert" to "tresnI" in PPM won't 
+  work.
+  You see, checksum calculation in PPM is not done by 
+  byte-addition (byte added to another byte) but by 
+  word-addition (two bytes added to the next two bytes).
+  Let's take "Insert" as an example:
+  Letter - Hex value - Decimal
+  I 49 73
+  n 6E 110
+  s 73 115
+  e 65 101
+  r 72 114
+  t 74 116
+  In a byte-to-byte addition, the resulting checksum should be: 
+  hex 275, decimal 629
+  And it would be equal to the checksum of "tresnI"
+  But in a word-to-word addition, checksum is computed in 
+  byte-pairs, therefore taking "In" as one word or hex 
+  equivalent to 496E, decimal 18798
+  So if we are to add them in words:
+  Letters - Hex values - Decimal
+  In 496E 18798
+  se 7365 29541
+  rt 7274 29300
+  The checksum should be: hex 2F47 or decimal 12103.
+  Now with "tresnI", the first two letter pair would be "tr" 
+  with a hex equivalent to 7472, decimal 29810.
+  So if we are to add them in words:
+  Letters - Hex values - Decimal
+  tr 7472 29810
+  es 6573 25971
+  nI 6E49 28233
+  The checksum should be: hex 482E or decimal 18478.
+  Therefore, changing "Insert" to "tresnI" would yield a 
+  "Contact Service" error.
+  Again, I only ask one favor. If any of you find these info 
+  interesting, please rate me 
+  Cheers...
+  [ 03 July 2001 04:43: Message edited 1 time, lastly by Ice 
+  Dragon ]
+  --------------------
+  "Keyboard not found. Press F1 to continue."
+  ICQ#:97427188
+  -------------------
+  Send me private messages if any, no kinky stuff though. :-)
+
+
+  Posts: 171 | From: Bacolod, Philippines | Registered: Feb 2001 
+   |  IP:  
+
+  mrENigma 
+  Moderator 
+   
+  Member # 4409 
+  Member Rated:
+    posted 03 July 2001 08:06         
+
+  i'm confuse a little bit, but i think that i learn something. 
+  and when release software to do this pls let me know 'cause i 
+  want to get ride off those stupid ringtones.
+  thx again and keep in touch.
+  --------------------
+  ---I'M UNIQUE AND SO IS MY PHONE---
+  -- sms,logos,soft,ringtones and many more free --
+
+
+  Posts: 247 | From: Bucharest,Romania | Registered: May 2001  | 
+   IP:  
+
+  qtboy 
+  Major Poster 
+   
+  Member # 3427 
+  Rate Member  posted 03 July 2001 13:03      
+
+  yo ice!!!
+  da bes ka gid migs bah!
+  pakopyahon mo na lang ko kung matapos na imo
+  program. hehehe 
+
+
+  Posts: 46 | From: davao city, philippines | Registered: Feb 
+  2001  |  IP:  
+
+  mrENigma 
+  Moderator 
+   
+  Member # 4409 
+  Member Rated:
+    posted 03 July 2001 13:53         
+
+  yo qtboy......... english pls
+  --------------------
+  ---I'M UNIQUE AND SO IS MY PHONE---
+  -- sms,logos,soft,ringtones and many more free --
+
+
+  Posts: 247 | From: Bucharest,Romania | Registered: May 2001  | 
+   IP:  
+
+  brittnee 
+  Insane Poster 
+   
+  Member # 2085 
+  Rate Member  posted 03 July 2001 16:06      
+
+  nice job, i would just like to ask if i should have the same 
+  number of dits and dats as to avoid contact service?
+  salamat 
+
+  Posts: 94 | Registered: Sep 2000  |  IP:  
+
+  Ice Dragon 
+  Freak Poster 
+   
+  Member # 3365 
+  Member Rated:
+    posted 04 July 2001 04:17         
+
+
+    quote:
+
+    Originally posted by brittnee:
+    nice job, i would just like to ask if i should have the same 
+    number of dits and dats as to avoid contact service?
+    salamat
+
+
+  Not necessarily.
+  Let's take the Standard alert tone (Morse code for "M") as an 
+  example (using the 5110v5.30C flash):
+  5519, 400A, 5519, 400A
+  So it sounds like "dat-dat"
+  5519 - is a "dat" with a duration of 19
+  400A - is a pause with a duration of 0C
+  We could change it to:
+  550C, 400A, 5526, 400A
+  So it sounds like "dit-dat"
+  Take note that we subtracted hex 0D from the first 5519 and 
+  added it to the second 5519 to compensate the values so we 
+  wont have a contact service message.
+  Here's a more interesting one. Change the Standard alert tone 
+  (5519,400A, 5519,400A) to something like this:
+  5B19, 4005, 4F19, 400F
+  So it sounds like high-note-dat, low-note-dat
+  Or to something like:
+  4C0C, 4005, 5E25, 400F
+  So it sounds like low-note-dit, high-note-dat
+  Notice that we subtracted duration values from the first pause 
+  and add it to the next pause, and so with the first tone to 
+  the second tone.
+  Sometimes I get an error when I subtract values from the pause 
+  and add it to the tone. Or vice versa. It won't work.
+  So the following won't work in changing Special alert (morse 
+  code for "SMS"): 
+  5A0C,400C,5A0C,400C,0AFE,5A0C,4025,
+  0A01,5A25,400C,5A25,4025,0AFE,
+  5A0C,400C,5A0C,400C,5A0C
+  That sounds like: 
+  dit-dit-dit dat-dat dit-dit-dit
+  "5A0C" is a "dit" with a duration of 0C
+  "5A25" is a "dat" with a duration of 25
+  "400C" is a pause with a duration of 0C
+  "4025" is a pause with a duration of 25
+  "0AFE" is.... I don't know what this means, let me know
+  Into a variation of "Let's go":
+  5A0C,4025,5A0C,4025,0AFE,
+  5A0C,400C,0A01,5A0C,400C,5A0C,400C,0AFE,5A0C,4025,
+  5A0C,4025,5A0C
+  That sounds like: 
+  dit-dit dit-dit-dit-dit dit-dit
+  "5A0C" is a "dit" with a duration of 0C
+  "400C" is a pause with a duration of 0C
+  "4025" is a pause with a duration of 25
+  "0AFE" is.... I don't know what this means, let me know
+  It wont work because we subtract values from pause and add it 
+  to the tone.
+  So that's that. I'm still studying the behaviour for the 
+  default ringtones. 
+  Sure I can change some values without incurring a "Contact 
+  Service" but the tones won't make any sense.
+  Anyway, I would know who reads this forum in my area when I 
+  start hearing a different alert tone around here.
+  P.S. If you find some info here to be interesting, I only ask 
+  one thing: please rate me 
+  BR
+  --------------------
+  "Keyboard not found. Press F1 to continue."
+  ICQ#:97427188
+  -------------------
+  Send me private messages if any, no kinky stuff though. :-)
+
+
+  Posts: 171 | From: Bacolod, Philippines | Registered: Feb 2001 
+   |  IP:  
+
+  brittnee 
+  Insane Poster 
+   
+  Member # 2085 
+  Rate Member  posted 04 July 2001 17:16      
+
+  very nice indeed, i've change the alert tone of my 6210, still 
+  looking for the standard tone, but i found the special tone 
+  which is the one i change, thanks a lot!!!! 
+
+  Posts: 94 | Registered: Sep 2000  |  IP:  
+
+  Ice Dragon 
+  Freak Poster 
+   
+  Member # 3365 
+  Member Rated:
+    posted 05 July 2001 03:50         
+
+
+    quote:
+
+    Originally posted by brittnee:
+    very nice indeed, i've change the alert tone of my 6210, 
+    still looking for the standard tone, but i found the special 
+    tone which is the one i change, thanks a lot!!!!
+
+
+
+  On a 6210:
+  As always, before tinkering with your phone flash, make a full 
+  backup of your phone flash if you haven't yet.
+  Let's assume you don't have a full backup of your phone flash.
+  1. Read the flash address 00200000 to 00600000.
+  2. Copy the \flasher\flash.out to \nk_files\6210full.fls
+  3. Use a hex editor (I suggest Hexworks), open the 
+  \nk_files\6210full.fls and do the following to obtain a full 
+  flash without the EEPROM:
+  WARNING: If you notice the file contains FF00,FF00 from 
+  beginning to end, DO NOT PROCEED because this is a bad read 
+  flash.
+  3.1 Go to address 3FC000 (this is equivalent to flash address 
+  005FC000)
+  3.2 Press Shift-Ctrl-Home. This will highlight the data from 
+  offset 00000000 to 003FC000. Release the keys.
+  3.3 Press Ctrl-C. This will copy the highlighted data to the 
+  clipboard or memory.
+  3.4 Press Ctrl-N. This will create an empty file.
+  3.5 Press Ctrl-V. you will be asked "Are you sure you want to 
+  insert?", select "Ok". 
+  This will copy the previously highlighted data to the new 
+  file. 
+  3.6 Save the file as "my6210.fls"
+  4. Make a copy of the flash that contains the alert tones. 
+  4.1 Still using the hex editor, open the file "my6210.fls"
+  4.2 Go to offset 350000. Press Shift-Ctrl-Home. This will 
+  highlight the data from offset 00000000 to 003FC000. Release 
+  the keys.
+  4.3 Press Del. You will be asked "Are you sure you want to 
+  delete?". Press "Ok". This will delete the data from 0 to 
+  350000.
+  4.4 Go to offset 10000. Press Shift-Ctrl-End. This will 
+  highlight the data from offset 10000 to the end of file.
+  4.5 Press Del. You will be asked "Are you sure you want to 
+  delete?". Press "Ok". This will leave you a 64k data from 0 to 
+  10000 (which is equivalent to flash address 00550000 to 
+  00560000).
+  4.6 Save the file as \nk_files\6210al.fls
+  5. Copy \nk_files\6210al.fls to \nk_files\alert.fls
+  6. Open the \nk_files\alert.fls with a hex editor (I use 
+  Hexworks).
+  7. Use the search string "8005020A01".
+  First stop should be the Special alert tone.
+  You will notice that there's "SMSS.......S.p.e.c.i.a.l" before 
+  it.
+  Pressing F3 will take you to the next found string. This is 
+  the Standard alert. You will notice that there's 
+  "SMS.......S.t.a.n.d.a.r.d" before it.
+  Again pressing F3 will take you to the next found string. This 
+  is the Ascending alert. You will notice that there's 
+  "SMSL.......L.o.n.g. .l.o.u.d" before it.
+  Don't forget when you flash it back, you should use alert.fls 
+  as source and the address should be 00550000.
+  Assuming you have flashed it back to the correct address and 
+  it shows a "Contact Service", you may have incorrectly 
+  modified your alert tone. If this happens, proceed to number 5.
+  If you want to flash it back to its original alert tones, 
+  flash it back with 6210al.fls at address 00550000. 
+  But if it still has a Contact Service, flash it back with a 
+  my6210.fls starting from address 00200000. This should restore 
+  your original flash without the EEPROM part.
+  This procedure is a little bit for advanced flasher users. If 
+  you don't know what you're doing, don't try it out. You have 
+  yourself to blame if something pukes up.
+  Hmmm... I guess few people are interested in what I'm posting 
+  here. Out of more than 100 readers since my first posting in 
+  this thread, only 2 person rated me.
+  Oh well, all I'm asking is: rate me please 
+  -----------------
+  Misqouted qoutes:
+  "Don't judge the book without its cover"
+  "Birds flock together on the same feather"
+  "Don't cross the bridge when you get there"
+  "There's no water under the bridge"
+  --------------------
+  "Keyboard not found. Press F1 to continue."
+  ICQ#:97427188
+  -------------------
+  Send me private messages if any, no kinky stuff though. :-)
+
+
+  Posts: 171 | From: Bacolod, Philippines | Registered: Feb 2001 
+   |  IP:  
+
+  nuggie 
+  Junior Member 
+   
+  Member # 3304 
+  Member Rated:
+    posted 05 July 2001 13:34         
+
+  I've tryed to do this like that :
+  1.make a full backup 002 to 006 (6210)
+  2.edit with hexworkshop and change the SMS alert
+  3.try to correct checksums with NK1.2 to avoid Contact Service
+  4.put flash back to phone
+  5.works fine 
+  Ice Dragon: does point 3 make any sense?
+  [ 05 July 2001 13:38: Message edited 3 times, lastly by nuggie ] 
+
+
+  Posts: 27 | From: Westcoast, Poland | Registered: Feb 2001  |  
+  IP:  
+
+  Ice Dragon 
+  Freak Poster 
+   
+  Member # 3365 
+  Member Rated:
+    posted 06 July 2001 03:07         
+
+
+    quote:
+
+    Originally posted by nuggie:
+    I've tryed to do this like that :
+    1.make a full backup 002 to 006 (6210)
+    2.edit with hexworkshop and change the SMS alert
+    3.try to correct checksums with NK1.2 to avoid Contact 
+    Service
+    4.put flash back to phone
+    5.works fine 
+    Ice Dragon: does point 3 make any sense?
+
+
+
+  Not only "sense" (cents), but also dollars... heh..heh...heh...
+  I did that already but it always take a long wait to write the 
+  whole modified flash back to the phone.
+  With a 5110v530C flash, I also tried cutting the first part of 
+  the modified flash (flash address 00200000-00210000), write it 
+  back to the phone, then cut the last part of the modified 
+  flash (002F0000-00300000) back to the phone so it would take a 
+  much lesser time.
+  The one I posted earlier is also to let our members reader 
+  learn a little bit about the alert and ring tones in the 
+  flash, and the possibility of changing them. Although I 
+  believe that our members here know more than I do.
+  Cheers to you... and best regards to all 
+  [ 06 July 2001 03:10: Message edited 1 time, lastly by Ice 
+  Dragon ]
+  --------------------
+  "Keyboard not found. Press F1 to continue."
+  ICQ#:97427188
+  -------------------
+  Send me private messages if any, no kinky stuff though. :-)
+
+
+  Posts: 171 | From: Bacolod, Philippines | Registered: Feb 2001 
+   |  IP:  
+
+  aZyWeRks 
+  Freak Poster 
+   
+  Member # 3170 
+  Member Rated:
+    posted 06 July 2001 15:56         
+
+  Man, thanks a lot for the values. I'll try it. 
+  And about the word addition information. I'll try to make a 
+  workaround on this if I have enough time. I've been off the 
+  internet for a time.
+  Thanks a lot man. You're great.
+
+  Regards,
+  aCe
+  --------------------
+  http://getit.at/azywerks
+
+
+  Posts: 131 | From: I.C., R.P. | Registered: Jan 2001  |  IP:  
+
+  koloksky 
+  Freak Poster 
+   
+  Member # 718  posted 07 July 2001 00:26      
+
+  hi,
+  That is really cool!! thanks IceDragon!  
+  u deserve a      
+  regards  
+
+
+  Posts: 156 | Registered: Nov 1999  |  IP:  
+
+  nuggie 
+  Junior Member 
+   
+  Member # 3304 
+  Member Rated:
+    posted 14 July 2001 20:23         
+
+  Ice Dragon:
+  Look here at the ringtone info.
+  web page
+  [ 14 July 2001 20:26: Message edited 2 times, lastly by nuggie 
+  ] 
+
+
+  Posts: 27 | From: Westcoast, Poland | Registered: Feb 2001  |  
+  IP:  
+
+  Rayborg 
+  Newbie 
+   
+  Member # 5357 
+  Rate Member  posted 19 July 2001 14:37      
+
+  How does it works with a Nokia 3310?
+  I think there are other HexValues, but I´m not able to find 
+  them! Please help me! 
+
+  Posts: 8 | From: Germany | Registered: Jul 2001  |  IP:  
+
+  Ice Dragon 
+  Freak Poster 
+   
+  Member # 3365 
+  Member Rated:
+    posted 23 July 2001 03:32         
+
+
+    quote:
+
+    Originally posted by Rayborg:
+    How does it works with a Nokia 3310?
+    I think there are other HexValues, but I´m not able to find 
+    them! Please help me!
+
+
+  Still use the search string: "8005020A01".
+  First stop should be the Special alert tone.
+  You will notice that previously the tones have 5A0C, 400C, 
+  5A25, 400C values. With the 3310, it uses the 5B0C, 400C, 
+  5A25, 400c values.
+  "5B0C" is a "dit" with a duration of 0C
+  "5B25" is a "dat" with a duration of 25
+  "400C" is a pause with a duration of 0C
+  "4025" is a pause with a duration of 25
+  Pressing F3 will take you to the next found string. This is 
+  the Standard alert. It uses the 5619, 400A, 5618, 400A values.
+  "5619" is a "dit" with a duration of 19
+  "400A" is a pause with a duration of 0A
+  Again pressing F3 will take you to the next found string. This 
+  is the Ascending alert. It uses the 5B0C, 400C, 5B25, 400C 
+  values.
+  "5B0C" is a "dit" with a duration of 0C
+  "5B25" is a "dat" with a duration of 25
+  "400C" is a pause with a duration of 0C
+  "4025" is a pause with a duration of 25
+  The alert tones on the 3310 reside in the MCU part of the full 
+  flash.
+  Best regards and cheers...
+  [ 23 July 2001 03:45: Message edited 1 time, lastly by Ice 
+  Dragon ]
+  --------------------
+  "Keyboard not found. Press F1 to continue."
+  ICQ#:97427188
+  -------------------
+  Send me private messages if any, no kinky stuff though. :-)
+
+
diff --git a/Docs/default/sounds/ringtones/12_months b/Docs/default/sounds/ringtones/12_months
new file mode 100644 (file)
index 0000000..32d49b3
Binary files /dev/null and b/Docs/default/sounds/ringtones/12_months differ
diff --git a/Docs/default/sounds/ringtones/9th_Symphony b/Docs/default/sounds/ringtones/9th_Symphony
new file mode 100644 (file)
index 0000000..5c15561
Binary files /dev/null and b/Docs/default/sounds/ringtones/9th_Symphony differ
diff --git a/Docs/default/sounds/ringtones/Alamuhan b/Docs/default/sounds/ringtones/Alamuhan
new file mode 100644 (file)
index 0000000..ae726d1
Binary files /dev/null and b/Docs/default/sounds/ringtones/Alamuhan differ
diff --git a/Docs/default/sounds/ringtones/Attraction b/Docs/default/sounds/ringtones/Attraction
new file mode 100644 (file)
index 0000000..87acb08
Binary files /dev/null and b/Docs/default/sounds/ringtones/Attraction differ
diff --git a/Docs/default/sounds/ringtones/Auld_Lang_Syne b/Docs/default/sounds/ringtones/Auld_Lang_Syne
new file mode 100644 (file)
index 0000000..617baaf
Binary files /dev/null and b/Docs/default/sounds/ringtones/Auld_Lang_Syne differ
diff --git a/Docs/default/sounds/ringtones/Bach_nr_3 b/Docs/default/sounds/ringtones/Bach_nr_3
new file mode 100644 (file)
index 0000000..7959b85
Binary files /dev/null and b/Docs/default/sounds/ringtones/Bach_nr_3 differ
diff --git a/Docs/default/sounds/ringtones/Badinerie b/Docs/default/sounds/ringtones/Badinerie
new file mode 100644 (file)
index 0000000..75f6dd6
Binary files /dev/null and b/Docs/default/sounds/ringtones/Badinerie differ
diff --git a/Docs/default/sounds/ringtones/Barn_dance b/Docs/default/sounds/ringtones/Barn_dance
new file mode 100644 (file)
index 0000000..5b5f46b
Binary files /dev/null and b/Docs/default/sounds/ringtones/Barn_dance differ
diff --git a/Docs/default/sounds/ringtones/Baroque b/Docs/default/sounds/ringtones/Baroque
new file mode 100644 (file)
index 0000000..9d145a9
Binary files /dev/null and b/Docs/default/sounds/ringtones/Baroque differ
diff --git a/Docs/default/sounds/ringtones/Basic_rock b/Docs/default/sounds/ringtones/Basic_rock
new file mode 100644 (file)
index 0000000..bdf8e19
Binary files /dev/null and b/Docs/default/sounds/ringtones/Basic_rock differ
diff --git a/Docs/default/sounds/ringtones/Bee b/Docs/default/sounds/ringtones/Bee
new file mode 100644 (file)
index 0000000..1199357
Binary files /dev/null and b/Docs/default/sounds/ringtones/Bee differ
diff --git a/Docs/default/sounds/ringtones/Bossanova b/Docs/default/sounds/ringtones/Bossanova
new file mode 100644 (file)
index 0000000..89eda9f
Binary files /dev/null and b/Docs/default/sounds/ringtones/Bossanova differ
diff --git a/Docs/default/sounds/ringtones/Bounce b/Docs/default/sounds/ringtones/Bounce
new file mode 100644 (file)
index 0000000..12f04be
Binary files /dev/null and b/Docs/default/sounds/ringtones/Bounce differ
diff --git a/Docs/default/sounds/ringtones/Brave_Scotland b/Docs/default/sounds/ringtones/Brave_Scotland
new file mode 100644 (file)
index 0000000..a0d7506
Binary files /dev/null and b/Docs/default/sounds/ringtones/Brave_Scotland differ
diff --git a/Docs/default/sounds/ringtones/Bumblebee b/Docs/default/sounds/ringtones/Bumblebee
new file mode 100644 (file)
index 0000000..ba733a1
Binary files /dev/null and b/Docs/default/sounds/ringtones/Bumblebee differ
diff --git a/Docs/default/sounds/ringtones/Canter b/Docs/default/sounds/ringtones/Canter
new file mode 100644 (file)
index 0000000..5ac90bb
Binary files /dev/null and b/Docs/default/sounds/ringtones/Canter differ
diff --git a/Docs/default/sounds/ringtones/Carioca b/Docs/default/sounds/ringtones/Carioca
new file mode 100644 (file)
index 0000000..30de51d
Binary files /dev/null and b/Docs/default/sounds/ringtones/Carioca differ
diff --git a/Docs/default/sounds/ringtones/Charleston b/Docs/default/sounds/ringtones/Charleston
new file mode 100644 (file)
index 0000000..bfbd4a1
Binary files /dev/null and b/Docs/default/sounds/ringtones/Charleston differ
diff --git a/Docs/default/sounds/ringtones/Chase b/Docs/default/sounds/ringtones/Chase
new file mode 100644 (file)
index 0000000..39e47ea
Binary files /dev/null and b/Docs/default/sounds/ringtones/Chase differ
diff --git a/Docs/default/sounds/ringtones/Cicada b/Docs/default/sounds/ringtones/Cicada
new file mode 100644 (file)
index 0000000..4c3b457
Binary files /dev/null and b/Docs/default/sounds/ringtones/Cicada differ
diff --git a/Docs/default/sounds/ringtones/Circles b/Docs/default/sounds/ringtones/Circles
new file mode 100644 (file)
index 0000000..6c3d165
Binary files /dev/null and b/Docs/default/sounds/ringtones/Circles differ
diff --git a/Docs/default/sounds/ringtones/City_Slicker b/Docs/default/sounds/ringtones/City_Slicker
new file mode 100644 (file)
index 0000000..3bc8ed8
Binary files /dev/null and b/Docs/default/sounds/ringtones/City_Slicker differ
diff --git a/Docs/default/sounds/ringtones/City_bird b/Docs/default/sounds/ringtones/City_bird
new file mode 100644 (file)
index 0000000..9869c95
Binary files /dev/null and b/Docs/default/sounds/ringtones/City_bird differ
diff --git a/Docs/default/sounds/ringtones/Cladoceran b/Docs/default/sounds/ringtones/Cladoceran
new file mode 100644 (file)
index 0000000..e767324
Binary files /dev/null and b/Docs/default/sounds/ringtones/Cladoceran differ
diff --git a/Docs/default/sounds/ringtones/Classical b/Docs/default/sounds/ringtones/Classical
new file mode 100644 (file)
index 0000000..8c399a6
Binary files /dev/null and b/Docs/default/sounds/ringtones/Classical differ
diff --git a/Docs/default/sounds/ringtones/Croak b/Docs/default/sounds/ringtones/Croak
new file mode 100644 (file)
index 0000000..3fae222
Binary files /dev/null and b/Docs/default/sounds/ringtones/Croak differ
diff --git a/Docs/default/sounds/ringtones/Dawn b/Docs/default/sounds/ringtones/Dawn
new file mode 100644 (file)
index 0000000..760b462
Binary files /dev/null and b/Docs/default/sounds/ringtones/Dawn differ
diff --git a/Docs/default/sounds/ringtones/Dizzy b/Docs/default/sounds/ringtones/Dizzy
new file mode 100644 (file)
index 0000000..5634e9d
Binary files /dev/null and b/Docs/default/sounds/ringtones/Dizzy differ
diff --git a/Docs/default/sounds/ringtones/Do-mi-so b/Docs/default/sounds/ringtones/Do-mi-so
new file mode 100644 (file)
index 0000000..c3f2a29
Binary files /dev/null and b/Docs/default/sounds/ringtones/Do-mi-so differ
diff --git a/Docs/default/sounds/ringtones/Electric_eel b/Docs/default/sounds/ringtones/Electric_eel
new file mode 100644 (file)
index 0000000..59a0069
Binary files /dev/null and b/Docs/default/sounds/ringtones/Electric_eel differ
diff --git a/Docs/default/sounds/ringtones/Elise b/Docs/default/sounds/ringtones/Elise
new file mode 100644 (file)
index 0000000..b7061ec
Binary files /dev/null and b/Docs/default/sounds/ringtones/Elise differ
diff --git a/Docs/default/sounds/ringtones/Entertainer b/Docs/default/sounds/ringtones/Entertainer
new file mode 100644 (file)
index 0000000..8a73fe4
Binary files /dev/null and b/Docs/default/sounds/ringtones/Entertainer differ
diff --git a/Docs/default/sounds/ringtones/Etude b/Docs/default/sounds/ringtones/Etude
new file mode 100644 (file)
index 0000000..fe6775d
Binary files /dev/null and b/Docs/default/sounds/ringtones/Etude differ
diff --git a/Docs/default/sounds/ringtones/Fly b/Docs/default/sounds/ringtones/Fly
new file mode 100644 (file)
index 0000000..3f5987e
Binary files /dev/null and b/Docs/default/sounds/ringtones/Fly differ
diff --git a/Docs/default/sounds/ringtones/Fool about b/Docs/default/sounds/ringtones/Fool about
new file mode 100644 (file)
index 0000000..4278722
Binary files /dev/null and b/Docs/default/sounds/ringtones/Fool about differ
diff --git a/Docs/default/sounds/ringtones/Four_seasons b/Docs/default/sounds/ringtones/Four_seasons
new file mode 100644 (file)
index 0000000..fff359c
Binary files /dev/null and b/Docs/default/sounds/ringtones/Four_seasons differ
diff --git a/Docs/default/sounds/ringtones/Frantic b/Docs/default/sounds/ringtones/Frantic
new file mode 100644 (file)
index 0000000..1047a97
Binary files /dev/null and b/Docs/default/sounds/ringtones/Frantic differ
diff --git a/Docs/default/sounds/ringtones/Frog b/Docs/default/sounds/ringtones/Frog
new file mode 100644 (file)
index 0000000..9cf1784
Binary files /dev/null and b/Docs/default/sounds/ringtones/Frog differ
diff --git a/Docs/default/sounds/ringtones/Fuga b/Docs/default/sounds/ringtones/Fuga
new file mode 100644 (file)
index 0000000..5824c84
Binary files /dev/null and b/Docs/default/sounds/ringtones/Fuga differ
diff --git a/Docs/default/sounds/ringtones/Funfair b/Docs/default/sounds/ringtones/Funfair
new file mode 100644 (file)
index 0000000..ff1fcfe
Binary files /dev/null and b/Docs/default/sounds/ringtones/Funfair differ
diff --git a/Docs/default/sounds/ringtones/Fusion b/Docs/default/sounds/ringtones/Fusion
new file mode 100644 (file)
index 0000000..d8795d1
Binary files /dev/null and b/Docs/default/sounds/ringtones/Fusion differ
diff --git a/Docs/default/sounds/ringtones/Get_cool b/Docs/default/sounds/ringtones/Get_cool
new file mode 100644 (file)
index 0000000..87c9c85
Binary files /dev/null and b/Docs/default/sounds/ringtones/Get_cool differ
diff --git a/Docs/default/sounds/ringtones/Going_up b/Docs/default/sounds/ringtones/Going_up
new file mode 100644 (file)
index 0000000..687f694
Binary files /dev/null and b/Docs/default/sounds/ringtones/Going_up differ
diff --git a/Docs/default/sounds/ringtones/Grande_valse b/Docs/default/sounds/ringtones/Grande_valse
new file mode 100644 (file)
index 0000000..d882865
Binary files /dev/null and b/Docs/default/sounds/ringtones/Grande_valse differ
diff --git a/Docs/default/sounds/ringtones/Groovy_blue b/Docs/default/sounds/ringtones/Groovy_blue
new file mode 100644 (file)
index 0000000..1828317
Binary files /dev/null and b/Docs/default/sounds/ringtones/Groovy_blue differ
diff --git a/Docs/default/sounds/ringtones/Happy_return b/Docs/default/sounds/ringtones/Happy_return
new file mode 100644 (file)
index 0000000..14ece84
Binary files /dev/null and b/Docs/default/sounds/ringtones/Happy_return differ
diff --git a/Docs/default/sounds/ringtones/Helan b/Docs/default/sounds/ringtones/Helan
new file mode 100644 (file)
index 0000000..5bce4d6
Binary files /dev/null and b/Docs/default/sounds/ringtones/Helan differ
diff --git a/Docs/default/sounds/ringtones/HipHop b/Docs/default/sounds/ringtones/HipHop
new file mode 100644 (file)
index 0000000..b0ea0b6
Binary files /dev/null and b/Docs/default/sounds/ringtones/HipHop differ
diff --git a/Docs/default/sounds/ringtones/Hopping_down b/Docs/default/sounds/ringtones/Hopping_down
new file mode 100644 (file)
index 0000000..f6d4bed
Binary files /dev/null and b/Docs/default/sounds/ringtones/Hopping_down differ
diff --git a/Docs/default/sounds/ringtones/Hummingbird b/Docs/default/sounds/ringtones/Hummingbird
new file mode 100644 (file)
index 0000000..a35e6f5
Binary files /dev/null and b/Docs/default/sounds/ringtones/Hummingbird differ
diff --git a/Docs/default/sounds/ringtones/Hunt b/Docs/default/sounds/ringtones/Hunt
new file mode 100644 (file)
index 0000000..4f87ea0
Binary files /dev/null and b/Docs/default/sounds/ringtones/Hunt differ
diff --git a/Docs/default/sounds/ringtones/Hurdy-gurdy b/Docs/default/sounds/ringtones/Hurdy-gurdy
new file mode 100644 (file)
index 0000000..329175a
Binary files /dev/null and b/Docs/default/sounds/ringtones/Hurdy-gurdy differ
diff --git a/Docs/default/sounds/ringtones/Hurry_up b/Docs/default/sounds/ringtones/Hurry_up
new file mode 100644 (file)
index 0000000..fa89fcd
Binary files /dev/null and b/Docs/default/sounds/ringtones/Hurry_up differ
diff --git a/Docs/default/sounds/ringtones/Improvisation b/Docs/default/sounds/ringtones/Improvisation
new file mode 100644 (file)
index 0000000..8ed2373
Binary files /dev/null and b/Docs/default/sounds/ringtones/Improvisation differ
diff --git a/Docs/default/sounds/ringtones/Indifference b/Docs/default/sounds/ringtones/Indifference
new file mode 100644 (file)
index 0000000..a2ba420
Binary files /dev/null and b/Docs/default/sounds/ringtones/Indifference differ
diff --git a/Docs/default/sounds/ringtones/Intro b/Docs/default/sounds/ringtones/Intro
new file mode 100644 (file)
index 0000000..46a87ba
Binary files /dev/null and b/Docs/default/sounds/ringtones/Intro differ
diff --git a/Docs/default/sounds/ringtones/Jingle_bells b/Docs/default/sounds/ringtones/Jingle_bells
new file mode 100644 (file)
index 0000000..140a9c9
Binary files /dev/null and b/Docs/default/sounds/ringtones/Jingle_bells differ
diff --git a/Docs/default/sounds/ringtones/Jitters b/Docs/default/sounds/ringtones/Jitters
new file mode 100644 (file)
index 0000000..5d53494
Binary files /dev/null and b/Docs/default/sounds/ringtones/Jitters differ
diff --git a/Docs/default/sounds/ringtones/Jumping b/Docs/default/sounds/ringtones/Jumping
new file mode 100644 (file)
index 0000000..3c3035d
Binary files /dev/null and b/Docs/default/sounds/ringtones/Jumping differ
diff --git a/Docs/default/sounds/ringtones/Kick b/Docs/default/sounds/ringtones/Kick
new file mode 100644 (file)
index 0000000..67f208f
Binary files /dev/null and b/Docs/default/sounds/ringtones/Kick differ
diff --git a/Docs/default/sounds/ringtones/Knick-knack b/Docs/default/sounds/ringtones/Knick-knack
new file mode 100644 (file)
index 0000000..a42ddc1
Binary files /dev/null and b/Docs/default/sounds/ringtones/Knick-knack differ
diff --git a/Docs/default/sounds/ringtones/Knock_again b/Docs/default/sounds/ringtones/Knock_again
new file mode 100644 (file)
index 0000000..3655b13
Binary files /dev/null and b/Docs/default/sounds/ringtones/Knock_again differ
diff --git a/Docs/default/sounds/ringtones/Knock_knock b/Docs/default/sounds/ringtones/Knock_knock
new file mode 100644 (file)
index 0000000..941602a
Binary files /dev/null and b/Docs/default/sounds/ringtones/Knock_knock differ
diff --git a/Docs/default/sounds/ringtones/Lamb b/Docs/default/sounds/ringtones/Lamb
new file mode 100644 (file)
index 0000000..783af35
Binary files /dev/null and b/Docs/default/sounds/ringtones/Lamb differ
diff --git a/Docs/default/sounds/ringtones/Languor b/Docs/default/sounds/ringtones/Languor
new file mode 100644 (file)
index 0000000..554d129
Binary files /dev/null and b/Docs/default/sounds/ringtones/Languor differ
diff --git a/Docs/default/sounds/ringtones/Left_hand b/Docs/default/sounds/ringtones/Left_hand
new file mode 100644 (file)
index 0000000..1e4aea1
Binary files /dev/null and b/Docs/default/sounds/ringtones/Left_hand differ
diff --git a/Docs/default/sounds/ringtones/Liszt b/Docs/default/sounds/ringtones/Liszt
new file mode 100644 (file)
index 0000000..c0848a1
Binary files /dev/null and b/Docs/default/sounds/ringtones/Liszt differ
diff --git a/Docs/default/sounds/ringtones/Low b/Docs/default/sounds/ringtones/Low
new file mode 100644 (file)
index 0000000..f18eb25
Binary files /dev/null and b/Docs/default/sounds/ringtones/Low differ
diff --git a/Docs/default/sounds/ringtones/Mangrove b/Docs/default/sounds/ringtones/Mangrove
new file mode 100644 (file)
index 0000000..7ff92bf
Binary files /dev/null and b/Docs/default/sounds/ringtones/Mangrove differ
diff --git a/Docs/default/sounds/ringtones/Marry b/Docs/default/sounds/ringtones/Marry
new file mode 100644 (file)
index 0000000..8276fda
Binary files /dev/null and b/Docs/default/sounds/ringtones/Marry differ
diff --git a/Docs/default/sounds/ringtones/Matilda b/Docs/default/sounds/ringtones/Matilda
new file mode 100644 (file)
index 0000000..64820f7
Binary files /dev/null and b/Docs/default/sounds/ringtones/Matilda differ
diff --git a/Docs/default/sounds/ringtones/Menuet b/Docs/default/sounds/ringtones/Menuet
new file mode 100644 (file)
index 0000000..11dc800
Binary files /dev/null and b/Docs/default/sounds/ringtones/Menuet differ
diff --git a/Docs/default/sounds/ringtones/Merry_Xmas b/Docs/default/sounds/ringtones/Merry_Xmas
new file mode 100644 (file)
index 0000000..d90d05b
Binary files /dev/null and b/Docs/default/sounds/ringtones/Merry_Xmas differ
diff --git a/Docs/default/sounds/ringtones/Mexican_Hat_Dance b/Docs/default/sounds/ringtones/Mexican_Hat_Dance
new file mode 100644 (file)
index 0000000..3bb9482
Binary files /dev/null and b/Docs/default/sounds/ringtones/Mexican_Hat_Dance differ
diff --git a/Docs/default/sounds/ringtones/Moon & clouds b/Docs/default/sounds/ringtones/Moon & clouds
new file mode 100644 (file)
index 0000000..205ac91
Binary files /dev/null and b/Docs/default/sounds/ringtones/Moon & clouds differ
diff --git a/Docs/default/sounds/ringtones/Morning b/Docs/default/sounds/ringtones/Morning
new file mode 100644 (file)
index 0000000..c2bc12f
Binary files /dev/null and b/Docs/default/sounds/ringtones/Morning differ
diff --git a/Docs/default/sounds/ringtones/Mosquito b/Docs/default/sounds/ringtones/Mosquito
new file mode 100644 (file)
index 0000000..deb3678
Binary files /dev/null and b/Docs/default/sounds/ringtones/Mosquito differ
diff --git a/Docs/default/sounds/ringtones/Mozart40 b/Docs/default/sounds/ringtones/Mozart40
new file mode 100644 (file)
index 0000000..2547f35
Binary files /dev/null and b/Docs/default/sounds/ringtones/Mozart40 differ
diff --git a/Docs/default/sounds/ringtones/Nokia_tune b/Docs/default/sounds/ringtones/Nokia_tune
new file mode 100644 (file)
index 0000000..7291c69
Binary files /dev/null and b/Docs/default/sounds/ringtones/Nokia_tune differ
diff --git a/Docs/default/sounds/ringtones/Ode_to_Joy b/Docs/default/sounds/ringtones/Ode_to_Joy
new file mode 100644 (file)
index 0000000..0376b05
Binary files /dev/null and b/Docs/default/sounds/ringtones/Ode_to_Joy differ
diff --git a/Docs/default/sounds/ringtones/Orient b/Docs/default/sounds/ringtones/Orient
new file mode 100644 (file)
index 0000000..1e4f1c4
Binary files /dev/null and b/Docs/default/sounds/ringtones/Orient differ
diff --git a/Docs/default/sounds/ringtones/Persuasion b/Docs/default/sounds/ringtones/Persuasion
new file mode 100644 (file)
index 0000000..f6d5aac
Binary files /dev/null and b/Docs/default/sounds/ringtones/Persuasion differ
diff --git a/Docs/default/sounds/ringtones/Piano_concerto b/Docs/default/sounds/ringtones/Piano_concerto
new file mode 100644 (file)
index 0000000..826bfa6
Binary files /dev/null and b/Docs/default/sounds/ringtones/Piano_concerto differ
diff --git a/Docs/default/sounds/ringtones/Playground b/Docs/default/sounds/ringtones/Playground
new file mode 100644 (file)
index 0000000..55660c4
Binary files /dev/null and b/Docs/default/sounds/ringtones/Playground differ
diff --git a/Docs/default/sounds/ringtones/Polite b/Docs/default/sounds/ringtones/Polite
new file mode 100644 (file)
index 0000000..a4fa533
Binary files /dev/null and b/Docs/default/sounds/ringtones/Polite differ
diff --git a/Docs/default/sounds/ringtones/Polka b/Docs/default/sounds/ringtones/Polka
new file mode 100644 (file)
index 0000000..1db9c2a
Binary files /dev/null and b/Docs/default/sounds/ringtones/Polka differ
diff --git a/Docs/default/sounds/ringtones/Polska b/Docs/default/sounds/ringtones/Polska
new file mode 100644 (file)
index 0000000..f7ae44d
Binary files /dev/null and b/Docs/default/sounds/ringtones/Polska differ
diff --git a/Docs/default/sounds/ringtones/Private_eye b/Docs/default/sounds/ringtones/Private_eye
new file mode 100644 (file)
index 0000000..be3043c
Binary files /dev/null and b/Docs/default/sounds/ringtones/Private_eye differ
diff --git a/Docs/default/sounds/ringtones/Progress b/Docs/default/sounds/ringtones/Progress
new file mode 100644 (file)
index 0000000..bb14b8d
Binary files /dev/null and b/Docs/default/sounds/ringtones/Progress differ
diff --git a/Docs/default/sounds/ringtones/Reveille b/Docs/default/sounds/ringtones/Reveille
new file mode 100644 (file)
index 0000000..5dc251c
Binary files /dev/null and b/Docs/default/sounds/ringtones/Reveille differ
diff --git a/Docs/default/sounds/ringtones/Right_Hand b/Docs/default/sounds/ringtones/Right_Hand
new file mode 100644 (file)
index 0000000..8bfcd75
Binary files /dev/null and b/Docs/default/sounds/ringtones/Right_Hand differ
diff --git a/Docs/default/sounds/ringtones/Ring_ring b/Docs/default/sounds/ringtones/Ring_ring
new file mode 100644 (file)
index 0000000..f6384ad
Binary files /dev/null and b/Docs/default/sounds/ringtones/Ring_ring differ
diff --git a/Docs/default/sounds/ringtones/Robo_N1X b/Docs/default/sounds/ringtones/Robo_N1X
new file mode 100644 (file)
index 0000000..c3fbec7
Binary files /dev/null and b/Docs/default/sounds/ringtones/Robo_N1X differ
diff --git a/Docs/default/sounds/ringtones/Rocket b/Docs/default/sounds/ringtones/Rocket
new file mode 100644 (file)
index 0000000..c276b52
Binary files /dev/null and b/Docs/default/sounds/ringtones/Rocket differ
diff --git a/Docs/default/sounds/ringtones/Running_horse b/Docs/default/sounds/ringtones/Running_horse
new file mode 100644 (file)
index 0000000..bc04acf
Binary files /dev/null and b/Docs/default/sounds/ringtones/Running_horse differ
diff --git a/Docs/default/sounds/ringtones/Salsa b/Docs/default/sounds/ringtones/Salsa
new file mode 100644 (file)
index 0000000..0ff5015
Binary files /dev/null and b/Docs/default/sounds/ringtones/Salsa differ
diff --git a/Docs/default/sounds/ringtones/Samba b/Docs/default/sounds/ringtones/Samba
new file mode 100644 (file)
index 0000000..26caf11
Binary files /dev/null and b/Docs/default/sounds/ringtones/Samba differ
diff --git a/Docs/default/sounds/ringtones/Samba_rumble b/Docs/default/sounds/ringtones/Samba_rumble
new file mode 100644 (file)
index 0000000..7c04599
Binary files /dev/null and b/Docs/default/sounds/ringtones/Samba_rumble differ
diff --git a/Docs/default/sounds/ringtones/Sare b/Docs/default/sounds/ringtones/Sare
new file mode 100644 (file)
index 0000000..4439a31
Binary files /dev/null and b/Docs/default/sounds/ringtones/Sare differ
diff --git a/Docs/default/sounds/ringtones/Scifi b/Docs/default/sounds/ringtones/Scifi
new file mode 100644 (file)
index 0000000..473e160
Binary files /dev/null and b/Docs/default/sounds/ringtones/Scifi differ
diff --git a/Docs/default/sounds/ringtones/Side_step b/Docs/default/sounds/ringtones/Side_step
new file mode 100644 (file)
index 0000000..bb14383
Binary files /dev/null and b/Docs/default/sounds/ringtones/Side_step differ
diff --git a/Docs/default/sounds/ringtones/Siren b/Docs/default/sounds/ringtones/Siren
new file mode 100644 (file)
index 0000000..668536e
Binary files /dev/null and b/Docs/default/sounds/ringtones/Siren differ
diff --git a/Docs/default/sounds/ringtones/Songette b/Docs/default/sounds/ringtones/Songette
new file mode 100644 (file)
index 0000000..1dfca10
Binary files /dev/null and b/Docs/default/sounds/ringtones/Songette differ
diff --git a/Docs/default/sounds/ringtones/Speedy b/Docs/default/sounds/ringtones/Speedy
new file mode 100644 (file)
index 0000000..0743a0d
Binary files /dev/null and b/Docs/default/sounds/ringtones/Speedy differ
diff --git a/Docs/default/sounds/ringtones/Sunny_walks b/Docs/default/sounds/ringtones/Sunny_walks
new file mode 100644 (file)
index 0000000..bc5020b
Binary files /dev/null and b/Docs/default/sounds/ringtones/Sunny_walks differ
diff --git a/Docs/default/sounds/ringtones/Swan_Lake b/Docs/default/sounds/ringtones/Swan_Lake
new file mode 100644 (file)
index 0000000..ce54f04
Binary files /dev/null and b/Docs/default/sounds/ringtones/Swan_Lake differ
diff --git a/Docs/default/sounds/ringtones/Tango b/Docs/default/sounds/ringtones/Tango
new file mode 100644 (file)
index 0000000..291a160
Binary files /dev/null and b/Docs/default/sounds/ringtones/Tango differ
diff --git a/Docs/default/sounds/ringtones/Tangoed b/Docs/default/sounds/ringtones/Tangoed
new file mode 100644 (file)
index 0000000..e40a762
Binary files /dev/null and b/Docs/default/sounds/ringtones/Tangoed differ
diff --git a/Docs/default/sounds/ringtones/Tap dance b/Docs/default/sounds/ringtones/Tap dance
new file mode 100644 (file)
index 0000000..b03ac5a
Binary files /dev/null and b/Docs/default/sounds/ringtones/Tap dance differ
diff --git a/Docs/default/sounds/ringtones/Tchaikovsky b/Docs/default/sounds/ringtones/Tchaikovsky
new file mode 100644 (file)
index 0000000..2a85984
Binary files /dev/null and b/Docs/default/sounds/ringtones/Tchaikovsky differ
diff --git a/Docs/default/sounds/ringtones/That_is_it b/Docs/default/sounds/ringtones/That_is_it
new file mode 100644 (file)
index 0000000..dbd398f
Binary files /dev/null and b/Docs/default/sounds/ringtones/That_is_it differ
diff --git a/Docs/default/sounds/ringtones/The_Buffoon b/Docs/default/sounds/ringtones/The_Buffoon
new file mode 100644 (file)
index 0000000..1d9b67c
Binary files /dev/null and b/Docs/default/sounds/ringtones/The_Buffoon differ
diff --git a/Docs/default/sounds/ringtones/Tick_tick b/Docs/default/sounds/ringtones/Tick_tick
new file mode 100644 (file)
index 0000000..a27c005
Binary files /dev/null and b/Docs/default/sounds/ringtones/Tick_tick differ
diff --git a/Docs/default/sounds/ringtones/Tingle b/Docs/default/sounds/ringtones/Tingle
new file mode 100644 (file)
index 0000000..9d0c336
Binary files /dev/null and b/Docs/default/sounds/ringtones/Tingle differ
diff --git a/Docs/default/sounds/ringtones/Toreador b/Docs/default/sounds/ringtones/Toreador
new file mode 100644 (file)
index 0000000..ba2007a
Binary files /dev/null and b/Docs/default/sounds/ringtones/Toreador differ
diff --git a/Docs/default/sounds/ringtones/Toreador1 b/Docs/default/sounds/ringtones/Toreador1
new file mode 100644 (file)
index 0000000..03088e5
Binary files /dev/null and b/Docs/default/sounds/ringtones/Toreador1 differ
diff --git a/Docs/default/sounds/ringtones/Transylvania b/Docs/default/sounds/ringtones/Transylvania
new file mode 100644 (file)
index 0000000..4e3e49f
Binary files /dev/null and b/Docs/default/sounds/ringtones/Transylvania differ
diff --git a/Docs/default/sounds/ringtones/Treadmill b/Docs/default/sounds/ringtones/Treadmill
new file mode 100644 (file)
index 0000000..61d520c
Binary files /dev/null and b/Docs/default/sounds/ringtones/Treadmill differ
diff --git a/Docs/default/sounds/ringtones/Trio b/Docs/default/sounds/ringtones/Trio
new file mode 100644 (file)
index 0000000..b713fe3
Binary files /dev/null and b/Docs/default/sounds/ringtones/Trio differ
diff --git a/Docs/default/sounds/ringtones/Tripod b/Docs/default/sounds/ringtones/Tripod
new file mode 100644 (file)
index 0000000..ffa2340
Binary files /dev/null and b/Docs/default/sounds/ringtones/Tripod differ
diff --git a/Docs/default/sounds/ringtones/Tweet b/Docs/default/sounds/ringtones/Tweet
new file mode 100644 (file)
index 0000000..2bf9291
Binary files /dev/null and b/Docs/default/sounds/ringtones/Tweet differ
diff --git a/Docs/default/sounds/ringtones/Valkyrie b/Docs/default/sounds/ringtones/Valkyrie
new file mode 100644 (file)
index 0000000..924d87a
Binary files /dev/null and b/Docs/default/sounds/ringtones/Valkyrie differ
diff --git a/Docs/default/sounds/ringtones/Walze_Brillant b/Docs/default/sounds/ringtones/Walze_Brillant
new file mode 100644 (file)
index 0000000..fbd67bb
Binary files /dev/null and b/Docs/default/sounds/ringtones/Walze_Brillant differ
diff --git a/Docs/default/sounds/ringtones/William_Tell b/Docs/default/sounds/ringtones/William_Tell
new file mode 100644 (file)
index 0000000..ae397b5
Binary files /dev/null and b/Docs/default/sounds/ringtones/William_Tell differ
diff --git a/Docs/default/sounds/sms/SMS_Ancending b/Docs/default/sounds/sms/SMS_Ancending
new file mode 100644 (file)
index 0000000..0832385
Binary files /dev/null and b/Docs/default/sounds/sms/SMS_Ancending differ
diff --git a/Docs/default/sounds/sms/SMS_Beep_once b/Docs/default/sounds/sms/SMS_Beep_once
new file mode 100644 (file)
index 0000000..7f51c27
Binary files /dev/null and b/Docs/default/sounds/sms/SMS_Beep_once differ
diff --git a/Docs/default/sounds/sms/SMS_Special b/Docs/default/sounds/sms/SMS_Special
new file mode 100644 (file)
index 0000000..37c3fdb
Binary files /dev/null and b/Docs/default/sounds/sms/SMS_Special differ
diff --git a/Docs/default/sounds/sms/SMS_Standard b/Docs/default/sounds/sms/SMS_Standard
new file mode 100644 (file)
index 0000000..fa14589
Binary files /dev/null and b/Docs/default/sounds/sms/SMS_Standard differ
diff --git a/Docs/developers/gnokii/CodingStyle b/Docs/developers/gnokii/CodingStyle
new file mode 100644 (file)
index 0000000..e0915bd
--- /dev/null
@@ -0,0 +1,235 @@
+
+               Linux kernel coding style 
+
+This is a short document describing the preferred coding style for the
+linux kernel.  Coding style is very personal, and I won't _force_ my
+views on anybody, but this is what goes for anything that I have to be
+able to maintain, and I'd prefer it for most other things too.  Please
+at least consider the points made here. 
+
+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. 
+
+
+               Chapter 7: Configuration-files
+
+For configuration options (arch/xxx/config.in, and all the Config.in files),
+somewhat different indentation is used.
+
+An indention level of 3 is used in the code, while the text in the config-
+options should have an indention-level of 2 to indicate dependencies. The
+latter only applies to bool/tristate options. For other options, just use
+common sense. An example:
+
+if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
+   tristate 'Apply nitroglycerine inside the keyboard (DANGEROUS)' CONFIG_BOOM
+   if [ "$CONFIG_BOOM" != "n" ]; then
+      bool '  Output nice messages when you explode' CONFIG_CHEER
+   fi
+fi
+
+Generally, CONFIG_EXPERIMENTAL should surround all options not considered
+stable. All options that are known to trash data (experimental write-
+support for file-systems, for instance) should be denoted (DANGEROUS), other
+Experimental options should be denoted (EXPERIMENTAL).
diff --git a/Docs/developers/gnokii/gettext-howto b/Docs/developers/gnokii/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/developers/gnokii/gnokii.txt b/Docs/developers/gnokii/gnokii.txt
new file mode 100644 (file)
index 0000000..f24e690
--- /dev/null
@@ -0,0 +1,69 @@
+NOTE for command line gnokii:
+
+--netmonitordata
+
+       we have used two data structure, defined in gnokii.h :
+
+       PARAM_INFO_MON wich is a single linked recursive list of pointers,
+       each pointers contain the complete description of one netmonitor param.
+
+       ///////////////////////////////////////////////////////////////////////
+       // start->next->next->next-> ...->next->NULL
+       //           |     |     |           |
+       //           V     V     V           V
+       //          par0  par1  par2        parN
+       ///////////////////////////////////////////////////////////////////////
+       
+       OUT_INFO_MON, contains parameters as specified
+       from the command line and an array of data pointers requested by user,
+       each one point to a single PARAM_INFO_MON
+       for optimization reason, also we filled in one array of required screen.
+
+
+       this the block diagram of program:
+       
+       PARAM_INFO_MON *info:
+       OUT_INFO_MON *out:
+
+       netmonitordata()
+
+               check for -S option, assign filename
+       
+               check for -I option, assign filename
+               
+               autodetect_phonemodel_phone_version()   This is TO DO
+       
+               info = get_min_param_info()             // nedeed here, so later we can check args param
+       
+                                                       // here we check command line arguments
+               if -I option
+
+                       for each line
+                       do
+                               parse_check(f_argc, f_argv, info, file, line)
+                       done
+               else
+                       parse_check(argc, argv, info, NULL, 0)
+               fi
+
+               
+                                                       // HERE, ALL IS CHECKED
+       
+                                                       // here we make OUT_INFO_MON
+               if -I option
+
+                       for each line
+                       do
+                               out = parse_process(f_argc, f_argv, info, file, line)
+
+                               nmd_output(out)
+
+                               free(out)
+                       done
+               else
+                       out = parse_process(argc, argv, info, NULL, 0)
+
+                       nmd_output(out)
+
+                       free(out)
+               fi
diff --git a/Docs/developers/gnokii/packaging-howto b/Docs/developers/gnokii/packaging-howto
new file mode 100644 (file)
index 0000000..988ee92
--- /dev/null
@@ -0,0 +1,60 @@
+
+ Common information:
+       
+       For more install/compilation information see the INSTALL file.
+       
+       (!) Makefiles support make install prefix=<your_directory> 
+           for package building. You can use it example in for .spec:
+               
+               ./configure --prefix=/usr
+               make install prefix=$RPM_BUILD_ROOT/usr
+
+           (You not need create any dirs - all make make install.)
+
+           For a installation procedure is used 'make install' or
+           'make install prefix=', and all outputs from this routine must be 
+           correct. Please, not make any correction in your package specific 
+           build system (example use 'cp' in package routines - .spec - 
+           it is job for Makefiles). Write more different routines for 
+           instalation is good way to hell...
+       
+        'make install' not install documentation, because for this use 
+        any distribution itself routines. If you want install docs via
+        Makefile you must type 'make install-docs'  
+
+ Debian:
+       
+       1/ Add new lines to Debian/changelog and set corect verion in this
+           file.
+
+       2/ Check files: rules, menu, docs
+
+       3/ Well, because gnokii's debian directory is in subdirectory 
+          'packaging' and it is total non-standard for Debian package 
+          building system, you must firstly type in top directory:
+
+          # ln -s packaging/Debian debian      
+  
+       3/ In source type:
+
+          # debian/rules binary
+          # debian/rules clean
+
+       4/ Delete symlink
+
+           # rm debian
+
+
+ FreeBSD:
+
+
+ RedHat:
+
+
+
+
+
+ Win32:
+       
\ No newline at end of file
diff --git a/Docs/developers/gnokii/untitled.txt b/Docs/developers/gnokii/untitled.txt
new file mode 100644 (file)
index 0000000..f06a8f6
--- /dev/null
@@ -0,0 +1,42 @@
+Subject: RE: Xgnokii in win32 ?
+Date: Mon, 29 Nov 1999 08:45:31 +0100
+From: Acquadro Daniele <acquadro.daniele@logicasiel.it>
+To: marcinw0@poczta.onet.pl
+CC: gnokii <gnokii@net.lut.ac.uk>
+
+Hi ,
+gtk for windows can be donloaded from www.gtk.org. On the left there's a
+link to GTK+ on win32 (on the bottom of the page).
+
+To compile xGnokii, using VC ide, you have to create a new win32 CONSOLE
+application (NOT a win32 application) and then add the libraries.
+TO COMPILE you need those libraries
+gdk-1.3.lib
+gtk-1.3.lib
+glib-1.3.lib
+
+        bye
+        Daniele
+> -----Original Message-----
+> From: Marcin Wiacek [SMTP:marcinw0@poczta.onet.pl]
+> Sent: domenica 28 novembre 1999 22.50
+> To:   GNU Nokia mailing List
+> Subject:      Xgnokii in win32 ?
+>
+>
+> Hi,
+>
+> I want to know only, where can I get GTK libraries for win32 (they're
+> required for compiling xgnokii) from ?
+>
+> Or maybe somebody will write on the list/some WWW page, what to do to
+> compile xgnokii in win32 (how to replace GTK libraries with win procedures
+> -
+> I think, it will be better) ?
+>
+> ...maybe I shouldn't ask for it, but it isn't written in gnokii source...
+>
+> Regards,
+>
+> Marcin
+>
diff --git a/Docs/developers/other/RE RE.txt b/Docs/developers/other/RE RE.txt
new file mode 100644 (file)
index 0000000..aa25178
--- /dev/null
@@ -0,0 +1,66 @@
+Do: Markus Plail
+Temat: RE: RE:
+
+
+Hi,
+
+> Sorry for the confusion. I wrote the subject (getsms for 6210) in 
+> the CC field.
+No problem :-)
+
+> So this is what I want to try, in linux btw. U wrote that u can 
+> give some information on that topic.
+OK. Good.
+
+First of all, you HAVE to understand, how/where are created all phone functions. Look into n7110.c for N7110_Functions. This is our structure for each function - getting SMS, etc. You have pointers to each function sending request.
+
+Example:  N6110_NetMonitor for netmonitor function.
+
+If each function (let's say N6110_NetMonitor) you send frame for phone:
+-----------------------------
+  unsigned char req[] = { 0x00, 0x01, 0x7e, 0x00 };
+  
+  GSM_Error error;
+  
+  error=N6110_EnableExtendedCommands(0x01);
+  if (error!=GE_NONE) return error;
+
+  CurrentNetmonitor=Screen;
+
+  req[3]=mode;
+
+  return N6110_SendMessageSequence
+    (20, &CurrentNetmonitorError, 4, 0x40, req);
+---------------------------
+In req you prepare it (see 6110.txt/7110.txt for frame for netmonitor and compare it with req).
+
+First (this is specific for netmonitor and some other) need to send something, we call EnableExtendedCommands - we must send special frame and wait for answer. And ONLY after it phone will answer with 0x40 frames. For SMS in 6210 it's not required.
+
+After it we set pointer to structure given by user (pointers are declared in gsm-api.c & gsm-api.h): CurrentNetmonitor=Screen;
+
+Prepare frame send to phone...
+
+And use N6110_SendMessageSequence -> first is, how long we can wait for phone answer (20), next: what variable is used to see, if phone answered (I will later describe more - variable created in gsm-api.c & gsm-api.h), how many bytes in req, frame type and req.
+
+That's all here.
+
+All answers are handled in N7110_DispatchMessage
+
+In example look for:
+
+        fprintf(stdout, _("Message: Netmonitor menu %d received:\n"), MessageBuffer[3]);
+
+You copy formatted answer to structure pointed by CurrentNetmonitor (in example) and set CurrentNetmonitorError to GE_NONE (it makes, that N6110_SendMessageSequence returns: NO error). That's all.
+--------------------
+If you understand, let's start:
+
+1.need to make new N7110_GetSMSFolders similiar to N6110_GetSMSFolders (send frame - it's described in 7110.txt: "Get folder names", wait for answer and return it) and set N7110_Functions to point on it (in line 127).
+
+After it we will be able to make "real" getsms...
+
+Any questions ?
+
+Pozdrowienia/Best Regards
+--
+Marcin Wiacek -> mailto:marcinwiacek@topnet.pl http://marcin-wiacek.topnet.pl (http://www.fkn.pl/marcinw) -> netmonitor, firmware, mygnokii (GSM & Nokia)
+http://www.mds.mdh.se/~cel95eig/mygnokii/ & http://grumble.zereau.com/gnokii/ & http://reinhold.bachrain.de/ -> mygnokii mirrors
\ No newline at end of file
diff --git a/Docs/developers/other/dmcp/addsms b/Docs/developers/other/dmcp/addsms
new file mode 100644 (file)
index 0000000..bc4b0bf
--- /dev/null
@@ -0,0 +1,19 @@
+//SCKL1584 
+BODY:
+IA:
+OPER ariel
+Link up
+N
+
+M SMS
++6421XXXXXX/+6421YYYYYY
+6:LINKUP
+--
+IA:
+OPER ariel
+Link down
+N
+
+M SMS
++6421XXXXXX/+6421YYYYYY
+8:LINKDOWN
diff --git a/Docs/developers/other/dmcp/readme b/Docs/developers/other/dmcp/readme
new file mode 100644 (file)
index 0000000..9d9aefe
--- /dev/null
@@ -0,0 +1,148 @@
+
+1.see Smart Messaging 2.0 for info, what the DMCP is
+
+2.I didn't have success in changing menus via cable (without sending SMS).
+  Here is example foogle funtion. You will see only "Nokia service update failed"
+------------------------------------
+int foogle(char *argv[])
+{
+  GSM_NetworkInfo NetworkInfo;
+  int i;
+
+  char buffer[100]= { 0x0c, 0x01,
+                            0x06,  /* User Data Header Length */
+                            0x05,  /* IEI: application port addressing scheme, 16 bit address */
+                            0x04,  /* IEDL (IED length ?) */
+                            0x15,  /* destination address: high byte */
+                           0x84,  /* destination address: low byte */
+                            0x00,  /* originator address: high byte */
+                           0x00}; /* originator address: low byte */
+
+  int MSGLEN=9;
+
+  /* Initialise the code for the GSM interface. */     
+
+  fbusinit(NULL);
+
+  buffer[MSGLEN++]='B';
+  buffer[MSGLEN++]='O';     
+  buffer[MSGLEN++]='D';
+  buffer[MSGLEN++]='Y';
+  buffer[MSGLEN++]=':';
+  buffer[MSGLEN++]=10;
+  buffer[MSGLEN++]='I';
+  buffer[MSGLEN++]='A';
+  buffer[MSGLEN++]=':';
+  buffer[MSGLEN++]=10;
+  buffer[MSGLEN++]='O';
+  buffer[MSGLEN++]='P';
+  buffer[MSGLEN++]='E';
+  buffer[MSGLEN++]='R';
+  buffer[MSGLEN++]=' ';
+  buffer[MSGLEN++]='a';
+  buffer[MSGLEN++]='l';
+  buffer[MSGLEN++]=10;
+  buffer[MSGLEN++]='L';
+  buffer[MSGLEN++]='i';
+  buffer[MSGLEN++]='n';
+  buffer[MSGLEN++]='k';
+  buffer[MSGLEN++]=10;
+  buffer[MSGLEN++]='N';
+  buffer[MSGLEN++]=10;
+  buffer[MSGLEN++]=10;
+  buffer[MSGLEN++]='M';
+  buffer[MSGLEN++]=' ';
+  buffer[MSGLEN++]='S';
+  buffer[MSGLEN++]='M';
+  buffer[MSGLEN++]='S';
+  buffer[MSGLEN++]=10;
+  buffer[MSGLEN++]='+';
+  buffer[MSGLEN++]='4';
+  buffer[MSGLEN++]='8';
+  buffer[MSGLEN++]='6';
+  buffer[MSGLEN++]='0';
+  buffer[MSGLEN++]='2';
+  buffer[MSGLEN++]='9';
+  buffer[MSGLEN++]='5';
+  buffer[MSGLEN++]='1';
+  buffer[MSGLEN++]='1';
+  buffer[MSGLEN++]='1';
+  buffer[MSGLEN++]='1';
+  buffer[MSGLEN++]='/';
+  buffer[MSGLEN++]='+';
+  buffer[MSGLEN++]='4';
+  buffer[MSGLEN++]='8';
+  buffer[MSGLEN++]='6';
+  buffer[MSGLEN++]='0';
+  buffer[MSGLEN++]='2';
+  buffer[MSGLEN++]='9';
+  buffer[MSGLEN++]='5';
+  buffer[MSGLEN++]='1';
+  buffer[MSGLEN++]='1';
+  buffer[MSGLEN++]='1';
+  buffer[MSGLEN++]='1';
+
+  for (i=0;i<MSGLEN;i++) {
+    fprintf(stdout,_("%c"),buffer[i]);
+  }
+
+  Protocol->SendMessage(MSGLEN, 0x12, buffer);
+  GSM->GetNetworkInfo(&NetworkInfo); //need to make something
+
+  
+  GSM->Terminate();
+
+  return 0;
+}
+-----------------------------------
+3.to change via SMS - read parts of email sent by Martin Lucina [mato@kotelna.sk]
+-----------------------------------
+
+1. First of all, use the OPER (Operator) services rather than the Nokia
+   services. There's probably no reason why you couldn't use either but
+   there may be extra hooks in the phone firmware regarding Nokia
+   services that I don't know about.
+
+2. Make sure that "Operator access number 1" and "Operator access number
+   2" are set correctly in the services menu. The former should be set
+   to the SMS centre the messages you send are going to come from
+   (important, send yourself a test message and check it's details, some
+   operators set the sending SMSC number to one different from the one
+   you originally sent the message to). The latter should be the number
+   of the MS you are sending the SMS from.
+
+3. Don't send the messages as binary NBS messsages using the UDH. I
+   haven't been able to get this method to work and besides, the //SCK
+   compatibility header works just fine. 
+   
+   Also, while I haven't seen this, it's possible that if you send a
+   message in binary format, the destination MS will reply in binary
+   format. This makes the reply useless if you are sending from another
+   NBS-aware phone, since the NBS router will most likely silently
+   discard it (or try to forward it to the phones TTML/DMCP server,
+   which won't help either). 
+   
+   If you send the messages as text, the replies I've seen also come
+   back as text so you can retrieve them from the phone in the normal
+   fashion.
+
+One caveat I've noticed with sending NBS messages using the //SCK
+compatibility header is that the NBS grammar in the Nokia SM spec
+version 2 contradicts the grammar in the original Intel NBS spec. Nokia
+says you can using either a newline or space as the delimiter after
+"//SCK", it turns out that you _must_ use a space (as stated in the
+Intel spec). Of course you can still stick a newline in afterwards.
+
+I have attached a test file that will add two menu items that send SMS
+messages to your services menu. I send this to the phone using
+
+$ sendsms +6421XXXXXX < addsms
+
+[...]
+
+Cheers,
+
+-- 
+Martin Lucina http://www.kotelna.sk/mato/ Wellington, New Zealand             
+I've always been mad I know I've been mad like the most of us are             
+Pretty hard to explain why you're a madman even if you're not mad             
diff --git a/Docs/developers/other/dmcp/removesms b/Docs/developers/other/dmcp/removesms
new file mode 100644 (file)
index 0000000..06a47ab
--- /dev/null
@@ -0,0 +1,5 @@
+//SCKL1584 
+BODY:
+IR:
+OPER ariel
+Link up
diff --git a/Docs/developers/other/ringtones.txt b/Docs/developers/other/ringtones.txt
new file mode 100644 (file)
index 0000000..c896658
--- /dev/null
@@ -0,0 +1,115 @@
+Subject: Ringtones
+Date: Wed, 2 Feb 2000 13:32:47 -0000
+From: "Mike Bradley" <mike@trumpington.st>
+To: "GNU Nokia mailing List" <gnokii@net.lut.ac.uk>
+
+Does anyone know anything about the ringtone IDs in the group info?  It
+seems that all the various handsets have different ID codes and different
+sets of tones.  Is there any order to all this?  Here's what I've got:
+
+RINGTONEDESC
+eNam
+100
+
+        0x10, "Preset",
+        0x11, "Custom",
+        0x12, "Ring ring", //
+        0x13, "Low", //
+        0x14, "Fly",
+        0x15, "Mosquito", //
+        0x16, "Bee", //
+        0x17, "Intro",
+        0x18, "Etude",
+        0x19, "Hunt",
+        0x1a, "Going up",
+        0x1b, "City bird", //
+        0x1e, "Chase",
+        0x20, "Scifi",
+        0x23, "Do-mi-so", //
+        0x24, "Robo N1X",
+        0x27, "Playground",
+        0x2b, "That's It!",
+        0x2f, "Grande valse", //
+        0x30, "Helan",
+        0x31, "Fuga",
+        0x32, "Menuet",
+        0x33, "Ode to Joy",
+        0x34, "Elise", //
+        0x35, "Mozart 40", //
+        0x36, "Piano Concerto", //
+        0x37, "William Tell",
+        0x38, "Badinerie", //
+        0x39, "Polka",
+        0x3a, "Attraction", //
+        0x3c, "Polite",
+        0x3d, "Persuasion",//
+        0x43, "Tick tick",//
+        0x44, "Samba",//
+        0x46, "Orient",//
+        0x47, "Charleston",//
+        0x49, "Jumping",//
+
+        0x00, "??"
+};
+
+// the following are also on the 8850
+//Trio
+//Knock knock
+//Cicada
+//Kick
+//Dawn
+//Buffoon
+//Barn dance
+//Basic rock
+//Groovy blue
+//Frantic
+//Baroque
+//Entertainer
+//Indifference
+//Swan Lake
+//Tchaikovsky
+//Liszt
+//Bounce
+
+RINGTONEDESC
+eNam
+100
+
+        0xff, "Default",
+        0x2c, "That's It!",
+        0x2d, "Siren",
+        0x2e, "Tripod",
+        0x2f, "Ring ring",
+        0x30, "Low",
+        0x31, "Intro",
+        0x32, "Bee",
+        0x33, "Etude",
+        0x34, "Polite",
+        0x35, "Persuasion",
+        0x36, "Attraction",
+        0x37, "Bumblebee",
+        0x38, "Menuet",
+        0x39, "Grande valse",
+        0x3a, "Ode to Joy",
+        0x3b, "Mozart 40",
+        0x3c, "Elise",
+        0x3d, "William Tell",
+        0x3e, "Charleston",
+        0x3f, "Helan",
+        0x40, "Left Hand",
+        0x41, "Right Hand",
+        0x42, "Happy Birthday",
+        0x43, "Playground",
+        0x44, "Fuga",
+        0x45, "Chase",
+        0x46, "Classical",
+        0x47, "Hungarian",
+        0x48, "Valkyrie",
+        0x49, "Badinerie",
+        0x4a, "Bach #3",
+        0x4b, "Swan Lake",
+        0x4c, "Tchaikovsky",
+        0x4d, "Samba",
+        0x4e, "Mosquito",
+        0x00, "??"
+};
diff --git a/Docs/developers/other/sniffs/Telefonbucheditor7110.txt b/Docs/developers/other/sniffs/Telefonbucheditor7110.txt
new file mode 100644 (file)
index 0000000..2ca658c
--- /dev/null
@@ -0,0 +1,19 @@
+Od: owner-gnokii@net.lut.ac.uk w imieniu Bernhard Mähr [Bernhard.Maehr@GMX.at]
+Wys&#322;ano: 25 listopada 2000 17:06
+Do: gnokii@net.lut.ac.uk
+Temat: Telefonbucheditor 7110 
+
+For everyone who trys to decode the 7110 FBUS protocol a tip:
+If in the Windows-Registry HKEY_LOCAL_MACHINE\SOFTWARE\moosy.development\TBE7110 
+the String Data is replaced with a Binary with the name Data the program shows a 
+error message at the begin but it also enables a option debug. This option 
+displays a second window showing the trace of the FBUS. So it should be easier 
+to decode the protocol. So it is possible to see the communiction while loading 
+the phone numbers,  adresses,... and also syncronizing the calendar. 
+I know it is a little bit unfair, don't tell me that.
+I hope this is useful for someone
+Bernhard Mähr
diff --git a/Docs/developers/other/sniffs/irda/info.txt b/Docs/developers/other/sniffs/irda/info.txt
new file mode 100644 (file)
index 0000000..ca030f9
--- /dev/null
@@ -0,0 +1,12 @@
+To irda sniffs use irda_intercept.tgz
+(http://www.dev-thomynet.de/nokworld/noktrace/index.html or tools directory
+- unpacked source is there) from Thomas Schneider
+
+how to use it:
+you MUST stop irda support  ('rcirda stop' fur SUSE)
+to free the infrared tty port.
+just type irda_intercept and you should see
+irda packages of port /dv/ttyS1 (hardcoded in source).
+The tool writes also to file 'out.trc'.
+Use this file to decode: 'gnokii --decodefile out.trc'
+(mygnokii have to be compiled with debug)
diff --git a/Docs/developers/other/sniffs/irda/tools/fcs/fcs.c b/Docs/developers/other/sniffs/irda/tools/fcs/fcs.c
new file mode 100644 (file)
index 0000000..60fc687
--- /dev/null
@@ -0,0 +1,62 @@
+/*********************************************************************
+ *                
+ * Filename:      fcs.c
+ * Version:       0.1
+ * Description:   fcs calculation routines
+ * Status:        Experimental.
+ * Author:        Dag Brattli <dagb@cs.uit.no>
+ * Created at:    Mon Aug  4 20:40:53 1997
+ * Modified at:   Sat Jul 17 08:43:59 1999
+ * Modified by:   Thomas Schneider <nok-trace-men@dev-thomynet.de>
+ * Sources:       crc.h by Dag Brattli <dagb@cs.uit.no> in
+ *                linux-irda-project,
+ *                ppp.c by Michael Callahan <callahan@maths.ox.ac.uk>
+ *                Al Longyear <longyear@netcom.com>
+ *
+ ********************************************************************/
+
+#include "fcs.h"
+
+__u16 irda_fcs16_table[256] =
+{
+       0x0000, 0x1189, 0x2312, 0x329b, 0x4624, 0x57ad, 0x6536, 0x74bf,
+       0x8c48, 0x9dc1, 0xaf5a, 0xbed3, 0xca6c, 0xdbe5, 0xe97e, 0xf8f7,
+       0x1081, 0x0108, 0x3393, 0x221a, 0x56a5, 0x472c, 0x75b7, 0x643e,
+       0x9cc9, 0x8d40, 0xbfdb, 0xae52, 0xdaed, 0xcb64, 0xf9ff, 0xe876,
+       0x2102, 0x308b, 0x0210, 0x1399, 0x6726, 0x76af, 0x4434, 0x55bd,
+       0xad4a, 0xbcc3, 0x8e58, 0x9fd1, 0xeb6e, 0xfae7, 0xc87c, 0xd9f5,
+       0x3183, 0x200a, 0x1291, 0x0318, 0x77a7, 0x662e, 0x54b5, 0x453c,
+       0xbdcb, 0xac42, 0x9ed9, 0x8f50, 0xfbef, 0xea66, 0xd8fd, 0xc974,
+       0x4204, 0x538d, 0x6116, 0x709f, 0x0420, 0x15a9, 0x2732, 0x36bb,
+       0xce4c, 0xdfc5, 0xed5e, 0xfcd7, 0x8868, 0x99e1, 0xab7a, 0xbaf3,
+       0x5285, 0x430c, 0x7197, 0x601e, 0x14a1, 0x0528, 0x37b3, 0x263a,
+       0xdecd, 0xcf44, 0xfddf, 0xec56, 0x98e9, 0x8960, 0xbbfb, 0xaa72,
+       0x6306, 0x728f, 0x4014, 0x519d, 0x2522, 0x34ab, 0x0630, 0x17b9,
+       0xef4e, 0xfec7, 0xcc5c, 0xddd5, 0xa96a, 0xb8e3, 0x8a78, 0x9bf1,
+       0x7387, 0x620e, 0x5095, 0x411c, 0x35a3, 0x242a, 0x16b1, 0x0738,
+       0xffcf, 0xee46, 0xdcdd, 0xcd54, 0xb9eb, 0xa862, 0x9af9, 0x8b70,
+       0x8408, 0x9581, 0xa71a, 0xb693, 0xc22c, 0xd3a5, 0xe13e, 0xf0b7,
+       0x0840, 0x19c9, 0x2b52, 0x3adb, 0x4e64, 0x5fed, 0x6d76, 0x7cff,
+       0x9489, 0x8500, 0xb79b, 0xa612, 0xd2ad, 0xc324, 0xf1bf, 0xe036,
+       0x18c1, 0x0948, 0x3bd3, 0x2a5a, 0x5ee5, 0x4f6c, 0x7df7, 0x6c7e,
+       0xa50a, 0xb483, 0x8618, 0x9791, 0xe32e, 0xf2a7, 0xc03c, 0xd1b5,
+       0x2942, 0x38cb, 0x0a50, 0x1bd9, 0x6f66, 0x7eef, 0x4c74, 0x5dfd,
+       0xb58b, 0xa402, 0x9699, 0x8710, 0xf3af, 0xe226, 0xd0bd, 0xc134,
+       0x39c3, 0x284a, 0x1ad1, 0x0b58, 0x7fe7, 0x6e6e, 0x5cf5, 0x4d7c,
+       0xc60c, 0xd785, 0xe51e, 0xf497, 0x8028, 0x91a1, 0xa33a, 0xb2b3,
+       0x4a44, 0x5bcd, 0x6956, 0x78df, 0x0c60, 0x1de9, 0x2f72, 0x3efb,
+       0xd68d, 0xc704, 0xf59f, 0xe416, 0x90a9, 0x8120, 0xb3bb, 0xa232,
+       0x5ac5, 0x4b4c, 0x79d7, 0x685e, 0x1ce1, 0x0d68, 0x3ff3, 0x2e7a,
+       0xe70e, 0xf687, 0xc41c, 0xd595, 0xa12a, 0xb0a3, 0x8238, 0x93b1,
+       0x6b46, 0x7acf, 0x4854, 0x59dd, 0x2d62, 0x3ceb, 0x0e70, 0x1ff9,
+       0xf78f, 0xe606, 0xd49d, 0xc514, 0xb1ab, 0xa022, 0x92b9, 0x8330,
+       0x7bc7, 0x6a4e, 0x58d5, 0x495c, 0x3de3, 0x2c6a, 0x1ef1, 0x0f78
+};
+
+unsigned short fcs_calc( __u16 oldfcs, __u8 *buf, int len) {
+       __u16 fcs = oldfcs;
+       
+    while ( len--)
+               fcs = IR_FCS(fcs, *buf++);
+    return (fcs);
+}
diff --git a/Docs/developers/other/sniffs/irda/tools/fcs/fcs.h b/Docs/developers/other/sniffs/irda/tools/fcs/fcs.h
new file mode 100644 (file)
index 0000000..721be89
--- /dev/null
@@ -0,0 +1,30 @@
+/*********************************************************************
+ *                
+ * Filename:      fcs.h
+ * Version:       
+ * Description:   fcs routines for irda
+ * Status:        Experimental.
+ * Author:        Dag Brattli <dagb@cs.uit.no>
+ * Created at:    Mon Aug  4 20:40:53 1997
+ * Modified at:   Sat Jul 17 08:43:59 1999
+ * Modified by:   Thomas Schneider <nok-trace-men@dev-thomynet.de>
+ * Sources:       crc.h by Dag Brattli <dagb@cs.uit.no> in
+ *                linux-irda-project
+ * 
+ ********************************************************************/
+
+#ifndef FCS_H
+#define FCS_H
+
+#include <linux/types.h>
+
+#define INIT_FCS  0xffff   /* Initial FCS value    */
+#define GOOD_FCS  0xf0b8   /* Good final FCS value */
+
+#define IR_FCS(fcs, byte)((fcs >> 8)^irda_fcs16_table[ (fcs^byte) & 0xff])
+
+unsigned short fcs_calc( __u16 oldfcs, __u8 *buf, int len);
+
+extern __u16 irda_fcs16_table[];
+
+#endif
diff --git a/Docs/developers/other/sniffs/irda/tools/include/irda.h b/Docs/developers/other/sniffs/irda/tools/include/irda.h
new file mode 100644 (file)
index 0000000..59ec63b
--- /dev/null
@@ -0,0 +1,183 @@
+/*********************************************************************
+ *
+ * Filename:      irda.h
+ * Version:
+ * Description:   irda-specific defines
+ * Status:        Experimental.
+ * Author:        Thomas Schneider <nok-trace-men@dev-thomynet.de>
+ * Created at:    
+ * Modified at:   
+ * Modified by:   Thomas Schneider <nok-trace-men@dev-thomynet.de>
+ *
+ *     Copyright (c) 1999 Thomas Schneider, All Rights Reserved.
+ *
+ *     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., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * IN NO EVENT SHALL THOMAS SCHNEIDER BE LIABLE TO ANY PARTY FOR
+ * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES 
+ * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
+ * IF THOMAS SCHNEIDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH 
+ * DAMAGE.
+ *
+ * THOMAS SCHNEIDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
+ * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 
+ * FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER
+ * IS ON AN "AS IS" BASIS, AND THOMAS SCHNEIDER HAS NO OBLIGATION TO 
+ * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR 
+ * MODIFICATIONS.
+ *
+ *         This material is provided "AS-IS" and at no charge.
+ *
+ ********************************************************************/
+
+#ifndef __NOKTRACE_IRDA_H
+#define __NOKTRACE_IRDA_H
+
+#include <glib.h>
+
+
+/*
+ * service hints
+ * -------------
+ * - first byte
+ */
+#define PNP_COMP 0x00
+#define PDA_PALM 0x01
+#define COMPUTER 0x02
+#define PRINTER  0x03
+#define MODEM    0x04
+#define FAX      0x05
+#define LAN      0x06
+#define EXTENS   0x07
+
+
+/*
+ * output-defines
+ * --------------
+ */
+#define OUT_ALL        0x01
+#define OUT_IRLAP      0x02
+#define OUT_IRLMP      0x03
+#define OUT_HIGH_LEVEL 0x04
+
+#define OUT_FORM_LINE  0x01
+#define OUT_FORM_STEP  0x02
+
+#define OUT_SCREEN     0x01
+#define OUT_FILE       0x02
+
+/*
+ * some types
+ */
+typedef unsigned char  BYTE;
+typedef unsigned char  U8  ;
+typedef unsigned short U16 ;
+typedef unsigned int   U32 ;
+
+/*
+ * some structs
+ */
+typedef struct 
+{
+  U16  length;
+  U16  a_offset;
+  BYTE buf[4096];
+} RAW_FRAME;
+
+typedef struct 
+{
+  U16  bof_length;
+  BYTE * bof;
+  BYTE a;
+  BYTE c;
+  U16  info_length;
+  BYTE * info;
+  U32  fcs;                    /* must be U32 because escaped fcs */
+  BYTE eof_length;
+  BYTE * eof;
+  BYTE esc_nr;                 /* all ce's - include also esc_fcs */
+  BYTE esc_fcs;                        /* nr of ce's in fcs               */
+  U16  computed_fcs;
+} IRLAP_FRAME;
+
+typedef struct 
+{
+  U16  bof_length;
+  BYTE * bof;
+  BYTE a;
+  BYTE c;
+  U16  info_length;
+  BYTE * info;
+  U32  fcs;                    /* must be U32 because escaped fcs */
+  BYTE eof_length;
+  BYTE * eof;
+  BYTE esc_nr;                 /* all ce's - include also esc_fcs */
+  BYTE esc_fcs;                        /* nr of ce's in fcs               */
+  U16  computed_fcs;
+} IRLAP_RAW_FRAME;
+
+typedef struct 
+{
+  U8    cmd;
+  U8    dlsap_sel;
+  U8    slsap_sel;
+  U16   info_length;
+  U8  * info;
+} IRLMP_FRAME;
+
+typedef struct 
+{
+  BYTE baud_rate_master;
+  BYTE baud_rate_client;
+  BYTE baut_rate_connection;
+  BYTE state;
+} NEGOTATION_PARAM;
+
+typedef struct
+{
+  BYTE irlap_state;
+  BYTE irlmp_state;
+  U32  p_src_adr;              /* primary - source address   */
+  U32  s_src_adr;              /* secondary - source address */
+  U8   conn_adr;               /* connection address         */
+} CONNECTION;
+
+typedef struct
+{
+  U32  prim_nr_bytes;          /* bytes from primary station   */
+  U32  sec_nr_bytes ;          /* bytes from secomdary station */
+  U32  prim_fcs_errors;                /* nr of fcs-errors from prim.  */
+  U32  sec_fcs_errors;         /* nr of fcs-errors from sec.   */
+  U32  prim_frames;            /* frames from primary          */
+  U32  sec_frames;             /* frames from secondary        */
+  U32  prim_esc_nr;            /* nr of ecsapes from primary   */
+  U32  sec_esc_nr;             /* nr of escapes from secondary */
+} CONNECT_STATISTIC;
+
+typedef struct
+{
+  BYTE deep;                   /* deep of output (L2, L3, ...  */
+  BYTE form;                   /* kind of output (line, steps) */
+  BYTE bit_output;             /* if output as bits            */
+  BYTE dest;                   /* file, screen                 */
+  FILE input_fd;               /* input FILE                   */
+  GString infile_name;         /* name of input-file           */
+  FILE output_file;            /* output FILE                  */
+  GString outfile_name;                /* name of input-file           */
+} OUTPUT_PARAMS;
+
+
+#endif /* __NOKTRACE_IRDA_H */
+
diff --git a/Docs/developers/other/sniffs/irda/tools/include/irlap.h b/Docs/developers/other/sniffs/irda/tools/include/irlap.h
new file mode 100644 (file)
index 0000000..bd4a11d
--- /dev/null
@@ -0,0 +1,242 @@
+/*********************************************************************
+ *
+ * Filename:      irlap.h
+ * Version:
+ * Description:   in this file you can only find define´s for parts
+ *                of the irlap-layer. If you want read the typedef´s
+ *                for struct´s look into irda.h
+ * Status:        Experimental.
+ * Author:        Thomas Schneider <nok-trace-men@dev-thomynet.de>
+ * Created at:    
+ * Modified at:   
+ * Modified by:   Thomas Schneider <nok-trace-men@dev-thomynet.de>
+ *
+ *     Copyright (c) 1999 Thomas Schneider, All Rights Reserved.
+ *
+ *     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., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * IN NO EVENT SHALL THOMAS SCHNEIDER BE LIABLE TO ANY PARTY FOR
+ * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES 
+ * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
+ * IF THOMAS SCHNEIDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH 
+ * DAMAGE.
+ *
+ * THOMAS SCHNEIDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
+ * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 
+ * FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER
+ * IS ON AN "AS IS" BASIS, AND THOMAS SCHNEIDER HAS NO OBLIGATION TO 
+ * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR 
+ * MODIFICATIONS.
+ *
+ *         This material is provided "AS-IS" and at no charge.
+ *
+ ********************************************************************/
+/*
+ * in this file you can only find define´s for parts
+ * of the irlap-layer. If you want read the typedef´s
+ * for struct´s look into irda.h
+ */
+
+#ifndef __IRLAP_H
+#define __IRLAP_H
+
+#include <glib.h>
+
+
+#define IRDA_XBOF 0xFF
+#define IRDA_BOF  0xC0
+#define IRDA_EOF  0xC1
+
+/*
+ * IrLAP-OFFSETS
+ * -------------
+ */
+#define IRLAP_A_OFF 0x00
+#define IRLAP_C_OFF 0x01
+#define IRLAP_I_OFF 0x02
+
+/*
+ * IrLAP-DEFINES
+ * -------------
+ */
+#define IRLAP_XBOF 0xFF
+#define IRLAP_BOF  0xC0
+#define IRLAP_EOF  0xC1
+#define IRLAP_CE   0x7D
+#define IRLAP_ESC  IRLAP_CE
+
+#define IRLAP_ESC_MASK (~0xDF)
+
+#define IRLAP_A_LENGTH   1
+#define IRLAP_C_LENGTH   1
+#define IRLAP_FCS_LENGTH 2
+#define IRLAP_EOF_LENGTH 1
+
+#define IRLAP_C_MASK            0x03
+#define IRLAP_U_FRAME           0x03
+#define IRLAP_S_FRAME           0x01
+#define IRLAP_PF_BIT_MASK     (~0xEF)
+#define IRLAP_PF_BIT_CLR_MASK (~0x10)
+#define IRLAP_Nr_CLR_MASK       0x1F
+
+/*
+ * IRLAP U cmd/response
+ * --------------------
+ * - all defines use a cleared P/F-Bit
+ *   (irlap_frame -> c & IRLAP_PF_BIT_CLR_MASK)
+ * - page 26 in IrLAP-spec
+ * - if no _CMD or _RSP name is _CMD_RSP (e.g. 0x83)
+ */
+#define IRLAP_SNRM_RNRM 0x83
+#define IRLAP_DISC_RD   0x43
+#define IRLAP_UI_UI     0x03
+#define IRLAP_XID_CMD   0x2F
+#define IRLAP_TEST_TEST 0xE3
+#define IRLAP_UA_RSP    0x63
+#define IRLAP_FRMR_RSP  0x87
+#define IRLAP_DM_RSP    0x0F
+#define IRLAP_XID_RSP   0xAF
+
+/*
+ * IRLAP S cmd/response
+ * --------------------
+ * - all defines use a cleared P/F-Bit and cleared Nr
+ *   (irlap_frame -> c & IRLAP_PF_BIT_CLR_MASK & IRLAP_Nr_CLR_MASK)
+ * - page 32 in IrLAP-spec
+ * - for both (cmd and response) the same mask is defined
+ */
+#define IRLAP_RR   0x01
+#define IRLAP_RNR  0x05
+#define IRLAP_REJ  0x09
+#define IRLAP_SREJ 0x0D
+
+
+/*
+ * irlap-connection-states
+ * -----------------------
+ * - negotation defines are also conn-states
+ */
+#define IRLAP_DISC     0x00            /* disconnected          */
+#define IRLAP_NDM      0x01            /* normaldisconnect mode */
+#define IRLAP_NRM      0x02            /* normal response mode  */
+
+/*
+ * negotation-defines
+ * ------------------
+ */
+/* negotation-states */
+#define NEG_SNRM_OK     0x01
+#define NEG_WAIT_FOR_UA 0x02
+#define NEG_UA_OK       0x03
+#define NEG_COMPLETE    0x04
+
+#define B576000   576000
+#define B1152000 1152000
+
+#define IRLAP_SNRM_SRC_ADR       0x00 /* src in SNRM               */
+#define IRLAP_SNRM_DEST_ADR      0x04 /* dest in SNRM              */
+#define IRLAP_SNRM_CONN_ADR      0x08 /* connection-adr in SNRM    */
+#define IRLAP_UA_SRC_ADR         0x00 /* src in UA                 */
+#define IRLAP_UA_DEST_ADR        0x04 /* dest in UA                */
+#define IRLAP_NEG_SNRM_PARAM_OFF 0x09 /* src(U32) dest(U32) adr(8) */
+#define IRLAP_NEG_UA_PARAM_OFF   0x08 /* src(U32) dest(U32)        */
+#define IRLAP_NEG_BPS_PI         0x01 /* IrLAP page 39             */
+#define IRLAP_PI_LENGTH 1      /* no more longer used */
+#define IRLAP_PL_LENGTH 1      /* no more longer used */
+
+/*
+ * defines for decode xid-cmd
+ * --------------------------
+ */
+#define XID_C_FI_OFFSET    0x00        /* offset for format identifier (U8)  */
+#define XID_C_SRC_ADR_OFF  0x01        /* offset for source address    (U32) */
+#define XID_C_DEST_ADR_OFF 0x05        /* offset for dest address      (U32) */
+#define XID_C_DISC_F_OFF   0x09        /* offset for discovery flags   (U8)  */
+#define XID_C_SLOT_NR_OFF  0x0A        /* offset for slot number       (U8)  */
+#define XID_C_VERSION_OFF  0x0B        /* offset for version           (U8)  */
+#define XID_C_DISC_I_OFF   0x0C /* offset for discovery information   */
+#define XID_C_FLAG_TRUE    0x01        /* flags in cmd only if FI == 0x01    */
+#define XID_C_F_SLOT_MASK  0x03 /* mask for slot numbers in di-flag   */
+#define XID_C_F_NEW_ADR_M  0x04 /* mask for new device-address-gen.   */
+#define XID_C_LAST_SLOT    0xFF /* nr.  for last slot in xid-cmd      */
+#define XID_C_DISC_I_M_L   0x20 /* max length of discovery info       */
+#define XID_C_DI_S_H_OFF   0x0C /* 1. service hint offset in disc-inf */
+#define XID_C_DI_S_H_EX_M  0x07 /* serv.hint extent. mask in disc_inf */
+
+/*
+ * defines for decode xid-rsp
+ * --------------------------
+ */
+#define XID_R_FI_OFFSET    0x00        /* offset for format identifier (U8)  */
+#define XID_R_SRC_ADR_OFF  0x01        /* offset for source address    (U32) */
+#define XID_R_DEST_ADR_OFF 0x05        /* offset for dest address      (U32) */
+#define XID_R_DISC_F_OFF   0x09        /* offset for discovery flags   (U8)  */
+#define XID_R_SLOT_NR_OFF  0x0A        /* offset for slot number       (U8)  */
+#define XID_R_VERSION_OFF  0x0B        /* offset for version           (U8)  */
+#define XID_R_DISC_I_OFF   0x0C /* offset for discovery information   */
+#define XID_R_FLAG_TRUE    0x01        /* flags in rsp only if FI == 0x01    */
+#define XID_R_F_SLOT_MASK  0x03 /* mask for slot numbers in di-flag   */
+#define XID_R_F_NEW_ADR_M  0x04 /* mask for new device-address-gen.   */
+#define XID_R_LAST_SLOT    0xFF /* nr.  for last slot in xid-cmd/rsp  */
+#define XID_R_DISC_I_M_L   0x20 /* max length of discovery info       */
+#define XID_R_DI_S_H_OFF   0x0C /* 1. service hint offset in disc-inf */
+#define XID_R_DI_S_H_EX_M  0x07 /* serv.hint extent. mask in disc_inf */
+#define XID_R_SNIFF_FRAME  0xFFFFFFFF /* dest address for sniffing    */
+
+/* 
+ * defines for snrm-cmd
+ * --------------------
+ */
+#define SNRM_CMD_RESET_LEN   0x00 /* no i-field is present              */
+#define SNRM_EST_CONNECT_ADR 0xFF /* conn.adr. in case con.establish    */
+#define SNRM_C_SRC_ADR_OFF   0x00 /* offset for source address    (U32) */
+#define SNRM_C_DEST_ADR_OFF  0x04 /* offset for dest address      (U32) */
+#define SNRM_C_N_C_ADR_OFF   0x08 /* new conn. adr. offset        (U8)  */
+#define SNRM_C_NEG_OFF       0x09 /* negotation-fields offset           */
+#define SNRM_BPS_PI          0x01 /* bps-pi                             */
+#define SNRM_MAX_TAT_PI      0x82 /* max. turn around time pi           */
+#define SNRM_DATA_SIZE_PI    0x83 /* data size pi                       */
+#define SNRM_WIN_SIZE_PI     0x84 /* window size pi                     */
+#define SNRM_ADD_BOF_PI      0x85 /* addition BOFs pi                   */
+#define SNRM_MIN_TAT_PI      0x86 /* min. turn around time pi           */
+#define SNRM_LD_TT_PI        0x08 /* link disc./threshold time pi       */
+
+/*
+ * defines for ua-rsp-frame
+ * ------------------------
+ */
+#define UA_CONNECT_MIN_LENGTH 0x0E /* 14 are min length to use the frame
+                                   * for response to snrm used to
+                                   * establish a connection - look at
+                                   * page 39 - negotation: type 0 params
+                                   * must be negotiated at both stations
+                                   * bps and link disc/threshold time -
+                                   * in this case also src and dest are
+                                   * used ( 4 + 4 + 3 + 3), page 31      */
+#define UA_WITH_SRC_DST_LEN   0x08 /* ua len with src and dest            */
+#define UA_SRC_ADR_OFF        0x00 /* offset for source address    (U32) */
+#define UA_DEST_ADR_OFF       0x04 /* offset for dest address      (U32) */
+#define UA_NEG_OFF            0x08 /* negotation-fields offset           */
+#define UA_BPS_PI             0x01 /* bps-pi                             */
+#define UA_MAX_TAT_PI         0x82 /* max. turn around time pi           */
+#define UA_DATA_SIZE_PI       0x83 /* data size pi                       */
+#define UA_WIN_SIZE_PI        0x84 /* window size pi                     */
+#define UA_ADD_BOF_PI         0x85 /* addition BOFs pi                   */
+#define UA_MIN_TAT_PI         0x86 /* min. turn around time pi           */
+#define UA_LD_TT_PI           0x08 /* link disc./threshold time pi       */
+
+
+#endif /* __IRLAP_H */
+
diff --git a/Docs/developers/other/sniffs/irda/tools/intercept/Makefile b/Docs/developers/other/sniffs/irda/tools/intercept/Makefile
new file mode 100644 (file)
index 0000000..5737602
--- /dev/null
@@ -0,0 +1,72 @@
+#
+#/*********************************************************************
+# *
+# * Filename:      Makefile
+# * Version:
+# * Description:   Makefile for irda_intercept
+# * Status:        Experimental.
+# * Author:        Thomas Schneider
+# * Created at:    Thomas Schneider <nok-trace-men@dev-thomynet.de>
+# * Modified at:   Sun Jul 18 12:03:03 1999
+# * Modified by:   Thomas Schneider <nok-trace-men@dev-thomynet.de>
+# *
+# *     Copyright (c) 1999 Thomas Schneider, All Rights Reserved.
+# *
+# *     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., 675 Mass Ave, Cambridge, MA 02139, USA.
+# *
+# * IN NO EVENT SHALL THOMAS SCHNEIDER BE LIABLE TO ANY PARTY FOR
+# * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES 
+# * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
+# * IF THOMAS SCHNEIDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH 
+# * DAMAGE.
+# *
+# * THOMAS SCHNEIDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
+# * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 
+# * FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER
+# * IS ON AN "AS IS" BASIS, AND THOMAS SCHNEIDER HAS NO OBLIGATION TO 
+# * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR 
+# * MODIFICATIONS.
+# *
+# *         This material is provided "AS-IS" and at no charge.
+# *
+# ********************************************************************/
+
+#
+# Serial port for communication
+#
+
+MODEMDEVICE=-DMODEMDEVICE="\"/dev/ttyS1\""
+
+COMMON=-Wall -O2 \
+       ${MODEMDEVICE}
+
+all: irda_intercept
+
+
+irda_intercept: irda_intercept.o ../fcs/fcs.o
+       cc ${COMMON} \
+                       `gtk-config --cflags` `gtk-config --libs`\
+                       irda_intercept.o ../fcs/fcs.o\
+                       -o irda_intercept
+
+irda_intercept.o: irda_intercept.c ../include/irda.h ../include/irlap.h
+       cc ${COMMON} \
+                       `gtk-config --cflags` \
+                       -c irda_intercept.c
+
+../fcs/fcs.o: ../fcs/fcs.c ../fcs/fcs.h
+       cc ${COMMON} \
+                       `gtk-config --cflags` \
+                       -c $*.c -o $@
diff --git a/Docs/developers/other/sniffs/irda/tools/intercept/irda_intercept.c b/Docs/developers/other/sniffs/irda/tools/intercept/irda_intercept.c
new file mode 100644 (file)
index 0000000..1381418
--- /dev/null
@@ -0,0 +1,613 @@
+/*********************************************************************
+ *
+ * Filename:      irda_intercept.c
+ * Version:
+ * Description:   intercept irda-traffic incl. negotation and write
+ *                output to a file
+ * Status:        Experimental.
+ * Author:        Thomas Schneider <nok-trace-men@dev-thomynet.de>
+ * Created at:    
+ * Modified at:   
+ * Modified by:   Thomas Schneider <nok-trace-men@dev-thomynet.de>
+ *
+ *     Copyright (c) 1999 Thomas Schneider, All Rights Reserved.
+ *
+ *     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., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * IN NO EVENT SHALL THOMAS SCHNEIDER BE LIABLE TO ANY PARTY FOR
+ * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES 
+ * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
+ * IF THOMAS SCHNEIDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH 
+ * DAMAGE.
+ *
+ * THOMAS SCHNEIDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
+ * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 
+ * FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER
+ * IS ON AN "AS IS" BASIS, AND THOMAS SCHNEIDER HAS NO OBLIGATION TO 
+ * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR 
+ * MODIFICATIONS.
+ *
+ *         This material is provided "AS-IS" and at no charge.
+ *
+ ********************************************************************/
+#include <sys/time.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <termios.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <string.h>
+#include <signal.h>
+#include <glib.h>
+#include "../include/irda.h"
+#include "../include/irlap.h"
+#include "../fcs/fcs.h"
+
+#define INIT_BAUDRATE B9600
+
+#define _POSIX_SOURCE 1 /* POSIX compliant source */
+
+#define INITIAL_TIMEOUT 15
+#define DEFAULT_TIMEOUT  5
+
+#define OUTFILE_SUFFIX ".trc"
+#define DEFAULT_OUTFILE "out"OUTFILE_SUFFIX
+
+static int initfdflags = -1;        /* Initial file descriptor flags */
+static struct termios old_port_sets; /* old port-termios for restore  */
+
+int port_fd;
+
+NEGOTATION_PARAM negotation_param;
+CONNECTION connection;
+
+static speed_t speed_list[8] = { B2400, B9600, B19200, B38400,
+                            B57600, B115200, B576000, B1152000 };
+static const char *speed_name[] = { "2400", "9600", "19200", "38400",
+                               "57600", "115200", "576000", "1152000"};
+
+/*
+ * negotation
+ * ----------
+ * - in negotation set new device speed
+ */
+void negotation ( IRLAP_FRAME * irlap_frame )
+{
+   BYTE cmd          = irlap_frame -> a & 0x01;
+   speed_t new_speed = 0;
+   int i             = 0;
+   int m             = 0;
+   struct termios set;
+   BYTE tmp          = 0;
+
+   /* 
+    * snrm-frame
+    * ----------
+    * - 4 src
+    * - 4 dest
+    * - 1 new connection address
+    * - 1 pi
+    * - 1 pl
+    * - [pl] pv
+    * ua-frame
+    * --------
+    * - 4 src
+    * - 4 dest
+    * - 1 pi
+    * - 1 pl
+    * - [pl] pv
+    */
+
+   if ( cmd ) {
+     /*
+      * SNRM - CMD
+      * ----------
+      * - in IrLAP (V. 1.1) page 27
+      * - U32 : src-dev-adr
+      * - U32 : dest-dev-adr
+      * - U8  : connection address
+      * - start of neg. params
+      */
+     if ( irlap_frame -> info_length < ( IRLAP_NEG_SNRM_PARAM_OFF +3 ) ) {
+       printf ("\t==> IrLAP: in SNRM-CMD no Info! <==\n");
+     } else {
+       memcpy ( &connection.p_src_adr,
+               &(irlap_frame -> info[IRLAP_SNRM_SRC_ADR]),
+               sizeof(connection.p_src_adr));
+       memcpy ( &connection.s_src_adr,
+               &(irlap_frame -> info[IRLAP_SNRM_DEST_ADR]),
+               sizeof(connection.s_src_adr));
+       connection.conn_adr = irlap_frame -> info[IRLAP_SNRM_CONN_ADR];
+       if ( irlap_frame -> info[IRLAP_NEG_SNRM_PARAM_OFF] == 
+           IRLAP_NEG_BPS_PI ) {
+        /* really bps-parameter-identifier */
+        if ( irlap_frame -> info[IRLAP_NEG_SNRM_PARAM_OFF + 1] == 1 ) {
+          negotation_param.baud_rate_master = 
+            irlap_frame -> info [IRLAP_NEG_SNRM_PARAM_OFF + 2];
+          negotation_param.state = NEG_WAIT_FOR_UA;
+        } else {
+          printf ("\t==> IrLAP: SNRM-CMD: speed in 2 bytes! <==\n");
+          printf ("\t\t==> IrLAP: my max. speed is 115.2 kbps! <==\n");
+          negotation_param.baud_rate_master = 
+            irlap_frame -> info [IRLAP_NEG_SNRM_PARAM_OFF + 3];
+        } 
+       } else {
+        printf ("\t==> IrLAP: SNRM-CMD: "
+                "No baud rate dictate in 1. byte! <==\n");
+       }
+     }
+   } else {
+     /* UA -rsp */
+     negotation_param.baud_rate_client = irlap_frame -> info [10];
+     negotation_param.state = NEG_UA_OK;
+   
+     /* now compute the new speed */
+     tmp = 
+       negotation_param.baud_rate_master & negotation_param.baud_rate_client;
+     if ( tmp & 0x01 ) {
+       new_speed = speed_list[i];
+       m = 0;
+     }
+     for ( i=1; i < 7; i++) {
+       tmp = tmp >> 1;
+       if ( tmp & 0x01 ) {
+        new_speed = speed_list[i];
+        m = i;
+       }
+     }
+     if ( m > 5 ) {
+       /* not defined as B... on my system */
+       printf ("Sorry: Required speed (%s baud) not supported!\n",
+              speed_name[m]);
+     } else {
+       printf ("New speed is: %s\n", speed_name[m]);
+       /* now set the new speed */
+       tcgetattr (port_fd, &set);
+       cfsetospeed(&set, new_speed);
+       cfsetispeed(&set, new_speed);
+       tcsetattr(port_fd, TCSANOW, &set);
+       tcgetattr(port_fd, &set);
+       if ( (cfgetospeed(&set) != new_speed) ||
+           (cfgetispeed(&set) != new_speed) ) {
+        printf ("New speed is not set!\n");
+       }
+     }
+   }
+}
+
+/*
+ * decode_irlap_frame
+ * ------------------
+ * - decode the irlap-c-field
+ */
+void decode_irlap_frame ( IRLAP_FRAME * irlap_frame) 
+{
+  BYTE cmd = irlap_frame -> a & 0x01;
+  BYTE poll = irlap_frame -> c & (IRLAP_PF_BIT_MASK);
+  BYTE adr = (irlap_frame -> a) >> 1;
+  
+  switch ( irlap_frame -> c & IRLAP_C_MASK ) {
+  case IRLAP_U_FRAME:
+    printf ("U-Frame:\tAdr: %02X Nr: %02X ", adr,
+           (irlap_frame -> c & 0xE0) >> 5);
+    printf ("P/F: %X \t\t", poll >> 4);
+    switch (irlap_frame -> c & IRLAP_PF_BIT_CLR_MASK ) {
+    case IRLAP_SNRM_RNRM:
+      /* SNRM cmd/RNRM response */
+      if ( cmd ) {
+       printf ("SNRM cmd\n");
+       switch (connection.irlap_state) {
+       case IRLAP_DISC:
+         printf ("\t==> IrLAP in DISC but SNRM-CMD? <==\n");
+         break;
+       case IRLAP_NDM:
+         printf ("\t==> Start IrLAP - negotation <==\n");
+         negotation ( irlap_frame );
+         break;
+       case IRLAP_NRM:
+         printf ("\t==> IrLAP in NRM but SNRM-CMD? <==\n");
+         break;
+       default:
+         printf ("\t==> IrLAP in not defined state but SNRM-CMD? <==\n");
+       }
+      } else {
+       printf ("RNRM response\n"); 
+      }
+      break;
+    case IRLAP_DISC_RD:
+      /* DISC cmd/RD response */
+      if ( cmd ) {
+       printf ("DISC cmd\n"); 
+      } else {
+       printf ("RD response\n");
+      }
+      break;
+    case IRLAP_UI_UI:
+      /* UI cmd/UI response */
+      if ( cmd ) {
+       printf ("UI cmd\n");
+      } else {
+       printf ("UI response\n");
+      }
+      break;
+    case IRLAP_XID_CMD:
+      /* XID cmd */
+      printf ("XID cmd\n");
+      if ( connection.irlap_state == IRLAP_DISC ) {
+       connection.irlap_state = IRLAP_NDM;
+       printf ("\t==> Set IrLAP-state to:" 
+               "NDM (normal disconnected mode) <==\n");
+      }
+      break;
+    case IRLAP_TEST_TEST:
+      /* Test cmd/response */
+      if ( cmd ) {
+       printf ("TEST cmd\n");
+      } else {
+       printf ("TEST response\n");
+      }
+      break;
+    case IRLAP_UA_RSP:
+      /* UA response */
+      printf ("UA response\n");
+      switch (connection.irlap_state) {
+      case IRLAP_DISC:
+       printf ("\t==> IrLAP in DISC but UA-RESPONSE? <==\n");
+       break;
+      case IRLAP_NDM:
+       if ( negotation_param.state == NEG_WAIT_FOR_UA ) {
+         printf ("\t==> Continue IrLAP - negotation! <==\n");
+         negotation ( irlap_frame );
+       } else {
+         printf ("\t==> IrLAP in NDM but not wait for  negotation! <==\n");
+       }
+       break;
+      case IRLAP_NRM:
+       printf ("\t==> UA: IrLAP was/is in NRM ... <==\n");
+       break;
+      default:
+       printf ("\t==> IrLAP in not defined state but UA-RESPONSE? <==\n");
+      }
+      break;
+    case IRLAP_FRMR_RSP:
+      /* FRMR response */
+      printf ("FRMR response\n");
+      break;
+    case IRLAP_DM_RSP:
+      /* DM response */
+      printf ("DM response\n");
+      break;
+    case IRLAP_XID_RSP:
+      /* XID response */
+      printf ("XID response\n");
+      break;
+    default:
+      /* unknown cmd/response */
+      printf ("Unknown IrLAP-U-Frame\n");
+    } /* end of irlap-u-frames */
+    break;
+  case IRLAP_S_FRAME:
+    printf ("S-Frame:\tAdr: %02X Nr: %02X ", adr,
+           (irlap_frame -> c & 0xE0) >> 5);
+    printf ("P/F: %X \t\t", poll >> 4);
+    switch ( irlap_frame -> c & 
+            (IRLAP_PF_BIT_CLR_MASK & IRLAP_Nr_CLR_MASK) ) {
+    case IRLAP_RR:
+      /* RR command/response */
+      if ( cmd ) {
+       printf ("RR cmd\n");
+      } else {
+       printf ("RR response\n");
+      }
+      break;
+    case IRLAP_RNR:
+      /* RNR cmd/response */
+      printf ("RNR cmd/response\n");
+      break;
+    case IRLAP_REJ:
+      /* REJ cmd/response */
+      printf ("REJ cmd/response\n");
+      break;
+    case IRLAP_SREJ:
+      /* SREJ cmd/response */
+      printf ("SREJ cmd/response\n");
+      break;
+    default:
+      /* unknown cmd/response */
+      printf ("Unknown IrLAP-S-Frame\n");
+    } /* end of irlap-s-frames */
+    break;
+  default:
+    printf ("I-Frame:\tAdr: %02X Nr: %02X ", adr,
+           (irlap_frame -> c & 0xE0) >> 5);
+    printf ("\tP/F: %X\t", poll >> 4);
+    printf ("Ns: %02X \t", (irlap_frame -> c & 0x0E) >> 1);
+    printf ("Information\n");
+  }
+}
+
+/* unwrap_raw_frame
+ * ----------------
+ * - put raw-frame-datas in irlap-frame
+ */
+void unwrap_raw_frame ( RAW_FRAME * raw_frame ) 
+{
+  IRLAP_FRAME irlap_frame;
+  BYTE * info_ptr;
+  
+  bzero ( &irlap_frame, sizeof(irlap_frame) );
+
+  irlap_frame.a = raw_frame -> buf[IRLAP_A_OFF];
+  irlap_frame.c = raw_frame -> buf[IRLAP_C_OFF];
+  irlap_frame.fcs  = raw_frame -> buf [(raw_frame -> length) -2] << 8;
+  irlap_frame.fcs |= raw_frame -> buf [(raw_frame -> length) -1];
+  
+  irlap_frame.info_length = raw_frame -> length - 
+    IRLAP_A_LENGTH - IRLAP_C_LENGTH - IRLAP_FCS_LENGTH;
+
+  info_ptr = g_malloc ( irlap_frame.info_length * sizeof (BYTE) );
+  memcpy ( info_ptr, &(raw_frame -> buf[IRLAP_I_OFF]),
+          irlap_frame.info_length);
+  irlap_frame.info = info_ptr;
+  decode_irlap_frame ( &irlap_frame );
+  g_free(info_ptr);
+  
+  printf ("IrLAP: FCS: %04X \n\n", irlap_frame.fcs );
+
+}
+
+/*
+ * cleanup_termios
+ * ---------------
+ * - call on some signals from signalhandler
+ * - before end set the original setting
+ */
+void cleanup_termios ( int signal )
+{
+  tcsetattr(port_fd, TCSANOW, &old_port_sets);
+  exit (0);
+}
+
+/*
+ * init_port
+ * ---------
+ * - get original port-settings and store it
+ * - set new port-settings
+ */
+void init_port ( void ) 
+{
+  struct termios new_port_sets;
+  
+  /* get the original settings and store it for restore */
+  tcgetattr( port_fd, &old_port_sets);
+
+  /* init new settings */
+  bzero(&new_port_sets, sizeof(new_port_sets));
+  new_port_sets.c_cflag = INIT_BAUDRATE | CRTSCTS | CS8 | CLOCAL | CREAD;
+  new_port_sets.c_iflag = IGNBRK | IGNPAR;
+  new_port_sets.c_oflag = 0;
+
+  /* set input mode (non-canonical, no echo,...) */
+  new_port_sets.c_lflag = 0;
+        
+  /* inter-character timer unused x0.1s */
+  new_port_sets.c_cc[VTIME]    = 0;
+  /* blocking read until 5 chars received */
+  new_port_sets.c_cc[VMIN]     = 1;
+
+  /* set the port now */
+  tcflush(port_fd, TCIFLUSH);
+  tcsetattr(port_fd, TCSANOW, &new_port_sets);
+}
+
+/*
+ * main
+ * ----
+ * - output-file and port open
+ * - get/set port settings
+ * - dataread-loop
+ */
+int main( int argc, char * argv[] )
+{
+  struct sigaction sact;                                /* signalhandle    */
+  GString *outfile_name = g_string_new(DEFAULT_OUTFILE); /* outfile name    */
+  FILE *outfile;                                        /* outfile FILE    */
+  fd_set ready;                                          /* for select      */
+  struct timeval timeout;                               /* select-timeout  */
+  int no_timeout        = 1;                            /* timeout reached */
+  int nr_read           = 0;                            /* byte readed     */
+  unsigned char in_buffer[255];                                 /* temp. buffer    */
+  RAW_FRAME raw_frame;                                  /* a raw frame     */
+  int is_inframe        = FALSE;                         /* loop in frame   */
+  int frame_complete    = FALSE;                         /* frame complete  */
+  int done              = 0;                            /* loop control    */
+  int i                 = 0;                            /* for-index       */
+  int nr_of_bytes       = 0;                            /* total bytes     */
+  int nr_of_frames      = 0;                            /* total frames    */
+  int irlap_bytes       = 0;                             /* w/o BOF etc.    */
+  BYTE must_escaped     = FALSE;                         /* after CE = 0x07 */
+  U16 fcsrx             = INIT_FCS;                      /* for fcs-comput. */
+  BYTE nr_esc           = 0;                            /* nr of CE's      */
+//CONNECT_STATISTIC statistic;                           /* statistic       */
+//OUTPUT_PARAMS output_params;                           /* output-control  */
+
+  /*
+   * Open the serial device
+   */
+  if ( (port_fd = open( MODEMDEVICE, O_NONBLOCK | O_RDWR)) < 0 ) {
+    printf ( "Failed to open %s!\n", MODEMDEVICE);
+    exit(1);
+  }
+
+  /*
+   * get/set device fd flags
+   */
+  if ( (initfdflags = fcntl( port_fd, F_GETFL)) == -1 ) {
+    printf ( "Couldn't get device fd flags for: %s!", MODEMDEVICE);
+    exit(1);
+  }
+  initfdflags &= ~O_NONBLOCK;
+  fcntl( port_fd, F_SETFL, initfdflags);
+
+  init_port();
+
+  /*
+   * set signal-handler
+   */
+  sact.sa_handler = cleanup_termios;
+  sigaction( SIGHUP,  &sact, NULL);
+  sigaction( SIGINT,  &sact, NULL);
+  sigaction( SIGPIPE, &sact, NULL);
+  sigaction( SIGTERM, &sact, NULL);
+  
+  /*
+   *  Set device for non-blocking reads.
+   */
+  if ( fcntl( port_fd, F_SETFL, initfdflags | O_NONBLOCK) == -1) {
+    printf ("Couldn't set device to non-blocking mode (%s)!\n", MODEMDEVICE);
+    exit(1);
+  }
+  
+  /*
+   * output-file-handling
+   */
+  if ( argc < 2 ) {
+    printf ("Use default OutPutFile: %s\n", outfile_name -> str);
+  } else {
+    g_string_assign(outfile_name, argv[1]);
+    g_string_append(outfile_name, OUTFILE_SUFFIX);
+    printf ("Use OutPutFile: %s\n", outfile_name -> str);
+  }
+  if ( (outfile = fopen( outfile_name -> str, "wb")) == NULL ) {
+    printf ("Failed to open OutPutFile: %s\n", outfile_name -> str);
+    exit (1);
+  }
+
+  /*
+   * initial timeout
+   * ---------------
+   * - wait 15 seconds
+   */
+  timeout.tv_sec  = INITIAL_TIMEOUT;
+  timeout.tv_usec =  0;
+  
+  /*
+   * init raw-frame, negotation-struct, connection
+   */
+  bzero(&raw_frame, sizeof(raw_frame));
+  bzero(&negotation_param, sizeof(negotation_param));
+  bzero(&connection, sizeof(connection));
+
+  /* hope we have no irda traffic in moment */
+  connection.irlap_state = IRLAP_DISC;
+  
+  /*
+   * now make the data-read-loop
+   */
+  do {
+    FD_ZERO(&ready);
+    FD_SET(port_fd, &ready);
+    no_timeout = select(port_fd + 1, &ready, NULL, NULL, &timeout);
+    if ( FD_ISSET(port_fd, &ready) ) {
+      /* data on port - returns after 16 chars have been input */
+      nr_read = read(port_fd, in_buffer, 16);
+      nr_of_bytes = nr_of_bytes + nr_read;
+      if ( nr_read >= 1 ) {
+       /* write all readed bytes to file */
+       fwrite( in_buffer, 1, nr_read, outfile);
+       /* process every single byte */
+       for (i=0; i < nr_read; i++) {
+         if (raw_frame.length < (4096-1) ) {
+           switch ( in_buffer[i] ) {
+           case IRLAP_XBOF:
+             if ( is_inframe ) {
+               /*
+                * no - its not a XBOF we are inside a frame 
+                * broadcast in xid for example
+                */
+               irlap_bytes++;
+               fcsrx = IR_FCS(fcsrx, in_buffer[i]);
+               is_inframe = TRUE;
+               raw_frame.buf[raw_frame.length] = in_buffer[i];
+             }
+             break;
+           case IRLAP_BOF:
+             is_inframe = TRUE;
+             break;
+           case IRLAP_EOF:
+             frame_complete = TRUE;
+             is_inframe = FALSE;
+             break;
+           case IRLAP_CE:
+             must_escaped = TRUE;
+             is_inframe = TRUE;
+             nr_esc++;
+             break;
+           default:
+             is_inframe = TRUE;
+             if ( must_escaped ) {
+               fcsrx = IR_FCS(fcsrx, (in_buffer[i] ^ IRLAP_ESC_MASK) );
+               raw_frame.buf[raw_frame.length] = 
+                 (in_buffer[i]^IRLAP_ESC_MASK);
+               must_escaped = FALSE;
+             } else {
+               fcsrx = IR_FCS(fcsrx, in_buffer[i]);
+               raw_frame.buf[raw_frame.length] = in_buffer[i];
+             }
+             irlap_bytes++;
+           }
+           raw_frame.length = irlap_bytes;
+           if ( frame_complete ) {
+             /* now raw-frame is complete */
+             if ( fcsrx != GOOD_FCS ) {
+               printf (" **** !!! FCS-ERROR !!! ****\n");
+             } else {
+               unwrap_raw_frame ( &raw_frame );
+             }
+             nr_of_frames++;
+             /* reset all to defaults     */
+             raw_frame.length   = 0;
+             raw_frame.a_offset = 0;
+             frame_complete     = FALSE;
+             fcsrx              = INIT_FCS;
+             nr_esc             = 0;
+             irlap_bytes        = 0;
+           }
+         }
+       }
+      } else {
+       printf ("No data to read - why?\n");
+       done = 1;
+      }
+    }
+    /*
+     * reset timeout - wait 5 seconds
+     */
+    timeout.tv_sec  = DEFAULT_TIMEOUT;
+    timeout.tv_usec = 0;
+    if ( ! no_timeout ) {
+      printf ("TimeOut!\nConnection summary:\n-------------------\n");
+      printf ("Total nr of received bytes : %i\n", nr_of_bytes);
+      printf ("Total nr of received frames: %i\n", nr_of_frames);
+      done = 1;
+    }
+  } while ( ! done );
+
+  g_string_free(outfile_name, TRUE);
+  fclose (outfile);
+  tcsetattr(port_fd, TCSANOW, &old_port_sets);
+  exit(0);
+}
diff --git a/Docs/developers/other/sniffs/sniffing.txt b/Docs/developers/other/sniffs/sniffing.txt
new file mode 100644 (file)
index 0000000..e109bdb
--- /dev/null
@@ -0,0 +1,21 @@
+
+All this software was created from observating other programs - what they
+send to/from phone. There two methods to dump transmission:
+
+1.hardware
+
+  You have to connect RxD (or TxD) and GND pin from the COM port, you use with
+  phone, to the second COM port. Then you run soft, which will show, what is
+  received by second port (now in win32 with enabled debug it can be
+  "gnokii --sniff port")
+  
+  TIP: if you want to sniff MBUS, connect RxD (everything, what goes from
+  TxD is repeated on RxD)
+  
+2.software
+
+  You run emulator of OS, where program work. Then using emulator functions
+  see, what is send (emulator is between phone and program, isn't it ?).
+  
+When you have transmission, try to find some identical sequences. If you will
+have them, try to find each frame format...
\ No newline at end of file
diff --git a/Docs/developers/protocol/n3110.txt b/Docs/developers/protocol/n3110.txt
new file mode 100644 (file)
index 0000000..10c3326
--- /dev/null
@@ -0,0 +1,233 @@
+
+Last update 01.03.2001
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Assembled by
+       Marcin Wiacek (Marcin-Wiacek@TOPNET.PL)
+       ... and other members of gnokii mailing list
+            and authors of some WWW pages.
+
+The data provided is for information purposes only. 
+Some of the frames might be hazardous to your phone. Be careful!!! 
+We do not take any responsibility or liability for damages, etc.
+
+NOTE: this information isn't (and can't be) complete.  If you know anything
+about features not listed here or you noticed a bug in this list, please
+notify us via e-mail.  Thank you.
+
+Document describing frames used in
+GSM Nokia 3110 and derivatives (3810,8110,8110i):
+Correct format is FBUS version 1/MBUS version 1 (?)
+(see nokia.txt for protocol details):
+
+ List:
+
+0x02:
+    r RLP ?                 {....}
+0x0a:
+    s Make call             {+type of call, type of number?, numlen, number, uk1, uk2, uk3 }
+                            where type of call: see 0x0b
+                            Note: If destination number is "1" - "9",
+                                  call for number in corresponding memory location is made.
+0x0b:
+    r Incoming call         {+type of call, 0x00, namelen, name }
+                            where type of call:
+                                    0x01 Data 
+                                    0x02 ?? 
+                                    0x03 ?? 
+                                    0x04 ?? 
+                                    0x05 Voice 
+0x0c:
+    s Answer incoming call  {}
+0x0d:
+    r Incoming call answered{}
+      from ME
+0x0e:
+    r Call established      {+type of call, 0x00, 0x00 }
+                            where type of call: see 0x0b
+0x0f:
+    s Call hang up          {}
+0x10:
+    r Call hanged up from ME{}
+      seq1
+0x11:
+   r CallClosed-by other end{+unknown, reason}
+                            where:
+                              unknown reason
+                              0x65    0x10   Hanged up by other end 
+                                      0x1c   virheellinen numero 
+                              0x65    0x1f   Number is not in use 
+                              0x65    0x4f   Check operator services 
+                              0x65    0xa6   No destination number (sms sending) 
+                              0x65    0xe4   --''-- 
+                              0x6f    0x6f  
+                              0x7d    0x7d  
+                              0x7f    0x7f  
+                              0x83    0x83 
+0x12:
+    r Call hanged up from ME{}
+      seq2
+0x13:
+    r Power ON seq          {}
+0x15:
+    s Initialization        {}
+0x16:
+    r Initialization OK     {+simstate }
+                            where simstate:
+                                    0x01 No SIM present, or waiting for PIN 
+                                    0x02 SIM present and ready. 
+0x17:
+    r Initialization err    {+error }
+0x20:
+    s Send DTMF             {+length,string}
+0x21:
+    r Send DTMF OK          {}
+0x22:
+    r Send DTMF err         {+error }
+                            where error:
+                                    0x70: invalid location
+0x23:
+    s Send SMS Header       {+first octet, PID, DCS, validity(7 bytes), UDL, SMSClen, SMSC, receiverlen, receiver}
+0x24:
+    s Save SMS Header       {+memtype,status(2bytes),PID, DCS, validity(7 bytes), UDL, SMSClen, SMSC, receiverlen, receiver, receivertype }
+                            where: memtype:
+                                     2=SIM
+                                     3=ME 
+                                   status: see 0x2c
+0x25:
+    s Get SMS message       {+memtype, location }
+                            where: memtype - see 0x30
+                            Note: In successful request, phone sends one "SMS Header" and one or more "SMS Data" packets.
+                                  In failure, phone sends "Get SMS message err" packet
+0x26:
+    s Delete SMS message    {+memtype, location }
+                            where: memtype - see 0x30
+0x27:
+    r SMS Data              {+seq,block}
+                            where: seq: starts from 0x01 and is increased by 1 after each block transmitted. 
+                                   block: Block of User Data (max 55 chars)
+    s Send/Save SMS Data    {+seq,block}
+0x28:
+    r SMS sent OK           {+reference?}
+0x29:
+    r SMS sent error        {+error1, error2}
+0x2a:
+    r SMS saved OK          {+memtype}
+                            where: memtype - memory, where SMS was saved
+0x2b:
+    r SMS saving err        {+error}
+0x2c:
+    r SMS Header            {+memtype, location, status(2 bytes), PID, DCS, date (7 bytes), UDL, senderlen, sender, SMSClen, SMSC, sendertype}
+                            where:
+                              memtype, PID, DCS, date, UDL, sender, SMSC, sendertype - see 0x30
+                              status: 0701: Saved, not sent
+                                      0501: Sent
+                                      0304: Received, unread
+                                      0204: Unread
+                                      0104: Received, read 
+0x2d:
+    r Get SMS message err   {+error}
+0x2e:
+    r Delere SMS message OK {}
+0x2f:
+    r Delete SMS message err{+error}
+0x30:
+    r SMS message received  {+memtype, location, unknown, PID, DCS, date(7 bytes), UDL, senderlen, sender, SMSClen, SMSC, sendertype}
+                            where: memtype:
+                                     0x01 Phone Selected 
+                                     0x02 SIM 
+                                     0x03 ME 
+                                   location: Memory location (1...) 
+                                   unknown: most of time 0x04 
+                                   PID: Protocol Identifier 
+                                   DCS: Data Coding Scheme 
+                                   date: sending date in BCD
+                                   UDL: User Data Length 
+                                   sender: sender number
+                                   SMSC: SMSC number
+                                   sendertype: type of sender number:
+                                                0x31 International without leading '+' ??? 
+                                                0x91 International 
+0x32:
+    r Delivery report receiv{+unknown,delivery time(7 bytes),report time(7 bytes),0x00,MR,
+                             destinationlen,destination,SMSClen,SMSC,destinationtype}
+0x3c:
+    s Set SMSC              {+bitmask,format,unknown1,validity,reply,reports,unusedlen,unused,SMSClen,SMSC}
+                            where:
+                              bitmask: info, what we change
+                                7 ?? 
+                                6 reports
+                                5 reply
+                                4 SMSC number
+                                3 unused
+                                2 validity
+                                1 unknown
+                                0 format
+                              format:
+                                0x00 Text 
+                                0x22 Fax 
+                                0x24 Voice 
+                                0x25 ERMES 
+                                0x26 Paging 
+                                0x2d E-mail 
+                                0x31 X.400 
+                              validity:
+                                 0 to 143    (validity + 1) * 5 minutes (i.e. 5 minutes intervals up to 12 hours) 
+                                 144 to 167  12 hours + ((validity - 143) * 30 minutes) 
+                                 168 to 196  (validity - 166) * 1 day 
+                                 197 to 255  (validity - 192) * 1 week 
+0x3d:
+    r Set SMSC OK           {}
+0x3e:
+    r Set SMSC err          {}
+0x3f:
+    s Get SMSC              {}
+0x40:
+    r Get SMSC              {+memory,AllSMSphone,unreadSMSphone,AllSMSSIM,unreadSMSSIM,
+                             format,unknown1,validity,reply,reports,unusedlen,unused,SMSClen,SMSC}
+                            where: format,unknown1,validity,reply,reports,unusedlen,unused,SMSClen,SMSC - see 0x3c
+                                   memory: selected memory
+                                   AllSMSphone: number of all SMS in phone
+                                   unreadSMSphone: number of unread SMS in phone
+                                   AllSMSSIM: number of all SMS on SIM
+                                   unreadSMSSIM: number of unread SMS on SIM
+0x42:
+    s Set mem location      {+memtype, location, namelen, name, numlen, number }
+                            where memtype: see 0x43
+0x43:
+    s Get mem location      {+memtype, location }
+                            where: memtype:
+                                     0x01 Phone Selected
+                                     0x02 SIM
+                                     0x03 ME
+                                     0x04 Own numbers (at SIM) 
+0x44:
+    r Set mem location OK   {}
+0x45:
+    r Set mem location err  {+error }
+0x46:
+    r Get mem location OK   {+namelen, name, numlen, number }
+0x47:
+    r Get mem location err  {+error }
+0x48:
+    r PIN entered           {}
+0x49:
+    r Power OFF seq         {}
+0x4a:
+    s Status request        {}
+0x4b:
+    r Status request        {+status, network, battery }
+                            where status:
+                                    0x01 Idle 
+                                    0x02 Network interworking 
+                                    0x03 Call open 
+                                    0x04 No Network Access (Waiting for PIN or
+                                         Unaccessable Operator selected) 
+                                  network and battery - signal level
+0x4c:
+    s Get phone info        {}
+0x4d:
+    r Get phone info        {+IMEI, 0x00, Code, 0x00, HW, 0x00 }
+                            where IMEI: IMEI Code 
+                                  CODE: Same as Code in phones back side 
+                                  HW: hardware version
diff --git a/Docs/developers/protocol/n6110.txt b/Docs/developers/protocol/n6110.txt
new file mode 100644 (file)
index 0000000..afd92e4
--- /dev/null
@@ -0,0 +1,859 @@
+
+Last update 23.02.2002
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Assembled by
+       Balazs Nagy (js@lsc.hu)
+        Harri Yli-Torkko (hyt@surfeu.fi)
+       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>
+        BORBELY Zoltan (bozo@andrews.hu)
+       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 call held             { 0x0023, seqnr, 0x01 }
+    r call resumed          { 0x0025, seqnr, 0x01 }
+    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 }
+
+      Note: For Nokia 3330 settings num 0x00 .. 0x09 can be assigned
+            separately to each profile (0x00 .. 0x05), but rest are common
+            to all profiles.
+
+      Features and answers (in a, b, c, d form):
+         0x00: keypad notes (in Nokia 33x0 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 33x0 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 33x0 feature 0x02)
+               xx, 0, 0, 0
+                   xx: 0x12: ring ring
+                       0x13: low
+                       etc
+         0x04: ringing volume (in Nokia 33x0 feature 0x03)
+               xx, 0, 0, 0
+                   xx: level 1 (0x06) - level 5 (0x0a)
+         0x05: message alert tone (in Nokia 33x0 feature 0x04)
+               xx, 1, 0, 4
+                   xx: 0: no tone
+                       1: standard
+                       2: special
+                       3: beep once
+                       4: ascending
+        0x06: vibration (in Nokia 33x0 feature 0x05)
+              xx: 0: off
+                  1: on
+                   2: Vibrate first
+         0x07: warning and game tones (in Nokia 33x0 feature 0x06 called warning tones)
+               xx, 4, 0, 4
+                   xx: 0xff: off
+                       0x04: on
+        0x07: screen saver - Nokia 33x0
+              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
+         0x08: Screen saver -> Timeout (Nokia 33xx):
+               0x00 = 5 sec
+               0x01 = 20 sec
+               ....
+
+         0x09: automatic answer (what number in Nokia 3310 ?)
+               xx, 0, 0, 1
+                   xx: 0x00: off
+                       0x01: on 
+
+         0x09: Screen saver -> Screen saver (Nokia 33xx):
+               0x00 ... 0x0d = Number of picture image
+
+         0x0a: ???:
+          ...: ???:
+         0x15: ???: Read only?
+
+         0x16: ???:
+               0x00 = ???
+               0x01 = ???
+
+         0x17: Phone book -> Options -> Memory in use (Nokia 3330):
+               0x00 = Phone
+               0x01 = SIM card
+
+         0x18: Settings -> Phone settings -> Network selection (Nokia 3330):
+               0x00 = Automatic
+               0x01 = Manual
+
+         0x19  Settings -> Call settings -> Automatic redial(Nokia 3330):
+               0x00 = Off
+               0x01 = On
+
+         0x1a: Settings -> Call settings -> Speed dialling (Nokia 3330):
+               0x00 = Off
+               0x01 = On
+
+         0x1b: Settings -> Call settings -> Own number sending (Nokia 3330):
+               0x00 = Set by network
+               0x01 = On
+               0x02 = Off
+
+         0x1c: Settings -> Phone settings -> Cell info display (Nokia 3330):
+               0x00 = Off
+
+         0x1d: Phone book -> Options -> Type of view (Nokia 3330):
+               0x00 = Name list
+               0x01 = Name, number
+               0x02 = Large font
+
+         0x1e: Settings -> Phone settings -> Language (Nokia 3330):
+               0x00 = English
+               0x07 = Dansk
+               0x08 = Svenska
+               0x09 = Suomi
+               0x0c = Turcke
+               0x0e = Norsk
+               0x10 = Automatic
+
+         0x32 = Reboots ME (3330)
+
+         0x1f: ???: Read only? (3330)
+
+         0x20: Messages ->  Message settings -> Common -> Reply via same centre (N3330):
+               0x00 = No
+               0x01 = Yes
+
+         0x21: Messages ->  Message settings -> Common -> Delivery reports (3330):
+               0x00 = No
+               0x01 = Yes
+       
+         0x22: Clock -> Clock settings -> Show/Hide clock (3330):
+               0x00 = Show
+               0x01 = Hide
+
+         0x23: Clock -> Clock settings -> Time format (N3330):
+               0x00 = 24-hour
+               0x01 = 12-hour
+
+         0x24: Select profile (N3330):
+               0x00 = General
+               0x01 ... 0x05 = rest of them
+
+         0x25: ???: Read only? (N3330)
+
+         0x26: Settings -> Phone settings -> Confirm SIM service actions (N3330):
+               0x00 = Not asked
+               0x01 = Asked
+
+         0x27: Messages -> Write messages -> Options -> Dictionary (N3330):
+               0x00 = Off
+               0x01 = English
+               0x0a = Suomi
+
+         0x28: Messages -> Message settings -> Common -> Character support (N3330):
+               0x00 = Automatic
+               0x01 = GSM alphabet
+               0x02 = Unicode
+
+         0x29: Startup logo settings (N33x0):
+               0x00 = Your own uploaded logo
+               0x01 = Nokia
+               0x02 = Draft HUMAN technology(tm)
+               0x03 = Itineris
+
+         0x2a:???: 0x00 = ??? 0x01 = ??? (N3330)
+
+         0x2b: ???: 0x00 = ??? 0x01 = ??? (N3330)
+
+         0x2c: ???: Read only? (N3330)
+
+         0x2d: Clock -> Auto update of date and time (N3330):
+               0x00 = Off
+               0x01 = Confirm first
+               0x02 = 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
+    r Get call divert       { 0x0001, 0x02, x, 0x00, divtype, 0x02, calltype, y, z, 0x0b, number, 0x00...0x00, timeout (byte 45) }
+    s Set call divert       { 0x0001, 0x03, 0x00, divtype, calltype, 0x01, number(packed like in SMS), 0x00 ... 0x00,
+                                      length of number (byte 29), 0x00 ... 0x00, timeout (byte 52), 0x00, 0x00, 0x00}
+                            NOTE: msglen=0x37
+                            where timeout:
+                              0x00: not set ?
+                              0x05: 5 second
+                              0x0a: 10 second
+                              0x0f: 15 second
+                              0x14: 20 second
+                              0x19: 25 second
+                              0x1e: 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
+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 }
+0x3f: WAP 
+    s Enable WAP frames     { 0x0000}
+    r Enable WAP frames     { 0x0002, 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
+                                0x01   user inside "Bookmarks" menu. Must leave it
+                                0x02   invalid/too high/empty location
+
+    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 OK   {+0x01, 0x36, 0x0a, block }
+                              where block:
+                                0x0a, location_of_just_written_bookmark(?),
+                                0x00, next_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 ;(
+
+?   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 1    { 0x0015, location}
+                            where location: 0x00 - 0x05
+    r Get WAP settings 1 OK { 0x0016, title length, title (Unicode), URL length, URL(Unicode),con_type, ???[6 bytes],location, ???[5 bytes],security,...}
+                            where:
+                              con_type: 0x00 - temporary
+                                        0x01 - continuous
+                              location: when use "Get WAP settings 2 frame", must give it
+                              security: 0x00 = no, 0x01 = yes
+    r Get WAP settings 1 err{ 0x0017, error }
+                              where error:
+                                0x01   user inside "Settings" menu. Must leave it
+                                0x02   invalid/too high/empty location
+
+    s Get WAP settings 2    { 0x001b, location}
+                            where location: 0x00 - 0x1d (you get it in "Get WAP settings 1" frame)
+    r Get WAP settings 2 OK { 0x001c, 0x01, type, frame...}
+                            where type : 0x00 - SMS bearer
+                                           frame:
+                                             service_num_len, service_num (Unicode), server_num_len, server_num(Unicode)
+                                         0x01 - data bearer
+                                           frame:
+                                             auth, call_type, call_speed, ?, IP len, IP (Unicode), dialup len, dialup (Unicode),
+                                             user len, user (Unicode), password len, password (Unicode)
+                                             where auth: 0x00 - normal, 0x01 - secure
+                                                   call_type: 0x00 - analogue, 0x01 - ISDN
+                                                   call_speed: 0x00 - 9600, 0x01 - 14400
+                                        0x02 - USSD bearer
+                                          frame: type, service number len/IP len,service num (Unicode)/IP (Unicode),service code len,
+                                                 service code (Unicode)
+                                            where type: 0x01 - service number, 0x00 - IP
+    r Get WAP settings 2 err{ 0x001d,error}
+                            where: error=0x05    
+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/developers/protocol/n7110.txt b/Docs/developers/protocol/n7110.txt
new file mode 100644 (file)
index 0000000..2e051aa
--- /dev/null
@@ -0,0 +1,703 @@
+
+Last update 16.02.2002
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+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>
+       Ralf Thelen <ralf@mythelen.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)}
+    s Incoming SMS info on  { 0x000d, 0x00, 0x00, 0x02}
+                            note: no info about Delivery Reports
+    r Incoming SMS info onOK{ 0x000e }
+                            note: no info about Delivery Reports
+    r Incoming SMS infoonerr{ 0x000f, error }
+                            where error: 0x0c - no PIN
+    r SMS message received  { 0x0011, ...... } (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 error     { 0x0108, 0x00, 0x01,
+                             code,0x00, 0x00, z, error}
+                            where code==0x0f
+                                  error: 0x34 - phonebook location not found
+                                         0x3b - speed dial not assigned
+    r Read memory OK        { 0x0108, 0x00, 0x01,
+                             code,0x00, 0x00, z, xH, xL, yH, yL, 0x00, 0x00, 0x00, no.of blocks, { block } * }
+                            where code: != 0x0f
+                              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
+    s Delete mem location   { 0x010f, 0x00, 0x01, 0x04, 0x00, 0x00, 0x0c, 0x01, 0xff, xH, xL,
+                                      yH, yL, 0x00, 0x00}
+                                      where   x: location
+                                      y: memory type
+    r Delete mem location   { 0x0110, 0x00, 0x00 }
+0x06: Calling line restriction/Call forwarding etc
+    r Get call divert       { 0x0001, 0x02, x, 0x00, divtype, 0x02, calltype, y, z, 0x0b, number, 0x00...0x00, timeout (byte 45) }
+    s Set call divert       { 0x0001, 0x03, 0x00, divtype, calltype, 0x01, number(packed like in SMS), 0x00 ... 0x00,
+                                      length of number (byte 29), 0x00 ... 0x00, timeout (byte 52), 0x00, 0x00, 0x00}
+                            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
+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 }
+    s clear operator logo   { 0x00af, x}
+                            where x==0 to 4
+    r clear operator logo   { 0x00bf}
+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, location (2 bytes), entry type, 0x00, year of birth(2 bytes),
+                                      Month, Day, 0x00, 0x00, alarm (4 bytes), alarm type, length, text (Unicode)}
+    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 }
+    r Get Picture Image     { 0x0008, 0x07, location, number[2 bytes], 0x07, ??[38],
+                                     width, height, lenH, lenL, {bitmap}, 0x00, 0x00, text len, text(coded like in SMS)...}
+    r Get SMS failed        { 0x0009, 0x02 },
+    s Get SMS status        { 0x0036, 0x64 }
+    r Get SMS Status        { 0x0037, 0x05/0x03, 0x01, 0x00, 0x00,
+                              a (2 octets), b (2 octets), c (2 octets),
+                              d (2 octets), e (2 octets), 0x00
+                              where:
+                              a - according to P.Kot:
+                                Number of locations in "fixed" memory. These are all
+                                Templates entries in my Nokias 6210 (NPE-3 (c) NMP V05.36
+                                14-11-01, NPE-3 (c) NMP V05.27 01-08-01).
+                                I can't remove any of Templates entries in my phone.
+                                Marcin Wi¥cek: Rather not ! I don't agree.
+                                I have 0x00, 0x0f and 10 templates and 3 SMS
+                                and 10 Picture Images.
+                              b - Number of used messages in phone memory. These
+                                are messages manually moved from the other folders.
+                                Picture messages are saved here.
+                              c - Number of unread messages in phone memory. Probably
+                                only smart messsages.
+                              d - Number of used messages in SIM memory. These are
+                                either received messages or saved into Outbox/Inbox.
+                                Note that you *can't* save message into this memory
+                                using 'Move' option. Picture messages are not here.
+                              e - Number of unread messages in SIM memory
+
+    s Set Picture Image     { 0x0050, 0x07, location, number[2 bytes], 0x07, ??[38], 
+                                     width, height, lenH, lenL, {bitmap}, 0x00, 0x00, text len, text(coded like in SMS)...}
+                              std. size: 72x28
+    r Set Picture Image     { 0x0051, location, number[2 bytes], 0x07 }
+    s Set SMS name          { 0x0083,folder,location(2bytes),name(Unicode),0x00 , 0x00}
+    r Set SMS name          { 0x0084,folder,0x00, 0x00, name (Unicode),0x00,0x00}
+    s List Picture Images   { 0x0096, location, 0x0f, 0x07 }
+                              where location:
+                                LM tries with 0x09, 0x11, 0x19, 0x21, 0x29, 0x31, 0x39, 0x41, 0x49
+                                Returned value with 0x21
+    r List Picture Images   { 0x0097, number of pictures[2 bytes], number1[2 bytes], number2[2 bytes], ..., }
+    s Write SMS to folder   { 0x0104, status, folder ID, location(2 bytes), 0x02, 0x01, SMS stuff ... }
+    r Write SMS to folder   { 0x0105, folder ID, location(2 bytes), 0x00 }
+    r Write SMS to folder   { 0x0106, 0x02 (write failed errorcode ?) }
+    s Get SMS from folder   { 0x0107, folderID, location(2 bytes), 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 Delete SMS message    { 0x010a, folderID, location(2 bytes), 0x01 }
+    r Delete SMS            { 0x010b }
+    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
+                       &n